加密算法异常,使用新的加密和解密算法

This commit is contained in:
zhaoyz 2024-04-23 14:59:13 +08:00
parent 298074da1f
commit e674cf8cd8
7 changed files with 503 additions and 432 deletions

View File

@ -12,7 +12,7 @@
"dependencies": { "dependencies": {
"@stomp/stompjs": "^7.0.0", "@stomp/stompjs": "^7.0.0",
"axios": "^1.3.3", "axios": "^1.3.3",
"crypto-js": "4.2.0", "crypto-js": "^4.2.0",
"echarts": "^5.4.1", "echarts": "^5.4.1",
"element-plus": "2.3.1", "element-plus": "2.3.1",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",

View File

@ -1,82 +1,100 @@
import { createRouter, createWebHistory } from 'vue-router' import {createRouter, createWebHistory} from 'vue-router'
import { useLoginStore } from '@/stores/user-info-store' import {useLoginStore} from '@/stores/user-info-store'
import { ElMessage, ElMessageBox } from 'element-plus' import {ElMessage} from 'element-plus'
import { constantRoute } from './routes' import {constantRoute} from './routes'
import {decrypt, decryption, encrypt, encryption, isBase64} from "@/utils/other";
const router = createRouter({ const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), history: createWebHistory(import.meta.env.BASE_URL),
routes: constantRoute, routes: constantRoute,
stringifyQuery: stringifyQuery,
parseQuery: parseQuery,
}) })
const kk = "raxipnenttlewe";
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
const loginInfo = useLoginStore().getlogin() const loginInfo = useLoginStore().getlogin()
// const isLogin = loginInfo.isLogin // const isLogin = loginInfo.isLogin
// 普通用户 // 普通用户
const commonUser = [ const commonUser = [
'/login', '/login',
'/home', '/home',
'/patients-manage', '/patients-manage',
'/patients-manage/patients-manage', '/patients-manage/patients-manage',
'/patients-manage/surgery-info' '/patients-manage/surgery-info'
] ]
// 中级管理员 // 中级管理员
const IntermediateAdmin = [ const IntermediateAdmin = [
'/login', '/login',
'/home', '/home',
'/patients-manage', '/patients-manage',
'/patients-manage/patients-manage', '/patients-manage/patients-manage',
'/patients-manage/surgery-info', '/patients-manage/surgery-info',
'/remote-manage', '/remote-manage',
'/remote-manage/remote-manage', '/remote-manage/remote-manage',
'/remote-manage/remote-control' '/remote-manage/remote-control'
] ]
// 高级管理员 // 高级管理员
const SeniorAdmin = [ const SeniorAdmin = [
'/login', '/login',
'/home', '/home',
'/patients-manage', '/patients-manage',
'/patients-manage/patients-manage', '/patients-manage/patients-manage',
'/patients-manage/surgery-info', '/patients-manage/surgery-info',
'/remote-manage', '/remote-manage',
'/remote-manage/remote-manage', '/remote-manage/remote-manage',
'/remote-manage/remote-control', '/remote-manage/remote-control',
'/permissions-manage', '/permissions-manage',
'/permissions-manage/doctor-manage', '/permissions-manage/doctor-manage',
'/permissions-manage/role-manage', '/permissions-manage/role-manage',
'/permissions-manage/menu-manage', '/permissions-manage/menu-manage',
'/logs-manage', '/logs-manage',
'/logs-manage/message-manage', '/logs-manage/message-manage',
'/logs-manage/logs-manage' '/logs-manage/logs-manage'
] ]
const isViewRoute = () => { const isViewRoute = () => {
let release = true let release = true
/*switch (loginInfo.permissions) { /*switch (loginInfo.permissions) {
case '超级管理员': case '超级管理员':
release = true release = true
break; break;
case '高级管理员': case '高级管理员':
release = SeniorAdmin.some((p: string) => p === to.path) release = SeniorAdmin.some((p: string) => p === to.path)
break; break;
case '中级管理员': case '中级管理员':
release = IntermediateAdmin.some((p: string) => p === to.path) release = IntermediateAdmin.some((p: string) => p === to.path)
break; break;
case '普通用户': case '普通用户':
release = commonUser.some((p: string) => p === to.path) release = commonUser.some((p: string) => p === to.path)
break; break;
default: default:
break; break;
}*/ }*/
return release return release
} }
if(to.fullPath ==='/login') { if (to.fullPath === '/login') {
next() next()
return return
} }
/*if (!isLogin) next('/login') // /*if (!isLogin) next('/login') //
else */if(!isViewRoute()) { else */
ElMessage.error('无权访问!') if (!isViewRoute()) {
next(from.fullPath) ElMessage.error('无权访问!')
}else next() next(from.fullPath)
} else next()
}); });
function stringifyQuery(query: any) {
return btoa(encrypt(JSON.stringify(query), kk));
}
function parseQuery(query: any) {
if (isBase64(query)) {
return JSON.parse(decrypt(atob(query), kk));
} else {
return query;
}
}
export default router export default router

