Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
saas-manage
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chehuidong
saas-manage
Commits
61675d28
Commit
61675d28
authored
Aug 19, 2026
by
wuqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:修复九猫客户管理测试BUG
parent
cc9f4476
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
94 additions
and
57 deletions
+94
-57
src/components/base/image-list.vue
+2
-2
src/router/index.js
+1
-1
src/views/home/navMenu.vue
+9
-9
src/views/saasManage/indexPage.vue
+2
-2
src/views/user/editCustmerDialog.vue
+20
-7
src/views/user/jmManagement.vue
+60
-36
No files found.
src/components/base/image-list.vue
View file @
61675d28
...
...
@@ -426,8 +426,8 @@ export default {
display: inline-block;
} */
.img_wrap
{
width
:
5
8
px
;
height
:
58
px
;
width
:
5
0
px
;
height
:
49
px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
cursor
:
pointer
;
...
...
src/router/index.js
View file @
61675d28
...
...
@@ -56,7 +56,7 @@ const routes = [
meta
:
{
title
:
'工单管理'
}
},
{
path
:
'/saas/user'
,
path
:
'/saas/user
s
'
,
component
:
()
=>
import
(
'@/views/system/users.vue'
),
name
:
'system_user'
,
meta
:
{
title
:
'用户管理'
}
...
...
src/views/home/navMenu.vue
View file @
61675d28
...
...
@@ -438,17 +438,17 @@ export default {
path
:
''
,
label
:
'用户管理'
,
icon
:
'el-icon-s-order'
,
index
:
'user'
,
children
:
[]
},
{
id
:
2
,
path
:
''
,
label
:
'角色管理'
,
icon
:
'el-icon-s-order'
,
index
:
'user'
,
index
:
'/saas/users'
,
children
:
[]
},
// {
// id: 2,
// path: '',
// label: '角色管理',
// icon: 'el-icon-s-order',
// index: 'user',
// children: []
// },
{
id
:
3
,
path
:
''
,
...
...
src/views/saasManage/indexPage.vue
View file @
61675d28
...
...
@@ -74,7 +74,7 @@
开通erp
</el-button>
</el-form-item>
-->
<el-form-item>
<
!--
<
el-form-item>
<el-button
type=
"danger"
size=
"small"
...
...
@@ -82,7 +82,7 @@
@
click=
"deleteData"
>
删除
</el-button>
</el-form-item>
</el-form-item>
-->
</el-form>
</div>
<div
class=
"table-wrap"
v-loading=
"loading"
>
...
...
src/views/user/editCustmerDialog.vue
View file @
61675d28
...
...
@@ -81,7 +81,9 @@
<el-select
v-model=
"editForm.operationUserId"
placeholder=
"请选择客户运营"
style=
"width: 250px"
>
style=
"width: 250px"
filterable
clearable
>
<el-option
v-for=
"item in userLists"
:key=
"item.id"
...
...
@@ -96,6 +98,7 @@
v-model=
"editForm.remark"
clearable
style=
"width: 250px"
:rows=
"2"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-form-item>
...
...
@@ -277,7 +280,7 @@ export default {
return
TITLE_MAP
[
this
.
commandTitle
]
||
''
},
// 开通ERP|编辑时 + ERP服务是已开通、开通失败和已关闭时,全部必填,出现ERP信息表单
// 新增客户|编辑 + ERP服务是未开通时,只校验
"业务对接人"必填
,不出现ERP信息表单
// 新增客户|编辑 + ERP服务是未开通时,只校验
必填项
,不出现ERP信息表单
isFullValidate
()
{
return
(
this
.
commandTitle
===
'openErp'
||
...
...
@@ -288,8 +291,9 @@ export default {
const
requiredRule
=
(
message
,
trigger
=
'blur'
)
=>
[
{
required
:
true
,
message
,
trigger
}
]
// 仅"业务对接人"必填
// 仅"业务对接人"
、"公司名称"
必填
const
baseRules
=
{
companyName
:
requiredRule
(
'请输入公司名称'
),
contactUserName
:
requiredRule
(
'请输入业务对接人'
)
}
// 其他情况:维持原有全部必填
...
...
@@ -326,7 +330,10 @@ export default {
},
set
(
val
)
{
const
list
=
Array
.
isArray
(
val
)
?
val
:
[]
const
imagePath
=
list
.
map
((
ee
)
=>
ee
.
imagePath
||
''
).
filter
(
Boolean
).
join
(
','
)
const
imagePath
=
list
.
map
((
ee
)
=>
ee
.
imagePath
||
''
)
.
filter
(
Boolean
)
.
join
(
','
)
this
.
$set
(
this
.
editForm
,
'businessLicenseUri'
,
imagePath
)
}
}
...
...
@@ -352,15 +359,21 @@ export default {
// 上传/重排后同步到 editForm.businessLicenseUri(v-model change 已自动同步,这里再做一次防御性赋值)
selectImg
(
file
)
{
const
list
=
Array
.
isArray
(
file
)
?
file
:
[]
const
imagePath
=
list
.
map
((
ee
)
=>
ee
.
imagePath
||
''
).
filter
(
Boolean
).
join
(
','
)
const
imagePath
=
list
.
map
((
ee
)
=>
ee
.
imagePath
||
''
)
.
filter
(
Boolean
)
.
join
(
','
)
this
.
$set
(
this
.
editForm
,
'businessLicenseUri'
,
imagePath
)
},
// 删除图片:上传组件 splice 后不会 emit change,从组件读取当前 fileList 并手动同步
onImgRemove
()
{
this
.
$nextTick
(()
=>
{
const
ref
=
this
.
$refs
.
uploadRef
const
fileList
=
(
ref
&&
Array
.
isArray
(
ref
.
fileList
))
?
ref
.
fileList
:
[]
const
imagePath
=
fileList
.
map
((
ee
)
=>
ee
.
imagePath
||
''
).
filter
(
Boolean
).
join
(
','
)
const
fileList
=
ref
&&
Array
.
isArray
(
ref
.
fileList
)
?
ref
.
fileList
:
[]
const
imagePath
=
fileList
.
map
((
ee
)
=>
ee
.
imagePath
||
''
)
.
filter
(
Boolean
)
.
join
(
','
)
this
.
$set
(
this
.
editForm
,
'businessLicenseUri'
,
imagePath
)
})
},
...
...
src/views/user/jmManagement.vue
View file @
61675d28
...
...
@@ -55,6 +55,20 @@
placeholder=
"请输入客户编码"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"客户运营"
>
<el-select
v-model=
"searchForm.operationUserId"
placeholder=
"请选择客户运营"
style=
"width: 130px"
clearable
filterable
>
<el-option
v-for=
"item in userLists"
:key=
"item.id"
:label=
"item.realName"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label
>
<el-button
@
click=
"getTableList()"
type=
"primary"
size=
"mini"
>
查询
...
...
@@ -391,7 +405,7 @@ export default {
const
isOpen
=
status
===
'已开通'
const
isActivating
=
status
===
'开通中'
const
canOpen
=
[
'未开通'
,
'开通失败'
].
includes
(
status
)
const
canDelete
=
[
'已关闭'
,
'开通失败'
].
includes
(
status
)
const
canDelete
=
[
'
未开通'
,
'
已关闭'
,
'开通失败'
].
includes
(
status
)
const
imgStyle
=
{
width
:
'24px'
,
height
:
'24px'
,
...
...
@@ -429,9 +443,13 @@ export default {
onCommand
=
{(
cmd
)
=>
this
.
handleOperation
(
cmd
,
item
)}
>
<
span
style
=
{{
lineHeight
:
1
,
display
:
'inline-block'
}}
>
<
img
title
=
"更多"
title
=
{
isActivating
?
'开通中,更多操作不可点击'
:
'更多'
}
src
=
{
require
(
'@/assets/images/more.png'
)}
style
=
{
imgStyle
}
style
=
{{
...
imgStyle
,
opacity
:
isActivating
?
0.4
:
1
,
cursor
:
isActivating
?
'not-allowed'
:
'pointer'
}}
/
>
<
/span
>
<
el
-
dropdown
-
menu
slot
=
"dropdown"
>
...
...
@@ -667,24 +685,27 @@ export default {
this
.
$message
.
error
(
'加载详情失败'
)
})
},
closeCustomerInfo
(
v
)
{
this
.
$confirm
(
'确定对当前客户进行关闭ERP操作?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
()
=>
{
try
{
const
res
=
await
post
(
'customer/info/closeService'
,
{
customerId
:
v
.
id
,
serviceType
:
1
})
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
'关闭ERP成功!'
)
this
.
getTableList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
})
async
closeCustomerInfo
(
v
)
{
try
{
await
this
.
$confirm
(
'确定对当前客户进行关闭ERP操作?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
}
catch
{
return
}
try
{
const
res
=
await
post
(
'customer/info/closeService'
,
{
customerId
:
v
.
id
,
serviceType
:
1
})
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
'关闭ERP成功!'
)
this
.
getTableList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
giftOrderInfo
(
v
)
{
this
.
currentRow
=
v
...
...
@@ -722,21 +743,24 @@ export default {
}
})
},
deleteSection
(
v
)
{
this
.
$confirm
(
'确定删除选中的信息?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
()
=>
{
try
{
const
res
=
await
remove
(
`customer/info/delete/
${
v
.
id
}
`
)
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
'删除成功!'
)
this
.
getTableList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
})
async
deleteSection
(
v
)
{
try
{
await
this
.
$confirm
(
'确定删除选中的信息?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
}
catch
{
return
}
try
{
const
res
=
await
remove
(
`customer/info/delete/
${
v
.
id
}
`
)
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
'删除成功!'
)
this
.
getTableList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
async
logInfo
(
v
)
{
try
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment