异常修复

This commit is contained in:
yy 2024-05-29 14:18:15 +08:00
parent 6f88dd9d67
commit 95bdf6cdff
7 changed files with 147 additions and 124 deletions

View File

@ -11,7 +11,7 @@ export const useRemoteWsStore = defineStore("remoteWs", {
patient: {} as any,
remoteTasks: [] as any,
remoteTasksCap: 10,
currentTaskIndex: 0,
currentTaskIndex: -1,
varMedicine: ["丙泊酚", "舒芬太尼", "瑞芬太尼", "顺阿曲库胺"],
fixedMedicine: ["尼卡地平", "艾司洛尔", "麻黄素", "阿托品"],
exceptionType: ["BIS_except", "DBP_except", "EtCO2_except", "HR_except", "SBP_except", "ST_except"],
@ -89,8 +89,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
setRemoteLog(log: any, i: number) {
this.remoteTasks[i].log.push(log)
},
createConnect(name: string, id: string, date: string) {
if (!this.patient[name + id + date]) {
createConnect(name: string, id: string, date: string, index: number) {
if (!this.patient[name + id + date + index]) {
const vitalWS = new WebSocket(vitalUrl)
const medicineWS = new WebSocket(medicineUrl)
const chatWS = new WebSocket(chatUrl)
@ -115,42 +115,42 @@ export const useRemoteWsStore = defineStore("remoteWs", {
date: date
}))
}
this.patient[name + id + date] = {
this.patient[name + id + date + index] = {
vitalWS,
medicineWS,
chatWS
}
}
},
disconnect(name: string, id: string, date: string) {
const patient: any = this.patient[name + id + date]
disconnect(name: string, id: string, date: string, index: number) {
const patient: any = this.patient[name + id + date + index]
if (patient) {
patient.vitalWS.close()
patient.medicineWS.close()
patient.chatWS.close()
delete this.patient[name + id + date]
delete this.patient[name + id + date + index]
}
},
subscribeVital(name: string, id: string, date: string, cb: any) {
const patient: any = this.patient[name + id + date]
subscribeVital(name: string, id: string, date: string, index: number, cb: any) {
const patient: any = this.patient[name + id + date + index]
if (patient) {
patient.vitalWS.onmessage = cb
patient.vitalCB = cb
} else {
this.createConnect(name, id, date)
this.patient[name + id + date].vitalWS.onmessage = cb
this.patient[name + id + date].vitalCB = cb
this.createConnect(name, id, date, index)
this.patient[name + id + date + index].vitalWS.onmessage = cb
this.patient[name + id + date + index].vitalCB = cb
}
},
unsubscribeVital(name: string, id: string, date: string) {
const patient: any = this.patient[name + id + date]
unsubscribeVital(name: string, id: string, date: string, index: number) {
const patient: any = this.patient[name + id + date + index]
if (patient && patient.vitalWS) {
patient.vitalWS.onmessage = undefined;
patient.vitalCB = undefined;
}
},
sendMsg(name: string, id: string, date: string, msg: string, cb: any) {
const patient: any = this.patient[name + id + date]
sendMsg(name: string, id: string, date: string, msg: string, index: number, cb: any) {
const patient: any = this.patient[name + id + date + index]
if (patient) {
const params = {
patientName: name,
@ -169,8 +169,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
})
}
},
subscribeChat(name: string, id: string, date: string, cb: any) {
const patient: any = this.patient[name + id + date]
subscribeChat(name: string, id: string, date: string, index: number, cb: any) {
const patient: any = this.patient[name + id + date + index]
if (patient) {
patient.chatCB = cb
patient.chatWS.onmessage = cb
@ -181,8 +181,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
})
}
},
unsubscribeChat(name: string, id: string, date: string) {
const patient: any = this.patient[name + id + date]
unsubscribeChat(name: string, id: string, date: string, index: number) {
const patient: any = this.patient[name + id + date + index]
patient.chatCB = undefined;
patient.chatWS.onmessage = undefined;
},
@ -193,8 +193,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
flag: string,
medicine: string,
value: string
}, cb: any) {
const patient: any = this.patient[args.name + args.id + args.date]
}, index: number, cb: any) {
const patient: any = this.patient[args.name + args.id + args.date + index]
if (patient) {
const params = {
patientName: args.name,
@ -215,8 +215,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
})
}
},
subscribeMedicine(name: string, id: string, date: string, cb: any) {
const patient = this.patient[name + id + date]
subscribeMedicine(name: string, id: string, date: string, index: number, cb: any) {
const patient = this.patient[name + id + date + index]
if (patient) {
patient.medicineCB = cb
patient.medicineWS.onmessage = cb
@ -227,8 +227,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
})
}
},
unsubscribeMedicine(name: string, id: string, date: string) {
const patient: any = this.patient[name + id + date]
unsubscribeMedicine(name: string, id: string, date: string, index: number) {
const patient: any = this.patient[name + id + date + index]
patient.medicineCB = undefined;
patient.medicineWS.onmessage = undefined;
}

View File

@ -50,7 +50,8 @@ defineExpose({
})
function open(i: number) {
patientInfo.value = remoteWsStore.remoteTasks[i];
remoteWsStore.setCurrentTaskIndex(i)
patientInfo.value = remoteWsStore.getRemoteTask()[remoteWsStore.getCurrentTaskIndex()];
patientInfo.value.date = new Date();
dialogVisible.value = true;
}
@ -96,7 +97,7 @@ const unsubscribeLastTask = () => {
const lastTaskIndex = remoteWsStore.currentTaskIndex;
const lastTask: any = remoteWsStore.remoteTasks[lastTaskIndex];
if (lastTask) {
remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date);
remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date, lastTaskIndex);
}
}