View File

@ -5,29 +5,47 @@ import * as CryptoJS from 'crypto-js';
* *
*/ */
export function encryption(src: string, keyWord: string) { export function encryption(src: string, keyWord: string) {
const key = CryptoJS.enc.Utf8.parse(keyWord); const key = CryptoJS.enc.Utf8.parse(keyWord);
// 加密 // 加密
let encrypted = CryptoJS.AES.encrypt(src, key, { const encrypted = CryptoJS.AES.encrypt(src, key, {
iv: key, iv: key,
mode: CryptoJS.mode.CBC, mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7, padding: CryptoJS.pad.Pkcs7,
}); });
return encrypted.toString(); return encrypted.toString();
} }
/** /**
* *
* @param {*} params
* @returns * @returns
* @param src
* @param keyWord
*/ */
export function decryption(src: string, keyWord: string) { export function decryption(src: string, keyWord: string) {
const key = CryptoJS.enc.Utf8.parse(keyWord); const key = keyWord;
// 解密逻辑 // 解密逻辑
let decryptd = CryptoJS.AES.decrypt(src, key, { const decryptd = CryptoJS.AES.decrypt(src, key, {
iv: key, iv: key,
mode: CryptoJS.mode.CBC, mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7, padding: CryptoJS.pad.Pkcs7,
}); });
return decryptd.toString(CryptoJS.enc.Utf8); return decryptd.toString(CryptoJS.enc.Utf8);
}
export function encrypt(src: string, key: string) {
return CryptoJS.AES.encrypt(src, key).toString()
}
export function decrypt(src: string, key: string) {
return CryptoJS.AES.decrypt(src, key).toString(CryptoJS.enc.Utf8)
}
export function isBase64(s: string) {
if (s == "" || s.trim() == "") return false;
try {
return window.btoa(window.atob(s)) == s;
} catch (e) {
return false;
}
} }

View File

