feat: 添加一级需求审核指定成员完善明细功能
- 新增一级需求审核弹窗,支持指定部门成员完善任务明细 - 修改handleApproveTask函数,识别pending_primary_approval状态 - 添加handleApprovePrimaryTask和handlePrimaryApproveConfirm函数 - 新增primaryApproveModalVisible等状态变量
This commit is contained in:
parent
e50a659dd2
commit
17e87bb612
@ -1869,6 +1869,79 @@
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
<!-- 一级需求审核弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="primaryApproveModalVisible"
|
||||
title="审核一级需求任务"
|
||||
:width="500"
|
||||
:confirm-loading="primaryApprovalLoading"
|
||||
@ok="handlePrimaryApproveConfirm"
|
||||
class="primary-approve-modal"
|
||||
:body-style="{ padding: '24px', background: '#1f1f1f' }"
|
||||
>
|
||||
<div v-if="primaryApproveTaskData" class="primary-approve-content">
|
||||
<!-- 任务信息 -->
|
||||
<div class="task-info" style="margin-bottom: 20px; padding: 16px; background: #141414; border-radius: 8px;">
|
||||
<div style="font-size: 16px; font-weight: 600; color: #fff; margin-bottom: 8px;">
|
||||
{{ primaryApproveTaskData.title }}
|
||||
</div>
|
||||
<div style="display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; color: #888;">
|
||||
<span>品牌: {{ primaryApproveTaskData.brandName }}</span>
|
||||
<span>平台: {{ primaryApproveTaskData.platformName }}</span>
|
||||
<span>积分: {{ primaryApproveTaskData.score }} 分</span>
|
||||
</div>
|
||||
<div style="margin-top: 8px; font-size: 13px; color: #888;">
|
||||
一级部门发起人: {{ primaryApproveTaskData.primaryPublisherName || primaryApproveTaskData.publisherName }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 指定完善人 -->
|
||||
<div class="assign-completer" style="margin-bottom: 20px;">
|
||||
<div style="font-weight: 600; color: #fff; margin-bottom: 12px;">
|
||||
<span style="color: #ff4d4f;">*</span> 指定成员完善任务明细
|
||||
</div>
|
||||
<a-select
|
||||
v-model:value="primaryApproveCompleterId"
|
||||
placeholder="请选择部门成员"
|
||||
style="width: 100%"
|
||||
show-search
|
||||
:filter-option="(input, option) => option.label.toLowerCase().includes(input.toLowerCase())"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="member in deptMembersList"
|
||||
:key="member.id"
|
||||
:value="member.id"
|
||||
:label="member.realName"
|
||||
>
|
||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<span>{{ member.realName }}</span>
|
||||
<span style="color: #888; font-size: 12px;">{{ member.username }}</span>
|
||||
</div>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
|
||||
<!-- 审核备注 -->
|
||||
<div class="approve-comment">
|
||||
<div style="font-weight: 600; color: #fff; margin-bottom: 12px;">审核备注(可选)</div>
|
||||
<a-textarea
|
||||
v-model:value="primaryApproveComment"
|
||||
placeholder="请输入审核备注"
|
||||
:rows="3"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 提示信息 -->
|
||||
<div style="margin-top: 16px; padding: 12px; background: #262626; border-radius: 8px; border-left: 3px solid #1890ff;">
|
||||
<div style="color: #1890ff; font-size: 13px;">
|
||||
<Icon name="info" size="sm" style="margin-right: 6px;" />
|
||||
审核通过后,指定的成员将收到通知,需要完善任务明细后才能正式发布任务。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
<!-- 任务详情抽屉 -->
|
||||
<a-drawer
|
||||
v-model:visible="detailDrawerVisible"
|
||||
@ -3573,6 +3646,14 @@ const newTaskTypePath = ref<(string | number)[] | undefined>(undefined)
|
||||
const preAssignedDesignerName = ref<string>('') // 预先指定的设计师姓名
|
||||
const preAssignedDesignersList = ref<Array<{typeName: string, designerName: string, quantity: number}>>([]) // 多个预先指定的设计师列表
|
||||
|
||||
// 一级需求审核弹窗状态
|
||||
const primaryApproveModalVisible = ref(false)
|
||||
const primaryApproveTaskData = ref<Task | null>(null)
|
||||
const primaryApproveCompleterId = ref<number | undefined>(undefined)
|
||||
const primaryApproveComment = ref('')
|
||||
const deptMembersList = ref<Array<{id: number, realName: string, username: string}>>([])
|
||||
const primaryApprovalLoading = ref(false)
|
||||
|
||||
// 判断任务是否已预先指定设计师
|
||||
const isTaskPreAssigned = computed(() => {
|
||||
if (!approveTaskData.value) return false
|
||||
@ -5221,6 +5302,12 @@ const handleApproveTask = (task: Task) => {
|
||||
return
|
||||
}
|
||||
|
||||
// 如果是一级需求部门任务审核,需要指定成员完善明细
|
||||
if (task.approvalStatus === 'pending_primary_approval') {
|
||||
handleApprovePrimaryTask(task)
|
||||
return
|
||||
}
|
||||
|
||||
// 需求部门负责人审核,直接通过即可
|
||||
Modal.confirm({
|
||||
title: '审核通过',
|
||||
@ -5244,6 +5331,64 @@ const handleApproveTask = (task: Task) => {
|
||||
})
|
||||
}
|
||||
|
||||
// 处理一级需求部门任务审核(指定成员完善明细)
|
||||
const handleApprovePrimaryTask = async (task: Task) => {
|
||||
try {
|
||||
// 获取当前用户所在部门的成员列表
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
const deptId = userInfo.deptId
|
||||
|
||||
if (!deptId) {
|
||||
message.error('无法获取部门信息')
|
||||
return
|
||||
}
|
||||
|
||||
// 获取部门成员
|
||||
const response = await userApi.getUserList(1, 100, undefined, deptId, 1)
|
||||
deptMembersList.value = (response.records || []).map(u => ({
|
||||
id: u.id!,
|
||||
realName: u.realName || u.username,
|
||||
username: u.username
|
||||
}))
|
||||
|
||||
primaryApproveTaskData.value = task
|
||||
primaryApproveCompleterId.value = undefined
|
||||
primaryApproveComment.value = ''
|
||||
primaryApproveModalVisible.value = true
|
||||
} catch (error: any) {
|
||||
message.error('获取部门成员失败:' + (error.msg || error.message))
|
||||
}
|
||||
}
|
||||
|
||||
// 确认一级需求审核
|
||||
const handlePrimaryApproveConfirm = async () => {
|
||||
if (!primaryApproveTaskData.value) return
|
||||
|
||||
if (!primaryApproveCompleterId.value) {
|
||||
message.error('请选择完善明细的成员')
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
primaryApprovalLoading.value = true
|
||||
await taskApi.approvePrimaryTask(
|
||||
primaryApproveTaskData.value.id!,
|
||||
primaryApproveCompleterId.value,
|
||||
primaryApproveComment.value || '审核通过,请完善任务明细'
|
||||
)
|
||||
message.success('审核通过,已指派成员完善明细')
|
||||
primaryApproveModalVisible.value = false
|
||||
|
||||
loadReviewTasks()
|
||||
loadAllTabCounts()
|
||||
loadDashboardStats()
|
||||
} catch (error: any) {
|
||||
message.error(error.msg || error.message || '审核失败')
|
||||
} finally {
|
||||
primaryApprovalLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 驳回任务(使用两级审核流程)
|
||||
const handleRejectTask = (task: Task) => {
|
||||
let reason = ''
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user