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 | 148 +++++++++++++++++++++++++++++++------------------
1 files changed, 94 insertions(+), 54 deletions(-)
diff --git a/src/views/ecg/appointment/AppointmentForm.vue b/src/views/ecg/appointment/AppointmentForm.vue
index a1a18ed..7cd3e5e 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-form-item label="缂栧彿" prop="patId">
+ <el-input
+ v-model="formData.patId"
+ placeholder="璇疯緭鍏ョ紪鍙�"
+ clearable
+ @input="searchBookInfo"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -24,40 +29,40 @@
<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>
</el-radio-group>
</el-form-item>
</el-col>
- <el-col :span="12">
+ <!-- <el-col :span="12">
<el-form-item label="棰勭害缂栧彿" prop="bookId">
<el-input v-model="formData.bookId" placeholder="璇疯緭鍏ラ绾︾紪鍙�" />
</el-form-item>
- </el-col>
+ </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="閫夋嫨棰勭害鏃ユ湡"
+ 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