提交 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';
export const getMatchList = async() => {
return request({
url: '/diagnose/match/list',
method: 'get',
});
export const getMatchList = async () => {
return request({
url: '/diagnose/match/list',
method: 'get',
});
};
export const getCountByDay = async (data) => {
return request({
url: `/im/team/callOp/countByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get',
});
return request({
url: `/im/team/callOp/countByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get',
});
};
export const lateCountByDay = async (data) => {
return request({
url: `/diagnose/superiorDoctor/lateCountByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get',
});
};
\ No newline at end of file
return request({
url: `/diagnose/superiorDoctor/lateCountByDay?startTimestamp=${data.startTimestamp}&endTimestamp=${data.endTimestamp}`,
method: 'get',
});
};
import request from 'mn-template/plugins/http';
export const doctorListAnd = async(data) => {
return request({
url: '/diagnose/admin/diagnose/operate/and/doctorList',
data: data,
method: 'post',
});
export const doctorListAnd = async (data) => {
return request({
url: '/diagnose/admin/diagnose/operate/and/doctorList',
data: data,
method: 'post',
});
};
export const doctorListRest = async (data) => {
return request({
url: 'diagnose/admin/diagnose/reset/operate/doctorList',
method: 'post',
data:data
});
};
return request({
url: 'diagnose/admin/diagnose/reset/operate/doctorList',
method: 'post',
data: data,
});
};
export const conditionUpdate = async (data) => {
return request({
url: '/diagnose/socket/condition/update',
......@@ -50,9 +50,10 @@ export const manualCall = async (data) => {
};
// 查询当前上级医生下排队的信息
export const waitPersonNum = async (doctorId) => {
export const waitPersonNum = async (data) => {
return request({
url: `/admin/diagnose/queueList/${doctorId}`,
url: '/diagnose/admin/diagnose/queueList/doctorId',
method: 'post',
data: data,
});
};
......@@ -7,13 +7,19 @@
<div class="name">
{{ operatorsItem.name || '' }}
</div>
<div class="details" @click="goSelectDeart">
<div
class="details"
@click="goSelectDeart"
>
<div class="see">
<span>查看选择科室</span>
<i class="el-icon-arrow-right" />
</div>
</div>
<div class="details" @click="goworkBench">
<div
class="details"
@click="goworkBench"
>
<div class="see">
<span>待处理详情</span>
<i class="el-icon-arrow-right" />
......@@ -24,7 +30,7 @@
</template>
<script>
// import { conditionUpdate } from '@/api/workbench';
// import { conditionUpdate } from '@/api/workbench';
export default {
props: {
......@@ -77,7 +83,7 @@
path: '/workbench-new',
query: { id: this.operatorsItem.id },
});
}
},
},
};
</script>
......@@ -121,9 +127,9 @@
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0D9078;
color: #0d9078;
}
i{
i {
color: rgba(13, 144, 120, 1);
}
}
......
import { teamDetail, callDirect } from '@/api/diagnosis';
import {
waitPersonNum,
doctorAdviceList,
manualCall,
} from '@/api/workbench.js';
import { waitPersonNum, manualCall } from '@/api/workbench.js';
import { createNamespacedHelpers } from 'vuex';
const { mapState } = createNamespacedHelpers('main');
let clipboard = null;
export default {
props: {
item: {
......@@ -48,7 +45,6 @@ export default {
computed: {
...mapState({
showChat: (state) => state.showChat,
showAdvice: (state) => state.showAdvice,
}),
doctorCallStatus() {
switch (this.item.doctorCallStatus) {
......@@ -60,6 +56,8 @@ export default {
return '被挂断';
case 4:
return '已拨打完成';
case 5:
return '电话呼叫中';
default:
return '';
}
......@@ -78,30 +76,6 @@ export default {
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() {
if (this.item.appointBeginTime) {
return new Date(this.item.appointBeginTime).format('hh:mm');
......@@ -116,28 +90,18 @@ export default {
return '';
}
},
userCallTime() {
return new Date(this.item.userCallTime).format('hh:mm');
},
// 助诊呼叫状态
userCallKfStatus() {
return this.item.userCallKfStatus;
},
// 接诊呼叫状态
doctorCallKfStatus() {
return this.item.doctorCallKfStatus;
},
// 接诊 在线状态
doctorTrtcEntryStatus() {
return this.item.doctorTrtcEntryStatus;
},
// 助诊 在线状态
userTrtcEntryStatus() {
return this.item.userTrtcEntryStatus;
// 基层医生上次呼叫医助时间
userLastCallTime() {
if (this.item.userLastCallTime) {
return new Date(this.item.userLastCallTime).getTime();
} else {
return null;
}
},
pastUserCallTime() {
if (this.item.userCallTime) {
return this.formatDateData(this.item.userCallTime);
// 上级医生上一次呼叫医助时间
doctorLastCallTime() {
if (this.item.doctorLastCallTime) {
return this.formatDateData(this.item.doctorLastCallTime);
} else {
return null;
}
......@@ -161,12 +125,6 @@ export default {
console.log(newVal, 'newValnewValnewVal');
console.log(newVal, oldVal, 'newVal, oldVal');
if (newVal !== oldVal) {
if (newVal.doctorTrtcEntryStatus == 2) {
this.isDoctorChat = false;
}
if (newVal.userTrtcEntryStatus == 2) {
this.isUserChat = false;
}
if (newVal.doctorCallStatus !== oldVal.doctorCallStatus) {
this.isManuacall = false;
}
......@@ -180,18 +138,7 @@ export default {
},
},
created() {},
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;
}
}
},
mounted() {},
methods: {
manualDialing(type) {
if (this.doctorCallKfStatus === 1) {
......@@ -244,7 +191,7 @@ export default {
},
formatDateData(time) {
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 hoursRound = Math.floor(hours);
const minutes = my_time / 1000 / 60 - 60 * hoursRound;
......@@ -256,10 +203,11 @@ export default {
).toFixed(0);
if (hoursRound > 0 && minutesRound > 0) {
return hoursRound + '小时' + minutesRound + '分' + seconds + '秒';
// return hoursRound + '小时' + minutesRound + '分' + seconds + '秒';
return hoursRound + '小时';
}
if (hoursRound == 0 && minutesRound > 0) {
return minutesRound + '分';
return minutesRound + '分';
}
if (hoursRound == 0 && minutesRound == 0) {
return seconds + '秒';
......@@ -335,39 +283,14 @@ export default {
const i = this.item;
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() {
if (!this.isShowWait) {
console.log(this.item.doctorId, 'this.item.doctorId');
waitPersonNum(this.item.doctorId)
const parms = {
assistantBeginTime: this.item.appointBeginTime,
doctorId: this.item.doctorId,
};
console.log(parms, 'this.item.doctorId');
waitPersonNum(parms)
.then((res) => {
if (res.code === '000000') {
this.waitPersonList = res.data || [];
......@@ -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 @@
font-size: 18px;
margin-top: 3px;
}
.notime {
color: #999999;
}
}
.right {
margin-left: 23px;
......@@ -45,7 +48,7 @@
}
}
.superior-doctor {
width: 49%;
width: 52%;
display: flex;
justify-content: flex-start;
align-items: flex-start;
......@@ -58,9 +61,19 @@
height: 40px;
.offline {
position: absolute;
left: -4px;
top: -4px;
left: 1px;
top: 0px;
z-index: 10;
img {
width: 10px;
height: auto;
}
}
.online {
width: 10px;
height: 10px;
background: #0d9078;
border-radius: 50%;
}
.avatar {
position: absolute;
......@@ -79,19 +92,19 @@
.info-name-wrap {
display: flex;
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 {
align-items: center;
flex-direction: row;
......@@ -105,17 +118,6 @@
.info-call-time {
color: #ff5e57;
}
.info-calling {
width: 15px;
height: 25px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 15px;
height: 15px;
}
}
}
}
.manual-call-status {
......@@ -140,12 +142,29 @@
}
}
.basic-doctor {
width: 49%;
width: 40%;
display: flex;
justify-content: flex-start;
.basic-user-img,
.basic-user-info {
position: relative;
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 {
display: flex;
align-items: center;
......@@ -174,21 +193,23 @@
color: #ff5e57;
}
.info-calling {
width: 15px;
height: 25px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 15px;
height: 15px;
}
background: rgba(255, 94, 87, 0.07);
border-radius: 10px;
border: 1px solid rgba(255, 94, 87, 0.15);
height: 20px;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ff5e57;
line-height: 20px;
margin-top: 3px;
}
}
}
}
.no-info {
width: 100%;
width: 30%;
height: auto;
color: #ff5e57;
}
......
......@@ -5,20 +5,17 @@
<div class="superior-doctor">
<div class="inquiry-user-img">
<div
v-if="
diagnoseTypeIcon == 'voice' &&
(item.returnStatus == 1 || item.returnStatus == 3) &&
doctorTrtcEntryStatus != 1
"
class="offline"
:class="{ online: item.doctorOnlineStatus == 2 }"
>
<img
v-if="item.doctorOnlineStatus == 3"
:src="offline"
alt=""
>
</div>
<div class="avatar">
<el-avatar :src="item.doctorImageUrl" />
<el-avatar :src="item.doctorImageUrl || ''" />
</div>
</div>
<div class="inquiry-user-info">
......@@ -34,7 +31,9 @@
</li>
<li class="inquiry-user-status">
<!-- 只有-->
<!-- -->
<span
v-if="!doctorLastCallTime && item.doctorCallKfStatus != 1"
:class="
doctorCallStatus === '已拨打完成'
? 'status-cll-user-finish'
......@@ -42,13 +41,14 @@
"
>{{ doctorCallStatus }}</span>
<span
v-if="doctorCallKfStatus == 1"
v-if="item.doctorCallKfStatus == 1"
class="status-cll-user-answer"
>正在呼叫</span>
<span
v-else
v-if="doctorLastCallTime"
class="status-cll-user-answer"
> 未呼叫</span>
>
{{ doctorLastCallTime }}前呼叫医助</span>
</li>
</ul>
</div>
......@@ -60,14 +60,11 @@
>
<ul class="basic-user-img">
<li
v-if="
diagnoseTypeIcon == 'voice' &&
(item.returnStatus == 1 || item.returnStatus == 3) &&
userTrtcEntryStatus != 1
"
class="offline"
:class="{ online: item.userOnlineStatus == 2 }"
>
<img
v-if="item.userOnlineStatus == 3"
:src="offline"
alt=""
>
......@@ -88,13 +85,23 @@
{{ item.userMobile }}
</div>
<div
v-if="userCallKfStatus == 1"
v-if="item.userCallKfStatus == 1"
class="info-calling"
>
呼叫中
</div>
<div
v-if="item.userCallKfStatus == 2 && userLastCallTime"
class="info-calling"
>
<span v-if="userLastCallTime">
{{ userLastCallTime }} 前呼叫医助</span>
</div>
</li>
<li class="inquiry-user-status">
<li
v-if="item.userCallKfStatus != 1 && userCallStatus"
class="inquiry-user-status"
>
<span
:class="
userCallStatus === '已拨打完成'
......@@ -111,7 +118,7 @@
class="no-info"
>
<div
v-if="item.acceptStatus == 4"
v-if="item.acceptStatus == 2"
class="doctor-late"
>
未开始接诊
......@@ -122,9 +129,14 @@
>
暂停接诊
</div>
<div
v-if="item.acceptStatus == 4"
class="doctor-stop"
>
离开
</div>
</div>
</div>
<!-- 预约时间,复制单号 -->
<div class="line line-second">
<div class="left">
......@@ -138,7 +150,7 @@
</div>
<div
v-else
class="time"
class="time notime"
>
</div>
......@@ -151,8 +163,8 @@
</li>
<li
v-if="item.diagnoseLogId"
class="copy"
@click="copyDiagnoseLogId"
class="copy copy-orderId"
@click="clipboardAction"
>
复制
</li>
......@@ -172,13 +184,22 @@
/>
</div>
</div>
<!-- 有基层医生信息 展示进入诊室 -->
<div
v-if="item.userId && item.acceptStatus != 1 && item.acceptStatus != 4"
class="line-btn line-btn-enter"
:class="{ isManuacall: isManuacall, noIsCall: !isManuacall }"
@click="openChat"
>
进入诊室
</div>
<!-- -->
<div
v-else
class="line-btn line-btn-enter"
>
<div
v-if="doctorCallKfStatus == 1"
v-if="item.doctorCallKfStatus == 1"
class="call-box"
>
<img
......@@ -201,7 +222,6 @@
</div>
</div>
</div>
<!-- 排队详细 -->
<div
v-if="isShowWait"
......
<template>
<div class="depart-doctor">
<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-checkbox
v-model="item.checkAll"
:indeterminate="item.isIndeterminate"
:disabled="item.allDisabled"
@change="((value)=>{handleCheckAllChange(value,item)})">全选</el-checkbox>
<div style="margin: 10px 0;" />
<el-checkbox-group
v-model="item.checkDoctorIdListByDepartment"
@change="((val)=>{handleCheckedCitiesChange(val,item)})"
>
<el-checkbox
v-for="itemChild in item.diagnoseOperateDoctorRespList"
:key="itemChild.doctorId"
:label="itemChild.doctorId"
:disabled="itemChild.disabled"
>
{{ itemChild.doctorName + ' ' }}{{ ' ' +itemChild.doctorId}}
</el-checkbox>
</el-checkbox-group>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
props: {
departDoctorList:{
type: Array,
default() {
return [];
},
},
activeMoutendName:{
type: String,
default() {
return '';
},
}
},
data() {
return {
};
},
computed: {
},
watch: {
},
created() {
},
mounted() {
},
methods: {
handleCheckAllChange(value, item) {
let itemNameList = [];
if (value) {
itemNameList = (item.diagnoseOperateDoctorRespList || []).map(item => {
return item.doctorId;
});
}
item.checkDoctorIdListByDepartment = value ? itemNameList : [];
item.isIndeterminate = false;
this.$emit('getDepartlist', this.departDoctorList);
},
/**
* checkbox状态 (根据绑定值 checkAll 与 isIndeterminate 联动)
* 半选:checkAll: true或者false,isIndeterminate:true
* 全选:checkAll:true isIndeterminate:false
* 不选:checkAll:false isIndeterminate:false
*/
handleCheckedCitiesChange(value, item) {
const checkedCount = value.length;
item.checkAll = checkedCount === item.diagnoseOperateDoctorRespList.length;
if (checkedCount > 0 && checkedCount < item.diagnoseOperateDoctorRespList.length) {
item.isIndeterminate = true;
item.checkAll = true;
}else{
item.isIndeterminate = false;
}
this.$emit('getDepartlist', this.departDoctorList);
}
},
};
</script>
<style lang="scss" >
.depart-doctor{
.el-checkbox__input.is-disabled .el-checkbox__inner{
border-color: #D9D9D9 !important;
background: #fff !important;
}
.el-checkbox.is-disabled .el-checkbox__label{
color: #D9D9D9 !important;
}
.el-radio__input.is-checked+.el-radio__label, .el-tabs__item.is-active {
color: #0D9078 !important;
font-size:16px !important ;
}
.is-active{
border: none;
position: relative;
&::after {
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>
<template>
<div class="depart-doctor">
<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-checkbox
v-model="item.checkAll"
:indeterminate="item.isIndeterminate"
:disabled="item.allDisabled"
@change="
(value) => {
handleCheckAllChange(value, item);
}
"
>
全选
</el-checkbox>
<div style="margin: 10px 0" />
<el-checkbox-group
v-model="item.checkDoctorIdListByDepartment"
@change="
(val) => {
handleCheckedCitiesChange(val, item);
}
"
>
<el-checkbox
v-for="itemChild in item.diagnoseOperateDoctorRespList"
:key="itemChild.doctorId"
:label="itemChild.doctorId"
:disabled="itemChild.disabled"
>
{{ itemChild.doctorName + ' ' }}{{ ' ' + itemChild.doctorId }}
</el-checkbox>
</el-checkbox-group>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
props: {
departDoctorList: {
type: Array,
default() {
return [];
},
},
activeMoutendName: {
type: String,
default() {
return '';
},
},
},
data() {
return {};
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
handleCheckAllChange(value, item) {
let itemNameList = [];
if (value) {
itemNameList = (item.diagnoseOperateDoctorRespList || []).map(
(item) => {
return item.doctorId;
}
);
}
item.checkDoctorIdListByDepartment = value ? itemNameList : [];
item.isIndeterminate = false;
this.$emit('getDepartlist', this.departDoctorList);
},
/**
* checkbox状态 (根据绑定值 checkAll 与 isIndeterminate 联动)
* 半选:checkAll: true或者false,isIndeterminate:true
* 全选:checkAll:true isIndeterminate:false
* 不选:checkAll:false isIndeterminate:false
*/
handleCheckedCitiesChange(value, item) {
const checkedCount = value.length;
item.checkAll =
checkedCount === item.diagnoseOperateDoctorRespList.length;
if (
checkedCount > 0 &&
checkedCount < item.diagnoseOperateDoctorRespList.length
) {
item.isIndeterminate = true;
item.checkAll = true;
} else {
item.isIndeterminate = false;
}
this.$emit('getDepartlist', this.departDoctorList);
},
},
};
</script>
<style lang="scss">
.depart-doctor {
.el-checkbox__input.is-disabled .el-checkbox__inner {
border-color: #d9d9d9 !important;
background: #fff !important;
}
.el-checkbox.is-disabled .el-checkbox__label {
color: #d9d9d9 !important;
}
.el-radio__input.is-checked + .el-radio__label,
.el-tabs__item.is-active {
color: #0d9078 !important;
font-size: 16px !important ;
}
.is-active {
border: none;
position: relative;
&::after {
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 @@
<i
class="talk-icon"
:class="diagnoseTypeIcon"
/><span>{{
diagnoseType
}}444</span>
/><span>{{ diagnoseType }}444</span>
</div>
<div class="time">
<i class="appointment" /><span>{{ appointBeginTime }}555</span>-<span>{{ appointEndTime }}666</span>
......
const roundCard = {
import io from 'socket.io-client';
const socket = {
namespaced: true,
state: {
socketClient: null,
},
actions: {
initCard(context, payload) {
initSocket(context, payload) {
const { rootState } = context;
console.log(context, payload, 'context, payload111', rootState);
// 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 });
// }
console.log(context, payload, 'context, payload111');
const socketClient = io.connect(payload.url, {
query: {
loginUserNum: `diagnose_list_socket_${payload.userId}`,
},
// reconnection: false,
});
context.commit('SET_SOCKET', socketClient, rootState);
socketClient.on('connect', (socket) => {
console.log('socket 链接成功', socket, socketClient);
});
socketClient.on('connect_error', (err) => {
console.log('socket connect_error', err);
// state.socketClient.connect();
});
socketClient.on('disconnect', (socket) => {
console.log('socket disconnect----', socket);
// 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) => {
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: {
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 = {
console.log('socket disconnect----', socket);
// 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) => {
console.log(
socket,
......@@ -75,8 +47,9 @@ const socket = {
if (
path &&
String(path).indexOf('workbench') > -1 &&
n.operateUserId == operateUserId
(n.operateUserId == operateUserId || n.operateUserId == '999999')
) {
console.log(n);
const ni = { notifyInfo: n, rootState: rootState };
context.commit('SET_NOTIFY', ni);
}
......
......@@ -7,7 +7,10 @@
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>我的工作台</el-breadcrumb-item>
</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">
<div class="left">
<el-row
......@@ -74,7 +77,11 @@
<script>
import consultationlist from '@/components/common/consultation';
import { getMatchList, getCountByDay, lateCountByDay } from '@/api/administrators';
import {
getMatchList,
getCountByDay,
lateCountByDay,
} from '@/api/administrators';
export default {
components: {
......@@ -92,8 +99,8 @@
return time.getTime() > new Date().getTime(); // 减去一天的时间代表可以选择同一天;
},
},
callDoctorNum:'',
doctorLaterNum:''
callDoctorNum: '',
doctorLaterNum: '',
};
},
watch: {},
......@@ -117,10 +124,11 @@
},
getCountByDay() {
const params = {
startTimestamp:new Date(this.workbenchAdminDate).getTime(),
endTimestamp:new Date(this.workbenchAdminDate).getTime() + 86400 * 1000
startTimestamp: new Date(this.workbenchAdminDate).getTime(),
endTimestamp:
new Date(this.workbenchAdminDate).getTime() + 86400 * 1000,
};
getCountByDay(params).then(res => {
getCountByDay(params).then((res) => {
if (res.code == '000000') {
this.callDoctorNum = res.data;
}
......@@ -128,10 +136,11 @@
},
lateCountByDay() {
const params = {
startTimestamp:new Date(this.workbenchAdminDate).getTime(),
endTimestamp:new Date(this.workbenchAdminDate).getTime() + 86400 * 1000
startTimestamp: new Date(this.workbenchAdminDate).getTime(),
endTimestamp:
new Date(this.workbenchAdminDate).getTime() + 86400 * 1000,
};
lateCountByDay(params).then(res => {
lateCountByDay(params).then((res) => {
if (res.code == '000000') {
this.doctorLaterNum = res.data;
}
......@@ -155,38 +164,38 @@
border-radius: 7px;
border: 1px solid #d9d9d9;
}
.row-col-show{
.el-col-12{
.right{
.row-col-show {
.el-col-12 {
.right {
display: flex;
width: 70%;
align-items: center;
justify-content: space-around;
.totalNumShow{
.totalNumShow {
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #212121;
}
.callDoctorShow{
.callDoctorShow {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.callDoctorNum{
.callDoctorNum {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #212121;
}
.laterDoctorShow{
.laterDoctorShow {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.laterDoctorNum{
.laterDoctorNum {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
......
......@@ -48,7 +48,10 @@
<p>将永久删除名下</p>
<p>所有的科室及上级医生</p>
</div>
<div class="work-info-botton" style="text-align: center">
<div
class="work-info-botton"
style="text-align: center"
>
<span
slot="footer"
class="dialog-footer"
......@@ -70,11 +73,7 @@
</div>
</template>
<script>
import {
setDiagnoseMatch,
operatorQuery,
sumbitMatch
} from '@/api/operation';
import { setDiagnoseMatch, operatorQuery, sumbitMatch } from '@/api/operation';
import { doctorListRest } from '@/api/workbench';
import _ from 'lodash';
export default {
......@@ -82,9 +81,9 @@
return {
checklist: [],
adminList: [],
showIsReset:false,
operateId:'',
oldCheckList:[],
showIsReset: false,
operateId: '',
oldCheckList: [],
};
},
mounted() {
......@@ -150,19 +149,19 @@
this.cancelList = _.difference(this.oldCheckList, this.checklist);
if (this.cancelList.length > 0) {
this.showIsReset = true;
}else {
} else {
this.sumbitmatch();
}
},
confirmResert() {
const uidList = this.cancelList || [];
doctorListRest(uidList).then(res => {
doctorListRest(uidList).then((res) => {
if (res.code == '000000') {
this.showIsReset = false;
this.sumbitmatch();
}
});
}
});
},
},
};
</script>
......@@ -177,7 +176,7 @@
margin-bottom: 20px;
}
.operation-content {
padding: 20px;
padding: 20px;
background: #ffffff;
.checkbox-container {
......@@ -199,31 +198,31 @@
align-items: center;
}
}
.show-info-title{
.show-info-title {
text-align: center;
padding: 30px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #02120F;
color: #02120f;
}
.dialog-footer {
.contest {
min-width: 160px;
height: 40px;
background: #0d9078;
border-radius: 20px;
}
.cancel-submit {
min-width: 160px;
height: 40px;
border-radius: 20px;
border: 1px solid #0d9078;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0d9078;
}
.contest {
min-width: 160px;
height: 40px;
background: #0d9078;
border-radius: 20px;
}
.cancel-submit {
min-width: 160px;
height: 40px;
border-radius: 20px;
border: 1px solid #0d9078;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #0d9078;
}
}
}
</style>
......@@ -82,7 +82,11 @@
userID: userId,
};
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 });
vueMenuDtos.map((item) => {
if (item.index.indexOf('administrators') > -1) {
......@@ -181,8 +185,6 @@
color: #fff;
background: #06232c;
}
}
}
</style>
......@@ -71,7 +71,7 @@ module.exports = {
port: 8080,
proxy: {
'/proxy': {
target: 'https://test1-sc.yunqueyi.com/',
target: 'https://dev-sc.yunqueyi.com/',
ws: false,
changeOrigin: true,
secure: true,
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册