From e33fd6e926ed689d120974a49658ef195bfe4636 Mon Sep 17 00:00:00 2001
From: zhangchen <1652267879@qq.com>
Date: 星期五, 25 七月 2025 17:41:48 +0800
Subject: [PATCH] Merge branch 'ID1825-床旁副屏改版' into test

---
 src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue |   74 +++++++++++++++++++++++++++++++++++-
 1 files changed, 71 insertions(+), 3 deletions(-)

diff --git a/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue b/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
index f8d9a68..25c014e 100644
--- a/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
+++ b/src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
@@ -23,10 +23,16 @@
             {{ patientInfo.patForm }}:{{ patientInfo.patFormNumber }}</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,13 +49,22 @@
 </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";
@@ -60,8 +75,11 @@
 
 const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore();
 
+let timer: number;
+
 const settingDeviceDialogRef = ref<any>(null);
 const scheduledTaskDialogRef = ref<any>(null);
+const taskCountdown = ref(""); // 定时任务倒计时文本
 
 const pageType = computed(() => {
   return bedsideAuxiliaryScreenStore.deviceData.pageType;
@@ -82,11 +100,29 @@
   };
 });
 
+// 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 openSettingDeviceDialog = () => {
   settingDeviceDialogRef.value?.openDialog();
 };
 
 const openScheduledTaskDialog = () => {
+  if (!bedsideAuxiliaryScreenStore.deviceCode || !bedsideAuxiliaryScreenStore.deviceData.deviceCode) return ElMessage.warning('未初始化或正在进行初始化操作中');
   scheduledTaskDialogRef.value?.openDialog();
 };
 
@@ -96,6 +132,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>

--
Gitblit v1.8.0