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 c352d425
authored
Nov 13, 2025
by
李宁
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
f9320e1d
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
263 additions
and
98 deletions
zhiJianBusi/zjbPc/src/assets/js/api/interface/account/index.js
zhiJianBusi/zjbPc/src/assets/js/api/interface/person/index.js
zhiJianBusi/zjbPc/src/components/system/AccountManagement.vue
zhiJianBusi/zjbPc/src/components/system/PersonnelManagement.vue
zhiJianBusi/zjbPc/src/views/LoginPage.vue
zhiJianBusi/zjbPc/src/views/OpportunityDetail.vue
zhiJianBusi/zjbPc/src/views/OpportunityManagement.vue
zhiJianBusi/zjbPc/vue.config.js
zhiJianBusi/zjbPhone/busiDetail.html
zhiJianBusi/zjbPhone/css/busiDetail.css
zhiJianBusi/zjbPhone/js/busiDetail.js
zhiJianBusi/zjbPhone/js/login.js
zhiJianBusi/zjbPhone/myBusi.html
zhiJianBusi/zjbPc/src/assets/js/api/interface/account/index.js
View file @
c352d42
...
@@ -35,7 +35,7 @@ export function deleteRole(data) {
...
@@ -35,7 +35,7 @@ export function deleteRole(data) {
*/
*/
export
function
addAndUpdateRole
(
data
)
{
export
function
addAndUpdateRole
(
data
)
{
return
request
({
return
request
({
url
:
'/compass/api/system/account
/create'
+
(
data
.
id
?
'/update'
:
'
'
),
url
:
'/compass/api/system/account
'
+
(
data
.
id
?
'/update'
:
'/create
'
),
data
,
data
,
})
})
}
}
\ No newline at end of file
\ No newline at end of file
zhiJianBusi/zjbPc/src/assets/js/api/interface/person/index.js
View file @
c352d42
...
@@ -13,8 +13,13 @@ export function queryAllPerson(data) {
...
@@ -13,8 +13,13 @@ export function queryAllPerson(data) {
* 添加人员
* 添加人员
*/
*/
export
function
addNewPerson
(
data
)
{
export
function
addNewPerson
(
data
)
{
let
url
=
'/compass/api/personnel/create'
if
(
data
.
id
){
url
=
'/compass/api/personnel/update'
}
return
request
({
return
request
({
url
:
'/compass/api/personnel/create'
,
url
:
url
,
data
,
data
,
})
})
}
}
...
...
zhiJianBusi/zjbPc/src/components/system/AccountManagement.vue
View file @
c352d42
...
@@ -30,7 +30,6 @@
...
@@ -30,7 +30,6 @@
type=
"text"
type=
"text"
size=
"small"
size=
"small"
@
click=
"editAccount(scope.row)"
@
click=
"editAccount(scope.row)"
disabled
>
>
编辑
编辑
</el-button>
</el-button>
...
@@ -80,7 +79,7 @@
...
@@ -80,7 +79,7 @@
<el-form-item
label=
"密码"
prop=
"password"
>
<el-form-item
label=
"密码"
prop=
"password"
>
<el-input
<el-input
v-model=
"accountForm.password"
v-model=
"accountForm.password"
placeholder=
"请输入密码
"
:placeholder=
"editingAccount?'******':'请输入密码'
"
></el-input>
></el-input>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -213,7 +212,6 @@ export default {
...
@@ -213,7 +212,6 @@ export default {
accountName
:
''
,
accountName
:
''
,
roleCode
:
''
,
roleCode
:
''
,
status
:
''
,
status
:
''
,
grid
:
''
,
contactPhone
:
''
,
contactPhone
:
''
,
email
:
''
,
email
:
''
,
...
@@ -235,7 +233,7 @@ export default {
...
@@ -235,7 +233,7 @@ export default {
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'blur'
}
],
],
password
:
[
password
:
[
{
required
:
true
,
message
:
'请输入密码'
,
trigger
:
'blur'
}
{
validator
:
this
.
validatePassword
,
message
:
'请输入密码'
,
trigger
:
'blur'
}
],
],
accountName
:
[
accountName
:
[
{
required
:
true
,
message
:
'请输入姓名'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'请输入姓名'
,
trigger
:
'blur'
}
...
@@ -266,6 +264,13 @@ export default {
...
@@ -266,6 +264,13 @@ export default {
this
.
queryRole
()
this
.
queryRole
()
},
},
methods
:
{
methods
:
{
validatePassword
(
rule
,
value
,
callback
)
{
if
(
!
this
.
editingAccount
&&
!
value
)
{
callback
(
new
Error
(
'请输入密码'
))
}
else
{
callback
()
}
},
ifRoleCho
(
key
){
ifRoleCho
(
key
){
let
gd
=
this
.
getData
let
gd
=
this
.
getData
...
@@ -390,17 +395,14 @@ export default {
...
@@ -390,17 +395,14 @@ export default {
},
},
addAccount
(){
addAccount
(){
let
ad
=
this
.
accountForm
let
ad
=
this
.
accountForm
this
.
editingAccount
=
null
this
.
editingAccount
=
null
ad
=
{
ad
.
account
=
''
account
:
''
,
ad
.
accountName
=
''
password
:
''
,
ad
.
roleCode
=
''
accountName
:
''
,
ad
.
status
=
''
roleCode
:
''
,
ad
.
contactPhone
=
''
status
:
''
,
ad
.
email
=
''
contactPhone
:
''
,
ad
.
password
=
''
email
:
''
}
if
(
!
this
.
getData
.
city
){
if
(
!
this
.
getData
.
city
){
ad
.
city
=
''
ad
.
city
=
''
ad
.
county
=
''
ad
.
county
=
''
...
@@ -416,12 +418,36 @@ export default {
...
@@ -416,12 +418,36 @@ export default {
}
}
this
.
isAddDialogOpen
=
true
this
.
isAddDialogOpen
=
true
this
.
$refs
.
accountForm
.
clearValidate
()
},
},
editAccount
(
account
)
{
editAccount
(
row
)
{
debugger
this
.
editingAccount
=
row
this
.
editingAccount
=
account
let
ad
=
this
.
accountForm
this
.
accountForm
=
{
...
account
}
ad
.
account
=
row
.
account
ad
.
accountName
=
row
.
accountName
ad
.
roleCode
=
row
.
roleCode
ad
.
status
=
row
.
status
+
''
ad
.
contactPhone
=
row
.
contactPhone
ad
.
email
=
row
.
email
ad
.
password
=
row
.
password
if
(
row
.
cityCode
){
ad
.
city
=
row
.
cityCode
this
.
cityChange
(
ad
.
city
)
if
(
row
.
countyCode
){
ad
.
county
=
row
.
countyCode
this
.
countyChange
(
ad
.
county
)
if
(
row
.
gridCode
){
ad
.
grid
=
row
.
gridCode
}
}
}
this
.
isAddDialogOpen
=
true
this
.
isAddDialogOpen
=
true
this
.
$refs
.
accountForm
.
clearValidate
()
},
},
deleteAccount
(
id
)
{
deleteAccount
(
id
)
{
this
.
$confirm
(
'确定要删除该账号吗?此操作不可撤销。'
,
'确认删除'
,
{
this
.
$confirm
(
'确定要删除该账号吗?此操作不可撤销。'
,
'确认删除'
,
{
...
@@ -476,7 +502,7 @@ export default {
...
@@ -476,7 +502,7 @@ export default {
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
code
==
'200'
){
if
(
res
.
code
==
'200'
){
let
__this
=
this
let
__this
=
this
this
.
$alert
(
'添加成功'
,
'温馨提示'
,
{
this
.
$alert
(
this
.
editingAccount
?
'编辑成功'
:
'添加成功'
,
'温馨提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
callback
:
()
=>
{
callback
:
()
=>
{
__this
.
handleFilter
()
__this
.
handleFilter
()
...
...
zhiJianBusi/zjbPc/src/components/system/PersonnelManagement.vue
View file @
c352d42
...
@@ -96,7 +96,7 @@
...
@@ -96,7 +96,7 @@
<el-table-column
prop=
"phone"
label=
"手机号"
width=
"150"
></el-table-column>
<el-table-column
prop=
"phone"
label=
"手机号"
width=
"150"
></el-table-column>
<el-table-column
prop=
"personnelTypeName"
label=
"人员类型"
width=
"120"
></el-table-column>
<el-table-column
prop=
"personnelTypeName"
label=
"人员类型"
width=
"120"
></el-table-column>
<el-table-column
prop=
"areaName"
label=
"所属区域"
width=
"150"
></el-table-column>
<el-table-column
prop=
"areaName"
label=
"所属区域"
width=
"150"
></el-table-column>
<el-table-column
prop=
"grid
Name
"
label=
"网格"
width=
"220"
></el-table-column>
<el-table-column
prop=
"grid
List"
:formatter=
"gridRender
"
label=
"网格"
width=
"220"
></el-table-column>
<el-table-column
prop=
"relatedMarketingCode"
label=
"关联支撑人员"
width=
"120"
></el-table-column>
<el-table-column
prop=
"relatedMarketingCode"
label=
"关联支撑人员"
width=
"120"
></el-table-column>
<el-table-column
label=
"状态"
width=
"80"
>
<el-table-column
label=
"状态"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
...
@@ -111,7 +111,6 @@
...
@@ -111,7 +111,6 @@
<el-button
<el-button
type=
"text"
type=
"text"
size=
"small"
size=
"small"
disabled
@
click=
"updatePerson(scope.row)"
@
click=
"updatePerson(scope.row)"
>
>
编辑
编辑
...
@@ -174,7 +173,7 @@
...
@@ -174,7 +173,7 @@
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"人员类型"
prop=
"personnelType"
>
<el-form-item
label=
"人员类型"
prop=
"personnelType"
>
<el-select
v-model=
"updatePersonStore.personnelType"
@
change=
"personnelTypeChange"
style=
"width: 100%;"
>
<el-select
v-model=
"updatePersonStore.personnelType"
:disabled=
"!!updatePersonStore.row.id"
@
change=
"personnelTypeChange"
style=
"width: 100%;"
>
<el-option
label=
"装维师傅"
value=
"1"
></el-option>
<el-option
label=
"装维师傅"
value=
"1"
></el-option>
<el-option
label=
"支撑人员"
value=
"2"
></el-option>
<el-option
label=
"支撑人员"
value=
"2"
></el-option>
</el-select>
</el-select>
...
@@ -183,31 +182,6 @@
...
@@ -183,31 +182,6 @@
</el-row>
</el-row>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<!-- 当选择装维师傅时显示关联支撑人员字段 -->
<el-col
:span=
"12"
>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
v-model=
"updatePersonStore.status"
style=
"width: 100%;"
>
<el-option
label=
"启用"
value=
"1"
></el-option>
<el-option
label=
"关闭"
value=
"0"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
v-if=
"updatePersonStore.personnelType == '1'"
>
<el-form-item
label=
"关联支撑人"
prop=
"relatedMarketingCode"
>
<el-select
v-model=
"updatePersonStore.relatedMarketingCode"
placeholder=
"请选择支撑人员"
style=
"width: 100%;"
>
<el-option
v-for=
"item in yxPersonList"
:key=
"item.personnelCode"
:label=
"item.personnelName"
:value=
"item.personnelCode"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"30"
>
<el-col
:span=
"30"
>
<el-form-item
label=
"所属区域"
prop=
"grid"
>
<el-form-item
label=
"所属区域"
prop=
"grid"
>
<
template
v-if=
"updatePersonStore.cityArr.length>0"
>
<
template
v-if=
"updatePersonStore.cityArr.length>0"
>
...
@@ -247,6 +221,8 @@
...
@@ -247,6 +221,8 @@
v-model=
"updatePersonStore.grid"
v-model=
"updatePersonStore.grid"
placeholder=
"选择网格"
placeholder=
"选择网格"
:disabled=
"getData.grid!=''"
:disabled=
"getData.grid!=''"
:multiple=
"gridIsMultiple"
@
change=
"gridChange"
clearable
>
clearable
>
<el-option
<el-option
v-for=
"item in updatePersonStore.gridArr"
v-for=
"item in updatePersonStore.gridArr"
...
@@ -259,6 +235,31 @@
...
@@ -259,6 +235,31 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row
:gutter=
"20"
>
<!-- 当选择装维师傅时显示关联支撑人员字段 -->
<el-col
:span=
"12"
>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
v-model=
"updatePersonStore.status"
style=
"width: 100%;"
>
<el-option
label=
"启用"
value=
"1"
></el-option>
<el-option
label=
"关闭"
value=
"0"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
v-if=
"updatePersonStore.personnelType=='1' && updatePersonStore.grid"
>
<el-form-item
label=
"关联支撑人"
prop=
"relatedMarketingCode"
>
<el-select
v-model=
"updatePersonStore.relatedMarketingCode"
placeholder=
"请选择支撑人员"
style=
"width: 100%;"
>
<el-option
v-for=
"item in yxPersonList"
:key=
"item.personnelCode"
:label=
"item.personnelName"
:value=
"item.personnelCode"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
@@ -347,12 +348,13 @@ export default {
...
@@ -347,12 +348,13 @@ export default {
cityArr
:
[],
cityArr
:
[],
county
:
''
,
county
:
''
,
countyArr
:
[],
countyArr
:
[],
grid
:
''
,
grid
:
[]
,
gridArr
:
[],
gridArr
:
[],
},
},
yxPersonList
:[],
yxPersonList
:[],
formData
:{
formData
:{
personnelCode
:
''
,
personnelCode
:
''
,
phone
:
''
,
personnelTypes
:
[]
personnelTypes
:
[]
},
},
tableData
:
[],
tableData
:
[],
...
@@ -400,6 +402,7 @@ export default {
...
@@ -400,6 +402,7 @@ export default {
isImportDialogOpen
:
false
,
isImportDialogOpen
:
false
,
selectedFile
:
null
,
selectedFile
:
null
,
gridIsMultiple
:
false
}
}
},
},
created
(){
created
(){
...
@@ -410,9 +413,38 @@ export default {
...
@@ -410,9 +413,38 @@ export default {
this
.
queryArea
()
this
.
queryArea
()
this
.
handleFilter
()
this
.
handleFilter
()
this
.
queryYxPerson
()
},
},
methods
:
{
methods
:
{
personnelTypeChange
(
value
){
// 重置关联支撑人员
this
.
updatePersonStore
.
relatedMarketingCode
=
''
// 重置网格选择
if
(
value
===
'1'
)
{
// 装维师傅 - 单选
this
.
updatePersonStore
.
grid
=
''
}
else
{
// 支撑人员 - 多选
this
.
updatePersonStore
.
grid
=
[]
}
setTimeout
(()
=>
{
// 设置网格选择模式
this
.
gridIsMultiple
=
value
===
'2'
},
100
)
// 如果当前有选中的网格且是装维师傅,查询支撑人员
if
(
value
===
'1'
&&
this
.
updatePersonStore
.
grid
)
{
this
.
queryYxPerson
()
}
},
gridRender
(
row
,
column
){
let
arr
=
row
.
gridList
if
(
arr
&&
arr
.
length
>
0
){
return
arr
.
map
(
item
=>
{
return
item
.
gridName
}).
join
(
','
)
}
return
""
},
queryArea
(){
queryArea
(){
this
.
apiReq
.
queryLevelAllArea
({
this
.
apiReq
.
queryLevelAllArea
({
areaLevel
:
2
,
areaLevel
:
2
,
...
@@ -426,13 +458,11 @@ export default {
...
@@ -426,13 +458,11 @@ export default {
}
}
})
})
},
},
personnelTypeChange
(){
this
.
updatePersonStore
.
relatedMarketingCode
=
''
},
queryYxPerson
(){
queryYxPerson
(){
this
.
apiReq
.
queryAllPerson
({
this
.
apiReq
.
queryAllPerson
({
pageSize
:
20
,
pageSize
:
20
,
pageNum
:
1
,
pageNum
:
1
,
gridCode
:
this
.
updatePersonStore
.
grid
,
personnelTypes
:
[
2
]
personnelTypes
:
[
2
]
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
code
==
200
){
if
(
res
.
code
==
200
){
...
@@ -447,13 +477,40 @@ export default {
...
@@ -447,13 +477,40 @@ export default {
ud
.
row
=
row
ud
.
row
=
row
ud
.
personnelName
=
row
.
personnelName
ud
.
personnelName
=
row
.
personnelName
ud
.
personnelCode
=
row
.
personnelCode
ud
.
personnelCode
=
row
.
personnelCode
ud
.
personnelType
=
row
.
personnelType
+
''
// 设置网格选择模式
this
.
gridIsMultiple
=
ud
.
personnelType
===
'2'
if
(
row
.
personnelType
==
'1'
){
ud
.
relatedMarketingCode
=
row
.
relatedMarketingCode
+
''
}
if
(
row
.
cityCode
){
ud
.
city
=
row
.
cityCode
this
.
cityChange
(
ud
.
city
,
'person'
)
if
(
row
.
countyCode
){
ud
.
county
=
row
.
countyCode
this
.
countyChange
(
ud
.
county
,
'person'
)
if
(
row
.
gridList
){
let
arr
=
row
.
gridList
.
map
(
item
=>
{
return
item
.
gridCode
})
ud
.
grid
=
row
.
personnelType
==
'1'
?
arr
.
join
(
''
):
arr
if
(
row
.
personnelType
==
'1'
){
this
.
queryYxPerson
()
}
}
}
}
ud
.
phone
=
row
.
phone
ud
.
phone
=
row
.
phone
ud
.
status
=
row
.
status
ud
.
status
=
row
.
status
+
''
ud
.
relatedMarketingCode
=
row
.
relatedMarketingCode
}
else
{
}
else
{
ud
.
row
=
{}
ud
.
row
=
{}
ud
.
personnelName
=
''
ud
.
personnelName
=
''
ud
.
personnelCode
=
''
ud
.
personnelCode
=
''
ud
.
personnelType
=
''
ud
.
phone
=
''
ud
.
phone
=
''
ud
.
status
=
''
ud
.
status
=
''
ud
.
relatedMarketingCode
=
''
ud
.
relatedMarketingCode
=
''
...
@@ -546,6 +603,7 @@ export default {
...
@@ -546,6 +603,7 @@ export default {
let
ad
=
type
==
'person'
?
this
.
updatePersonStore
:
this
.
addressStore
let
ad
=
type
==
'person'
?
this
.
updatePersonStore
:
this
.
addressStore
ad
.
county
=
value
ad
.
county
=
value
ad
.
grid
=
''
ad
.
grid
=
''
ad
.
gridArr
=
[]
this
.
apiReq
.
queryGridList
({
this
.
apiReq
.
queryGridList
({
areaCode
:
value
areaCode
:
value
...
@@ -559,6 +617,11 @@ export default {
...
@@ -559,6 +617,11 @@ export default {
}
}
})
})
},
},
gridChange
(
value
){
if
(
this
.
updatePersonStore
.
personnelType
==
1
&&
value
){
this
.
queryYxPerson
()
}
},
deletePersonnel
(
id
)
{
deletePersonnel
(
id
)
{
this
.
$confirm
(
'确定要删除该人员吗?此操作不可撤销。'
,
'确认删除'
,
{
this
.
$confirm
(
'确定要删除该人员吗?此操作不可撤销。'
,
'确认删除'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
@@ -582,6 +645,7 @@ export default {
...
@@ -582,6 +645,7 @@ export default {
if
(
valid
)
{
if
(
valid
)
{
let
ud
=
this
.
updatePersonStore
let
ud
=
this
.
updatePersonStore
this
.
apiReq
.
addNewPerson
({
this
.
apiReq
.
addNewPerson
({
id
:
ud
.
row
?
ud
.
row
.
id
:
''
,
personnelName
:
ud
.
personnelName
,
personnelName
:
ud
.
personnelName
,
personnelCode
:
ud
.
personnelCode
,
personnelCode
:
ud
.
personnelCode
,
phone
:
ud
.
phone
,
phone
:
ud
.
phone
,
...
@@ -589,11 +653,11 @@ export default {
...
@@ -589,11 +653,11 @@ export default {
status
:
ud
.
status
,
status
:
ud
.
status
,
relatedMarketingCode
:
ud
.
relatedMarketingCode
,
relatedMarketingCode
:
ud
.
relatedMarketingCode
,
areaCode
:
ud
.
county
,
areaCode
:
ud
.
county
,
gridCode
:
ud
.
grid
gridCode
List
:
ud
.
personnelType
==
1
?[
ud
.
grid
]:
ud
.
grid
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
code
==
'200'
){
if
(
res
.
code
==
'200'
){
let
__this
=
this
let
__this
=
this
this
.
$alert
(
'添加成功'
,
'温馨提示'
,
{
this
.
$alert
(
ud
.
row
?
'编辑成功'
:
'添加成功'
,
'温馨提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
callback
:
()
=>
{
callback
:
()
=>
{
__this
.
handleFilter
()
__this
.
handleFilter
()
...
...
zhiJianBusi/zjbPc/src/views/LoginPage.vue
View file @
c352d42
...
@@ -68,7 +68,7 @@
...
@@ -68,7 +68,7 @@
alt=
"中国移动 Logo"
alt=
"中国移动 Logo"
class=
"login-logo"
class=
"login-logo"
>
>
<h1
class=
"login-app-title"
>
上门随销
商机管理平台
</h1>
<h1
class=
"login-app-title"
>
南通铁通
商机管理平台
</h1>
</div>
</div>
<!-- 登录方式切换 -->
<!-- 登录方式切换 -->
...
...
zhiJianBusi/zjbPc/src/views/OpportunityDetail.vue
View file @
c352d42
...
@@ -77,7 +77,7 @@
...
@@ -77,7 +77,7 @@
</div>
</div>
</el-card>
</el-card>
<el-card
class=
"detail-card"
>
<el-card
class=
"detail-card"
v-if=
"opportunity.opportunityType == 1"
>
<div
class=
"card-header"
>
<div
class=
"card-header"
>
<h3>
支撑人员信息
</h3>
<h3>
支撑人员信息
</h3>
</div>
</div>
...
@@ -192,6 +192,7 @@
...
@@ -192,6 +192,7 @@
icon=
"el-icon-edit"
icon=
"el-icon-edit"
class=
"action-btn"
class=
"action-btn"
@
click=
"assignBusi"
@
click=
"assignBusi"
v-if=
"opportunity.opportunityType==1"
:disabled=
"opportunity.status!=1 && opportunity.status!=2"
:disabled=
"opportunity.status!=1 && opportunity.status!=2"
>
>
分配商机
分配商机
...
@@ -201,7 +202,7 @@
...
@@ -201,7 +202,7 @@
icon=
"el-icon-s-promotion"
icon=
"el-icon-s-promotion"
class=
"action-btn"
class=
"action-btn"
@
click=
"dealBusi"
@
click=
"dealBusi"
:disabled=
"
opportunity.status!=1 && opportunity.status!=2
"
:disabled=
"
(opportunity.status!=1 && opportunity.status!=2) || ifCanOperate
"
>
>
标记成单
标记成单
</el-button>
</el-button>
...
@@ -210,7 +211,7 @@
...
@@ -210,7 +211,7 @@
icon=
"el-icon-s-check"
icon=
"el-icon-s-check"
class=
"action-btn"
class=
"action-btn"
@
click=
"audioBusi"
@
click=
"audioBusi"
:disabled=
"
opportunity.status!=3
"
:disabled=
"
(opportunity.status!=3) || ifCanOperate
"
>
>
商机审核
商机审核
</el-button>
</el-button>
...
@@ -219,7 +220,7 @@
...
@@ -219,7 +220,7 @@
icon=
"el-icon-circle-close"
icon=
"el-icon-circle-close"
class=
"action-btn"
class=
"action-btn"
@
click=
"shutBusi"
@
click=
"shutBusi"
:disabled=
"
opportunity.status==5 || opportunity.status==4
"
:disabled=
"
(opportunity.status==5 || opportunity.status==4) || ifCanOperate
"
>
>
关闭商机
关闭商机
</el-button>
</el-button>
...
@@ -262,7 +263,7 @@
...
@@ -262,7 +263,7 @@
type=
"text"
type=
"text"
icon=
"el-icon-edit-outline"
icon=
"el-icon-edit-outline"
class=
"action-btn"
class=
"action-btn"
:disabled=
"
opportunity.status==5 || opportunity.status==4
"
:disabled=
"
(opportunity.status==5 || opportunity.status==4) || ifCanOperate
"
@
click=
"memoStore.isEdit = true"
@
click=
"memoStore.isEdit = true"
>
>
编辑
编辑
...
@@ -299,12 +300,14 @@
...
@@ -299,12 +300,14 @@
width=
"500px"
>
width=
"500px"
>
<el-form
:model=
"closeBusiStore"
label-width=
"100px"
>
<el-form
:model=
"closeBusiStore"
label-width=
"100px"
>
<el-form-item
label=
"关闭原因"
>
<el-form-item
label=
"关闭原因"
>
<el-input
<el-select
v-model=
"closeBusiStore.reason"
placeholder=
"请选择关闭理由"
>
v-model=
"closeBusiStore.reason"
<el-option
type=
"textarea"
v-for=
"item in closeBusiStore.reasonsList"
:rows=
"4"
:key=
"item.closeReason"
placeholder=
"请输入关闭商机原因"
:label=
"item.closeReason"
></el-input>
:value=
"item.closeReason"
></el-option>
</el-select>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
@@ -354,7 +357,7 @@
...
@@ -354,7 +357,7 @@
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"audioBusiStore.result == '0'"
label=
"不通过
理由"
required
>
<el-form-item
label=
"
理由"
required
>
<el-input
<el-input
v-model=
"audioBusiStore.reason"
v-model=
"audioBusiStore.reason"
type=
"textarea"
type=
"textarea"
...
@@ -429,7 +432,8 @@ export default {
...
@@ -429,7 +432,8 @@ export default {
closeBusiStore
:{
closeBusiStore
:{
isShow
:
false
,
isShow
:
false
,
reason
:
''
reason
:
''
,
reasonsList
:
[],
},
},
yxPersonList
:
[],
yxPersonList
:
[],
audioBusiStore
:{
audioBusiStore
:{
...
@@ -461,9 +465,24 @@ export default {
...
@@ -461,9 +465,24 @@ export default {
created
()
{
created
()
{
this
.
queryDetail
()
this
.
queryDetail
()
this
.
queryFollow
()
this
.
queryFollow
()
this
.
query
YxPerson
()
this
.
query
CloseList
()
},
},
methods
:
{
methods
:
{
ifCanOperate
(){
let
ui
=
JSON
.
parse
(
localStorage
.
getItem
(
'accountInfo'
))
return
this
.
opportunity
.
opportunityType
==
2
&&
ui
.
gridCode
},
queryCloseList
(){
this
.
apiReq
.
queryBusiCloseReansonList
({
pageNum
:
1
,
pageSize
:
1000
}).
then
(
res
=>
{
if
(
res
.
code
==
200
){
this
.
closeBusiStore
.
reasonsList
=
res
.
data
.
records
}
})
},
getAddressShow
(
value
){
getAddressShow
(
value
){
if
(
!
value
){
if
(
!
value
){
return
'--'
return
'--'
...
@@ -471,11 +490,19 @@ export default {
...
@@ -471,11 +490,19 @@ export default {
return
value
.
split
(
":"
)[
1
]
return
value
.
split
(
":"
)[
1
]
},
},
queryYxPerson
(){
queryYxPerson
(){
this
.
apiReq
.
queryAllPerson
(
{
let
param
=
{
pageSize
:
20
,
pageSize
:
20
,
pageNum
:
1
,
pageNum
:
1
,
personnelTypes
:
[
2
]
personnelTypes
:
[
2
]
}).
then
(
res
=>
{
}
if
(
this
.
opportunity
.
opportunityType
==
1
){
param
.
gridCode
=
this
.
opportunity
.
gridCode
}
else
{
param
.
areaCode
=
this
.
opportunity
.
areaCode
}
this
.
apiReq
.
queryAllPerson
(
param
).
then
(
res
=>
{
if
(
res
.
code
==
200
){
if
(
res
.
code
==
200
){
this
.
yxPersonList
=
res
.
data
.
records
this
.
yxPersonList
=
res
.
data
.
records
}
}
...
@@ -564,6 +591,7 @@ export default {
...
@@ -564,6 +591,7 @@ export default {
this
.
memoStore
.
value
=
res
.
data
.
adminRemark
this
.
memoStore
.
value
=
res
.
data
.
adminRemark
this
.
handleAudio
()
this
.
handleAudio
()
this
.
queryYxPerson
()
}
else
{
}
else
{
this
.
$alert
(
res
.
$message
,
'温馨提示'
,
{
this
.
$alert
(
res
.
$message
,
'温馨提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
@@ -609,7 +637,7 @@ export default {
...
@@ -609,7 +637,7 @@ export default {
audioBusiSubmit
(){
audioBusiSubmit
(){
let
ad
=
this
.
audioBusiStore
let
ad
=
this
.
audioBusiStore
if
(
ad
.
result
==
0
&&
!
ad
.
reason
){
if
(
!
ad
.
reason
){
this
.
$message
.
error
(
'请输入不通过理由'
)
this
.
$message
.
error
(
'请输入不通过理由'
)
return
return
}
}
...
...
zhiJianBusi/zjbPc/src/views/OpportunityManagement.vue
View file @
c352d42
This diff is collapsed.
Click to expand it.
zhiJianBusi/zjbPc/vue.config.js
View file @
c352d42
...
@@ -11,7 +11,7 @@ module.exports = {
...
@@ -11,7 +11,7 @@ module.exports = {
proxy
:
{
proxy
:
{
'/compass'
:
{
'/compass'
:
{
target
:
'https://testznzl.lgyzpt.com/'
,
target
:
'https://testznzl.lgyzpt.com/'
,
//target: 'http
s://hall.51xinpai.cn
',
//target: 'http
://39.107.104.220:8877
',
changeOrigin
:
true
,
changeOrigin
:
true
,
pathRewrite
:
{
pathRewrite
:
{
'^/compass'
:
'compass'
'^/compass'
:
'compass'
...
...
zhiJianBusi/zjbPhone/busiDetail.html
View file @
c352d42
...
@@ -199,7 +199,7 @@
...
@@ -199,7 +199,7 @@
<div
class=
"imgList"
>
<div
class=
"imgList"
>
<div
class=
"addImg"
v-if=
"gjStore.imgArr.length<3"
>
<div
class=
"addImg"
v-if=
"gjStore.imgArr.length<3"
>
<img
class=
"add"
src=
"images/add.png"
alt=
""
>
<img
class=
"add"
src=
"images/add.png"
alt=
""
>
<input
type=
"file"
@
change=
"fileChange"
accept=
"image/*"
:disabled=
"gjStore.isLoading"
>
<input
type=
"file"
@
change=
"fileChange"
accept=
"image/*"
multiple
:disabled=
"gjStore.isLoading"
>
</div>
</div>
<div
class=
"imgShow"
v-for=
"(item,index) in gjStore.imgArr"
>
<div
class=
"imgShow"
v-for=
"(item,index) in gjStore.imgArr"
>
<img
class=
"show"
:src=
"item.url"
alt=
""
>
<img
class=
"show"
:src=
"item.url"
alt=
""
>
...
@@ -249,12 +249,25 @@
...
@@ -249,12 +249,25 @@
<div
class=
"botTs"
>
关闭后将无法再进行任何编辑操作
</div>
<div
class=
"botTs"
>
关闭后将无法再进行任何编辑操作
</div>
</div>
</div>
</div>
</div>
<!-- <div class="outAlertBg">
<div class="imgAlertCon">
<div class="imgDiv">
<img src="https://pic1.arkoo.com/56D0B40F99F841DF8A2425762AE2565D/picture/o_1i4qop009177v1tgf14db15he1iaj1is.jpg" alt="">
</div>
<div class="choButt">
<div class="prev">prev</div>
<div class="next">next</div>
</div>
</div>
</div> -->
</div>
</div>
<!-- 引入Vue.js -->
<!-- 引入Vue.js -->
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/busiDetail.js?
123
"
></script>
<script
src=
"js/busiDetail.js?
000
"
></script>
</body>
</body>
</html>
</html>
\ No newline at end of file
\ No newline at end of file
zhiJianBusi/zjbPhone/css/busiDetail.css
View file @
c352d42
...
@@ -182,6 +182,32 @@ body {
...
@@ -182,6 +182,32 @@ body {
}
}
/* .imgAlertCon .imgDiv{
width: 6.5rem;
height: 9rem;
margin-bottom: .3rem;
display: flex;
align-items: center;
justify-content: center;
}
.imgAlertCon .imgDiv img{
max-width: 100%;
max-height: 100%;
}
.imgAlertCon .choButt{
width: 100%;
display: flex;
color: #fff;
font-size: .4rem;
justify-content: space-around;
}
.imgAlertCon .choButt div{
background: #0068EE;
padding: .1rem .3rem;
border-radius: .08rem;
} */
/* 通用卡片样式 */
/* 通用卡片样式 */
.business-info-section
,
.business-info-section
,
.business-detail-section
,
.business-detail-section
,
...
...
zhiJianBusi/zjbPhone/js/busiDetail.js
View file @
c352d42
...
@@ -337,17 +337,20 @@ new Vue({
...
@@ -337,17 +337,20 @@ new Vue({
return
return
}
}
let
file
=
e
.
target
.
files
[
0
]
let
files
=
e
.
currentTarget
.
files
console
.
log
(
file
)
if
(
file
.
type
.
includes
(
'image/'
)
<=
0
){
if
(
files
.
length
>
3
)
{
util
.
toast
(
'请上传图片'
)
utils
.
toast
(
`最多只能选择3张图片`
);
return
e
.
value
=
''
;
return
false
;
}
}
for
(
let
key
in
files
){
this
.
gjStore
.
imgArr
.
push
({
this
.
gjStore
.
imgArr
.
push
({
file
:
file
,
file
:
files
[
key
]
,
url
:
URL
.
createObjectURL
(
file
)
url
:
URL
.
createObjectURL
(
files
[
key
]
)
})
})
}
},
},
/**
/**
...
...
zhiJianBusi/zjbPhone/js/login.js
View file @
c352d42
...
@@ -8,7 +8,7 @@ new Vue({
...
@@ -8,7 +8,7 @@ new Vue({
loginForm
:
{
loginForm
:
{
employeeId
:
''
,
employeeId
:
''
,
phoneNumber
:
''
,
phoneNumber
:
''
,
verifyCode
:
''
verifyCode
:
'
123456
'
},
},
countdown
:
0
,
countdown
:
0
,
countdownTimer
:
null
,
countdownTimer
:
null
,
...
@@ -19,16 +19,16 @@ new Vue({
...
@@ -19,16 +19,16 @@ new Vue({
this
.
platform
=
type
this
.
platform
=
type
localStorage
.
setItem
(
'platform'
,
type
)
localStorage
.
setItem
(
'platform'
,
type
)
//
if(type == 'gw'){
if
(
type
==
'gw'
){
//
this.loginForm.employeeId = '54321'
this
.
loginForm
.
employeeId
=
'54321'
//
this.loginForm.phoneNumber = '15611154004'
this
.
loginForm
.
phoneNumber
=
'15611154004'
//
}else if(type == 'yx'){
}
else
if
(
type
==
'yx'
){
//
this.loginForm.employeeId = '12345'
this
.
loginForm
.
employeeId
=
'12345'
//
this.loginForm.phoneNumber = '13718590607'
this
.
loginForm
.
phoneNumber
=
'13718590607'
//
}else{
}
else
{
//
this.loginForm.employeeId = '54321'
this
.
loginForm
.
employeeId
=
'54321'
//
this.loginForm.phoneNumber = '13212789513'
this
.
loginForm
.
phoneNumber
=
'13212789513'
//
}
}
},
},
getVerifyCode
()
{
getVerifyCode
()
{
let
pa
=
this
.
loginForm
let
pa
=
this
.
loginForm
...
...
zhiJianBusi/zjbPhone/myBusi.html
View file @
c352d42
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
<input
<input
class=
"search-input"
class=
"search-input"
type=
"text"
type=
"text"
placeholder=
"输入用户
账号
"
placeholder=
"输入用户
联系方式
"
v-model=
"searchKeyword"
v-model=
"searchKeyword"
data-node-id=
"355:510"
data-node-id=
"355:510"
>
>
...
...
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