From a241b66efcc41e973290a6722fb7a4d79b833ea1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 13 十月 2026 09:54:32 +0800
Subject: [PATCH] feat(bi): 为图表配置接口添加名称字段
---
src/views/mes/pd/project/index.vue | 87 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 82 insertions(+), 5 deletions(-)
diff --git a/src/views/mes/pd/project/index.vue b/src/views/mes/pd/project/index.vue
index 24516e1..a62fab5 100644
--- a/src/views/mes/pd/project/index.vue
+++ b/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 ? '姝e湪鎻愪氦鐢熸晥...' : '鑾峰彇瀹℃壒娴佺▼...',
+ 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: '纭褰掓。锛熷綊妗e悗灏嗙敓鎴愬彴璐﹁褰曪紝浠诲姟涓嶅彲鍐嶄慨鏀广��',
--
Gitblit v1.9.3