View File

@ -77,7 +77,7 @@ onMounted(() => {
}
})
onUnmounted(() => {
remoteWsStore.unsubscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date);
remoteWsStore.unsubscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index);
})
function initData() {
@ -85,7 +85,7 @@ function initData() {
}
function subscribeVital() {
remoteWsStore.subscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, (res: any) => {
remoteWsStore.subscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index, (res: any) => {
const data = JSON.parse(res.data);
if (data.vitalSignsList && data.vitalSignsList.length > 0) {
Object.assign(patientInfo.value, data.vitalSignsList[0]);

View File

@ -19,7 +19,7 @@
<div class="row-item">
<span class="label">手术时间</span>
<span class="input-value">{{
remoteItem.date
remoteItem?.date
}}</span>
</div>
<div class="row-item">
@ -62,11 +62,11 @@
<div class="info-box">
<div class="row-item">
<span class="label">病人名称</span>
<span class="input-value">{{ remoteItem.patient }}</span>
<span class="input-value">{{ remoteItem?.patient }}</span>
</div>
<div class="row-item">
<span class="label">住院号</span>
<span class="input-value">{{ remoteItem.patientId }}</span>
<span class="input-value">{{ remoteItem?.patientId }}</span>
</div>
</div>
<div class="row-item" :class="{ 'alarm': patientInfo.BIS_except }">
@ -90,7 +90,7 @@
<div class="row-item">
<span class="label">手术时间</span>
<span class="input-value">{{
remoteItem.date
remoteItem?.date
}}</span>
</div>
<div class="row-item">
@ -123,6 +123,7 @@ import { useRemoteWsStore } from "@/stores/remote-ws-store";
const emit = defineEmits(['addLogAfter', 'breakRemote'])
const mediaMini800 = ref(false)
const remoteItem = ref({} as any)
let currentIndex = -1;
const patientInfo = ref({} as any)
const remoteWsStore = useRemoteWsStore()
@ -139,32 +140,35 @@ onMounted(() => {
})
onUnmounted(() => {
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date);
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, currentIndex);
})
function showData(i: any) {
const lastTaskIndex = remoteWsStore.currentTaskIndex;
const lastTask: any = remoteWsStore.remoteTasks[lastTaskIndex];
const lastTaskIndex = remoteWsStore.getCurrentTaskIndex();
const lastTask: any = remoteWsStore.getRemoteTask()[lastTaskIndex];
if (lastTask) {
remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date);
remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date, lastTaskIndex);
}
remoteWsStore.currentTaskIndex = i
remoteItem.value = remoteWsStore.remoteTasks[remoteWsStore.currentTaskIndex]
remoteWsStore.setCurrentTaskIndex(i)
currentIndex = remoteWsStore.getCurrentTaskIndex()
remoteItem.value = remoteWsStore.getRemoteTask()[currentIndex]
getData()
}
function initData() {
const remoteTasks = remoteWsStore.getRemoteTask();
remoteItem.value = remoteTasks[remoteWsStore.getCurrentTaskIndex()]
if (remoteItem.value) {
remoteWsStore.createConnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date)
const remoteTasks = remoteWsStore.getRemoteTask()
currentIndex = remoteWsStore.getCurrentTaskIndex()
remoteItem.value = remoteTasks[currentIndex]
if (remoteItem.value && remoteItem.value.patient) {
remoteWsStore.createConnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, currentIndex)
getData()
}
}
function getData() {
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date);
remoteWsStore.subscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, (res: any) => {
if (currentIndex > -1 && remoteItem.value.patient) {
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, currentIndex);
remoteWsStore.subscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, currentIndex, (res: any) => {
if (res && res.data) {
const data = JSON.parse(res.data);
if (data.vitalSignsList && data.vitalSignsList.length > 0) {
@ -177,6 +181,7 @@ function getData() {
}
})
}
}
function setLog(data: any) {
remoteWsStore.exceptionType.forEach((item: any) => {
@ -187,14 +192,15 @@ function setLog(data: any) {
taskName: remoteItem.value.taskName,
time: new Date(),
type: "exception"
}, remoteWsStore.currentTaskIndex);
}, currentIndex);
}
})
}
const breakRemote = () => {
remoteWsStore.disconnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date)
remoteWsStore.resetRemoteTask(remoteWsStore.currentTaskIndex)
remoteWsStore.getRemoteTask()[currentIndex]
remoteWsStore.disconnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, currentIndex)
remoteWsStore.resetRemoteTask(currentIndex)
if (remoteWsStore.getActiveRemoteTask()) {
showData(remoteWsStore.getActiveRemoteTask())
}

