From 0f749d71a827b2304e902371494c30fc25135361 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Jan 2026 23:49:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E4=BB=BB=E5=8A=A1=E5=AE=8C=E5=96=84=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在任务卡片上为pending_detail_completion状态添加'重新编辑'按钮 - 添加canEditDetailTask函数判断是否可以编辑完善明细 - 添加handleEditDetailTask函数跳转到发布任务页面 - 在CreateTask.vue中添加loadPrimaryTaskForEdit函数加载一级需求任务数据 - 扩展formData以支持一级需求任务编辑模式 --- frontend/src/views/CreateTask.vue | 76 +++++++++++++++++++++++++++++-- frontend/src/views/TaskHall.vue | 55 +++++++++++++++++++++- 2 files changed, 125 insertions(+), 6 deletions(-) diff --git a/frontend/src/views/CreateTask.vue b/frontend/src/views/CreateTask.vue index 239c491..5452d7e 100644 --- a/frontend/src/views/CreateTask.vue +++ b/frontend/src/views/CreateTask.vue @@ -669,9 +669,9 @@ const formData = reactive({ pipelineMode: 'sequential' as 'sequential' | 'parallel', // 固定为顺序流水线 taskTypes: [{ taskTypeId: undefined, taskTypePath: undefined, quantity: 1, receiverId: undefined, selectedDeptId: undefined }] as TaskTypeItem[], // 任务类型数组 taskSubType: '', // 动态加载,初始为空 - brandId: undefined, - platformId: undefined, - categoryId: undefined, + brandId: undefined as number | undefined, + platformId: undefined as number | undefined, + categoryId: undefined as number | undefined, spuInfo: '', attachmentUrl: '', previewImage: '', // 预览图URL @@ -679,7 +679,18 @@ const formData = reactive({ releaseType: 'default', productBarcodes: [] as string[], // 商品条码列表(已验证库存) // receiverId: undefined, // 已移除,改用子任务指定 - isUrgent: false + isUrgent: false, + // 一级需求任务编辑相关 + isPrimaryTaskEdit: false, // 是否是一级需求任务明细编辑模式 + primaryPublisherId: undefined as number | undefined, + primaryPublisherDeptId: undefined as number | undefined, + description: '', // 任务描述 + score: undefined as number | undefined, // 积分 + taskTypeId: undefined as number | undefined, // 任务类型ID + taskTypeIds: [] as number[], // 任务类型ID数组 + demandTypeId: undefined as number | undefined, // 需求类型ID + deadline: undefined as string | undefined, // 截止时间 + timeLimit: undefined as number | undefined // 时效要求 }) // 新条码输入框 @@ -2129,6 +2140,57 @@ const handleGlobalPaste = (e: ClipboardEvent) => { } } +// 加载一级需求任务进行明细编辑 +const loadPrimaryTaskForEdit = async () => { + try { + const editDataStr = sessionStorage.getItem('editPrimaryTaskData') + if (!editDataStr) { + message.error('未找到任务数据') + router.push('/tasks') + return + } + + const editData = JSON.parse(editDataStr) + + // 设置编辑模式 + editMode.value = true + editTaskId.value = editData.taskId + + // 填充基本信息(这些字段是一级需求部门填写的,不可修改) + formData.brandId = editData.brandId + formData.platformId = editData.platformId + formData.categoryId = editData.categoryId + formData.title = editData.title + formData.description = editData.description || '' + formData.score = editData.score + formData.taskTypeId = editData.taskTypeId + formData.demandTypeId = editData.demandTypeId + formData.spuInfo = editData.spuInfo || '' + formData.deadline = editData.deadline + formData.timeLimit = editData.timeLimit + + // 处理任务类型(可能是数组) + if (editData.taskTypeIds && editData.taskTypeIds.length > 0) { + formData.taskTypeIds = editData.taskTypeIds + } + + // 标记为一级需求任务编辑模式 + formData.isPrimaryTaskEdit = true + formData.primaryPublisherId = editData.primaryPublisherId + formData.primaryPublisherDeptId = editData.primaryPublisherDeptId + + // 清除 sessionStorage + sessionStorage.removeItem('editPrimaryTaskData') + + message.info('请完善任务明细后提交') + + } catch (error) { + console.error('加载一级需求任务失败:', error) + message.error('加载任务数据失败') + router.push('/tasks') + } +} + // 组件挂载 onMounted(async () => { // 添加全局粘贴事件监听 @@ -2153,12 +2215,16 @@ onMounted(async () => { ]) // 检查是否是编辑模式 - // 支持两种方式: + // 支持三种方式: // 1. editId 参数(驳回任务重新编辑) // 2. taskId + mode=edit 参数(草稿箱继续编辑) + // 3. editPrimaryTask 参数(一级需求任务完善明细) const editId = route.query.editId || (route.query.mode === 'edit' ? route.query.taskId : null) if (editId) { await loadTaskForEdit(Number(editId)) + } else if (route.query.editPrimaryTask === 'true') { + // 一级需求任务完善明细 + await loadPrimaryTaskForEdit() } // 监听配置更新事件 diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index fb1f163..f770cf1 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -535,7 +535,12 @@