feat: 扣分明细弹窗增加抢单时间字段

This commit is contained in:
Your Name 2026-01-19 15:38:39 +08:00
parent 9163424020
commit 0dbb7d9b54
6 changed files with 15 additions and 1 deletions

View File

@ -81,6 +81,11 @@ public class TaskItem implements Serializable {
*/
private String receiverName;
/**
* 抢单时间
*/
private LocalDateTime claimTime;
/**
* 接单部门ID
*/

View File

@ -319,6 +319,7 @@ public interface TaskItemMapper extends BaseMapper<TaskItem> {
"receiver_name = #{receiverName}, " +
"receiver_dept_id = #{receiverDeptId}, " +
"status = 'in_progress', " +
"claim_time = NOW(), " +
"deadline = CASE WHEN #{deadline} IS NOT NULL THEN #{deadline} ELSE deadline END, " +
"update_time = NOW() " +
"WHERE id = #{itemId} " +
@ -337,6 +338,7 @@ public interface TaskItemMapper extends BaseMapper<TaskItem> {
*/
@Update("UPDATE task_item SET " +
"status = 'in_progress', " +
"claim_time = NOW(), " +
"deadline = CASE WHEN #{deadline} IS NOT NULL THEN #{deadline} ELSE deadline END, " +
"update_time = NOW() " +
"WHERE id = #{itemId} " +

View File

@ -1627,6 +1627,7 @@ public class AnalyticsService {
.taskNo(task.getTaskNo())
.taskTitle(task.getTitle())
.taskScore(taskScore)
.claimTime(task.getActualStartTime()) // 主任务使用actualStartTime作为抢单时间
.deadline(task.getDeadline())
.actualEndTime(task.getActualEndTime())
.overdueHours(overdueHoursLong)
@ -1684,6 +1685,7 @@ public class AnalyticsService {
.taskNo(task.getTaskNo())
.taskTitle(task.getTitle())
.taskScore(taskScore)
.claimTime(task.getActualStartTime()) // 主任务使用actualStartTime作为抢单时间
.deadline(task.getDeadline())
.actualEndTime(null) // 进行中任务没有完成时间
.overdueHours(overdueHoursLong)
@ -1761,6 +1763,7 @@ public class AnalyticsService {
.taskNo(taskNo)
.taskTitle(taskTitle + " (" + taskNo + ")")
.taskScore(itemScore)
.claimTime(item.getClaimTime()) // 子任务使用claimTime
.deadline(expectedDeadline)
.actualEndTime(item.getCompleteTime())
.overdueHours(overdueHoursLong)
@ -1817,6 +1820,7 @@ public class AnalyticsService {
.taskNo(taskNo)
.taskTitle(taskTitle + " (" + taskNo + ")")
.taskScore(itemScore)
.claimTime(item.getClaimTime()) // 子任务使用claimTime
.deadline(expectedDeadline)
.actualEndTime(null) // 进行中子任务没有完成时间
.overdueHours(overdueHoursLong)

View File

@ -45,6 +45,7 @@ public class DeductionDetailVO {
private String taskNo;
private String taskTitle;
private BigDecimal taskScore;
private LocalDateTime claimTime; // 抢单时间
private LocalDateTime deadline;
private LocalDateTime actualEndTime;
private Long overdueHours;

View File

@ -362,6 +362,7 @@ export interface DelayDeductionItem {
taskNo: string;
taskTitle: string;
taskScore: number;
claimTime: string; // 抢单时间
deadline: string;
actualEndTime: string;
overdueHours: number;

View File

@ -624,7 +624,7 @@
<template v-else-if="column.key === 'overdueHours'">
<span>{{ record.overdueHours }} 小时</span>
</template>
<template v-else-if="column.key === 'deadline' || column.key === 'actualEndTime'">
<template v-else-if="column.key === 'claimTime' || column.key === 'deadline' || column.key === 'actualEndTime'">
{{ formatDateTime(record[column.key]) }}
</template>
</template>
@ -942,6 +942,7 @@ const delayDeductionColumns = [
{ title: '任务编号', dataIndex: 'taskNo', key: 'taskNo', width: 120 },
{ title: '任务名称', dataIndex: 'taskTitle', key: 'taskTitle', ellipsis: true },
{ title: '任务积分', dataIndex: 'taskScore', key: 'taskScore', width: 100, align: 'center' },
{ title: '抢单时间', key: 'claimTime', width: 150 },
{ title: '截止时间', key: 'deadline', width: 150 },
{ title: '实际完成时间', key: 'actualEndTime', width: 150 },
{ title: '延误时长', key: 'overdueHours', width: 100, align: 'center' },