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