From b10d61337f207fbdbea2c44f4f270d83c845cbf9 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 29 十一月 2024 13:28:06 +0800
Subject: [PATCH] 检查类型  条码显示控制

---
 src/views/ecg/appointment/AppointmentForm.vue |  287 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 193 insertions(+), 94 deletions(-)

diff --git a/src/views/ecg/appointment/AppointmentForm.vue b/src/views/ecg/appointment/AppointmentForm.vue
index 3d9b7b0..864f5a3 100644
--- a/src/views/ecg/appointment/AppointmentForm.vue
+++ b/src/views/ecg/appointment/AppointmentForm.vue
@@ -1,94 +1,151 @@
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <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-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="bookId">
-          <el-input v-model="formData.bookId" placeholder="璇疯緭鍏ラ绾︾紪鍙�" />
-      </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="鎮h�呯紪鍙�" 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>
@@ -100,9 +157,12 @@
 <script setup lang="ts">
 import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
 import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment'
+import {useCheckTypeStore} from "@/store/modules/checkType";
 
 /** 棰勭害 琛ㄥ崟 */
 defineOptions({ name: 'AppointmentForm' })
+
+const checkTypeStore = useCheckTypeStore();
 
 const { t } = useI18n() // 鍥介檯鍖�
 const message = useMessage() // 娑堟伅寮圭獥
@@ -128,14 +188,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' }],
+  // bookId: [{ required: true, message: '棰勭害缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }],
   bookDate: [{ required: true, message: '棰勭害鏃ユ湡涓嶈兘涓虹┖', trigger: 'blur' }],
   bookTimeslot: [{ required: true, message: '棰勭害妫�鏌ユ椂闂存涓嶈兘涓虹┖', trigger: 'blur' }],
   bookCheckType: [{ required: true, message: '棰勭害妫�鏌ョ被鍨嬩笉鑳戒负绌�', trigger: 'change' }]
@@ -158,10 +219,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()
@@ -171,14 +247,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
   }
@@ -203,9 +281,30 @@
     bookId: undefined,
     bookTime: undefined,
     bookDate: new Date().getTime(),
-    bookTimeslot: 10001015,
-    bookCheckType: 10
+    bookTimeslot: 9000930,
+    bookCheckType: checkTypeStore.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