From e25465c223a2e63422acfb58414597ca8fc4df09 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 13 十一月 2025 18:01:55 +0800
Subject: [PATCH] 排队异常、小屏适配问题
---
src/views/ecg/appointment/AppointmentForm.vue | 277 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 191 insertions(+), 86 deletions(-)
diff --git a/src/views/ecg/appointment/AppointmentForm.vue b/src/views/ecg/appointment/AppointmentForm.vue
index f10b1fa..7cd3e5e 100644
--- a/src/views/ecg/appointment/AppointmentForm.vue
+++ b/src/views/ecg/appointment/AppointmentForm.vue
@@ -1,5 +1,5 @@
<template>
- <Dialog :title="dialogTitle" v-model="dialogVisible">
+ <Dialog width="60%" :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
@@ -7,85 +7,148 @@
label-width="100px"
v-loading="formLoading"
>
- <el-form-item label="鎮h�呯紪鍙�" prop="patId">
- <el-input v-model="formData.patId" placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" />
- </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="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"
- >
- {{ dict.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="棰勭害鏃ユ湡" prop="bookDate">
- <el-date-picker
- v-model="formData.bookDate"
- type="date"
- value-format="x"
- placeholder="閫夋嫨棰勭害鏃ユ湡"
- />
- </el-form-item>
- <el-form-item label="棰勭害鏃堕棿娈�" prop="bookTimeslot">
- <el-select v-model="formData.bookTimeslot" placeholder="璇烽�夋嫨棰勭害鏃堕棿娈�">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="缂栧彿" prop="patId">
+ <el-input
+ v-model="formData.patId"
+ placeholder="璇疯緭鍏ョ紪鍙�"
+ clearable
+ @input="searchBookInfo"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呭鍚�" prop="patName">
+ <el-input v-model="formData.patName" placeholder="璇疯緭鍏ユ偅鑰呭鍚�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <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"
+ :value="dict.value"
+ >
+ {{ dict.label }}
+ </el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="12">
+ <el-form-item label="棰勭害缂栧彿" prop="bookId">
+ <el-input v-model="formData.bookId" placeholder="璇疯緭鍏ラ绾︾紪鍙�" />
+ </el-form-item>
+ </el-col> -->
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="棰勭害鏃ユ湡" prop="bookDate">
+ <el-date-picker
+ 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-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>
- <el-form-item label="棰勭害妫�鏌ョ被鍨�" prop="bookCheckType">
- <el-select v-model="formData.bookCheckType" placeholder="璇烽�夋嫨棰勭害妫�鏌ョ被鍨�">
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <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)"
- :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>
- <el-form-item label="鎮h�呯敓鏃�" prop="patBirthday">
- <el-date-picker
- v-model="formData.patBirthday"
- type="date"
- value-format="x"
- placeholder="閫夋嫨鎮h�呯敓鏃�"
- />
- </el-form-item>
- <el-form-item label="鎮h�呮墜鏈�" prop="patMobile">
- <el-input v-model="formData.patMobile" placeholder="璇疯緭鍏ユ偅鑰呮墜鏈�" />
- </el-form-item>
- <el-form-item label="鎮h�呯數璇�" prop="patPhone">
- <el-input v-model="formData.patPhone" placeholder="璇疯緭鍏ユ偅鑰呯數璇�" />
- </el-form-item>
- <el-form-item label="韬唤璇佸彿" prop="patIdentityId">
- <el-input v-model="formData.patIdentityId" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
- </el-form-item>
- <el-form-item label="鎮h�呭湴鍧�" prop="patAddr">
- <el-input v-model="formData.patAddr" placeholder="璇疯緭鍏ユ偅鑰呭湴鍧�" />
- </el-form-item>
- <el-form-item label="鎮h�呮墍鍦ㄧ瀹や唬鐮�" prop="patDeptCode">
- <el-input v-model="formData.patDeptCode" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ瀹や唬鐮�" />
- </el-form-item>
- <el-form-item label="鎮h�呮墍鍦ㄧ瀹ゅ悕绉�" prop="patDeptDesc">
- <el-input v-model="formData.patDeptDesc" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ瀹ゅ悕绉�" />
- </el-form-item>
- <el-form-item label="鎮h�呮墍鍦ㄧ梾鍖轰唬鐮�" prop="patWardCode">
- <el-input v-model="formData.patWardCode" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ梾鍖轰唬鐮�" />
- </el-form-item>
- <el-form-item label="鎮h�呮墍鍦ㄧ梾鍖哄悕绉�" prop="patWardDesc">
- <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ユ偅鑰呮墍鍦ㄧ梾鍖哄悕绉�" />
- </el-form-item>
- <el-form-item label="搴婂彿" prop="patBedNo">
- <el-input v-model="formData.patBedNo" placeholder="璇疯緭鍏ュ簥鍙�" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <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�呯敓鏃�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎮h�呮墜鏈�" prop="patMobile">
+ <el-input v-model="formData.patMobile" placeholder="璇疯緭鍏ユ偅鑰呮墜鏈�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呯數璇�" prop="patPhone">
+ <el-input v-model="formData.patPhone" placeholder="璇疯緭鍏ユ偅鑰呯數璇�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="韬唤璇佸彿" prop="patIdentityId">
+ <el-input v-model="formData.patIdentityId" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呭湴鍧�" prop="patAddr">
+ <el-input v-model="formData.patAddr" placeholder="璇疯緭鍏ユ偅鑰呭湴鍧�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <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="绉戝鍚嶇О" 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="鐥呭尯浠g爜" prop="patWardCode">
+ <el-input v-model="formData.patWardCode" placeholder="璇疯緭鍏ョ梾鍖轰唬鐮�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐥呭尯鍚嶇О" prop="patWardDesc">
+ <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ョ梾鍖哄悕绉�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="搴婂彿" prop="patBedNo">
+ <el-input v-model="formData.patBedNo" placeholder="璇疯緭鍏ュ簥鍙�" />
+ </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>
@@ -95,11 +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 { getCheckTypeName } from '@/utils/checkTypeFormatter'
/** 棰勭害 琛ㄥ崟 */
defineOptions({ name: 'AppointmentForm' })
+
+const checkTypeStore = useCheckTypeStore()
const { t } = useI18n() // 鍥介檯鍖�
const message = useMessage() // 娑堟伅寮圭獥
@@ -125,13 +192,15 @@
bookId: undefined,
bookTime: undefined,
bookDate: new Date().getTime(),
- bookTimeslot: 10001015,
- bookCheckType: 10
+ bookTimeslot: 9000930,
+ 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' }],
bookDate: [{ required: true, message: '棰勭害鏃ユ湡涓嶈兘涓虹┖', trigger: 'blur' }],
bookTimeslot: [{ required: true, message: '棰勭害妫�鏌ユ椂闂存涓嶈兘涓虹┖', trigger: 'blur' }],
bookCheckType: [{ required: true, message: '棰勭害妫�鏌ョ被鍨嬩笉鑳戒负绌�', trigger: 'change' }]
@@ -154,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()
@@ -167,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
}
@@ -199,9 +285,28 @@
bookId: undefined,
bookTime: undefined,
bookDate: new Date().getTime(),
- bookTimeslot: 10001015,
- bookCheckType: 10
+ bookTimeslot: 9000930,
+ 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