LIJU 6 dni temu
rodzic
commit
2caaf60c5e

+ 143 - 0
src/components/medical-advice/temperature/graphics.vue

@@ -659,6 +659,7 @@ export default {
         sexName: "",
         pageNo: "1",
         operaDays: [],
+        admissDateTime: null, // 完整的入院时间
       },
       xyList: [],
       typesInfo: [],
@@ -762,7 +763,147 @@ export default {
   },
   methods: {
     SectionToChinese,
+    // 将时间转换为中文格式
+    convertTimeToChinese(hour, minute) {
+      // 参考 Java 版本的 numberToChinese 方法,创建专门的时间转换函数
+      const numberToChinese = (number) => {
+        if (number === 0) return "零";
+        if (number === 1) return "一";
+        if (number === 2) return "二";
+        if (number === 3) return "三";
+        if (number === 4) return "四";
+        if (number === 5) return "五";
+        if (number === 6) return "六";
+        if (number === 7) return "七";
+        if (number === 8) return "八";
+        if (number === 9) return "九";
+        if (number === 10) return "十";
+        if (number === 11) return "十一";
+        if (number === 12) return "十二";
+        if (number === 13) return "十三";
+        if (number === 14) return "十四";
+        if (number === 15) return "十五";
+        if (number === 16) return "十六";
+        if (number === 17) return "十七";
+        if (number === 18) return "十八";
+        if (number === 19) return "十九";
+        if (number === 20) return "二十";
+        if (number === 21) return "二十一";
+        if (number === 22) return "二十二";
+        if (number === 23) return "二十三";
+        if (number === 24) return "二十四";
+        if (number === 25) return "二十五";
+        if (number === 26) return "二十六";
+        if (number === 27) return "二十七";
+        if (number === 28) return "二十八";
+        if (number === 29) return "二十九";
+        if (number === 30) return "三十";
+        if (number === 31) return "三十一";
+        if (number === 32) return "三十二";
+        if (number === 33) return "三十三";
+        if (number === 34) return "三十四";
+        if (number === 35) return "三十五";
+        if (number === 36) return "三十六";
+        if (number === 37) return "三十七";
+        if (number === 38) return "三十八";
+        if (number === 39) return "三十九";
+        if (number === 40) return "四十";
+        if (number === 41) return "四十一";
+        if (number === 42) return "四十二";
+        if (number === 43) return "四十三";
+        if (number === 44) return "四十四";
+        if (number === 45) return "四十五";
+        if (number === 46) return "四十六";
+        if (number === 47) return "四十七";
+        if (number === 48) return "四十八";
+        if (number === 49) return "四十九";
+        if (number === 50) return "五十";
+        if (number === 51) return "五十一";
+        if (number === 52) return "五十二";
+        if (number === 53) return "五十三";
+        if (number === 54) return "五十四";
+        if (number === 55) return "五十五";
+        if (number === 56) return "五十六";
+        if (number === 57) return "五十七";
+        if (number === 58) return "五十八";
+        if (number === 59) return "五十九";
+        
+        // 对于其他数字,使用通用的转换逻辑
+        if (number < 10) {
+          return numberToChinese(number);
+        } else if (number < 20) {
+          return "十" + (number === 10 ? "" : numberToChinese(number - 10));
+        } else if (number < 60) {
+          const tens = Math.floor(number / 10);
+          const ones = number % 10;
+          let tensStr = "";
+          switch (tens) {
+            case 2: tensStr = "二十"; break;
+            case 3: tensStr = "三十"; break;
+            case 4: tensStr = "四十"; break;
+            case 5: tensStr = "五十"; break;
+          }
+          return tensStr + (ones === 0 ? "" : numberToChinese(ones));
+        }
+        
+        return String(number);
+      };
+      
+      const hourStr = numberToChinese(hour);
+      const minuteStr = numberToChinese(minute);
+      
+      // 处理分钟为0的情况
+      if (minute === 0) {
+        return `${hourStr}时`;
+      }
+      
+      // 处理分钟小于10的情况,需要加"零"
+      if (minute < 10) {
+        return `${hourStr}时零${minuteStr}分`;
+      }
+      
+      return `${hourStr}时${minuteStr}分`;
+    },
+    
+    // 生成入院标识文字
+    generateAdmissionText(admissionDateTime) {
+      if (!admissionDateTime) return "";
+      
+      const date = new Date(admissionDateTime);
+      const hour = date.getHours();
+      const minute = date.getMinutes();
+      
+      return `入院时间${this.convertTimeToChinese(hour, minute)}`;
+    },
+    
+    // 获取入院时间应该显示的时间段索引
+    getAdmissionTimeSlot(admissionDateTime) {
+      if (!admissionDateTime) return -1;
+      
+      const date = new Date(admissionDateTime);
+      const hour = date.getHours();
+      
+      // 时间段映射:02:00, 06:00, 10:00, 14:00, 18:00, 22:00
+      if (hour >= 2 && hour < 6) return 0;   // 02:00
+      if (hour >= 6 && hour < 10) return 1;  // 06:00
+      if (hour >= 10 && hour < 14) return 2; // 10:00
+      if (hour >= 14 && hour < 18) return 3; // 14:00
+      if (hour >= 18 && hour < 22) return 4; // 18:00
+      if (hour >= 22 || hour < 2) return 5;  // 22:00
+      
+      return -1;
+    },
+    
     getSymbolTextArr(index) {
+      // 检查是否是入院时间对应的位置
+      if (this.info.admissDateTime) {
+        const admissionSlot = this.getAdmissionTimeSlot(this.info.admissDateTime);
+        if (admissionSlot === index) {
+          return this.generateAdmissionText(this.info.admissDateTime);
+        }
+      }
+      
+      // 原有的特殊标注文字逻辑
       const current = this.symbolTextArr.find(i => i.x === index);
       if (current) {
         return current.y;
@@ -803,6 +944,8 @@ export default {
         this.info.inpatientNo = res.inpatientNo;
         this.info.admissWardName = res.admissWardName;
         this.info.admissDate = getFormatDatetime(res.admissDate, "YYYY-MM-DD");
+        // 保存完整的入院时间用于生成入院标识
+        this.info.admissDateTime = res.admissDate;
       });
 
       getChartData(param).then(res => {

+ 14 - 5
src/views/medical-advice/nursing-manage/ThreeTestList.vue

@@ -715,7 +715,8 @@ const validateSaveDataAdmissionDate = () => {
     }
     
     const admissionDateStr = getFormatDatetime(latestAdmissionDate, 'YYYY-MM-DD HH:mm:ss')
-    
+    const admissionDateStrChange = getFormatDatetime(latestAdmissionDate, 'YYYY-MM-DD HH:mm:00')
+    const latestAdmissionDateChange = new Date(admissionDateStrChange)
     // 验证图表数据
     for (let i = 0; i < yzTemperatureVOS.value.length; i++) {
         const row = yzTemperatureVOS.value[i]
@@ -724,7 +725,11 @@ const validateSaveDataAdmissionDate = () => {
             const inputDateTimeStr = `${row.recDateStr} ${row.specialtextTimeStr}:00`
             const inputDateTime = new Date(inputDateTimeStr)
             
-            if (inputDateTime < latestAdmissionDate) {
+            // if (inputDateTime < latestAdmissionDate) {
+            //     ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+            //     return false
+            // }
+            if (inputDateTime < latestAdmissionDateChange) {
                 ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
                 return false
             }
@@ -739,10 +744,14 @@ const validateSaveDataAdmissionDate = () => {
             const inputDateTimeStr = `${row.recDateStr} ${row.specialtextTimeStr}:00`
             const inputDateTime = new Date(inputDateTimeStr)
             
-            if (inputDateTime < latestAdmissionDate) {
-                ElMessage.error(`第${i + 1}行总量数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+            // if (inputDateTime < latestAdmissionDate) {
+            //     ElMessage.error(`第${i + 1}行总量数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+            //     return false
+            // }
+            if (inputDateTime < latestAdmissionDateChange) {
+                ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
                 return false
-            }
+            }            
         }
     }