单应用项目,可以创建很多独立工具类页面 ,不用登录 初始化的页面
zhangchen
2025-09-03 0c0c4fce3663c1936823eb6c4a96a0d6e7fa327c
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,7 @@
} from "./type/bedsideAuxiliaryScreen.type";
import { ElMessage } from "element-plus/es";
import { Local } from "@/utils/storage";
import type { UserInfo } from './type/user.type';
export const useBedsideAuxiliaryScreenStore = defineStore(
  "bedsideAuxiliaryScreen",
@@ -27,11 +31,17 @@
    /** 任务列表 */
    const taskData = ref<Task[]>([]);
    /** 用户信息 */
    const userInfo = ref<UserInfo | null>(Local.get('userInfo'));
    /** 用户token */
    const token = ref<string>(Local.get('token'));
    /** 设置副屏版本号 */
    const setVersion = (val: string) => {
      version.value = val;
      Local.set("version", val);
    }
    };
    /**
     * 设置设备编号
@@ -65,6 +75,26 @@
    /** 清除当前定时任务 */
    const clearTask = () => {
      taskData.value = [];
    };
    /** 设置用户信息 */
    const setUserInfo = (user: UserInfo) => {
      userInfo.value = user;
      Local.set('userInfo', user);
    };
    /** 设置token */
    const setToken = (str: string) => {
      token.value = str;
      Local.set('token', str);
    }
    /** 退出登录 */
    const logout = () => {
      Local.remove('token');
      Local.remove('userInfo');
      token.value = '';
      userInfo.value = null;
    };
    // SSE 相关状态
@@ -127,29 +157,57 @@
          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.服务端版本号);
          // 判断本地的版本号与远程的版本号是否一致,如果不一致则执行刷新操作
          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 +247,12 @@
      setSyncTask,
      clearTask,
      setVersion,
      refreshVersion,
      userInfo,
      token,
      setUserInfo,
      setToken,
      logout,
    };
  }
);