Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CRM
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
华国豪
CRM
Commits
b4ec03f7
Commit
b4ec03f7
authored
Apr 28, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
3f2827b4
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
430 additions
and
168 deletions
+430
-168
clueManagement.vue
src/components/clueManagement/clueManagement.vue
+22
-12
guestInfoBox.vue
src/components/clueManagement/guestInfoBox.vue
+190
-156
invalidDialogBox.vue
src/components/clueManagement/invalidDialogBox.vue
+218
-0
No files found.
src/components/clueManagement/clueManagement.vue
View file @
b4ec03f7
...
...
@@ -108,6 +108,16 @@
:height=
"sceneList.length > 0 ? '600' : '660'"
border
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
fixed
type=
"selection"
width=
"40"
></el-table-column>
<el-table-column
prop=
"ClueState"
label=
"线索状态"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<template
v-if=
"scope.row.ClueState==1"
>
正常
</
template
>
<
template
v-else-if=
"scope.row.ClueState==2"
>
无效
</
template
>
</template>
</el-table-column>
<el-table-column
prop=
"ClueName"
label=
"线索名称"
v-if=
"queryType[0].show"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
...
...
@@ -184,11 +194,11 @@
@
size-change=
"handleSizeChange"
:total=
"total"
>
</el-pagination>
</div>
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"
drawer
"
direction=
"rtl"
:before-close=
"handleClose"
>
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"
isShowCustomerInfo
"
direction=
"rtl"
:before-close=
"handleClose"
>
<customerInfoBox
:CustomerId=
"CustomerId"
@
transferS=
"transfer"
@
deleteClue=
"deleteClue"
@
watersS=
"waters"
@
editCustS=
"editCust"
/>
</el-drawer>
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"
drawer2
"
direction=
"rtl"
:before-close=
"handleClose"
>
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"
isShowGuestInfo
"
direction=
"rtl"
:before-close=
"handleClose"
>
<guestInfoBox
:CustomerId=
"CustomerId"
@
transferS=
"transfer"
@
deleteClue=
"deleteClue"
@
watersS=
"waters"
@
editCustS=
"editCust"
/>
</el-drawer>
...
...
@@ -246,7 +256,7 @@
return
{
ruleList
:
[],
guestDialogBoxShow
:
false
,
drawer2
:
false
,
isShowGuestInfo
:
false
,
//是否显示直客弹窗
activeMenu
:
1
,
queryType2
:
[{
label
:
'线索名称'
,
...
...
@@ -326,7 +336,7 @@
CustomerIdStr
:
''
,
transferVisible
:
false
,
mySelectCtrl
:
false
,
drawer
:
false
,
isShowCustomerInfo
:
false
,
//是否显示客户弹窗
loading
:
true
,
dialogTableVisible
:
false
,
dialogTableVisibleName
:
'新建线索'
,
...
...
@@ -499,8 +509,8 @@
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
type
===
1
)
{}
{
this
.
drawer
=
false
this
.
drawer2
=
false
this
.
isShowCustomerInfo
=
false
this
.
isShowGuestInfo
=
false
}
this
.
multipleSelection
=
[]
this
.
$message
.
success
(
res
.
data
.
message
);
...
...
@@ -545,8 +555,8 @@
this
.
apipost
(
'/api/Customer/UpdateCustomerClue'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
type
===
1
)
{}
{
this
.
drawer
=
false
this
.
drawer2
=
false
this
.
isShowCustomerInfo
=
false
this
.
isShowGuestInfo
=
false
}
this
.
multipleSelection
=
[]
this
.
$message
.
success
(
res
.
data
.
message
);
...
...
@@ -621,8 +631,8 @@
this
.
multipleSelection
=
[]
this
.
transferVisible
=
false
if
(
type
===
3
)
{}
{
this
.
drawer
=
false
this
.
drawer2
=
false
this
.
isShowCustomerInfo
=
false
this
.
isShowGuestInfo
=
false
}
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
getList
()
...
...
@@ -653,9 +663,9 @@
this
.
CustomerId
=
scope
.
row
.
CustomerId
this
.
CustomerName
=
scope
.
row
.
CustomerName
if
(
this
.
msg
.
CustomerType
===
0
)
{
this
.
drawer
=
true
this
.
isShowCustomerInfo
=
true
}
else
{
this
.
drawer2
=
true
this
.
isShowGuestInfo
=
true
}
},
// 获取是否开启规则
...
...
src/components/clueManagement/guestInfoBox.vue
View file @
b4ec03f7
<
style
>
.drawer-box
{
.drawer-box
{
height
:
100%
;
}
.drawer-header
{
}
.drawer-header
{
height
:
83px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
0
30px
;
}
.drawer-header
.left
{
}
.drawer-header
.left
{
display
:
flex
;
align-items
:
center
;
}
.drawer-header
.left
img
{
}
.drawer-header
.left
img
{
display
:
inline-block
;
margin-right
:
10px
;
}
.drawer-body
{
height
:
calc
(
100%
-
83px
);
}
.drawer-body
.top-info
{
}
.drawer-body
{
height
:
calc
(
100%
-
83px
);
}
.drawer-body
.top-info
{
height
:
115px
;
padding
:
30px
;
box-sizing
:
border-box
;
font-size
:
12px
;
background-color
:
#F6F4FC
;
}
.drawer-body
.top-info
.info-lable
{
}
.drawer-body
.top-info
.info-lable
{
display
:
inline-block
;
width
:
80px
;
color
:
#999999
;
}
.margin-bottom-25
{
}
.margin-bottom-25
{
margin-bottom
:
25px
;
}
.drawer-box
.el-tabs__nav-wrap
::after
{
}
.drawer-box
.el-tabs__nav-wrap
::after
{
height
:
0
;
}
.drawer-body
.el-tabs__header
{
}
.drawer-body
.el-tabs__header
{
padding
:
0
25px
;
margin-bottom
:
0
;
}
.drawer-body
>
.content
{
}
.drawer-body
>
.content
{
height
:
calc
(
100%
-
115px
);
}
.drawer-body
.el-tabs
{
}
.drawer-body
.el-tabs
{
height
:
100%
;
}
.drawer-body
.el-tabs__content
{
}
.drawer-body
.el-tabs__content
{
background-color
:
#F6F4FC
;
height
:
calc
(
100%
-
40px
);
box-sizing
:
border-box
;
}
.drawer-body
.el-tabs__content
.el-tab-pane
{
}
.drawer-body
.el-tabs__content
.el-tab-pane
{
height
:
100%
;
position
:
absolute
;
width
:
calc
(
100%
);
padding
:
17px
20px
;
box-sizing
:
border-box
}
}
</
style
>
<
template
>
<div
class=
"drawer-box"
v-if=
"loading"
>
...
...
@@ -69,14 +82,15 @@
<p>
{{
detailsData
.
GusetName
}}
</p>
</div>
<div
class=
"right"
>
<el-button
class=
"crm-btn query-btn"
@
click=
"editCust"
>
编辑
</el-button>
<el-dropdown
@
command=
"handleCommand"
style=
"top: 1px;"
>
<el-button
class=
"crm-btn query-btn"
@
click=
"editCust"
>
编辑
</el-button>
<el-dropdown
@
command=
"handleCommand"
style=
"top: 1px;"
>
<el-button
class=
"crm-btn crm-btn-more easy-btn margin-right0"
>
<i
class=
"iconfont icongengduo"
></i>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"z"
><i
class=
"iconfont iconplus-transfer"
></i>
转移
</el-dropdown-item>
<el-dropdown-item
command=
"d"
><i
class=
"iconfont icondelete"
></i>
删除
</el-dropdown-item>
<el-dropdown-item
command=
"w"
><i
class=
"iconfont icondelete"
></i>
无效线索
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
...
...
@@ -88,7 +102,8 @@
<span
class=
"info-lable"
>
客户级别:
</span><span>
{{
detailsData
.
CustomerIdLevelStr
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
创建时间:
</span><span>
{{
detailsData
.
CreateDate
?
detailsData
.
CreateDate
:
''
}}
</span>
<span
class=
"info-lable"
>
创建时间:
</span><span>
{{
detailsData
.
CreateDate
?
detailsData
.
CreateDate
:
''
}}
</span>
</el-col>
</el-row>
<el-row>
...
...
@@ -96,42 +111,46 @@
<span
class=
"info-lable"
>
负责人:
</span><span>
{{
detailsData
.
PersonChargeStr
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
''
}}
</span>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
''
}}
</span>
</el-col>
</el-row>
</div>
<div
class=
"content"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"活动"
name=
"1"
>
<Activity
v-if=
"activeName === '1'"
:CustomerId=
"CustomerId"
:showType=
"2"
/>
<Activity
v-if=
"activeName === '1'"
:CustomerId=
"CustomerId"
:showType=
"2"
:detailsData=
"detailsData"
/>
</el-tab-pane>
<el-tab-pane
label=
"详细资料"
name=
"2"
>
<Details
v-if=
"activeName === '2'"
:detailsData=
"detailsData"
/>
<Details
v-if=
"activeName === '2'"
:detailsData=
"detailsData"
/>
</el-tab-pane>
<el-tab-pane
label=
"附件"
name=
"8"
>
<Enclosure
:ID=
'CustomerId'
:type=
'1'
:isGuest=
"true"
v-if=
"activeName === '8'"
/>
<Enclosure
:ID=
'CustomerId'
:type=
'1'
:isGuest=
"true"
v-if=
"activeName === '8'"
/>
</el-tab-pane>
<el-tab-pane
label=
"操作记录"
name=
"9"
>
<Record
v-if=
"activeName === '9'"
:CustomerId=
"CustomerId"
/>
<Record
v-if=
"activeName === '9'"
:CustomerId=
"CustomerId"
/>
</el-tab-pane>
</el-tabs>
</div>
<invalidDialogBox
v-if=
"isShowInvalidBox"
:guestInfo=
"detailsData"
/>
</div>
</div>
</
template
>
<
script
>
import
Activity
from
"../guestManagement/Activity"
;
import
Details
from
"../guestManagement/Details"
;
import
Enclosure
from
"../clueManagement/Enclosure"
;
import
Record
from
"../guestManagement/Record"
;
export
default
{
import
Activity
from
"../guestManagement/Activity"
;
import
Details
from
"../guestManagement/Details"
;
import
Enclosure
from
"../clueManagement/Enclosure"
;
import
Record
from
"../guestManagement/Record"
;
import
invalidDialogBox
from
"./invalidDialogBox"
;
export
default
{
components
:
{
Activity
,
Details
,
Enclosure
,
Record
Record
,
invalidDialogBox
},
props
:
{
props
:
{
CustomerId
:
{
type
:
Number
,
default
:
0
...
...
@@ -142,14 +161,16 @@ export default {
activeName
:
'1'
,
detailsData
:
{},
loading
:
false
,
isShowInvalidBox
:
false
,
//是否显示无效线索弹窗
};
},
watch
:{
},
watch
:
{
CustomerId
:
{
handler
(
val
,
oldVal
)
{
handler
(
val
,
oldVal
)
{
this
.
init
()
this
.
activeName
=
'1'
},
deep
:
true
deep
:
true
}
},
mounted
()
{
...
...
@@ -161,35 +182,37 @@ export default {
})
},
methods
:
{
init
(){
this
.
apipost
(
'/api/Customer/GetAllGuesstCustomerModel'
,
{
ID
:
this
.
CustomerId
},
res
=>
{
init
()
{
this
.
apipost
(
'/api/Customer/GetAllGuesstCustomerModel'
,
{
ID
:
this
.
CustomerId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
if
(
!
data
.
HousePhotos
)
{
if
(
!
data
.
HousePhotos
)
{
data
.
HousePhotos
=
[]
}
if
(
!
data
.
BusinessCardPhotos
)
{
if
(
!
data
.
BusinessCardPhotos
)
{
data
.
BusinessCardPhotos
=
[]
}
if
(
!
data
.
Images
)
{
if
(
!
data
.
Images
)
{
data
.
Images
=
[]
}
if
(
!
data
.
CustomerSourceType
)
{
if
(
!
data
.
CustomerSourceType
)
{
data
.
CustomerSourceType
=
''
}
if
(
!
data
.
CustomerSource
)
{
if
(
!
data
.
CustomerSource
)
{
data
.
CustomerSource
=
''
}
if
(
!
data
.
Province
)
{
if
(
!
data
.
Province
)
{
data
.
Province
=
''
}
if
(
!
data
.
Country
)
{
if
(
!
data
.
Country
)
{
data
.
Country
=
''
}
if
(
!
data
.
City
)
{
if
(
!
data
.
City
)
{
data
.
City
=
''
}
if
(
!
data
.
District
)
{
if
(
!
data
.
District
)
{
data
.
District
=
''
}
this
.
detailsData
=
data
...
...
@@ -197,20 +220,31 @@ export default {
}
})
},
handleCommand
(
command
)
{
handleCommand
(
command
)
{
if
(
command
===
'z'
)
{
this
.
$emit
(
'transferS'
,
3
);
}
else
if
(
command
===
'g'
)
{
}
//无效线索弹窗
else
if
(
command
===
'w'
)
{
this
.
isShowInvalidBox
=
true
;
var
pmsg
=
{};
console
.
log
(
"this.detailsData"
,
this
.
detailsData
);
// this.apipost('/api/Customer/UpdateClueState', pmsg, res => {
// if (res.data.resultCode == 1) {
// this.SceneEmployeeList = res.data.data
// }
// })
}
},
handleClick
(
tab
,
event
)
{},
editCust
()
{
editCust
()
{
this
.
$emit
(
'editCustS'
,
2
)
},
handleClose
(
done
)
{
done
();
}
}
}
}
</
script
>
\ No newline at end of file
src/components/clueManagement/invalidDialogBox.vue
0 → 100644
View file @
b4ec03f7
<
style
>
.invalidDialogBox.add-box
.add-tit
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
height
:
20px
;
}
.invalidDialogBox.add-box
.add-tit
p
{
display
:
flex
;
align-items
:
center
;
font-weight
:
bold
;
color
:
rgba
(
17
,
17
,
17
,
1
);
font-size
:
14px
;
}
.invalidDialogBox.add-box
.add-tit
p
span
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
background
:
#409efe
;
border-radius
:
50%
;
margin-right
:
10px
;
}
.invalidDialogBox.add-box
.el-dialog__header
{
padding
:
15px
20px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
}
.invalidDialogBox.add-box
.dialog-footer
{
text-align
:
center
;
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-bottom
:
20px
;
}
.invalidDialogBox.add-box
.el-dialog__footer
{
padding
:
0
;
}
.invalidDialogBox.add-box
.el-dialog__body
{
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-top
:
20px
;
max-height
:
400px
;
overflow
:
auto
;
}
.invalidDialogBox
.add-box-btn.el-button
{
border-radius
:
0
;
background-color
:
#409efe
cc
;
border-color
:
#409efe
cc
;
color
:
white
;
padding
:
12px
43px
;
}
.invalidDialogBox
.add-box-btn.el-button
:hover
{
background-color
:
#409efe
;
border-color
:
#409efe
;
color
:
white
;
}
.invalidDialogBox
.add-box-btn.el-button.add-box-cancel
{
color
:
#409efe
cc
;
background-color
:
white
;
}
.invalidDialogBox
.add-box-btn.el-button.add-box-cancel
:hover
{
color
:
#409efe
;
background-color
:
white
;
}
.invalidDialogBox
.el-input
.el-input-group__append
{
background-color
:
#409efe
;
border-color
:
#409efe
;
color
:
#fff
;
}
.invalidDialogBox
.form-box
.form-box-tit
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
20px
;
}
.invalidDialogBox
.form-box
.radius
{
display
:
flex
;
width
:
4px
;
height
:
4px
;
background
:
rgba
(
255
,
164
,
117
,
1
);
border-radius
:
50%
;
margin-right
:
10px
;
}
.invalidDialogBox
.up-img-box
.uib-item
{
margin-right
:
30px
;
width
:
130px
;
height
:
130px
;
background-color
:
white
;
position
:
relative
;
margin-bottom
:
30px
;
}
.invalidDialogBox
.up-img-box
.uib-item
p
{
position
:
absolute
;
bottom
:
-30px
;
font-size
:
12px
;
text-align
:
center
;
width
:
100%
;
}
.invalidDialogBox
.up-img-box
.uib-item
:hover
.imgzhe-btn
{
opacity
:
1
;
}
.invalidDialogBox
.imgzhe
{
width
:
100%
;
height
:
100%
;
position
:
absolute
;
top
:
0
;
}
.invalidDialogBox
.imgzhe
.imgzhe-btn
{
background
:
rgba
(
0
,
0
,
0
,
0.6
);
width
:
100%
;
height
:
100%
;
text-align
:
center
;
line-height
:
120px
;
position
:
absolute
;
top
:
0
;
opacity
:
1
;
transition
:
all
linear
0.5s
;
}
.invalidDialogBox
.imgzhe
.imgzhe-btn
i
{
font-size
:
22px
;
margin-right
:
5px
;
color
:
white
;
cursor
:
pointer
;
}
.invalidDialogBox
.up-ctrl
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
}
.invalidDialogBox
.up-ctrl
>
div
{
width
:
100%
;
height
:
100%
;
text-align
:
center
;
line-height
:
140px
;
}
</
style
>
<
template
>
<el-dialog
:visible
.
sync=
"dialogTableVisible"
@
closed=
"closedDialog"
class=
"add-box add-box1 invalidDialogBox"
width=
"450px"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
无效线索弹窗
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<div
class=
"form-box"
>
<el-form
ref=
"form"
class=
"MyEditForm"
>
<el-row>
<el-col
:span=
"24"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"无效说明"
>
<el-input
type=
"textarea"
placeholder=
"无效说明"
v-model=
"saveMsg.Remark"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"SaveInvalid()"
>
确 定
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"dialogTableVisible = false"
>
关 闭
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
export
default
{
props
:
{
guestInfo
:
{
type
:
Object
,
default
:
null
,
},
},
data
()
{
return
{
dialogTableVisible
:
false
,
saveMsg
:
{
CustomerId
:
0
,
GueustId
:
0
,
Remark
:
""
}
};
},
mounted
()
{
console
.
log
(
"this.guestInfo"
,
this
.
guestInfo
);
let
$this
=
this
;
setTimeout
(()
=>
{
$this
.
dialogTableVisible
=
true
;
},
50
);
},
methods
:
{
closedDialog
()
{
this
.
MsgBus
.
$emit
(
"closeCustomerDialogBox"
);
},
//保存无效线索
SaveInvalid
()
{
},
},
};
</
script
>
\ No newline at end of file
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