|
@@ -105,6 +105,15 @@ export function computeDurationMinutes(startDate, startTime, endDate, endTime) {
|
|
|
return Math.max(MIN_DURATION_MINUTES, Math.floor((end.getTime() - start.getTime()) / 60000));
|
|
return Math.max(MIN_DURATION_MINUTES, Math.floor((end.getTime() - start.getTime()) / 60000));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * 时长(小时):接口按时长的小时值接收(如 9,而不是 540 分钟),
|
|
|
|
|
+ * 内部仍用 computeDurationMinutes 计算,提交前换算为小时,保留 2 位小数。
|
|
|
|
|
+ */
|
|
|
|
|
+function computeDurationHours(startDate, startTime, endDate, endTime) {
|
|
|
|
|
+ const minutes = computeDurationMinutes(startDate, startTime, endDate, endTime);
|
|
|
|
|
+ return Number((minutes / 60).toFixed(2));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/** 拆分接口时间值为 { date, time }(time 精确到分钟) */
|
|
/** 拆分接口时间值为 { date, time }(time 精确到分钟) */
|
|
|
export function splitDateTime(value) {
|
|
export function splitDateTime(value) {
|
|
|
const text = String(value || "").replace("T", " ").trim();
|
|
const text = String(value || "").replace("T", " ").trim();
|
|
@@ -180,7 +189,7 @@ export function buildAttendancePayload(form, type, userRaw, attachmentFileIds) {
|
|
|
leaveType: LEAVE_TYPE_MAP[form.leaveType] || "OTHER",
|
|
leaveType: LEAVE_TYPE_MAP[form.leaveType] || "OTHER",
|
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
|
- durationMinutes: computeDurationMinutes(
|
|
|
|
|
|
|
+ durationMinutes: computeDurationHours(
|
|
|
form.startDate,
|
|
form.startDate,
|
|
|
form.startTime || DEFAULT_START_TIME,
|
|
form.startTime || DEFAULT_START_TIME,
|
|
|
form.endDate,
|
|
form.endDate,
|
|
@@ -193,7 +202,7 @@ export function buildAttendancePayload(form, type, userRaw, attachmentFileIds) {
|
|
|
overtimeType: "WORKDAY",
|
|
overtimeType: "WORKDAY",
|
|
|
startTime: buildRangeTime(form.startDate, form.startTime || "18:00"),
|
|
startTime: buildRangeTime(form.startDate, form.startTime || "18:00"),
|
|
|
endTime: buildRangeTime(form.endDate, form.endTime || "20:00"),
|
|
endTime: buildRangeTime(form.endDate, form.endTime || "20:00"),
|
|
|
- durationMinutes: computeDurationMinutes(
|
|
|
|
|
|
|
+ durationMinutes: computeDurationHours(
|
|
|
form.startDate,
|
|
form.startDate,
|
|
|
form.startTime || "18:00",
|
|
form.startTime || "18:00",
|
|
|
form.endDate,
|
|
form.endDate,
|
|
@@ -205,7 +214,7 @@ export function buildAttendancePayload(form, type, userRaw, attachmentFileIds) {
|
|
|
return Object.assign({}, base, {
|
|
return Object.assign({}, base, {
|
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
|
- durationMinutes: computeDurationMinutes(
|
|
|
|
|
|
|
+ durationMinutes: computeDurationHours(
|
|
|
form.startDate,
|
|
form.startDate,
|
|
|
form.startTime || DEFAULT_START_TIME,
|
|
form.startTime || DEFAULT_START_TIME,
|
|
|
form.endDate,
|
|
form.endDate,
|
|
@@ -218,7 +227,7 @@ export function buildAttendancePayload(form, type, userRaw, attachmentFileIds) {
|
|
|
return Object.assign({}, base, {
|
|
return Object.assign({}, base, {
|
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
startTime: buildRangeTime(form.startDate, form.startTime || DEFAULT_START_TIME),
|
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
endTime: buildRangeTime(form.endDate, form.endTime || DEFAULT_END_TIME),
|
|
|
- durationMinutes: computeDurationMinutes(
|
|
|
|
|
|
|
+ durationMinutes: computeDurationHours(
|
|
|
form.startDate,
|
|
form.startDate,
|
|
|
form.startTime || DEFAULT_START_TIME,
|
|
form.startTime || DEFAULT_START_TIME,
|
|
|
form.endDate,
|
|
form.endDate,
|