From 438d1b156d1eb038bb54ad92cb12a6bf28889011 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期五, 06 九月 2024 17:57:01 +0800 Subject: [PATCH] 拆装机功能 --- src/views/ecg/appointment/AppointmentConfirm.vue | 1 src/views/ecg/doctor/index.vue | 23 +++++++ src/views/ecg/doctor/components/DevRentPanel.vue | 147 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+), 3 deletions(-) diff --git a/src/views/ecg/appointment/AppointmentConfirm.vue b/src/views/ecg/appointment/AppointmentConfirm.vue index 38dd2f9..95f981c 100644 --- a/src/views/ecg/appointment/AppointmentConfirm.vue +++ b/src/views/ecg/appointment/AppointmentConfirm.vue @@ -179,7 +179,6 @@ message.info(data) } - /** 閲嶇疆琛ㄥ崟 */ const resetForm = () => { formData.value = { diff --git a/src/views/ecg/doctor/components/DevRentPanel.vue b/src/views/ecg/doctor/components/DevRentPanel.vue new file mode 100644 index 0000000..4a7d045 --- /dev/null +++ b/src/views/ecg/doctor/components/DevRentPanel.vue @@ -0,0 +1,147 @@ +<template> + 褰撳墠鎮h��: {{patient.patId}} {{patient.patName}} + <el-form + ref="formRef" + :model="formData" + :rules="formRules" + label-width="100px" + v-loading="formLoading" + > + <el-form-item label="璁惧缂栧彿" prop="devId"> + <el-input v-model="formData.devId" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" /> + </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-form-item label="鎷嗘満鏃堕棿" prop="returnTime"> + <el-date-picker + v-model="formData.returnTime" + type="date" + value-format="x" + placeholder="閫夋嫨鎷嗘満鏃堕棿" + /> + </el-form-item> + <el-form-item label="骞叉壈鏁�" prop="interference"> + <el-input v-model="formData.interference" placeholder="璇疯緭鍏ュ共鎵版暟" /> + </el-form-item> + <el-form-item label="鍩虹嚎绮�" prop="baseline"> + <el-input v-model="formData.baseline" placeholder="璇疯緭鍏ュ熀绾跨矖" /> + </el-form-item> + <el-form-item label="鑴辩" prop="detachment"> + <el-input v-model="formData.detachment" placeholder="璇疯緭鍏ヨ劚绂�" /> + </el-form-item> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="formData.remark" placeholder="璇疯緭鍏ュ娉�" /> + </el-form-item> + </el-form> + <el-button @click="submitForm" type="primary" :disabled="formLoading">纭� 瀹�</el-button> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> +</template> +<script setup lang="ts"> +import {defineComponent, PropType} from "vue"; +import { DevRentApi, DevRentVO } from '@/api/ecg/devrent' +import {QueueVO} from "@/api/ecg/queue"; + +/** 瑁呮満鎷嗘満 琛ㄥ崟 */ +defineComponent({ name: 'DevRentPanel' }) + +const emit = defineEmits(['success']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� + +const props = defineProps({ + patient: { + type: Object as PropType<QueueVO>, + required: true + } +}) + +const { t } = useI18n() // 鍥介檯鍖� +const message = useMessage() // 娑堟伅寮圭獥 + +const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀� + +const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤 +const formType = ref('create') // 琛ㄥ崟鐨勭被鍨嬶細create - 鏂板锛泆pdate - 淇敼 +const formData = ref({ + id: undefined, + devId: undefined, + patId: props.patient.patId, + patName: props.patient.patName, + rentTime: undefined, + returnTime: undefined, + interference: undefined, + baseline: undefined, + detachment: undefined, + remark: undefined +}) +const formRules = reactive({ + devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + patId: [{ required: true, message: '鎮h�呯紪鍙蜂笉鑳戒负绌�', trigger: 'blur' }], + patName: [{ required: true, message: '鎮h�呭悕绉颁笉鑳戒负绌�', trigger: 'blur' }] +}) +const formRef = ref() // 琛ㄥ崟 Ref + +/** 鎵撳紑寮圭獥 */ +const open = async (type: string, id?: number) => { + dialogVisible.value = true + formType.value = type + resetForm() + // 淇敼鏃讹紝璁剧疆鏁版嵁 + if (id) { + formLoading.value = true + try { + formData.value = await DevRentApi.getDevRent(id) + } finally { + formLoading.value = false + } + } +} +defineExpose({ open }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥 + +/** 鎻愪氦琛ㄥ崟 */ + +const submitForm = async () => { + // 鏍¢獙琛ㄥ崟 + await formRef.value.validate() + // 鎻愪氦璇锋眰 + formLoading.value = true + try { + const data = formData.value as unknown as DevRentVO + data.patId = props.patient.patId + data.patName = props.patient.patName + if (formType.value === 'create') { + await DevRentApi.createDevRent(data) + message.success(t('common.createSuccess')) + } else { + await DevRentApi.updateDevRent(data) + message.success(t('common.updateSuccess')) + } + dialogVisible.value = false + // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 + emit('success') + } finally { + formLoading.value = false + } +} + +/** 閲嶇疆琛ㄥ崟 */ +const resetForm = () => { + formData.value = { + id: undefined, + devId: undefined, + patId: undefined, + patName: undefined, + rentTime: undefined, + returnTime: undefined, + interference: undefined, + baseline: undefined, + detachment: undefined, + remark: undefined + } + formRef.value?.resetFields() +} +</script> \ No newline at end of file diff --git a/src/views/ecg/doctor/index.vue b/src/views/ecg/doctor/index.vue index 1aeba57..4358d23 100644 --- a/src/views/ecg/doctor/index.vue +++ b/src/views/ecg/doctor/index.vue @@ -5,6 +5,7 @@ import {useUserStore} from "@/store/modules/user"; import {QueueVO} from "@/api/ecg/queue"; import {ElNotification} from "element-plus"; +import DevRentPanel from "@/views/ecg/doctor/components/DevRentPanel.vue"; const userStore = useUserStore(); @@ -13,6 +14,11 @@ roomName: null, bedNo: null } + +const onStagePatient = ref<QueueVO>({ + bedNo: "", bookCheckType: 0, bookTimeslot: 0, expired: 0, id: 0, jumpFlag: 0, passed: 0, + patGender: 0, patId: "1", patName: "OKK", roomId: 0, roomName: "", seqNum: 0, status: 0 +}) const patientStat = ref<PatientStatisticVO>({ finishedNum: 0, @@ -50,6 +56,14 @@ } } +const getOnstagePatient = () => { + const tempPatient : QueueVO | undefined = patientList.value.find(item => item.status === 30) + if (tempPatient !== undefined) { + onStagePatient.value= tempPatient + //onStagePatient.value.patName = tempPatient.patName + } +} + const initLoad = async () => { if (roomBedVO.roomId == null) { ElNotification.error({ @@ -61,6 +75,7 @@ } patientList.value = await DoctorApi.getPatientList(roomBedVO) + getOnstagePatient() patientStat.value = await DoctorApi.getPatientStatistic(roomBedVO) const queueVO2 = await DoctorApi.bedDoctorGet(roomBedVO) if (queueVO2.status === 20) @@ -85,7 +100,7 @@ } const doctorTimer = () => { - console.log('doctor ...') + console.log('doctorTimer ...') initLoad() if (timerRunFlag) setTimeout(doctorTimer, 5000) // five seconds @@ -119,6 +134,10 @@ timerRunFlag = false }) +const onEvent = () => { + console.info("onDevRentPanelEvent...") +} + </script> <template> @@ -128,7 +147,7 @@ </el-header> <el-container> <el-main> - 瑁呮満鐣岄潰 + <DevRentPanel :patient="onStagePatient" @success="onEvent"/> </el-main> <el-aside width="300px" style="background-color: var(--el-color-primary-light-7);"> <QueuePanel :queue="patientList"/> -- Gitblit v1.9.3