提交 a3a478ec 编写于 作者: xiaoping.di's avatar xiaoping.di

Merge branch 'feature/dxp' into 'develop'

Feature/dxp

See merge request com.pica.cloud.education.frontend/pica-admin-consultation!246
import request from 'mn-template/plugins/http'; import request from 'mn-template/plugins/http';
export const getMatchList = async() => { export const getMatchList = async () => {
return request({ return request({
url: '/diagnose/match/list', url: '/diagnose/match/list',
method: 'get', method: 'get',
}); });
}; };
export const getCountByDay = async (data) => { export const getCountByDay = async (data) => {
return request({ return request({
url: `/im/team/callOp/countByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`, url: `/im/team/callOp/countByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get', method: 'get',
}); });
}; };
export const lateCountByDay = async (data) => { export const lateCountByDay = async (data) => {
return request({ return request({
url: `/diagnose/superiorDoctor/lateCountByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`, url: `/diagnose/superiorDoctor/lateCountByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get', method: 'get',
}); });
}; };
\ No newline at end of file
import request from 'mn-template/plugins/http'; import request from 'mn-template/plugins/http';
export const doctorListAnd = async(data) => { export const doctorListAnd = async (data) => {
return request({ return request({
url: '/diagnose/admin/diagnose/operate/and/doctorList', url: '/diagnose/admin/diagnose/operate/and/doctorList',
data: data, data: data,
method: 'post', method: 'post',
}); });
}; };
export const doctorListRest = async (data) => { export const doctorListRest = async (data) => {
return request({ return request({
url: 'diagnose/admin/diagnose/reset/operate/doctorList', url: 'diagnose/admin/diagnose/reset/operate/doctorList',
method: 'post', method: 'post',
data:data data: data,
}); });
}; };
export const conditionUpdate = async (data) => { export const conditionUpdate = async (data) => {
return request({ return request({
url: '/diagnose/socket/condition/update', url: '/diagnose/socket/condition/update',
...@@ -50,9 +50,10 @@ export const manualCall = async (data) => { ...@@ -50,9 +50,10 @@ export const manualCall = async (data) => {
}; };
// 查询当前上级医生下排队的信息 // 查询当前上级医生下排队的信息
export const waitPersonNum = async (doctorId) => { export const waitPersonNum = async (data) => {
return request({ return request({
url: `/admin/diagnose/queueList/${doctorId}`, url: '/diagnose/admin/diagnose/queueList/doctorId',
method: 'post', method: 'post',
data: data,
}); });
}; };
...@@ -7,13 +7,19 @@ ...@@ -7,13 +7,19 @@
<div class="name"> <div class="name">
{{ operatorsItem.name || '' }} {{ operatorsItem.name || '' }}
</div> </div>
<div class="details" @click="goSelectDeart"> <div
class="details"
@click="goSelectDeart"
>
<div class="see"> <div class="see">
<span>查看选择科室</span> <span>查看选择科室</span>
<i class="el-icon-arrow-right" /> <i class="el-icon-arrow-right" />
</div> </div>
</div> </div>
<div class="details" @click="goworkBench"> <div
class="details"
@click="goworkBench"
>
<div class="see"> <div class="see">
<span>待处理详情</span> <span>待处理详情</span>
<i class="el-icon-arrow-right" /> <i class="el-icon-arrow-right" />
...@@ -24,7 +30,7 @@ ...@@ -24,7 +30,7 @@
</template> </template>
<script> <script>
// import { conditionUpdate } from '@/api/workbench'; // import { conditionUpdate } from '@/api/workbench';
export default { export default {
props: { props: {
...@@ -77,7 +83,7 @@ ...@@ -77,7 +83,7 @@
path: '/workbench-new', path: '/workbench-new',
query: { id: this.operatorsItem.id }, query: { id: this.operatorsItem.id },
}); });
} },
}, },
}; };
</script> </script>
...@@ -121,9 +127,9 @@ ...@@ -121,9 +127,9 @@
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #0D9078; color: #0d9078;
} }
i{ i {
color: rgba(13, 144, 120, 1); color: rgba(13, 144, 120, 1);
} }
} }
......
import { teamDetail, callDirect } from '@/api/diagnosis'; import { teamDetail, callDirect } from '@/api/diagnosis';
import { import { waitPersonNum, manualCall } from '@/api/workbench.js';
waitPersonNum,
doctorAdviceList,
manualCall,
} from '@/api/workbench.js';
import { createNamespacedHelpers } from 'vuex'; import { createNamespacedHelpers } from 'vuex';
const { mapState } = createNamespacedHelpers('main'); const { mapState } = createNamespacedHelpers('main');
let clipboard = null;
export default { export default {
props: { props: {
item: { item: {
...@@ -48,7 +45,6 @@ export default { ...@@ -48,7 +45,6 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
showChat: (state) => state.showChat, showChat: (state) => state.showChat,
showAdvice: (state) => state.showAdvice,
}), }),
doctorCallStatus() { doctorCallStatus() {
switch (this.item.doctorCallStatus) { switch (this.item.doctorCallStatus) {
...@@ -60,6 +56,8 @@ export default { ...@@ -60,6 +56,8 @@ export default {
return '被挂断'; return '被挂断';
case 4: case 4:
return '已拨打完成'; return '已拨打完成';
case 5:
return '电话呼叫中';
default: default:
return ''; return '';
} }
...@@ -78,30 +76,6 @@ export default { ...@@ -78,30 +76,6 @@ export default {
return ''; return '';
} }
}, },
diagnoseType() {
switch (this.item.diagnoseType) {
case 1:
return '语音问诊';
case 2:
return '视频问诊';
case 3:
return '图文问诊';
default:
return '';
}
},
diagnoseTypeIcon() {
switch (this.item.diagnoseType) {
case 1:
return 'voice';
case 2:
return 'voice';
case 3:
return 'photo';
default:
return 'photo';
}
},
appointBeginTime() { appointBeginTime() {
if (this.item.appointBeginTime) { if (this.item.appointBeginTime) {
return new Date(this.item.appointBeginTime).format('hh:mm'); return new Date(this.item.appointBeginTime).format('hh:mm');
...@@ -116,28 +90,18 @@ export default { ...@@ -116,28 +90,18 @@ export default {
return ''; return '';
} }
}, },
userCallTime() { // 基层医生上次呼叫医助时间
return new Date(this.item.userCallTime).format('hh:mm'); userLastCallTime() {
}, if (this.item.userLastCallTime) {
// 助诊呼叫状态 return new Date(this.item.userLastCallTime).getTime();
userCallKfStatus() { } else {
return this.item.userCallKfStatus; return null;
}, }
// 接诊呼叫状态
doctorCallKfStatus() {
return this.item.doctorCallKfStatus;
},
// 接诊 在线状态
doctorTrtcEntryStatus() {
return this.item.doctorTrtcEntryStatus;
},
// 助诊 在线状态
userTrtcEntryStatus() {
return this.item.userTrtcEntryStatus;
}, },
pastUserCallTime() { // 上级医生上一次呼叫医助时间
if (this.item.userCallTime) { doctorLastCallTime() {
return this.formatDateData(this.item.userCallTime); if (this.item.doctorLastCallTime) {
return this.formatDateData(this.item.doctorLastCallTime);
} else { } else {
return null; return null;
} }
...@@ -161,12 +125,6 @@ export default { ...@@ -161,12 +125,6 @@ export default {
console.log(newVal, 'newValnewValnewVal'); console.log(newVal, 'newValnewValnewVal');
console.log(newVal, oldVal, 'newVal, oldVal'); console.log(newVal, oldVal, 'newVal, oldVal');
if (newVal !== oldVal) { if (newVal !== oldVal) {
if (newVal.doctorTrtcEntryStatus == 2) {
this.isDoctorChat = false;
}
if (newVal.userTrtcEntryStatus == 2) {
this.isUserChat = false;
}
if (newVal.doctorCallStatus !== oldVal.doctorCallStatus) { if (newVal.doctorCallStatus !== oldVal.doctorCallStatus) {
this.isManuacall = false; this.isManuacall = false;
} }
...@@ -180,18 +138,7 @@ export default { ...@@ -180,18 +138,7 @@ export default {
}, },
}, },
created() {}, created() {},
mounted() { mounted() {},
if (this.item.returnStatus == 1 || this.item.returnStatus == 3) {
const nowData = new Date().getTime();
const timeleft = this.item.appointBeginTime - nowData;
if (timeleft < 120000 && nowData < this.item.appointEndTime) {
clearInterval(this.timer);
this.down();
} else {
this.isCall = true;
}
}
},
methods: { methods: {
manualDialing(type) { manualDialing(type) {
if (this.doctorCallKfStatus === 1) { if (this.doctorCallKfStatus === 1) {
...@@ -244,7 +191,7 @@ export default { ...@@ -244,7 +191,7 @@ export default {
}, },
formatDateData(time) { formatDateData(time) {
const now_data = new Date().getTime(); const now_data = new Date().getTime();
const my_time = now_data - time; const my_time = now_data - new Date(time).getTime();
const hours = my_time / 1000 / 60 / 60; const hours = my_time / 1000 / 60 / 60;
const hoursRound = Math.floor(hours); const hoursRound = Math.floor(hours);
const minutes = my_time / 1000 / 60 - 60 * hoursRound; const minutes = my_time / 1000 / 60 - 60 * hoursRound;
...@@ -256,10 +203,11 @@ export default { ...@@ -256,10 +203,11 @@ export default {
).toFixed(0); ).toFixed(0);
if (hoursRound > 0 && minutesRound > 0) { if (hoursRound > 0 && minutesRound > 0) {
return hoursRound + '小时' + minutesRound + '分' + seconds + '秒'; // return hoursRound + '小时' + minutesRound + '分' + seconds + '秒';
return hoursRound + '小时';
} }
if (hoursRound == 0 && minutesRound > 0) { if (hoursRound == 0 && minutesRound > 0) {
return minutesRound + '分'; return minutesRound + '分';
} }
if (hoursRound == 0 && minutesRound == 0) { if (hoursRound == 0 && minutesRound == 0) {
return seconds + '秒'; return seconds + '秒';
...@@ -335,39 +283,14 @@ export default { ...@@ -335,39 +283,14 @@ export default {
const i = this.item; const i = this.item;
this.$store.dispatch('main/gotoInquiry', i); this.$store.dispatch('main/gotoInquiry', i);
}, },
openAdvice() {
if (this.showAdvice) {
this.$message({
message: '不可同时打开多个诊断建议,请先退出已打开的诊断建议,再试。',
type: 'warning',
duration: 1000,
});
return false;
}
// const i = 11;
doctorAdviceList({
diagnoseLogId: this.item.diagnoseLogId,
})
.then((res) => {
if (res.code == '000000') {
this.$store.commit('main/updateShowAdvice', true);
this.$store.commit('main/updateCurrentAdvice', res.data);
} else {
this.$message({
message: res.message,
type: 'warning',
duration: 1000,
});
}
})
.catch((err) => {
console.log(err);
});
},
waitPersonFun() { waitPersonFun() {
if (!this.isShowWait) { if (!this.isShowWait) {
console.log(this.item.doctorId, 'this.item.doctorId'); const parms = {
waitPersonNum(this.item.doctorId) assistantBeginTime: this.item.appointBeginTime,
doctorId: this.item.doctorId,
};
console.log(parms, 'this.item.doctorId');
waitPersonNum(parms)
.then((res) => { .then((res) => {
if (res.code === '000000') { if (res.code === '000000') {
this.waitPersonList = res.data || []; this.waitPersonList = res.data || [];
...@@ -391,5 +314,19 @@ export default { ...@@ -391,5 +314,19 @@ export default {
}); });
} }
}, },
// 粘帖文本
clipboardAction() {
const _this = this;
console.log(11);
clipboard && clipboard.destroy(); // 不是单例的,所以每次都要销毁
clipboard = new this.ClipboardJS('.copy-orderId', {
// .footer:文档的CSS类名
text: function () {
console.log(_this.item.diagnoseLogId);
_this.$message.success('复制成功');
return _this.item.diagnoseLogId; // 要粘贴的文案
},
});
},
}, },
}; };
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
font-size: 18px; font-size: 18px;
margin-top: 3px; margin-top: 3px;
} }
.notime {
color: #999999;
}
} }
.right { .right {
margin-left: 23px; margin-left: 23px;
...@@ -45,7 +48,7 @@ ...@@ -45,7 +48,7 @@
} }
} }
.superior-doctor { .superior-doctor {
width: 49%; width: 52%;
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: flex-start; align-items: flex-start;
...@@ -58,9 +61,19 @@ ...@@ -58,9 +61,19 @@
height: 40px; height: 40px;
.offline { .offline {
position: absolute; position: absolute;
left: -4px; left: 1px;
top: -4px; top: 0px;
z-index: 10; z-index: 10;
img {
width: 10px;
height: auto;
}
}
.online {
width: 10px;
height: 10px;
background: #0d9078;
border-radius: 50%;
} }
.avatar { .avatar {
position: absolute; position: absolute;
...@@ -79,19 +92,19 @@ ...@@ -79,19 +92,19 @@
.info-name-wrap { .info-name-wrap {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between;
span {
display: block;
}
.info-name {
//display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 18px;
color: #02120f;
font-weight: bold;
}
} }
.info-name {
display: inline-block;
max-width: 85px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 18px;
color: #02120f;
font-weight: bold;
}
.info-container { .info-container {
align-items: center; align-items: center;
flex-direction: row; flex-direction: row;
...@@ -105,17 +118,6 @@ ...@@ -105,17 +118,6 @@
.info-call-time { .info-call-time {
color: #ff5e57; color: #ff5e57;
} }
.info-calling {
width: 15px;
height: 25px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 15px;
height: 15px;
}
}
} }
} }
.manual-call-status { .manual-call-status {
...@@ -140,12 +142,29 @@ ...@@ -140,12 +142,29 @@
} }
} }
.basic-doctor { .basic-doctor {
width: 49%; width: 40%;
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
.basic-user-img, .basic-user-img,
.basic-user-info { .basic-user-info {
position: relative;
padding-right: 6px; padding-right: 6px;
.offline {
position: absolute;
left: 1px;
top: 0px;
z-index: 10;
img {
width: 10px;
height: auto;
}
}
.online {
width: 10px;
height: 10px;
background: #0d9078;
border-radius: 50%;
}
.info-name-wrap { .info-name-wrap {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -174,21 +193,23 @@ ...@@ -174,21 +193,23 @@
color: #ff5e57; color: #ff5e57;
} }
.info-calling { .info-calling {
width: 15px; background: rgba(255, 94, 87, 0.07);
height: 25px; border-radius: 10px;
display: flex; border: 1px solid rgba(255, 94, 87, 0.15);
justify-content: center; height: 20px;
align-items: center; text-align: center;
img { font-size: 14px;
width: 15px; font-family: PingFangSC-Regular, PingFang SC;
height: 15px; font-weight: 400;
} color: #ff5e57;
line-height: 20px;
margin-top: 3px;
} }
} }
} }
} }
.no-info { .no-info {
width: 100%; width: 30%;
height: auto; height: auto;
color: #ff5e57; color: #ff5e57;
} }
......
...@@ -5,20 +5,17 @@ ...@@ -5,20 +5,17 @@
<div class="superior-doctor"> <div class="superior-doctor">
<div class="inquiry-user-img"> <div class="inquiry-user-img">
<div <div
v-if="
diagnoseTypeIcon == 'voice' &&
(item.returnStatus == 1 || item.returnStatus == 3) &&
doctorTrtcEntryStatus != 1
"
class="offline" class="offline"
:class="{ online: item.doctorOnlineStatus == 2 }"
> >
<img <img
v-if="item.doctorOnlineStatus == 3"
:src="offline" :src="offline"
alt="" alt=""
> >
</div> </div>
<div class="avatar"> <div class="avatar">
<el-avatar :src="item.doctorImageUrl" /> <el-avatar :src="item.doctorImageUrl || ''" />
</div> </div>
</div> </div>
<div class="inquiry-user-info"> <div class="inquiry-user-info">
...@@ -34,7 +31,9 @@ ...@@ -34,7 +31,9 @@
</li> </li>
<li class="inquiry-user-status"> <li class="inquiry-user-status">
<!-- 只有--> <!-- 只有-->
<!-- -->
<span <span
v-if="!doctorLastCallTime && item.doctorCallKfStatus != 1"
:class=" :class="
doctorCallStatus === '已拨打完成' doctorCallStatus === '已拨打完成'
? 'status-cll-user-finish' ? 'status-cll-user-finish'
...@@ -42,13 +41,14 @@ ...@@ -42,13 +41,14 @@
" "
>{{ doctorCallStatus }}</span> >{{ doctorCallStatus }}</span>
<span <span
v-if="doctorCallKfStatus == 1" v-if="item.doctorCallKfStatus == 1"
class="status-cll-user-answer" class="status-cll-user-answer"
>正在呼叫</span> >正在呼叫</span>
<span <span
v-else v-if="doctorLastCallTime"
class="status-cll-user-answer" class="status-cll-user-answer"
> 未呼叫</span> >
{{ doctorLastCallTime }}前呼叫医助</span>
</li> </li>
</ul> </ul>
</div> </div>
...@@ -60,14 +60,11 @@ ...@@ -60,14 +60,11 @@
> >
<ul class="basic-user-img"> <ul class="basic-user-img">
<li <li
v-if="
diagnoseTypeIcon == 'voice' &&
(item.returnStatus == 1 || item.returnStatus == 3) &&
userTrtcEntryStatus != 1
"
class="offline" class="offline"
:class="{ online: item.userOnlineStatus == 2 }"
> >
<img <img
v-if="item.userOnlineStatus == 3"
:src="offline" :src="offline"
alt="" alt=""
> >
...@@ -88,13 +85,23 @@ ...@@ -88,13 +85,23 @@
{{ item.userMobile }} {{ item.userMobile }}
</div> </div>
<div <div
v-if="userCallKfStatus == 1" v-if="item.userCallKfStatus == 1"
class="info-calling" class="info-calling"
> >
呼叫中 呼叫中
</div> </div>
<div
v-if="item.userCallKfStatus == 2 && userLastCallTime"
class="info-calling"
>
<span v-if="userLastCallTime">
{{ userLastCallTime }} 前呼叫医助</span>
</div>
</li> </li>
<li class="inquiry-user-status"> <li
v-if="item.userCallKfStatus != 1 && userCallStatus"
class="inquiry-user-status"
>
<span <span
:class=" :class="
userCallStatus === '已拨打完成' userCallStatus === '已拨打完成'
...@@ -111,7 +118,7 @@ ...@@ -111,7 +118,7 @@
class="no-info" class="no-info"
> >
<div <div
v-if="item.acceptStatus == 4" v-if="item.acceptStatus == 2"
class="doctor-late" class="doctor-late"
> >
未开始接诊 未开始接诊
...@@ -122,9 +129,14 @@ ...@@ -122,9 +129,14 @@
> >
暂停接诊 暂停接诊
</div> </div>
<div
v-if="item.acceptStatus == 4"
class="doctor-stop"
>
离开
</div>
</div> </div>
</div> </div>
<!-- 预约时间,复制单号 --> <!-- 预约时间,复制单号 -->
<div class="line line-second"> <div class="line line-second">
<div class="left"> <div class="left">
...@@ -138,7 +150,7 @@ ...@@ -138,7 +150,7 @@
</div> </div>
<div <div
v-else v-else
class="time" class="time notime"
> >
</div> </div>
...@@ -151,8 +163,8 @@ ...@@ -151,8 +163,8 @@
</li> </li>
<li <li
v-if="item.diagnoseLogId" v-if="item.diagnoseLogId"
class="copy" class="copy copy-orderId"
@click="copyDiagnoseLogId" @click="clipboardAction"
> >
复制 复制
</li> </li>
...@@ -172,13 +184,22 @@ ...@@ -172,13 +184,22 @@
/> />
</div> </div>
</div> </div>
<!-- 有基层医生信息 展示进入诊室 -->
<div <div
v-if="item.userId && item.acceptStatus != 1 && item.acceptStatus != 4"
class="line-btn line-btn-enter" class="line-btn line-btn-enter"
:class="{ isManuacall: isManuacall, noIsCall: !isManuacall }" :class="{ isManuacall: isManuacall, noIsCall: !isManuacall }"
@click="openChat" @click="openChat"
>
进入诊室
</div>
<!-- -->
<div
v-else
class="line-btn line-btn-enter"
> >
<div <div
v-if="doctorCallKfStatus == 1" v-if="item.doctorCallKfStatus == 1"
class="call-box" class="call-box"
> >
<img <img
...@@ -201,7 +222,6 @@ ...@@ -201,7 +222,6 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 排队详细 --> <!-- 排队详细 -->
<div <div
v-if="isShowWait" v-if="isShowWait"
......
<template> <template>
<div class="depart-doctor"> <div class="depart-doctor">
<el-tabs v-model="activeMoutendName"> <el-tabs v-model="activeMoutendName">
<el-tab-pane v-for="item in departDoctorList" :key="item.departmentId" :label="item.department + ' ' + item.checkDoctorIdListByDepartment.length + '/' +item.allNum" :name="item.departmentId"> <el-tab-pane
<el-checkbox v-for="item in departDoctorList"
v-model="item.checkAll" :key="item.departmentId"
:indeterminate="item.isIndeterminate" :label="
:disabled="item.allDisabled" item.department +
@change="((value)=>{handleCheckAllChange(value,item)})">全选</el-checkbox> ' ' +
<div style="margin: 10px 0;" /> item.checkDoctorIdListByDepartment.length +
<el-checkbox-group '/' +
v-model="item.checkDoctorIdListByDepartment" item.allNum
@change="((val)=>{handleCheckedCitiesChange(val,item)})" "
> :name="item.departmentId"
<el-checkbox >
v-for="itemChild in item.diagnoseOperateDoctorRespList" <el-checkbox
:key="itemChild.doctorId" v-model="item.checkAll"
:label="itemChild.doctorId" :indeterminate="item.isIndeterminate"
:disabled="itemChild.disabled" :disabled="item.allDisabled"
> @change="
{{ itemChild.doctorName + ' ' }}{{ ' ' +itemChild.doctorId}} (value) => {
</el-checkbox> handleCheckAllChange(value, item);
</el-checkbox-group> }
</el-tab-pane> "
</el-tabs> >
</div> 全选
</template> </el-checkbox>
<div style="margin: 10px 0" />
<script> <el-checkbox-group
export default { v-model="item.checkDoctorIdListByDepartment"
props: { @change="
departDoctorList:{ (val) => {
type: Array, handleCheckedCitiesChange(val, item);
default() { }
return []; "
}, >
}, <el-checkbox
activeMoutendName:{ v-for="itemChild in item.diagnoseOperateDoctorRespList"
type: String, :key="itemChild.doctorId"
default() { :label="itemChild.doctorId"
return ''; :disabled="itemChild.disabled"
}, >
} {{ itemChild.doctorName + ' ' }}{{ ' ' + itemChild.doctorId }}
}, </el-checkbox>
data() { </el-checkbox-group>
return { </el-tab-pane>
}; </el-tabs>
}, </div>
computed: { </template>
},
watch: { <script>
export default {
}, props: {
created() { departDoctorList: {
}, type: Array,
mounted() { default() {
return [];
}, },
},
methods: { activeMoutendName: {
handleCheckAllChange(value, item) { type: String,
let itemNameList = []; default() {
if (value) { return '';
itemNameList = (item.diagnoseOperateDoctorRespList || []).map(item => { },
return item.doctorId; },
}); },
} data() {
item.checkDoctorIdListByDepartment = value ? itemNameList : []; return {};
item.isIndeterminate = false; },
this.$emit('getDepartlist', this.departDoctorList); computed: {},
}, watch: {},
/** created() {},
* checkbox状态 (根据绑定值 checkAll 与 isIndeterminate 联动) mounted() {},
* 半选:checkAll: true或者false,isIndeterminate:true
* 全选:checkAll:true isIndeterminate:false methods: {
* 不选:checkAll:false isIndeterminate:false handleCheckAllChange(value, item) {
*/ let itemNameList = [];
handleCheckedCitiesChange(value, item) { if (value) {
const checkedCount = value.length; itemNameList = (item.diagnoseOperateDoctorRespList || []).map(
item.checkAll = checkedCount === item.diagnoseOperateDoctorRespList.length; (item) => {
if (checkedCount > 0 && checkedCount < item.diagnoseOperateDoctorRespList.length) { return item.doctorId;
item.isIndeterminate = true; }
item.checkAll = true; );
}else{ }
item.isIndeterminate = false; item.checkDoctorIdListByDepartment = value ? itemNameList : [];
} item.isIndeterminate = false;
this.$emit('getDepartlist', this.departDoctorList); this.$emit('getDepartlist', this.departDoctorList);
} },
}, /**
}; * checkbox状态 (根据绑定值 checkAll 与 isIndeterminate 联动)
</script> * 半选:checkAll: true或者false,isIndeterminate:true
* 全选:checkAll:true isIndeterminate:false
<style lang="scss" > * 不选:checkAll:false isIndeterminate:false
.depart-doctor{ */
.el-checkbox__input.is-disabled .el-checkbox__inner{ handleCheckedCitiesChange(value, item) {
border-color: #D9D9D9 !important; const checkedCount = value.length;
background: #fff !important; item.checkAll =
} checkedCount === item.diagnoseOperateDoctorRespList.length;
.el-checkbox.is-disabled .el-checkbox__label{ if (
color: #D9D9D9 !important; checkedCount > 0 &&
} checkedCount < item.diagnoseOperateDoctorRespList.length
.el-radio__input.is-checked+.el-radio__label, .el-tabs__item.is-active { ) {
color: #0D9078 !important; item.isIndeterminate = true;
font-size:16px !important ; item.checkAll = true;
} } else {
.is-active{ item.isIndeterminate = false;
border: none; }
position: relative; this.$emit('getDepartlist', this.departDoctorList);
&::after { },
content: ''; },
position: absolute; };
bottom: 0; </script>
left: 50%;
right: 0; <style lang="scss">
height: 2px; .depart-doctor {
background: #0D9078; .el-checkbox__input.is-disabled .el-checkbox__inner {
width: 50px; border-color: #d9d9d9 !important;
transform: translateX(-50%); background: #fff !important;
} }
} .el-checkbox.is-disabled .el-checkbox__label {
.el-tabs__item.is-top:nth-child(2){ color: #d9d9d9 !important;
padding-left: 22px !important; }
} .el-radio__input.is-checked + .el-radio__label,
.el-tabs__item.is-top:last-child { .el-tabs__item.is-active {
padding-right: 22px !important; color: #0d9078 !important;
} font-size: 16px !important ;
.el-tab-pane{ }
padding: 10px 20px; .is-active {
} border: none;
} position: relative;
&::after {
</style> content: '';
position: absolute;
bottom: 0;
left: 50%;
right: 0;
height: 2px;
background: #0d9078;
width: 50px;
transform: translateX(-50%);
}
}
.el-tabs__item.is-top:nth-child(2) {
padding-left: 22px !important;
}
.el-tabs__item.is-top:last-child {
padding-right: 22px !important;
}
.el-tab-pane {
padding: 10px 20px;
}
}
</style>
...@@ -21,9 +21,7 @@ ...@@ -21,9 +21,7 @@
<i <i
class="talk-icon" class="talk-icon"
:class="diagnoseTypeIcon" :class="diagnoseTypeIcon"
/><span>{{ /><span>{{ diagnoseType }}444</span>
diagnoseType
}}444</span>
</div> </div>
<div class="time"> <div class="time">
<i class="appointment" /><span>{{ appointBeginTime }}555</span>-<span>{{ appointEndTime }}666</span> <i class="appointment" /><span>{{ appointBeginTime }}555</span>-<span>{{ appointEndTime }}666</span>
......
const roundCard = { import io from 'socket.io-client';
const socket = {
namespaced: true, namespaced: true,
state: { state: {
socketClient: null, socketClient: null,
}, },
actions: { actions: {
initCard(context, payload) { initSocket(context, payload) {
const { rootState } = context; const { rootState } = context;
console.log(context, payload, 'context, payload111', rootState); console.log(context, payload, 'context, payload111');
// const { list, allSize, countRespList } = socket; const socketClient = io.connect(payload.url, {
// console.log('-rootState', rootState, socket); query: {
// const { currentTabStatus } = rootState.main; loginUserNum: `diagnose_list_socket_${payload.userId}`,
// context.commit('main/updateCurrentCalList', countRespList, { },
// root: true, // reconnection: false,
// }); });
// context.commit('main/updateAllSize', allSize, { root: true }); context.commit('SET_SOCKET', socketClient, rootState);
// if (list) { socketClient.on('connect', (socket) => {
// const l = list[0] || []; console.log('socket 链接成功', socket, socketClient);
// if (currentTabStatus == 99) { });
// context.commit('main/updateCurrentDiagList', list, { root: true }); socketClient.on('connect_error', (err) => {
// } else { console.log('socket connect_error', err);
// if (currentTabStatus == l.returnStatus) { // state.socketClient.connect();
// context.commit('main/updateCurrentDiagList', list, { });
// root: true, socketClient.on('disconnect', (socket) => {
// }); console.log('socket disconnect----', socket);
// } // state.socketClient.connect();
// if (l.length == 0) { });
// context.commit('main/updateCurrentDiagList', list, { socketClient.on('diagnose_push_event', (socket) => {
// root: true, const { list, allSize, countRespList } = socket;
// }); console.log('-rootState', rootState, socket);
// } const { currentTabStatus } = rootState.main;
// } context.commit('main/updateCurrentCalList', countRespList, {
// } else { root: true,
// context.commit('main/updateCurrentDiagList', [], { root: true }); });
// } context.commit('main/updateAllSize', allSize, { root: true });
if (list) {
const l = list[0] || [];
if (currentTabStatus == 99) {
context.commit('main/updateCurrentDiagList', list, { root: true });
} else {
if (currentTabStatus == l.returnStatus) {
context.commit('main/updateCurrentDiagList', list, {
root: true,
});
}
if (l.length == 0) {
context.commit('main/updateCurrentDiagList', list, {
root: true,
});
}
}
} else {
context.commit('main/updateCurrentDiagList', [], { root: true });
}
});
socketClient.on('diagnose_call_push_event', (socket) => {
console.log(
socket,
'socketsocket',
window._VM.$store.state.main.soketQuest
);
const l = window._VM.$store.state.main.noticeList;
if (l.length >= 5) {
l.shift();
}
l.push(socket);
const n = { notifyIndex: l.length, ...socket };
context.commit('main/updateNoticeList', l, { root: true });
const { path } = window._VM.$route;
const operateUserId = window._VM.$store.state.main.soketQuest
.operateUserId
? window._VM.$store.state.main.soketQuest.operateUserId
: '';
if (
path &&
String(path).indexOf('workbench') > -1 &&
n.operateUserId == operateUserId
) {
const ni = { notifyInfo: n, rootState: rootState };
context.commit('SET_NOTIFY', ni);
}
});
socketClient.on('ping', function () {
console.log('[E] 心跳请求已发出 →', socketClient);
});
// 收到
socketClient.on('pong', function (socket) {
console.log('[E] 心跳响应已收到 ←', socket, socketClient);
});
socketClient.io.on('reconnect_attempt', (socket) => {
console.log('--reconnect_attempt', socket);
// ...
});
socketClient.on('reconnect', (socket) => {
console.log('--reconnect', socket);
// ...
});
socketClient.on('reconnecting', (attemptNumber) => {
// ...
console.log('--reconnecting', attemptNumber);
});
}, },
}, },
mutations: { mutations: {
SET_SOCKET: (state, payload) => {
window.socketClient = payload;
state.socketClient = payload;
},
SET_NOTIFY: (state, payload) => {
const doms = document.getElementsByClassName('el-notification');
if (doms.length >= 5) return;
const h = window._VM.$createElement;
const { notifyInfo, rootState } = payload;
const t = notifyInfo.department
? `问诊单${notifyInfo.diagnoseLogId}(${notifyInfo.department})`
: `问诊单${notifyInfo.diagnoseLogId}`;
// userCallKfStatus 医助呼叫
// doctorCallKfStatus 医生呼叫
const name =
notifyInfo.userCallKfStatus == 1
? notifyInfo.userName
: notifyInfo.doctorName;
const cn = window._VM.$notify({
title: t,
message: h('p', [
h('i', { style: 'color: teal;' }, `${name}正在呼叫你`),
h(
'el-button',
{
style: `float:right;margin-top:${30}px;`,
on: {
click: function () {
console.log('----state', rootState);
if (rootState.main.showChat) {
window._VM.$message({
message:
'不可同时进入多个诊室,请先退出已进入的诊室,再试。',
type: 'warning',
duration: 1000,
});
} else {
window._VM.$store.dispatch('main/gotoInquiry', notifyInfo);
}
cn.close();
},
},
},
'进入诊室'
),
]),
onClose: function () {
console.log('--onClose', notifyInfo);
},
duration: 5000,
position: 'top-right',
});
},
}, },
}; };
export default roundCard; export default socket;
...@@ -26,34 +26,6 @@ const socket = { ...@@ -26,34 +26,6 @@ const socket = {
console.log('socket disconnect----', socket); console.log('socket disconnect----', socket);
// state.socketClient.connect(); // state.socketClient.connect();
}); });
socketClient.on('diagnose_push_event', (socket) => {
const { list, allSize, countRespList } = socket;
console.log('-rootState', rootState, socket);
const { currentTabStatus } = rootState.main;
context.commit('main/updateCurrentCalList', countRespList, {
root: true,
});
context.commit('main/updateAllSize', allSize, { root: true });
if (list) {
const l = list[0] || [];
if (currentTabStatus == 99) {
context.commit('main/updateCurrentDiagList', list, { root: true });
} else {
if (currentTabStatus == l.returnStatus) {
context.commit('main/updateCurrentDiagList', list, {
root: true,
});
}
if (l.length == 0) {
context.commit('main/updateCurrentDiagList', list, {
root: true,
});
}
}
} else {
context.commit('main/updateCurrentDiagList', [], { root: true });
}
});
socketClient.on('diagnose_call_push_event', (socket) => { socketClient.on('diagnose_call_push_event', (socket) => {
console.log( console.log(
socket, socket,
...@@ -75,8 +47,9 @@ const socket = { ...@@ -75,8 +47,9 @@ const socket = {
if ( if (
path && path &&
String(path).indexOf('workbench') > -1 && String(path).indexOf('workbench') > -1 &&
n.operateUserId == operateUserId (n.operateUserId == operateUserId || n.operateUserId == '999999')
) { ) {
console.log(n);
const ni = { notifyInfo: n, rootState: rootState }; const ni = { notifyInfo: n, rootState: rootState };
context.commit('SET_NOTIFY', ni); context.commit('SET_NOTIFY', ni);
} }
......
...@@ -7,7 +7,10 @@ ...@@ -7,7 +7,10 @@
<el-breadcrumb-item>首页</el-breadcrumb-item> <el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>我的工作台</el-breadcrumb-item> <el-breadcrumb-item>我的工作台</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
<el-row style="margin-top: 30px;display:flex;alignItems:center" class="row-col-show"> <el-row
style="margin-top: 30px; display: flex; alignitems: center"
class="row-col-show"
>
<el-col :span="8"> <el-col :span="8">
<div class="left"> <div class="left">
<el-row <el-row
...@@ -74,7 +77,11 @@ ...@@ -74,7 +77,11 @@
<script> <script>
import consultationlist from '@/components/common/consultation'; import consultationlist from '@/components/common/consultation';
import { getMatchList, getCountByDay, lateCountByDay } from '@/api/administrators'; import {
getMatchList,
getCountByDay,
lateCountByDay,
} from '@/api/administrators';
export default { export default {
components: { components: {
...@@ -92,8 +99,8 @@ ...@@ -92,8 +99,8 @@
return time.getTime() > new Date().getTime(); // 减去一天的时间代表可以选择同一天; return time.getTime() > new Date().getTime(); // 减去一天的时间代表可以选择同一天;
}, },
}, },
callDoctorNum:'', callDoctorNum: '',
doctorLaterNum:'' doctorLaterNum: '',
}; };
}, },
watch: {}, watch: {},
...@@ -117,10 +124,11 @@ ...@@ -117,10 +124,11 @@
}, },
getCountByDay() { getCountByDay() {
const params = { const params = {
startTimestamp:new Date(this.workbenchAdminDate).getTime(), startTimestamp: new Date(this.workbenchAdminDate).getTime(),
endTimestamp:new Date(this.workbenchAdminDate).getTime() + 86400 * 1000 endTimestamp:
new Date(this.workbenchAdminDate).getTime() + 86400 * 1000,
}; };
getCountByDay(params).then(res => { getCountByDay(params).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.callDoctorNum = res.data; this.callDoctorNum = res.data;
} }
...@@ -128,10 +136,11 @@ ...@@ -128,10 +136,11 @@
}, },
lateCountByDay() { lateCountByDay() {
const params = { const params = {
startTimestamp:new Date(this.workbenchAdminDate).getTime(), startTimestamp: new Date(this.workbenchAdminDate).getTime(),
endTimestamp:new Date(this.workbenchAdminDate).getTime() + 86400 * 1000 endTimestamp:
new Date(this.workbenchAdminDate).getTime() + 86400 * 1000,
}; };
lateCountByDay(params).then(res => { lateCountByDay(params).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.doctorLaterNum = res.data; this.doctorLaterNum = res.data;
} }
...@@ -155,38 +164,38 @@ ...@@ -155,38 +164,38 @@
border-radius: 7px; border-radius: 7px;
border: 1px solid #d9d9d9; border: 1px solid #d9d9d9;
} }
.row-col-show{ .row-col-show {
.el-col-12{ .el-col-12 {
.right{ .right {
display: flex; display: flex;
width: 70%; width: 70%;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
.totalNumShow{ .totalNumShow {
font-size: 16px; font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #212121; color: #212121;
} }
.callDoctorShow{ .callDoctorShow {
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
} }
.callDoctorNum{ .callDoctorNum {
font-size: 24px; font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #212121; color: #212121;
} }
.laterDoctorShow{ .laterDoctorShow {
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
} }
.laterDoctorNum{ .laterDoctorNum {
font-size: 24px; font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
......
...@@ -48,7 +48,10 @@ ...@@ -48,7 +48,10 @@
<p>将永久删除名下</p> <p>将永久删除名下</p>
<p>所有的科室及上级医生</p> <p>所有的科室及上级医生</p>
</div> </div>
<div class="work-info-botton" style="text-align: center"> <div
class="work-info-botton"
style="text-align: center"
>
<span <span
slot="footer" slot="footer"
class="dialog-footer" class="dialog-footer"
...@@ -70,11 +73,7 @@ ...@@ -70,11 +73,7 @@
</div> </div>
</template> </template>
<script> <script>
import { import { setDiagnoseMatch, operatorQuery, sumbitMatch } from '@/api/operation';
setDiagnoseMatch,
operatorQuery,
sumbitMatch
} from '@/api/operation';
import { doctorListRest } from '@/api/workbench'; import { doctorListRest } from '@/api/workbench';
import _ from 'lodash'; import _ from 'lodash';
export default { export default {
...@@ -82,9 +81,9 @@ ...@@ -82,9 +81,9 @@
return { return {
checklist: [], checklist: [],
adminList: [], adminList: [],
showIsReset:false, showIsReset: false,
operateId:'', operateId: '',
oldCheckList:[], oldCheckList: [],
}; };
}, },
mounted() { mounted() {
...@@ -150,19 +149,19 @@ ...@@ -150,19 +149,19 @@
this.cancelList = _.difference(this.oldCheckList, this.checklist); this.cancelList = _.difference(this.oldCheckList, this.checklist);
if (this.cancelList.length > 0) { if (this.cancelList.length > 0) {
this.showIsReset = true; this.showIsReset = true;
}else { } else {
this.sumbitmatch(); this.sumbitmatch();
} }
}, },
confirmResert() { confirmResert() {
const uidList = this.cancelList || []; const uidList = this.cancelList || [];
doctorListRest(uidList).then(res => { doctorListRest(uidList).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.showIsReset = false; this.showIsReset = false;
this.sumbitmatch(); this.sumbitmatch();
} }
}); });
} },
}, },
}; };
</script> </script>
...@@ -177,7 +176,7 @@ ...@@ -177,7 +176,7 @@
margin-bottom: 20px; margin-bottom: 20px;
} }
.operation-content { .operation-content {
padding: 20px; padding: 20px;
background: #ffffff; background: #ffffff;
.checkbox-container { .checkbox-container {
...@@ -199,31 +198,31 @@ ...@@ -199,31 +198,31 @@
align-items: center; align-items: center;
} }
} }
.show-info-title{ .show-info-title {
text-align: center; text-align: center;
padding: 30px; padding: 30px;
font-size: 18px; font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #02120F; color: #02120f;
} }
.dialog-footer { .dialog-footer {
.contest { .contest {
min-width: 160px; min-width: 160px;
height: 40px; height: 40px;
background: #0d9078; background: #0d9078;
border-radius: 20px; border-radius: 20px;
} }
.cancel-submit { .cancel-submit {
min-width: 160px; min-width: 160px;
height: 40px; height: 40px;
border-radius: 20px; border-radius: 20px;
border: 1px solid #0d9078; border: 1px solid #0d9078;
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #0d9078; color: #0d9078;
} }
} }
} }
</style> </style>
...@@ -20,36 +20,42 @@ ...@@ -20,36 +20,42 @@
</el-radio-button> </el-radio-button>
</el-radio-group> </el-radio-group>
</div> </div>
<div <div class="workbench-content">
class="workbench-content">
<div <div
v-if="tabPositionValue == 3" v-if="tabPositionValue == 3"
class="workbench-li-depar" class="workbench-li-depar"
> >
<div class="grid-c"> <div class="grid-c">
<department-doctor <department-doctor
:depart-doctor-list="departDoctorList" :depart-doctor-list="departDoctorList"
:active-moutend-name="activeMoutendName" :active-moutend-name="activeMoutendName"
@getDepartlist="getDepartlist" @getDepartlist="getDepartlist"
/> />
</div> </div>
<div class="depart-footer" style="text-align: right"> <div
<el-button class="rest-depar" @click="restDepartList">重置所有科室</el-button> class="depart-footer"
style="text-align: right"
>
<el-button
class="rest-depar"
@click="restDepartList"
>
重置所有科室
</el-button>
<el-button <el-button
type="primary" type="primary"
class="con-depar" class="con-depar"
@click="confirmDoctorList" @click="confirmDoctorList"
>确定</el-button> >
确定
</el-button>
</div> </div>
</div> </div>
<div <div
v-else v-else
class="workbench-content" class="workbench-content"
> >
<div <div class="workbench-li-c">
v-if="currentDiagList"
class="workbench-li-c"
>
<div class="workbench-title"> <div class="workbench-title">
<div class="searh-input"> <div class="searh-input">
<el-input <el-input
...@@ -57,20 +63,26 @@ ...@@ -57,20 +63,26 @@
placeholder="输入问诊单号/医生姓名" placeholder="输入问诊单号/医生姓名"
class="input-with-select" class="input-with-select"
@change="getSerachValue" @change="getSerachValue"
/>
<el-button
slot="append"
class="search-botton"
@click="getSearchValue"
> >
<el-button 搜索
slot="append" </el-button>
class="search-botton" <el-button
@click="getSearchValue" slot="append"
> class="reset-botton"
搜索 @click="resetSearchValue"
</el-button> >
</el-input> 重置
</el-button>
</div> </div>
</div> </div>
<!-- 问诊状态内容 --> <!-- 问诊状态内容 -->
<div <div
v-if="isShowCardData" v-if="currentDiagList.length"
class="grid-c" class="grid-c"
> >
<div <div
...@@ -78,7 +90,6 @@ ...@@ -78,7 +90,6 @@
:key="index" :key="index"
class="workbench-li" class="workbench-li"
> >
{{ item.diagnoseLogId }}
<!-- key 动态随机无意义 促发组件数据更新 --> <!-- key 动态随机无意义 促发组件数据更新 -->
<consultation-card <consultation-card
:key="item.definitionRandom" :key="item.definitionRandom"
...@@ -87,21 +98,21 @@ ...@@ -87,21 +98,21 @@
/> />
</div> </div>
</div> </div>
<div
v-else
class="nodata-container"
>
<img
src="@/assets/image/workbench/no_data_wz.png"
alt=""
>
<div class="nodata-title">
暂时没有问诊
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<!-- <div
v-else
class="nodata-container"
>
<img
src="../../../assets/image/workbench/no_data_wz.png"
alt=""
>
<div class="nodata-title">
暂时没有问诊
</div>
</div> -->
<el-dialog <el-dialog
:visible.sync="showIsReset" :visible.sync="showIsReset"
width="30%" width="30%"
...@@ -110,7 +121,10 @@ ...@@ -110,7 +121,10 @@
<p>将永久删除名下</p> <p>将永久删除名下</p>
<p>所有的科室及上级医生</p> <p>所有的科室及上级医生</p>
</div> </div>
<div class="work-info-botton" style="text-align: center"> <div
class="work-info-botton"
style="text-align: center"
>
<span <span
slot="footer" slot="footer"
class="dialog-footer" class="dialog-footer"
...@@ -139,12 +153,12 @@ ...@@ -139,12 +153,12 @@
import DepartmentDoctor from '../../../components/common/department-doctor.vue'; import DepartmentDoctor from '../../../components/common/department-doctor.vue';
import { conditionNewList } from '@/api/workbench'; import { conditionNewList } from '@/api/workbench';
import { doctorListAnd, doctorListRest } from '@/api/workbench'; import { doctorListAnd, doctorListRest } from '@/api/workbench';
import {doctorDeparList} from '@/api/diagnosis'; import { doctorDeparList } from '@/api/diagnosis';
import _ from 'lodash'; import _ from 'lodash';
export default { export default {
components: { components: {
consultationCard, consultationCard,
DepartmentDoctor DepartmentDoctor,
}, },
data() { data() {
return { return {
...@@ -205,8 +219,10 @@ ...@@ -205,8 +219,10 @@
userInfo: null, userInfo: null,
timer: null, timer: null,
currentDiagList: [], // 卡片列表数据 currentDiagList: [], // 卡片列表数据
midCardData: [],
mockData: [ mockData: [
{ {
doctorLastCallTime: '2021-12-02 19:58:01',
adviceStatus: 2, adviceStatus: 2,
appointBeginTime: '2021-12-02 18:00:00', appointBeginTime: '2021-12-02 18:00:00',
appointEndTime: '2021-12-02 19:00:00', appointEndTime: '2021-12-02 19:00:00',
...@@ -231,6 +247,7 @@ ...@@ -231,6 +247,7 @@
sort: null, sort: null,
status: null, status: null,
userCallKfStatus: 2, userCallKfStatus: 2,
doctorOnlineStatus: 2,
userCallStatus: 1, userCallStatus: 1,
userCallTime: null, userCallTime: null,
userId: 1006276934, userId: 1006276934,
...@@ -238,9 +255,12 @@ ...@@ -238,9 +255,12 @@
'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png', 'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png',
userMobile: '13817741327', userMobile: '13817741327',
userName: '郑志猛', userName: '郑志猛',
userTrtcEntryStatus: 2, userOnlineStatus: 2,
}, },
{ {
userLastCallTime: '',
doctorLastCallTime: '2021-12-02 20:05:01',
doctorOnlineStatus: 3,
adviceStatus: 2, adviceStatus: 2,
appointBeginTime: '2021-12-02 20:00:00', appointBeginTime: '2021-12-02 20:00:00',
appointEndTime: '2021-12-02 21:00:00', appointEndTime: '2021-12-02 21:00:00',
...@@ -272,17 +292,54 @@ ...@@ -272,17 +292,54 @@
'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png', 'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png',
userMobile: '13817741327', userMobile: '13817741327',
userName: '郑志猛', userName: '郑志猛',
userTrtcEntryStatus: 2, userOnlineStatus: 3,
},
{
userLastCallTime: '',
doctorLastCallTime: '2021-12-02 20:05:01',
doctorOnlineStatus: 3,
adviceStatus: 2,
appointBeginTime: '2021-12-02 20:00:00',
appointEndTime: '2021-12-02 21:00:00',
department: '呼吸内科',
departmentId: 12,
diagnoseLogId: 3826,
diagnoseType: 1,
doctorCallKfStatus: 2,
doctorCallStatus: 1,
doctorCallTime: null,
doctorId: 1006276946,
doctorImageUrl:
'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png',
doctorMobile: '15821297620',
doctorName: '朱建波',
doctorTrtcEntryStatus: 2,
imStatus: 1,
imTeamId: '3942066774',
operateUserId: 221,
returnStatus: 2,
roomId: '520001207',
sort: null,
status: null,
userCallKfStatus: 2,
userCallStatus: 1,
userCallTime: null,
userId: 1006276934,
userImageUrl:
'https://test-file.yunqueyi.com//image/png/2019/04/08/20190408101124702-0db0bcea.png',
userMobile: '13817741327',
userName: '郑志猛',
userOnlineStatus: 3,
}, },
], ],
departDoctorList:[], departDoctorList: [],
newCheckList:[], newCheckList: [],
cancelCheckList:[], cancelCheckList: [],
checkDoctorIdList:[], checkDoctorIdList: [],
activeMoutendName:'', activeMoutendName: '',
operatId:'', operatId: '',
showIsReset:false localUserId: '',
showIsReset: false,
}; };
}, },
computed: { computed: {
...@@ -298,28 +355,18 @@ ...@@ -298,28 +355,18 @@
this.tabPositionValue = this.$route.query.type || '3'; this.tabPositionValue = this.$route.query.type || '3';
}, },
mounted() { mounted() {
const s = storejs.get('soketQuest');
const id =
s && s.operateUserId ? s.operateUserId : this.isSuperAdmin.userID;
this.operateUserId = id;
this.userInfo = storejs.get('initSocketInfo'); this.userInfo = storejs.get('initSocketInfo');
console.log( this.localUserId = this.userInfo.userId;
this.userInfo.userId,
'userInfouserInfo',
this.tabPositionValue
);
this.initCard(); this.initCard();
const that = this; const that = this;
// if(this.tabPositionValue != 3) {
// 轮循 // 轮循
this.timer = window.setInterval(() => { this.timer = window.setInterval(() => {
setTimeout(() => { setTimeout(() => {
// that.isShowCardData = false; // that.isShowCardData = false;
that.initCard(); that.initCard();
}, 0); }, 0);
}, 4000); }, 15000);
this.doctorDeparList(); this.doctorDeparList();
// }
}, },
destroyed() { destroyed() {
window.clearInterval(this.timer); window.clearInterval(this.timer);
...@@ -327,13 +374,15 @@ ...@@ -327,13 +374,15 @@
methods: { methods: {
doctorDeparList() { doctorDeparList() {
const param = { const param = {
uid:this.operatId || this.userInfo.userId, uid: this.operatId || this.userInfo.userId,
}; };
doctorDeparList(param).then(res => { doctorDeparList(param).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.checkDoctorIdList = res.data.checkDoctorIdList || []; this.checkDoctorIdList = res.data.checkDoctorIdList || [];
this.departDoctorList = res.data.diagnoseOperateDepartmentRespList || []; this.departDoctorList =
this.activeMoutendName = (res.data.diagnoseOperateDepartmentRespList || [])[0].departmentId; res.data.diagnoseOperateDepartmentRespList || [];
this.activeMoutendName = (res.data
.diagnoseOperateDepartmentRespList || [])[0].departmentId;
} }
}); });
}, },
...@@ -344,8 +393,12 @@ ...@@ -344,8 +393,12 @@
this.showIsReset = false; this.showIsReset = false;
}, },
confirmResert() { confirmResert() {
const uidList = this.operatId ? [this.operatId] : [] || this.userInfo.userId ? [this.userInfo.userId] : []; const uidList = this.operatId
doctorListRest(uidList).then(res => { ? [this.operatId]
: [] || this.userInfo.userId
? [this.userInfo.userId]
: [];
doctorListRest(uidList).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.showIsReset = false; this.showIsReset = false;
this.$message({ this.$message({
...@@ -357,7 +410,7 @@ ...@@ -357,7 +410,7 @@
}); });
}, },
getDepartlist(allCheckList) { getDepartlist(allCheckList) {
const checkAllList = allCheckList.map(item => { const checkAllList = allCheckList.map((item) => {
return item.checkDoctorIdListByDepartment; return item.checkDoctorIdListByDepartment;
}); });
const checkListFlat = checkAllList.flat(Infinity); const checkListFlat = checkAllList.flat(Infinity);
...@@ -365,31 +418,43 @@ ...@@ -365,31 +418,43 @@
const cancelList = _.difference(this.checkDoctorIdList, checkListFlat); const cancelList = _.difference(this.checkDoctorIdList, checkListFlat);
// 新增的医生ID list // 新增的医生ID list
const newCkList = _.difference(checkListFlat, this.checkDoctorIdList); const newCkList = _.difference(checkListFlat, this.checkDoctorIdList);
const checkAllDoctorList = allCheckList.map(item => { const checkAllDoctorList = allCheckList.map((item) => {
return item.diagnoseOperateDoctorRespList; return item.diagnoseOperateDoctorRespList;
}); });
const checkAllDoctorListFlat = checkAllDoctorList.flat(Infinity); const checkAllDoctorListFlat = checkAllDoctorList.flat(Infinity);
this.newCheckList = newCkList.map(item => checkAllDoctorListFlat.find(itemChild => itemChild.doctorId === item)).filter(item => item); this.newCheckList = newCkList
this.cancelCheckList = cancelList.map(item => checkAllDoctorListFlat.find(itemChild => itemChild.doctorId === item)).filter(item => item); .map((item) =>
}, checkAllDoctorListFlat.find(
(itemChild) => itemChild.doctorId === item
)
)
.filter((item) => item);
this.cancelCheckList = cancelList
.map((item) =>
checkAllDoctorListFlat.find(
(itemChild) => itemChild.doctorId === item
)
)
.filter((item) => item);
},
confirmDoctorList() { confirmDoctorList() {
const userInfo = storejs.get('initSocketInfo'); const userInfo = storejs.get('initSocketInfo');
const {userName} = userInfo; const { userName } = userInfo;
const params = { const params = {
cancelDoctorIdList:this.cancelCheckList || [], cancelDoctorIdList: this.cancelCheckList || [],
insertDoctorIdList:this.newCheckList || [], insertDoctorIdList: this.newCheckList || [],
operateUserId:this.operatId || this.userInfo.userId, operateUserId: this.operatId || this.userInfo.userId,
operateUserName:userName operateUserName: userName,
}; };
doctorListAnd(params).then(res => { doctorListAnd(params).then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
if (res.data.length > 0) { if (res.data.length > 0) {
const totallistShow = res.data.join(','); const totallistShow = res.data.join(',');
this.$message({ this.$message({
message: `医生为${totallistShow}已被其他运营分配`, message: `医生为${totallistShow}已被其他运营分配`,
type: 'warning' type: 'warning',
}); });
}else{ } else {
this.$message({ this.$message({
message: '保存成功', message: '保存成功',
type: 'success', type: 'success',
...@@ -399,7 +464,6 @@ ...@@ -399,7 +464,6 @@
} }
}); });
}, },
initCard() { initCard() {
const parms = { const parms = {
bizType: this.tabPositionValue, // 1,异常的列表 2,不需要处理的列表 bizType: this.tabPositionValue, // 1,异常的列表 2,不需要处理的列表
...@@ -409,7 +473,8 @@ ...@@ -409,7 +473,8 @@
conditionNewList(parms) conditionNewList(parms)
.then((res) => { .then((res) => {
if (res.code === '000000') { if (res.code === '000000') {
this.handleData(res.data.length > 0 ? res.data : this.mockData); this.handleData(res.data);
// this.handleData(res.data.length > 0 ? res.data : this.mockData);
} else { } else {
this.$message({ this.$message({
message: res.message, message: res.message,
...@@ -420,23 +485,30 @@ ...@@ -420,23 +485,30 @@
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
// mock 数据 // mock 数据
this.handleData(this.mockData); // this.handleData(this.mockData);
}); });
}, },
handleData(data) { handleData(data) {
this.currentDiagList = []; this.currentDiagList = [];
this.midCardData = [];
const searchVal = this.orderOrName;
data.forEach((item, index) => { data.forEach((item, index) => {
item.diagnoseLogId = '--' + Math.random() * 10;
item['definitionRandom'] = Math.random() * 10; item['definitionRandom'] = Math.random() * 10;
this.$set(this.currentDiagList, index, item); if (searchVal) {
// 如果有查询条件一直后去的是查询结果
if (item.diagnoseLogId == searchVal || item.doctorName == searchVal) {
this.currentDiagList.push(item);
}
} else {
this.currentDiagList.push(item);
}
this.$set(this.midCardData, index, item);
}); });
this.isShowCardData = true; this.isShowCardData = true;
// this.$nextTick(() => {
// });
}, },
getSerachValue(value) { getSerachValue(value) {
this.orderOrName = value; this.orderOrName = value.trim();
}, },
getSearchValue() { getSearchValue() {
if (!this.orderOrName) { if (!this.orderOrName) {
...@@ -446,9 +518,36 @@ ...@@ -446,9 +518,36 @@
duration: 1000, duration: 1000,
}); });
} else { } else {
this.initCard(); // 前端根据现在数据筛选结果
this.handleSearchResult(this.orderOrName);
} }
}, },
resetSearchValue() {
this.orderOrName = '';
this.initCard();
},
// 处理查询结果
handleSearchResult(searchVal) {
this.isShowCardData = false;
this.currentDiagList = [];
console.log(this.midCardData, searchVal);
this.midCardData.forEach((item) => {
console.log(
searchVal,
item.diagnoseLogId,
'item.diagnoseLogId',
item.doctorName == searchVal,
item.doctorName
);
if (item.diagnoseLogId == searchVal || item.doctorName == searchVal) {
console.log(11111111, item.definitionRandom);
item.definitionRandom = Math.random() * 10;
this.currentDiagList.push(item);
}
});
console.log(this.currentDiagList, '00000');
this.isShowCardData = true;
},
tabChange(val) { tabChange(val) {
this.tabPositionValue = val; this.tabPositionValue = val;
if (val != 3) { if (val != 3) {
...@@ -558,10 +657,16 @@ ...@@ -558,10 +657,16 @@
margin-left: 8px; margin-left: 8px;
.el-input { .el-input {
width: 364px; width: 364px;
.search-botton { }
background: #0d9078; .search-botton {
color: #fff; background: #0d9078;
} color: #fff;
margin-left: 5px;
}
.reset-botton {
background: #0d9078;
color: #fff;
margin-left: 5px;
} }
} }
} }
...@@ -571,7 +676,6 @@ ...@@ -571,7 +676,6 @@
display: grid; display: grid;
grid-template-columns: auto auto auto; grid-template-columns: auto auto auto;
grid-template-rows: auto auto auto; grid-template-rows: auto auto auto;
//grid-template-columns: 32% 32% 32%;
//grid-row-gap: 2%; //grid-row-gap: 2%;
grid-column-gap: 10px; grid-column-gap: 10px;
padding: 0px 7px; padding: 0px 7px;
...@@ -602,7 +706,7 @@ ...@@ -602,7 +706,7 @@
} }
} }
} }
.pagination-container { .pagination-container {
background-color: #fff; background-color: #fff;
height: 71px; height: 71px;
...@@ -614,7 +718,7 @@ ...@@ -614,7 +718,7 @@
margin-top: 10px; margin-top: 10px;
padding: 0 20px; padding: 0 20px;
} }
.workbench-li-depar{ .workbench-li-depar {
padding: 20px 10px; padding: 20px 10px;
width: 100%; width: 100%;
.grid-c { .grid-c {
...@@ -623,25 +727,26 @@ ...@@ -623,25 +727,26 @@
padding: 25px 30px; padding: 25px 30px;
background: #fff; background: #fff;
border-radius: 10px; border-radius: 10px;
.el-checkbox-group{ overflow-y: auto;
.el-checkbox{ .el-checkbox-group {
.el-checkbox {
width: 20%; width: 20%;
padding: 8px; padding: 8px;
} }
} }
.search-botton{ .search-botton {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin-right: 150px; margin-right: 150px;
.el-button{ .el-button {
width: 180px; width: 180px;
height: 40px; height: 40px;
background: #0D9078; background: #0d9078;
border-radius: 20px; border-radius: 20px;
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #ffffff;
} }
} }
.workbench-li { .workbench-li {
...@@ -650,75 +755,75 @@ ...@@ -650,75 +755,75 @@
} }
} }
} }
.depart-footer{ .depart-footer {
margin-top: 20px; margin-top: 20px;
.rest-depar{ .rest-depar {
min-width: 160px; min-width: 160px;
height: 40px; height: 40px;
border-radius: 20px; border-radius: 20px;
border: 1px solid #0D9078; border: 1px solid #0d9078;
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0D9078;
}
.con-depar{
min-width: 160px;
height: 40px;
background: #0D9078;
border-radius: 20px;
}
}
}
.nodata-container {
background-color: #fff;
padding: 0 20px;
border-radius: 18px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 470px;
.nodata {
width: 100%;
}
img {
width: 298px;
height: 140px;
}
.nodata-title {
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #6a7990; color: #0d9078;
margin-top: 50px; }
.con-depar {
min-width: 160px;
height: 40px;
background: #0d9078;
border-radius: 20px;
} }
} }
.show-info-title{ }
.nodata-container {
background-color: #fff;
padding: 0 20px;
border-radius: 18px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 470px;
.nodata {
width: 100%;
}
img {
width: 298px;
height: 140px;
}
.nodata-title {
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #6a7990;
margin-top: 50px;
}
}
.show-info-title {
text-align: center; text-align: center;
padding: 30px; padding: 30px;
font-size: 18px; font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #02120F; color: #02120f;
} }
.dialog-footer { .dialog-footer {
.contest { .contest {
min-width: 160px; min-width: 160px;
height: 40px; height: 40px;
background: #0d9078; background: #0d9078;
border-radius: 20px; border-radius: 20px;
} }
.cancel-submit { .cancel-submit {
min-width: 160px; min-width: 160px;
height: 40px; height: 40px;
border-radius: 20px; border-radius: 20px;
border: 1px solid #0d9078; border: 1px solid #0d9078;
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #0d9078; color: #0d9078;
} }
} }
} }
...@@ -743,16 +848,4 @@ ...@@ -743,16 +848,4 @@
padding: 10px 0; padding: 10px 0;
background-color: #f9fafc; background-color: #f9fafc;
} }
// 屏幕适配
@media screen and (min-width: 1240px) and (max-width: 1441px) {
.workbench-container {
.workbench-li-c {
.grid-c {
.workbench-li {
//max-width: 572px;
}
}
}
}
}
</style> </style>
...@@ -82,7 +82,11 @@ ...@@ -82,7 +82,11 @@
userID: userId, userID: userId,
}; };
const u = this.getSocketUrl(BUILD_ENV); const u = this.getSocketUrl(BUILD_ENV);
storejs.set('initSocketInfo', { url: u, userId: userId, userName:userName }); storejs.set('initSocketInfo', {
url: u,
userId: userId,
userName: userName,
});
this.$store.dispatch('socket/initSocket', { url: u, userId: userId }); this.$store.dispatch('socket/initSocket', { url: u, userId: userId });
vueMenuDtos.map((item) => { vueMenuDtos.map((item) => {
if (item.index.indexOf('administrators') > -1) { if (item.index.indexOf('administrators') > -1) {
...@@ -181,8 +185,6 @@ ...@@ -181,8 +185,6 @@
color: #fff; color: #fff;
background: #06232c; background: #06232c;
} }
} }
} }
</style> </style>
...@@ -71,7 +71,7 @@ module.exports = { ...@@ -71,7 +71,7 @@ module.exports = {
port: 8080, port: 8080,
proxy: { proxy: {
'/proxy': { '/proxy': {
target: 'https://test1-sc.yunqueyi.com/', target: 'https://dev-sc.yunqueyi.com/',
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
secure: true, secure: true,
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册