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