diff --git a/src/api/platform/workflow/extension/entity/workflowButton.ts b/src/api/platform/workflow/extension/entity/workflowButton.ts new file mode 100644 index 0000000..119a8ca --- /dev/null +++ b/src/api/platform/workflow/extension/entity/workflowButton.ts @@ -0,0 +1,17 @@ +import type { R } from '/#/axios'; +import type { Page } from '/@/api/common/data/entity'; + +export type WorkflowButtonParams = Page & WorkflowButton; + +export interface WorkflowButton { + id: string; + name: string; + code: string; + isHide: string; + next: string; + sort: number; + activityExtensionDataId: string; + [key:string]: any; +} + +export type WorkflowButtonResult = R; diff --git a/src/views/workflow/task/TaskForm.vue b/src/views/workflow/task/TaskForm.vue index a5a6765..d5863a5 100644 --- a/src/views/workflow/task/TaskForm.vue +++ b/src/views/workflow/task/TaskForm.vue @@ -1,6 +1,6 @@ @@ -11,15 +11,11 @@ * Copyright © 2023-2023 海豚生态开源社区 All rights reserved. * author wangxiang4 */ - import { ref, unref,reactive, toRaw } from 'vue'; + import { reactive, onActivated } from 'vue'; import { LayoutContent } from 'ant-design-vue'; - import {TreeItem} from '/@/components/Tree'; - import {useForm} from '/@/components/Form'; - import {formSchema} from '/@/views/system/role/role.data'; - import {DrawerProps, useDrawerInner} from '/@/components/Drawer'; - import {listToTree} from '/@/utils/helper/treeHelper'; - import {getRoleMenuIds, listMenu} from '/@/api/platform/system/controller/menu'; - import {addRole, editRole, getRole} from '/@/api/platform/system/controller/role'; + import type { FormProperty } from '/@/api/platform/workflow/entity/formProperty'; + import type { Workflow } from '/@/api/platform/workflow/entity/workflow'; + import type { WorkflowButton } from '/@/api/platform/workflow/extension/entity/workflowButton'; /** 类型规范统一声明定义区域 */ interface WindowState { @@ -30,132 +26,81 @@ // 表单类型(1:动态表单,2:外置表单) formType: string; // 外置表单路径 - formPath: ''; + formPath: string; // 外置表单是否只读 - formReadOnly: false; + formReadOnly: false, // 外置表单业务数据绑定ID - businessId: ''; + businessId: string, // 动态表单字段配置数据 - taskFormData: [], + taskFormData: FormProperty[], // 设置选择任务选项卡 - taskSelectedTab: 'formInfo', + taskSelectedTab: string, // 流程任务ID - taskId: '', + taskId: string, // 流程任务定义key - taskDefKey: '', + taskDefKey: string, // 流程定义ID - processDefId: '', + processDefId: string, // 流程实例ID - processInsId: '', + processInsId: string, // 流程定义Key - processDefKey: '', + processDefKey: string, // 当前任务表单操作状态 - status: '', + status: string, // 历史流转信息 - historyFlowChangeList: [], + historyFlowChangeList: Workflow[], // 当前操作按钮配置信息 - buttons: [], + buttons: WorkflowButton[], // 是否抄送 - isCC: false, + isCC: boolean, // 是否指定代理人 - isAssign: false, - // 打印表单信息 - printInfo: { - id: 'printForm', - popTitle: '', - extraCss: '', - extraHead: '' - }, + isAssign: boolean, // 审批表单信息 auditForm: { - message: '', - mesCode: '', - mesName: '', + message: string, + mesCode: string, + mesName: string, // 抄送用户ID - userIds: '', + userIds: string, // 任务代理人ID - assignee: '' - } + assignee: string, + }, } /** 通用变量统一声明区域 */ const state = reactive({ - // 操作标签 - tag: '', - // 菜单树形数据 - menuTree: [], - // 选中复选框的树节点 - checkedKeys: {}, - }); - /** https://v3.cn.vuejs.org/api/options-data.html#emits */ - const emit = defineEmits(['success', 'register']); - const [registerForm, { resetFields, setFieldsValue, validate, clearValidate }] = useForm({ - labelWidth: 100, - schemas: formSchema, - showActionButtonGroup: false, - baseColProps: { span: 24 } - }); - const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data: BoxPayload = { _tag: '' }) => { - // 处理清除脏数据 - await resetFields(); - await clearValidate(); - // 处理设置数据 - state.tag = data._tag; - state.menuTree = listToTree(await listMenu()); - const roleId = data.record?.id; - const props: Partial = { confirmLoading: false }; - // 采用tag标签区分操作 - switch (state.tag) { - case 'add': - props.title = '新增角色'; - break; - case 'edit': - props.title = '编辑角色'; - const result = await getRoleMenuIds(roleId); - const role = await getRole(roleId); - const checked = { - checkedKeys: result.extend?.filter(item => item.checkeType == '1')?.map(item=> item.menuId), - halfCheckedKeys: result.extend.filter(item => item.checkeType == '2')?.map(item=> item.menuId) - }; - state.checkedKeys = checked; - await setFieldsValue(Object.assign({}, role, { menuIds: checked.checkedKeys })); - break; - } - // 尾部:设置处理后的最终配置数据 - setDrawerProps(props); - }); + formTitle: '', + formKey: '', + formType: '', + formPath: '', + formReadOnly: false, + businessId: '', + taskFormData: [], - /** 处理选中的半复选框合并至勾选数据中 */ - function handleHalfCheckedKeysMerge (checkedKeys: string[], e) { - state.checkedKeys = { checkedKeys, halfCheckedKeys: e.halfCheckedKeys }; - } + taskSelectedTab: 'formInfo', + taskId: '', + taskDefKey: '', + + processDefId: '', + processInsId: '', + processDefKey: '', - /** 处理弹出框提交 */ - async function handleSubmit() { - try { - // 提取验证数据 - const formData = await validate(); - // 处理提交之前逻辑 - setDrawerProps({ confirmLoading: true }); - formData.menuIds = toRaw(state.checkedKeys); - // 采用tag标签区分操作 - switch (state.tag) { - case 'add': - await addRole(formData); - break; - case 'edit': - await editRole(formData); - break; - } - // 处理提交完成之后逻辑 - closeDrawer(); - emit('success'); - } finally { - setDrawerProps({ confirmLoading: false }); + status: '', + historyFlowChangeList: [], + buttons: [], + isCC: false, + isAssign: false, + + auditForm: { + message: '', + mesCode: '', + mesName: '', + userIds: '', + assignee: '' } - } + });