| | |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div |
| | | <div |
| | | v-if="Number(deviceData.透析状态) > 1" |
| | | :ref="'echartsDiv' + deviceData.设备编号" |
| | | style="height: 97%" |
| | |
| | | style="text-align: right; height: 100%" |
| | | > |
| | | <div |
| | | class="container" |
| | | style=" |
| | | height: 25%; |
| | | font-weight: 600; |
| | | color: #909399; |
| | | font-size: 80%; |
| | | " |
| | | > |
| | | CW:<span |
| | | style=" |
| | | font-weight: 800; |
| | | font-size: 130%; |
| | | color: #303133; |
| | | white-space: nowrap; |
| | | " |
| | | >{{ Number(deviceData.透前称重).toFixed(1) }}</span |
| | | > |
| | | <div class="grid-container" style="height: 100%;"> |
| | | <div |
| | | style=" |
| | | font-weight: 800; |
| | | " |
| | | > |
| | | 透前称重 |
| | | <b style="font-size: 200%;color: #303133;">{{ Number(deviceData.透前称重).toFixed(1) }}</b> |
| | | </div |
| | | > |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="container" |
| | |
| | | height: 25%; |
| | | font-weight: 600; |
| | | color: #909399; |
| | | font-size: 80%; |
| | | " |
| | | > |
| | | D<span |
| | | style=" |
| | | font-weight: 800; |
| | | font-size: 130%; |
| | | color: #303133; |
| | | white-space: nowrap; |
| | | " |
| | | >{{ Number(deviceData.干体重).toFixed(1) }}</span |
| | | >L<span |
| | | style=" |
| | | font-weight: 800; |
| | | font-size: 130%; |
| | | color: #303133; |
| | | white-space: nowrap; |
| | | " |
| | | >{{ Number(deviceData.上次透后称重) }}</span |
| | | > |
| | | <div class="grid-container" style="height: 100%;"> |
| | | <div |
| | | style=" |
| | | font-weight: 800; |
| | | color: #909399; |
| | | " |
| | | > |
| | | 干体重 |
| | | <b style="font-size: 200%;color: #303133;">{{ Number(deviceData.干体重).toFixed(1) }}</b> |
| | | 上次透后称重 |
| | | <b style="font-size: 200%;color: #303133;">{{ Number(deviceData.上次透后称重).toFixed(1) }}</b> |
| | | </div |
| | | > |
| | | </div> |
| | | </div> |
| | | <div |
| | | :style="{ color: deviceData.体重增长率 >= 5 ? 'red' : '#303133' }" |
| | | style="height: 25%; font-weight: 600; font-size: 80%" |
| | | style="height: 25%; font-weight: 600;color: #909399;" |
| | | > |
| | | <span |
| | | style="font-weight: 800; font-size: 130%; white-space: nowrap" |
| | | > |
| | | <template |
| | | v-if="Number(deviceData.透前称重 - deviceData.干体重) > 0" |
| | | >+</template |
| | | >{{ |
| | | Number(deviceData.透前称重 - deviceData.干体重).toFixed(1) |
| | | }} |
| | | </span> |
| | | <span>({{ deviceData.体重增长率 }}%)</span> |
| | | <div class="grid-container" style="height: 100%;"> |
| | | <div> |
| | | 体重增长 |
| | | <b style="font-size: 200%; color: #303133;" |
| | | v-if="Number(deviceData.透前称重 - deviceData.干体重) > 0" |
| | | >+{{ |
| | | Number(deviceData.透前称重 - deviceData.干体重).toFixed(1) |
| | | }}</b |
| | | > |
| | | 增长率<b style="font-size: 200%;color: #303133;">({{ deviceData.体重增长率 }}%)</b> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="container" |
| | |
| | | font-weight: 600; |
| | | height: 25%; |
| | | color: #909399; |
| | | font-size: 80%; |
| | | margin-left: -20px; |
| | | " |
| | | > |
| | | <span |
| | | v-if="deviceData.透前血压_伸缩压" |
| | | :style="{ color: tqXygj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 130%; white-space: nowrap" |
| | | >{{ deviceData.透前血压_伸缩压 }}/</span |
| | | > |
| | | <span |
| | | :style="{ color: tqXygj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 130%; white-space: nowrap" |
| | | >{{ deviceData.透前血压_舒张压 }}</span |
| | | > |
| | | <span |
| | | v-if="deviceData.透前脉搏" |
| | | :style="{ color: tqMbgj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 130%; white-space: nowrap" |
| | | >,{{ deviceData.透前脉搏 }}</span |
| | | > |
| | | <div class="grid-container" style="height: 100%;"> |
| | | <div> |
| | | 透前血压 |
| | | <span |
| | | v-if="deviceData.透前血压_伸缩压" |
| | | :style="{ color: tqXygj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 200%; white-space: nowrap" |
| | | >{{ deviceData.透前血压_伸缩压 }}/</span |
| | | > |
| | | <span |
| | | :style="{ color: tqXygj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 200%; white-space: nowrap" |
| | | >{{ deviceData.透前血压_舒张压 }}</span |
| | | > |
| | | 脉搏 |
| | | <span |
| | | v-if="deviceData.透前脉搏" |
| | | :style="{ color: tqMbgj ? 'red' : '#303133' }" |
| | | style="font-weight: 800; font-size: 200%; white-space: nowrap" |
| | | >{{ deviceData.透前脉搏 }}</span |
| | | > |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="height: 20%;background-color: #ffffff; line-height: 50px;"> |
| | | <!-- <div style="font-size: 200%;height: 100%;text-align: center; color: #909399;" class="grid-container"> |
| | | |
| | | <el-icon><ChatDotSquare /></el-icon>暂无通知 |
| | | |
| | | </div> --> |
| | | <div style="color: cornflowerblue;height: 20%; width: 100%;" class="grid-container"> |
| | | |
| | | <div v-if="床旁血压计.zuihouTime>shishiTime" style="color: cornflowerblue;height: 20%; width: 100%;" class="grid-container"> |
| | | <div style="text-align: center;width: 100%; color: #909399;"> |
| | | 2025-01-11 12:23:45 |
| | | <!-- {{isShowXY}} --> |
| | | <!-- {{床旁血压计.zuihouTime}} / {{shishiTime}} |
| | | {{}} --> |
| | | {{床旁血压计.date_time}} |
| | | </div> |
| | | |
| | | </div> |
| | | <div style="font-size: 300%; color: cornflowerblue;height: 80%; width: 100%;" class="grid-container"> |
| | | <div v-if="床旁血压计.zuihouTime>shishiTime" style="font-size: 300%; color: cornflowerblue;height: 80%; width: 100%;" class="grid-container"> |
| | | |
| | | <div style="text-align: center;width: 100%;"> |
| | | 高压:118,低压:88, 心率:89 |
| | | <div style="text-align: center;width: 100%;" class="flash-text"> |
| | | 高压:{{床旁血压计.sbp}},低压: {{床旁血压计.dbp}}, 心率: {{床旁血压计.pulseRate}} |
| | | </div> |
| | | |
| | | </div> |
| | | <div v-else style="font-size: 200%;height: 100%;text-align: center; color: #909399;padding: 5px;" class="grid-container"> |
| | | 透析器:{{deviceData.透析器}} |
| | | </div> |
| | | <!-- <div style="font-size: 300%; color: red;height: 100%;" class="grid-container"> |
| | | |
| | |
| | | overflow: hidden; |
| | | " |
| | | > |
| | | <div class="grid-container" style="height: 100%"> |
| | | <div class="grid-container" style="height: 100%" @click="initTupiao"> |
| | | {{ deviceData.设备名称 }} {{ zhuangtaiStr }} |
| | | </div> |
| | | </el-row> |
| | |
| | | |
| | | </el-col> |
| | | <el-col |
| | | v-if="noBaoji !== ''" |
| | | v-if="noBaoji === ''" |
| | | :span="14" |
| | | style=" |
| | | padding-left: 5px; |
| | | height: 100%; |
| | | font-weight: 500; |
| | | font-size: 100%; |
| | | font-size: 200% |
| | | " |
| | | > |
| | | <div |
| | |
| | | </el-row> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="9" v-if="noBaoji !== ''"> |
| | | <el-col :span="9" v-if="noBaoji == ''"> |
| | | <!-- 历史状态画图 --> |
| | | <div |
| | | :ref="'echartsDivwd' + deviceData.设备编号" |
| | |
| | | // sse状态 |
| | | const readyState = ref({ key: 0, value: "正在链接中" }); |
| | | const deviceCode=ref('') |
| | | const shishiTime=ref(new Date()) |
| | | const 床旁血压计=ref({ |
| | | date_time:'', |
| | | sbp:'', |
| | | pulseRate:'', |
| | | dbp:'', |
| | | zuihouTime:new Date() |
| | | }) |
| | | const deviceData = ref({ |
| | | iot_传输时间: "2025-01-10 19:15:24", |
| | | iot_当前脱水量: 2.04, |
| | |
| | | 性别: "男", |
| | | 患者头像: |
| | | "http://dhimg.leon056.com/hemodialysis/face/PAT9090070832211PyVq/face-IMG_20240413_112705.jpg-202404131127536157.jpg", |
| | | 患者姓名: "李金山", |
| | | 患者姓名: "", |
| | | 患者编号: "PAT9090070832211PyVq", |
| | | 患者透析号: "0207", |
| | | 最后一条血压: 116, |
| | |
| | | 透析处方的时长_小时: "4", |
| | | 透析开始时间: "2025-01-10 16:44:00", |
| | | 透析方案: "HD", |
| | | 透析状态: "2.0", |
| | | 透析状态: "1.0", |
| | | 透析结束时间: "2025-01-10 20:44:00", |
| | | 设备变化: "1736508117033DEV", |
| | | 属性历史列表: [ |
| | |
| | | const wd = ref(""); |
| | | const ls = ref(""); |
| | | const ddd = ref(""); |
| | | const isShowXY=computed(()=>{ |
| | | if(床旁血压计.value.zuihouTime>new Date()){ |
| | | return true |
| | | }else{ |
| | | return false |
| | | } |
| | | }) |
| | | const txzt: any = computed(() => { |
| | | return deviceData.value.透析状态; |
| | | }); |
| | |
| | | const list = deviceData.value.设备状态列表; |
| | | if ( |
| | | (deviceData.value.监测血压是否低于百分之30 || |
| | | deviceData.value.跨膜压是否大于200 || |
| | | deviceData.value.监测血压是否高于百分之30) && |
| | | deviceData.value.透析状态 === "2.0" |
| | | deviceData.value.跨膜压是否大于200 || |
| | | deviceData.value.监测血压是否高于百分之30) && |
| | | deviceData.value.透析状态 === "2.0" |
| | | ) { |
| | | return true; |
| | | } else { |
| | |
| | | watch( |
| | | () => deviceData.value.设备变化, |
| | | () => { |
| | | // console.log(device.value.设备名称,'子组件变量') |
| | | console.log(deviceData.value.设备名称,'子组件变量') |
| | | setTimeout(() => { |
| | | if (!xiaoduzhuangti.value) { |
| | | initTupiao(); |
| | |
| | | { key: 2, value: "连接已关闭或者没有链接成功" }, |
| | | ]; |
| | | try { |
| | | source.value= new EventSourcePolyfill(`https://hemobs.icoldchain.cn/sse/sseEvent/${deviceCode.value}`,{ |
| | | source.value= new EventSourcePolyfill(`http://testbs.ihemodialysis.com/sse/sseEvent/${deviceCode.value}`,{ |
| | | heartbeatTimeout:60000 |
| | | }); |
| | | source.value.onopen = (e) => { |
| | |
| | | }; |
| | | source.value.onmessage = (e) => { |
| | | console.log('收到消息',e.data) |
| | | shishiTime.value=new Date(); |
| | | if(e.data){ |
| | | const msg=e.data |
| | | let dif=msg.indexOf('event:message') |
| | |
| | | const datax=msg.slice(beng,end+1) |
| | | const dataBody=JSON.parse(datax) |
| | | console.log(dataBody) |
| | | deviceData.value=dataBody.透析状态 |
| | | deviceData.value.属性历史列表=dataBody.IOT信息.属性历史列表 |
| | | deviceData.value.设备变化=Date.now() + 'DEV' |
| | | console.log(dataBody) |
| | | if(dataBody.推送类型==='床旁血压计'){ |
| | | let date = new Date(); |
| | | date.setMinutes(date.getMinutes() + 1); |
| | | 床旁血压计.value={ |
| | | date_time:dataBody?.床旁血压结果?.measureTime, |
| | | sbp:dataBody?.床旁血压结果?.sbp, |
| | | pulseRate:dataBody?.床旁血压结果?.pulseRate, |
| | | dbp:dataBody?.床旁血压结果?.dbp, |
| | | zuihouTime:date |
| | | } |
| | | }else if(dataBody.推送类型==='中央监控大屏信息'){ |
| | | console.log(Date.now() + 'DEV') |
| | | deviceData.value=dataBody?.透析状态 |
| | | deviceData.value.设备变化=Date.now() + 'DEV' |
| | | console.log(1) |
| | | console.log(2) |
| | | deviceData.value.属性历史列表=dataBody?.IOT信息?.属性历史列表 |
| | | console.log(3) |
| | | |
| | | console.log(4) |
| | | console.log(deviceData.value.设备变化) |
| | | deviceData.value.设备状态列表=dataBody.IOT信息.状态列表 |
| | | if(!dataBody.透析状态){ |
| | | deviceData.value.患者姓名='' |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | }; |
| | | } catch (error) { |
| | | console.log(error); |
| | |
| | | } |
| | | } |
| | | } else if (deviceData.value.患者姓名 === "") { |
| | | console.log('2222') |
| | | const tbdata1 = []; |
| | | const tbdata2 = []; |
| | | const tbdata3 = []; |
| | |
| | | }); |
| | | } |
| | | try { |
| | | console.log('渲染设备') |
| | | const myChart1 = echarts.init( |
| | | proxy.$refs["echartsDivwd" + deviceData.value.设备编号] |
| | | ); |
| | |
| | | proxy.$refs["echartsDivddd" + deviceData.value.设备编号] |
| | | ); |
| | | const option1 = { |
| | | backgroundColor: textcolor.value, |
| | | // backgroundColor: textcolor.value, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | }, |
| | |
| | | }, |
| | | grid: { |
| | | left: 8, |
| | | top: 30, |
| | | top: 100, |
| | | bottom: 0, |
| | | }, |
| | | xAxis: { |
| | | show: false, // 隐藏X轴 |
| | | show: true, // 隐藏X轴 |
| | | type: "category", |
| | | // 标记做右往左排列 |
| | | boundaryGap: false, |
| | |
| | | ], |
| | | }; |
| | | const option2 = { |
| | | backgroundColor: textcolor.value, |
| | | // backgroundColor: textcolor.value, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | }, |
| | |
| | | }, |
| | | grid: { |
| | | left: 8, |
| | | top: 20, |
| | | top: 100, |
| | | bottom: 0, |
| | | }, |
| | | xAxis: { |
| | |
| | | ], |
| | | }; |
| | | const option3 = { |
| | | backgroundColor: textcolor.value, |
| | | // backgroundColor: textcolor.value, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | }, |
| | |
| | | }, |
| | | grid: { |
| | | left: 8, |
| | | top: 10, |
| | | top: 100, |
| | | bottom: 0, |
| | | }, |
| | | xAxis: { |
| | |
| | | .fixed-bottom-right:hover { |
| | | background-color: #0056b3; |
| | | } |
| | | /* 定义闪现动画的关键帧 */ |
| | | @keyframes flash { |
| | | 0%, 100% { |
| | | opacity: 1; /* 开始和结束时完全可见 */ |
| | | } |
| | | 50% { |
| | | opacity: 0; /* 中间时刻完全透明 */ |
| | | } |
| | | } |
| | | |
| | | /* 应用动画到 div */ |
| | | .flash-text { |
| | | animation-name: flash; |
| | | animation-duration: 2s; /* 动画持续时间 */ |
| | | animation-timing-function: linear; /* 动画速度曲线 */ |
| | | animation-iteration-count: infinite; /* 动画重复次数 */ |
| | | animation-direction: alternate; /* 动画方向 */ |
| | | } |
| | | </style> |