Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李宁
/
Activity
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit c1b80523
authored
Nov 20, 2025
by
李宁
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
994306b9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
543 additions
and
3 deletions
channelBusiManage/.claude/settings.local.json
channelBusiManage/package.json
channelBusiManage/src/assets/js/api/interface/account/index.js
channelBusiManage/src/assets/js/api/interface/common/index.js
channelBusiManage/src/assets/js/api/interface/index.js
channelBusiManage/src/assets/js/api/interface/login/index.js
channelBusiManage/src/assets/js/api/interface/order/index.js
channelBusiManage/src/assets/js/api/interface/reward/index.js
channelBusiManage/src/assets/js/api/interface/role/index.js
channelBusiManage/src/assets/js/api/request.js
channelBusiManage/src/assets/js/const/common.js
channelBusiManage/src/assets/js/stores/index.js
channelBusiManage/src/components/LoginPage.vue
channelBusiManage/src/components/icons/RoleIcon.vue
channelBusiManage/src/main.ts
channelBusiManage/vite.config.ts
channelBusiManage/.claude/settings.local.json
0 → 100644
View file @
c1b8052
{
"permissions"
:
{
"allow"
:
[
"Bash(grep -E
\"\\
.(js|vue|html)$
\"
)"
,
"Bash(npm install axios)"
],
"deny"
:
[],
"ask"
:
[]
}
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/package.json
View file @
c1b8052
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
"dependencies"
:
{
"dependencies"
:
{
"@element-plus/icons-vue"
:
"^2.3.2"
,
"@element-plus/icons-vue"
:
"^2.3.2"
,
"@tailwindcss/typography"
:
"^0.5.19"
,
"@tailwindcss/typography"
:
"^0.5.19"
,
"axios"
:
"^1.13.2"
,
"date-fns"
:
"^4.1.0"
,
"date-fns"
:
"^4.1.0"
,
"element-plus"
:
"^2.11.7"
,
"element-plus"
:
"^2.11.7"
,
"lucide-vue-next"
:
"^0.552.0"
,
"lucide-vue-next"
:
"^0.552.0"
,
...
...
channelBusiManage/src/assets/js/api/interface/account/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 查询账号列表
*/
export
function
queryAccountList
(
data
)
{
return
request
({
url
:
'/compass/api/system/account/page'
,
data
,
})
}
/**
* 查询角色列表
*/
export
function
queryRoleList
(
data
)
{
return
request
({
url
:
'/compass/api/common/enums/account-roles'
,
method
:
'GET'
})
}
/**
* 删除账号
*/
export
function
deleteRole
(
data
)
{
return
request
({
url
:
'/compass/api/system/account/delete'
,
data
,
})
}
/**
* 添加/更新账号
*/
export
function
addAndUpdateRole
(
data
)
{
return
request
({
url
:
'/compass/api/system/account'
+
(
data
.
id
?
'/update'
:
'/create'
),
data
,
})
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/assets/js/api/interface/common/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 根据级别查询区域列表
* 1-省级,2-市级,3-区级,4-网格级
*/
export
function
queryLevelAllArea
(
data
)
{
return
request
({
url
:
'/compass/api/common/areas/level?areaLevel='
+
data
.
areaLevel
+
'&parentAreaCode='
+
data
.
parentAreaCode
,
method
:
'GET'
})
}
/**
* 当前用户权限获取下级区域层级结构
*/
export
function
queryUserArea
(
data
)
{
return
request
({
url
:
'/compass/api/system/area/permission/hierarchy'
,
data
,
})
}
/**
* 商机状态列表
*/
export
function
queryBusiStatus
(
data
)
{
return
request
({
url
:
'/compass/api/common/enums/opportunity-statuses'
,
method
:
'GET'
,
data
,
})
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/assets/js/api/interface/index.js
0 → 100644
View file @
c1b8052
import
*
as
account
from
'./account'
import
*
as
common
from
'./common'
import
*
as
login
from
'./login'
import
*
as
order
from
'./order'
import
*
as
reward
from
'./reward'
import
*
as
role
from
'./role'
export
default
{
...
account
,
...
common
,
...
login
,
...
order
,
...
reward
,
...
role
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/assets/js/api/interface/login/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 退出登录
*/
export
function
logout
()
{
return
request
({
url
:
'/compass/api/auth/logout'
,
data
:
{}
})
}
/**
* 手机账号登录
*/
export
function
pohoneLogin
(
data
)
{
return
request
({
url
:
'/crm/login'
,
data
,
})
}
/**
* 获取图形验证码
* @param loginName
* @param password
*/
export
function
getImgCode
(
data
)
{
return
request
({
url
:
'/crm/getCode'
,
method
:
'GET'
,
data
,
})
}
/**
* 获取短信验证码
* @param loginName
* @param password
*/
export
function
getTelCode
(
data
)
{
return
request
({
url
:
'/crm/sendMessage'
,
data
,
})
}
channelBusiManage/src/assets/js/api/interface/order/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 网格列表查询
* @returns {AxiosPromise}
*/
export
function
queryAllGridList
(
data
)
{
return
request
({
url
:
'/compass/api/grid/list'
,
data
,
})
}
/**
* 获取该账号下可选的网格列表
*/
export
function
queryGridList
(
data
)
{
return
request
({
url
:
'/compass/api/grid/options'
,
data
,
})
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/assets/js/api/interface/reward/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 全部商机-列表查询
*/
export
function
queryAllBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/page'
,
data
,
})
}
/**
* 全部商机-商机审核
*/
export
function
audioBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/audit'
,
data
,
})
}
/**
* 全部商机-商机详情
*/
export
function
queryBusiDetail
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/detail'
,
data
,
})
}
/**
* 全部商机-商机跟进记录查询
*/
export
function
queryBusiFollowList
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/follow/page'
,
data
,
})
}
/**
* 全部商机-关闭商机
*/
export
function
closeBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/close'
,
data
,
})
}
/**
* 全部商机-标记成单
*/
export
function
dealBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/deal'
,
data
,
})
}
/**
* 全部商机-分配商机
*/
export
function
reassignBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/reassign'
,
data
,
})
}
/**
* 全部商机-记录管理员备注
*/
export
function
updateRemark
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/admin-remark'
,
data
,
})
}
/**
* 全部商机-数据统计
*/
export
function
queryAllBusiStatistics
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/statistics'
,
data
,
})
}
/**
* 全部商机-查询所有商机标签列表
*/
export
function
queryBusiLabelList
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/tag/page'
,
data
,
})
}
/**
* 商机标签的开始和关闭
*/
export
function
updateBusiLabelStatus
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/tag/status'
,
data
,
})
}
/**
* 商机标签的删除
*/
export
function
deleteBusiLabel
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/tag/delete'
,
data
,
})
}
/**
* 商机标签的创建和更新
*/
export
function
createAndUpdateTag
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/tag'
+
(
data
.
id
?
'/update'
:
''
),
data
,
})
}
/**
* 商机关闭原因列表查询
*/
export
function
queryBusiCloseReansonList
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/close-reason/page'
,
data
,
})
}
/**
* 商机关闭原因:根据区域列表查询
*/
export
function
queryAreaCloseReansonList
(
data
)
{
return
request
({
url
:
'/compass/api/common/close-reason/page'
,
data
,
})
}
/**
* 商机关闭原因添加和更新
*/
export
function
busiCloseReasonUpdate
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/close-reason'
+
(
data
.
id
?
'/update'
:
''
),
data
,
})
}
/**
* 商机关闭原因删除
*/
export
function
busiCloseReasonDel
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/close-reason/delete'
,
data
,
})
}
/**
* 全部商机-新增商机
*/
export
function
createBusi
(
data
)
{
return
request
({
url
:
'/compass/api/opportunity/create'
,
data
,
})
}
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/assets/js/api/interface/role/index.js
0 → 100644
View file @
c1b8052
import
request
from
'../../request'
/**
* 查询人员列表
*/
export
function
queryAllPerson
(
data
)
{
return
request
({
url
:
'/compass/api/personnel/list'
,
data
,
})
}
/**
* 添加人员
*/
export
function
addNewPerson
(
data
)
{
let
url
=
'/compass/api/personnel/create'
if
(
data
.
id
){
url
=
'/compass/api/personnel/update'
}
return
request
({
url
:
url
,
data
,
})
}
/**
* 删除人员
*/
export
function
deletePerson
(
data
)
{
return
request
({
url
:
'/compass/api/personnel/delete'
,
data
,
})
}
/**
* 批量导入工维人员
*/
export
function
importGwPerson
(
data
)
{
return
request
({
url
:
'/compass/api/personnel/import-maintenance-preview'
,
data
,
})
}
/**
* 批量导入营销人员
*/
export
function
importYxPerson
(
data
)
{
return
request
({
url
:
'/compass/api/marketing/import-preview'
,
data
,
})
}
channelBusiManage/src/assets/js/api/request.js
0 → 100644
View file @
c1b8052
import
axios
from
"axios"
;
import
{
ElMessageBox
}
from
"element-plus"
;
import
router
from
"@/router"
;
const
service
=
axios
.
create
({
baseURL
:
'/hallserver'
,
method
:
"post"
,
timeout
:
150000
,
withCredentials
:
true
,
});
//请求拦截
service
.
interceptors
.
request
.
use
(
(
config
)
=>
{
if
(
!
config
.
headers
[
"Content-Type"
])
config
.
headers
[
"Content-Type"
]
=
"application/json;charset=utf-8"
;
if
(
localStorage
.
pcUserInfo
)
{
let
userInfo
=
JSON
.
parse
(
localStorage
.
pcUserInfo
);
config
.
headers
[
"x-access-token"
]
=
userInfo
.
token
}
return
config
;
},
(
error
)
=>
{
Promise
.
reject
(
error
);
}
);
let
ifCanShow
=
true
;
//为了防止页面有异常情况时,多个接口请求导致弹窗多次的问题
let
catchFun
=
function
(
msg
)
{
if
(
!
ifCanShow
)
{
return
;
}
ifCanShow
=
false
;
ElMessageBox
.
confirm
(
msg
,
"提示"
,
{
showClose
:
false
,
closeOnPressEscape
:
false
,
closeOnClickModal
:
false
,
showCancelButton
:
false
,
}).
then
(()
=>
{
ifCanShow
=
true
;
router
.
push
({
path
:
"/login"
});
});
};
//响应拦截
service
.
interceptors
.
response
.
use
(
(
response
)
=>
{
console
.
log
(
response
);
if
(
response
.
status
==
200
)
{
if
(
response
.
data
.
code
==
"401"
)
{
//登陆失效,重新登陆
catchFun
(
"账户状态异常"
);
}
else
if
(
response
.
data
.
code
==
"133"
)
{
//灰名单
ElMessageBox
.
alert
(
response
.
data
.
msg
,
"状态异常/错误提示"
,
{
dangerouslyUseHTMLString
:
true
,
});
}
else
{
if
(
response
.
data
instanceof
Blob
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
r
=
new
FileReader
();
var
resData
=
response
.
data
;
if
(
response
.
config
.
url
.
indexOf
(
"poster/createPoster"
)
>=
0
)
{
if
(
resData
.
type
==
"application/json"
)
{
r
.
readAsText
(
resData
);
}
else
{
r
.
readAsDataURL
(
resData
);
}
}
else
{
r
.
readAsText
(
resData
);
}
r
.
onload
=
function
()
{
let
res
=
{};
//PK 为二进制压缩包(ZIP)导出数据流
if
(
escape
(
r
.
result
).
indexOf
(
"%u"
)
==
0
||
escape
(
r
.
result
).
indexOf
(
"PK"
)
==
0
||
r
.
result
.
indexOf
(
"pdf"
)
>=
0
||
r
.
result
.
indexOf
(
"PDF"
)
>=
0
||
r
.
result
.
indexOf
(
"data:image"
)
>=
0
)
{
res
.
type
=
"blob"
;
res
.
value
=
resData
;
}
else
{
res
.
type
=
"object"
;
res
.
value
=
JSON
.
parse
(
r
.
result
);
}
resolve
(
res
);
};
}).
catch
((
e
)
=>
{});
}
else
{
return
{
url
:
response
.
config
.
url
,
...
response
.
data
,
};
}
}
}
else
if
(
response
.
status
==
302
)
{
catchFun
(
"登陆失效,请重新登陆"
);
}
else
if
(
response
.
status
==
401
||
response
.
status
==
403
)
{
catchFun
(
"账户状态异常"
);
}
else
{
if
(
sessionStorage
.
notFirstIn
)
{
catchFun
(
"网络异常,请稍后再试"
);
}
}
},
(
error
)
=>
{
if
(
sessionStorage
.
notFirstIn
)
{
catchFun
(
"网络异常,请稍后再试"
);
}
}
);
export
default
service
;
channelBusiManage/src/assets/js/const/common.js
0 → 100644
View file @
c1b8052
This diff is collapsed.
Click to expand it.
channelBusiManage/src/assets/js/stores/index.js
0 → 100644
View file @
c1b8052
const
storesData
=
{}
export
default
storesData
\ No newline at end of file
\ No newline at end of file
channelBusiManage/src/components/LoginPage.vue
View file @
c1b8052
This diff is collapsed.
Click to expand it.
channelBusiManage/src/components/icons/RoleIcon.vue
View file @
c1b8052
...
@@ -20,6 +20,5 @@
...
@@ -20,6 +20,5 @@
interface
Props
{
interface
Props
{
className
?:
string
className
?:
string
}
}
defineProps
<
Props
>
()
defineProps
<
Props
>
()
</
script
>
</
script
>
channelBusiManage/src/main.ts
View file @
c1b8052
...
@@ -12,6 +12,12 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
...
@@ -12,6 +12,12 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import
App
from
'./App.vue'
import
App
from
'./App.vue'
import
router
from
'./router'
import
router
from
'./router'
// 引入 API 接口和工具方法
import
api
from
'./assets/js/api/interface/index.js'
import
request
from
'./assets/js/api/request.js'
import
stores
from
'./assets/js/stores/index.js'
import
commonUtils
from
'./assets/js/const/common.js'
const
app
=
createApp
(
App
)
const
app
=
createApp
(
App
)
// 注册Element Plus图标
// 注册Element Plus图标
...
@@ -23,4 +29,10 @@ app.use(createPinia())
...
@@ -23,4 +29,10 @@ app.use(createPinia())
app
.
use
(
router
)
app
.
use
(
router
)
app
.
use
(
ElementPlus
)
app
.
use
(
ElementPlus
)
// 将 API 接口、请求实例、状态管理和工具方法挂载到全局
app
.
config
.
globalProperties
.
$api
=
api
app
.
config
.
globalProperties
.
$request
=
request
app
.
config
.
globalProperties
.
$stores
=
stores
app
.
config
.
globalProperties
.
$utils
=
commonUtils
app
.
mount
(
'#app'
)
app
.
mount
(
'#app'
)
channelBusiManage/vite.config.ts
View file @
c1b8052
...
@@ -20,10 +20,10 @@ export default defineConfig({
...
@@ -20,10 +20,10 @@ export default defineConfig({
open
:
true
,
open
:
true
,
proxy
:
{
proxy
:
{
// API 请求代理配置
// API 请求代理配置
'/
crm
'
:
{
'/
hallserver
'
:
{
target
:
'http://thall.51xinpai.cn/'
,
// 后端服务地址,根据你的实际情况修改
target
:
'http://thall.51xinpai.cn/'
,
// 后端服务地址,根据你的实际情况修改
changeOrigin
:
true
,
changeOrigin
:
true
,
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
crm/
,
'/crm
'
)
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
hallserver/
,
'/hallserver
'
)
},
},
}
}
},
},
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment