From adecd142412454acbd8f729c7230e9a90b3dcddc Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期一, 18 十一月 2024 14:39:20 +0800
Subject: [PATCH] room store 改为 sessionStorage

---
 src/views/ecg/room/RoomLoginSelect.vue |   15 ++-
 src/views/ecg/doctor/Routine.vue       |   24 +++--
 src/hooks/web/useCache.ts              |    1 
 src/views/ecg/doctor/index.vue         |   16 ++--
 src/store/modules/user.ts              |   84 ---------------------
 src/store/modules/room.ts              |   89 ++++++++++++++++++++++
 src/permission.ts                      |    6 +
 7 files changed, 125 insertions(+), 110 deletions(-)

diff --git a/src/hooks/web/useCache.ts b/src/hooks/web/useCache.ts
index 990715e..eb83725 100644
--- a/src/hooks/web/useCache.ts
+++ b/src/hooks/web/useCache.ts
@@ -10,6 +10,7 @@
   // 鐢ㄦ埛鐩稿叧
   ROLE_ROUTERS: 'roleRouters',
   USER: 'user',
+  ROOM: 'room',
   // 绯荤粺璁剧疆
   IS_DARK: 'isDark',
   LANG: 'lang',
diff --git a/src/permission.ts b/src/permission.ts
index b0f6231..d0bfdfd 100644
--- a/src/permission.ts
+++ b/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
   }
diff --git a/src/store/modules/room.ts b/src/store/modules/room.ts
new file mode 100644
index 0000000..f3f771b
--- /dev/null
+++ b/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)
+}
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index ed1f54e..77443e7 100644
--- a/src/store/modules/user.ts
+++ b/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
       }
     }
   }
diff --git a/src/views/ecg/doctor/Routine.vue b/src/views/ecg/doctor/Routine.vue
index 4f52518..40ea739 100644
--- a/src/views/ecg/doctor/Routine.vue
+++ b/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()
diff --git a/src/views/ecg/doctor/index.vue b/src/views/ecg/doctor/index.vue
index e8fd253..b29a0c2 100644
--- a/src/views/ecg/doctor/index.vue
+++ b/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()
diff --git a/src/views/ecg/room/RoomLoginSelect.vue b/src/views/ecg/room/RoomLoginSelect.vue
index 00ae7df..b76d0d9 100644
--- a/src/views/ecg/room/RoomLoginSelect.vue
+++ b/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()
 }
 

--
Gitblit v1.9.3