diff --git a/src/components/ESign/index.ts b/src/components/ESign/index.ts new file mode 100644 index 00000000..e7309d3f --- /dev/null +++ b/src/components/ESign/index.ts @@ -0,0 +1,3 @@ +import ESign from './src/ESign.vue' + +export { ESign } diff --git a/src/components/ESign/src/ESign.vue b/src/components/ESign/src/ESign.vue new file mode 100644 index 00000000..0312613f --- /dev/null +++ b/src/components/ESign/src/ESign.vue @@ -0,0 +1,288 @@ + + + diff --git a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue index f52f54b0..4bb42919 100644 --- a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue +++ b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue @@ -128,7 +128,13 @@ const addNode = (type: number) => { }, assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT, childNode: props.childNode, - createTaskListener: { + taskCreateListener: { + enable: false + }, + taskAssignListener: { + enable: false + }, + taskCompleteListener: { enable: false } } diff --git a/src/components/SimpleProcessDesignerV2/src/consts.ts b/src/components/SimpleProcessDesignerV2/src/consts.ts index 767294e4..63df615c 100644 --- a/src/components/SimpleProcessDesignerV2/src/consts.ts +++ b/src/components/SimpleProcessDesignerV2/src/consts.ts @@ -98,7 +98,11 @@ export interface SimpleFlowNode { // 审批节点的审批人与发起人相同时,对应的处理类型 assignStartUserHandlerType?: number // 创建任务监听器 - createTaskListener?: ListenerHandler + taskCreateListener?: ListenerHandler + // 创建任务监听器 + taskAssignListener?: ListenerHandler + // 创建任务监听器 + taskCompleteListener?: ListenerHandler // 条件类型 conditionType?: ConditionType // 条件表达式 @@ -236,15 +240,25 @@ export type AssignEmptyHandler = { */ export type ListenerHandler = { enable: boolean - path: string - header: ListenerMap[] - body: ListenerMap[] + path?: string + header?: ListenerMap[] + body?: ListenerMap[] } export type ListenerMap = { key: string type: number value: string } +export enum ListenerMapTypeEnum { + /** + * 固定值 + */ + FIXED_VALUE = 1, + /** + * 表单 + */ + FROM_FORM = 2 +} export const LISTENER_MAP_TYPES = [ { value: 1, diff --git a/src/components/SimpleProcessDesignerV2/src/node.ts b/src/components/SimpleProcessDesignerV2/src/node.ts index b3cfc972..4be76867 100644 --- a/src/components/SimpleProcessDesignerV2/src/node.ts +++ b/src/components/SimpleProcessDesignerV2/src/node.ts @@ -14,7 +14,8 @@ import { NODE_DEFAULT_NAME, AssignStartUserHandlerType, AssignEmptyHandlerType, - FieldPermissionType + FieldPermissionType, + ListenerMap } from './consts' import { parseFormFields } from '@/components/FormCreate/src/utils/index' export function useWatchNode(props: { flowNode: SimpleFlowNode }): Ref { @@ -136,6 +137,18 @@ export type UserTaskFormType = { timeDuration?: number maxRemindCount?: number buttonsSetting: any[] + taskCreateListenerEnable?: boolean + taskCreateListenerPath?: string + taskCreateListenerHeader?: ListenerMap[] + taskCreateListenerBody?: ListenerMap[] + taskAssignListenerEnable?: boolean + taskAssignListenerPath?: string + taskAssignListenerHeader?: ListenerMap[] + taskAssignListenerBody?: ListenerMap[] + taskCompleteListenerEnable?: boolean + taskCompleteListenerPath?: string + taskCompleteListenerHeader?: ListenerMap[] + taskCompleteListenerBody?: ListenerMap[] } export type CopyTaskFormType = { diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue index fd82f8f0..962ce9cc 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue @@ -436,133 +436,153 @@ -
+
- - 创建任务 - - - - - -
+
+ + {{ listener.name }} + - - - - - -
- -
- -
-
- - + + + + + + + +
+
+ +
+
+ + + +
+
+ - -
-
- -
-
- -
-
- - 添加一行 - -
- -
-
- -
-
- - + + +
+
+ - +
-
- + + 添加一行 + + + +
+
+ +
+
+ + + +
+
+ + + + +
+
+ +
-
- -
-
- - 添加一行 - -
+ + 添加一行 + + +
- - - - 指派任务执行人员 - - - - - - - - 完成任务 - - - -
@@ -602,7 +622,8 @@ import { AssignEmptyHandlerType, FieldPermissionType, ProcessVariableEnum, - LISTENER_MAP_TYPES + LISTENER_MAP_TYPES, + ListenerMapTypeEnum } from '../consts' import { @@ -693,6 +714,21 @@ const formRules = reactive({ assignEmptyHandlerUserIds: [{ required: true, message: '用户不能为空', trigger: 'change' }], assignStartUserHandlerType: [{ required: true }] }) +// 监听器数组 +const taskListener = ref([ + { + name: '创建任务', + type: 'Create' + }, + { + name: '指派任务执行人员', + type: 'Assign' + }, + { + name: '完成任务', + type: 'Complete' + } +]) const { configForm: tempConfigForm, @@ -796,11 +832,25 @@ const saveConfig = async () => { // 设置按钮权限 currentNode.value.buttonsSetting = buttonsSetting.value // 创建任务监听器 - currentNode.value.createTaskListener = { - enable: configForm.value.createTaskListenerEnable, - path: configForm.value.createTaskListenerPath, - header: configForm.value.createTaskListenerHeader, - body: configForm.value.createTaskListenerBody + currentNode.value.taskCreateListener = { + enable: configForm.value.taskCreateListenerEnable ?? false, + path: configForm.value.taskCreateListenerPath, + header: configForm.value.taskCreateListenerHeader, + body: configForm.value.taskCreateListenerBody + } + // 指派任务监听器 + currentNode.value.taskAssignListener = { + enable: configForm.value.taskAssignListenerEnable ?? false, + path: configForm.value.taskAssignListenerPath, + header: configForm.value.taskAssignListenerHeader, + body: configForm.value.taskAssignListenerBody + } + // 完成任务监听器 + currentNode.value.taskCompleteListener = { + enable: configForm.value.taskCompleteListenerEnable ?? false, + path: configForm.value.taskCompleteListenerPath, + header: configForm.value.taskCompleteListenerHeader, + body: configForm.value.taskCompleteListenerBody } currentNode.value.showText = showText @@ -853,11 +903,22 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => { buttonsSetting.value = cloneDeep(node.buttonsSetting) || DEFAULT_BUTTON_SETTING // 4. 表单字段权限配置 getNodeConfigFormFields(node.fieldsPermission) - // 5. 创建任务监听器 - configForm.value.createTaskListenerEnable = node.createTaskListener.enable - configForm.value.createTaskListenerPath = node.createTaskListener.path - configForm.value.createTaskListenerHeader = node.createTaskListener.header ?? [] - configForm.value.createTaskListenerBody = node.createTaskListener.body ?? [] + // 5. 监听器 + // 5.1 创建任务 + configForm.value.taskCreateListenerEnable = node.taskCreateListener!.enable + configForm.value.taskCreateListenerPath = node.taskCreateListener!.path + configForm.value.taskCreateListenerHeader = node.taskCreateListener?.header ?? [] + configForm.value.taskCreateListenerBody = node.taskCreateListener?.body ?? [] + // 5.2 指派任务 + configForm.value.taskAssignListenerEnable = node.taskAssignListener!.enable + configForm.value.taskAssignListenerPath = node.taskAssignListener!.path + configForm.value.taskAssignListenerHeader = node.taskAssignListener?.header ?? [] + configForm.value.taskAssignListenerBody = node.taskAssignListener?.body ?? [] + // 5.3 完成任务 + configForm.value.taskCompleteListenerEnable = node.taskCompleteListener!.enable + configForm.value.taskCompleteListenerPath = node.taskCompleteListener!.path + configForm.value.taskCompleteListenerHeader = node.taskCompleteListener?.header ?? [] + configForm.value.taskCompleteListenerBody = node.taskCompleteListener?.body ?? [] } defineExpose({ openDrawer, showUserTaskNodeConfig }) // 暴露方法给父组件