单应用项目,可以创建很多独立工具类页面 ,不用登录 初始化的页面
zhangchen
2025-09-19 5bfd636d1fc207a69391e29bcee40b279274a629
src/store/bedsideAuxiliaryScreen.ts
@@ -2,7 +2,10 @@
import { ref } from "vue";
import dayjs from "dayjs";
import { EventSourcePolyfill } from "event-source-polyfill";
import type { BedsideAuxiliaryScreen, SseMsgData } from "./type/bedsideAuxiliaryScreen.type";
import type {
  BedsideAuxiliaryScreen,
  SseMsgData,
} from "./type/bedsideAuxiliaryScreen.type";
import type { Task } from "./type/task.type";
import {
  defaultDeviceData,
@@ -11,6 +14,8 @@
} from "./type/bedsideAuxiliaryScreen.type";
import { ElMessage } from "element-plus/es";
import { Local } from "@/utils/storage";
import type { DeviceLoginRecord } from './type/user.type';
import { logOutApi } from "@/api/user";
export const useBedsideAuxiliaryScreenStore = defineStore(
  "bedsideAuxiliaryScreen",
@@ -27,11 +32,14 @@
    /** 任务列表 */
    const taskData = ref<Task[]>([]);
    /** 用户信息 */
    const userInfo = ref<DeviceLoginRecord | null>(null);
    /** 设置副屏版本号 */
    const setVersion = (val: string) => {
      version.value = val;
      Local.set("version", val);
    }
    };
    /**
     * 设置设备编号
@@ -67,6 +75,18 @@
      taskData.value = [];
    };
    /** 设置用户信息 */
    const setUserInfo = (user: DeviceLoginRecord | null) => {
      userInfo.value = user;
    };
    /** 退出登录 */
    const logout = async (deviceCodeStr: string) => {
      await logOutApi(deviceCodeStr);
      setUserInfo(null);
    };
    // SSE 相关状态
    const source = ref<EventSource | null>(null);
    const message = ref<string | null>(null);
@@ -74,7 +94,7 @@
    // 重连控制
    let retryCount = 0;
    const maxRetryCount = 60;
    const maxRetryCount = 6000 * 60 * 24 * 30;
    const baseRetryDelay = 1000; // 1秒开始重连延迟
    /**
@@ -127,29 +147,60 @@
          const dataBody = JSON.parse(datax) as SseMsgData;
          console.log("dataBody: ", dataBody);
          // 倒计时提示文本
          if (dataBody.倒计时?.提醒文本 && Number(dataBody.倒计时?.设定提醒倒计时 > 0)) {
          if (
            dataBody.倒计时?.提醒文本 &&
            Number(dataBody.倒计时?.设定提醒倒计时 > 0)
          ) {
            const serverTimeRaw = dataBody.倒计时?.当前服务器时间;
            const reminderMinutes = Number(dataBody.倒计时?.设定提醒倒计时 ?? 0);
            const serverTimeFormatted = serverTimeRaw.replace(' ', 'T');
            const reminderMinutes = Number(
              dataBody.倒计时?.设定提醒倒计时 ?? 0
            );
            const serverTimeFormatted = serverTimeRaw.replace(" ", "T");
            const taskTime = dayjs(serverTimeFormatted).add(reminderMinutes, 'second');
            const taskTime = dayjs(serverTimeFormatted).add(
              reminderMinutes,
              "second"
            );
            setSyncTask({
              deviceCode: dataBody.IOT信息.设备唯一编号,
              recordCode: dataBody.透析状态?.透析单编号,
              taskDate: taskTime.format('YYYY-MM-DD HH:mm'),
              taskDate: taskTime.format("YYYY-MM-DD HH:mm"),
              taskName: dataBody.倒计时?.提醒文本,
              overdue: false,
              sync: true,
              countdown: dataBody.倒计时?.设定提醒倒计时
            })
              countdown: dataBody.倒计时?.设定提醒倒计时,
            });
          } else {
            clearTask();
          }
          deviceData.value = formatDeviceData(deviceData.value, dataBody);
          setDeviceCode(dataBody.服务端版本号);
          // 当前登录的用户信息
          setUserInfo(dataBody.当前登录状态);
          // 判断本地的版本号与远程的版本号是否一致,如果不一致则执行刷新操作
          if (dataBody.服务端版本号 !== version.value) {
            refreshVersion(dataBody.服务端版本号);
          } else if (dataBody.是否需要立即刷新 === 1) {
            refreshVersion(dataBody.服务端版本号);
          }
        }
      };
    };
    /** 刷新副屏 */
    const refreshVersion = (val?: string) => {
      if (val) {
        setVersion(val);
      }
      ElMessage({
        type: "success",
        duration: 1000 * 3,
        message: "系统更新···",
        onClose: function () {
          window.location.reload();
        },
      });
    };
    /**
@@ -189,6 +240,10 @@
      setSyncTask,
      clearTask,
      setVersion,
      refreshVersion,
      userInfo,
      setUserInfo,
      logout,
    };
  }
);