diff --git a/apps/web-antd/src/api/workflow/task/model.d.ts b/apps/web-antd/src/api/workflow/task/model.d.ts index 8322e2b7..6cd4ba95 100644 --- a/apps/web-antd/src/api/workflow/task/model.d.ts +++ b/apps/web-antd/src/api/workflow/task/model.d.ts @@ -1,3 +1,9 @@ +export interface ButtonWithPermission { + code: string; + value: null | string; + show: boolean; +} + export interface TaskInfo { id: string; categoryName: string; @@ -28,6 +34,7 @@ export interface TaskInfo { createBy: string; createByName: string; targetNodeName?: string; + buttonList: ButtonWithPermission[]; } export interface CompleteTaskReqData { diff --git a/apps/web-antd/src/views/workflow/components/approval-modal.vue b/apps/web-antd/src/views/workflow/components/approval-modal.vue index 4480818e..becb97f0 100644 --- a/apps/web-antd/src/views/workflow/components/approval-modal.vue +++ b/apps/web-antd/src/views/workflow/components/approval-modal.vue @@ -90,6 +90,8 @@ const [BasicForm, formApi] = useVbenForm({ interface ModalProps { taskId: string; + // 是否具有抄送权限 + copyPermission: boolean; } const [BasicModal, modalApi] = useVbenModal({ @@ -104,7 +106,18 @@ const [BasicModal, modalApi] = useVbenModal({ } modalApi.modalLoading(true); - const { taskId } = modalApi.getData() as ModalProps; + const { taskId, copyPermission } = modalApi.getData() as ModalProps; + // 是否显示抄送选择 + formApi.updateSchema([ + { + fieldName: 'flowCopyList', + dependencies: { + show: copyPermission, + triggerFields: [''], + }, + }, + ]); + await formApi.setFieldValue('taskId', taskId); modalApi.modalLoading(false); diff --git a/apps/web-antd/src/views/workflow/components/approval-panel.vue b/apps/web-antd/src/views/workflow/components/approval-panel.vue index da4c29f5..32a76172 100644 --- a/apps/web-antd/src/views/workflow/components/approval-panel.vue +++ b/apps/web-antd/src/views/workflow/components/approval-panel.vue @@ -25,7 +25,7 @@ import { TabPane, Tabs, } from 'ant-design-vue'; -import { isObject } from 'lodash-es'; +import { isEmpty, isObject } from 'lodash-es'; import { cancelProcessApply, @@ -76,6 +76,33 @@ const showMultiActions = computed(() => { return false; }); +/** + * 按钮权限 + */ +const buttonPermissions = computed(() => { + const record: Record = {}; + if (!currentTask.value) { + return record; + } + currentTask.value.buttonList.forEach((item) => { + record[item.code] = item.show; + }); + return record; +}); + +// 是否显示 `其他` 按钮 +const showButtonOther = computed(() => { + if (isEmpty(buttonPermissions.value)) { + return false; + } + // 加签 减 委托 转办 + const moreCollections = new Set(['addSign', 'subSign', 'transfer', 'trust']); + // 是否包含其中之一 + return Object.keys(buttonPermissions.value).some((key) => { + return moreCollections.has(key) && buttonPermissions.value[key]; + }); +}); + /** * myself 我发起的 * readonly 只读 只用于查看 @@ -227,7 +254,9 @@ const [ApprovalModal, approvalModalApi] = useVbenModal({ connectedComponent: approvalModal, }); function handleApproval() { - approvalModalApi.setData({ taskId: props.task?.id }); + // 是否具有抄送权限 + const copyPermission = buttonPermissions.value?.copy ?? false; + approvalModalApi.setData({ taskId: props.task?.id, copyPermission }); approvalModalApi.open(); } @@ -459,10 +488,20 @@ async function handleCopy(text: string) { 通过 - + 终止 - + 驳回 - 其他 + 其他