feat: 添加一级需求任务完善明细功能
- 在任务卡片上为pending_detail_completion状态添加'重新编辑'按钮 - 添加canEditDetailTask函数判断是否可以编辑完善明细 - 添加handleEditDetailTask函数跳转到发布任务页面 - 在CreateTask.vue中添加loadPrimaryTaskForEdit函数加载一级需求任务数据 - 扩展formData以支持一级需求任务编辑模式
This commit is contained in:
parent
17e87bb612
commit
0f749d71a8
@ -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()
|
||||
}
|
||||
|
||||
// 监听配置更新事件
|
||||
|
||||
@ -535,7 +535,12 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<a-button size="small" @click="handleViewTaskDetail(task)">查看详情</a-button>
|
||||
<a-button v-if="canApproveTask(task)" type="primary" size="small" @click="handleApproveTask(task)">
|
||||
<!-- 待完善明细状态:显示重新编辑按钮 -->
|
||||
<a-button v-if="canEditDetailTask(task)" type="primary" size="small" @click="handleEditDetailTask(task)">
|
||||
<Icon name="edit" size="sm" style="margin-right: 4px;" />
|
||||
重新编辑
|
||||
</a-button>
|
||||
<a-button v-else-if="canApproveTask(task)" type="primary" size="small" @click="handleApproveTask(task)">
|
||||
通过审核
|
||||
</a-button>
|
||||
<a-button v-if="canRejectTask(task)" danger size="small" @click="handleRejectTask(task)">
|
||||
@ -5029,6 +5034,54 @@ const canRejectTask = (task: Task) => {
|
||||
return canApproveTask(task)
|
||||
}
|
||||
|
||||
// 判断是否可以编辑完善任务明细(一级需求部门任务)
|
||||
const canEditDetailTask = (task: Task) => {
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
const currentUserId = userInfo.id
|
||||
|
||||
// 只有待完善明细状态的任务,且当前用户是指定的完善人
|
||||
if (task.approvalStatus === 'pending_detail_completion') {
|
||||
return task.currentApproverId === currentUserId || task.detailCompleterId === currentUserId
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// 处理编辑完善任务明细(跳转到发布任务页面)
|
||||
const handleEditDetailTask = (task: Task) => {
|
||||
// 将任务信息存储到 sessionStorage,供发布任务页面使用
|
||||
// 使用 any 类型断言来访问可能不在类型定义中但实际存在的属性
|
||||
const taskData = task as any
|
||||
const editTaskData = {
|
||||
taskId: task.id,
|
||||
isPrimaryTaskEdit: true, // 标记为一级需求任务的明细编辑
|
||||
brandId: task.brandId,
|
||||
brandName: task.brandName,
|
||||
platformId: task.platformId,
|
||||
platformName: task.platformName,
|
||||
categoryId: task.categoryId,
|
||||
categoryName: task.categoryName,
|
||||
title: task.title,
|
||||
description: taskData.description || '',
|
||||
score: task.score,
|
||||
taskTypeId: task.taskTypeId,
|
||||
taskTypeIds: taskData.taskTypeIds || [],
|
||||
demandTypeId: taskData.demandTypeId,
|
||||
spuInfo: task.spuInfo,
|
||||
deadline: task.deadline,
|
||||
timeLimit: taskData.timeLimit,
|
||||
// 一级需求部门信息
|
||||
primaryPublisherId: task.primaryPublisherId,
|
||||
primaryPublisherDeptId: task.primaryPublisherDeptId,
|
||||
isPrimaryTask: task.isPrimaryTask
|
||||
}
|
||||
|
||||
sessionStorage.setItem('editPrimaryTaskData', JSON.stringify(editTaskData))
|
||||
|
||||
// 跳转到发布任务页面
|
||||
router.push('/create-task?editPrimaryTask=true')
|
||||
}
|
||||
|
||||
// 更新进度(支持普通任务和子任务)
|
||||
const handleUpdateProgress = (task: TaskOrSubTask) => {
|
||||
let newProgress = task.progress || 0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user