| | |
| | | |
| | | import { |
| | | archivePdProject, |
| | | auditPdProject, |
| | | getPdProject, |
| | | getPdProjectApproveProcessList, |
| | | publishPdProject, |
| | | uploadPdProject, |
| | | } from '#/api/mes/pd/project'; |
| | |
| | | import Form from '../modules/form.vue'; |
| | | import DocumentAuditList from '../modules/document-audit-list.vue'; |
| | | import DocumentList from '../modules/document-list.vue'; |
| | | import ProcessSelectModal from '../modules/process-select-modal.vue'; |
| | | import WorkflowTimeline from '../modules/workflow-timeline.vue'; |
| | | import TaskDraftBanner from '../modules/task-draft-banner.vue'; |
| | | import { useDetailSchema } from './data'; |
| | |
| | | const isPendingArchive = computed( |
| | | () => project.value.status === MesPdProjectStatusEnum.PENDING_ARCHIVE, |
| | | ); |
| | | const isApproving = computed( |
| | | () => project.value.status === MesPdProjectStatusEnum.APPROVING, |
| | | ); |
| | | const isArchived = computed( |
| | | () => project.value.status === MesPdProjectStatusEnum.ARCHIVED, |
| | | ); |
| | |
| | | |
| | | const [FormModal, formModalApi] = useVbenModal({ |
| | | connectedComponent: Form, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | | const [ProcessModal, processModalApi] = useVbenModal({ |
| | | connectedComponent: ProcessSelectModal, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | async function handleAudit() { |
| | | const hideLoading = message.loading({ content: '审核中…', duration: 0 }); |
| | | /** 提交审批 - 先获取流程列表 */ |
| | | async function handleSubmit() { |
| | | const hideLoading = message.loading({ content: '获取审批流程...', duration: 0 }); |
| | | try { |
| | | await auditPdProject(projectId.value); |
| | | message.success('审核通过,进入待归档状态'); |
| | | tabs.closeCurrentTab(); |
| | | router.back(); |
| | | } finally { |
| | | const processList = await getPdProjectApproveProcessList(); |
| | | hideLoading(); |
| | | if (!processList || processList.length === 0) { |
| | | message.warning('暂无可用审批流程,请先配置 BPM 流程'); |
| | | return; |
| | | } |
| | | // 打开流程选择弹窗 |
| | | processModalApi.setData({ id: projectId.value, processList }).open(); |
| | | } catch { |
| | | hideLoading(); |
| | | } |
| | | } |
| | | |
| | | /** 查看审批详情 */ |
| | | function handleProcessDetail() { |
| | | if (!project.value.processInstanceId) { |
| | | message.warning('该项目尚未提交审批'); |
| | | return; |
| | | } |
| | | router.push({ |
| | | name: 'BpmProcessInstanceDetail', |
| | | query: { id: project.value.processInstanceId }, |
| | | }); |
| | | } |
| | | |
| | | /** 提交审批成功后刷新详情 */ |
| | | function handleSubmitSuccess() { |
| | | loadProjectDetail(); |
| | | } |
| | | |
| | | async function handleArchive() { |
| | |
| | | :title="project.taskName || '设计任务详情'" |
| | | > |
| | | <FormModal @success="loadProjectDetail" /> |
| | | <ProcessModal @success="handleSubmitSuccess" /> |
| | | |
| | | <template #extra> |
| | | <TableAction |
| | |
| | | onClick: handleUpload, |
| | | }, |
| | | { |
| | | label: '审核通过', |
| | | label: '提交审批', |
| | | type: 'primary', |
| | | ifShow: isPendingAudit, |
| | | onClick: handleAudit, |
| | | onClick: handleSubmit, |
| | | }, |
| | | { |
| | | label: '查看审批', |
| | | type: 'primary', |
| | | ifShow: isApproving, |
| | | onClick: handleProcessDetail, |
| | | }, |
| | | { |
| | | label: '归档', |