View File

@ -269,13 +269,15 @@ onMounted(() => {
});
onUnmounted(() => {
remoteWsStore.unsubscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date);
remoteWsStore.unsubscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date);
remoteWsStore.unsubscribeVital(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date);
const index = remoteWsStore.getCurrentTaskIndex()
remoteWsStore.unsubscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index);
remoteWsStore.unsubscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index);
remoteWsStore.unsubscribeVital(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index);
})
function subscribeWS() {
remoteWsStore.subscribeVital(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date,
const index = remoteWsStore.getCurrentTaskIndex()
remoteWsStore.subscribeVital(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index,
function (res: any) {
const data = JSON.parse(res.data);
chartDom1.value.updateChartData(data.vitalSignsList[0]);
@ -285,12 +287,12 @@ function subscribeWS() {
updateMedicineTable(data.aiMedicineList[0], data.docMedicineList[0]);
})
remoteWsStore.subscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date,
remoteWsStore.subscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index,
function (res: any) {
mssageList.value.push(JSON.parse(res.data));
})
remoteWsStore.subscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date,
remoteWsStore.subscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index,
function (res: any) {
const data = JSON.parse(res.data);
if (data.status != 1) {
@ -487,8 +489,9 @@ const playPause = () => {
}
const sendMsg = () => {
if (msgVal.value.trim() == '') return;
const index = remoteWsStore.getCurrentTaskIndex()
remoteWsStore.sendMsg(currentRemote.value.patient, currentRemote.value.patientId,
currentRemote.value.date, msgVal.value, function (res: any) {
currentRemote.value.date, msgVal.value, index, function (res: any) {
if (res.code == 1) {
ElMessage.error(res.msg)
}
@ -530,7 +533,8 @@ const tableItemConfirm = (e: any, tableData: any) => {
medicine: e.row.name,
value: e.row.speed
}
remoteWsStore.sendMedicine(params, function () {
const index = remoteWsStore.getCurrentTaskIndex()
remoteWsStore.sendMedicine(params, index, function () {
});
}
@ -545,7 +549,8 @@ function startAI() {
date: currentRemote.value.date,
flag: "0",
}
remoteWsStore.sendMedicine(params, function () {
const index = remoteWsStore.getCurrentTaskIndex()
remoteWsStore.sendMedicine(params, index, function () {
});
}

View File

@ -7,7 +7,7 @@
</el-icon>
<span>缩略图</span>
</div>
<div class="task-btn-item" v-for="(item, index) in remoteTask" :key="'task-' + index"
<div class="task-btn-item" v-for="(item, index) in remoteWsStore.remoteTasks" :key="'task-' + index"
:class="{ 'connecting': item.patient || item.patientId, 'alarm': item.isException }"
@click="editTask(item)" @dblclick="toRemoteControl(item)">
<span>{{ item.taskName || ('新建任务' + (index + 1)) }}</span>
@ -37,7 +37,6 @@ const router = useRouter()
const remotePartRef = ref()
const messagePartRef = ref()
const remoteDialogRef = ref()
const remoteTask = ref([] as Array<any>)
const remoteWsStore = useRemoteWsStore();
onMounted(() => {
@ -45,8 +44,8 @@ onMounted(() => {
})
function initRemoteTask() {
remoteTask.value = remoteWsStore.initRemoteTask()
remotePartRef.value.showData(remoteWsStore.currentTaskIndex);
remoteWsStore.initRemoteTask()
remotePartRef.value.showData(remoteWsStore.getCurrentTaskIndex());
}
const viewThumbnail = () => {
@ -69,6 +68,7 @@ const editTask = (item: any) => {
const toRemoteControl = (item: any) => {
//
if (item.isRemote) {
remoteWsStore.setCurrentTaskIndex(item.index)
router.push('/remote-manage/remote-control')
} else {
remoteDialogRef.value.open(item.index)
@ -214,4 +214,5 @@ const addLogAfter = () => {
margin-left: 20px;
}
}
}</style>
}
</style>

View File

@ -3,15 +3,15 @@
<div class="remote-thumbnail-page">
<div class="remote-box row1">
<div class="remote-item" v-for="item in remoteTask.slice(0, 4)" :key="item.title" @click="openRemote(item)">
<RemoteItemPart :ref="'remoteItemPartRef' + item.index" :index="item.index"
@addLogAfter="addLogAfter"></RemoteItemPart>
<RemoteItemPart :ref="'remoteItemPartRef' + item.index" :index="item.index" @addLogAfter="addLogAfter">
</RemoteItemPart>
</div>
</div>
<div class="remote-box row2">
<div class="left-box">
<div class="remote-item" v-for="item in remoteTask.slice(4)" :key="item.title" @click="openRemote(item)">
<RemoteItemPart :ref="'remoteItemPartRef' + item.index" :index="item.index"
@addLogAfter="addLogAfter"></RemoteItemPart>
<RemoteItemPart :ref="'remoteItemPartRef' + item.index" :index="item.index" @addLogAfter="addLogAfter">
</RemoteItemPart>
</div>
</div>
<div class="right-box">
@ -43,6 +43,7 @@ onMounted(() => {
})
const openRemote = (params: any) => {
remoteWsStore.setCurrentTaskIndex(params.index)
router.push('/remote-manage/remote-manage');
}
const addLogAfter = (index: number) => {
@ -53,31 +54,38 @@ const addLogAfter = (index: number) => {
<style lang='scss' scoped>
$size: 20px;
.remote-thumbnail-page {
width: 1920px;
height: 1010px;
overflow: auto;
.remote-box {
width: 100%;
height: 33.33%;
display: flex;
.remote-item {
width: 25%;
height: 100%;
padding: $size*0.2;
}
&.row2 {
height: 66.67%;
.left-box {
width: 75%;
height: 100%;
display: flex;
flex-wrap: wrap;
.remote-item {
width: 33.33%;
height: 50%;
}
}
.right-box {
position: relative;
width: 25%;
@ -86,6 +94,7 @@ $size: 20px;
padding-top: $size*0.2 + $size;
display: flex;
flex-wrap: wrap;
.message-title {
position: absolute;
height: $size;
@ -99,6 +108,7 @@ $size: 20px;
color: white;
font-weight: 600;
}
.message-item {
width: 50%;
height: 20%;