From 452e5c5e9a340367c8fdb14b0bdecc96dcb29491 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 19 八月 2026 11:01:28 +0800
Subject: [PATCH] fix(router): 更新一袋一码首页路由标题
---
src/views/mes/pd/project/index.vue | 170 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 116 insertions(+), 54 deletions(-)
diff --git a/src/views/mes/pd/project/index.vue b/src/views/mes/pd/project/index.vue
index 1428d31..6727d6d 100644
--- a/src/views/mes/pd/project/index.vue
+++ b/src/views/mes/pd/project/index.vue
@@ -2,6 +2,7 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesPdProjectApi } from '#/api/mes/pd/project';
+import { onActivated } from 'vue';
import { useRouter } from 'vue-router';
import { Page, useVbenModal } from '#/packages/effects/common-ui/src';
@@ -12,17 +13,21 @@
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import {
+ archivePdProject,
+
deletePdProject,
exportPdProject,
+ getPdProjectApproveProcessList,
getPdProjectPage,
+ publishPdProject,
+
} from '#/api/mes/pd/project';
import { $t } from '#/locales';
import { useGridColumns, useGridFormSchema } from './data';
import CreateForm from './modules/create-form.vue';
import Form from './modules/form.vue';
-import PublishForm from './modules/publish-form.vue';
-import WorkflowActionForm from './modules/workflow-action-form.vue';
+import ProcessSelectModal from './modules/process-select-modal.vue';
const router = useRouter();
@@ -36,13 +41,8 @@
destroyOnClose: true,
});
-const [PublishModal, publishModalApi] = useVbenModal({
- connectedComponent: PublishForm,
- destroyOnClose: true,
-});
-
-const [WorkflowActionModal, workflowActionModalApi] = useVbenModal({
- connectedComponent: WorkflowActionForm,
+const [ProcessModal, processModalApi] = useVbenModal({
+ connectedComponent: ProcessSelectModal,
destroyOnClose: true,
});
@@ -50,9 +50,8 @@
gridApi.query();
}
-function handleCreateSuccess(projectId: number) {
+function handleCreateSuccess() {
handleRefresh();
- router.push({ name: 'MesPdProjectDetail', params: { id: projectId } });
}
function handleCreate() {
@@ -67,25 +66,74 @@
formModalApi.setData({ formType: 'update', id: row.id }).open();
}
-function handlePublish(row: MesPdProjectApi.Project) {
- publishModalApi.setData({ id: row.id }).open();
+async function handlePublish(row: MesPdProjectApi.Project) {
+ const hideLoading = message.loading({
+ content: '鍙戝竷涓��',
+ duration: 0,
+ });
+ try {
+ await publishPdProject(row.id!);
+ message.success('浠诲姟宸插彂甯冿紝杩涘叆寰呬笂浼犵姸鎬�');
+ handleRefresh();
+ } finally {
+ hideLoading();
+ }
}
-function handleWorkflowAction(
- row: MesPdProjectApi.Project,
- action: 'approve' | 'archive' | 'submit-review',
-) {
- workflowActionModalApi.setData({ id: row.id, action }).open();
+/** 鎻愪氦瀹℃壒 - 鍏堣幏鍙栨祦绋嬪垪琛� */
+async function handleSubmit(row: MesPdProjectApi.Project) {
+ const hideLoading = message.loading({
+ content: '鑾峰彇瀹℃壒娴佺▼...',
+ duration: 0,
+ });
+ try {
+ const processList = await getPdProjectApproveProcessList();
+ hideLoading();
+ if (!processList || processList.length === 0) {
+ message.warning('鏆傛棤鍙敤瀹℃壒娴佺▼锛岃鍏堥厤缃� BPM 娴佺▼');
+ return;
+ }
+ // 鎵撳紑娴佺▼閫夋嫨寮圭獥
+ processModalApi.setData({ id: row.id, processList }).open();
+ } catch {
+ hideLoading();
+ }
+}
+
+/** 鏌ョ湅瀹℃壒璇︽儏 */
+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) {
+ const hideLoading = message.loading({
+ content: '褰掓。涓��',
+ duration: 0,
+ });
+ try {
+ await archivePdProject(row.id!);
+ message.success('宸插綊妗�');
+ handleRefresh();
+ } finally {
+ hideLoading();
+ }
}
async function handleDelete(row: MesPdProjectApi.Project) {
const hideLoading = message.loading({
- content: $t('ui.actionMessage.deleting', [row.name]),
+ content: $t('ui.actionMessage.deleting', [row.taskName]),
duration: 0,
});
try {
await deletePdProject(row.id!);
- message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
+ message.success($t('ui.actionMessage.deleteSuccess', [row.taskName]));
handleRefresh();
} finally {
hideLoading();
@@ -118,21 +166,24 @@
toolbarConfig: { refresh: true, search: true },
} as VxeTableGridOptions<MesPdProjectApi.Project>,
});
+
+onActivated(() => {
+ handleRefresh();
+});
</script>
<template>
<Page auto-content-height>
<CreateFormModal @success="handleCreateSuccess" />
<FormModal @success="handleRefresh" />
- <PublishModal @success="handleRefresh" />
- <WorkflowActionModal @success="handleRefresh" />
+ <ProcessModal @success="handleRefresh" />
<Grid table-title="璁捐浠诲姟">
<template #toolbar-tools>
<TableAction
:actions="[
{
- label: '鍙戣捣璁捐浠诲姟',
+ label: '鍒涘缓璁捐浠诲姟',
type: 'primary',
icon: ACTION_ICON.ADD,
auth: ['mes:pd-project:create'],
@@ -148,49 +199,60 @@
]"
/>
</template>
- <template #code="{ row }">
- <Button type="link" @click="handleDetail(row)">{{ row.code }}</Button>
+ <template #taskCode="{ row }">
+ <Button type="link" @click="handleDetail(row)">{{ row.taskCode }}</Button>
</template>
<template #actions="{ row }">
<TableAction
:actions="[
{
- label: '鍙戝竷浠诲姟',
+ label: '鍙戝竷',
type: 'link',
auth: ['mes:pd-project:update'],
- ifShow: row.status === MesPdProjectStatusEnum.DRAFT,
- onClick: handlePublish.bind(null, row),
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_PUBLISH,
+ popConfirm: {
+ title: '纭鍙戝竷璇ヤ换鍔★紵鍙戝竷鍚庤繘鍏ュ緟涓婁紶鐘舵�併��',
+ confirm: handlePublish.bind(null, row),
+ },
+ },
+ {
+ label: '涓婁紶璧勬枡',
+ type: 'link',
+ auth: ['mes:pd-project:update'],
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_UPLOAD,
+ onClick: () => handleDetail(row),
+ },
+ {
+ label: '鎻愪氦瀹℃壒',
+ type: 'link',
+ auth: ['mes:pd-project:update'],
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_AUDIT,
+ 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'],
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_ARCHIVE,
+ popConfirm: {
+ title: '纭褰掓。锛熷綊妗e悗灏嗙敓鎴愬彴璐﹁褰曪紝浠诲姟涓嶅彲鍐嶄慨鏀广��',
+ confirm: handleArchive.bind(null, row),
+ },
},
{
label: $t('common.edit'),
type: 'link',
icon: ACTION_ICON.EDIT,
auth: ['mes:pd-project:update'],
- ifShow:
- row.status === MesPdProjectStatusEnum.DRAFT ||
- row.status === MesPdProjectStatusEnum.DESIGNING,
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_PUBLISH,
onClick: handleEdit.bind(null, row),
- },
- {
- label: '鎻愪氦瀹℃牳',
- type: 'link',
- auth: ['mes:pd-project:submit-review'],
- ifShow: row.status === MesPdProjectStatusEnum.DESIGNING,
- onClick: () => handleWorkflowAction(row, 'submit-review'),
- },
- {
- label: '瀹℃牳閫氳繃',
- type: 'link',
- auth: ['mes:pd-drawing-review:review'],
- ifShow: row.status === MesPdProjectStatusEnum.REVIEWING,
- onClick: () => handleWorkflowAction(row, 'approve'),
- },
- {
- label: '褰掓。',
- type: 'link',
- auth: ['mes:pd-project:archive'],
- ifShow: row.status === MesPdProjectStatusEnum.APPROVED,
- onClick: () => handleWorkflowAction(row, 'archive'),
},
{
label: $t('common.delete'),
@@ -198,9 +260,9 @@
danger: true,
icon: ACTION_ICON.DELETE,
auth: ['mes:pd-project:delete'],
- ifShow: row.status === MesPdProjectStatusEnum.DRAFT,
+ ifShow: row.status === MesPdProjectStatusEnum.PENDING_PUBLISH,
popConfirm: {
- title: $t('ui.actionMessage.deleteConfirm', [row.name]),
+ title: $t('ui.actionMessage.deleteConfirm', [row.taskName]),
confirm: handleDelete.bind(null, row),
},
},
--
Gitblit v1.9.3