From fe792c0638eeaaba49289de00c4c59bd6279ecd9 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期二, 27 八月 2024 17:11:37 +0800
Subject: [PATCH] update
---
src/views/ecg/room/RoomLoginSelect.vue | 113 +++++++++++++++++++++++++------------
src/api/ecg/room/index.ts | 10 +-
src/components/RoomBedSelect/src/RoomBedSelect.vue | 16 +++--
src/store/modules/user.ts | 18 +++++
4 files changed, 106 insertions(+), 51 deletions(-)
diff --git a/src/api/ecg/room/index.ts b/src/api/ecg/room/index.ts
index 70fa94d..eee2ccd 100644
--- a/src/api/ecg/room/index.ts
+++ b/src/api/ecg/room/index.ts
@@ -2,11 +2,11 @@
// 璇婂鍜岃瘖鐤楀簥 VO
export interface RoomVO {
- id: number //
- roomId: number // 璇婂缂栧彿
- roomName: string // 璇婂鍚嶇О
- bedNo: string // 璇婄枟搴婄紪鍙�
- status: number //寮�璇婄姸鎬� 0-鍏抽棴 1-鍏抽棴涓� 10-宸插紑閫� 20-鏈夊尰鐢� 30-鏆傚仠
+ id: number | null //
+ roomId: number | null // 璇婂缂栧彿
+ roomName: string | null // 璇婂鍚嶇О
+ bedNo: string | null // 璇婄枟搴婄紪鍙�
+ status: number | null //寮�璇婄姸鎬� 0-鍏抽棴 1-鍏抽棴涓� 10-宸插紑閫� 20-鏈夊尰鐢� 30-鏆傚仠
docId: number | null
docName: string | null
}
diff --git a/src/components/RoomBedSelect/src/RoomBedSelect.vue b/src/components/RoomBedSelect/src/RoomBedSelect.vue
index 9fc6b2c..a804b87 100644
--- a/src/components/RoomBedSelect/src/RoomBedSelect.vue
+++ b/src/components/RoomBedSelect/src/RoomBedSelect.vue
@@ -2,7 +2,7 @@
import { RoomApi, RoomVO } from '@/api/ecg/room'
import {PropType} from "vue";
import {useUserStore} from "@/store/modules/user";
-const emit = defineEmits(['haveSeat'])
+const emit = defineEmits(['haveSeat', 'leaveSeat'])
defineComponent({
name: 'RoomBedSelect'
@@ -26,12 +26,11 @@
const userStore = useUserStore()
const curUser = userStore.getUser
-// const emit2 = defineEmits<{
-// (e: 'update:curBed', message: string): void;
-// }>();
-
-const onclick = (newItem) => {
+const onHaveSeatclick = (newItem) => {
emit('haveSeat', newItem)
+}
+const onLeaveSeatclick = (curItem) => {
+ emit('leaveSeat', curItem)
}
/** 鍒濆鍖� **/
@@ -57,9 +56,12 @@
style="width: 100%"
/>
<div>{{bedItem.bedNo}} {{bedItem.docName}}</div>
- <el-button v-if="bedItem.docId === null" @click = onclick(bedItem)>
+ <el-button v-if="bedItem.docId === null" @click = onHaveSeatclick(bedItem)>
鍏ュ骇
</el-button>
+ <el-button v-if="bedItem.docId === curUser.id" @click = onLeaveSeatclick(bedItem)>
+ 绂诲骇
+ </el-button>
</div>
</div>
</el-card>
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 861f94b..8fd7e8d 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -23,7 +23,7 @@
// 鍖荤敓璇婂閫夋嫨
isSetRoom: boolean
- room: RoomVO
+ room: RoomVO | null
}
export const useUserStore = defineStore('admin-user', {
@@ -85,7 +85,7 @@
wsCache.set(CACHE_KEY.USER, userInfo)
wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus)
},
- // 鍖荤敓璇婂閫夋嫨
+ // 鍖荤敓鍏ュ骇
async setRoomInfoAction(room: RoomVO) {
// 鏇存柊 store
this.room = room
@@ -99,6 +99,20 @@
wsCache.set(CACHE_KEY.USER, userInfo2)
}
},
+ // 鍖荤敓绂诲骇
+ async clearRoomInfoAction() {
+ // 娓� store
+ this.room = 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)
diff --git a/src/views/ecg/room/RoomLoginSelect.vue b/src/views/ecg/room/RoomLoginSelect.vue
index 8cc83b1..d5180f4 100644
--- a/src/views/ecg/room/RoomLoginSelect.vue
+++ b/src/views/ecg/room/RoomLoginSelect.vue
@@ -2,10 +2,13 @@
<div style="display: flex; flex-direction: column; align-items: center;">
<div style="display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 20px">
<div class=roomwrap v-for="(value, key) in bedMap" :key="key">
- <RoomBedSelect :title="key" :bedList="value" :curBed="curSel" @haveSeat="haveSeat"/>
+ <RoomBedSelect :title="key" :bedList="value" :curBed="curSel" @haveSeat="haveSeat" @leaveSeat="leaveSeat"/>
</div>
</div>
- <el-button type="primary" @click="roomConfirm">纭</el-button>
+ <div>
+ <el-button type="primary" @click="haveSeatConfirm">鍏ュ骇纭</el-button>
+ <el-button type="primary" @click="leaveSeatConfirm">绂诲骇纭</el-button>
+ </div>
</div>
</template>
@@ -15,7 +18,7 @@
import { queueApi } from '@/api/ecg/queue'
import {useUserStore} from "@/store/modules/user";
import {ElMessage} from "element-plus";
-import {isStringEmpty} from "@/utils/stringUtil"
+import {isStringEmpty} from "@/utils/stringUtil";
const { push } = useRouter()
defineOptions({ name: 'RoomLoginSelect' })
@@ -30,13 +33,13 @@
const originalSel = ref<RoomVO>();
let curSel = ref<RoomVO>({
- id: 0,
- roomId: 0,
- roomName: "",
- bedNo: "",
- status: 0,
- docId: 0,
- docName: ""
+ id: null,
+ roomId: null,
+ roomName: null,
+ bedNo: null,
+ status: null,
+ docId: null,
+ docName: null
});
/** 鏌ヨ鍒楄〃 */
@@ -56,10 +59,8 @@
}
}
-const roomConfirm = async () => {
- console.info(curSel.value)
-
- if (curSel.value.roomId === 0) {
+const haveSeatConfirm = async () => {
+ if (curSel.value.roomId === null) {
ElMessage({
message: '璇峰厛閫夋嫨宸ヤ綔鐨勪綅缃�!',
type: 'info',
@@ -69,20 +70,52 @@
}
if (curSel.value !== originalSel.value) {
- console.info(originalSel.value)
- let data;
- if (originalSel.value !== undefined) {
- data = await queueApi.bedDoctorOff(originalSel.value)
- if (data !== 0) {
- ElMessage({
- message: '鍐呴儴閿欒!' + data,
- type: 'info',
- duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms
- });
- return
- }
+ console.info(originalSel.value)
+ let data;
+ if (originalSel.value !== undefined) {
+ data = await queueApi.bedDoctorOff(originalSel.value)
+ if (data !== 0) {
+ ElMessage({
+ message: '鍐呴儴閿欒!' + data,
+ type: 'info',
+ duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms
+ });
+ return
}
- data = await queueApi.bedDoctorOn(curSel.value)
+ }
+ data = await queueApi.bedDoctorOn(curSel.value)
+ if (data !== 0) {
+ ElMessage({
+ message: '鍐呴儴閿欒!' + data,
+ type: 'info',
+ duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms
+ });
+ return
+ }
+ originalSel.value = curSel.value
+ }
+
+ userStore.setRoomInfoAction(curSel.value)
+ if (isStringEmpty(route.redirectedFrom?.fullPath))
+ push({ path: "/"})
+ else if(route.redirectedFrom?.fullPath === "/roomselect" )
+ push({ path: "/"})
+ else
+ push({ path: route.redirectedFrom?.fullPath})
+}
+
+const leaveSeatConfirm = async () => {
+ if (curSel.value.roomId !== null) {
+ ElMessage({
+ message: '璇峰厛绂诲紑宸ヤ綅, 鍐嶇‘璁ょ搴�!',
+ type: 'info',
+ duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms
+ });
+ return
+ }
+
+ if (originalSel.value !== undefined) {
+ let data = await queueApi.bedDoctorOff(originalSel.value)
if (data !== 0) {
ElMessage({
message: '鍐呴儴閿欒!' + data,
@@ -91,21 +124,13 @@
});
return
}
- originalSel.value = curSel.value
+ originalSel.value = undefined
}
- userStore.setRoomInfoAction(curSel.value)
- if (isStringEmpty(route.redirectedFrom?.fullPath))
- push({ path: "/"})
- else if(route.redirectedFrom?.fullPath === "/roomselect" )
- push({ path: "/"})
- else
- push({ path: route.redirectedFrom?.fullPath})
+ userStore.clearRoomInfoAction()
}
const haveSeat = (roomVO: RoomVO) => {
- console.info(roomVO)
-
curSel.value.docId = null
curSel.value.docName = null
@@ -113,6 +138,20 @@
roomVO.docName = curUser.nickname
curSel.value = roomVO
}
+const leaveSeat = (roomVO: RoomVO) => {
+ curSel.value.docId = null
+ curSel.value.docName = null
+
+ curSel.value = {
+ id: null,
+ roomId: null,
+ roomName: null,
+ bedNo: null,
+ status: null,
+ docId: null,
+ docName: null
+ }
+}
/** 鍒濆鍖� **/
onMounted(() => {
--
Gitblit v1.9.3