From d79ce11fcd47db138764557d214f4ea2169fb90a Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期五, 20 六月 2025 18:05:38 +0800 Subject: [PATCH] 维护 --- src/views/ecg/appointment/AppointmentForm.vue | 142 ++++++++++++++++++++++++++++++----------------- 1 files changed, 91 insertions(+), 51 deletions(-) diff --git a/src/views/ecg/appointment/AppointmentForm.vue b/src/views/ecg/appointment/AppointmentForm.vue index a1a18ed..d1ad4d0 100644 --- a/src/views/ecg/appointment/AppointmentForm.vue +++ b/src/views/ecg/appointment/AppointmentForm.vue @@ -1,16 +1,21 @@ <template> <Dialog width="60%" :title="dialogTitle" v-model="dialogVisible"> <el-form - ref="formRef" - :model="formData" - :rules="formRules" - label-width="100px" - v-loading="formLoading" + 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="璇疯緭鍏ユ偅鑰呯紪鍙�" /> + <el-input + v-model="formData.patId" + placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" + clearable + @input="searchBookInfo" + /> </el-form-item> </el-col> <el-col :span="12"> @@ -24,9 +29,9 @@ <el-form-item label="鎮h�呮�у埆" prop="patGender"> <el-radio-group v-model="formData.patGender"> <el-radio - v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" - :key="dict.value" - :label="dict.value" + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" + :key="dict.value" + :value="dict.value" > {{ dict.label }} </el-radio> @@ -43,21 +48,21 @@ <el-col :span="12"> <el-form-item label="棰勭害鏃ユ湡" prop="bookDate"> <el-date-picker - v-model="formData.bookDate" - type="date" - value-format="x" - placeholder="閫夋嫨棰勭害鏃ユ湡" + v-model="formData.bookDate" + type="date" + value-format="x" + placeholder="閫夋嫨棰勭害鏃ユ湡" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="棰勭害鏃堕棿娈�" prop="bookTimeslot"> + <el-form-item label="棰勭害鏃堕棿" prop="bookTimeslot"> <el-select v-model="formData.bookTimeslot" placeholder="璇烽�夋嫨棰勭害鏃堕棿娈�"> <el-option - v-for="dict in getIntDictOptions(DICT_TYPE.ECG_BOOK_TIMESLOT)" - :key="dict.value" - :label="dict.label" - :value="dict.value" + v-for="dict in getIntDictOptions(DICT_TYPE.ECG_BOOK_TIMESLOT)" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -65,13 +70,13 @@ </el-row> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="棰勭害妫�鏌ョ被鍨�" prop="bookCheckType"> - <el-select v-model="formData.bookCheckType" placeholder="璇烽�夋嫨棰勭害妫�鏌ョ被鍨�"> + <el-form-item label="妫�鏌ョ被鍨�" prop="bookCheckType"> + <el-select v-model="formData.bookCheckType" placeholder="璇烽�夋嫨妫�鏌ョ被鍨�"> <el-option - v-for="dict in checkTypeStore.getCheckTypeOptions()" - :key="dict.value" - :label="dict.label" - :value="dict.value" + v-for="dict in checkTypeStore.getCheckTypeOptions()" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -79,10 +84,10 @@ <el-col :span="12"> <el-form-item label="鎮h�呯敓鏃�" prop="patBirthday"> <el-date-picker - v-model="formData.patBirthday" - type="date" - value-format="x" - placeholder="閫夋嫨鎮h�呯敓鏃�" + v-model="formData.patBirthday" + type="date" + value-format="x" + placeholder="閫夋嫨鎮h�呯敓鏃�" /> </el-form-item> </el-col> @@ -113,25 +118,25 @@ </el-row> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="鎮h�呮墍鍦ㄧ瀹や唬鐮�" prop="patDeptCode"> - <el-input v-model="formData.patDeptCode" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ瀹や唬鐮�" /> + <el-form-item label="绉戝浠g爜" prop="patDeptCode"> + <el-input v-model="formData.patDeptCode" placeholder="璇疯緭鍏ョ瀹や唬鐮�" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鎮h�呮墍鍦ㄧ瀹ゅ悕绉�" prop="patDeptDesc"> - <el-input v-model="formData.patDeptDesc" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ瀹ゅ悕绉�" /> + <el-form-item label="绉戝鍚嶇О" prop="patDeptDesc"> + <el-input v-model="formData.patDeptDesc" placeholder="璇疯緭鍏ョ瀹ゅ悕绉�" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="鎮h�呮墍鍦ㄧ梾鍖轰唬鐮�" prop="patWardCode"> - <el-input v-model="formData.patWardCode" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ梾鍖轰唬鐮�" /> + <el-form-item label="鐥呭尯浠g爜" prop="patWardCode"> + <el-input v-model="formData.patWardCode" placeholder="璇疯緭鍏ョ梾鍖轰唬鐮�" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鎮h�呮墍鍦ㄧ梾鍖哄悕绉�" prop="patWardDesc"> - <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ梾鍖哄悕绉�" /> + <el-form-item label="鐥呭尯鍚嶇О" prop="patWardDesc"> + <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ョ梾鍖哄悕绉�" /> </el-form-item> </el-col> </el-row> @@ -142,10 +147,8 @@ </el-form-item> </el-col> </el-row> - <el-form-item label="宸蹭粯娆炬爣璁�" prop="paid"> - <el-checkbox v-model="formData.paid" :true-label=1 :false-label=0> - 宸蹭粯娆� - </el-checkbox> + <el-form-item label="浠樻鏍囪" prop="paid"> + <el-checkbox v-model="formData.paid" :true-label="1" :false-label="0"> 宸蹭粯娆� </el-checkbox> </el-form-item> </el-form> <template #footer> @@ -155,14 +158,15 @@ </Dialog> </template> <script setup lang="ts"> -import {DICT_TYPE, getIntDictOptions} from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment' -import {useCheckTypeStore} from "@/store/modules/checkType"; +import { useCheckTypeStore } from '@/store/modules/checkType' +import { getCheckTypeName } from '@/utils/checkTypeFormatter' /** 棰勭害 琛ㄥ崟 */ defineOptions({ name: 'AppointmentForm' }) -const checkTypeStore = useCheckTypeStore(); +const checkTypeStore = useCheckTypeStore() const { t } = useI18n() // 鍥介檯鍖� const message = useMessage() // 娑堟伅寮圭獥 @@ -190,13 +194,13 @@ bookDate: new Date().getTime(), bookTimeslot: 9000930, bookCheckType: 100, //甯歌妫�鏌� - paid: 0, + paid: 0 }) const formRules = reactive({ patId: [{ required: true, message: '鎮h�呯紪鍙蜂笉鑳戒负绌�', trigger: 'blur' }], patName: [{ required: true, message: '鎮h�呭鍚嶄笉鑳戒负绌�', trigger: 'blur' }], patGender: [{ required: true, message: '鎮h�呮�у埆涓嶈兘涓虹┖', trigger: 'blur' }], - bookId: [{ required: true, message: '棰勭害缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + // bookId: [{ required: true, message: '棰勭害缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], bookDate: [{ required: true, message: '棰勭害鏃ユ湡涓嶈兘涓虹┖', trigger: 'blur' }], bookTimeslot: [{ required: true, message: '棰勭害妫�鏌ユ椂闂存涓嶈兘涓虹┖', trigger: 'blur' }], bookCheckType: [{ required: true, message: '棰勭害妫�鏌ョ被鍨嬩笉鑳戒负绌�', trigger: 'change' }] @@ -219,10 +223,25 @@ } } } -defineExpose({ open }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥 +const openByQueue = async (type: string, patId: string, checkType: number) => { + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + formType.value = type + resetForm() + // 淇敼鏃讹紝璁剧疆鏁版嵁 + if (patId) { + formLoading.value = true + try { + formData.value = await AppointmentApi.getCurAppointmentByPatIdAndCheckType(patId, checkType) + } finally { + formLoading.value = false + } + } +} +defineExpose({ open, openByQueue }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥 /** 鎻愪氦琛ㄥ崟 */ -const emit = defineEmits(['success']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� +const emit = defineEmits(['event_appointment_success']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� const submitForm = async () => { // 鏍¢獙琛ㄥ崟 await formRef.value.validate() @@ -232,14 +251,16 @@ const data = formData.value as unknown as AppointmentVO if (formType.value === 'create') { await AppointmentApi.createAppointment(data) + // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 + emit('event_appointment_success') message.success(t('common.createSuccess')) - } else { + } else if (formType.value === 'update') { await AppointmentApi.updateAppointment(data) + // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 + emit('event_appointment_success') message.success(t('common.updateSuccess')) } dialogVisible.value = false - // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢 - emit('success') } finally { formLoading.value = false } @@ -265,8 +286,27 @@ bookTime: undefined, bookDate: new Date().getTime(), bookTimeslot: 9000930, - bookCheckType: checkTypeStore.getCheckTypeName(100) + bookCheckType: getCheckTypeName(100), + paid: 0 } formRef.value?.resetFields() } + +const searchBookInfo = async () => { + const tmpPatId = formData.value.patId + if (null == tmpPatId || '' === tmpPatId) return + + const data = await AppointmentApi.queryAppointmentFromHis(tmpPatId) // 瀵瑰簲鏁版嵁搴撲腑 pat_id + console.info(data) + if (null !== data) { + formData.value = data + return + } + + ElNotification({ + title: '娓╅Θ鎻愮ず', + message: '娌℃湁寮�鍗曚俊鎭�', + type: 'warning' + }) +} </script> -- Gitblit v1.9.3