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