eight
2024-11-18 adecd142412454acbd8f729c7230e9a90b3dcddc
room store 改为 sessionStorage
已添加1个文件
已修改6个文件
235 ■■■■ 文件已修改
src/hooks/web/useCache.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/room.ts 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.ts 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/Routine.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/room/RoomLoginSelect.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/web/useCache.ts
@@ -10,6 +10,7 @@
  // ç”¨æˆ·ç›¸å…³
  ROLE_ROUTERS: 'roleRouters',
  USER: 'user',
  ROOM: 'room',
  // ç³»ç»Ÿè®¾ç½®
  IS_DARK: 'isDark',
  LANG: 'lang',
src/permission.ts
@@ -9,6 +9,7 @@
import { useCheckTypeStoreWithOut } from '@/store/modules/checkType'
import { useUserStoreWithOut } from '@/store/modules/user'
import { usePermissionStoreWithOut } from '@/store/modules/permission'
import { useRoomStoreWithOut } from "@/store/modules/room";
const { start, done } = useNProgress()
@@ -83,6 +84,7 @@
  // èŽ·å–æ‰€æœ‰å­—å…¸
  const dictStore = useDictStoreWithOut()
  const userStore = useUserStoreWithOut()
  const roomStore = useRoomStoreWithOut()
  const checkTypeStore = useCheckTypeStoreWithOut()
  const permissionStore = usePermissionStoreWithOut()
  if (!dictStore.getIsSetDict) {
@@ -97,7 +99,7 @@
      // <<<【诊室选择】<<<
      if ( to.path !== '/roomselect' &&
          userStore.getRoles.includes("doctor") && !userStore.getRoles.includes("super_admin")
          && !userStore.getIsSetRoom ) {
          && !roomStore.getIsSetRoom ) {
          next({path: `/roomselect?redirect=${to.fullPath}`})
          return
      }
@@ -119,7 +121,7 @@
  // <<<【诊室选择】<<<
  if ( to.path !== '/roomselect' &&
      userStore.getRoles.includes("doctor") && !userStore.getRoles.includes("super_admin")
      && !userStore.getIsSetRoom ) {
      && !roomStore.getIsSetRoom ) {
    next({path: `/roomselect?redirect=${to.fullPath}`})
    return
  }
src/store/modules/room.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
import { store } from '@/store'
import { defineStore } from 'pinia'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
import {RoomVO} from "@/api/ecg/room";
const { wsCache } = useCache("sessionStorage")
interface RoomInfoVO {
  // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
  isSetRoom: boolean
  room: RoomVO
}
export const useRoomStore = defineStore('current-room', {
  state: (): RoomInfoVO => ({
    // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
    isSetRoom: false,
    room: {
      id: null,
      roomId: null,
      roomName: null,
      bedNo: null,
      ip: null,
      status: null,
      docId: null,
      docName: null,
      checkTypes: null,
      opType: null
    }
  }),
  getters: {
    // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
    getIsSetRoom(): boolean {
      return this.isSetRoom
    },
    getRoom(): RoomVO | null {
      return this.room
    }
  },
  actions: {
    // åŒ»ç”Ÿå…¥åº§
    async setRoomInfoAction(room: RoomVO) {
      // æ›´æ–° store
      this.room!.id = room.id
      this.room!.roomId = room.roomId
      this.room!.roomName = room.roomName
      this.room!.bedNo = room.bedNo
      this.room!.status = room.status
      this.room!.docId = room.docId
      this.room!.docName = room.docName
      this.room!.checkTypes = room.checkTypes
      this.room!.opType = room.opType
      this.isSetRoom = true
      // æ›´æ–° cache
      const bedInfo = wsCache.get(CACHE_KEY.ROOM)
      if (bedInfo) {
        bedInfo.room = room
        bedInfo.isSetRoom = true
        wsCache.set(CACHE_KEY.ROOM, bedInfo)
      }
    },
    // åŒ»ç”Ÿç¦»åº§
    async clearRoomInfoAction() {
      // æ¸… store
      this.room.id = null
      this.room.roomId = null
      this.room.roomName = null
      this.room.bedNo = null
      this.room.status = null
      this.room.docId = null
      this.room.docName = null
      this.isSetRoom = false
      // æ›´æ–° cache
      const roomInfo = wsCache.get(CACHE_KEY.ROOM)
      if (roomInfo) {
        roomInfo.room = null
        roomInfo.isSetRoom = false
        wsCache.set(CACHE_KEY.ROOM, roomInfo)
      }
    },
  }
})
export const useRoomStoreWithOut = () => {
  return useRoomStore(store)
}
src/store/modules/user.ts
@@ -3,7 +3,6 @@
import { getAccessToken, removeToken } from '@/utils/auth'
import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache'
import { getInfo, loginOut } from '@/api/login'
import {RoomVO} from "@/api/ecg/room";
const { wsCache } = useCache()
@@ -20,10 +19,6 @@
  roles: string[]
  isSetUser: boolean
  user: UserVO
  // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
  isSetRoom: boolean
  room: RoomVO
}
export const useUserStore = defineStore('admin-user', {
@@ -37,20 +32,6 @@
      nickname: '',
      deptId: 0
    },
    // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
    isSetRoom: false,
    room: {
      id: null,
      roomId: null,
      roomName: null,
      bedNo: null,
      ip: null,
      status: null,
      docId: null,
      docName: null,
      checkTypes: null,
      opType: null
    }
  }),
  getters: {
    getPermissions(): string[] {
@@ -65,13 +46,6 @@
    getUser(): UserVO {
      return this.user
    },
    // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
    getIsSetRoom(): boolean {
      return this.isSetRoom
    },
    getRoom(): RoomVO | null {
      return this.room
    }
  },
  actions: {
    async setUserInfoAction() {
@@ -90,50 +64,6 @@
      wsCache.set(CACHE_KEY.USER, userInfo)
      wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus)
    },
    // åŒ»ç”Ÿå…¥åº§
    async setRoomInfoAction(room: RoomVO) {
      // æ›´æ–° store
      this.room!.id = room.id
      this.room!.roomId = room.roomId
      this.room!.roomName = room.roomName
      this.room!.bedNo = room.bedNo
      this.room!.status = room.status
      this.room!.docId = room.docId
      this.room!.docName = room.docName
      this.room!.checkTypes = room.checkTypes
      this.room!.opType = room.opType
      this.isSetRoom = true
      // æ›´æ–° cache
      const userInfo2 = wsCache.get(CACHE_KEY.USER)
      if (userInfo2) {
        userInfo2.room = room
        userInfo2.isSetRoom = true
        wsCache.set(CACHE_KEY.USER, userInfo2)
      }
    },
    // åŒ»ç”Ÿç¦»åº§
    async clearRoomInfoAction() {
      // æ¸… store
      this.room.id = null
      this.room.roomId = null
      this.room.roomName = null
      this.room.bedNo = null
      this.room.status = null
      this.room.docId = null
      this.room.docName = null
      this.isSetRoom = false
      // æ›´æ–° cache
      const userInfo2 = wsCache.get(CACHE_KEY.USER)
      if (userInfo2) {
        userInfo2.room = null
        userInfo2.isSetRoom = false
        wsCache.set(CACHE_KEY.USER, userInfo2)
      }
    },
    async setUserAvatarAction(avatar: string) {
      const userInfo = wsCache.get(CACHE_KEY.USER)
      // NOTE: æ˜¯å¦éœ€è¦åƒ`setUserInfoAction`一样判断`userInfo != null`
@@ -163,20 +93,6 @@
        avatar: '',
        nickname: '',
        deptId: 0
      }
      // åŒ»ç”Ÿè¯Šå®¤é€‰æ‹©
      this.isSetRoom = false
      this.room = {
        id: 0,
        roomId: 0,
        roomName: "",
        bedNo: "",
        ip: "",
        status: null,
        docId: null,
        docName: null,
        checkTypes: null,
        opType: null
      }
    }
  }
