|
@@ -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 => {
|