Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-admin-consultation
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.education.frontend
pica-admin-consultation
提交
cbe87ba4
提交
cbe87ba4
编写于
8月 05, 2021
作者:
lyf
浏览文件
操作
浏览文件
下载
差异文件
合并分支
上级
20f141c6
2c29d9e0
变更
7
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
598 行增加
和
457 行删除
+598
-457
consultation.vue
src/components/common/consultation.vue
+60
-63
inquirylist.vue
src/components/common/inquirylist.vue
+414
-278
socket.js
src/store/module/socket.js
+2
-1
index.js
src/store/mutations/index.js
+3
-0
state.js
src/store/state.js
+1
-0
administrators.vue
src/views/IM/diagnosis-admin/administrators.vue
+40
-77
workbench.vue
src/views/IM/diagnosis-admin/workbench.vue
+78
-38
未找到文件。
src/components/common/consultation.vue
浏览文件 @
cbe87ba4
<
template
>
<div
class=
"consultationlist"
style=
"
user-select:none;
"
>
<div
class=
"consultationlist"
style=
"
user-select: none
"
>
<div
class=
"list"
>
<div
class=
"name"
>
{{
operatorsItem
.
name
||
''
}}
</div>
<div
class=
"name"
>
{{
operatorsItem
.
name
||
""
}}
</div>
<div
class=
"details"
@
click=
"goworkBench"
>
<
div
class=
"handle"
>
待处理:
<span>
暂无
</span></div
>
<
!--
<div
class=
"handle"
>
待处理:
<span>
暂无
</span></div>
--
>
<div
class=
"see"
>
<
a
href=
"#"
>
查看详情
</a
>
<
span>
查看详情
</span
>
<i
class=
"el-icon-arrow-right"
></i>
</div>
</div>
</div>
<div
class=
"data"
>
<
!--
<
div
class=
"data"
>
<div>
<div
class=
"totallist"
>
暂无
</div>
<div
class=
"statelist"
>
全部
</div>
...
...
@@ -27,27 +27,27 @@
<div
class=
"totallist"
>
暂无
</div>
<div
class=
"statelist"
>
全部
</div>
</div>
</div>
</div>
-->
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
}
return
{};
},
props
:{
operatorsItem
:{
props
:
{
operatorsItem
:
{
type
:
Object
,
default
:
{}
default
:
{},
},
workbenchAdminDate
:
{
type
:
String
,
default
:
''
}
default
:
""
,
}
,
},
created
()
{
console
.
log
(
"operatorsItem"
,
this
.
operatorsItem
);
},
methods
:
{
goworkBench
()
{
...
...
@@ -56,41 +56,37 @@ export default {
operateUserId
:
this
.
operatorsItem
.
id
,
pageNo
:
1
,
pageSize
:
6
,
returnStatus
:
1
returnStatus
:
1
,
};
this
.
$store
.
commit
(
"clearRawCurrentCalList"
)
this
.
POST
(
'/diagnose/socket/condition/update'
,
p
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
){
this
.
$store
.
commit
(
'updateSoketQuest'
,
p
)
this
.
$router
.
push
({
path
:
'/workbench'
})
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"warning"
,
duration
:
1000
});
}
})
}
}
this
.
$store
.
commit
(
"clearRawCurrentCalList"
);
this
.
POST
(
"/diagnose/socket/condition/update"
,
p
).
then
((
res
)
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
$store
.
commit
(
"updateSoketQuest"
,
p
);
this
.
$router
.
push
({
path
:
"/workbench"
});
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"warning"
,
duration
:
1000
,
});
}
});
},
},
};
</
script
>
<
style
lang=
"scss"
>
.consultationlist
{
padding
:
25px
40px
25px
40px
;
width
:
488px
;
height
:
164px
;
padding
:
25px
;
width
:
100%
;
background
:
#ffffff
;
border-radius
:
18px
;
margin-left
:
14px
;
margin-top
:
20px
;
.list
{
display
:
flex
;
justify-content
:
space-between
;
.details
{
width
:
1
92
px
;
width
:
1
20
px
;
height
:
40px
;
background
:
rgba
(
68
,
146
,
132
,
0
.24
);
border-radius
:
20px
;
...
...
@@ -98,29 +94,30 @@ export default {
border
:
1px
solid
#449284
;
display
:
flex
;
justify-content
:
space-evenly
;
align-items
:
center
;
align-items
:
center
;
cursor
:
pointer
;
.handle
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6a7990
;
line-height
:
18px
;
span
{
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#449284
;
span
{
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#449284
;
}
}
.see
{
a
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6a7990
;
span
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6a7990
;
}
}
}
}
.name
{
font-size
:
24px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
...
...
@@ -128,22 +125,22 @@ export default {
color
:
#063948
;
}
}
.data
{
margin-top
:
20px
;
display
:
flex
;
justify-content
:
space-between
;
.totallist
{
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#063948
;
line-height
:
25px
;
.data
{
margin-top
:
20px
;
display
:
flex
;
justify-content
:
space-between
;
.totallist
{
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#063948
;
line-height
:
25px
;
}
.statelist
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6A
7990
;
.statelist
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6a
7990
;
}
}
}
...
...
src/components/common/inquirylist.vue
浏览文件 @
cbe87ba4
<
template
>
<div
class=
"inquiry-wrap"
>
<div
class=
"inquiry-wrap"
>
<div
class=
"line"
>
<div
class=
"left"
>
<div>
{{
item
.
diagnoseLogId
}}
<span
class=
"dep"
>
{{
item
.
department
}}
</span>
{{
item
.
diagnoseLogId
}}
<span
class=
"dep"
>
{{
item
.
department
}}
</span>
</div>
<div
class=
"talk"
>
<i
:class=
'diagnoseTypeIcon'
></i>
{{
diagnoseType
}}
<i
:class=
"diagnoseTypeIcon"
></i>
{{
diagnoseType
}}
</div>
<div
class=
"time"
>
<i
class=
"appointment"
></i><span>
{{
appointBeginTime
}}
</span
>
-
<span>
{{
appointEndTime
}}
</span>
</div>
<div
class=
"time"
>
<i
class=
"appointment"
></i>
{{
appointBeginTime
}}
{{
appointEndTime
}}
</div>
</div>
<div
class=
"right"
>
<div
class=
"right-status"
:class=
"
{grey: item.returnStatus >= 5, org: item.returnStatus == 1}">
{{
returnStatusText
}}
</div>
<!--
<div
class=
"right-time"
>
-->
<!-- 已经问诊-->
<!--
</div>
-->
<!--
<div
class=
"right-time"
>
-->
<!-- 已经问诊-->
<!--
</div>
-->
</div>
</div>
<div
class=
"line mt30"
>
<div
class=
"inquiry-user"
>
<div
class=
"inquiry-user-img"
>
<el-avatar
:src=
"item.doctorImageUrl"
></el-avatar>
</div>
<div
class=
"inquiry-user-info"
>
<div>
<span
class=
"info-name"
>
{{
item
.
doctorName
}}
</span>
<span>
接诊医生
</span>
<div
class=
"inquiry-user-container"
>
<div
class=
"inquiry-user"
>
<div
class=
"inquiry-user-img"
>
<div
class=
"avatar"
>
<el-avatar
:src=
"item.doctorImageUrl"
></el-avatar>
</div>
</div>
<div>
<span
class=
"info-phone"
>
{{
item
.
doctorMobile
}}
</span>
<span
class=
"info-call-time"
v-if=
"item.doctorCallTime"
>
{{
doctorCallTime
}}
小时前呼叫
</span>
<span
class=
"info-calling"
v-if=
"item.doctorCallKfStatus == 1"
>
<img
:src=
"infocallImg"
alt=
""
>
</span>
<div
class=
"inquiry-user-info"
>
<div>
<span
class=
"info-name"
>
{{
item
.
doctorName
}}
</span>
<span>
接诊医生
</span>
</div>
<div>
<span
class=
"info-phone"
>
{{
item
.
doctorMobile
}}
</span>
<span
class=
"info-call-time"
v-if=
"item.doctorCallTime"
>
{{
doctorCallTime
}}
小时前呼叫
</span>
<span
class=
"info-calling"
v-if=
"item.doctorCallKfStatus == 1"
>
<img
:src=
"infocallImg"
alt=
""
/>
</span>
</div>
</div>
<div
class=
"call-status"
>
<img
v-if=
"isCall"
@
click=
"drivingCall(item.doctorId, 2)"
:src=
"isDoctorChat ? callouting : callout"
alt=
""
/>
</div>
</div>
</div
>
<div
class=
"inquiry-user"
>
<div
class=
"inquiry-user-img"
>
<
el-avatar
:src=
"item.userImageUrl"
></el-avatar
>
<div
class=
"line-btn"
@
click=
"openChat"
>
<span
v-if=
"isDoctorChat"
>
正在呼叫接诊医生,进入诊室
</span
>
<span
v-else-if=
"isUserChat"
>
正在呼叫医助,进入诊室
</span
>
<
span
v-else
>
进入诊室
</span
>
</div>
<div
class=
"inquiry-user-info"
>
<div>
<span
class=
"info-name"
>
{{
item
.
userName
}}
</span>
<span>
助诊医生
</span>
</div>
<div
class=
"inquiry-user-container"
>
<div
class=
"inquiry-user"
>
<div
class=
"inquiry-user-img"
>
<div
class=
"avatar"
>
<el-avatar
:src=
"item.userImageUrl"
></el-avatar>
</div>
</div>
<div
class=
"inquiry-user-info"
>
<div>
<span
class=
"info-name"
>
{{
item
.
userName
}}
</span>
<span>
助诊医生
</span>
</div>
<div>
<span
class=
"info-phone"
>
{{
item
.
userMobile
}}
</span>
<span
class=
"info-call-time"
v-if=
"item.userCallTime"
>
{{
userCallTime
}}
小时前呼叫
</span>
<span
class=
"info-calling"
v-if=
"item.userCallKfStatus == 1"
>
<img
:src=
"infocallImg"
alt=
""
/>
</span>
</div>
</div>
<div>
<span
class=
"info-phone"
>
{{
item
.
userMobile
}}
</span>
<span
class=
"info-call-time"
v-if=
"item.userCallTime"
>
{{
userCallTime
}}
小时前呼叫
</span>
<span
class=
"info-calling"
v-if=
"item.userCallKfStatus == 1"
>
<img
:src=
"infocallImg"
alt=
""
>
</span>
<div
class=
"call-status"
>
<img
v-if=
"isCall"
@
click=
"drivingCall(item.userId, 1)"
:src=
"isUserChat ? callouting : callout"
alt=
""
/>
</div>
</div>
<div
class=
"line-btn"
@
click=
"openAdvice"
>
诊断建议
<div
class=
"line-btn-tap"
v-if=
"item.adviceStatus && item.adviceStatus == 2"
>
未写
</div>
</div>
</div>
</div>
<div
class=
"line mt20"
>
<div
class=
"line-btn"
@
click=
"openChat"
>
进入诊室
</div>
<div
class=
"line-btn"
@
click=
"openAdvice"
>
诊断建议
<div
class=
"line-btn-tap"
v-if=
"item.adviceStatus && item.adviceStatus == 2"
>
未写
</div></div>
</div>
</div>
</
template
>
<
script
>
import
{
mapState
}
from
"vuex"
;
export
default
{
data
()
{
data
()
{
return
{
infocallImg
:
require
(
'@/assets/image/workbench/calling.png'
)
infocallImg
:
require
(
"@/assets/image/workbench/calling.png"
),
callout
:
require
(
"@/assets/image/workbench/callout.png"
),
callouting
:
require
(
"@/assets/image/workbench/callouting.png"
),
timer
:
null
,
isChat
:
false
,
isUserChat
:
false
,
isDoctorChat
:
false
,
isCall
:
false
,
accId
:
""
,
};
},
props
:{
item
:{
type
:
Object
,
default
:
{}
}
props
:
{
item
:
{
type
:
Object
,
default
:
{},
}
,
},
created
()
{
created
()
{},
mounted
()
{
console
.
log
(
"this.item"
,
this
.
item
);
let
nowData
=
new
Date
().
getTime
();
let
timeleft
=
this
.
item
.
appointBeginTime
-
nowData
;
if
(
timeleft
<
120000
&&
nowData
<
this
.
item
.
appointEndTime
)
{
clearInterval
(
this
.
timer
);
this
.
down
();
}
else
{
this
.
isCall
=
true
;
}
// if (this.appointBeginTime > 0) {
// this.time=this.timeleft
// this.down();
// }
},
computed
:{
computed
:
{
...
mapState
({
showChat
:
'showChat'
,
showAdvice
:
'showAdvice'
,
showChat
:
"showChat"
,
showAdvice
:
"showAdvice"
,
}),
diagnoseType
()
{
switch
(
this
.
item
.
diagnoseType
)
{
switch
(
this
.
item
.
diagnoseType
)
{
case
1
:
return
'语音问诊'
case
2
:
return
'视频问诊'
case
3
:
return
'图文问诊'
return
"语音问诊"
;
case
2
:
return
"视频问诊"
;
case
3
:
return
"图文问诊"
;
default
:
return
''
return
""
;
}
},
diagnoseTypeIcon
()
{
switch
(
this
.
item
.
diagnoseType
)
{
diagnoseTypeIcon
()
{
switch
(
this
.
item
.
diagnoseType
)
{
case
1
:
return
'voice'
return
"voice"
;
case
2
:
return
'voice'
return
"voice"
;
case
3
:
return
'photo'
return
"photo"
;
default
:
return
'photo'
return
"photo"
;
}
},
returnStatusText
()
{
switch
(
this
.
item
.
returnStatus
)
{
switch
(
this
.
item
.
returnStatus
)
{
case
1
:
return
'待处理'
case
2
:
...
...
@@ -136,237 +198,311 @@ export default {
case
5
:
return
'已取消'
default
:
return
'暂无'
;
return
"暂无"
;
}
},
appointBeginTime
()
{
return
new
Date
(
this
.
item
.
appointBeginTime
).
format
(
"yyyy-MM-dd hh:mm"
);
},
appointEndTime
()
{
appointEndTime
()
{
return
new
Date
(
this
.
item
.
appointEndTime
).
format
(
"hh:mm"
);
},
userCallTime
()
{
return
new
Date
(
this
.
item
.
userCallTime
).
format
(
"hh:mm"
);
},
doctorCallTime
()
{
doctorCallTime
()
{
return
new
Date
(
this
.
item
.
doctorCallTime
).
format
(
"hh:mm"
);
}
},
nowtime
()
{
return
new
Date
().
getTime
()
-
this
.
item
.
appointBeginTime
;
},
},
methods
:
{
openChat
()
{
if
(
this
.
showChat
){
down
()
{
this
.
timer
=
setInterval
(()
=>
{
let
nowData
=
new
Date
().
getTime
();
let
timeleft
=
this
.
item
.
appointBeginTime
-
nowData
;
if
(
timeleft
<
120000
&&
nowData
<
this
.
item
.
appointEndTime
)
{
this
.
isCall
=
true
;
clearInterval
(
this
.
timer
);
}
},
1000
);
},
getInfo
(
id
)
{
let
url
=
`/im/team/detail?tid=
${
this
.
item
.
imTeamId
}
`
;
return
this
.
GET
(
url
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
"000000"
)
{
let
{
memberList
}
=
res
.
data
;
console
.
log
(
"---memberList"
,
memberList
);
if
(
memberList
)
{
let
accId
=
memberList
.
filter
((
val
)
=>
{
return
val
.
id
==
id
;
});
return
accId
[
0
].
accId
;
}
}
})
.
catch
(()
=>
{});
},
// 主动呼叫 roletype 1:助诊医生 2:接诊医生
drivingCall
(
id
,
roletype
)
{
this
.
getInfo
(
id
).
then
((
res
)
=>
{
console
.
log
(
res
)
let
url
=
`/im/team/call/direct/`
;
let
params
=
{
imAccId
:
res
,
imTeamId
:
this
.
item
.
imTeamId
,
liveRoomId
:
this
.
item
.
roomId
,
};
this
.
POST
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
"000000"
)
{
if
(
roletype
==
1
)
{
this
.
isUserChat
=
true
;
}
else
{
console
.
log
(
"ererer"
)
this
.
isDoctorChat
=
true
;
}
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"warning"
,
});
}
});
});
},
openChat
()
{
if
(
this
.
showChat
)
{
this
.
$message
({
message
:
'不可同时进入多个诊室,请先退出已进入的诊室,再试。'
,
message
:
"不可同时进入多个诊室,请先退出已进入的诊室,再试。"
,
type
:
"warning"
,
duration
:
1000
duration
:
1000
,
});
return
false
;
}
const
i
=
this
.
item
;
// if(i.imTeamId){
// const params = {
// teamIdList: [i.imTeamId]
// }
// this.POST(`/im/team/call/op/ack/`,params).then(res=>{
// if(res.code == '000000'){
// this.$store.commit('updateShowChat', true);
// this.$store.commit('updateCurrentChat', i);
// }
// }).catch(err=>{
// this.$message({
// message: err.message,
// type: "warning",
// duration:1000
// });
// })
//
// }
this
.
$store
.
dispatch
(
'gotoInquiry'
,
i
);
this
.
$store
.
dispatch
(
"gotoInquiry"
,
i
);
},
openAdvice
()
{
if
(
this
.
showAdvice
)
{
if
(
this
.
showAdvice
)
{
this
.
$message
({
message
:
'不可同时打开多个诊断建议,请先退出已打开的诊断建议,再试。'
,
message
:
"不可同时打开多个诊断建议,请先退出已打开的诊断建议,再试。"
,
type
:
"warning"
,
duration
:
1000
duration
:
1000
,
});
return
false
;
}
const
i
=
this
.
item
.
diagnoseLogId
;
// const i = 11;
this
.
GET
(
`/diagnose/admin/diagnose/doctorAdvice/list/
${
i
}
`
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
){
console
.
log
(
res
.
data
);
this
.
$store
.
commit
(
'updateShowAdvice'
,
true
);
this
.
$store
.
commit
(
'updateCurrentAdvice'
,
res
.
data
);
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"warning"
,
duration
:
1000
});
this
.
GET
(
`/diagnose/admin/diagnose/doctorAdvice/list/
${
i
}
`
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
"000000"
)
{
console
.
log
(
res
.
data
);
this
.
$store
.
commit
(
"updateShowAdvice"
,
true
);
this
.
$store
.
commit
(
"updateCurrentAdvice"
,
res
.
data
);
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"warning"
,
duration
:
1000
,
});
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.inquiry-wrap
{
box-sizing
:
border-box
;
margin-bottom
:
10px
;
padding
:
20px
34px
;
background
:
#ffffff
;
border-radius
:
18px
;
user-select
:
none
;
min-width
:
610px
;
border
:
1px
solid
#cccccc
;
.line
{
display
:
flex
;
justify-content
:
space-between
;
.left
{
color
:
#02120f
;
font-size
:
28px
;
.dep
{
font-size
:
20px
;
}
.talk
{
margin-right
:
5px
;
display
:
inline-block
;
width
:
120px
;
height
:
24px
;
background
:
#f0f2f5
;
border-radius
:
23px
;
font-size
:
14px
;
color
:
#6a7990
;
text-align
:
center
;
line-height
:
24px
;
}
.time
{
display
:
inline-block
;
width
:
217px
;
height
:
24px
;
background
:
#f0f2f5
;
border-radius
:
23px
;
font-size
:
14px
;
color
:
#6a7990
;
text-align
:
center
;
line-height
:
24px
;
}
}
.right
{
.right-status
{
color
:
#0d9078
;
font-size
:
14px
;
}
.right-time
{
margin-top
:
5px
;
color
:
#6a7990
;
font-size
:
12px
;
}
.grey
{
color
:
#6a7990
;
}
.org
{
color
:
#ff5e57
;
}
}
.inquiry-user-container
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
.inquiry-user
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
20px
;
.inquiry-user-img
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
.avatar
{
background
:
#dddddd
;
border-radius
:
36px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
}
}
}).
catch
(
err
=>
{
console
.
log
(
err
);
})
.inquiry-user-info
{
font-size
:
14px
;
margin-left
:
10px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
margin-right
:
10px
;
.info-name
{
font-size
:
18px
;
color
:
#02120f
;
font-weight
:
bold
;
}
.info-phone
{
color
:
#6a7990
;
font-size
:
16px
;
}
.info-call-time
{
color
:
#ff5e57
;
}
.info-calling
{
width
:
15px
;
height
:
15px
;
display
:
inline-block
;
img
{
width
:
100%
;
}
}
}
.call-status
{
width
:
45px
;
height
:
46px
;
cursor
:
pointer
;
img
{
width
:
45px
;
height
:
46px
;
}
}
}
}
.line-btn
{
cursor
:
pointer
;
position
:
relative
;
width
:
238px
;
height
:
37px
;
background
:
rgba
(
68
,
146
,
132
,
0
.09
);
border-radius
:
23px
;
border
:
1px
solid
rgba
(
68
,
146
,
132
,
0
.31
);
text-align
:
center
;
line-height
:
37px
;
color
:
#0d9078
;
font-size
:
14px
;
font-weight
:
bold
;
.line-btn-tap
{
position
:
absolute
;
top
:
-10px
;
right
:
20px
;
width
:
48px
;
height
:
20px
;
background
:
#0d9078
;
border-radius
:
7px
7px
7px
0px
;
font-size
:
14px
;
color
:
#ffffff
;
line-height
:
20px
;
}
span
{
font-weight
:
bold
;
}
}
}
.mt30
{
margin-top
:
30px
;
}
.mt20
{
margin-top
:
20px
;
}
.appointment
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url("../../assets/image/workbench/appointment.png")
no-repeat
;
background-size
:
cover
;
margin-right
:
5px
;
}
.video
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url("../../assets/image/workbench/video.png")
no-repeat
;
background-size
:
cover
;
}
.photo
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url("../../assets/image/workbench/photo.png")
no-repeat
;
background-size
:
cover
;
}
.voice
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url("../../assets/image/workbench/voice.png")
no-repeat
;
background-size
:
cover
;
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.inquiry-wrap
{
box-sizing
:
border-box
;
margin-bottom
:
10px
;
padding
:
20px
34px
;
background
:
#FFFFFF
;
border-radius
:
18px
;
user-select
:
none
;
min-width
:
572px
;
border
:
1px
solid
#cccccc
;
.line
{
display
:
flex
;
justify-content
:
space-between
;
.left
{
color
:
#02120F
;
font-size
:
28px
;
.dep
{
font-size
:
20px
;
}
.talk
{
display
:
inline-block
;
width
:
120px
;
height
:
24px
;
background
:
#F0F2F5
;
border-radius
:
23px
;
font-size
:
14px
;
color
:
#6A7990
;
text-align
:
center
;
line-height
:
24px
;
}
.time
{
display
:
inline-block
;
width
:
217px
;
height
:
24px
;
background
:
#F0F2F5
;
border-radius
:
23px
;
font-size
:
14px
;
color
:
#6A7990
;
text-align
:
center
;
line-height
:
24px
;
}
}
.right
{
.right-status
{
color
:
#0D9078
;
font-size
:
14px
;
}
.right-time
{
margin-top
:
5px
;
color
:
#6A7990
;
font-size
:
12px
;
}
.grey
{
color
:
#6A7990
;
}
.org
{
color
:
#FF5E57
;
}
}
.inquiry-user
{
display
:
flex
;
width
:
50%
;
.inquiry-user-img
{
width
:
36px
;
height
:
36px
;
background
:
#DDDDDD
;
border-radius
:
36px
;
}
.inquiry-user-info
{
font-size
:
14px
;
margin-left
:
5px
;
.info-name
{
font-size
:
18px
;
color
:
#02120F
;
font-weight
:
bold
;
}
.info-phone
{
color
:
#6A7990
;
font-size
:
16px
;
}
.info-call-time
{
color
:
#FF5E57
;
}
.info-calling
{
width
:
15px
;
height
:
15px
;
display
:
inline-block
;
img
{
width
:
100%
;
}
}
}
}
.line-btn
{
position
:
relative
;
width
:
238px
;
height
:
37px
;
background
:
rgba
(
68
,
146
,
132
,
0
.09
);
border-radius
:
23px
;
border
:
1px
solid
rgba
(
68
,
146
,
132
,
0
.31
);
text-align
:
center
;
line-height
:
37px
;
color
:
#0D9078
;
font-size
:
14px
;
font-weight
:
bold
;
.line-btn-tap
{
position
:
absolute
;
top
:
-10px
;
right
:
20px
;
width
:
48px
;
height
:
20px
;
background
:
#0D9078
;
border-radius
:
7px
7px
7px
0px
;
font-size
:
14px
;
color
:
#ffffff
;
line-height
:
20px
;
}
}
}
.mt30
{
margin-top
:
30px
;
}
.mt20
{
margin-top
:
20px
;
}
.appointment
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url('../../assets/image/workbench/appointment.png')
no-repeat
;
background-size
:
cover
;
}
.video
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url('../../assets/image/workbench/video.png')
no-repeat
;
background-size
:
cover
;
}
.photo
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url('../../assets/image/workbench/photo.png')
no-repeat
;
background-size
:
cover
;
}
.voice
{
width
:
12px
;
height
:
12px
;
display
:
inline-block
;
background
:
url('../../assets/image/workbench/voice.png')
no-repeat
;
background-size
:
cover
;
}
}
</
style
>
src/store/module/socket.js
浏览文件 @
cbe87ba4
...
...
@@ -40,8 +40,9 @@ export default {
});
state
.
socketClient
.
on
(
"diagnose_push_event"
,
(
socket
)
=>
{
console
.
log
(
'diagnose_push_event---'
,
socket
);
const
{
list
,
countRespList
}
=
socket
;
const
{
list
,
allSize
,
countRespList
}
=
socket
;
store
.
commit
(
'updateCurrentDiagList'
,
list
);
store
.
commit
(
'updateAllSize'
,
allSize
);
store
.
commit
(
'updateCurrentCalList'
,
countRespList
);
});
state
.
socketClient
.
on
(
"diagnose_call_push_event"
,
(
socket
)
=>
{
...
...
src/store/mutations/index.js
浏览文件 @
cbe87ba4
...
...
@@ -3,6 +3,9 @@ export default {
updateCurrentDiagList
(
state
,
obj
)
{
state
.
currentDiagList
=
obj
;
},
updateAllSize
(
state
,
allSize
){
state
.
allSize
=
allSize
;
},
// 改变原数据
changeRawCurrentCalList
(
state
,
obj
){
// console.log("obj",obj)
...
...
src/store/state.js
浏览文件 @
cbe87ba4
...
...
@@ -2,6 +2,7 @@
export
default
{
currentDiagList
:[],
allSize
:
0
,
currentCalList
:{},
RawCurrentCalList
:[],
currentChat
:
{},
...
...
src/views/IM/diagnosis-admin/administrators.vue
浏览文件 @
cbe87ba4
...
...
@@ -4,7 +4,7 @@
<div
class=
"header"
>
<!-- 面包屑 -->
<el-breadcrumb
separator=
"/"
>
<el-breadcrumb-item
>
首页
</el-breadcrumb-item>
<el-breadcrumb-item>
首页
</el-breadcrumb-item>
<el-breadcrumb-item>
我的工作台
</el-breadcrumb-item>
</el-breadcrumb>
<el-row
style=
"margin-top: 30px"
>
...
...
@@ -21,70 +21,26 @@
>
</el-date-picker>
</el-col>
<el-col
:span=
"12"
style=
"margin-lfet: 10px"
>
<div
style=
"margin-left: 10px"
>
<div
class=
"total"
>
3519
</div>
<div
class=
"state"
>
全部
</div>
</div>
</el-col>
</el-row>
</div>
</el-col>
<el-col
:span=
"12"
>
<div>
<el-row
type=
"flex"
justify=
"space-between"
>
<el-col
:span=
"8"
>
<div>
<div
class=
"total"
>
3519
</div>
<div
class=
"state"
>
全部
</div>
</div>
</el-col>
<el-col
:span=
"8"
>
<div>
<div
class=
"total aa"
>
3519
</div>
<div
class=
"state"
>
全部
</div>
</div>
</el-col>
<el-col
:span=
"8"
>
<div>
<div
class=
"total"
>
3519
</div>
<div
class=
"state"
>
全部
</div>
</div>
</el-col>
<el-col
:span=
"8"
>
<div>
<div
class=
"total"
>
3519
</div>
<div
class=
"state"
>
全部
</div>
</div>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
<!-- 问诊列表 -->
<div
class=
"box"
>
<div
class=
"row"
v-for=
"(item, index ) in operatorslist"
:key=
"index"
>
<consultationlist
:workbenchAdminDate=
"workbenchAdminDate"
:operatorsItem=
"item"
></consultationlist>
<div
class=
"consultation-container"
>
<div
class=
"consultation-content"
>
<div
class=
"consultation-li"
v-for=
"(item, index) in operatorslist"
:key=
"index"
>
<consultationlist
:workbenchAdminDate=
"workbenchAdminDate"
:operatorsItem=
"item"
></consultationlist>
</div>
</div>
</div>
<!-- 底部 -->
<!--
<div
class=
"footer"
>
-->
<!-- <!– 分页 –>-->
<!--
<el-row
type=
"flex"
justify=
"end"
>
-->
<!--
<el-pagination-->
<!-- background-->
<!-- @size-change="handleSizeChange"-->
<!-- @current-change="handleCurrentChange"-->
<!-- :current-page="currentPage"-->
<!-- :page-sizes="[100, 200, 300, 400]"-->
<!-- :page-size="100"-->
<!-- layout="total, sizes, prev, pager, next"-->
<!-- :total="400"-->
<!-- >-->
<!--
</el-pagination>
-->
<!--
</el-row>
-->
<!--
</div>
-->
</div>
</
template
>
...
...
@@ -95,7 +51,9 @@ export default {
consultationlist
,
},
data
()
{
const
d
=
localStorage
.
getItem
(
'workbenchAdminDate'
)
||
new
Date
().
format
(
'yyyy-MM-dd'
);
const
d
=
localStorage
.
getItem
(
"workbenchAdminDate"
)
||
new
Date
().
format
(
"yyyy-MM-dd"
);
return
{
workbenchAdminDate
:
d
,
operatorslist
:
[],
...
...
@@ -104,27 +62,26 @@ export default {
created
()
{
this
.
init
();
},
watch
:{
},
watch
:
{},
methods
:
{
init
()
{
init
()
{
this
.
GET
(
"/diagnose/match/list"
).
then
(({
code
,
data
})
=>
{
if
(
code
==
"000000"
)
{
this
.
operatorslist
=
data
;
}
});
}
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.administrators
{
height
:
calc
(
100%
-
76px
);
.header
{
padding
:
40px
32px
0
32
px
;
padding
:
30
px
;
width
:
100%
;
height
:
181px
;
background
:
#ffffff
;
.el-input__inner
{
width
:
173px
;
...
...
@@ -167,19 +124,25 @@ export default {
line-height
:
20px
;
margin
:
0
auto
;
}
.aa
{
color
:
#449284
;
}
.box
{
display
:
flex
;
width
:
100%
;
flex-flow
:
row
wrap
;
align-content
:
flex-start
;
min-height
:
600px
;
max-height
:
700px
;
.consultation-container
{
overflow-y
:
scroll
;
.row
{
flex
:
0
0
50%
;
height
:
calc
(
100%
-
154px
);
width
:
100%
;
padding
:
20px
;
.consultation-content
{
display
:
grid
;
grid-template-columns
:
33
.3%
33
.3%
33
.3%
;
grid-row-gap
:
20px
;
// grid-column-gap: 20px;
overflow
:
hidden
;
.consultation-li
{
width
:
90%
;
margin
:
0
auto
;
display
:
flex
;
justify-content
:
center
;
}
}
}
.footer
{
...
...
src/views/IM/diagnosis-admin/workbench.vue
浏览文件 @
cbe87ba4
<
template
>
<div
class=
"
diagnosis-list-content
"
>
<div
class=
"select-content
screenSet content-top
"
>
<div
class=
"
workbench-container
"
>
<div
class=
"select-content"
>
<div
class=
"title"
>
我的工作台
</div>
<!-- 时间 -->
<
el-row
type=
"flex"
justify=
"center
"
>
<div
id=
"picker"
>
<div
class=
"
block
"
>
<
div
class=
"search-box
"
>
<div
class=
"
search-item
"
>
<el-date-picker
@
change=
"changeDatetime"
v-model=
"searchParam.dateTime"
type=
"date"
size=
"small"
clear-icon=
"el-input-icon"
:clearable=
"false"
>
</el-date-picker>
</div>
<div
class=
"search-item"
>
<el-input
size=
"small"
class=
"input-item"
v-model=
"searchParam.checkvalue"
placeholder=
"输入问诊单号/医生姓名"
></el-input>
</div>
<div>
<el-button
type=
"primary"
size=
"small"
@
click=
"search()"
>
搜索
</el-button
>
</div>
</
el-row
>
</
div
>
<!-- tab栏 -->
<el-radio-group
@
change=
"tabChange"
...
...
@@ -34,17 +48,17 @@
<!--
<el-radio-button
label=
"1"
>
待处理(
{{
currentCalList
}}
)
</el-radio-button>
-->
</el-radio-group>
</div>
<div
class=
"
select-content screenSe
t"
>
<div
class=
"
forbox"
>
<div
class=
"
workbench-conten
t"
>
<div
class=
"
workbench-li"
>
<div
class=
"
for
"
class=
"
workbench
"
v-for=
"(item, index) in currentDiagList"
:key=
"
'for' +
index"
:key=
"index"
>
<inquiryList-component
:item=
"item"
></inquiryList-component>
</div>
</div>
<
el-row
type=
"flex"
justify=
"end
"
>
<
div
class=
"pagination-container
"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
...
...
@@ -53,11 +67,13 @@
:page-sizes=
"[6, 12, 18, 24]"
:page-size=
"searchParam.pageSize"
layout=
"prev, pager, next, sizes, jumper"
:total=
"
totalRows
"
:total=
"
allSize
"
>
</el-pagination>
</el-row>
</div>
</div>
</div>
</
template
>
...
...
@@ -72,6 +88,7 @@ export default {
},
computed
:
{
...
mapState
({
allSize
:
'allSize'
,
currentDiagList
:
"currentDiagList"
,
currentCalList
:
"currentCalList"
,
soketQuest
:
"soketQuest"
,
...
...
@@ -105,10 +122,11 @@ export default {
return
{
tabPosition
:
"1"
,
showChat
:
true
,
totalRows
:
4
0
,
totalRows
:
0
,
loading
:
false
,
searchParam
:
{
dateTime
:
d
,
checkvalue
:
""
,
// 模拟值后去
operateUserId
:
id
,
returnStatus
:
1
,
pageSize
:
1
,
...
...
@@ -157,8 +175,13 @@ export default {
const
s
=
this
.
searchParam
;
s
.
dateTime
=
val
.
format
(
"yyyy-MM-dd"
);
this
.
searchParam
=
s
;
},
search
()
{
this
.
inquirySearch
(
"clear"
);
},
handleSizeChange
(
val
)
{
const
s
=
this
.
searchParam
;
s
.
pageSize
=
val
;
...
...
@@ -254,24 +277,25 @@ export default {
}
}
}
.forbox
{
display
:
flex
;
justify-content
:
space-between
;
// justify-content: space-between;
.for
{
max-width
:
50%
;
display
:
flex
;
}
}
.diagnosis-list-content
{
.workbench-container
{
.select-content
{
margin-bottom
:
10px
;
padding
:
10px
;
padding
:
0
20px
;
background
:
#fff
;
overflow
:
hidden
!
important
;
&
.content-top
{
padding-bottom
:
0
;
.search-box
{
display
:
flex
;
justify-content
:
flex-start
;
width
:
250px
;
margin
:
20px
0
;
.search-item
{
margin-right
:
20px
;
.input-item
{
width
:
333px
;
}
}
}
.title
{
height
:
50px
;
display
:
flex
;
...
...
@@ -285,16 +309,32 @@ export default {
}
}
}
}
.el-row
{
margin-bottom
:
20px
;
&
:last-child
{
margin-bottom
:
0
;
.workbench-content
{
padding
:
20px
;
.workbench-li
{
display
:
flex
;
justify-content
:
space-between
;
.workbench
{
max-width
:
50%
;
display
:
flex
;
}
}
.pagination-container
{
background-color
:
#fff
;
height
:
71px
;
background
:
#FFFFFF
;
border-radius
:
18px
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
margin-top
:
10px
;
padding
:
0
20px
;
}
}
}
.el-col
{
border-radius
:
4px
;
}
.bg-purple-dark
{
background
:
#99a9bf
;
}
...
...
@@ -317,8 +357,8 @@ export default {
background-color
:
#f9fafc
;
}
@media
screen
and
(
min-width
:
1900px
)
{
.
forbox
{
.
for
{
.
workbench-li
{
.
workbench
{
width
:
30%
;
}
}
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录