From 1f4db481c48e6beb5c787f126576e63363b10a13 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期二, 20 八月 2024 15:02:00 +0800
Subject: [PATCH] update
---
src/views/ecg/doctor/components/TitlePanel.vue | 42 ++++++++++++++
src/views/ecg/room/RoomLoginSelect.vue | 11 +++
src/utils/stringUtil.ts | 5 +
src/views/ecg/doctor/index.vue | 55 ++++++++++++++++++
src/views/ecg/doctor/components/QueuePanel.vue | 39 +++++++++++++
src/api/ecg/doctor/index.ts | 16 +++++
src/api/ecg/queue/index.ts | 6 +-
src/permission.ts | 2
8 files changed, 170 insertions(+), 6 deletions(-)
diff --git a/src/api/ecg/doctor/index.ts b/src/api/ecg/doctor/index.ts
new file mode 100644
index 0000000..a3129f0
--- /dev/null
+++ b/src/api/ecg/doctor/index.ts
@@ -0,0 +1,16 @@
+import request from '@/config/axios'
+
+export interface RoomBedVO {
+ roomId: number // 璇婂缂栧彿
+ bedNo: string // 璇婄枟搴婄紪鍙�
+}
+
+// 鍖荤敓 API
+export const DoctorApi = {
+
+ // 涓嬩竴浣嶆偅鑰�
+ nextPatient: async (params: RoomBedVO) => {
+ return await request.get({ url: `/ecg/doctor/nextpatient`, params })
+ }
+
+}
diff --git a/src/api/ecg/queue/index.ts b/src/api/ecg/queue/index.ts
index 30d6f90..370cd2b 100644
--- a/src/api/ecg/queue/index.ts
+++ b/src/api/ecg/queue/index.ts
@@ -5,16 +5,16 @@
id: number // id
patId: string // 鎮h�呯紪鍙�
patName: string // 鎮h�呭鍚�
- patGender: boolean // 鎮h�呮�у埆
+ patGender: number // 鎮h�呮�у埆
bookTimeslot: number // 棰勭害鏃堕棿娈�
- bookCheckType: boolean // 棰勭害妫�鏌ョ被鍨�
+ bookCheckType: number // 棰勭害妫�鏌ョ被鍨�
seqNum: number // 鎺掗槦搴忓彿
status: number // 10:鎺掗槦涓� 20:鍊欒瘖鍑嗗 30:灏辫瘖涓� 40:灏辫瘖瀹屾垚 50:杩囧彿 60:杩囨湡
passed: boolean // 杩囧彿鏍囪
expired: boolean // 棰勭害杩囨湡鏍囪
roomId: number // 璇婂缂栧彿
roomName: string // 璇婂鍚嶇О
- bedNum: string // 璇婄枟搴婄紪鍙�
+ bedNo: string // 璇婄枟搴婄紪鍙�
}
// 鎺掗槦 API
diff --git a/src/permission.ts b/src/permission.ts
index a2e58d1..6db7476 100644
--- a/src/permission.ts
+++ b/src/permission.ts
@@ -83,7 +83,7 @@
// 鏂板銆愯瘖瀹ら�夋嫨銆戦�昏緫
if (userStore.getRoles.includes("doctor") && !userStore.getIsSetRoom ) {
- next({path: "/login-room-select"})
+ next({path: `/login-room-select?redirect=${to.fullPath}`})
}
// <<<銆愯瘖瀹ら�夋嫨銆�<<<
else {
diff --git a/src/utils/stringUtil.ts b/src/utils/stringUtil.ts
new file mode 100644
index 0000000..4f3514c
--- /dev/null
+++ b/src/utils/stringUtil.ts
@@ -0,0 +1,5 @@
+
+export function isStringEmpty(value: string | null | undefined): boolean {
+ return !value || value.trim() === '';
+}
+
diff --git a/src/views/ecg/doctor/components/QueuePanel.vue b/src/views/ecg/doctor/components/QueuePanel.vue
new file mode 100644
index 0000000..5f3f26b
--- /dev/null
+++ b/src/views/ecg/doctor/components/QueuePanel.vue
@@ -0,0 +1,39 @@
+<script setup lang="ts">
+import {defineComponent, PropType} from "vue";
+import { queueApi, queueVO } from '@/api/ecg/queue'
+import {DICT_TYPE} from "@/utils/dict";
+
+defineComponent({
+ name: 'QueuePanel'
+})
+
+const props = defineProps({
+ queue: {
+ type: Array as PropType<queueVO[]>,
+ required: true
+ }
+ /*,
+ modelValue: {
+ type: Object as PropType<RoomVO>,
+ required: true
+ }
+*/
+})
+
+</script>
+
+<template>
+<div v-for="(item, index) in queue" :key="index">
+ {{item.patName}}
+ {{item.patGender==1 ? "鐢�" : "濂�"}}
+ {{item.roomId}}
+ {{item.roomName}}
+ {{item.bedNo}}
+ <dict-tag :type="DICT_TYPE.ECG_CHECK_TYPE" :value="item.bookCheckType" />
+ <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="item.status" />
+</div>
+</template>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/src/views/ecg/doctor/components/TitlePanel.vue b/src/views/ecg/doctor/components/TitlePanel.vue
new file mode 100644
index 0000000..aab19ad
--- /dev/null
+++ b/src/views/ecg/doctor/components/TitlePanel.vue
@@ -0,0 +1,42 @@
+<script setup lang="ts">
+import {defineComponent, PropType} from "vue";
+import {useUserStore} from "@/store/modules/user";
+import {RoomBedVO} from "@/api/ecg/doctor";
+
+const userStore = useUserStore();
+
+defineComponent({
+ name: 'TitlePanel'
+})
+
+const roomBedVO: RoomBedVO = {
+ roomId: userStore.room.roomId,
+ bedNo: userStore.room.bedNo
+}
+
+const props = defineProps({
+ room: {
+ type: String,
+ required: true
+ }
+ /*,
+ bedList: {
+ type: Array as PropType<RoomVO[]>,
+ required: true
+ },
+ modelValue: {
+ type: Object as PropType<RoomVO>,
+ required: true
+ }
+*/
+})
+
+</script>
+
+<template>
+宸插氨璇妠{10}} 鍑嗗涓瓄{3}} 杩囧彿{{2}} 鎺掗槦涓瓄{100}} 璇婂{{roomBedVO.roomId}} 宸ヤ綅{{roomBedVO.bedNo}}
+</template>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/src/views/ecg/doctor/index.vue b/src/views/ecg/doctor/index.vue
new file mode 100644
index 0000000..d2fe88a
--- /dev/null
+++ b/src/views/ecg/doctor/index.vue
@@ -0,0 +1,55 @@
+<script setup lang="ts">
+import TitlePanel from "@/views/ecg/doctor/components/TitlePanel.vue";
+import QueuePanel from "@/views/ecg/doctor/components/QueuePanel.vue";
+import { DoctorApi, RoomBedVO } from '@/api/ecg/doctor';
+import {useUserStore} from "@/store/modules/user";
+import {queueVO} from "@/api/ecg/queue";
+
+const userStore = useUserStore();
+
+const roomBedVO: RoomBedVO = {
+ roomId: userStore.room.roomId,
+ bedNo: userStore.room.bedNo
+}
+
+const list = ref<queueVO[]>([])
+
+const nextPatient = async () => {
+ const data = await DoctorApi.nextPatient(roomBedVO)
+ list.value = data
+}
+
+const finishPatient = async () => {
+
+}
+
+/** 鍒濆鍖� **/
+onMounted(() => {
+ nextPatient()
+})
+
+</script>
+
+<template>
+ <el-container>
+ <el-header style="background-color: var(--el-color-primary-light-7); font-size: 24px">
+ <TitlePanel room="A208"/>
+ </el-header>
+ <el-container>
+ <el-main>
+ 瑁呮満鐣岄潰
+ </el-main>
+ <el-aside width="300px" style="background-color: var(--el-color-primary-light-7);">
+ <QueuePanel :queue="list"/>
+ </el-aside>
+ </el-container>
+ <el-container style="justify-content: center;">
+ <el-button type="primary" @click="finishPatient">瀹屾垚</el-button>
+ <el-button type="primary" @click="nextPatient">涓嬩竴浣�</el-button>
+ </el-container>
+ </el-container>
+</template>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/src/views/ecg/room/RoomLoginSelect.vue b/src/views/ecg/room/RoomLoginSelect.vue
index 633abb0..8c30904 100644
--- a/src/views/ecg/room/RoomLoginSelect.vue
+++ b/src/views/ecg/room/RoomLoginSelect.vue
@@ -16,10 +16,14 @@
import {useUserStore} from "@/store/modules/user";
import {CACHE_KEY, useCache} from "@/hooks/web/useCache";
import {ElMessage} from "element-plus";
-const { currentRoute, push } = useRouter()
+import {isStringEmpty} from "@/utils/stringUtil"
+
+const { push } = useRouter()
const { wsCache } = useCache()
defineOptions({ name: 'RoomLoginSelect' })
+
+const route = useRoute();
const userStore = useUserStore()
@@ -52,7 +56,10 @@
}
userStore.setRoomInfoAction(curSel.value)
- push({ path: "/"})
+ if (isStringEmpty(route.redirectedFrom?.fullPath))
+ push({ path: "/"})
+ else
+ push({ path: route.redirectedFrom?.fullPath})
}
const test = () => {
--
Gitblit v1.9.3