From e89834c34e8f987cd59a167aa8c8369a731ef44c Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 11 四月 2025 12:19:27 +0800
Subject: [PATCH] 根据检查类型 , 自动确费

---
 src/views/ecg/appointment/CheckItemPanel.vue |   77 ++++++++++++++++++++++++++++++++------
 1 files changed, 65 insertions(+), 12 deletions(-)

diff --git a/src/views/ecg/appointment/CheckItemPanel.vue b/src/views/ecg/appointment/CheckItemPanel.vue
index 7e72de7..d841bda 100644
--- a/src/views/ecg/appointment/CheckItemPanel.vue
+++ b/src/views/ecg/appointment/CheckItemPanel.vue
@@ -21,6 +21,8 @@
   }
 })
 
+const emit = defineEmits(['event_appoint_confirm']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋�
+
 const checkTypeStore = useCheckTypeStore();
 
 const checkTypeTimeslotList = ref<QueueSequenceVO>()
@@ -41,11 +43,13 @@
     )
         .then(async () => {
           const tempAppointment = cloneDeep(props.appointment)
-          if( undefined !== bookTimeSlotVip.value && null !== bookTimeSlotVip.value ) {
+          if (undefined !== bookTimeSlotVip.value && null !== bookTimeSlotVip.value) {
             tempAppointment.bookTimeslot = bookTimeSlotVip.value
           }
           const data = await AppointmentApi.confirmAppointmentVip(tempAppointment)
           bookSeqNum.value = data
+          // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢
+          emit('event_appoint_confirm')
           _printNote()
           ElNotification({
             title: '娓╅Θ鎻愮ず',
@@ -54,20 +58,59 @@
           })
         })
         .catch(() => {
+/*
           ElNotification({
             title: '娓╅Θ鎻愮ず',
             message: '纭澶辫触',
             type: 'warning'
           })
+*/
+        })
+  } else if (undefined !== bookTimeSlotVip.value && null !== bookTimeSlotVip.value && props.appointment.bookTimeslot !== bookTimeSlotVip.value) {
+    ElMessageBox.confirm(
+        '褰撳ぉ棰勭害椤癸紝纭畾瑕佽蛋VIP鍚楋紵',
+        'Warning',
+        {
+          confirmButtonText: '濂界殑',
+          cancelButtonText: '涓嶇敤',
+          type: 'warning',
+        }
+    )
+        .then(async () => {
+          const tempAppointment = cloneDeep(props.appointment)
+          if (undefined !== bookTimeSlotVip.value && null !== bookTimeSlotVip.value) {
+            tempAppointment.bookTimeslot = bookTimeSlotVip.value
+          }
+          const data = await AppointmentApi.confirmAppointmentVip(tempAppointment)
+          bookSeqNum.value = data
+          // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢
+          emit('event_appoint_confirm')
+          _printNote()
+          ElNotification({
+            title: '娓╅Θ鎻愮ず',
+            message: data,
+            type: 'info'
+          })
+        })
+        .catch(() => {
+          /*
+                    ElNotification({
+                      title: '娓╅Θ鎻愮ず',
+                      message: '纭澶辫触',
+                      type: 'warning'
+                    })
+          */
         })
   } else {
     const data = await AppointmentApi.confirmAppointment(props.appointment)
     bookSeqNum.value = data
+    // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢
+    emit('event_appoint_confirm')
     _printNote()
     ElNotification({
       title: '娓╅Θ鎻愮ず',
       message: data,
-      type: 'warning'
+      type: 'info'
     })
   }
 }
@@ -87,23 +130,32 @@
   var panel = hiprintTemplate.addPrintPanel({ width: 140, height: 130, paperNumberDisabled:true});
 //鏂囨湰
   const checkTypeName = checkTypeStore.getCheckTypeName(props.appointment.bookCheckType)
-  panel.addPrintText({ options: { width: 140, height: 12, top: 2, left: 20, title: checkTypeName, textAlign: 'center', fontSize: 8, fontFamily: '寰蒋闆呴粦',  fontWeight: '700', } });
+  panel.addPrintText({ options: { width: 150, height: 15, top: 2, left: 10, title: checkTypeName, textAlign: 'center', fontSize: 15, fontFamily: '寰蒋闆呴粦',  fontWeight: '700', } });
   const patientBaisc = props.appointment.patName + "  " + calGender(props.appointment.patGender) + "  " + calculateAge(props.appointment.patBirthday) + "宀�"
-  panel.addPrintText({ options: { width: 140, height: 12, top: 16, left: 20, title: patientBaisc, textAlign: 'center' , fontSize: 8, fontWeight: '700', } });
+  panel.addPrintText({ options: { width: 150, height: 15, top: 27, left: 10, title: patientBaisc, textAlign: 'center' , fontSize: 15, fontFamily: '寰蒋闆呴粦', fontWeight: '700', } });
   const ward_bed = props.appointment.patWardDesc + "-" + props.appointment.patBedNo
