From 57712331391fbc6c0022d9c1cc80704bc1cdd1d7 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期三, 22 一月 2025 12:17:25 +0800
Subject: [PATCH] 完善功能

---
 src/views/Home.vue |  249 +++++++++++++++++++++++++++++++------------------
 1 files changed, 158 insertions(+), 91 deletions(-)

diff --git a/src/views/Home.vue b/src/views/Home.vue
index 70e0d01..cfede1b 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -219,7 +219,7 @@
           </div>
         </el-col>
         <el-col :span="12">
-          <div
+          <div 
             v-if="Number(deviceData.透析状态) > 1"
             :ref="'echartsDiv' + deviceData.设备编号"
             style="height: 97%"
@@ -229,23 +229,23 @@
             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"
@@ -253,42 +253,39 @@
                 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"
@@ -296,49 +293,58 @@
                 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">
             
@@ -376,7 +382,7 @@
             overflow: hidden;
           "
         >
-          <div class="grid-container" style="height: 100%">
+          <div class="grid-container" style="height: 100%" @click="initTupiao">
             {{ deviceData.设备名称 }} {{ zhuangtaiStr }}
           </div>
         </el-row>
@@ -414,13 +420,14 @@
                 &nbsp;
               </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
@@ -440,7 +447,7 @@
             </el-row>
           </div>
         </el-col>
-        <el-col :span="9" v-if="noBaoji !== ''">
+        <el-col :span="9" v-if="noBaoji == ''">
           <!-- 历史状态画图 -->
           <div
             :ref="'echartsDivwd' + deviceData.设备编号"
@@ -510,6 +517,14 @@
  // 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,
@@ -529,7 +544,7 @@
   性别: "男",
   患者头像:
     "http://dhimg.leon056.com/hemodialysis/face/PAT9090070832211PyVq/face-IMG_20240413_112705.jpg-202404131127536157.jpg",
-  患者姓名: "李金山",
+  患者姓名: "",
   患者编号: "PAT9090070832211PyVq",
   患者透析号: "0207",
   最后一条血压: 116,
@@ -584,7 +599,7 @@
   透析处方的时长_小时: "4",
   透析开始时间: "2025-01-10 16:44:00",
   透析方案: "HD",
-  透析状态: "2.0",
+  透析状态: "1.0",
   透析结束时间: "2025-01-10 20:44:00",
   设备变化: "1736508117033DEV",
   属性历史列表: [
@@ -687,6 +702,13 @@
 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.透析状态;
 });
@@ -759,9 +781,9 @@
   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 {
@@ -851,7 +873,7 @@
 watch(
   () => deviceData.value.设备变化,
   () => {
-    // console.log(device.value.设备名称,'子组件变量')
+    console.log(deviceData.value.设备名称,'子组件变量')
     setTimeout(() => {
       if (!xiaoduzhuangti.value) {
         initTupiao();
@@ -867,7 +889,7 @@
         { 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) => {
@@ -881,6 +903,7 @@
         };
         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')
@@ -890,12 +913,36 @@
                   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);
@@ -1153,6 +1200,7 @@
       }
     }
   } else if (deviceData.value.患者姓名 === "") {
+    console.log('2222')
     const tbdata1 = [];
     const tbdata2 = [];
     const tbdata3 = [];
@@ -1187,6 +1235,7 @@
       });
     }
     try {
+      console.log('渲染设备')
       const myChart1 = echarts.init(
         proxy.$refs["echartsDivwd" + deviceData.value.设备编号]
       );
@@ -1197,7 +1246,7 @@
         proxy.$refs["echartsDivddd" + deviceData.value.设备编号]
       );
       const option1 = {
-        backgroundColor: textcolor.value,
+        // backgroundColor: textcolor.value,
         tooltip: {
           trigger: "axis",
         },
@@ -1206,11 +1255,11 @@
         },
         grid: {
           left: 8,
-          top: 30,
+          top: 100,
           bottom: 0,
         },
         xAxis: {
-          show: false, // 隐藏X轴
+          show: true, // 隐藏X轴
           type: "category",
           // 标记做右往左排列
           boundaryGap: false,
@@ -1237,7 +1286,7 @@
         ],
       };
       const option2 = {
-        backgroundColor: textcolor.value,
+        // backgroundColor: textcolor.value,
         tooltip: {
           trigger: "axis",
         },
@@ -1246,7 +1295,7 @@
         },
         grid: {
           left: 8,
-          top: 20,
+          top: 100,
           bottom: 0,
         },
         xAxis: {
@@ -1278,7 +1327,7 @@
         ],
       };
       const option3 = {
-        backgroundColor: textcolor.value,
+        // backgroundColor: textcolor.value,
         tooltip: {
           trigger: "axis",
         },
@@ -1287,7 +1336,7 @@
         },
         grid: {
           left: 8,
-          top: 10,
+          top: 100,
           bottom: 0,
         },
         xAxis: {
@@ -1412,4 +1461,22 @@
 .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>
\ No newline at end of file

--
Gitblit v1.8.0