feat: 前端支持显示预先指定设计师信息,审核时不允许修改

This commit is contained in:
Your Name 2026-01-08 10:08:49 +08:00
parent 4e4b8293c2
commit 767276b00d

View File

@ -1879,8 +1879,23 @@
<div class="modal-section" style="margin-top: 24px;">
<div class="section-header" style="margin-bottom: 12px;">
<span class="section-title" style="font-weight: 600; color: #fff;">选择接单方式</span>
<span v-if="isTaskPreAssigned" style="margin-left: 8px; color: #faad14; font-size: 12px;">
(任务已预先指定设计师,不可修改)
</span>
</div>
<a-radio-group v-model:value="approveAssignType" class="assign-type-group" style="width: 100%; display: flex; gap: 12px;">
<!-- 已预先指定设计师,显示只读信息 -->
<div v-if="isTaskPreAssigned" class="pre-assigned-info" style="padding: 16px; border: 1px solid #52c41a; border-radius: 8px; background: rgba(82, 196, 26, 0.1);">
<div style="display: flex; align-items: center; gap: 8px;">
<Icon name="check-circle" size="lg" color="#52c41a" />
<span style="color: #fff; font-weight: 500;">已预先指定设计师接单</span>
</div>
<div style="margin-top: 12px; color: #888;">
<span>指定设计师:</span>
<span style="color: #31f08b; font-weight: 600;">{{ preAssignedDesignerName }}</span>
</div>
</div>
<!-- 未预先指定,显示选择界面 -->
<a-radio-group v-else v-model:value="approveAssignType" class="assign-type-group" style="width: 100%; display: flex; gap: 12px;">
<a-radio value="auto" class="assign-option" style="flex: 1; display: flex; padding: 16px; border: 1px solid #303030; border-radius: 8px; background: #141414; align-items: center; margin-right: 0;">
<div class="option-content" style="display: inline-flex; flex-direction: column; margin-left: 8px;">
<span class="option-title" style="font-weight: 500; color: #fff; font-size: 14px;">发布到任务大厅</span>
@ -1897,7 +1912,7 @@
</div>
<!-- 选择设计师 -->
<div v-if="approveAssignType === 'manual'" class="modal-section" style="margin-top: 24px;">
<div v-if="approveAssignType === 'manual' && !isTaskPreAssigned" class="modal-section" style="margin-top: 24px;">
<div class="section-header" style="margin-bottom: 12px;">
<span class="section-title" style="font-weight: 600; color: #fff;">选择设计师</span>
</div>
@ -3038,6 +3053,14 @@ const approveTaskTypes = ref<Array<{typeId: number, quantity: number}>>([])
const approveDesignerId = ref<number | undefined>(undefined)
const designersList = ref<DesignerWithWorkload[]>([])
const newTaskTypePath = ref<(string | number)[] | undefined>(undefined)
const preAssignedDesignerName = ref<string>('') // 预先指定的设计师姓名
// 判断任务是否已预先指定设计师
const isTaskPreAssigned = computed(() => {
if (!approveTaskData.value) return false
const task = approveTaskData.value as any
return task.releaseType === 'assigned' && task.receiverId != null
})
// 级联选择器搜索过滤
const cascaderFilter = (inputValue: string, path: any[]) => {
@ -3113,10 +3136,25 @@ const showAssignDesignerModal = async (task: Task) => {
designersList.value = designers
approveTaskData.value = task
approveAssignType.value = 'auto'
approveDesignerId.value = undefined
newTaskTypePath.value = undefined
// 检查任务是否已预先指定设计师
const taskAny = task as any
if (taskAny.releaseType === 'assigned' && taskAny.receiverId) {
// 已预先指定设计师,设置相关状态
approveAssignType.value = 'manual'
approveDesignerId.value = taskAny.receiverId
// 从设计师列表中查找预先指定的设计师姓名
const preAssigned = designers.find(d => d.id === taskAny.receiverId)
preAssignedDesignerName.value = preAssigned?.realName || taskAny.receiverName || '未知'
console.log('任务已预先指定设计师:', preAssignedDesignerName.value)
} else {
// 未预先指定,重置状态
approveAssignType.value = 'auto'
approveDesignerId.value = undefined
preAssignedDesignerName.value = ''
}
// 如果有 typeDetails,从中获取任务类型和数量
if (typeDetailsArray.length > 0) {
approveTaskTypes.value = typeDetailsArray.map(detail => ({