mirror of
https://gitee.com/xiongmao1988/rax-medical.git
synced 2026-06-14 19:31:50 +08:00
远程管理心
This commit is contained in:
parent
aa69fcab6c
commit
5b29674a39
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="referrer" content="no-referrer"/>
|
||||
<title>瑞鞍星医疗科技</title>
|
||||
<title>瑞懿为医疗科技</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ export const constantRoute = [
|
|||
},
|
||||
{
|
||||
path: '/remote-manage/remote-control',
|
||||
name: '远程控制',
|
||||
name: '远程查看',
|
||||
component: () => import('@/views/remote-manage/remote-control.vue'),
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ export const getMenuData = () => {
|
|||
type: '菜单',
|
||||
},{
|
||||
id: '4-2',
|
||||
menuName: '远程控制',
|
||||
menuName: '远程查看',
|
||||
order: 1,
|
||||
icon: '',
|
||||
route: '/patients-manage/surgery-info',
|
||||
|
|
|
|||
|
|
@ -95,13 +95,14 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
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 medicineWS = new WebSocket(medicineUrl)
|
||||
const chatWS = new WebSocket(chatUrl)
|
||||
vitalWS.onopen = function () {
|
||||
vitalWS.send(JSON.stringify({
|
||||
patientName: name,
|
||||
idNum: id,
|
||||
date: date
|
||||
date: date,
|
||||
msgType: "msg"
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
@ -113,7 +114,16 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
ElMessage.error("远程管理" + (index + 1) + "出错")
|
||||
}
|
||||
|
||||
medicineWS.onopen = function () {
|
||||
vitalWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "heartbeat") {
|
||||
vitalWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* medicineWS.onopen = function () {
|
||||
medicineWS.send(JSON.stringify({
|
||||
patientName: name,
|
||||
idNum: id,
|
||||
|
|
@ -127,13 +137,14 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
|
||||
medicineWS.onerror = () => {
|
||||
ElMessage.error("远程管理" + (index + 1) + "给药出错")
|
||||
}
|
||||
}*/
|
||||
|
||||
chatWS.onopen = function () {
|
||||
chatWS.send(JSON.stringify({
|
||||
patientName: name,
|
||||
idNum: id,
|
||||
date: date
|
||||
date: date,
|
||||
msgType: "msg"
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
@ -145,9 +156,18 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
ElMessage.error("远程管理" + (index + 1) + "通讯出错")
|
||||
}
|
||||
|
||||
chatWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "heartbeat") {
|
||||
chatWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.patient[name + id + date + index] = {
|
||||
vitalWS,
|
||||
medicineWS,
|
||||
// medicineWS,
|
||||
chatWS
|
||||
}
|
||||
}
|
||||
|
|
@ -156,7 +176,7 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
const patient: any = this.patient[name + id + date + index]
|
||||
if (patient) {
|
||||
patient.vitalWS.close()
|
||||
patient.medicineWS.close()
|
||||
// patient.medicineWS.close()
|
||||
patient.chatWS.close()
|
||||
delete this.patient[name + id + date + index]
|
||||
}
|
||||
|
|
@ -164,11 +184,29 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
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.vitalWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "msg") {
|
||||
cb(e)
|
||||
} else {
|
||||
patient.vitalWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
patient.vitalCB = cb
|
||||
} else {
|
||||
this.createConnect(name, id, date, index)
|
||||
this.patient[name + id + date + index].vitalWS.onmessage = cb
|
||||
this.patient[name + id + date + index].vitalWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "msg") {
|
||||
cb(e)
|
||||
} else {
|
||||
this.patient[name + id + date + index].vitalWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
this.patient[name + id + date + index].vitalCB = cb
|
||||
}
|
||||
},
|
||||
|
|
@ -190,7 +228,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
patientName: name,
|
||||
idNum: id,
|
||||
date: date,
|
||||
msg
|
||||
msg,
|
||||
msgType: "msg"
|
||||
}
|
||||
patient.chatWS.send(JSON.stringify(params))
|
||||
cb({
|
||||
|
|
@ -207,7 +246,16 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
const patient: any = this.patient[name + id + date + index]
|
||||
if (patient) {
|
||||
patient.chatCB = cb
|
||||
patient.chatWS.onmessage = cb
|
||||
patient.chatWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "msg") {
|
||||
cb(e)
|
||||
} else {
|
||||
patient.chatWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cb({
|
||||
status: 1,
|
||||
|
|
@ -240,7 +288,8 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
date: args.date,
|
||||
flag: args.flag,
|
||||
medicine: args.medicine,
|
||||
value: args.value
|
||||
value: args.value,
|
||||
msgType: "msg"
|
||||
}
|
||||
patient.medicineWS.send(JSON.stringify(params))
|
||||
cb({
|
||||
|
|
@ -257,7 +306,16 @@ export const useRemoteWsStore = defineStore("remoteWs", {
|
|||
const patient = this.patient[name + id + date + index]
|
||||
if (patient) {
|
||||
patient.medicineCB = cb
|
||||
patient.medicineWS.onmessage = cb
|
||||
patient.medicineWS.onmessage = (e: any) => {
|
||||
if (e && e.data) {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.msgType == "msg") {
|
||||
cb(e)
|
||||
} else {
|
||||
patient.medicineWS.send(JSON.stringify({msgType: "heartbeat"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cb({
|
||||
status: 1,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ export const useUserStore = defineStore('login', {
|
|||
actions: {
|
||||
getlogin() {
|
||||
const onlineUser = Session.get("onlineUser");
|
||||
return this.userInfo.account ? this.userInfo : onlineUser
|
||||
return this.userInfo.account && this.userInfo.account != null ? this.userInfo : onlineUser
|
||||
},
|
||||
setlogin(key: string, e: any) {
|
||||
this.userInfo[key] = e
|
||||
|
|
|
|||
|
|
@ -7,20 +7,20 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="住院号" prop="住院号" :label-width="rightWidth">
|
||||
<el-input v-model="formData.住院号" readonly placeholder="请输入住院号"></el-input>
|
||||
<el-form-item label="证件号" prop="住院号" :label-width="rightWidth">
|
||||
<el-input v-model="formData.住院号" readonly placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="gutter">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性别" prop="性别">
|
||||
<el-input v-model="formData.性别" readonly placeholder="请输入住院号" ></el-input>
|
||||
<el-input v-model="formData.性别" readonly placeholder="请输入" ></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="科室" prop="科室" :label-width="rightWidth">
|
||||
<el-input v-model="formData.科室" readonly placeholder="请输入住院号" ></el-input>
|
||||
<el-input v-model="formData.科室" readonly placeholder="请输入" ></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -103,7 +103,7 @@ const rules = reactive({
|
|||
{required: true, message: '请输入姓名', trigger: ['blur', 'change']},
|
||||
],
|
||||
code: [
|
||||
{required: true, message: '请输入住院号', trigger: ['blur', 'change']},
|
||||
{required: true, message: '请输入证件号', trigger: ['blur', 'change']},
|
||||
],
|
||||
dept: [
|
||||
{required: true, message: '请选择科室', trigger: ['blur', 'change']},
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
@row-click="tableRowClick">
|
||||
<!-- <el-table-column type="selection" width="55"/>-->
|
||||
<el-table-column type="index" label="#" width="55" align="center"/>
|
||||
<el-table-column property="住院号" label="住院号" width="120" align="center"/>
|
||||
<el-table-column property="住院号" label="证件号" width="120" align="center"/>
|
||||
<el-table-column property="姓名" label="姓名" width="120" align="center"/>
|
||||
<el-table-column label="手机号" width="220" align="center">
|
||||
<template #default="scope">
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
</el-select>
|
||||
</div>
|
||||
<div class="search-cell">
|
||||
<span class="label">住院号</span>
|
||||
<span class="label">证件号</span>
|
||||
<el-input v-model="queryParams.code" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
<div class="search-cell">
|
||||
|
|
@ -218,7 +218,7 @@ async function queryData(e: any) {
|
|||
tableData.value = []
|
||||
|
||||
if (!e.code) {
|
||||
ElMessage.warning('住院号为必填项!')
|
||||
ElMessage.warning('证件号为必填项!')
|
||||
return
|
||||
}
|
||||
if (!queryParams.value.type) {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<el-form-item class="input-box" ><span>输入病人姓名:</span>
|
||||
<el-input v-model="patientInfo.patient"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="input-box" ><span>输入病人住院号:</span>
|
||||
<el-form-item class="input-box" ><span>输入病人证件号:</span>
|
||||
<el-input v-model="patientInfo.patientId"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <p class="input-box"><span>请选择手术时间:</span>-->
|
||||
|
|
@ -66,7 +66,7 @@ const confirmRemote = () => {
|
|||
if (patientInfo.value.patientId && patientInfo.value.patient) {
|
||||
ElMessage.success('连接成功!')
|
||||
patientInfo.value.isRemote = true
|
||||
patientInfo.value.taskName = '远程控制' + (patientInfo.value.index + 1)
|
||||
patientInfo.value.taskName = '远程查看' + (patientInfo.value.index + 1)
|
||||
patientInfo.value.date = dateFormater("yyyyMMdd", patientInfo.value.date)
|
||||
unsubscribeLastTask();
|
||||
remoteWsStore.setCurrentTaskIndex(patientInfo.value.index)
|
||||
|
|
|
|||
|
|
@ -1,61 +1,61 @@
|
|||
<template>
|
||||
<div class="remote-item-part">
|
||||
<div class="title">
|
||||
<span>{{ remoteTask.taskName || '远程控制' }}</span>
|
||||
</div>
|
||||
<div class="content mini" :class="{ 'is-total': remoteTask.isRemote }">
|
||||
<div class="left-box">
|
||||
<div class="info-box">
|
||||
<div class="row-item">
|
||||
<span class="label">病人名称</span>
|
||||
<span class="input-value">{{ remoteTask.patient }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">住院号</span>
|
||||
<span class="input-value">{{ remoteTask.patientId }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">手术时间</span>
|
||||
<span class="input-value">{{
|
||||
remoteTask.date
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">手术状态</span>
|
||||
<span class="tag-value" :class="{ 'normal': !patientInfo.state }">正常</span>
|
||||
<span class="tag-value" :class="{ 'alarm': patientInfo.state }">异常</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-item" :class="{ 'alarm': patientInfo.BIS_except }">
|
||||
<span class="label">BIS</span>
|
||||
<span class="value">{{ patientInfo.BIS }}</span>
|
||||
</div>
|
||||
<div class="row-item" :class="{ 'alarm': patientInfo.SBP_except }">
|
||||
<span class="label">SBP</span>
|
||||
<span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">SPO2</span>
|
||||
<span class="value">{{ patientInfo.SPO2 }}</span>
|
||||
</div>
|
||||
<div class="row-item yellow" :class="{ 'alarm': patientInfo.DBP_except }">
|
||||
<span class="label">DBP</span>
|
||||
<span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span>
|
||||
</div>
|
||||
<div class="row-item yellow" :class="{ 'alarm': patientInfo.HR_except }">
|
||||
<span class="label">HR</span>
|
||||
<span class="value">{{ patientInfo.HR }}<span class="unit">次/分</span></span>
|
||||
</div>
|
||||
<div class="row-item yellow">
|
||||
<span class="label">TEMP</span>
|
||||
<span class="value">{{ patientInfo.TEMP }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-box">
|
||||
<img src="@/assets/imgs/main_body_intact.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="remote-item-part">
|
||||
<div class="title">
|
||||
<span>{{ remoteTask.taskName || '远程查看' }}</span>
|
||||
</div>
|
||||
<div class="content mini" :class="{ 'is-total': remoteTask.isRemote }">
|
||||
<div class="left-box">
|
||||
<div class="info-box">
|
||||
<div class="row-item">
|
||||
<span class="label">病人名称</span>
|
||||
<span class="input-value">{{ remoteTask.patient }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">证件号</span>
|
||||
<span class="input-value">{{ remoteTask.patientId }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">手术时间</span>
|
||||
<span class="input-value">{{
|
||||
remoteTask.date
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">手术状态</span>
|
||||
<span class="tag-value" :class="{ 'normal': !patientInfo.state }">正常</span>
|
||||
<span class="tag-value" :class="{ 'alarm': patientInfo.state }">异常</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-item" :class="{ 'alarm': patientInfo.BIS_except }">
|
||||
<span class="label">BIS</span>
|
||||
<span class="value">{{ patientInfo.BIS }}</span>
|
||||
</div>
|
||||
<div class="row-item" :class="{ 'alarm': patientInfo.SBP_except }">
|
||||
<span class="label">SBP</span>
|
||||
<span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">SPO2</span>
|
||||
<span class="value">{{ patientInfo.SPO2 }}</span>
|
||||
</div>
|
||||
<div class="row-item yellow" :class="{ 'alarm': patientInfo.DBP_except }">
|
||||
<span class="label">DBP</span>
|
||||
<span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span>
|
||||
</div>
|
||||
<div class="row-item yellow" :class="{ 'alarm': patientInfo.HR_except }">
|
||||
<span class="label">HR</span>
|
||||
<span class="value">{{ patientInfo.HR }}<span class="unit">次/分</span></span>
|
||||
</div>
|
||||
<div class="row-item yellow">
|
||||
<span class="label">TEMP</span>
|
||||
<span class="value">{{ patientInfo.TEMP }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-box">
|
||||
<img src="@/assets/imgs/main_body_intact.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang='ts' setup>
|
||||
|
|
@ -63,7 +63,7 @@ import {onMounted, onUnmounted, ref} from 'vue'
|
|||
import {useRemoteWsStore} from "@/stores/remote-ws-store";
|
||||
|
||||
const props = withDefaults(defineProps<{ index: number }>(), {
|
||||
index: () => 0
|
||||
index: () => 0
|
||||
})
|
||||
const emit = defineEmits(['addLogAfter'])
|
||||
const remoteWsStore = useRemoteWsStore();
|
||||
|
|
@ -72,59 +72,60 @@ const patientInfo = ref({} as any)
|
|||
let reconnectTime = 0
|
||||
|
||||
onMounted(() => {
|
||||
// 连接成功执行查询
|
||||
if (remoteTask.value.isRemote) {
|
||||
initData()
|
||||
}
|
||||
// 连接成功执行查询
|
||||
if (remoteTask.value.isRemote) {
|
||||
initData()
|
||||
}
|
||||
})
|
||||
onUnmounted(() => {
|
||||
remoteWsStore.unsubscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index);
|
||||
remoteWsStore.unsubscribeVital(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index);
|
||||
})
|
||||
|
||||
function initData() {
|
||||
subscribeVital()
|
||||
wsClose()
|
||||
subscribeVital()
|
||||
wsClose()
|
||||
}
|
||||
|
||||
function subscribeVital() {
|
||||
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]);
|
||||
patientInfo.value.state = (patientInfo.value.BIS_except || patientInfo.value.SBP_except ||
|
||||
patientInfo.value.DBP_except || patientInfo.value.HR_except);
|
||||
setLog(patientInfo.value, props.index)
|
||||
emit('addLogAfter', props.index)
|
||||
}
|
||||
})
|
||||
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]);
|
||||
patientInfo.value.state = (patientInfo.value.BIS_except || patientInfo.value.SBP_except ||
|
||||
patientInfo.value.DBP_except || patientInfo.value.HR_except);
|
||||
setLog(patientInfo.value, props.index)
|
||||
emit('addLogAfter', props.index)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function wsClose() {
|
||||
remoteWsStore.vitalOnclose(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index, () => {
|
||||
if (reconnectTime < 3) {
|
||||
remoteWsStore.createConnect(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index)
|
||||
subscribeVital()
|
||||
wsClose()
|
||||
} else {
|
||||
reconnectTime = 0
|
||||
}
|
||||
})
|
||||
remoteWsStore.vitalOnclose(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index, () => {
|
||||
if (reconnectTime < 3) {
|
||||
remoteWsStore.createConnect(remoteTask.value.patient, remoteTask.value.patientId, remoteTask.value.date, props.index)
|
||||
setTimeout(() => {
|
||||
subscribeVital()
|
||||
wsClose()
|
||||
}, 3000)
|
||||
reconnectTime++
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function setLog(data: any, index: number) {
|
||||
remoteWsStore.exceptionType.forEach((item: any) => {
|
||||
if (data[item]) {
|
||||
const msg: any = remoteWsStore.exceptionMsg[item];
|
||||
remoteWsStore.setRemoteLog({
|
||||
state: msg,
|
||||
taskName: remoteTask.value.taskName,
|
||||
time: new Date(),
|
||||
type: "exception"
|
||||
}, index);
|
||||
}
|
||||
})
|
||||
remoteWsStore.exceptionType.forEach((item: any) => {
|
||||
if (data[item]) {
|
||||
const msg: any = remoteWsStore.exceptionMsg[item];
|
||||
remoteWsStore.setRemoteLog({
|
||||
state: msg,
|
||||
taskName: remoteTask.value.taskName,
|
||||
time: new Date(),
|
||||
type: "exception"
|
||||
}, index);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -133,234 +134,236 @@ function setLog(data: any, index: number) {
|
|||
$size: 20px;
|
||||
|
||||
.remote-item-part {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 1px solid $border-color;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: transparent;
|
||||
transition: all .6s;
|
||||
z-index: 1;
|
||||
}
|
||||
&:hover {
|
||||
&::after {
|
||||
background-color: rgba(black, .1);
|
||||
transition: all .6s;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: $size;
|
||||
font-size: $size*0.7;
|
||||
text-align: center;
|
||||
line-height: $size;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
background: $main-color;
|
||||
}
|
||||
height: 100%;
|
||||
border: 1px solid $border-color;
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
height: calc(100% - #{$size});
|
||||
padding: $size*0.5;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.common-box {
|
||||
width: 30%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: transparent;
|
||||
transition: all .6s;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.left-box {
|
||||
@extend .common-box;
|
||||
|
||||
.label {
|
||||
background: $main-color;
|
||||
}
|
||||
&:hover {
|
||||
&::after {
|
||||
background-color: rgba(black, .1);
|
||||
transition: all .6s;
|
||||
}
|
||||
}
|
||||
|
||||
.center-box {
|
||||
@extend .common-box;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.right-box {
|
||||
@extend .common-box;
|
||||
|
||||
.label {
|
||||
background: #f8b300;
|
||||
}
|
||||
}
|
||||
|
||||
.row-item {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.label {
|
||||
flex-shrink: 0;
|
||||
.title {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: $size;
|
||||
color: white;
|
||||
font-size: $size*0.6;
|
||||
line-height: $size;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box,
|
||||
.row-item .value {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.is-total {
|
||||
|
||||
.info-box,
|
||||
.row-item .value {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.label {
|
||||
width: calc(50% - $size*0.5);
|
||||
}
|
||||
|
||||
.value {
|
||||
width: 50%;
|
||||
height: $size;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
font-size: $size*0.7;
|
||||
text-align: center;
|
||||
line-height: $size;
|
||||
font-weight: 600;
|
||||
|
||||
.unit {
|
||||
font-size: $size*0.6;
|
||||
font-family: 400;
|
||||
}
|
||||
}
|
||||
|
||||
.right-box .value {
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
}
|
||||
|
||||
.row-item.alarm {
|
||||
.label {
|
||||
background: red !important;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: red !important;
|
||||
border-color: red !important;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box {
|
||||
width: 100%;
|
||||
|
||||
.row-item {
|
||||
padding: $size*0.5 0;
|
||||
height: $size;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.label {
|
||||
width: $size*3;
|
||||
height: $size;
|
||||
background: transparent;
|
||||
color: $main-color;
|
||||
font-size: $size*0.6;
|
||||
line-height: $size;
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.input-value {
|
||||
width: 100%;
|
||||
height: $size;
|
||||
line-height: $size;
|
||||
font-size: $size*0.6;
|
||||
color: $main-color;
|
||||
border-bottom: 1px solid $border2-color;
|
||||
}
|
||||
|
||||
.tag-value {
|
||||
margin-left: $size*0.3;
|
||||
margin-top: $size*0.1;
|
||||
padding: 0 $size*0.5;
|
||||
height: $size*0.9;
|
||||
line-height: $size;
|
||||
font-size: $size*0.5;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
background: $border2-color;
|
||||
border-radius: 8px;
|
||||
|
||||
&.normal {
|
||||
background: $main-color;
|
||||
}
|
||||
|
||||
&.alarm {
|
||||
background: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
color: white;
|
||||
background: $main-color;
|
||||
}
|
||||
|
||||
&.mini {
|
||||
padding: $size;
|
||||
.content {
|
||||
width: 100%;
|
||||
height: calc(100% - #{$size});
|
||||
padding: $size*0.5;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.left-box {
|
||||
width: 50%;
|
||||
}
|
||||
.common-box {
|
||||
width: 30%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.center-box {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
&.is-total {
|
||||
.left-box {
|
||||
.info-box {
|
||||
display: block;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
@extend .common-box;
|
||||
|
||||
.row-item.yellow {
|
||||
.label {
|
||||
background: $main-color;
|
||||
background: $main-color;
|
||||
}
|
||||
}
|
||||
|
||||
.center-box {
|
||||
@extend .common-box;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.right-box {
|
||||
@extend .common-box;
|
||||
|
||||
.label {
|
||||
background: #f8b300;
|
||||
}
|
||||
}
|
||||
|
||||
.row-item {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.label {
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
height: $size;
|
||||
color: white;
|
||||
font-size: $size*0.6;
|
||||
line-height: $size;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box,
|
||||
.row-item .value {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.is-total {
|
||||
|
||||
.info-box,
|
||||
.row-item .value {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.label {
|
||||
width: calc(50% - $size * 0.5);
|
||||
}
|
||||
|
||||
.value {
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
width: 50%;
|
||||
height: $size;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
font-size: $size*0.7;
|
||||
line-height: $size;
|
||||
font-weight: 600;
|
||||
|
||||
.unit {
|
||||
font-size: $size*0.6;
|
||||
font-family: 400;
|
||||
}
|
||||
}
|
||||
|
||||
.right-box .value {
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
}
|
||||
|
||||
.row-item.alarm {
|
||||
.label {
|
||||
background: red !important;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: red !important;
|
||||
border-color: red !important;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box {
|
||||
width: 100%;
|
||||
|
||||
.row-item {
|
||||
padding: $size*0.5 0;
|
||||
height: $size;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.label {
|
||||
width: $size*3;
|
||||
height: $size;
|
||||
background: transparent;
|
||||
color: $main-color;
|
||||
font-size: $size*0.6;
|
||||
line-height: $size;
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.input-value {
|
||||
width: 100%;
|
||||
height: $size;
|
||||
line-height: $size;
|
||||
font-size: $size*0.6;
|
||||
color: $main-color;
|
||||
border-bottom: 1px solid $border2-color;
|
||||
}
|
||||
|
||||
.tag-value {
|
||||
margin-left: $size*0.3;
|
||||
margin-top: $size*0.1;
|
||||
padding: 0 $size*0.5;
|
||||
height: $size*0.9;
|
||||
line-height: $size;
|
||||
font-size: $size*0.5;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
background: $border2-color;
|
||||
border-radius: 8px;
|
||||
|
||||
&.normal {
|
||||
background: $main-color;
|
||||
}
|
||||
|
||||
&.alarm {
|
||||
background: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.mini {
|
||||
padding: $size;
|
||||
|
||||
.left-box {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.center-box {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
&.is-total {
|
||||
.left-box {
|
||||
.info-box {
|
||||
display: block;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.row-item.yellow {
|
||||
.label {
|
||||
background: $main-color;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: $main-color;
|
||||
border-color: $main-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}</style>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="remote-part">
|
||||
<div class="title">
|
||||
<span>{{ remoteItem?.taskName || '远程控制' }}</span>
|
||||
<span>{{ remoteItem?.taskName || '远程查看' }}</span>
|
||||
<el-button v-if="remoteItem?.taskName" class="break-btn" @click="breakRemote">断开连接</el-button>
|
||||
</div>
|
||||
<!-- 小分辨率 -->
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<span class="input-value">{{ remoteItem.patient }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">住院号</span>
|
||||
<span class="label">证件号</span>
|
||||
<span class="input-value">{{ remoteItem.patientId }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
<span class="input-value">{{ remoteItem?.patient }}</span>
|
||||
</div>
|
||||
<div class="row-item">
|
||||
<span class="label">住院号</span>
|
||||
<span class="label">证件号</span>
|
||||
<span class="input-value">{{ remoteItem?.patientId }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@
|
|||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column prop="total" label="累计药量(ml)" width="100"/>
|
||||
<el-table-column prop="state" label="工作状态" width="150" align="center"/>
|
||||
<!-- <el-table-column prop="state" label="工作状态" width="150" align="center"/>-->
|
||||
<!-- <el-table-column label="特殊情况人为干预" align="center">
|
||||
<template #default="scope">
|
||||
<div class="table-btn-box">
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
<el-table-column prop="name" label="药物名称" align="center"/>
|
||||
<el-table-column prop="speed" label="速度(ml/h)" width="100"/>
|
||||
<el-table-column prop="total" label="累计药量(ml)" width="100"/>
|
||||
<el-table-column prop="state" label="工作状态" width="150" align="center"/>
|
||||
<!-- <el-table-column prop="state" label="工作状态" width="150" align="center"/>-->
|
||||
<!-- <el-table-column label="特殊情况人为干预" align="center">
|
||||
<template #default="scope">
|
||||
<div class="table-btn-box">
|
||||
|
|
@ -268,7 +268,7 @@ onMounted(() => {
|
|||
onUnmounted(() => {
|
||||
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.unsubscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index);
|
||||
remoteWsStore.unsubscribeVital(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index);
|
||||
})
|
||||
|
||||
|
|
@ -289,7 +289,7 @@ function subscribeWS() {
|
|||
mssageList.value.push(JSON.parse(res.data));
|
||||
})
|
||||
|
||||
remoteWsStore.subscribeMedicine(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, index,
|
||||
/*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) {
|
||||
|
|
@ -300,7 +300,7 @@ function subscribeWS() {
|
|||
} else {
|
||||
ElMessage.error(data.msg)
|
||||
}
|
||||
})
|
||||
})*/
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -456,13 +456,13 @@ const setDatabase = () => {
|
|||
|
||||
const viewPatientInfo = () => {
|
||||
isPatientDialog.value = true;
|
||||
// getPatientInfo(currentRemote.value.patient, currentRemote.value.patientId,
|
||||
// currentRemote.value.date).then(res => {
|
||||
// if (res.code == 0) {
|
||||
// patientsFormRef.value.resetData()
|
||||
// patientsFormRef.value.formData = JSON.parse(JSON.stringify(res.data))
|
||||
// }
|
||||
// })
|
||||
/*getPatientInfo(currentRemote.value.patient, currentRemote.value.patientId,
|
||||
currentRemote.value.date).then(res => {
|
||||
if (res.code == 0) {
|
||||
patientsFormRef.value.resetData()
|
||||
patientsFormRef.value.formData = JSON.parse(JSON.stringify(res.data))
|
||||
}
|
||||
})*/
|
||||
getPatientInfoM(currentRemote.value.patient, currentRemote.value.patientId,
|
||||
currentRemote.value.date).then(res => {
|
||||
if (res.code == 0) {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ const editTask = (item: any) => {
|
|||
remoteDialogRef.value.open(item.index)
|
||||
}
|
||||
}
|
||||
// 跳转到远程控制
|
||||
// 跳转到远程查看
|
||||
const toRemoteControl = (item: any) => {
|
||||
// 如果当前任务是已连接状态则跳转,否则打开弹窗
|
||||
if (item.isRemote) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user