云
5 天以前 a241b66efcc41e973290a6722fb7a4d79b833ea1
src/views/mes/pd/project/index.vue
@@ -1,4 +1,6 @@
<script lang="ts" setup>
import { automaticApproval } from '#/store/audit-policy';
import { submitPdProjectApproval } from '#/api/mes/pd/project';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesPdProjectApi } from '#/api/mes/pd/project';
@@ -17,6 +19,7 @@
  deletePdProject,
  exportPdProject,
  getPdProjectApproveProcessList,
  getPdProjectPage,
  publishPdProject,
@@ -26,6 +29,7 @@
import { useGridColumns, useGridFormSchema } from './data';
import CreateForm from './modules/create-form.vue';
import Form from './modules/form.vue';
import ProcessSelectModal from './modules/process-select-modal.vue';
const router = useRouter();
@@ -36,6 +40,11 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
  destroyOnClose: true,
});
const [ProcessModal, processModalApi] = useVbenModal({
  connectedComponent: ProcessSelectModal,
  destroyOnClose: true,
});
@@ -71,6 +80,55 @@
  } finally {
    hideLoading();
  }
}
/** 提交审批 - 先获取流程列表 */
async function handleSubmit(row: MesPdProjectApi.Project) {
  const hideLoading = message.loading({
    content: automaticApproval.value ? '正在提交生效...' : '获取审批流程...',
    duration: 0,
  });
  try {
    if (automaticApproval.value) {
      await submitPdProjectApproval(row.id!, 'pd_project_approve');
      hideLoading();
      message.success('已提交生效');
      handleRefresh();
      return;
    }
    const processList = await getPdProjectApproveProcessList();
    hideLoading();
    if (!processList || processList.length === 0) {
      message.warning('暂无可用审批流程,请先配置 BPM 流程');
      return;
    }
    // 打开流程选择弹窗
    processModalApi.setData({ id: row.id, processList }).open();
  } catch {
    hideLoading();
  }
}
/** 审核文件 - 跳转详情页资料审核 Tab */
function handleAuditFile(row: MesPdProjectApi.Project) {
  router.push({
    name: 'MesPdProjectDetail',
    params: { id: row.id },
    query: { tab: 'audit' },
  });
}
/** 查看审批详情 */
function handleProcessDetail(row: MesPdProjectApi.Project) {
  if (!row.processInstanceId) {
    message.warning('该项目尚未提交审批');
    return;
  }
  router.push({
    name: 'BpmProcessInstanceDetail',
    query: { id: row.processInstanceId },
  });
}
async function handleArchive(row: MesPdProjectApi.Project) {
@@ -137,6 +195,7 @@
  <Page auto-content-height>
    <CreateFormModal @success="handleCreateSuccess" />
    <FormModal @success="handleRefresh" />
    <ProcessModal @success="handleRefresh" />
    <Grid table-title="设计任务">
      <template #toolbar-tools>
@@ -183,16 +242,34 @@
              onClick: () => handleDetail(row),
            },
            {
              label: '审核',
              label: '审核文件',
              type: 'link',
              auth: ['mes:pd-project:audit'],
              ifShow: row.status === MesPdProjectStatusEnum.PENDING_AUDIT,
              onClick: () => handleDetail(row),
              auth: ['mes:pd-project:update'],
              ifShow:
                row.status === MesPdProjectStatusEnum.PENDING_AUDIT &&
                (row.pendingAuditCount ?? 0) > 0,
              onClick: handleAuditFile.bind(null, row),
            },
            {
              label: '提交审批',
              type: 'link',
              auth: ['mes:pd-project:update'],
              ifShow:
                row.status === MesPdProjectStatusEnum.PENDING_AUDIT &&
                (row.pendingAuditCount ?? 0) === 0,
              onClick: handleSubmit.bind(null, row),
            },
            {
              label: '查看审批',
              type: 'link',
              auth: ['mes:pd-project:update'],
              ifShow: row.status === MesPdProjectStatusEnum.APPROVING,
              onClick: handleProcessDetail.bind(null, row),
            },
            {
              label: '归档',
              type: 'link',
              auth: ['mes:pd-project:archive'],
              auth: ['mes:pd-project:update'],
              ifShow: row.status === MesPdProjectStatusEnum.PENDING_ARCHIVE,
              popConfirm: {
                title: '确认归档?归档后将生成台账记录,任务不可再修改。',