修复同部门多设计师审核时显示问题
1. 后端:在typeDetails中保存receiverId和receiverName 2. 前端:审核弹窗支持显示多个预先指定的设计师列表 3. 前端:扩展TaskTypeDetail接口支持receiverId和receiverName
This commit is contained in:
parent
2df7e3713c
commit
ed314051d7
@ -518,13 +518,21 @@ public class TaskService {
|
||||
firstTaskTypeId = itemDto.getTaskTypeId();
|
||||
}
|
||||
|
||||
// 添加任务类型明细
|
||||
// 添加任务类型明细(包含预先指定的设计师信息)
|
||||
java.util.Map<String, Object> detail = new java.util.LinkedHashMap<>();
|
||||
detail.put("typeId", itemDto.getTaskTypeId());
|
||||
detail.put("typeName", demandType.getName());
|
||||
detail.put("quantity", itemDto.getQuantity());
|
||||
detail.put("unitScore", demandType.getUnitScore());
|
||||
detail.put("totalScore", itemScore);
|
||||
// 如果指定了设计师,也保存到明细中
|
||||
if (itemDto.getReceiverId() != null) {
|
||||
detail.put("receiverId", itemDto.getReceiverId());
|
||||
User receiver = userService.getUserById(itemDto.getReceiverId());
|
||||
if (receiver != null) {
|
||||
detail.put("receiverName", receiver.getRealName());
|
||||
}
|
||||
}
|
||||
typeDetailsList.add(detail);
|
||||
}
|
||||
|
||||
@ -1532,12 +1540,21 @@ public class TaskService {
|
||||
firstTaskTypeId = itemDto.getTaskTypeId();
|
||||
}
|
||||
|
||||
// 添加任务类型明细(包含预先指定的设计师信息)
|
||||
java.util.Map<String, Object> detail = new java.util.LinkedHashMap<>();
|
||||
detail.put("typeId", itemDto.getTaskTypeId());
|
||||
detail.put("typeName", demandType.getName());
|
||||
detail.put("quantity", itemDto.getQuantity());
|
||||
detail.put("unitScore", demandType.getUnitScore());
|
||||
detail.put("totalScore", itemScore);
|
||||
// 如果指定了设计师,也保存到明细中
|
||||
if (itemDto.getReceiverId() != null) {
|
||||
detail.put("receiverId", itemDto.getReceiverId());
|
||||
User receiver = userService.getUserById(itemDto.getReceiverId());
|
||||
if (receiver != null) {
|
||||
detail.put("receiverName", receiver.getRealName());
|
||||
}
|
||||
}
|
||||
typeDetailsList.add(detail);
|
||||
}
|
||||
|
||||
|
||||
@ -2030,7 +2030,19 @@
|
||||
<Icon name="check-circle" size="lg" color="#52c41a" />
|
||||
<span style="color: #fff; font-weight: 500;">已预先指定设计师接单</span>
|
||||
</div>
|
||||
<div style="margin-top: 12px; color: #888;">
|
||||
<!-- 多个设计师列表(同部门多子任务情况) -->
|
||||
<div v-if="preAssignedDesignersList.length > 0" style="margin-top: 12px;">
|
||||
<div v-for="(item, index) in preAssignedDesignersList" :key="index"
|
||||
style="display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: rgba(49, 240, 139, 0.1); border-radius: 6px; margin-bottom: 8px;">
|
||||
<div style="display: flex; flex-direction: column; gap: 2px;">
|
||||
<span style="color: #fff; font-size: 13px;">{{ item.typeName }}</span>
|
||||
<span style="color: #888; font-size: 12px;">数量: {{ item.quantity }}</span>
|
||||
</div>
|
||||
<span style="color: #31f08b; font-weight: 600;">{{ item.designerName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 单个设计师(兼容旧逻辑) -->
|
||||
<div v-else style="margin-top: 12px; color: #888;">
|
||||
<span>指定设计师:</span>
|
||||
<span style="color: #31f08b; font-weight: 600;">{{ preAssignedDesignerName }}</span>
|
||||
</div>
|
||||
@ -2475,6 +2487,8 @@ interface TaskTypeDetail {
|
||||
quantity: number
|
||||
unitScore: number
|
||||
totalScore: number
|
||||
receiverId?: number // 预先指定的设计师ID
|
||||
receiverName?: string // 预先指定的设计师姓名
|
||||
}
|
||||
|
||||
interface TaskOrSubTask extends Task {
|
||||
@ -3535,11 +3549,15 @@ const approveDesignerId = ref<number | undefined>(undefined)
|
||||
const designersList = ref<DesignerWithWorkload[]>([])
|
||||
const newTaskTypePath = ref<(string | number)[] | undefined>(undefined)
|
||||
const preAssignedDesignerName = ref<string>('') // 预先指定的设计师姓名
|
||||
const preAssignedDesignersList = ref<Array<{typeName: string, designerName: string, quantity: number}>>([]) // 多个预先指定的设计师列表
|
||||
|
||||
// 判断任务是否已预先指定设计师
|
||||
const isTaskPreAssigned = computed(() => {
|
||||
if (!approveTaskData.value) return false
|
||||
const task = approveTaskData.value as any
|
||||
// 检查是否有预先指定的设计师列表(多个子任务情况)
|
||||
if (preAssignedDesignersList.value.length > 0) return true
|
||||
// 兼容旧逻辑:检查主任务的 receiverId
|
||||
return task.releaseType === 'assigned' && task.receiverId != null
|
||||
})
|
||||
|
||||
@ -3621,7 +3639,29 @@ const showAssignDesignerModal = async (task: Task) => {
|
||||
|
||||
// 检查任务是否已预先指定设计师
|
||||
const taskAny = task as any
|
||||
if (taskAny.releaseType === 'assigned' && taskAny.receiverId) {
|
||||
preAssignedDesignersList.value = [] // 重置列表
|
||||
|
||||
// 检查 typeDetails 中是否有预先指定的设计师(同部门多设计师情况)
|
||||
if (typeDetailsArray.length > 0) {
|
||||
const designersInDetails: Array<{typeName: string, designerName: string, quantity: number}> = []
|
||||
for (const detail of typeDetailsArray) {
|
||||
if (detail.receiverId && detail.receiverName) {
|
||||
designersInDetails.push({
|
||||
typeName: detail.typeName || getTaskTypeName(detail.typeId),
|
||||
designerName: detail.receiverName,
|
||||
quantity: detail.quantity || 1
|
||||
})
|
||||
}
|
||||
}
|
||||
if (designersInDetails.length > 0) {
|
||||
preAssignedDesignersList.value = designersInDetails
|
||||
approveAssignType.value = 'manual'
|
||||
console.log('任务类型明细中预先指定的设计师:', designersInDetails)
|
||||
}
|
||||
}
|
||||
|
||||
// 兼容旧逻辑:检查主任务的 receiverId
|
||||
if (taskAny.releaseType === 'assigned' && taskAny.receiverId && preAssignedDesignersList.value.length === 0) {
|
||||
// 已预先指定设计师,设置相关状态
|
||||
approveAssignType.value = 'manual'
|
||||
approveDesignerId.value = taskAny.receiverId
|
||||
@ -3629,10 +3669,10 @@ const showAssignDesignerModal = async (task: Task) => {
|
||||
const preAssigned = designers.find(d => d.id === taskAny.receiverId)
|
||||
preAssignedDesignerName.value = preAssigned?.realName || taskAny.receiverName || '未知'
|
||||
console.log('任务已预先指定设计师:', preAssignedDesignerName.value)
|
||||
} else {
|
||||
} else if (preAssignedDesignersList.value.length === 0) {
|
||||
// 未预先指定,重置状态
|
||||
approveAssignType.value = 'auto'
|
||||
approveDesignerId.value = undefined
|
||||
approveAssignType.value = 'auto'
|
||||
approveDesignerId.value = undefined
|
||||
preAssignedDesignerName.value = ''
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user