Explorar el Código

feat(attendance): 提取时间格式化逻辑,避免打卡记录日期污染

xieyong hace 5 días
padre
commit
ccabe8785c
Se han modificado 1 ficheros con 11 adiciones y 3 borrados
  1. 11 3
      src/pages/attendance/index.vue

+ 11 - 3
src/pages/attendance/index.vue

@@ -141,6 +141,14 @@ const ruleStatus = ref('loading');
 const ruleBlockedReason = ref(''); // 不可打卡的具体原因:草稿 / 自然到期 / 停用
 const ruleToastShown = ref(false);
 
+// 后端返回的时间是 "2026-09-14 09:00:00" / ISO 等带日期的字符串,
+// 这里只展示 HH:MM,避免日期污染打卡记录
+function extractTime(value) {
+  if (value == null || value === "") return "";
+  const m = String(value).match(/(\d{1,2}:\d{2})(:\d{2})?/);
+  return m ? m[1] : String(value);
+}
+
 const monthLabel = computed(() => {
   const [y, m] = currentMonth.value.split("-");
   return `${y}年${Number(m)}月`;
@@ -229,8 +237,8 @@ const detail = computed(() => {
   const d = dailyDetail.value || {};
   const inTime = d.actualIn || null;
   const outTime = d.actualOut || null;
-  const inText = inTime || "--:--";
-  const outText = outTime || "--:--";
+  const inText = inTime ? extractTime(inTime) : "--:--";
+  const outText = outTime ? extractTime(outTime) : "--:--";
   const inLabel = inTime
     ? (d.lateMinutes > 0 ? `迟到 ${d.lateMinutes} 分钟` : "正常")
     : "未打卡";
@@ -245,7 +253,7 @@ const detail = computed(() => {
       : ruleStatus.value === 'disabled'
         ? `考勤规则${ruleBlockedReason.value || '不可用'}`
         : start && end
-          ? `${shiftInfo.ruleName || "今日班次"} · ${start} - ${end}`
+          ? `${shiftInfo.ruleName || "今日班次"} · ${extractTime(start)} - ${extractTime(end)}`
           : "休息日";
   let workText = "";
   if (d.actualWorkMinutes || d.requiredMinutes) {