@ -1,119 +1,119 @@
<template> <template>
<div class="remote-part"> <div class="remote-part">
<div class="title"> <div class="title">
<span>{{ remoteItem?.taskName || '远程控制' }}</span> <span>{{ remoteItem?.taskName || '远程控制' }}</span>
<el-button v-if="remoteItem?.taskName" class="break-btn" @click="breakRemote">断开连接</el-button> <el-button v-if="remoteItem?.taskName" class="break-btn" @click="breakRemote">断开连接</el-button>
</div> </div>
<!-- 小分辨率 --> <!-- 小分辨率 -->
<div v-if="mediaMini800" class="content mini" :class="{'is-total': remoteItem?.isRemote}"> <div v-if="mediaMini800" class="content mini" :class="{'is-total': remoteItem?.isRemote}">
<div class="left-box"> <div class="left-box">
<div class="info-box"> <div class="info-box">
<div class="row-item"> <div class="row-item">
<span class="label">病人名称</span> <span class="label">病人名称</span>
<span class="input-value">{{ remoteItem.patient }}</span> <span class="input-value">{{ remoteItem.patient }}</span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">住院号</span> <span class="label">住院号</span>
<span class="input-value">{{ remoteItem.patientId }}</span> <span class="input-value">{{ remoteItem.patientId }}</span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">手术时间</span> <span class="label">手术时间</span>
<span class="input-value">{{ <span class="input-value">{{
remoteItem.date remoteItem.date
}}</span> }}</span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">手术状态</span> <span class="label">手术状态</span>
<span class="tag-value" :class="{'normal': !patientInfo.state}">正常</span> <span class="tag-value" :class="{'normal': !patientInfo.state}">正常</span>
<span class="tag-value" :class="{'alarm': patientInfo.state}">异常</span> <span class="tag-value" :class="{'alarm': patientInfo.state}">异常</span>
</div> </div>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.BIS_except}"> <div class="row-item" :class="{'alarm': patientInfo.BIS_except}">
<span class="label">BIS</span> <span class="label">BIS</span>
<span class="value">{{ patientInfo.BIS }}</span> <span class="value">{{ patientInfo.BIS }}</span>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.SBP_except}"> <div class="row-item" :class="{'alarm': patientInfo.SBP_except}">
<span class="label">SBP</span> <span class="label">SBP</span>
<span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span> <span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">SPO2</span> <span class="label">SPO2</span>
<span class="value">{{ patientInfo.SPO2 }}</span> <span class="value">{{ patientInfo.SPO2 }}</span>
</div> </div>
<div class="row-item yellow" :class="{'alarm': patientInfo.DBP_except}"> <div class="row-item yellow" :class="{'alarm': patientInfo.DBP_except}">
<span class="label">DBP</span> <span class="label">DBP</span>
<span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span> <span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span>
</div> </div>
<div class="row-item yellow" :class="{'alarm': patientInfo.HR_except}"> <div class="row-item yellow" :class="{'alarm': patientInfo.HR_except}">
<span class="label">HR</span> <span class="label">HR</span>
<span class="value">{{ patientInfo.HR }}<span class="unit">/</span></span> <span class="value">{{ patientInfo.HR }}<span class="unit">/</span></span>
</div> </div>
<div class="row-item yellow"> <div class="row-item yellow">
<span class="label">TEMP</span> <span class="label">TEMP</span>
<span class="value">{{ patientInfo.TEMP }}</span> <span class="value">{{ patientInfo.TEMP }}</span>
</div> </div>
</div> </div>
<div class="center-box"> <div class="center-box">
<img src="@/assets/imgs/main_body_intact.png"> <img src="@/assets/imgs/main_body_intact.png">
</div> </div>
</div> </div>
<div v-else class="content" :class="{'is-total': remoteItem?.isRemote}"> <div v-else class="content" :class="{'is-total': remoteItem?.isRemote}">
<div class="left-box"> <div class="left-box">
<div class="info-box"> <div class="info-box">
<div class="row-item"> <div class="row-item">
<span class="label">病人名称</span> <span class="label">病人名称</span>
<span class="input-value">{{ remoteItem.patient }}</span> <span class="input-value">{{ remoteItem.patient }}</span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">住院号</span> <span class="label">住院号</span>
<span class="input-value">{{ remoteItem.patientId }}</span> <span class="input-value">{{ remoteItem.patientId }}</span>
</div> </div>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.BIS_except}"> <div class="row-item" :class="{'alarm': patientInfo.BIS_except}">
<span class="label">BIS</span> <span class="label">BIS</span>
<span class="value">{{ patientInfo.BIS }}</span> <span class="value">{{ patientInfo.BIS }}</span>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.SBP_except}"> <div class="row-item" :class="{'alarm': patientInfo.SBP_except}">
<span class="label">SBP</span> <span class="label">SBP</span>
<span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span> <span class="value">{{ patientInfo.SBP }}<span class="unit">mmHg</span></span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">SPO2</span> <span class="label">SPO2</span>
<span class="value">{{ patientInfo.SPO2 }}</span> <span class="value">{{ patientInfo.SPO2 }}</span>
</div> </div>
</div> </div>
<div class="center-box"> <div class="center-box">
<img src="@/assets/imgs/main_body_intact.png"> <img src="@/assets/imgs/main_body_intact.png">
</div> </div>
<div class="right-box"> <div class="right-box">
<div class="info-box"> <div class="info-box">
<div class="row-item"> <div class="row-item">
<span class="label">手术时间</span> <span class="label">手术时间</span>
<span class="input-value">{{ <span class="input-value">{{
remoteItem.date remoteItem.date
}}</span> }}</span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">手术状态</span> <span class="label">手术状态</span>
<span class="tag-value" :class="{'normal': !patientInfo.state}">正常</span> <span class="tag-value" :class="{'normal': !patientInfo.state}">正常</span>
<span class="tag-value" :class="{'alarm': patientInfo.state}">异常</span> <span class="tag-value" :class="{'alarm': patientInfo.state}">异常</span>
</div> </div>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.DBP_except}"> <div class="row-item" :class="{'alarm': patientInfo.DBP_except}">
<span class="label">DBP</span> <span class="label">DBP</span>
<span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span> <span class="value">{{ patientInfo.DBP }}<span class="unit">mmHg</span></span>
</div> </div>
<div class="row-item" :class="{'alarm': patientInfo.HR_except}"> <div class="row-item" :class="{'alarm': patientInfo.HR_except}">
<span class="label">HR</span> <span class="label">HR</span>
<span class="value">{{ patientInfo.HR }}<span class="unit">/</span></span> <span class="value">{{ patientInfo.HR }}<span class="unit">/</span></span>
</div> </div>
<div class="row-item"> <div class="row-item">
<span class="label">TEMP</span> <span class="label">TEMP</span>
<span class="value">{{ patientInfo.TEMP }}</span> <span class="value">{{ patientInfo.TEMP }}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
@ -127,256 +127,289 @@ const patientInfo = ref({} as any)
const remoteWsStore = useRemoteWsStore() const remoteWsStore = useRemoteWsStore()
defineExpose({ defineExpose({
initData, showData initData, showData
}); });
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
mediaMini800.value = Boolean(window.innerWidth < 801) mediaMini800.value = Boolean(window.innerWidth < 801)
}); });
onUnmounted(() => { onUnmounted(() => {
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date); remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date);
}) })
function showData(i: number) { function showData(i: number) {
const lastTaskIndex = remoteWsStore.currentTaskIndex; const lastTaskIndex = remoteWsStore.currentTaskIndex;
const lastTask: any = remoteWsStore.remoteTasks[lastTaskIndex]; const lastTask: any = remoteWsStore.remoteTasks[lastTaskIndex];
if (lastTask) { if (lastTask) {
remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date); remoteWsStore.unsubscribeVital(lastTask.patient, lastTask.patientId, lastTask.date);
} }
remoteWsStore.currentTaskIndex = i remoteWsStore.currentTaskIndex = i
remoteItem.value = remoteWsStore.remoteTasks[remoteWsStore.currentTaskIndex] remoteItem.value = remoteWsStore.remoteTasks[remoteWsStore.currentTaskIndex]
getData() getData()
} }
function initData() { function initData() {
remoteItem.value = remoteWsStore.remoteTasks[remoteWsStore.currentTaskIndex] remoteItem.value = remoteWsStore.remoteTasks[remoteWsStore.currentTaskIndex]
remoteWsStore.createConnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date) remoteWsStore.createConnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date)
getData() getData()
} }
function getData() { function getData() {
remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date); remoteWsStore.unsubscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date);
remoteWsStore.subscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, (res: any) => { remoteWsStore.subscribeVital(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date, (res: any) => {
const data = JSON.parse(res.data); if (res && res.data) {
if (data.vitalSignsList && data.vitalSignsList.length > 0) { const data = JSON.parse(res.data);
Object.assign(patientInfo.value, data.vitalSignsList[0]); if (data.vitalSignsList && data.vitalSignsList.length > 0) {
patientInfo.value.state = (patientInfo.value.BIS_except || patientInfo.value.SBP_except || Object.assign(patientInfo.value, data.vitalSignsList[0]);
patientInfo.value.DBP_except || patientInfo.value.HR_except); patientInfo.value.state = (patientInfo.value.BIS_except || patientInfo.value.SBP_except ||
setLog(patientInfo.value) patientInfo.value.DBP_except || patientInfo.value.HR_except);
emit('addLogAfter') setLog(patientInfo.value)
} emit('addLogAfter')
}) }
}
})
} }
function setLog(data: any) { function setLog(data: any) {
remoteWsStore.exceptionType.forEach((item: any) => { remoteWsStore.exceptionType.forEach((item: any) => {
if (data[item]) { if (data[item]) {
const msg: any = remoteWsStore.exceptionMsg[item]; const msg: any = remoteWsStore.exceptionMsg[item];
remoteWsStore.setRemoteLog({ remoteWsStore.setRemoteLog({
state: msg, state: msg,
taskName: remoteItem.value.taskName, taskName: remoteItem.value.taskName,
time: new Date(), time: new Date(),
type: "exception" type: "exception"
}, remoteWsStore.currentTaskIndex); }, remoteWsStore.currentTaskIndex);
} }
}) })
} }
const breakRemote = () => { const breakRemote = () => {
remoteWsStore.disconnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date) remoteWsStore.disconnect(remoteItem.value.patient, remoteItem.value.patientId, remoteItem.value.date)
remoteWsStore.resetRemoteTask(remoteWsStore.currentTaskIndex) remoteWsStore.resetRemoteTask(remoteWsStore.currentTaskIndex)
if (remoteWsStore.getActiveRemoteTask()) { if (remoteWsStore.getActiveRemoteTask()) {
showData(remoteWsStore.getActiveRemoteTask()) showData(remoteWsStore.getActiveRemoteTask())
} }
emit('breakRemote') emit('breakRemote')
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.remote-part { .remote-part {
width: 100%; width: 100%;
height: 100%; height: 100%;
border: 1px solid $border-color; border: 1px solid $border-color;
.title { .title {
position: relative; position: relative;
width: 100%; width: 100%;
height: 40px; height: 40px;
font-size: 20px; font-size: 20px;
text-align: center; text-align: center;
line-height: 40px; line-height: 40px;
font-weight: 600; font-weight: 600;
color: white; color: white;
background: $main-color; background: $main-color;
.break-btn {
position: absolute;
top: 4px;
right: 20px;
}
}
.content {
width: 100%;
height: calc(100% - 40px);
padding: 20px 50px;
display: flex;
justify-content: space-between;
.common-box {
width: 30%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
}
.left-box {
@extend .common-box;
.label { .break-btn {
background: $main-color; position: absolute;
} top: 4px;
} right: 20px;
.center-box { }
@extend .common-box; }
img {
max-width: 100%;
max-height: 100%;
}
}
.right-box {
@extend .common-box;
.label {
background: $main-color;
}
}
.row-item {
width: 100%;
display: flex;
justify-content: space-between;
.label {
flex-shrink: 0;
width: 100%;
height: 40px;
color: white;
font-size: 18px;
line-height: 40px;
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% - 10px);
}
.value {
width: 50%;
height: 40px;
border-width: 1px;
border-style: solid;
text-align: center;
border-radius: 5px;
color: $main-color;
border-color: $main-color;
font-size: 22px;
line-height: 40px;
font-weight: 600;
.unit {
font-size: 16px;
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: 10px 0;
height: 40px;
justify-content: flex-start;
align-items: center;
.label {
width: 70px;
height: 20px;
background: transparent;
color: $main-color;
font-size: 16px;
line-height: 20px;
font-weight: 600;
text-align: left;
}
.input-value {
width: 100%;
height: 21px;
line-height: 20px;
font-size: 16px;
color: $main-color;
border-bottom: 1px solid $border2-color;
}
.tag-value {
margin-left: 30px;
padding: 0 20px;
height: 30px;
line-height: 30px;
font-size: 18px;
color: white;
font-weight: 600;
background: $border2-color;
border-radius: 8px;
&.normal {
background: $main-color;
}
&.alarm {
background: red;
}
}
}
}
}
&.mini {
padding: 20px;
.left-box {
width: 240px;
}
.center-box {
width: calc(100% - 250px);
}
&.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;
}
}
}
}
} .content {
} width: 100%;
height: calc(100% - 40px);
padding: 20px 50px;
display: flex;
justify-content: space-between;
.common-box {
width: 30%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
}
.left-box {
@extend .common-box;
.label {
background: $main-color;
}
}
.center-box {
@extend .common-box;
img {
max-width: 100%;
max-height: 100%;
}
}
.right-box {
@extend .common-box;
.label {
background: $main-color;
}
}
.row-item {
width: 100%;
display: flex;
justify-content: space-between;
.label {
flex-shrink: 0;
width: 100%;
height: 40px;
color: white;
font-size: 18px;
line-height: 40px;
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% - 10px);
}
.value {
width: 50%;
height: 40px;
border-width: 1px;
border-style: solid;
text-align: center;
border-radius: 5px;
color: $main-color;
border-color: $main-color;
font-size: 22px;
line-height: 40px;
font-weight: 600;
.unit {
font-size: 16px;
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: 10px 0;
height: 40px;
justify-content: flex-start;
align-items: center;
.label {
width: 70px;
height: 20px;
background: transparent;
color: $main-color;
font-size: 16px;
line-height: 20px;
font-weight: 600;
text-align: left;
}
.input-value {
width: 100%;
height: 21px;
line-height: 20px;
font-size: 16px;
color: $main-color;
border-bottom: 1px solid $border2-color;
}
.tag-value {
margin-left: 30px;
padding: 0 20px;
height: 30px;
line-height: 30px;
font-size: 18px;
color: white;
font-weight: 600;
background: $border2-color;
border-radius: 8px;
&.normal {
background: $main-color;
}
&.alarm {
background: red;
}
}
}
}
}
&.mini {
padding: 20px;
.left-box {
width: 240px;
}
.center-box {
width: calc(100% - 250px);
}
&.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> </style>

View File

@ -481,7 +481,7 @@ const viewPatientInfo = () => {
}, 0) }, 0)
} }
const backRemote = () => { const backRemote = () => {
router.back() router.back();
} }
const playPause = () => { const playPause = () => {
if (liveVideo.value.paused) { if (liveVideo.value.paused) {

View File

@ -46,11 +46,14 @@ onMounted(() => {
function initRemoteTask() { function initRemoteTask() {
remoteTask.value = remoteWsStore.initRemoteTask() remoteTask.value = remoteWsStore.initRemoteTask()
remotePartRef.value.showData(remoteWsStore.currentTaskIndex);
} }
const viewThumbnail = () => { const viewThumbnail = () => {
router.push({ router.push({
path: '/remote-manage/remote-thumbnail' path: '/remote-manage/remote-thumbnail',
query: {
}
}) })
} }
// //

View File

@ -39,12 +39,11 @@ const remoteTask = ref([] as any);
const remoteWsStore = useRemoteWsStore(); const remoteWsStore = useRemoteWsStore();
onMounted(() => { onMounted(() => {
console.log("remoteThumbnail", remoteWsStore.remoteTasks)
remoteTask.value = remoteWsStore.remoteTasks; remoteTask.value = remoteWsStore.remoteTasks;
}) })
const openRemote = (params: any) => { const openRemote = (params: any) => {
router.push('/remote-manage/remote-manage') router.push('/remote-manage/remote-manage');
} }
const addLogAfter = (index: number) => { const addLogAfter = (index: number) => {
messageItemPartRef.value[index].scrollToBottom() messageItemPartRef.value[index].scrollToBottom()