From fa9fc60fc6691c92c8696dae2ff3415e2e8fffd9 Mon Sep 17 00:00:00 2001
From: zhangchen <1652267879@qq.com>
Date: 星期六, 26 七月 2025 11:39:04 +0800
Subject: [PATCH] ID1625-修改头部字体大小

---
 src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue |   99 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 89 insertions(+), 10 deletions(-)

diff --git a/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue b/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
index f8d9a68..fa33f1c 100644
--- a/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
+++ b/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
@@ -2,31 +2,40 @@
   <div class="bedside-auxiliary-screen-header">
     <div class="header-left">
       <!-- 没有设备编号 -->
-      <span v-if="pageType === 0" class="info-text">未绑定设备</span>
+      <span v-if="pageType === pageTypeEnum.NOT_INIT" class="info-text">未绑定设备</span>
       <template v-else>
         <!-- 设备号 -->
         <span class="info-text">{{
           bedsideAuxiliaryScreenStore.deviceData.devicdeNo
         }}</span>
         <!-- 加载中 -->
-        <span v-if="pageType === 1" class="info-text"
+        <span v-if="pageType === pageTypeEnum.LOADING" class="info-text"
           >页面初始化中,请耐心等待!</span
         >
         <!-- 未排班 -->
-        <span v-else-if="pageType === 2" class="info-text">当前尚未排班</span>
+        <span v-else-if="pageType === pageTypeEnum.UNPLANNED_SCHEDULE" class="info-text">当前尚未排班</span>
         <!-- 有排班 -->
         <template v-else>
           <span class="info-text">{{ patientInfo.patientName }}</span>
           <span class="info-text">{{ patientInfo.age }}岁</span>
           <span class="info-text">{{ patientInfo.gender }}</span>
           <span v-if="patientInfo.patFormNumber" class="info-text">
-            {{ patientInfo.patForm }}:{{ patientInfo.patFormNumber }}</span
+            {{ patientInfo.patForm }}:{{ patientInfo.patFormNumber }}</span
           >
+          <span v-if="pageType === pageTypeEnum.DURING_DIALYSIS && patientInfo.dialysisAge" class="info-text">
+            透析龄: {{ patientInfo.dialysisAge?.years }}年{{ patientInfo.dialysisAge?.months }}月
+          </span>
         </template>
+        {{ taskCountdown }}
       </template>
     </div>
     <div class="header-right">
-      <img :src="atRegularTimeImg" class="btn-img" alt="" @click="openScheduledTaskDialog" />
+      <img
+        :src="atRegularTimeImg"
+        class="btn-img"
+        alt=""
+        @click="openScheduledTaskDialog"
+      />
       <img
         :src="setUpImg"
         class="btn-img"
@@ -43,25 +52,38 @@
 </template>
 
 <script lang="ts" setup name="Header">
-import { ref, computed, defineAsyncComponent } from "vue";
+import {
+  ref,
+  computed,
+  defineAsyncComponent,
+  onMounted,
+  onUnmounted,
+  watch,
+} from "vue";
+import dayjs from "dayjs";
+import type { Task } from "@/store/type/task.type";
 const SettingDeviceDialog = defineAsyncComponent(
   () => import("./SettingDeviceDialog.vue")
 );
 const ScheduledTaskDialog = defineAsyncComponent(
   () => import("./ScheduledTask.vue")
-)
+);
 import atRegularTimeImg from "../../../../img/dingshi.png";
 import setUpImg from "../../../../img/shezhi.png";
 import userImg from "../../../../img/user.png";
 
 import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen";
-import { EPatForm } from "@/store/type/bedsideAuxiliaryScreen.type";
+import { EPatForm, EPageType } from "@/store/type/bedsideAuxiliaryScreen.type";
 import { ElMessage } from "element-plus";
 
 const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore();
 
+let timer: number;
+
+const pageTypeEnum = ref(EPageType);
 const settingDeviceDialogRef = ref<any>(null);
 const scheduledTaskDialogRef = ref<any>(null);
+const taskCountdown = ref(""); // 定时任务倒计时文本
 
 const pageType = computed(() => {
   return bedsideAuxiliaryScreenStore.deviceData.pageType;
@@ -79,14 +101,39 @@
         ? "门诊号"
         : "住院号",
     patFormNumber: bedsideAuxiliaryScreenStore.deviceData.patFormNumber,
+    dialysisAge: bedsideAuxiliaryScreenStore.deviceData.underTreatment.dialysisAge ? convertMonths(bedsideAuxiliaryScreenStore.deviceData.underTreatment.dialysisAge) : null ,
   };
 });
+
+// watch(
+//   () => bedsideAuxiliaryScreenStore.taskData,
+//   (newData: Task[]) => {
+//     console.log('定时任务更新了')
+//     if (
+//       bedsideAuxiliaryScreenStore.deviceData.deviceCode &&
+//       newData.length > 0
+//     ) {
+//       console.log('newData: ', newData)
+//       updateCountdown(newData[0].taskDate);
+//     } else {
+//       taskCountdown.value = "";
+//     }
+//   },
+//   { deep: true }
+// );
+
+const convertMonths = (months: number): { years: number; months: number } => {
+  const years = Math.floor(months / 12);
+  const remainingMonths = months % 12;
+  return { years, months: remainingMonths };
+}
 
 const openSettingDeviceDialog = () => {
   settingDeviceDialogRef.value?.openDialog();
 };
 
 const openScheduledTaskDialog = () => {
+  if (!bedsideAuxiliaryScreenStore.deviceCode || !bedsideAuxiliaryScreenStore.deviceData.deviceCode) return ElMessage.warning('未初始化或正在进行初始化操作中');
   scheduledTaskDialogRef.value?.openDialog();
 };
 
@@ -96,6 +143,38 @@
     type: "warning",
   });
 };
+
+const getCountdown = (taskDate: string) => {
+  const now = dayjs();
+  const target = dayjs(taskDate).second(0).millisecond(0);
+
+  const diff = target.diff(now, "second");
+
+  if (diff <= 0) return "";
+
+  const minutes = Math.floor(diff / 60);
+  const seconds = diff % 60;
+
+  return `${minutes}m${seconds}s`;
+};
+
+const updateCountdown = (taskDate: string) => {
+  taskCountdown.value = getCountdown(taskDate);
+  timer = window.setInterval(updateCountdown, 1000);
+};
+
+onMounted(() => {
+  if (
+    bedsideAuxiliaryScreenStore.deviceData.deviceCode &&
+    bedsideAuxiliaryScreenStore.taskData.length > 0
+  ) {
+    getCountdown(bedsideAuxiliaryScreenStore.taskData[0].taskDate);
+  }
+});
+
+onUnmounted(() => {
+  timer && clearInterval(timer);
+});
 </script>
 
 <style lang="less" scoped>
@@ -113,12 +192,12 @@
     .info-text {
       font-family: PingFangSC, PingFang SC;
       font-weight: 600;
-      font-size: 11px;
+      font-size: 9px;
       color: #ffffff;
       text-align: left;
       font-style: normal;
       &:not(:first-child) {
-        margin-left: 6px;
+        margin-left: 4px;
       }
     }
   }

--
Gitblit v1.8.0