-  panel.addPrintText({ options: { width: 140, height: 12, top: 30, left: 20, title: ward_bed, textAlign: 'center', fontSize: 8, fontFamily: '榛戜綋', } });
+  panel.addPrintText({ options: { width: 150, height: 15, top: 52, left: 10, title: ward_bed, textAlign: 'center', fontSize: 15, fontFamily: '寰蒋闆呴粦', fontWeight: '700', } });
   const bookTime = formatTimestamp(props.appointment.bookDate) + " " + getBookBeginTime(props.appointment.bookTimeslot)
-  panel.addPrintText({ options: { width: 140, height: 12, top: 44, left: 20, title: bookTime, textAlign: 'center', fontSize: 8 } });
-  //panel.addPrintText({ options: { width: 140, height: 12, top: 58, left: 20, title: props.appointment.patId, textAlign: 'center', fontSize: 8 } });
-  //panel.addPrintText({ options: { width: 140, height: 12, top: 72, left: 20, title: props.appointment.patMobile, textAlign: 'center', fontSize: 8, fontFamily: '寰蒋闆呴粦',  fontWeight: '700', } });
+  panel.addPrintText({ options: { width: 150, height: 15, top: 77, left: 10, title: bookTime, textAlign: 'center', fontSize: 15, fontFamily: '寰蒋闆呴粦', fontWeight: '700', } });
+  //panel.addPrintText({ options: { width: 150, height: 12, top: 58, left: 10, title: props.appointment.patId, textAlign: 'center', fontSize: 8 } });
+  //panel.addPrintText({ options: { width: 150, height: 12, top: 72, left: 10, title: props.appointment.patMobile, textAlign: 'center', fontSize: 8, fontFamily: '寰蒋闆呴粦',  fontWeight: '700', } });
+
+  // 鏉$爜 灏辫瘖娴佹按鍙�
+  panel.addPrintText({ options: { width: 150, height: 22, top: 107, left: 10, title: props.appointment.episodeId, textType: 'barcode' } });
+
+  // 鍙充晶 Pane 杈撳嚭
   const _bookSeqNum = bookSeqNum.value??props.appointment?.bookSeqNum
-  panel.addPrintText({ options: { width: 140, height: 12, top: 62, left: 20, title: ''+_bookSeqNum, textAlign: 'center', fontSize: 16, fontFamily: '寰蒋闆呴粦',  fontWeight: '900' } });
+  panel.addPrintText({ options: { width: 130, height: 20, top: 7, left: 170, title: ''+_bookSeqNum, textAlign: 'center', fontSize: 30, fontFamily: '寰蒋闆呴粦',  fontWeight: '1200' } });
+
+  // 娉ㄦ剰浜嬮」
+  const notes = checkTypeStore.getCheckTypeNotes(props.appointment.bookCheckType)
+  panel.addPrintLongText({ options: { width: 130, height: 80, top: 35, left: 170, lineHeight: 15, title: notes, textAlign: 'center', fontSize: 13, fontFamily: '寰蒋闆呴粦',  fontWeight: '700', } });
 
 //鎵撳嵃
   if (undefined === printMode)
-    hiprintTemplate.print2([{},{},{}]); // 鍙互浼� [瀹氫綅鍙傛暟]  http://https://ccsimple.github.io/sv-print-docs/config/template.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%BE%E8%AE%A1%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B
+    hiprintTemplate.print2([{}]); // 鍙互浼� [瀹氫綅鍙傛暟]  http://https://ccsimple.github.io/sv-print-docs/config/template.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%BE%E8%AE%A1%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B
   else
-    hiprintTemplate.print([{},{},{}]);
+    hiprintTemplate.print([{}]);
 }
 
 onMounted( async () => {
@@ -120,7 +172,8 @@
     <div>{{formatDate(appointment.bookDate, 'YYYY-MM-DD')}}</div>
     <div>{{formatTimeslot(appointment.bookTimeslot)}}</div>
 
-    <el-select v-if="!isCurrentDay(appointment.bookDate)" v-model="bookTimeSlotVip" placeholder="璇烽�夋嫨棰勭害鏃堕棿娈�">
+<!--    <el-select v-if="!isCurrentDay(appointment.bookDate)" v-model="bookTimeSlotVip" placeholder="璇烽�夋嫨棰勭害鏃堕棿娈�">-->
+    <el-select v-model="bookTimeSlotVip" clearable placeholder="璇烽�夋嫨棰勭害鏃堕棿娈�">
       <el-option
           v-for="item in checkTypeTimeslotList"
           :key="item.id"

--
Gitblit v1.9.3