src/views/ecg/doctor/Routine.vue
@@ -2,13 +2,12 @@
import TitlePanel from "@/views/ecg/doctor/components/TitlePanel.vue";
import QueuePanel from "@/views/ecg/doctor/components/QueuePanel.vue";
import {DoctorApi, PatientStatisticVO, RoomBedVO} from '@/api/ecg/doctor';
import {useUserStore} from "@/store/modules/user";
import {QueueVO} from "@/api/ecg/queue";
import {ElNotification} from "element-plus";
import DevReadyPanel from "@/views/ecg/doctor/components/DevReadyPanel.vue";
import RoutinePanel from "@/views/ecg/doctor/components/RoutinePanel.vue";
import {useRoomStore} from "@/store/modules/room";
const userStore = useUserStore();
const roomStore = useRoomStore();
const roomBedVO: RoomBedVO = {
    roomId: null,
@@ -19,13 +18,16 @@
}
const onStagePatient = ref<QueueVO>({
  bedNo: "", bookCheckType: 0, bookTimeslot: 0, expired: 0, id: 0, jumpFlag: 0, passed: 0,
  patGender: 0, patId: "", patName: "", roomId: 0, roomName: "", seqNum: 0, status: 0
  id: 0, patId: "", patName: "", patGender: 0,
  bookTimeslot: 0, bookCheckType: 0, isVip: 0, seqNum: 0, bookSeqNum: 0,
  passed: 0, expired: 0, jumpFlag: 0,
  roomId: 0, roomName: "", bedNo: "", status: 0
})
const patientStat = ref<PatientStatisticVO>({
    finishedNum: 0,
    readyNum: 0,
    receivedNum: 0,
    passedNum: 0,
    queuingNum: 0
})
@@ -128,12 +130,12 @@
  finishFlag.value = true
  passFlag.value = true
  if (userStore.isSetRoom) {
    roomBedVO.roomId = userStore.room!.roomId
    roomBedVO.roomName = userStore.room!.roomName
    roomBedVO.bedNo = userStore.room!.bedNo
    roomBedVO.checkTypes = userStore.room!.checkTypes
    roomBedVO.opType = userStore.room!.opType
  if (roomStore.isSetRoom) {
    roomBedVO.roomId = roomStore.room!.roomId
    roomBedVO.roomName = roomStore.room!.roomName
    roomBedVO.bedNo = roomStore.room!.bedNo
    roomBedVO.checkTypes = roomStore.room!.checkTypes
    roomBedVO.opType = roomStore.room!.opType
    timerRunFlag = true
    doctorTimer()
src/views/ecg/doctor/index.vue
@@ -3,12 +3,12 @@
import TitlePanel from "@/views/ecg/doctor/components/TitlePanel.vue";
import QueuePanel from "@/views/ecg/doctor/components/QueuePanel.vue";
import {DoctorApi, PatientStatisticVO, RoomBedVO} from '@/api/ecg/doctor';
import {useUserStore} from "@/store/modules/user";
import {QueueVO} from "@/api/ecg/queue";
import {ElNotification} from "element-plus";
import DevReadyPanel from "@/views/ecg/doctor/components/DevReadyPanel.vue";
import {useRoomStore} from "@/store/modules/room";
const userStore = useUserStore();
const roomStore = useRoomStore();
const roomBedVO: RoomBedVO = {
    roomId: null,
@@ -128,12 +128,12 @@
  finishFlag.value = true
  passFlag.value = true
  if (userStore.isSetRoom) {
    roomBedVO.roomId = userStore.room!.roomId
    roomBedVO.roomName = userStore.room!.roomName
    roomBedVO.bedNo = userStore.room!.bedNo
    roomBedVO.checkTypes = userStore.room!.checkTypes
    roomBedVO.opType = userStore.room!.opType
  if (roomStore.isSetRoom) {
    roomBedVO.roomId = roomStore.room!.roomId
    roomBedVO.roomName = roomStore.room!.roomName
    roomBedVO.bedNo = roomStore.room!.bedNo
    roomBedVO.checkTypes = roomStore.room!.checkTypes
    roomBedVO.opType = roomStore.room!.opType
    timerRunFlag = true
    doctorTimer()
src/views/ecg/room/RoomLoginSelect.vue
@@ -21,6 +21,7 @@
import {isStringEmpty} from "@/utils/stringUtil";
import {cloneDeep} from "lodash-es";
import {DoctorApi} from "@/api/ecg/doctor";
import {useRoomStore} from "@/store/modules/room";
const {  push } = useRouter()
defineOptions({ name: 'RoomLoginSelect' })
@@ -28,6 +29,7 @@
const route = useRoute();
const userStore = useUserStore()
const roomStore = useRoomStore()
const curUser = userStore.getUser
const isEmptyOpeningBed = ref<boolean>(true);
@@ -39,7 +41,10 @@
  bedNo: null,
  status: null,
  docId: null,
  docName: null
  docName: null,
  ip: "",
  checkTypes: [],
  opType: 0
})
/** åˆå§‹åŒ– **/
@@ -73,7 +78,7 @@
      roomVOArray.forEach((roomVO) => {
        if (roomVO.docId === curUser.id) {
          curSel.value = roomVO
          userStore.setRoomInfoAction(curSel.value)
          roomStore.setRoomInfoAction(curSel.value)
        }
      })
  }
@@ -115,7 +120,7 @@
    }
    resetCurSel()
    userStore.clearRoomInfoAction()
    await roomStore.clearRoomInfoAction()
    const tempRoomVO = cloneDeep(newRoomVO)
    tempRoomVO.docId = curUser.id
@@ -130,7 +135,7 @@
      return
    }
    userStore.setRoomInfoAction(tempRoomVO)
    await roomStore.setRoomInfoAction(tempRoomVO)
    newRoomVO.docId = curUser.id
    newRoomVO.docName = curUser.nickname
    curSel.value = newRoomVO;
@@ -165,7 +170,7 @@
  }
  resetCurSel()
  userStore.clearRoomInfoAction()
  await roomStore.clearRoomInfoAction()
  getList()
}