diff --git a/apps/web-antd/src/router/routes/modules/bpm.ts b/apps/web-antd/src/router/routes/modules/bpm.ts index 05e0e5664..bd4a7a209 100644 --- a/apps/web-antd/src/router/routes/modules/bpm.ts +++ b/apps/web-antd/src/router/routes/modules/bpm.ts @@ -9,24 +9,6 @@ const routes: RouteRecordRaw[] = [ hideInMenu: true, }, children: [ - { - path: 'task', - name: 'BpmTask', - meta: { - title: '审批中心', - icon: 'ant-design:history-outlined', - }, - children: [ - { - path: 'my', - name: 'BpmTaskMy', - component: () => import('#/views/bpm/processInstance/index.vue'), - meta: { - title: '我的流程', - }, - }, - ], - }, { path: 'process-instance/detail', component: () => import('#/views/bpm/processInstance/detail/index.vue'), diff --git a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/custom-config/components/UserTaskCustomConfig.vue b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/custom-config/components/UserTaskCustomConfig.vue index 7d7b9d075..fc0fd0171 100644 --- a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/custom-config/components/UserTaskCustomConfig.vue +++ b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/custom-config/components/UserTaskCustomConfig.vue @@ -74,7 +74,6 @@ const assignEmptyUserIdsEl = ref(); const assignEmptyUserIds = ref(); // 操作按钮 -// TODO @puhui999:这块迁移有点问题,按钮不能操作;另外,label 也没展示。 const buttonsSettingEl = ref(); const { btnDisplayNameEdit, changeBtnDisplayName } = useButtonsSetting(); const btnDisplayNameBlurEvent = (index: number) => { @@ -179,7 +178,7 @@ const resetCustomConfigList = () => { }); // 操作按钮 - buttonsSettingEl.value = elExtensionElements.value.values?.find( + buttonsSettingEl.value = elExtensionElements.value.values?.filter( (ex: any) => ex.$type === `${prefix}:ButtonsSetting`, ); if (buttonsSettingEl.value.length === 0) { @@ -196,7 +195,7 @@ const resetCustomConfigList = () => { // 字段权限 if (formType.value === BpmModelFormType.NORMAL) { - const fieldsPermissionList = elExtensionElements.value.values?.find( + const fieldsPermissionList = elExtensionElements.value.values?.filter( (ex: any) => ex.$type === `${prefix}:FieldsPermission`, ); fieldsPermissionEl.value = []; @@ -373,7 +372,6 @@ function useButtonsSetting() { } /** 批量更新权限 */ -// TODO @lesan:这个页面,有一些 idea 红色报错,咱要不要 fix 下! const updatePermission = (type: string) => { fieldsPermissionEl.value.forEach((field: any) => { if (type === 'READ') { diff --git a/apps/web-antd/src/views/bpm/model/form/index.vue b/apps/web-antd/src/views/bpm/model/form/index.vue index 8dc2045b7..49e9e8999 100644 --- a/apps/web-antd/src/views/bpm/model/form/index.vue +++ b/apps/web-antd/src/views/bpm/model/form/index.vue @@ -259,9 +259,11 @@ async function validateAllSteps() { return true; } +const saveLoading = ref(false); /** 保存操作 */ async function handleSave() { try { + saveLoading.value = true; // 保存前校验所有步骤的数据 const result = await validateAllSteps(); if (!result) { @@ -309,9 +311,12 @@ async function handleSave() { } } catch (error: any) { console.error('保存失败:', error); + } finally { + saveLoading.value = false; } } - +// 发布加载中状态 +const deployLoading = ref(false); /** 发布操作 */ async function handleDeploy() { try { @@ -319,6 +324,7 @@ async function handleDeploy() { if (!formData.value.id) { await confirm('是否确认发布该流程?'); } + deployLoading.value = true; // 1.2 校验所有步骤 await validateAllSteps(); @@ -342,6 +348,8 @@ async function handleDeploy() { } catch (error: any) { console.error('发布失败:', error); message.warning(error.message || '发布失败'); + } finally { + deployLoading.value = false; } } @@ -448,11 +456,12 @@ onBeforeUnmount(() => { - diff --git a/apps/web-antd/src/views/bpm/processInstance/create/index.vue b/apps/web-antd/src/views/bpm/processInstance/create/index.vue index 691cf0bbb..638fed593 100644 --- a/apps/web-antd/src/views/bpm/processInstance/create/index.vue +++ b/apps/web-antd/src/views/bpm/processInstance/create/index.vue @@ -228,9 +228,10 @@ onMounted(() => { > -
+
{{ definition.name?.slice(0, 2) }} @@ -283,7 +287,6 @@ onMounted(() => { diff --git a/apps/web-antd/src/views/bpm/processInstance/create/modules/form.vue b/apps/web-antd/src/views/bpm/processInstance/create/modules/form.vue index 4973fc4b5..315027d7a 100644 --- a/apps/web-antd/src/views/bpm/processInstance/create/modules/form.vue +++ b/apps/web-antd/src/views/bpm/processInstance/create/modules/form.vue @@ -104,7 +104,7 @@ async function submitForm() { // 关闭并提示 message.success('发起流程成功'); await closeCurrentTab(); - await router.push({ name: 'BpmTaskMy' }); + await router.push({ name: 'BpmProcessInstanceMy' }); } finally { processInstanceStartLoading.value = false; } diff --git a/apps/web-antd/src/views/bpm/processInstance/detail/index.vue b/apps/web-antd/src/views/bpm/processInstance/detail/index.vue index 92a8ea329..7d146a871 100644 --- a/apps/web-antd/src/views/bpm/processInstance/detail/index.vue +++ b/apps/web-antd/src/views/bpm/processInstance/detail/index.vue @@ -212,20 +212,27 @@ watch( } }, ); - +const loading = ref(false); /** 初始化 */ onMounted(async () => { - await getDetail(); - // 获得用户列表 - userOptions.value = await getSimpleUserList(); + try { + loading.value = true; + await getDetail(); + // 获得用户列表 + userOptions.value = await getSimpleUserList(); + } finally { + loading.value = false; + } }); diff --git a/apps/web-antd/src/views/bpm/processInstance/detail/modules/signature.vue b/apps/web-antd/src/views/bpm/processInstance/detail/modules/signature.vue index 4122c1fc0..c3f1a86c9 100644 --- a/apps/web-antd/src/views/bpm/processInstance/detail/modules/signature.vue +++ b/apps/web-antd/src/views/bpm/processInstance/detail/modules/signature.vue @@ -5,7 +5,7 @@ import { useVbenModal } from '@vben/common-ui'; import { IconifyIcon } from '@vben/icons'; import { base64ToFile } from '@vben/utils'; -import { Button, Space, Tooltip } from 'ant-design-vue'; +import { Button, Tooltip } from 'ant-design-vue'; import Vue3Signature from 'vue3-signature'; import { uploadFile } from '#/api/infra/file'; @@ -36,30 +36,29 @@ const [Modal, modalApi] = useVbenModal({ diff --git a/apps/web-antd/src/views/bpm/processInstance/detail/modules/task-list.vue b/apps/web-antd/src/views/bpm/processInstance/detail/modules/task-list.vue index c3fb1050d..0565fcb9b 100644 --- a/apps/web-antd/src/views/bpm/processInstance/detail/modules/task-list.vue +++ b/apps/web-antd/src/views/bpm/processInstance/detail/modules/task-list.vue @@ -44,7 +44,7 @@ function useGridColumns(): VxeTableGridOptions['columns'] { field: 'approver', title: '审批人', slots: { - default: ({ row }: { row: BpmTaskApi.TaskManager }) => { + default: ({ row }: { row: BpmTaskApi.Task }) => { return row.assigneeUser?.nickname || row.ownerUser?.nickname; }, }, @@ -106,7 +106,7 @@ function handleRefresh() { } /** 显示表单详情 */ -async function handleShowFormDetail(row: BpmTaskApi.TaskManager) { +async function handleShowFormDetail(row: BpmTaskApi.Task) { // 设置表单配置和表单字段 taskForm.value = { rule: [], @@ -141,7 +141,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ keepSource: true, showFooter: true, border: true, - height: 'auto', proxyConfig: { ajax: { query: async () => { @@ -159,7 +158,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ toolbarConfig: { enabled: false, }, - } as VxeTableGridOptions, + } as VxeTableGridOptions, }); defineExpose({ @@ -168,7 +167,7 @@ defineExpose({ diff --git a/apps/web-ele/src/views/bpm/processInstance/detail/index.vue b/apps/web-ele/src/views/bpm/processInstance/detail/index.vue index 5713fd6fa..ed7e0bccd 100644 --- a/apps/web-ele/src/views/bpm/processInstance/detail/index.vue +++ b/apps/web-ele/src/views/bpm/processInstance/detail/index.vue @@ -344,24 +344,22 @@ onMounted(async () => { -
- - -
+ +