From 739a1c29a2eeeb27de96718d534fb63ccc0b846a Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Mon, 6 Jan 2025 17:25:59 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20Simple=E8=AE=BE=E8=AE=A1=E5=99=A8-?=
=?UTF-8?q?=E7=9B=91=E5=90=AC=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/NodeHandler.vue | 5 +-
.../SimpleProcessDesignerV2/src/consts.ts | 27 +++
.../src/nodes-config/UserTaskNodeConfig.vue | 155 +++++++++++++++++-
3 files changed, 184 insertions(+), 3 deletions(-)
diff --git a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
index 4dfd51ad..13ce4387 100644
--- a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+++ b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
@@ -120,7 +120,10 @@ const addNode = (type: number) => {
type: AssignEmptyHandlerType.APPROVE
},
assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT,
- childNode: props.childNode
+ childNode: props.childNode,
+ createTaskListener: {
+ enable: false
+ }
}
emits('update:childNode', data)
}
diff --git a/src/components/SimpleProcessDesignerV2/src/consts.ts b/src/components/SimpleProcessDesignerV2/src/consts.ts
index 10d8a21b..9a20d0f8 100644
--- a/src/components/SimpleProcessDesignerV2/src/consts.ts
+++ b/src/components/SimpleProcessDesignerV2/src/consts.ts
@@ -93,6 +93,8 @@ export interface SimpleFlowNode {
assignEmptyHandler?: AssignEmptyHandler
// 审批节点的审批人与发起人相同时,对应的处理类型
assignStartUserHandlerType?: number
+ // 创建任务监听器
+ createTaskListener: ListenerHandler
// 条件类型
conditionType?: ConditionType
// 条件表达式
@@ -222,6 +224,31 @@ export type AssignEmptyHandler = {
userIds?: number[]
}
+/**
+ * 监听器的结构定义
+ */
+export type ListenerHandler = {
+ enable: boolean
+ path: string
+ header: ListenerMap[]
+ body: ListenerMap[]
+}
+export type ListenerMap = {
+ key: string
+ type: number
+ value: string
+}
+export const LISTENER_MAP_TYPES = [
+ {
+ value: 1,
+ label: '固定值'
+ },
+ {
+ value: 2,
+ label: '表单'
+ }
+]
+
// 审批拒绝类型枚举
export enum RejectHandlerType {
/**
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
index d4b1101f..82aecbe5 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
@@ -434,6 +434,133 @@
+
+
+
+
+ 创建任务
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加一行
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加一行
+
+
+
+
+
+ 指派任务执行人员
+
+
+
+
+
+
+ 完成任务
+
+
+
+
+
+
+
@@ -469,7 +596,8 @@ import {
ASSIGN_EMPTY_HANDLER_TYPES,
AssignEmptyHandlerType,
FieldPermissionType,
- ProcessVariableEnum
+ ProcessVariableEnum,
+ LISTENER_MAP_TYPES
} from '../consts'
import {
@@ -513,7 +641,7 @@ const { settingVisible, closeDrawer, openDrawer } = useDrawer()
// 节点名称配置
const { nodeName, showInput, clickIcon, blurEvent } = useNodeName(NodeType.USER_TASK_NODE)
// 激活的 Tab 标签页
-const activeTabName = ref('user')
+const activeTabName = ref('listener')
// 表单字段权限设置
const { formType, fieldsPermissionConfig, formFieldOptions, getNodeConfigFormFields } =
useFormFieldsPermission(FieldPermissionType.READ)
@@ -662,6 +790,13 @@ const saveConfig = async () => {
currentNode.value.fieldsPermission = fieldsPermissionConfig.value
// 设置按钮权限
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.showText = showText
settingVisible.value = false
@@ -713,6 +848,11 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
buttonsSetting.value = cloneDeep(node.buttonsSetting) || DEFAULT_BUTTON_SETTING
// 4. 表单字段权限配置
getNodeConfigFormFields(node.fieldsPermission)
+ // 创建任务监听器
+ configForm.value.createTaskListenerEnable = node.createTaskListener.enable
+ configForm.value.createTaskListenerPath = node.createTaskListener.path
+ configForm.value.createTaskListenerHeader = node.createTaskListener.header ?? []
+ configForm.value.createTaskListenerBody = node.createTaskListener.body ?? []
}
defineExpose({ openDrawer, showUserTaskNodeConfig }) // 暴露方法给父组件
@@ -825,6 +965,17 @@ function useTimeoutHandler() {
cTimeoutMaxRemindCount
}
}
+
+const addTaskListenerMap = (arr) => {
+ arr.push({
+ key: '',
+ type: 1,
+ value: ''
+ })
+}
+const deleteTaskListenerMap = (arr, index) => {
+ arr.splice(index, 1)
+}