From f030d8a9607cef32ee41e01d96817c7e47681602 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期五, 30 五月 2025 15:18:47 +0800 Subject: [PATCH] 11 --- src/views/ecg/appointment/AppointmentForm.vue | 92 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 70 insertions(+), 22 deletions(-) diff --git a/src/views/ecg/appointment/AppointmentForm.vue b/src/views/ecg/appointment/AppointmentForm.vue index 3fdc288..64a4759 100644 --- a/src/views/ecg/appointment/AppointmentForm.vue +++ b/src/views/ecg/appointment/AppointmentForm.vue @@ -10,7 +10,7 @@ <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"> @@ -26,7 +26,7 @@ <el-radio v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" :key="dict.value" - :label="dict.value" + :value="dict.value" > {{ dict.label }} </el-radio> @@ -51,7 +51,7 @@ </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)" @@ -65,10 +65,10 @@ </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 getIntDictOptions(DICT_TYPE.ECG_CHECK_TYPE)" + v-for="dict in checkTypeStore.getCheckTypeOptions()" :key="dict.value" :label="dict.label" :value="dict.value" @@ -113,25 +113,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,6 +142,11 @@ </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> </el-form> <template #footer> <el-button @click="submitForm" type="primary" :disabled="formLoading">纭� 瀹�</el-button> @@ -152,9 +157,13 @@ <script setup lang="ts"> import {DICT_TYPE, getIntDictOptions} from '@/utils/dict' import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment' +import {useCheckTypeStore} from "@/store/modules/checkType"; +import {getCheckTypeName} from "@/utils/checkTypeFormatter"; /** 棰勭害 琛ㄥ崟 */ defineOptions({ name: 'AppointmentForm' }) + +const checkTypeStore = useCheckTypeStore(); const { t } = useI18n() // 鍥介檯鍖� const message = useMessage() // 娑堟伅寮圭獥 @@ -181,13 +190,14 @@ bookTime: undefined, bookDate: new Date().getTime(), bookTimeslot: 9000930, - bookCheckType: 10 + bookCheckType: 100, //甯歌妫�鏌� + 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' }] @@ -210,10 +220,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() @@ -223,14 +248,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 } @@ -256,8 +283,29 @@ bookTime: undefined, bookDate: new Date().getTime(), bookTimeslot: 9000930, - bookCheckType: 10 + 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