| | |
| | | <template> |
| | | <div class="divice"> |
| | | <!-- {{数据初始化}} --> |
| | | <el-carousel v-if="deviceData.患者姓名 && pageHeight > 0" height="auto" :autoplay="false" motion-blur :initial-index="0" always="always"> |
| | | <el-carousel v-show="deviceData.患者姓名 && pageHeight > 0" height="auto" :autoplay="false" motion-blur :initial-index="0" always="always"> |
| | | <el-carousel-item :style="{ height: pageHeight + 'px'}"> |
| | | <div class="youzhiliao" style="height: 100%" > |
| | | <div class="toubu" style="height: 11%"> |
| | |
| | | <div |
| | | class="mowei" |
| | | style="height: 39%" |
| | | v-if="Number(deviceData.透析状态) > 0" |
| | | v-show="Number(deviceData.透析状态) > 0" |
| | | > |
| | | <el-row style="height: 100%; padding: 0px 20px 10px 20px"> |
| | | <!-- 未签到 --> |
| | | <div |
| | | v-if="Number(deviceData.透析状态) < 1" |
| | | v-show="Number(deviceData.透析状态) < 1" |
| | | style="height: 70%; width: 100%" |
| | | > |
| | | <div class="container"> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- 已签到 --> |
| | | <div v-else style="height: 80%; width: 100%; padding-right: 0px"> |
| | | <div v-show="Number(deviceData.透析状态) >= 1" style="height: 80%; width: 100%; padding-right: 0px"> |
| | | <div style="height: 100%"> |
| | | <el-row |
| | | style="height: 30%; padding: 0px 0px 10px 0px" |
| | |
| | | padding-bottom: 10px; /* 设置所有方向的间距为10px */ |
| | | " |
| | | > |
| | | <div style="height: 100%"> |
| | | <div v-show="Number(deviceData.透析状态) > 1" class="zcc_test" style="height: 100%"> |
| | | <div |
| | | v-if="Number(deviceData.透析状态) > 1" |
| | | :ref="'echartsDiv' + deviceData.设备编号" |
| | | :class="'echartsDiv-' + deviceData.设备编号" |
| | | style="height: 97%" |
| | | ></div> |
| | | </div> |
| | |
| | | <div |
| | | class="mowei" |
| | | style="height: 39%" |
| | | v-if="Number(deviceData.透析状态) === 0" |
| | | v-show="Number(deviceData.透析状态) === 0" |
| | | > |
| | | <el-row gutter="20" style="height: 100%; padding: 10px 20px 20px 20px"> |
| | | <el-col :span="12" style="height: 100%"> |
| | |
| | | <el-carousel-item :style="{ height: pageHeight + 'px'}"> |
| | | <div class="toubu" style="height: 11%"> |
| | | <el-row |
| | | v-if="deviceData.患者姓名 !== ''" |
| | | v-show="deviceData.患者姓名 !== ''" |
| | | style=" |
| | | font-weight: 900; |
| | | color: #ffffff; |
| | |
| | | </el-carousel-item> |
| | | </el-carousel> |
| | | |
| | | <div v-else style="height: 100%"> |
| | | <div v-show="!deviceData.患者姓名" style="height: 100%"> |
| | | <div class="toubu" style="height: 11%"> |
| | | <el-row |
| | | style=" |
| | |
| | | watch, |
| | | onUnmounted, |
| | | onBeforeUnmount, |
| | | nextTick, |
| | | } from "vue"; |
| | | import { Local } from "../utils/storage"; |
| | | import * as echarts from "echarts"; |
| | |
| | | const sseData = ref({}); |
| | | // sse状态 |
| | | const readyState = ref({ key: 0, value: "正在链接中" }); |
| | | |
| | | // 血压的echart实例 |
| | | let bloodPressureEchart: echarts.ECharts | null = null |
| | | let observer; |
| | | |
| | | const deviceCode = ref(""); |
| | | const shishiTime = ref(new Date()); |
| | |
| | | if (床旁血压计.value.zuihouTime > shishiTime.value) { |
| | | } else { |
| | | setTimeout(() => { |
| | | console.log("初始化血压图表222222"); |
| | | initTupiao(); |
| | | }, 500); |
| | | } |
| | |
| | | intervalId = setInterval(updateTime, 1000); |
| | | const height = window.innerHeight; |
| | | pageHeight.value = height; |
| | | |
| | | }); |
| | | // 在组件卸载前清除定时器,防止内存泄漏 |
| | | onBeforeUnmount(() => { |
| | |
| | | console.log(deviceData.value.设备名称, "子组件变量"); |
| | | setTimeout(() => { |
| | | if (!xiaoduzhuangti.value) { |
| | | console.log("初始化血压图表111111"); |
| | | initTupiao(); |
| | | } |
| | | }, 500); |
| | |
| | | // http://testbs.ihemodialysis.com/sse/sseEvent |
| | | // const test='http://testbs.ihemodialysis.com/sse/sseEvent/' |
| | | 数据初始化.value = true; |
| | | const test = import.meta.env.VITE_API_BASE_URL; |
| | | const test = import.meta.env.VITE_SSE_BASE_URL; |
| | | const stateArr = [ |
| | | { key: 0, value: "正在链接中" }, |
| | | { key: 1, value: "已经链接并且可以通讯" }, |
| | |
| | | zuihouTime: date, |
| | | }; |
| | | setTimeout(() => { |
| | | console.log("初始化血压图表444444"); |
| | | initTupiao(); |
| | | }, 500); |
| | | } else if (dataBody.推送类型 === "中央监控大屏信息") { |
| | |
| | | console.log(Date.now() + "DEV"); |
| | | if (dataBody?.透析状态) { |
| | | deviceData.value = dataBody?.透析状态; |
| | | if ('透析单医嘱列表' in dataBody.透析状态) { |
| | | if ('透析单医嘱列表' in dataBody.透析状态 && dataBody.透析状态?.透析单医嘱列表) { |
| | | deviceData.value.透析单医嘱列表 = dataBody.透析状态.透析单医嘱列表; |
| | | } else { |
| | | deviceData.value.透析单医嘱列表 = [] |
| | |
| | | }; |
| | | isinitXy.value = true; |
| | | setTimeout(() => { |
| | | console.log("初始化血压图表333333"); |
| | | |
| | | initTupiao(); |
| | | }, 500); |
| | | }; |
| | |
| | | onBeforeMount(() => { |
| | | closeSource(); |
| | | }); |
| | | |
| | | |
| | | const renderEcharts = (options: any) => { |
| | | const boxes = document.querySelectorAll(`.echartsDiv-${deviceData.value.设备编号}`); |
| | | boxes.forEach(box => { |
| | | if ((box as HTMLElement).dataset.initialized === 'true') return; |
| | | const chart = echarts.init(box as HTMLElement); |
| | | chart.setOption(options); |
| | | (box as HTMLElement).dataset.initialized = 'true'; |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | const initTupiao = () => { |
| | | if (deviceData.value.患者姓名 !== "") { |
| | | const seriesData = [ |
| | |
| | | xAxisData.push(1); |
| | | } |
| | | try { |
| | | const myChart = echarts.init( |
| | | proxy.$refs["echartsDiv" + deviceData.value.设备编号] |
| | | ); |
| | | // console.log('proxy.$refs["echartsDiv" + deviceData.value.设备编号]: ', proxy.$refs["echartsDiv" + deviceData.value.设备编号]) |
| | | // if (!bloodPressureEchart) { |
| | | // bloodPressureEchart = echarts.init( |
| | | // proxy.$refs["echartsDiv" + deviceData.value.设备编号] |
| | | // ); |
| | | // } |
| | | // console.log('bloodPressureEchart: ', bloodPressureEchart) |
| | | |
| | | const option = { |
| | | // backgroundColor: 床旁血压计.value.zuihouTime>shishiTime.value?'#ffffff':textcolor.value, |
| | | backgroundColor: "#ffffff", |
| | |
| | | }, |
| | | series: seriesData, |
| | | }; |
| | | myChart.setOption(option); |
| | | // console.log("渲染设备", deviceData.value.设备编号, option); |
| | | // console.log('deviceData.透析状态1: ', Number(deviceData.value.透析状态)); |
| | | // nextTick(() => { |
| | | // bloodPressureEchart.setOption(option); |
| | | // bloodPressureEchart.resize(); |
| | | // setTimeout(() => { |
| | | // // 方法1:检查容器内是否有canvas元素 |
| | | // const canvas = bloodPressureEchart.getDom().querySelector('canvas'); |
| | | // console.log('canvas: ', canvas); |
| | | // if (!canvas) { |
| | | // console.error('图表渲染失败:未生成canvas元素'); |
| | | // return; |
| | | // } |
| | | // // 方法2:检查canvas的宽高 |
| | | // if (canvas.width === 0 || canvas.height === 0) { |
| | | // console.error('图表渲染失败:canvas宽高为0'); |
| | | // return; |
| | | // } |
| | | // // 方法3:检查图表实例的宽高 |
| | | // if (bloodPressureEchart.getWidth() === 0 || bloodPressureEchart.getHeight() === 0) { |
| | | // console.error('图表渲染失败:图表实例宽高为0'); |
| | | // return; |
| | | // }}, 1000); |
| | | // }); |
| | | renderEcharts(option); |
| | | } catch (e) { |
| | | console.log("图标渲染异常异常"); |
| | | console.log("图标渲染异常异常:", e); |
| | | } |
| | | } else { |
| | | try { |
| | | const myChart = echarts.init( |
| | | proxy.$refs["echartsDiv" + deviceData.value.设备编号] |
| | | ); |
| | | // if (!bloodPressureEchart) { |
| | | // // @ts-ignore |
| | | // bloodPressureEchart = echarts.init( |
| | | // proxy.$refs["echartsDiv" + deviceData.value.设备编号] |
| | | // ); |
| | | // } |
| | | |
| | | |
| | | const option = { |
| | | backgroundColor: |
| | |
| | | }, |
| | | series: [], |
| | | }; |
| | | myChart.setOption(option); |
| | | // console.log('deviceData.透析状态2: ', Number(deviceData.value.透析状态)); |
| | | // // bloodPressureEchart.setOption(option); |
| | | // nextTick(() => { |
| | | // // bloodPressureEchart.setOption(option); |
| | | // bloodPressureEchart.setOption(option); |
| | | // }); |
| | | renderEcharts(option); |
| | | } catch (e) { |
| | | console.log( |
| | | "异常", |
| | | proxy.$refs["echartsDiv" + deviceData.value.设备编号] |
| | | proxy.$refs["echartsDiv" + deviceData.value.设备编号], |
| | | e |
| | | ); |
| | | } |
| | | } |
| | |
| | | console.log(deviceData.value); |
| | | } |
| | | }; |
| | | |
| | | |
| | | const getItemName = (name: string) => { |
| | | if (name) { |
| | | if (name === "血红蛋白测定") { |
| | | return "Hgb "; |
| | | if (name === "血红蛋白") { |
| | | return "HGB "; |
| | | } else if (name === "铁蛋白") { |
| | | return "Fer "; |
| | | return "FER "; |
| | | } else if (name === "白蛋白") { |
| | | return "Alb "; |
| | | } else if (name === "血清铁蛋白") { |
| | | return "SF "; |
| | | } else if (name === "钙") { |
| | | return "Ga "; |
| | | return "ALB "; |
| | | } |
| | | // else if (name === "血清铁蛋白") { |
| | | // return "SF "; |
| | | // } |
| | | else if (name === "钙") { |
| | | return "Ca "; |
| | | } else if (name === "钾") { |
| | | return "K "; |
| | | } else if (name === "无机磷") { |
| | | return "pi "; |
| | | return "P "; |
| | | } else if (name === "甲状旁腺激素") { |
| | | return "PTH "; |
| | | } else { |