Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
chart-web
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
JIRA
JIRA
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
zhangzhaowei
chart-web
Commits
341d2ade
Commit
341d2ade
authored
Jun 05, 2019
by
looker
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add some goods fe
parent
c5850fef
Changes
30
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
912 additions
and
413 deletions
+912
-413
dist.zip
dist.zip
+0
-0
chatlist.vue
src/components/chatlist/chatlist.vue
+12
-12
message.vue
src/components/message/message.vue
+3
-4
mycard.vue
src/components/mycard/mycard.vue
+9
-6
text.vue
src/components/text/text.vue
+38
-6
chat.vue
src/page/main/chat/chat.vue
+5
-2
index.vue
src/page/main/index.vue
+3
-2
index.vue
src/page/main/right-panel/baozheng/comparison-map/index.vue
+6
-0
cus-info.vue
src/page/main/right-panel/baozheng/cus-service/cus-info.vue
+33
-11
index.vue
src/page/main/right-panel/baozheng/cus-service/index.vue
+105
-11
index.vue
src/page/main/right-panel/baozheng/cus-users/index.vue
+141
-20
index.vue
src/page/main/right-panel/baozheng/doutu-picture/index.vue
+81
-9
index.vue
src/page/main/right-panel/baozheng/index.vue
+59
-34
index.vue
src/page/main/right-panel/baozheng/takel-script/index.vue
+155
-10
index.vue
src/page/main/right-panel/chenzheng/comparison-map/index.vue
+0
-6
index.vue
src/page/main/right-panel/chenzheng/cus-users/index.vue
+13
-63
index.vue
src/page/main/right-panel/chenzheng/index.vue
+5
-14
index.vue
src/page/main/right-panel/chenzheng/takel-script/index.vue
+6
-49
index.vue
src/page/main/right-panel/index.vue
+10
-9
api.js
src/service/api.js
+14
-12
baozheng.js
src/service/baozheng.js
+104
-0
chenzhen.js
src/service/chenzhen.js
+0
-85
index.js
src/service/index.js
+2
-2
getters.js
src/store/getters.js
+10
-1
index.js
src/store/index.js
+2
-2
baozheng.js
src/store/modules/baozheng.js
+61
-26
user.js
src/store/modules/user.js
+17
-15
auth.js
src/utils/auth.js
+2
-2
baozhengRequest.js
src/utils/baozhengRequest.js
+8
-0
request.js
src/utils/request.js
+8
-0
No files found.
dist.zip
View file @
341d2ade
No preview for this file type
src/components/chatlist/chatlist.vue
View file @
341d2ade
...
@@ -2,13 +2,13 @@
...
@@ -2,13 +2,13 @@
<
template
>
<
template
>
<div
class=
"msglist"
>
<div
class=
"msglist"
>
<ul>
<ul>
<!--
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
-->
<li
v-if=
"chartings.length==0"
class=
"modonghua"
></li>
<li
v-for=
"item in chartings"
class=
"sessionlist"
:class=
"
{ active: item.id === user.selectId }" @click="selectSession(item)">
<li
v-for=
"item in chartings"
class=
"sessionlist"
:class=
"
{ active: item.id === user.selectId }" @click="selectSession(item)">
<div
class=
"list-left"
>
<div
class=
"list-left"
>
<img
class=
"avatar"
width=
"42"
height=
"42"
:alt=
"item.user.name"
:src=
"item.user.img||'static/images/weixin.jpg'"
>
<img
class=
"avatar"
width=
"42"
height=
"42"
:alt=
"item.user.name"
:src=
"item.user.img||'static/images/weixin.jpg'"
>
...
@@ -57,15 +57,15 @@ export default {
...
@@ -57,15 +57,15 @@ export default {
// obj&&this.selectSession(obj)
// obj&&this.selectSession(obj)
},
},
watch
:{
watch
:{
chartings
(
val
){
//
chartings(val){
if
(
this
.
fd
){
//
if(this.fd){
this
.
fd
=
false
//
this.fd = false
if
(
val
.
lenght
!=
0
){
//
if(val.lenght!=0){
let
obj
=
val
[
0
]
//
let obj = val[0]
this
.
selectSession
(
obj
)
//
this.selectSession(obj)
}
//
}
}
//
}
}
//
}
},
},
filters
:
{
filters
:
{
time
(
date
)
{
time
(
date
)
{
...
@@ -118,7 +118,7 @@ export default {
...
@@ -118,7 +118,7 @@ export default {
left: 35px;
left: 35px;
}
}
.msglist
.msglist
height:
740px
height:
calc(100% - 60px)
overflow-y: auto
overflow-y: auto
.sessionlist
.sessionlist
display: flex
display: flex
...
...
src/components/message/message.vue
View file @
341d2ade
<
template
>
<
template
>
<div>
<div
style=
"height: calc(100% - 150px)"
>
<div
class=
"message"
>
<div
class=
"message"
>
<header
class=
"header"
>
<header
class=
"header"
>
<div
class=
"friendname"
>
{{
selectedChat
&&
(
selectedChat
.
user
.
conRemark
?
selectedChat
.
user
.
remark
+
'---'
+
selectedChat
.
user
.
conRemark
:
selectedChat
.
user
.
remark
+
'---'
+
selectedChat
.
user
.
name
)
}}
</div>
<div
class=
"friendname"
>
{{
selectedChat
&&
(
selectedChat
.
user
.
conRemark
?
selectedChat
.
user
.
remark
+
'---'
+
selectedChat
.
user
.
conRemark
:
selectedChat
.
user
.
remark
+
'---'
+
selectedChat
.
user
.
name
)
}}
</div>
...
@@ -167,7 +167,7 @@ export default {
...
@@ -167,7 +167,7 @@ export default {
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
.message
.message
width: 100%
width: 100%
height:
650px
height:
100%
.header
.header
height: 60px
height: 60px
padding: 28px 0 0 30px
padding: 28px 0 0 30px
...
@@ -176,8 +176,7 @@ export default {
...
@@ -176,8 +176,7 @@ export default {
.friendname
.friendname
font-size: 18px
font-size: 18px
.message-wrapper
.message-wrapper
min-height: 590px
height:calc(100% - 60px)
max-height: 590px
padding: 10px 15px
padding: 10px 15px
box-sizing: border-box
box-sizing: border-box
overflow-y: auto
overflow-y: auto
...
...
src/components/mycard/mycard.vue
View file @
341d2ade
...
@@ -26,17 +26,18 @@
...
@@ -26,17 +26,18 @@
</div>
</div>
<footer>
<footer>
<i
class=
"icon iconfont icon-more"
@
click=
"accountFlag=!accountFlag"
></i>
<i
class=
"icon iconfont icon-more"
@
click=
"accountFlag=!accountFlag"
></i>
</footer>
<div
v-if=
"accountFlag"
style=
"width: 100%;height: 100%;position: fixed; top: 0;right: 0;"
@
click=
"accountFlag=!accountFlag"
></div>
<div
v-if=
"accountFlag"
style=
"width: 100%;height: 100%;position: fixed; top: 0;right: 0;"
@
click=
"accountFlag=!accountFlag"
></div>
<div
class=
"tool-panel"
style=
"position:relative;
bottom:-550px;
"
v-if=
"accountFlag"
>
<div
class=
"tool-panel"
style=
"position:relative;"
v-if=
"accountFlag"
>
<div
@
click=
"logout"
><span
class=
"sdsd"
>
切换账号
</span></div>
<div
@
click=
"logout"
><span
class=
"sdsd"
>
切换账号
</span></div>
<div
@
click=
"logout"
><span
class=
"sdsd"
>
退出登录
</span></div>
<div
@
click=
"logout"
><span
class=
"sdsd"
>
退出登录
</span></div>
</div>
</div>
</footer>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
}
from
'vuex'
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -47,6 +48,9 @@ export default {
...
@@ -47,6 +48,9 @@ export default {
computed
:
{
computed
:
{
...
mapState
([
...
mapState
([
'user'
,
'user'
,
]),
...
mapGetters
([
'selectId'
,
])
])
},
},
methods
:
{
methods
:
{
...
@@ -125,7 +129,6 @@ export default {
...
@@ -125,7 +129,6 @@ export default {
}
}
.tool-panel
.tool-panel
position:relative;
position:relative;
bottom:-600px;
height:80px;
height:80px;
width:120px;
width:120px;
right:-60px;
right:-60px;
...
...
src/components/text/text.vue
View file @
341d2ade
<!-- 文本输入框 -->
<!-- 文本输入框 -->
<
template
>
<
template
>
<div
class=
"text"
>
<div>
<div
v-if=
"selectId==0"
>
</div>
<div
class=
"text"
v-if=
"selectId!=0"
>
<div
class=
"emoji"
>
<div
class=
"emoji"
>
<div
v-if=
"accountFlag"
style=
"width: 100%;height: 100%;position: fixed;top: 0;right: 0;"
@
click=
"clonese"
></div>
<div
v-if=
"accountFlag"
style=
"width: 100%;height: 100%;position: fixed;top: 0;right: 0;"
@
click=
"clonese"
></div>
<img
src=
"static/icon-img/xiaolian.png"
class=
"icon-img"
align=
"absmiddle"
@
click=
"showBafg"
>
<img
src=
"static/icon-img/xiaolian.png"
class=
"icon-img"
align=
"absmiddle"
@
click=
"showBafg"
>
...
@@ -18,8 +22,8 @@
...
@@ -18,8 +22,8 @@
</el-upload>
</el-upload>
</div>
</div>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/link.png"
alt=
""
>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/link.png"
alt=
""
@
click=
"seandLink"
>
<
img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/tag.png"
alt=
""
>
<
!--
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/tag.png"
alt=
""
>
--
>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/retweet.png"
alt=
""
@
click=
"transfer"
>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/retweet.png"
alt=
""
@
click=
"transfer"
>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/poweroff.png"
alt=
""
@
click=
"closeSession"
>
<img
class=
"icon-img"
align=
"absmiddle"
src=
"static/icon-img/poweroff.png"
alt=
""
@
click=
"closeSession"
>
<transition
name=
"showbox"
>
<transition
name=
"showbox"
>
...
@@ -42,6 +46,7 @@
...
@@ -42,6 +46,7 @@
<el-dialog
<el-dialog
title=
"选择转接对象"
title=
"选择转接对象"
:visible
.
sync=
"dialogVisible"
:visible
.
sync=
"dialogVisible"
:modal-append-to-body=
"false"
width=
"30%"
width=
"30%"
>
>
<div>
<div>
...
@@ -65,6 +70,7 @@
...
@@ -65,6 +70,7 @@
</span>
</span>
</el-dialog>
</el-dialog>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -79,6 +85,7 @@ export default {
...
@@ -79,6 +85,7 @@ export default {
sendType
:
1
,
sendType
:
1
,
upLoadImgUrl
:
apiUrl
.
upLoadImg
,
upLoadImgUrl
:
apiUrl
.
upLoadImg
,
imageUrl
:
''
,
imageUrl
:
''
,
accountFlag
:
false
,
warn
:
false
,
warn
:
false
,
showEmoji
:
false
,
showEmoji
:
false
,
dialogVisible
:
false
,
dialogVisible
:
false
,
...
@@ -93,6 +100,8 @@ export default {
...
@@ -93,6 +100,8 @@ export default {
]),
]),
...
mapGetters
([
...
mapGetters
([
'selectedChat'
,
'selectedChat'
,
'selectId'
,
'sendContent'
])
])
},
},
methods
:
{
methods
:
{
...
@@ -197,8 +206,8 @@ export default {
...
@@ -197,8 +206,8 @@ export default {
that
.
tempList
=
tempList
that
.
tempList
=
tempList
this
.
dialogVisible
=
true
this
.
dialogVisible
=
true
}).
catch
((
data
)
=>
{
}).
catch
((
data
)
=>
{
that
.
tempList
=
[]
//
that.tempList=[]
this
.
dialogVisible
=
false
//
this.dialogVisible = false
})
})
},
},
onKeyup
(
e
)
{
onKeyup
(
e
)
{
...
@@ -244,10 +253,28 @@ export default {
...
@@ -244,10 +253,28 @@ export default {
this
.
content
=
''
this
.
content
=
''
this
.
sendType
=
1
this
.
sendType
=
1
}
}
},
seandLink
()
{
let
temp
=
this
this
.
$prompt
(
'请输入图片链接'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
inputPattern
:
/^
([
hH
][
tT
]{2}[
pP
]
:
\/\/
|
[
hH
][
tT
]{2}[
pP
][
sS
]
:
\/\/)(([
A-Za-z0-9-~
]
+
)
.
)
+
([
A-Za-z0-9-~
\/])
+$/
,
inputErrorMessage
:
'链接格式不正确'
}).
then
(({
value
})
=>
{
var
msg
=
{
id
:
temp
.
user
.
selectId
,
type
:
3
,
content
:
temp
.
content
,
imageUrl
:
value
}
temp
.
$store
.
dispatch
(
'user/sendMessage'
,
msg
)
}).
catch
(()
=>
{
});
}
}
},
},
mounted
()
{
mounted
()
{
this
.
$refs
.
text
.
focus
()
this
.
$refs
.
text
&&
this
.
$refs
.
text
.
focus
()
},
},
watch
:
{
watch
:
{
selectId
()
{
selectId
()
{
...
@@ -265,6 +292,11 @@ export default {
...
@@ -265,6 +292,11 @@ export default {
},
1000
)
},
1000
)
}
}
}
}
},
sendContent
(
val
){
console
.
log
(
7777777777777777777
)
this
.
content
=
val
}
}
}
}
}
}
...
...
src/page/main/chat/chat.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"content"
>
<div
class=
"content"
>
<div
class=
"msglist"
>
<div
class=
"msglist
e
"
>
<search></search>
<search></search>
<chatlist></chatlist>
<chatlist></chatlist>
</div>
</div>
...
@@ -30,9 +30,12 @@ export default {
...
@@ -30,9 +30,12 @@ export default {
.content
.content
display: flex
display: flex
width: 800px
width: 800px
.msglist
height:calc(100%);
.msgliste
height:calc(100%);
width: 250px
width: 250px
background: rgb(230,230,230)
background: rgb(230,230,230)
.chatbox
.chatbox
height:100%;
flex: 1
flex: 1
</
style
>
</
style
>
src/page/main/index.vue
View file @
341d2ade
...
@@ -34,10 +34,10 @@ export default {
...
@@ -34,10 +34,10 @@ export default {
#app-main
#app-main
display: flex
display: flex
position: fixed;
position: fixed;
top:
calc(50% - 400px)
top:
5%
left: calc(50% - 630px)
left: calc(50% - 630px)
width: 1260px
width: 1260px
height:
800px
height:
90%
background-color: #fff
background-color: #fff
.sidebar
.sidebar
width: 60px
width: 60px
...
@@ -49,6 +49,7 @@ export default {
...
@@ -49,6 +49,7 @@ export default {
background: #f2f2f2
background: #f2f2f2
.tarbar
.tarbar
flex: 2
flex: 2
border-left: 1px solid #e7e7e7;
width:00px;
width:00px;
height: 100%
height: 100%
</
style
>
</
style
>
src/page/main/right-panel/baozheng/comparison-map/index.vue
View file @
341d2ade
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
,
mapState
,
mapActions
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -19,6 +20,11 @@ export default{
...
@@ -19,6 +20,11 @@ export default{
},
},
components
:
{
components
:
{
},
},
methods
:
{
...
mapActions
(
'user'
,[
'selectSession'
,
])
},
methods
:
{
methods
:
{
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
...
...
src/page/main/right-panel/baozheng/cus-service/cus-info.vue
View file @
341d2ade
...
@@ -7,44 +7,49 @@
...
@@ -7,44 +7,49 @@
<div
class=
"box-body"
>
<div
class=
"box-body"
>
<div>
<div>
<span>
顾客ID:
</span>
<span>
顾客ID:
</span>
<span>
107507
</span>
<span>
{{
customerInfo
.
id
}}
</span>
<el-button
type=
"success"
size=
"mini"
>
修改
</el-button>
<el-button
type=
"success"
size=
"mini"
@
click=
"fdsfsdf"
>
修改
</el-button>
</div>
</div>
<div>
<div>
<span>
系统顾客名称:
</span>
<span>
系统顾客名称:
</span>
<span>
毛毛 13434343434
</span>
<span
style=
"width: 90px;overflow:hidden;display: inline-block;text-overflow:ellipsis;white-space:nowrap"
>
{{
customerInfo
.
customerName
}}
</span>
<el-button
type=
"success"
size=
"mini"
>
新建预约单
</el-button>
<!--
<el-button
type=
"success"
size=
"mini"
>
新建预约单
</el-button>
-->
</div>
<div>
<span>
联系方式:
</span>
<span>
{{
customerInfo
.
mobile
}}
</span>
</div>
</div>
<div>
<div>
<span>
来源:
</span>
<span>
来源:
</span>
<span>
清仓自增长
</span>
<span>
{{
customerInfo
.
customerSourceValue
}}
</span>
</div>
</div>
<div>
<div>
<span>
余额:
</span>
<span>
余额:
</span>
<span>
25.0
</span>
<span>
{{
customerInfo
.
balance
}}
</span>
<
el-button
type=
"info"
size=
"mini"
>
发送充值链接
</el-button
>
<
!--
<el-button
type=
"info"
size=
"mini"
>
发送充值链接
</el-button>
--
>
</div>
</div>
<div>
<div>
<span>
6天内预约单数据:
</span>
<span>
6天内预约单数据:
</span>
<span>
2
</span>
<span>
{{
customerInfo
.
sixDayBookingsCount
}}
</span>
</div>
</div>
<div>
<div>
<span>
6天前预约单数据:
</span>
<span>
6天前预约单数据:
</span>
<span>
2
</span>
<span>
{{
customerInfo
.
beforeSixDayBookingsCount
}}
</span>
</div>
</div>
<div>
<div>
<span>
历史订单:
</span>
<span>
历史订单:
</span>
<span>
2
</span>
<span>
{{
customerInfo
.
historyGoodsCount
}}
</span>
</div>
</div>
<div>
<div>
<span>
返工:
</span>
<span>
返工:
</span>
<span>
2
</span>
<span>
{{
customerInfo
.
reworkGoodsCount
}}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</el-card>
</el-card>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -69,9 +74,26 @@ export default{
...
@@ -69,9 +74,26 @@ export default{
]
]
}
}
},
},
computed
:
{
...
mapState
([
'selectId'
,
'user'
,
'baozheng'
]),
...
mapGetters
([
'customerInfo'
,
])
},
components
:
{
components
:
{
},
},
methods
:
{
methods
:
{
...
mapActions
(
'baozheng'
,[
'changeCustomerInfo'
]),
fdsfsdf
(){
this
.
changeCustomerInfo
(
null
)
},
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
...
...
src/page/main/right-panel/baozheng/cus-service/index.vue
View file @
341d2ade
...
@@ -11,8 +11,53 @@
...
@@ -11,8 +11,53 @@
</div>
</div>
</div>
</div>
</el-card>
</el-card>
<cus-info></cus-info>
<div
v-if=
"customerInfo==null"
>
<el-card
class=
"box-card"
>
<div
style=
"margin:30px 0 ; font-weight: 800"
>
绑定客户信息
</div>
<div
style=
"margin:30px 0 ;"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"16"
>
<div
class=
"grid-content bg-purple"
>
<el-input
v-model=
"speechContext"
placeholder=
"请输入内容"
>
</el-input>
</div>
</el-col>
<el-col
:span=
"8"
><div
class=
"grid-content bg-purple"
><el-button
type=
"primary"
@
click=
"goSearch"
>
搜索
</el-button></div>
</el-col>
</el-row>
</div>
</div>
<div
style=
"width: 100%;"
v-if=
"customerInfo==null"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table-column
prop=
"customerName"
label=
"姓名"
width=
"80"
>
</el-table-column>
<el-table-column
prop=
"mobile"
label=
"手机号"
width=
"130"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<template
slot-scope=
"scope"
>
<el-button
@
click
.
native
.
prevent=
"bindUser(scope, tableData)"
type=
"text"
size=
"small"
>
绑定
</el-button>
</
template
>
</el-table-column>
</el-table>
</div>
<cus-info
v-if=
"customerInfo!=null"
></cus-info>
<!-- <el-card class="box-card">
<div slot="header" class="clearfix">
<div slot="header" class="clearfix">
<span>售前咨询</span>
<span>售前咨询</span>
</div>
</div>
...
@@ -20,42 +65,91 @@
...
@@ -20,42 +65,91 @@
<el-button>新粉咨询</el-button>
<el-button>新粉咨询</el-button>
<el-button type="success">日常咨询</el-button>
<el-button type="success">日常咨询</el-button>
</div>
</div>
</el-card>
</el-card> -->
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
cusInfo
from
'./cus-info'
import
cusInfo
from
'./cus-info'
import
{
mapGetters
,
mapState
,
mapActions
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
centerDialogVisible
:
false
,
speechContext
:
'13906025858'
,
activeName
:
'second'
,
activeName
:
'second'
,
baseInfo
:[
baseInfo
:[
{
{
label
:
'微信昵称'
,
label
:
'微信昵称'
,
value
:
'
李元霸
'
value
:
'
无
'
},
},
{
{
label
:
'微信号'
,
label
:
'微信号'
,
value
:
'
李元霸
'
value
:
'
无
'
},
},
{
{
label
:
'微信备注'
,
label
:
'微信备注'
,
value
:
'
李元霸
'
value
:
'
无
'
},
},
{
],
label
:
'来源'
,
tableData
:
[],
value
:
'李元霸'
hasCustemer
:
true
,
}
]
}
}
},
},
components
:
{
components
:
{
cusInfo
cusInfo
},
},
computed
:
{
...
mapState
([
'selectId'
,
'user'
,
'baozheng'
]),
...
mapGetters
([
'selectedChat'
,
'customerInfo'
])
},
mounted
()
{
this
.
$refs
.
text
&&
this
.
$refs
.
text
.
focus
()
this
.
setCustomerInfo
()
},
watch
:{
selectedChat
(
val
){
this
.
baseInfo
[
0
].
value
=
val
.
user
.
name
this
.
baseInfo
[
1
].
value
=
val
.
user
.
username
this
.
baseInfo
[
2
].
value
=
val
.
user
.
conRemark
this
.
setCustomerInfo
()
console
.
log
(
333
)
}
},
methods
:
{
methods
:
{
...
mapActions
(
'baozheng'
,[
'setCustomerInfo'
,
'findByMobile'
,
'bindChatUser'
]),
goSearch
(){
let
mobile
=
this
.
speechContext
this
.
findByMobile
({
mobile
}).
then
((
data
)
=>
{
console
.
log
(
'---------'
)
console
.
log
(
data
)
this
.
tableData
=
[
data
]
})
},
bindUser
(
val
){
let
customerId
=
val
.
row
.
id
this
.
bindChatUser
({
customerId
}).
then
((
data
)
=>
{
this
.
setCustomerInfo
()
})
},
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
},
addUser
(){
this
.
centerDialogVisible
=
true
}
}
}
}
}
}
...
...
src/page/main/right-panel/baozheng/cus-users/index.vue
View file @
341d2ade
...
@@ -8,12 +8,24 @@
...
@@ -8,12 +8,24 @@
<span
v-if=
"index!=0"
style=
"color: #007dfd"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index!=0"
style=
"color: #007dfd"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index==0"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index==0"
>
{{
ite
.
value
}}
</span>
</div>
</div>
<el-card
class=
"box-card"
v-for=
"(itey) in item.dataPanel"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
itey
.
title
}}
</span>
</div>
<div
style=
"margin-bottom:20px; "
v-for=
"(itet,o) in itey.dataItem"
:key=
"o"
class=
"text item"
>
<div
v-for=
"(it,o) in itet"
>
<span>
{{
it
.
label
}}
:
</span>
<span>
{{
it
.
value
}}
</span>
</div>
</div>
</el-card>
</el-collapse-item>
</el-collapse-item>
</el-collapse>
</el-collapse>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -22,29 +34,35 @@ export default{
...
@@ -22,29 +34,35 @@ export default{
{
{
title
:
'个人统计'
,
title
:
'个人统计'
,
numItem
:[
numItem
:[
{
// {
label
:
'今日接入量'
,
// label:'今日接入量',
value
:
54
// id:'todayGoods',
},
// value:'加载中。。。'
// },
{
{
label
:
'今日预约量'
,
label
:
'今日预约量'
,
value
:
54
id
:
'todayBookings'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'今日开单量'
,
label
:
'今天预约单量'
,
value
:
54
id
:
'todayBookings'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'本月开单量'
,
label
:
'本月预约单量'
,
value
:
54
id
:
'monthBookings'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'6日内预约单未转正'
,
label
:
'6日内预约单未转正'
,
value
:
54
id
:
'sixDayBookingsUnOpen'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'6日外预约单未转正'
,
label
:
'6日前预约单未转正'
,
value
:
54
id
:
'beforeSixDayBookingsUnOpen'
,
value
:
'加载中。。。'
}
}
]
]
},
},
...
@@ -53,19 +71,23 @@ export default{
...
@@ -53,19 +71,23 @@ export default{
numItem
:[
numItem
:[
{
{
label
:
'诊断方案未发送'
,
label
:
'诊断方案未发送'
,
value
:
54
id
:
'diagnosisUnSend'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'诊断方案未确认'
,
label
:
'诊断方案未确认'
,
value
:
54
id
:
'diagnosisUnConfirm'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未发送'
,
label
:
'效果方案未发送'
,
value
:
54
id
:
'effectsUnSend'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未确认'
,
label
:
'效果方案未确认'
,
value
:
54
id
:
'effectsUnConfirm'
,
value
:
'加载中。。。'
}
}
]
]
},
},
...
@@ -74,31 +96,130 @@ export default{
...
@@ -74,31 +96,130 @@ export default{
numItem
:[
numItem
:[
{
{
label
:
'诊断方案未发送'
,
label
:
'诊断方案未发送'
,
value
:
54
id
:
'diagnosisUnSend'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'诊断方案未确认'
,
label
:
'诊断方案未确认'
,
value
:
54
id
:
'diagnosisUnConfirm'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未发送'
,
label
:
'效果方案未发送'
,
value
:
54
id
:
'effectsUnSend'
,
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未确认'
,
label
:
'效果方案未确认'
,
value
:
54
id
:
'effectsUnConfirm'
,
value
:
'加载中。。。'
}
}
]
]
}
}
]
]
}
}
},
},
computed
:
{
...
mapGetters
([
'witchPanel'
,
'selectedChat'
])
},
mounted
()
{
this
.
aiyowei
()
},
components
:
{
components
:
{
},
},
methods
:
{
methods
:
{
...
mapActions
(
'baozheng'
,[
'getPersonStatistics'
,
'personTodo'
,
'teamTodo'
,
]),
aiyowei
(){
this
.
getPersonStatistics
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
0
].
numItem
){
if
(
qs
[
0
].
numItem
[
q
].
id
==
o
){
qs
[
0
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
})
this
.
personTodo
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
1
].
numItem
){
if
(
qs
[
1
].
numItem
[
q
].
id
==
o
){
qs
[
1
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
this
.
teamTodo
().
then
((
data
)
=>
{
console
.
log
(
data
)
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
2
].
numItem
){
if
(
qs
[
2
].
numItem
[
q
].
id
==
o
){
qs
[
2
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
},
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
},
watch
:{
selectedChat
(){
this
.
aiyowei
()
},
witchPanel
(
val
){
if
(
val
==
'second'
){
this
.
getPersonStatistics
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
0
].
numItem
){
if
(
qs
[
0
].
numItem
[
q
].
id
==
o
){
qs
[
0
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
})
this
.
personTodo
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
1
].
numItem
){
if
(
qs
[
1
].
numItem
[
q
].
id
==
o
){
qs
[
1
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
this
.
teamTodo
().
then
((
data
)
=>
{
console
.
log
(
data
)
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
2
].
numItem
){
if
(
qs
[
2
].
numItem
[
q
].
id
==
o
){
qs
[
2
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
}
}
}
}
}
}
</
script
>
</
script
>
...
...
src/page/main/right-panel/baozheng/doutu-picture/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div
class=
"tabs-body"
>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
<el-row
:gutter=
"20"
>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
<el-col
:span=
"16"
>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
<div
class=
"grid-content bg-purple"
>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
<el-input
v-model=
"speechContext"
placeholder=
"请输入内容"
>
</el-input>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/><img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
</div>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
</el-col>
<img
width=
"95px"
src=
"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg"
alt=
""
/>
<el-col
:span=
"8"
><div
class=
"grid-content bg-purple"
><el-button
type=
"primary"
@
click=
"goSearch"
>
搜索
</el-button></div>
</el-col>
</el-row>
<div
style=
"margin-top: 50px;height:600px;overflow: auto;"
>
<img
v-for=
"item in pics.result"
width=
"95px"
@
click=
"seadPic(item)"
:src=
"item.imageUrlValue.split('?')[0]"
alt=
""
/>
</div>
</div>
<el-pagination
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
:page-size=
"20"
layout=
"total,prev, pager, next"
:total=
"total"
>
</el-pagination>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
activeName
:
'second'
,
activeName
:
'second'
,
speechContext
:
""
,
currentPage
:
100
,
total
:
10
,
page
:
1
,
pics
:[]
}
}
},
},
components
:
{
components
:
{
},
},
computed
:
{
...
mapState
([
'user'
,
]),
},
mounted
()
{
this
.
goSearch
()
},
methods
:
{
methods
:
{
...
mapActions
(
'baozheng'
,[
'searchBiaoqingbao'
,
]),
handleSizeChange
(
val
)
{
console
.
log
(
`每页
${
val
}
条`
);
},
handleCurrentChange
(
val
)
{
this
.
page
=
val
this
.
diomng
()
console
.
log
(
`当前页:
${
val
}
`
);
},
goSearch
(){
this
.
page
=
1
this
.
diomng
()
},
diomng
(){
let
parm
=
{}
parm
.
imageKey
=
this
.
speechContext
parm
.
company
=
20
parm
.
page
=
this
.
page
parm
.
rows
=
20
this
.
searchBiaoqingbao
(
parm
).
then
((
data
)
=>
{
this
.
pics
=
data
this
.
total
=
data
.
total
})
},
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
},
seadPic
(
val
){
this
.
$alert
(
`
<img src="
${
val
.
imageUrlValue
.
split
(
'?'
)[
0
]}
" style="widht:300px;height:300px;" alt="" />`
,
'确认发送!'
,
{
dangerouslyUseHTMLString
:
true
,
cancelButtonText
:
'取消'
,
confirmButtonText
:
'确定'
,
}).
then
(()
=>
{
var
msg
=
{
id
:
this
.
user
.
selectId
,
type
:
3
,
content
:
''
,
imageUrl
:
val
.
imageUrlValue
.
split
(
'?'
)[
0
]
}
}
this
.
$store
.
dispatch
(
'user/sendMessage'
,
msg
)
});
}
}
},
}
}
</
script
>
</
script
>
...
...
src/page/main/right-panel/baozheng/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div>
<div
v-if=
"selectId==0"
>
<h5
style=
"text-align: center;margin-top: 100px;"
>
请选择列表进行会话!
</h5>
</div>
<div
class=
"tabs-body"
v-if=
"selectId!=0"
>
<el-tabs
type=
"border-card"
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tabs
type=
"border-card"
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"顾客"
name=
"first
"
>
<el-tab-pane
label=
"看板"
name=
"second"
@
tab-click=
"handleClick
"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<cuss-service></cuss-service
>
<cus-users></cus-users
>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"看板"
name=
"second
"
>
<el-tab-pane
label=
"顾客"
name=
"first
"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<cus-users></cus-users
>
<cuss-service></cuss-service
>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"话术"
name=
"third
"
>
<el-tab-pane
label=
"话术"
name=
"script
"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<takel-script></takel-script>
<takel-script></takel-script>
</div>
</div>
...
@@ -21,17 +25,19 @@
...
@@ -21,17 +25,19 @@
<doutu-picture></doutu-picture>
<doutu-picture></doutu-picture>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"对比图"
name=
"fivth"
>
<
!--
<
el-tab-pane
label=
"对比图"
name=
"fivth"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<compre-picture></compre-picture>
<compre-picture></compre-picture>
</div>
</div>
</el-tab-pane
>
</el-tab-pane>
--
>
<el-tab-pane
label=
"其他"
name=
"sixth"
><div
class=
"tool-body"
>
用户管理
</div></el-tab-pane>
<el-tab-pane
label=
"其他"
name=
"sixth"
><div
class=
"tool-body"
>
暂时未开放此功能!
</div></el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
,
mapState
,
mapActions
}
from
'vuex'
import
cussService
from
'./cus-service'
import
cussService
from
'./cus-service'
import
cusUsers
from
'./cus-users'
import
cusUsers
from
'./cus-users'
import
takelScript
from
'./takel-script'
import
takelScript
from
'./takel-script'
...
@@ -54,21 +60,40 @@ export default{
...
@@ -54,21 +60,40 @@ export default{
comprePicture
,
comprePicture
,
labelUserList
labelUserList
},
},
computed
:
{
...
mapGetters
([
'selectedChat'
,
'selectId'
])
},
mounted
()
{
},
methods
:
{
methods
:
{
handleClick
(){
handleClick
(
e
){
console
.
log
(
43434
)
this
.
changePanel
(
e
.
name
)
if
(
'second'
==
e
.
name
){
}
}
console
.
log
(
e
.
name
)
console
.
log
(
43434
)
},
...
mapActions
(
'baozheng'
,[
'changePanel'
,
]),
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
.tabs-body
.tabs-body
height:
800px
;
height:
100%
;
width:100%;
width:100%;
overflow-y: auto;
overflow-x: hidden;
.tool-body
.tool-body
width:100%;
width:100%;
height:729px;
overflow-y: auto;
overflow-y: auto;
overflow-x: hidden;
overflow-x: hidden;
height:clac(100% - 70px);
overflow-y: auto;
</
style
>
</
style
>
\ No newline at end of file
src/page/main/right-panel/baozheng/takel-script/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div
class=
"tabs-body"
>
<el-input
v-model=
"input"
placeholder=
"请输入内容"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"16"
>
<div
class=
"grid-content bg-purple"
>
<el-input
v-model=
"speechContext"
placeholder=
"请输入内容"
>
</el-input>
</el-input>
<i
class=
"el-icon-search"
style=
"position:relative;top: -30px;right: -380px;"
></i>
<div
class=
"huashu-type"
>
<el-button
v-for=
"item in buttons"
>
{{
item
}}
</el-button>
</div>
</div>
</el-col>
<el-col
:span=
"8"
><div
class=
"grid-content bg-purple"
><el-button
type=
"primary"
@
click=
"search"
>
搜索
</el-button></div>
</el-col>
</el-row>
<div
class=
"panelk"
>
<h1
>
推送服务号
</h1>
<el-button
type=
"success"
@
click=
"sendCode"
>
推送服务号二维码
</el-button>
</div>
<div
class=
"panelk"
>
<h1
>
分类
</h1>
<div>
<div>
<el-card
class=
"box-card"
>
<div>
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
<el-tag
type=
"info"
v-for=
"item in catigary"
>
<span
v-if=
"item.speechSortId==tempCatygary"
@
click=
"chioseTag(item)"
style=
"cursor: pointer;color:#67c23a"
>
{{
item
.
speechSortName
}}
</span>
<span
v-if=
"item.speechSortId!=tempCatygary"
@
click=
"chioseTag(item)"
style=
"cursor: pointer;"
>
{{
item
.
speechSortName
}}
</span>
</el-tag>
</div>
</div>
</div>
<div
class=
"panelk"
>
<h1
>
标签
</h1>
<div>
<div>
<el-tag
type=
"success"
v-for=
"item in tags"
><span
@
click=
"searchCotent(item)"
style=
"cursor: pointer;"
>
{{
item
.
speechLabelName
}}
</span></el-tag>
</div>
</div>
</div>
<div
class=
"panelk cvds"
ref=
"list"
>
<h1>
内容
</h1>
<el-card
class=
"box-card"
v-for=
"item in contents.result"
>
<span
@
click=
"sead(item)"
>
{{
item
.
speechContext
}}
</span>
</el-card>
</el-card>
<el-card
class=
"box-card"
>
<
!--
<
el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
卡片名称
</span>
<span>
卡片名称
</span>
</div>
</div>
<div>
<div>
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
</div>
</div>
</el-card>
</el-card>
-->
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
activeName
:
'second'
,
activeName
:
'second'
,
input
:
'gregreg'
,
input
:
'gregreg'
,
tempCatygary
:
''
,
speechLabelId
:
""
,
speechContext
:
''
,
contents
:{
result
:[]
},
page
:
1
,
rows
:
5
,
tags
:[],
catigary
:[],
buttons
:[
buttons
:[
'全部'
,
'全部'
,
'回访调查'
'回访调查'
...
@@ -36,7 +76,95 @@ export default{
...
@@ -36,7 +76,95 @@ export default{
},
},
components
:
{
components
:
{
},
},
computed
:
{
...
mapState
([
'selectId'
,
'user'
]),
...
mapGetters
([
'selectedChat'
,
'witchPanel'
])
},
mounted
()
{
let
temp
=
this
console
.
log
(
this
.
$refs
)
this
.
$refs
.
list
.
onscroll
=
function
()
{
console
.
log
(
this
.
scrollHeight
)
if
(
this
.
scrollTop
==
(
this
.
scrollHeight
-
400
)){
temp
.
page
++
temp
.
queryContent
()
}
}
},
watch
:{
witchPanel
(
val
){
if
(
'script'
==
val
){
this
.
getScriptCatgary
({
company
:
20
}).
then
((
data
)
=>
{
this
.
catigary
=
data
})
}
}
},
methods
:
{
methods
:
{
...
mapActions
(
'baozheng'
,[
'speechSort'
,
'getScriptCatgary'
,
'changeContent'
,
'getScriptTags'
,
]),
chioseTag
(
val
){
console
.
log
(
43434
)
this
.
tempCatygary
=
val
.
speechSortId
let
parm
=
{
speechSortId
:
val
.
speechSortId
,
company
:
20
}
this
.
getScriptTags
(
parm
).
then
((
data
)
=>
{
this
.
tags
=
data
})
},
searchCotent
(
val
){
val
&&
(
this
.
speechLabelId
=
val
.
speechLabelId
)
val
&&
(
this
.
contents
.
result
=
[])
val
&&
(
this
.
page
=
1
)
let
parm
=
{
company
:
20
}
parm
.
speechContext
=
this
.
speechContext
parm
.
speechLabelId
=
this
.
speechLabelId
parm
.
speechSortId
=
this
.
tempCatygary
parm
.
page
=
this
.
page
parm
.
rows
=
this
.
rows
this
.
speechSort
(
parm
).
then
((
data
)
=>
{
if
(
this
.
contents
.
result
.
length
!=
0
){
this
.
contents
.
result
=
[...
data
.
result
,...
this
.
contents
.
result
]
}
else
{
this
.
contents
=
data
}
})
},
search
(){
this
.
contents
.
result
=
[]
this
.
page
=
1
this
.
searchCotent
()
},
queryContent
(){
this
.
searchCotent
()
},
sendCode
(){
var
msg
=
{
id
:
this
.
user
.
selectId
,
type
:
3
,
content
:
''
,
imageUrl
:
'http://chat-x.oss-cn-beijing.aliyuncs.com/73218520-8690-11e9-848f-edf4a3ff5396.jpeg'
}
this
.
$store
.
dispatch
(
'user/sendMessage'
,
msg
)
},
sead
(
item
){
console
.
log
(
'66666666666666'
)
this
.
$store
.
dispatch
(
'baozheng/changeContent'
,
item
.
speechContext
)
},
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
...
@@ -53,6 +181,23 @@ export default{
...
@@ -53,6 +181,23 @@ export default{
.box-card{
.box-card{
margin-top:20px;
margin-top:20px;
}
}
.cvds{
height:400px;
overflow: auto;
}
.panelk{
margin:20px;
h1{
text-align:center;
margin:20px;
}
.el-button{
width:100%;
}
.el-tag{
margin:2px;
}
}
.tabs-body
.tabs-body
height:800px;
height:800px;
width:100%;
width:100%;
...
...
src/page/main/right-panel/chenzheng/comparison-map/index.vue
View file @
341d2ade
...
@@ -11,7 +11,6 @@
...
@@ -11,7 +11,6 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
,
mapState
,
mapActions
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -20,11 +19,6 @@ export default{
...
@@ -20,11 +19,6 @@ export default{
},
},
components
:
{
components
:
{
},
},
methods
:
{
...
mapActions
(
'user'
,[
'selectSession'
,
])
},
methods
:
{
methods
:
{
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
...
...
src/page/main/right-panel/chenzheng/cus-users/index.vue
View file @
341d2ade
...
@@ -8,24 +8,12 @@
...
@@ -8,24 +8,12 @@
<span
v-if=
"index!=0"
style=
"color: #007dfd"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index!=0"
style=
"color: #007dfd"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index==0"
>
{{
ite
.
value
}}
</span>
<span
v-if=
"index==0"
>
{{
ite
.
value
}}
</span>
</div>
</div>
<el-card
class=
"box-card"
v-for=
"(itey) in item.dataPanel"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
itey
.
title
}}
</span>
</div>
<div
style=
"margin-bottom:20px; "
v-for=
"(itet,o) in itey.dataItem"
:key=
"o"
class=
"text item"
>
<div
v-for=
"(it,o) in itet"
>
<span>
{{
it
.
label
}}
:
</span>
<span>
{{
it
.
value
}}
</span>
</div>
</div>
</el-card>
</el-collapse-item>
</el-collapse-item>
</el-collapse>
</el-collapse>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -36,31 +24,27 @@ export default{
...
@@ -36,31 +24,27 @@ export default{
numItem
:[
numItem
:[
{
{
label
:
'今日接入量'
,
label
:
'今日接入量'
,
value
:
'加载中。。。'
value
:
54
},
},
{
{
label
:
'今日预约量'
,
label
:
'今日预约量'
,
value
:
'加载中。。。'
value
:
54
},
},
{
{
label
:
'今天预约单量'
,
label
:
'今日开单量'
,
id
:
'todayBookings'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'本月预约单量'
,
label
:
'本月开单量'
,
id
:
'monthBookings'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'6日内预约单未转正'
,
label
:
'6日内预约单未转正'
,
id
:
'sixDayBookingsUnOpen'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'6日前预约单未转正'
,
label
:
'6日外预约单未转正'
,
id
:
'beforeSixDayBookingsUnOpen'
,
value
:
54
value
:
'加载中。。。'
}
}
]
]
},
},
...
@@ -69,23 +53,19 @@ export default{
...
@@ -69,23 +53,19 @@ export default{
numItem
:[
numItem
:[
{
{
label
:
'诊断方案未发送'
,
label
:
'诊断方案未发送'
,
id
:
'diagnosisUnSend'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'诊断方案未确认'
,
label
:
'诊断方案未确认'
,
id
:
'diagnosisUnConfirm'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未发送'
,
label
:
'效果方案未发送'
,
id
:
'effectsUnSend'
,
value
:
54
value
:
'加载中。。。'
},
},
{
{
label
:
'效果方案未确认'
,
label
:
'效果方案未确认'
,
id
:
'effectsUnConfirm'
,
value
:
54
value
:
'加载中。。。'
}
}
]
]
},
},
...
@@ -113,39 +93,9 @@ export default{
...
@@ -113,39 +93,9 @@ export default{
]
]
}
}
},
},
mounted
()
{
this
.
getPersonStatistics
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
0
].
numItem
){
if
(
qs
[
0
].
numItem
[
q
].
id
==
o
){
qs
[
0
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
console
.
log
(
data
)
})
this
.
personTodo
().
then
((
data
)
=>
{
let
qs
=
this
.
queryLists
for
(
let
o
in
data
){
for
(
let
q
in
qs
[
1
].
numItem
){
if
(
qs
[
1
].
numItem
[
q
].
id
==
o
){
qs
[
1
].
numItem
[
q
].
value
=
data
[
o
]
}
}
}
console
.
log
(
data
)
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
},
components
:
{
components
:
{
},
},
methods
:
{
methods
:
{
...
mapActions
(
'chenzhen'
,[
'getPersonStatistics'
,
'personTodo'
,
]),
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
...
...
src/page/main/right-panel/chenzheng/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div
class=
"tabs-body"
>
<el-tabs
type=
"border-card"
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tabs
type=
"border-card"
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"
看板"
name=
"second
"
>
<el-tab-pane
label=
"
顾客"
name=
"first
"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<cus
-users></cus-users
>
<cus
s-service></cuss-service
>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"
顾客"
name=
"first
"
>
<el-tab-pane
label=
"
看板"
name=
"second
"
>
<div
class=
"tool-body"
>
<div
class=
"tool-body"
>
<cus
s-service></cuss-service
>
<cus
-users></cus-users
>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"话术"
name=
"third"
>
<el-tab-pane
label=
"话术"
name=
"third"
>
...
@@ -32,7 +32,6 @@
...
@@ -32,7 +32,6 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
,
mapState
,
mapActions
}
from
'vuex'
import
cussService
from
'./cus-service'
import
cussService
from
'./cus-service'
import
cusUsers
from
'./cus-users'
import
cusUsers
from
'./cus-users'
import
takelScript
from
'./takel-script'
import
takelScript
from
'./takel-script'
...
@@ -55,16 +54,7 @@ export default{
...
@@ -55,16 +54,7 @@ export default{
comprePicture
,
comprePicture
,
labelUserList
labelUserList
},
},
computed
:
{
},
mounted
()
{
this
.
setCustomerInfo
()
},
methods
:
{
methods
:
{
...
mapActions
(
'chenzhen'
,[
'setCustomerInfo'
,
]),
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
...
@@ -80,4 +70,5 @@ export default{
...
@@ -80,4 +70,5 @@ export default{
width:100%;
width:100%;
height:729px;
height:729px;
overflow-y: auto;
overflow-y: auto;
overflow-x: hidden;
</
style
>
</
style
>
\ No newline at end of file
src/page/main/right-panel/chenzheng/takel-script/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div
class=
"tabs-body"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"16"
>
<div
class=
"grid-content bg-purple"
>
<el-input
v-model=
"input"
placeholder=
"请输入内容"
>
<el-input
v-model=
"input"
placeholder=
"请输入内容"
>
</el-input>
</el-input>
<i
class=
"el-icon-search"
style=
"position:relative;top: -30px;right: -380px;"
></i>
<div
class=
"huashu-type"
>
<el-button
v-for=
"item in buttons"
>
{{
item
}}
</el-button>
</div>
</div>
</el-col>
<el-col
:span=
"8"
><div
class=
"grid-content bg-purple"
><el-button
type=
"primary"
>
主要按钮
</el-button></div>
</el-col>
</el-row>
<div
class=
"panelk"
>
<h1
>
推送服务号
</h1>
<el-button
type=
"success"
>
成功按钮
</el-button>
</div>
<div
class=
"panelk"
>
<h1
>
分类
</h1>
<div>
<el-tag
type=
"info"
>
标签三
</el-tag><el-tag
type=
"info"
>
标签三
</el-tag><el-tag
type=
"info"
>
标签三
</el-tag><el-tag
type=
"info"
>
标签三
</el-tag><el-tag
type=
"info"
>
标签三
</el-tag>
</div>
</div>
<div
class=
"panelk"
>
<h1
>
标签
</h1>
<div>
<div>
<el-tag
type=
"success"
>
标签三
</el-tag><el-tag
type=
"success"
>
标签三
</el-tag><el-tag
type=
"success"
>
标签三
</el-tag><el-tag
type=
"success"
>
标签三
</el-tag><el-tag
type=
"success"
>
标签三
</el-tag>
</div>
</div>
<div
class=
"panelk"
>
<h1>
内容
</h1>
<el-card
class=
"box-card"
>
<el-card
class=
"box-card"
>
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
</el-card>
</el-card>
...
@@ -44,7 +23,6 @@
...
@@ -44,7 +23,6 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapState
,
mapActions
,
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
...
@@ -58,15 +36,7 @@ export default{
...
@@ -58,15 +36,7 @@ export default{
},
},
components
:
{
components
:
{
},
},
mounted
()
{
this
.
speechSort
({
company
:
10
}).
then
((
data
)
=>
{
console
.
log
(
data
)
})
},
methods
:
{
methods
:
{
...
mapActions
(
'chenzhen'
,[
'speechSort'
,
]),
handleClick
(){
handleClick
(){
console
.
log
(
43434
)
console
.
log
(
43434
)
}
}
...
@@ -83,19 +53,6 @@ export default{
...
@@ -83,19 +53,6 @@ export default{
.box-card{
.box-card{
margin-top:20px;
margin-top:20px;
}
}
.panelk{
margin:20px;
h1{
text-align:center;
margin:20px;
}
.el-button{
width:100%;
}
.el-tag{
margin:2px;
}
}
.tabs-body
.tabs-body
height:800px;
height:800px;
width:100%;
width:100%;
...
...
src/page/main/right-panel/index.vue
View file @
341d2ade
<
template
>
<
template
>
<div
class=
"tabs-body"
>
<div
class=
"tabs-body"
>
<div
style=
"margin:50px;
"
v-if=
"!chenzhen
.isLogin"
>
<div
style=
"margin:50px;
overflow: auto;"
v-if=
"!baozheng
.isLogin"
>
<el-form
:model=
"ruleForm2"
status-icon
ref=
"ruleForm2"
class=
"demo-ruleForm"
>
<el-form
:model=
"ruleForm2"
status-icon
ref=
"ruleForm2"
class=
"demo-ruleForm"
>
<el-form-item
prop=
"pass"
>
<el-form-item
prop=
"pass"
>
<el-input
type=
"text"
placeholder=
"登录名"
v-model=
"ruleForm2.account"
auto-complete=
"off"
></el-input>
<el-input
type=
"text"
placeholder=
"登录名"
v-model=
"ruleForm2.account"
auto-complete=
"off"
></el-input>
...
@@ -13,8 +13,8 @@
...
@@ -13,8 +13,8 @@
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
<baozheng
v-if=
"
chenzhen.isLogin&&user.userInfo.type==3
"
/>
<baozheng
v-if=
"
baozheng.isLogin&&user.userInfo.type==1
"
/>
<chenzheng
v-if=
"
chenzhen.isLogin&&user.userInfo.type==1
"
/>
<chenzheng
v-if=
"
baozheng.isLogin&&user.userInfo.type==3
"
/>
</div>
</div>
</
template
>
</
template
>
...
@@ -29,7 +29,7 @@ export default{
...
@@ -29,7 +29,7 @@ export default{
activeName
:
'second'
,
activeName
:
'second'
,
ruleForm2
:{
ruleForm2
:{
account
:
'13521750803'
,
account
:
'13521750803'
,
passwd
:
'
baozheng0618
'
passwd
:
'
123123
'
}
}
}
}
},
},
...
@@ -39,18 +39,18 @@ export default{
...
@@ -39,18 +39,18 @@ export default{
},
},
computed
:
{
computed
:
{
...
mapState
([
...
mapState
([
'
chenzhen
'
,
'
baozheng
'
,
'user'
,
'user'
,
])
])
},
},
mounted
()
{
mounted
()
{
this
.
init
()
this
.
init
()
// if(this.
chenzhen
.isLogin&&this.user.userInfo.type==1){
// if(this.
baozheng
.isLogin&&this.user.userInfo.type==1){
// this.init()
// this.init()
// }
// }
},
},
methods
:
{
methods
:
{
...
mapActions
(
'
chenzhen
'
,[
...
mapActions
(
'
baozheng
'
,[
'login'
,
'login'
,
'init'
'init'
]),
]),
...
@@ -76,8 +76,9 @@ export default{
...
@@ -76,8 +76,9 @@ export default{
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
.tabs-body
.tabs-body
height:
700px
;
height:
100%
;
width:100%;
width:100%;
overflow: auto;
.tool-body
.tool-body
width:100%;
width:100%;
height:729px;
height:729px;
...
...
src/service/api.js
View file @
341d2ade
...
@@ -12,17 +12,19 @@ url.changeCustomerStatus = `${process.env.API_URL}o/customersession/update/users
...
@@ -12,17 +12,19 @@ url.changeCustomerStatus = `${process.env.API_URL}o/customersession/update/users
const
chenzhen
=
{}
const
baozheng
=
{}
chenzhen
.
login
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/login`
baozheng
.
login
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/login`
chenzhen
.
getCustomerInfo
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/customer/info`
baozheng
.
getCustomerInfo
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/customer/info`
chenzhen
.
getPersonStatistics
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/statistics/person`
baozheng
.
getPersonStatistics
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/statistics/person`
chenzhen
.
personTodo
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/statistics/person/todo`
baozheng
.
personTodo
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/statistics/person/todo`
chenzhen
.
speechSort
=
`
${
process
.
env
.
API_URL
}
p/api/speech/sort`
baozheng
.
speechSort
=
`
${
process
.
env
.
API_URL
}
p/api/speech`
chenzhen
.
findByMobile
=
`
${
process
.
env
.
API_URL
}
v1/customer/findByMobile`
baozheng
.
findByMobile
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/customer/findByMobile`
url
.
searchBiaoqingbao
=
""
baozheng
.
teamTodo
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/statistics/team/todo`
url
.
getScriptTags
=
""
baozheng
.
searchBiaoqingbao
=
`
${
process
.
env
.
API_URL
}
p/api/images`
url
.
getScriptCatgary
=
""
baozheng
.
getScriptTags
=
`
${
process
.
env
.
API_URL
}
p/api/speech/label`
url
.
getScripts
=
""
baozheng
.
getScriptCatgary
=
`
${
process
.
env
.
API_URL
}
p/api/speech/sort`
url
.
chenzhen
=
chenzhen
baozheng
.
bindChatUser
=
`
${
process
.
env
.
API_URL
}
nice-wechat-service/v1/customer/bindChatUser`
baozheng
.
getScripts
=
""
url
.
baozheng
=
baozheng
// url.wsUrl = process.env.API_URL
// url.wsUrl = process.env.API_URL
export
default
url
export
default
url
\ No newline at end of file
src/service/baozheng.js
View file @
341d2ade
import
apiUrl
from
'./api.js'
import
request
from
'@/utils/baozhengRequest.js'
const
login
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
login
,
method
:
'post'
,
data
:
param
})
}
const
getCustomerInfo
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
getCustomerInfo
,
method
:
'get'
,
params
:
param
})
}
const
getPersonStatistics
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
getPersonStatistics
,
method
:
'get'
,
params
:
param
})
}
const
personTodo
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
personTodo
,
method
:
'get'
,
params
:
param
})
}
const
speechSort
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
speechSort
,
method
:
'get'
,
params
:
param
})
}
const
searchBiaoqingbao
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
searchBiaoqingbao
,
method
:
'get'
,
params
:
param
})
}
const
getScriptTags
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
getScriptTags
,
method
:
'get'
,
params
:
param
})
}
const
getScriptCatgary
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
baozheng
.
getScriptCatgary
,
method
:
'get'
,
params
:
param
})
}
const
apis
=
[
[
apiUrl
.
baozheng
.
speechSort
],
[
apiUrl
.
baozheng
.
getPersonStatistics
],
[
apiUrl
.
baozheng
.
personTodo
],
[
apiUrl
.
baozheng
.
getScriptTags
],
[
apiUrl
.
baozheng
.
searchBiaoqingbao
],
[
apiUrl
.
baozheng
.
teamTodo
],
[
apiUrl
.
baozheng
.
getScriptCatgary
],
[
apiUrl
.
baozheng
.
bindChatUser
,
'post'
],
[
apiUrl
.
baozheng
.
findByMobile
,
'post'
]
]
const
reMap
=
new
Map
()
const
baseService
=
(()
=>
{
for
(
let
ap
of
apis
){
let
temp
=
({
resolve
,
reject
,
param
,
isComplete
=
true
})
=>
{
return
isComplete
?
request
({
url
:
ap
[
0
],
method
:
ap
[
1
]
||
'get'
,
params
:
param
,
data
:
param
}).
then
(
response
=>
{
if
(
response
.
code
==
200
){
resolve
(
response
.
data
)
}
else
{
reject
(
response
)
}
}).
catch
(
error
=>
{
reject
(
error
)
}):
request
({
url
:
ap
[
0
],
method
:
ap
[
1
]
||
'get'
,
params
:
param
,
data
:
param
})
}
reMap
.
set
(
ap
[
0
],
temp
)
}
return
reMap
})()
export
default
{
login
,
personTodo
,
baseService
,
getCustomerInfo
,
getPersonStatistics
}
\ No newline at end of file
src/service/chenzhen.js
deleted
100644 → 0
View file @
c5850fef
import
apiUrl
from
'./api.js'
import
request
from
'@/utils/chenzhenRequest.js'
const
login
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
login
,
method
:
'post'
,
data
:
param
})
}
const
getCustomerInfo
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
getCustomerInfo
,
method
:
'get'
,
params
:
param
})
}
const
getPersonStatistics
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
getPersonStatistics
,
method
:
'get'
,
params
:
param
})
}
const
personTodo
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
personTodo
,
method
:
'get'
,
params
:
param
})
}
const
speechSort
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
speechSort
,
method
:
'get'
,
params
:
param
})
}
const
searchBiaoqingbao
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
searchBiaoqingbao
,
method
:
'get'
,
params
:
param
})
}
const
getScriptTags
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
getScriptTags
,
method
:
'get'
,
params
:
param
})
}
const
getScriptCatgary
=
(
param
)
=>
{
return
request
({
url
:
apiUrl
.
chenzhen
.
getScriptCatgary
,
method
:
'get'
,
params
:
param
})
}
const
apis
=
[
[
apiUrl
.
chenzhen
.
speechSort
],
[
apiUrl
.
chenzhen
.
getPersonStatistics
],
[
apiUrl
.
chenzhen
.
personTodo
],
[
apiUrl
.
chenzhen
.
findByMobile
,
'post'
]
]
const
reMap
=
new
Map
()
const
baseService
=
(()
=>
{
for
(
let
ap
of
apis
){
let
temp
=
(
param
)
=>
{
return
request
({
url
:
ap
[
0
],
method
:
ap
[
1
]
||
'get'
,
params
:
param
})
}
reMap
.
set
(
ap
[
0
],
temp
)
}
return
reMap
})()
export
default
{
login
,
personTodo
,
baseService
,
getCustomerInfo
,
getPersonStatistics
}
\ No newline at end of file
src/service/index.js
View file @
341d2ade
import
apiUrl
from
'./api.js'
import
apiUrl
from
'./api.js'
import
request
from
'@/utils/request'
import
request
from
'@/utils/request'
import
chart
from
'./chart'
import
chart
from
'./chart'
import
chenzhen
from
'./chenzhen
'
import
baozheng
from
'./baozheng
'
const
login
=
(
param
)
=>
{
const
login
=
(
param
)
=>
{
return
request
({
return
request
({
url
:
apiUrl
.
login
,
url
:
apiUrl
.
login
,
...
@@ -12,5 +12,5 @@ const login = (param)=>{
...
@@ -12,5 +12,5 @@ const login = (param)=>{
export
{
export
{
login
,
login
,
chart
,
chart
,
chenzhen
baozheng
}
}
\ No newline at end of file
src/store/getters.js
View file @
341d2ade
...
@@ -29,6 +29,15 @@ const getters = {
...
@@ -29,6 +29,15 @@ const getters = {
},
},
isSelectMore
(
state
){
isSelectMore
(
state
){
return
state
.
user
.
isSelectMore
return
state
.
user
.
isSelectMore
}
},
witchPanel
(
state
){
return
state
.
baozheng
.
witchPanel
},
sendContent
(
state
){
return
state
.
baozheng
.
sendContent
},
customerInfo
(
state
){
return
state
.
baozheng
.
customerInfo
},
}
}
export
default
getters
export
default
getters
\ No newline at end of file
src/store/index.js
View file @
341d2ade
import
Vue
from
'vue'
import
Vue
from
'vue'
import
Vuex
from
'vuex'
import
Vuex
from
'vuex'
import
user
from
'./modules/user'
import
user
from
'./modules/user'
import
chenzhen
from
'./modules/chenzhen
'
import
baozheng
from
'./modules/baozheng
'
import
getters
from
'./getters'
import
getters
from
'./getters'
Vue
.
use
(
Vuex
)
Vue
.
use
(
Vuex
)
...
@@ -9,7 +9,7 @@ Vue.use(Vuex)
...
@@ -9,7 +9,7 @@ Vue.use(Vuex)
const
store
=
new
Vuex
.
Store
({
const
store
=
new
Vuex
.
Store
({
modules
:
{
modules
:
{
user
,
user
,
chenzhen
baozheng
},
},
getters
getters
})
})
...
...
src/store/modules/
chenzhen
.js
→
src/store/modules/
baozheng
.js
View file @
341d2ade
...
@@ -4,15 +4,17 @@ import apiUrl from '@/service/api.js'
...
@@ -4,15 +4,17 @@ import apiUrl from '@/service/api.js'
import
*
as
auth
from
'@/utils/auth'
import
*
as
auth
from
'@/utils/auth'
import
{
MessageBox
,
Alert
}
from
'element-ui'
import
{
MessageBox
,
Alert
}
from
'element-ui'
import
Vue
from
'vue'
import
Vue
from
'vue'
const
chenzhenService
=
service
.
chenzhen
.
baseService
const
chenzhenService
=
service
.
baozheng
.
baseService
const
baozhengApi
=
apiUrl
.
baozheng
const
user
=
{
const
baozheng
=
{
namespaced
:
true
,
namespaced
:
true
,
state
:
{
state
:
{
userInfo
:
auth
.
getUserInfo
(),
userInfo
:
auth
.
getUserInfo
(),
isLogin
:
false
,
isLogin
:
false
,
witchPanel
:
''
,
img
:
'static/images/UserAvatar.jpg'
,
img
:
'static/images/UserAvatar.jpg'
,
customerInfo
:
null
,
customerInfo
:
null
,
sendContent
:
''
,
selectFriendId
:
0
selectFriendId
:
0
},
},
...
@@ -23,28 +25,38 @@ const user = {
...
@@ -23,28 +25,38 @@ const user = {
CHANGE_LOGINSTATUS
(
state
,
value
){
CHANGE_LOGINSTATUS
(
state
,
value
){
state
.
isLogin
=
value
state
.
isLogin
=
value
},
},
CHAGNGE_PANEL
(
state
,
value
){
state
.
witchPanel
=
value
},
SET_CUSTOMERINFO
(
state
,
value
){
SET_CUSTOMERINFO
(
state
,
value
){
state
.
customerInfo
=
value
state
.
customerInfo
=
value
}
},
CHANGE_CONTENT
(
state
,
value
){
state
.
sendContent
=
value
},
},
},
actions
:
{
actions
:
{
init
({
dispatch
,
commit
,
state
}){
init
({
dispatch
,
commit
,
state
}){
let
token
=
auth
.
getTokenChenzhen
()
let
token
=
auth
.
getTokenChenzhen
()
console
.
log
(
token
)
if
(
token
){
if
(
token
){
dispatch
(
'changeLogin'
,
true
)
dispatch
(
'changeLogin'
,
true
)
}
}
},
},
changeContent
({
dispatch
,
commit
,
state
},
value
){
commit
(
'CHANGE_CONTENT'
,
value
)
},
changePanel
({
dispatch
,
commit
,
state
},
value
){
commit
(
'CHAGNGE_PANEL'
,
value
)
},
setCustomerInfo
({
commit
,
rootGetters
,
state
},
value
){
setCustomerInfo
({
commit
,
rootGetters
,
state
},
value
){
console
.
log
(
6666666666666
)
console
.
log
(
rootGetters
.
selectedChat
)
let
customerId
=
rootGetters
.
selectedChat
.
user
.
id
let
customerId
=
rootGetters
.
selectedChat
.
user
.
id
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
service
.
chenzhen
.
getCustomerInfo
({
chatUserId
:
customerId
}).
then
(
response
=>
{
service
.
baozheng
.
getCustomerInfo
({
chatUserId
:
customerId
}).
then
(
response
=>
{
if
(
response
.
code
==
200
){
if
(
response
.
code
==
200
){
commit
(
'SET_CUSTOMERINFO'
,
response
.
data
)
commit
(
'SET_CUSTOMERINFO'
,
response
.
data
)
resolve
(
response
.
data
)
resolve
(
response
.
data
)
}
else
{
}
else
{
commit
(
'SET_CUSTOMERINFO'
,
null
)
reject
(
response
)
reject
(
response
)
}
}
}).
catch
(
error
=>
{
}).
catch
(
error
=>
{
...
@@ -52,15 +64,18 @@ const user = {
...
@@ -52,15 +64,18 @@ const user = {
})
})
})
})
},
},
changeCustomerInfo
({
dispatch
,
commit
,
state
},
value
){
commit
(
'SET_CUSTOMERINFO'
,
value
)
},
changeLogin
({
commit
,
state
},
value
){
changeLogin
({
commit
,
state
},
value
){
commit
(
'CHANGE_LOGINSTATUS'
,
value
)
commit
(
'CHANGE_LOGINSTATUS'
,
value
)
},
},
login
:({
dispatch
,
commit
},
value
)
=>
{
login
:({
dispatch
,
commit
},
value
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
service
.
chenzhen
.
login
(
value
).
then
(
response
=>
{
service
.
baozheng
.
login
(
value
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
if
(
response
.
code
==
200
){
dispatch
(
'changeLogin'
,
true
)
dispatch
(
'changeLogin'
,
true
)
commit
(
'
chenzhen
/USER_LOGIN'
,
response
.
data
,
{
root
:
true
})
commit
(
'
baozheng
/USER_LOGIN'
,
response
.
data
,
{
root
:
true
})
resolve
(
response
.
data
)
resolve
(
response
.
data
)
}
else
{
}
else
{
reject
(
response
)
reject
(
response
)
...
@@ -72,7 +87,7 @@ const user = {
...
@@ -72,7 +87,7 @@ const user = {
},
},
getPersonStatistics
:({
dispatch
,
commit
},
value
)
=>
{
getPersonStatistics
:({
dispatch
,
commit
},
value
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
service
.
chenzhen
.
getPersonStatistics
(
value
).
then
(
response
=>
{
service
.
baozheng
.
getPersonStatistics
(
value
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
if
(
response
.
code
==
200
){
resolve
(
response
.
data
)
resolve
(
response
.
data
)
}
else
{
}
else
{
...
@@ -85,7 +100,7 @@ const user = {
...
@@ -85,7 +100,7 @@ const user = {
},
},
personTodo
:({
dispatch
,
commit
},
value
)
=>
{
personTodo
:({
dispatch
,
commit
},
value
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
service
.
chenzhen
.
personTodo
(
value
).
then
(
response
=>
{
service
.
baozheng
.
personTodo
(
value
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
if
(
response
.
code
==
200
){
resolve
(
response
.
data
)
resolve
(
response
.
data
)
}
else
{
}
else
{
...
@@ -96,22 +111,42 @@ const user = {
...
@@ -96,22 +111,42 @@ const user = {
})
})
})
})
},
},
speechSort
:({
dispatch
,
commit
},
value
)
=>
{
teamTodo
:({
dispatch
,
commit
},
param
)
=>
{
console
.
log
(
chenzhenService
)
console
.
log
(
apiUrl
)
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
console
.
log
(
apiUrl
)
chenzhenService
.
get
(
baozhengApi
.
teamTodo
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
chenzhenService
.
get
(
apiUrl
.
chenzhen
.
speechSort
)(
value
).
then
(
response
=>
{
})
if
(
response
.
code
==
200
){
},
resolve
(
response
.
data
)
getScriptCatgary
:({
dispatch
,
commit
},
param
)
=>
{
}
else
{
return
new
Promise
((
resolve
,
reject
)
=>
{
reject
(
response
)
chenzhenService
.
get
(
baozhengApi
.
getScriptCatgary
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
}
})
}).
catch
(
error
=>
{
},
reject
(
error
)
getScriptTags
:({
dispatch
,
commit
},
param
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
chenzhenService
.
get
(
baozhengApi
.
getScriptTags
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
})
},
searchBiaoqingbao
:({
dispatch
,
commit
},
param
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
chenzhenService
.
get
(
baozhengApi
.
searchBiaoqingbao
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
})
})
},
findByMobile
:({
dispatch
,
commit
},
param
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
chenzhenService
.
get
(
baozhengApi
.
findByMobile
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
})
},
bindChatUser
:({
dispatch
,
rootGetters
,
commit
},
param
)
=>
{
param
.
chatUserId
=
rootGetters
.
selectedChat
.
user
.
id
return
new
Promise
((
resolve
,
reject
)
=>
{
chenzhenService
.
get
(
baozhengApi
.
bindChatUser
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
})
},
speechSort
:({
dispatch
,
commit
},
param
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
chenzhenService
.
get
(
baozhengApi
.
speechSort
)({
resolve
,
reject
,
param
,
isComplete
:
true
})
})
})
}
}
}
}
}
}
export
default
user
export
default
baozheng
\ No newline at end of file
\ No newline at end of file
src/store/modules/user.js
View file @
341d2ade
...
@@ -32,7 +32,7 @@ const user = {
...
@@ -32,7 +32,7 @@ const user = {
tempChatlist
:[],
tempChatlist
:[],
emojis
,
emojis
,
isSelectMore
:
false
,
isSelectMore
:
false
,
selectId
:
1
,
selectId
:
0
,
selectFriendId
:
0
,
selectFriendId
:
0
,
onLineStatus
:
10
,
onLineStatus
:
10
,
customerConversationNum
:
0
,
customerConversationNum
:
0
,
...
@@ -104,6 +104,7 @@ const user = {
...
@@ -104,6 +104,7 @@ const user = {
id
:
value
[
i
].
id
,
id
:
value
[
i
].
id
,
user
:
{
user
:
{
name
:
value
[
i
].
userBo
&&
value
[
i
].
userBo
.
nickname
,
name
:
value
[
i
].
userBo
&&
value
[
i
].
userBo
.
nickname
,
username
:
value
[
i
].
userBo
&&
value
[
i
].
userBo
.
username
,
img
:
value
[
i
].
userBo
.
avatar
,
img
:
value
[
i
].
userBo
.
avatar
,
conRemark
:
value
[
i
].
userBo
.
conRemark
,
conRemark
:
value
[
i
].
userBo
.
conRemark
,
remark
:
value
[
i
].
devicesBo
&&
value
[
i
].
devicesBo
.
remark
,
remark
:
value
[
i
].
devicesBo
&&
value
[
i
].
devicesBo
.
remark
,
...
@@ -135,6 +136,7 @@ const user = {
...
@@ -135,6 +136,7 @@ const user = {
user
:
{
user
:
{
name
:
value
[
i
].
userBo
.
nickname
,
name
:
value
[
i
].
userBo
.
nickname
,
img
:
value
[
i
].
userBo
.
avatar
,
img
:
value
[
i
].
userBo
.
avatar
,
username
:
value
[
i
].
userBo
&&
value
[
i
].
userBo
.
username
,
conRemark
:
value
[
i
].
userBo
.
conRemark
,
conRemark
:
value
[
i
].
userBo
.
conRemark
,
remark
:
value
[
i
].
devicesBo
&&
value
[
i
].
devicesBo
.
remark
,
remark
:
value
[
i
].
devicesBo
&&
value
[
i
].
devicesBo
.
remark
,
id
:
value
[
i
].
userBo
.
userId
id
:
value
[
i
].
userBo
.
userId
...
@@ -152,9 +154,6 @@ const user = {
...
@@ -152,9 +154,6 @@ const user = {
tempList
.
reverse
()
tempList
.
reverse
()
state
.
chatlist
=
singel
(
tempList
)
state
.
chatlist
=
singel
(
tempList
)
state
.
chartings
=
singel
(
tempList
)
state
.
chartings
=
singel
(
tempList
)
for
(
let
dd
of
state
.
chatlist
){
console
.
log
(
dd
.
queryData
)
}
},
},
ADD_MESSAGE
(
state
,
value
){
ADD_MESSAGE
(
state
,
value
){
let
{
chatlist
,
selectId
}
=
state
let
{
chatlist
,
selectId
}
=
state
...
@@ -177,16 +176,9 @@ const user = {
...
@@ -177,16 +176,9 @@ const user = {
let
temp
=
value
==
null
?[]:
value
.
sort
(
compare
(
'createTime'
))
let
temp
=
value
==
null
?[]:
value
.
sort
(
compare
(
'createTime'
))
array
[
c
].
messages
=
[...
array
[
c
].
messages
,
...
temp
]
array
[
c
].
messages
=
[...
array
[
c
].
messages
,
...
temp
]
array
[
c
].
queryData
=
value
[
0
].
createTime
array
[
c
].
queryData
=
value
[
0
].
createTime
array
.
sort
(
compare
(
'queryData'
))
array
.
sort
(
compare
(
'queryData'
))
for
(
let
f
of
array
){
console
.
log
(
f
.
user
.
name
,
f
.
queryData
)
}
console
.
log
(
'----------------'
)
array
.
reverse
()
array
.
reverse
()
for
(
let
f
of
array
){
console
.
log
(
f
.
user
.
name
,
f
.
queryData
)
}
// let tempe = array[0]
// let tempe = array[0]
// array[0] = array[array.length-1]
// array[0] = array[array.length-1]
// array[array.length-1] = tempe
// array[array.length-1] = tempe
...
@@ -244,6 +236,14 @@ const user = {
...
@@ -244,6 +236,14 @@ const user = {
dispatch
(
'connected'
)
dispatch
(
'connected'
)
// storage.set('account', state)
// storage.set('account', state)
}).
on
(
'connect_error'
,
()
=>
{
}).
on
(
'connect_error'
,
()
=>
{
MessageBox
(
'连接被迫断开,重新登录!'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
type
:
'warning'
}).
then
(()
=>
{
window
.
location
.
href
=
"/"
}).
catch
(()
=>
{
console
.
log
(
2
)
});
console
.
log
(
"connect_error"
)
console
.
log
(
"connect_error"
)
}).
on
(
'disconnect'
,
()
=>
{
}).
on
(
'disconnect'
,
()
=>
{
MessageBox
(
'连接被迫断开,重新登录!'
,
'提示'
,
{
MessageBox
(
'连接被迫断开,重新登录!'
,
'提示'
,
{
...
@@ -466,6 +466,7 @@ const user = {
...
@@ -466,6 +466,7 @@ const user = {
chatlist
.
splice
(
i
,
1
);
chatlist
.
splice
(
i
,
1
);
}
}
}
}
commit
(
'SELECT_SEESION'
,
{
id
:
0
})
commit
(
'SET_CHARTING_LIST'
,
chatlist
)
commit
(
'SET_CHARTING_LIST'
,
chatlist
)
}
else
{
}
else
{
reject
(
response
)
reject
(
response
)
...
@@ -533,6 +534,7 @@ const user = {
...
@@ -533,6 +534,7 @@ const user = {
}
else
{
}
else
{
Notification
({
Notification
({
title
:
'警告'
,
title
:
'警告'
,
position
:
'bottom-left'
,
message
:
`您的客机
${
response
.
data
.
notOnlineDevices
.
join
(
'-'
)}
客机不在线,请重启客机!`
,
message
:
`您的客机
${
response
.
data
.
notOnlineDevices
.
join
(
'-'
)}
客机不在线,请重启客机!`
,
type
:
'warning'
type
:
'warning'
});
});
...
...
src/utils/auth.js
View file @
341d2ade
...
@@ -28,11 +28,11 @@ export function setToken(token) {
...
@@ -28,11 +28,11 @@ export function setToken(token) {
}
}
export
function
getTokenChenzhen
()
{
export
function
getTokenChenzhen
()
{
return
Cookies
.
get
(
TokenChenzhenKey
)
return
getStorage
(
TokenChenzhenKey
)
}
}
export
function
setTokenChenzhen
(
token
)
{
export
function
setTokenChenzhen
(
token
)
{
return
Cookies
.
set
(
TokenChenzhenKey
,
token
)
return
setStorage
(
TokenChenzhenKey
,
token
)
}
}
export
function
getUserId
()
{
export
function
getUserId
()
{
...
...
src/utils/
chenzhen
Request.js
→
src/utils/
baozheng
Request.js
View file @
341d2ade
...
@@ -74,6 +74,14 @@ service.interceptors.response.use(
...
@@ -74,6 +74,14 @@ service.interceptors.response.use(
type
:
'error'
,
type
:
'error'
,
duration
:
5
*
1000
duration
:
5
*
1000
})
})
MessageBox
(
'连接被迫断开,重新登录!'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
type
:
'warning'
}).
then
(()
=>
{
window
.
location
.
href
=
"/"
}).
catch
(()
=>
{
console
.
log
(
2
)
});
return
Promise
.
reject
(
error
)
return
Promise
.
reject
(
error
)
}
}
)
)
...
...
src/utils/request.js
View file @
341d2ade
...
@@ -70,6 +70,14 @@ service.interceptors.response.use(
...
@@ -70,6 +70,14 @@ service.interceptors.response.use(
type
:
'error'
,
type
:
'error'
,
duration
:
5
*
1000
duration
:
5
*
1000
})
})
MessageBox
(
'连接被迫断开,重新登录!'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
type
:
'warning'
}).
then
(()
=>
{
window
.
location
.
href
=
"/"
}).
catch
(()
=>
{
console
.
log
(
2
)
});
return
Promise
.
reject
(
error
)
return
Promise
.
reject
(
error
)
}
}
)
)
...
...
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