From e54cd52d2621189e9a192e2fe47ecc241cfc69fd Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期六, 12 十月 2024 11:42:18 +0800 Subject: [PATCH] 装机界面 step 1 --- src/views/ecg/doctor/DevInstall.vue | 450 ++++++++++++------------------- src/views/ecg/doctor/index.vue | 6 src/views/ecg/doctor/components/TitleInstallPanel.vue | 44 +++ src/api/ecg/doctor/index.ts | 7 src/views/ecg/doctor/components/DevInstallPanel.vue | 294 +++++++++++++++++++++ 5 files changed, 522 insertions(+), 279 deletions(-) diff --git a/src/api/ecg/doctor/index.ts b/src/api/ecg/doctor/index.ts index 7adea64..74f9894 100644 --- a/src/api/ecg/doctor/index.ts +++ b/src/api/ecg/doctor/index.ts @@ -73,11 +73,16 @@ return await request.get({ url: `/ecg/doctor/call-again`, params }) }, - // 鍙栧垵濮嬫偅鑰呭垪琛� + // 鍙� 甯歌妫�鏌ャ�侀鐢� 鎮h�呭垪琛� getPatientList: async (params: RoomBedVO) => { return await request.get({ url: `/ecg/doctor/get-patient-list`, params }) }, + // 鍙� 宸查鐢� 鎮h�呭垪琛� + getReceivedPatientList: async (params: RoomBedVO) => { + return await request.get({ url: `/ecg/doctor/get-received-patient-list`, params }) + }, + // 鍙栨偅鑰呯粺璁� getPatientStatistic: async (params: RoomBedVO) => { return await request.get({ url: `/ecg/doctor/get-patient-statistic`, params }) diff --git a/src/views/ecg/doctor/DevInstall.vue b/src/views/ecg/doctor/DevInstall.vue index bfa5146..970f8af 100644 --- a/src/views/ecg/doctor/DevInstall.vue +++ b/src/views/ecg/doctor/DevInstall.vue @@ -1,294 +1,194 @@ -<template> - <el-form - ref="formRef" - :model="formData" - :rules="formRules" - label-width="100px" - v-loading="formLoading" - > - <el-row :gutter="20"> - <el-col :span="12"> - <el-form-item label="鎮h�呯紪鍙�" prop="patId"> - <el-input v-model="formData.patId" placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" @input="getRentInfoByPatId" /> - </el-form-item> - <el-form-item label="鎮h�呭悕绉�" prop="patName"> - <el-input v-model="formData.patName" placeholder="璇疯緭鍏ユ偅鑰呭悕绉�" /> - </el-form-item> - <el-form-item label="鎮h�呮弿杩�" prop="patDeptDesc"> - 绉戝: {{formData.patDeptDesc}} 鐥呭尯: {{formData.patWardDesc}} 搴婁綅: {{formData.patBedNo}} - </el-form-item> - <el-form-item label="瑁呮満鏃堕棿" prop="rentTime"> - <el-date-picker - v-model="formData.rentTime" - type="date" - value-format="x" - placeholder="閫夋嫨瑁呮満鏃堕棿" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="璁惧缂栧彿" prop="devId"> - <el-input v-model="formData.devId" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" @input="getDevInfo"/> - </el-form-item> - <el-form-item label="璁惧鎻忚堪" prop=""> - <span v-if="formData.brand !== null"> {{formData.brand}} </span> - {{" "}} - <span v-if="formData.model !== null"> {{formData.model}} </span> - </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input v-model="formData.remark" placeholder="璇疯緭鍏ュ娉�" /> - </el-form-item> - </el-col> - </el-row> - </el-form> - <el-button @click="submitForm" type="primary" :disabled="formLoading">瑁呮満瀹屾垚</el-button> - <el-button @click="resetForm()">閲� 缃�</el-button> - <el-button @click="cancelInstall" :disabled="formLoading">鏀惧純瑁呮満</el-button> - - <!-- 鍖荤敓瑁呮満鍒楄〃 --> - <ContentWrap> - <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="onRowClick" > - <el-table-column label="id" align="center" prop="id" /> - <el-table-column label="瑁呮満鎯呭喌" align="center" prop="lost" > - <template #default="scope"> - <span v-if="scope.row.jobType === 10">"宸茶鏈�"</span> - <span v-if="scope.row.jobType === 35">"宸叉斁寮�"</span> - </template> - </el-table-column> -<!-- <el-table-column label="浣滀笟绫诲瀷" align="center" prop="jobType" />--> -<!-- <el-table-column label="鍖荤敓缂栧彿" align="center" prop="docId" />--> - <el-table-column label="鍖荤敓鍚嶇О" align="center" prop="docName" /> - <el-table-column label="璁惧缂栧彿" align="center" prop="devId" /> - <el-table-column label="鎮h�呯紪鍙�" align="center" prop="patId" /> - <el-table-column label="鎮h�呭悕绉�" align="center" prop="patName" /> - <el-table-column - label="浣滀笟鏃堕棿" - align="center" - prop="jobTime" - :formatter="dateFormatter" - width="180px" - /> - <el-table-column label="浣滀笟姒傝" align="center" prop="summary" /> - <el-table-column label="澶囨敞" align="center" prop="remark" /> - <el-table-column - label="鍒涘缓鏃堕棿" - align="center" - prop="createTime" - :formatter="dateFormatter" - width="180px" - /> - <el-table-column label="鎿嶄綔" align="center" min-width="120px"> - <template #default="scope"> - <el-button - link - type="primary" - @click="openForm('update', scope.row.id)" - v-hasPermi="['ecg:job-record:update']" - > - 缂栬緫 - </el-button> - <el-button - link - type="danger" - @click="handleDelete(scope.row.id)" - v-hasPermi="['ecg:job-record:delete']" - > - 鍒犻櫎 - </el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉 --> - <Pagination - :total="total" - v-model:page="queryParams.pageNo" - v-model:limit="queryParams.pageSize" - @pagination="getList" - /> - </ContentWrap> - -</template> - <script setup lang="ts"> -import { DevRentApi, DevRentVO } from '@/api/ecg/devrent' -import {dateFormatter} from "@/utils/formatTime"; -import {JobRecordApi, JobRecordVO} from "@/api/ecg/jobrecord"; -import {isStringEmpty} from "@/utils/stringUtil"; -import {curDayEnd, curDayStart} from "@/utils/dateUtil"; -import {DeviceApi} from "@/api/ecg/devmanage"; +import TitleInstallPanel from "@/views/ecg/doctor/components/TitleInstallPanel.vue"; +import DevInstallPanel from "@/views/ecg/doctor/components/DevInstallPanel.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"; -/** 瑁呮満 琛ㄥ崟 */ -defineOptions({ name: 'DevrInstall' }) +const userStore = useUserStore(); -const emit = defineEmits(['success-install']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� - -const { t } = useI18n() // 鍥介檯鍖� -const message = useMessage() // 娑堟伅寮圭獥 - -const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀� - -const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤 - -const formData = ref({}) - -const formRules = reactive({ - // devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], - rentTime: [{ required: true, message: '璇烽�夋嫨瑁呮満鏃ユ湡', trigger: 'blur' }], +const roomBedVO = ref<RoomBedVO>({ + roomId: null, + roomName: null, + bedNo: null }) -const formRef = ref() // 琛ㄥ崟 Ref -/** 鎻愪氦琛ㄥ崟 */ -const submitForm = async () => { - // 鏍¢獙琛ㄥ崟 - await formRef.value.validate() - // 鎻愪氦璇锋眰 - formLoading.value = true - try { - const data = formData.value as unknown as DevRentVO - //await DevRentApi.updateDevRent(data) - await DevRentApi.devInstall(data) - message.success(t('鎿嶄綔鎴愬姛')) - dialogVisible.value = false - // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 - emit('success-install') - resetForm() - getList() - } finally { - formLoading.value = false - } -} - -/** 閲嶇疆琛ㄥ崟 */ -const resetForm = () => { - formData.value = { - id: undefined, - devId: undefined, - patId: undefined, - patName: undefined, - patDeptCode: undefined, - patDeptDesc: undefined, - patWardCode: undefined, - patWardDesc: undefined, - patBedNo: undefined, - rentTime: new Date().getTime(), - returnTime: undefined, - interference: undefined, - baseline: undefined, - detachment: undefined, - remark: undefined, - category: '', - brand: '', - model: '', - } - formRef.value?.resetFields() -} - -const getDevInfo = async () => { - if (isStringEmpty(formData.value.devId)) { - formData.value.category = "" - formData.value.brand = "" - formData.value.model = "" - return - } - - const data = await DeviceApi.getDeviceByDevId(formData.value.devId!) - console.info( data ) - formData.value.category = data === null ? "" : data.category - formData.value.brand = data === null ? "" : data.brand - formData.value.model = data === null ? "" : data.model -} - -/* -const getRentInfoByDevId = () => { - const tempDevId = formData.value.devId; - resetForm() - if (isStringEmpty(tempDevId)) - return - - formData.value.devId = tempDevId; - getRentInfo() -} -*/ - -const getRentInfoByPatId = () => { - const tempPatId = formData.value.patId; - resetForm() - if (isStringEmpty(tempPatId)) - return - - formData.value.patId = tempPatId; - getRentInfo() -} - -const getRentInfo = async () => { - const data = await DevRentApi.getReadyRent(formData.value) - if (null === data) - return - - formData.value = data - if (data.returnTime === null) - data.returnTime = new Date().getTime() -} - - -const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑 -const list = ref<JobRecordVO[]>([]) // 鍒楄〃鐨勬暟鎹� -const total = ref(0) // 鍒楄〃鐨勬�婚〉鏁� -const queryParams = reactive({ - pageNo: 1, - pageSize: 10, - jobType: [10, 35], - docId: undefined, - docName: undefined, - devId: undefined, - patId: undefined, - patName: undefined, - jobTime: [curDayStart(), curDayEnd()], - summary: undefined, - remark: undefined, - createTime: [] +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 }) -/** 鏌ヨ鍒楄〃 */ -const getList = async () => { - loading.value = true + +const patientStat = ref<PatientStatisticVO>({ + finishedNum: 0, + readyNum: 0, + passedNum: 0, + queuingNum: 0 +}) + +const state = ref<boolean>() + +const patientList = ref<QueueVO[]>([]) + +let timerRunFlag : boolean = false +const bedControlFlag = ref<boolean>(true); +const finishFlag = ref<boolean>(true); +const passFlag = ref<boolean>(true); + +const finishNextPatient = async () => { + finishFlag.value = true try { - const data = await JobRecordApi.getJobRecordDoctorPage(queryParams) - list.value = data.list - total.value = data.total + patientList.value = await DoctorApi.finishInstallNextPatient(roomBedVO.value) + patientStat.value = await DoctorApi.getPatientStatistic(roomBedVO.value) + getOnstagePatient() } finally { - loading.value = false + finishFlag.value = false } } -const onRowClick = (cur) => { - if (cur !== null) - getSelectedRent( cur.rentId ) -} - -const getSelectedRent = async (rentId) => { - formData.value = await DevRentApi.getDevRent(rentId) -} - -const cancelInstall = async () => { - const data = formData.value as unknown as DevRentVO - if (formData.value.id === null || formData.value.id === undefined) { - const result = await DevRentApi.devInstallCancel(data) - formData.value.id = result - message.success(t('鎿嶄綔鎴愬姛')) - } else { - await DevRentApi.devInstallCancel(data) - message.success(t('鎿嶄綔鎴愬姛')) +const passNextPatient = async () => { + passFlag.value = true + try { + patientList.value = await DoctorApi.passNextPatient(roomBedVO.value) + patientStat.value = await DoctorApi.getPatientStatistic(roomBedVO.value) + getOnstagePatient() + } finally { + passFlag.value = false } - // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 - emit('success-install') - resetForm() - getList() +} + +const callAgain = async () => { + await DoctorApi.callAgainPatient(roomBedVO.value) +} + +const getOnstagePatient = () => { + const tempPatient : QueueVO | undefined = patientList.value.find(item => item.status === 30) + if (undefined === tempPatient) { + setOnStagePatient(undefined) + } else if (tempPatient.patId !== onStagePatient.value.patId) { + onStagePatient.value= tempPatient + setOnStagePatient(tempPatient) + } +} + +const initLoad = async () => { + if (roomBedVO.value.roomId == null) { + ElNotification.error({ + message: '璇烽噸鏂板氨搴�!', + type: 'info', + duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms + }) + return + } + + patientList.value = await DoctorApi.getReceivedPatientList(roomBedVO.value) + getOnstagePatient() + patientStat.value = await DoctorApi.getPatientStatistic(roomBedVO.value) + const queueVO2 = await DoctorApi.bedDoctorGet(roomBedVO.value) + if (queueVO2.status === 20) + state.value = true + else if (queueVO2.status === 30) + state.value = false +} + +const bedControl = async () => { + bedControlFlag.value = true + try { + if (state.value) { + await DoctorApi.bedDoctorPause(roomBedVO.value) + state.value = false + } else { + await DoctorApi.bedDoctorResume(roomBedVO.value) + state.value = true + } + } finally { + bedControlFlag.value = false + } +} + +const doctorTimer = () => { + console.log('doctorTimer ...') + initLoad() + if (timerRunFlag) + setTimeout(doctorTimer, 5000) // five seconds } /** 鍒濆鍖� **/ onMounted(() => { - resetForm() - getList() + timerRunFlag = false + bedControlFlag.value = true + finishFlag.value = true + passFlag.value = true + + if (userStore.isSetRoom) { + roomBedVO.value.roomId = userStore.room!.roomId + roomBedVO.value.roomName = userStore.room!.roomName + roomBedVO.value.bedNo = userStore.room!.bedNo + + timerRunFlag = true + doctorTimer() + } else { + roomBedVO.value.roomId = null + roomBedVO.value.bedNo = null + } + + bedControlFlag.value = false + finishFlag.value = false + passFlag.value = false + + console.info( roomBedVO.value ) }) +onUnmounted( () =>{ + timerRunFlag = false +}) + +const onEventDevInstall = () => { + //console.info("onDevInstallPanelEvent...") +} + +const onEventRecallFinish = () => { + initLoad() +} + +/** 鎮h�呭彉鏇存搷浣� */ +const devInstallPanelRef = ref() +const setOnStagePatient = (tempPatient: QueueVO | undefined) => { + devInstallPanelRef.value.setPatient(tempPatient) +} + </script> + +<template> + <el-container> + <el-header style="background-color: var(--el-color-primary-light-7); font-size: 24px"> + <TitleInstallPanel :room="roomBedVO" :patientStatistic="patientStat" /> + </el-header> + <el-container style="height: 100%;"> + <el-main style="border: solid var(--el-color-primary-light-7)"> + <DevInstallPanel ref="devInstallPanelRef" @event_dev_install="onEventDevInstall"/> + </el-main> + <el-aside width="400px" style="border: solid var(--el-color-primary-light-7)"> + <QueuePanel :queue="patientList" @event_RecallFinish="onEventRecallFinish"/> + </el-aside> + </el-container> + <el-container class="right-bottom"> + <el-button :disabled="finishFlag" type="primary" @click="finishNextPatient">鍙彿</el-button> + <el-button :disabled="passFlag" type="primary" @click="passNextPatient">杩囧彿</el-button> + <el-button type="primary" @click="callAgain">閲嶅彨</el-button> + <el-button :disabled="bedControlFlag" type="primary" @click="bedControl">{{state?'鏆傚仠':'鎭㈠'}}</el-button> + </el-container> + </el-container> +</template> + +<style scoped lang="scss"> +.right-bottom { + position: absolute; + bottom: 50px; + right: 100px; + //background-color: #f00; + //color: #fff; + //padding: 10px; +} +</style> diff --git a/src/views/ecg/doctor/components/DevInstallPanel.vue b/src/views/ecg/doctor/components/DevInstallPanel.vue new file mode 100644 index 0000000..442d30e --- /dev/null +++ b/src/views/ecg/doctor/components/DevInstallPanel.vue @@ -0,0 +1,294 @@ +<template> + <el-form + ref="formRef" + :model="formData" + :rules="formRules" + label-width="100px" + v-loading="formLoading" + > + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="鎮h�呯紪鍙�" prop="patId"> + <el-input v-model="formData.patId" placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" @input="getRentInfoByPatId" /> + </el-form-item> + <el-form-item label="鎮h�呭悕绉�" prop="patName"> + <el-input v-model="formData.patName" placeholder="璇疯緭鍏ユ偅鑰呭悕绉�" /> + </el-form-item> + <el-form-item label="鎮h�呮弿杩�" prop="patDeptDesc"> + 绉戝: {{formData.patDeptDesc}} 鐥呭尯: {{formData.patWardDesc}} 搴婁綅: {{formData.patBedNo}} + </el-form-item> + <el-form-item label="瑁呮満鏃堕棿" prop="rentTime"> + <el-date-picker + v-model="formData.rentTime" + type="date" + value-format="x" + placeholder="閫夋嫨瑁呮満鏃堕棿" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁惧缂栧彿" prop="devId"> + <el-input v-model="formData.devId" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" @input="getDevInfo"/> + </el-form-item> + <el-form-item label="璁惧鎻忚堪" prop=""> + <span v-if="formData.brand !== null"> {{formData.brand}} </span> + {{" "}} + <span v-if="formData.model !== null"> {{formData.model}} </span> + </el-form-item> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="formData.remark" placeholder="璇疯緭鍏ュ娉�" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-button @click="submitForm" type="primary" :disabled="formLoading">瑁呮満瀹屾垚</el-button> + <el-button @click="resetForm()">閲� 缃�</el-button> + <el-button @click="cancelInstall" :disabled="formLoading">鏀惧純瑁呮満</el-button> + + <!-- 鍖荤敓瑁呮満鍒楄〃 --> + <ContentWrap> + <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="onRowClick" > + <el-table-column label="id" align="center" prop="id" /> + <el-table-column label="瑁呮満鎯呭喌" align="center" prop="lost" > + <template #default="scope"> + <span v-if="scope.row.jobType === 10">"宸茶鏈�"</span> + <span v-if="scope.row.jobType === 35">"宸叉斁寮�"</span> + </template> + </el-table-column> +<!-- <el-table-column label="浣滀笟绫诲瀷" align="center" prop="jobType" />--> +<!-- <el-table-column label="鍖荤敓缂栧彿" align="center" prop="docId" />--> + <el-table-column label="鍖荤敓鍚嶇О" align="center" prop="docName" /> + <el-table-column label="璁惧缂栧彿" align="center" prop="devId" /> + <el-table-column label="鎮h�呯紪鍙�" align="center" prop="patId" /> + <el-table-column label="鎮h�呭悕绉�" align="center" prop="patName" /> + <el-table-column + label="浣滀笟鏃堕棿" + align="center" + prop="jobTime" + :formatter="dateFormatter" + width="180px" + /> + <el-table-column label="浣滀笟姒傝" align="center" prop="summary" /> + <el-table-column label="澶囨敞" align="center" prop="remark" /> + <el-table-column + label="鍒涘缓鏃堕棿" + align="center" + prop="createTime" + :formatter="dateFormatter" + width="180px" + /> + <el-table-column label="鎿嶄綔" align="center" min-width="120px"> + <template #default="scope"> + <el-button + link + type="primary" + @click="openForm('update', scope.row.id)" + v-hasPermi="['ecg:job-record:update']" + > + 缂栬緫 + </el-button> + <el-button + link + type="danger" + @click="handleDelete(scope.row.id)" + v-hasPermi="['ecg:job-record:delete']" + > + 鍒犻櫎 + </el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉 --> + <Pagination + :total="total" + v-model:page="queryParams.pageNo" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + </ContentWrap> + +</template> + +<script setup lang="ts"> +import { DevRentApi, DevRentVO } from '@/api/ecg/devrent' +import {dateFormatter} from "@/utils/formatTime"; +import {JobRecordApi, JobRecordVO} from "@/api/ecg/jobrecord"; +import {isStringEmpty} from "@/utils/stringUtil"; +import {curDayEnd, curDayStart} from "@/utils/dateUtil"; +import {DeviceApi} from "@/api/ecg/devmanage"; + +/** 瑁呮満 琛ㄥ崟 */ +defineOptions({ name: 'DevrInstall' }) + +const emit = defineEmits(['event_dev_install']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� + +const { t } = useI18n() // 鍥介檯鍖� +const message = useMessage() // 娑堟伅寮圭獥 + +const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀� + +const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤 + +const formData = ref({}) + +const formRules = reactive({ + // devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + rentTime: [{ required: true, message: '璇烽�夋嫨瑁呮満鏃ユ湡', trigger: 'blur' }], +}) +const formRef = ref() // 琛ㄥ崟 Ref + +/** 鎻愪氦琛ㄥ崟 */ +const submitForm = async () => { + // 鏍¢獙琛ㄥ崟 + await formRef.value.validate() + // 鎻愪氦璇锋眰 + formLoading.value = true + try { + const data = formData.value as unknown as DevRentVO + //await DevRentApi.updateDevRent(data) + await DevRentApi.devInstall(data) + message.success(t('鎿嶄綔鎴愬姛')) + dialogVisible.value = false + // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 + emit('event_dev_install') + resetForm() + getList() + } finally { + formLoading.value = false + } +} + +/** 閲嶇疆琛ㄥ崟 */ +const resetForm = () => { + formData.value = { + id: undefined, + devId: undefined, + patId: undefined, + patName: undefined, + patDeptCode: undefined, + patDeptDesc: undefined, + patWardCode: undefined, + patWardDesc: undefined, + patBedNo: undefined, + rentTime: new Date().getTime(), + returnTime: undefined, + interference: undefined, + baseline: undefined, + detachment: undefined, + remark: undefined, + category: '', + brand: '', + model: '', + } + formRef.value?.resetFields() +} + +const getDevInfo = async () => { + if (isStringEmpty(formData.value.devId)) { + formData.value.category = "" + formData.value.brand = "" + formData.value.model = "" + return + } + + const data = await DeviceApi.getDeviceByDevId(formData.value.devId!) + console.info( data ) + formData.value.category = data === null ? "" : data.category + formData.value.brand = data === null ? "" : data.brand + formData.value.model = data === null ? "" : data.model +} + +/* +const getRentInfoByDevId = () => { + const tempDevId = formData.value.devId; + resetForm() + if (isStringEmpty(tempDevId)) + return + + formData.value.devId = tempDevId; + getRentInfo() +} +*/ + +const getRentInfoByPatId = () => { + const tempPatId = formData.value.patId; + resetForm() + if (isStringEmpty(tempPatId)) + return + + formData.value.patId = tempPatId; + getRentInfo() +} + +const getRentInfo = async () => { + const data = await DevRentApi.getReadyRent(formData.value) + if (null === data) + return + + formData.value = data + if (data.returnTime === null) + data.returnTime = new Date().getTime() +} + + +const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑 +const list = ref<JobRecordVO[]>([]) // 鍒楄〃鐨勬暟鎹� +const total = ref(0) // 鍒楄〃鐨勬�婚〉鏁� +const queryParams = reactive({ + pageNo: 1, + pageSize: 10, + jobType: [10, 35], + docId: undefined, + docName: undefined, + devId: undefined, + patId: undefined, + patName: undefined, + jobTime: [curDayStart(), curDayEnd()], + summary: undefined, + remark: undefined, + createTime: [] +}) +/** 鏌ヨ鍒楄〃 */ +const getList = async () => { + loading.value = true + try { + const data = await JobRecordApi.getJobRecordDoctorPage(queryParams) + list.value = data.list + total.value = data.total + } finally { + loading.value = false + } +} + +const onRowClick = (cur) => { + if (cur !== null) + getSelectedRent( cur.rentId ) +} + +const getSelectedRent = async (rentId) => { + formData.value = await DevRentApi.getDevRent(rentId) +} + +const cancelInstall = async () => { + const data = formData.value as unknown as DevRentVO + if (formData.value.id === null || formData.value.id === undefined) { + const result = await DevRentApi.devInstallCancel(data) + formData.value.id = result + message.success(t('鎿嶄綔鎴愬姛')) + } else { + await DevRentApi.devInstallCancel(data) + message.success(t('鎿嶄綔鎴愬姛')) + } + // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 + emit('event_dev_install') + resetForm() + getList() +} + +/** 鍒濆鍖� **/ +onMounted(() => { + resetForm() + getList() +}) + +</script> diff --git a/src/views/ecg/doctor/components/TitleInstallPanel.vue b/src/views/ecg/doctor/components/TitleInstallPanel.vue new file mode 100644 index 0000000..25f9e62 --- /dev/null +++ b/src/views/ecg/doctor/components/TitleInstallPanel.vue @@ -0,0 +1,44 @@ +<script setup lang="ts"> +import {defineComponent, PropType} from "vue"; +import {PatientStatisticVO, RoomBedVO} from "@/api/ecg/doctor"; + +defineComponent({ + name: 'TitlePanel' +}) + +const props = defineProps({ + room: { + type: Object as PropType<RoomBedVO>, + required: true + }, + patientStatistic: { + type: Object as PropType<PatientStatisticVO>, + required: true + } +}) + +onMounted(() => { + console.info(props.room) +}) + +</script> + +<template> +<div class="mytitle"> + <div> + {{room.roomName || ''}} {{room.bedNo || ''}} + </div> + <div> + 宸茶鏈簕{patientStatistic.finishedNum==undefined ? 0 : patientStatistic.finishedNum}} + 宸查鐢▄{patientStatistic.readyNum==undefined ? 0 : patientStatistic.readyNum}} + </div> +</div> + +</template> + +<style scoped lang="scss"> +.mytitle { + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/views/ecg/doctor/index.vue b/src/views/ecg/doctor/index.vue index f62627d..49badb0 100644 --- a/src/views/ecg/doctor/index.vue +++ b/src/views/ecg/doctor/index.vue @@ -151,9 +151,9 @@ } /** 鎮h�呭彉鏇存搷浣� */ -const devInstallPanelRef = ref() +const devReadyPanelRef = ref() const setOnStagePatient = (tempPatient: QueueVO | undefined) => { - devInstallPanelRef.value.setPatient(tempPatient) + devReadyPanelRef.value.setPatient(tempPatient) } </script> @@ -165,7 +165,7 @@ </el-header> <el-container style="height: 100%;"> <el-main style="border: solid var(--el-color-primary-light-7)"> - <DevReadyPanel :room="roomBedVO" ref="devInstallPanelRef" @event_dev_ready="onEventDevReady"/> + <DevReadyPanel :room="roomBedVO" ref="devReadyPanelRef" @event_dev_ready="onEventDevReady"/> </el-main> <el-aside width="400px" style="border: solid var(--el-color-primary-light-7)"> <QueuePanel :queue="patientList" @event_RecallFinish="onEventRecallFinish"/> -- Gitblit v1.9.3