diff --git a/apps/vue/src/components/FlowDesign/index.ts b/apps/vue/src/components/FlowDesign/index.ts new file mode 100644 index 000000000..ef42f5bcd --- /dev/null +++ b/apps/vue/src/components/FlowDesign/index.ts @@ -0,0 +1,3 @@ +import ProcessDesign from './src/components/ProcessDesign.vue'; + +export { ProcessDesign }; diff --git a/apps/vue/src/components/FlowDesign/src/components/Ellipsis.vue b/apps/vue/src/components/FlowDesign/src/components/Ellipsis.vue new file mode 100644 index 000000000..07b09746c --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/Ellipsis.vue @@ -0,0 +1,45 @@ + + + + {{ content }} + + + + + + diff --git a/apps/vue/src/components/FlowDesign/src/components/InsertButton.vue b/apps/vue/src/components/FlowDesign/src/components/InsertButton.vue new file mode 100644 index 000000000..81075cf65 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/InsertButton.vue @@ -0,0 +1,115 @@ + + + + + + + 审批人 + + + + 抄送人 + + + + 条件分支 + + + + 并行分支 + + + + 延迟等待 + + + + 触发器 + + + + + + + + + + + + + + diff --git a/apps/vue/src/components/FlowDesign/src/components/OrgItems.vue b/apps/vue/src/components/FlowDesign/src/components/OrgItems.vue new file mode 100644 index 000000000..c9cd382e7 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/OrgItems.vue @@ -0,0 +1,45 @@ + + + + + + + + {{ org.name }} + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/ProcessDesign.vue b/apps/vue/src/components/FlowDesign/src/components/ProcessDesign.vue new file mode 100644 index 000000000..41a453817 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/ProcessDesign.vue @@ -0,0 +1,141 @@ + + + + + + + + + {{ state.scale }}% + + + + + + + + + + + state.showConfig = false" + > + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/config/NodeConfig.vue b/apps/vue/src/components/FlowDesign/src/components/config/NodeConfig.vue new file mode 100644 index 000000000..e69de29bb diff --git a/apps/vue/src/components/FlowDesign/src/components/config/RootNodeConfig.vue b/apps/vue/src/components/FlowDesign/src/components/config/RootNodeConfig.vue new file mode 100644 index 000000000..d796fc516 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/config/RootNodeConfig.vue @@ -0,0 +1,45 @@ + + + 选择能发起该审批的人员/部门,不选则默认开放给所有人 + 请选择 + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/config/TriggerNodeConfig.vue b/apps/vue/src/components/FlowDesign/src/components/config/TriggerNodeConfig.vue new file mode 100644 index 000000000..82545dd8e --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/config/TriggerNodeConfig.vue @@ -0,0 +1,187 @@ + + + + + + 发送网络请求 + 发送邮件 + + + + + + + + + + + + + + + + Header请求头 + + 添加 + + + - + + 表单 + 固定 + + + + + + + + + + + Header请求参数 + + 添加 + 参数类型 - + + json + form + + + + - + + 表单 + 固定 + + + + + + + + + + + + + + 请求结果处理 + 自定义脚本: + + + + 👉 返回值为 ture 则流程通过,为 false 则流程将被驳回 + 支持函数 + setFormByName( + '表单字段名', '表单字段值' + ) + 可改表单数据 + + + 👉 无论请求结果如何,均通过 + + + 请求成功😀: + + + + 请求失败😥: + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/ApprovalNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/ApprovalNode.vue new file mode 100644 index 000000000..c742ef498 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/ApprovalNode.vue @@ -0,0 +1,161 @@ + + $emit('insertNode', type)" + placeholder="请设置审批人" + header-bgc="#ff943e" + > + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/CcNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/CcNode.vue new file mode 100644 index 000000000..4bb292bd7 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/CcNode.vue @@ -0,0 +1,76 @@ + + $emit('insertNode', type)" + placeholder="请设置抄送人" + header-bgc="#3296fa" + > + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/ConcurrentNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/ConcurrentNode.vue new file mode 100644 index 000000000..9233d1559 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/ConcurrentNode.vue @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + 并行任务(同时进行) + + + + + + + + + + + + + + + diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/ConditionNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/ConditionNode.vue new file mode 100644 index 000000000..a6f21f304 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/ConditionNode.vue @@ -0,0 +1,330 @@ + + + + + + + + + + 优先级{{ level }} + + + + + + + + + {{ state.placeholder }} + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/DelayNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/DelayNode.vue new file mode 100644 index 000000000..013f46005 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/DelayNode.vue @@ -0,0 +1,94 @@ + + $emit('insertNode', type)" + placeholder="请设置延时时间" + header-bgc="#f25643" + > + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/EmptyNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/EmptyNode.vue new file mode 100644 index 000000000..bb9c4b382 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/EmptyNode.vue @@ -0,0 +1,19 @@ + + $emit('insertNode', type)"/> + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/Node.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/Node.vue new file mode 100644 index 000000000..999826c3d --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/Node.vue @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + {{placeholder}} + + + + + + + + + + + + + + + + + diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/RootNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/RootNode.vue new file mode 100644 index 000000000..b3d5fd59a --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/RootNode.vue @@ -0,0 +1,52 @@ + + $emit('insertNode', type)" + placeholder="所有人" + header-bgc="#576a95" + header-icon="el-icon-user-solid" + > + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/nodes/TriggerNode.vue b/apps/vue/src/components/FlowDesign/src/components/nodes/TriggerNode.vue new file mode 100644 index 000000000..900f46441 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/nodes/TriggerNode.vue @@ -0,0 +1,79 @@ + + $emit('insertNode', type)" + placeholder="请设置触发器" + header-bgc="#47bc82" + > + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/FlowDesign/src/components/process/DefaultNodeProps.ts b/apps/vue/src/components/FlowDesign/src/components/process/DefaultNodeProps.ts new file mode 100644 index 000000000..a56c95657 --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/process/DefaultNodeProps.ts @@ -0,0 +1,112 @@ +//审批节点默认属性 +export const APPROVAL_PROPS = { + assignedType: "ASSIGN_USER", + mode: "AND", + sign: false, + nobody: { + handler: "TO_PASS", + assignedUser:[] + }, + timeLimit:{ + timeout:{ + unit: "H", + value: 0 + }, + handler:{ + type: "REFUSE", + notify:{ + once: true, + hour: 1 + } + } + }, + assignedUser:[], + formPerms:[], + selfSelect: { + multiple: false + }, + leaderTop: { + endCondition: "TOP", + endLevel: 1, + }, + leader:{ + level: 1 + }, + role:[], + refuse: { + type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE + target: '' //驳回到指定ID的节点 + }, + formUser: '' +} + +//根节点默认属性 +export const ROOT_PROPS = { + assignedUser: [], + formPerms:[] +} + +//条件节点默认属性 +export const CONDITION_PROPS = { + groupsType:"OR", //条件组逻辑关系 OR、AND + groups:[ + { + groupType:"AND", //条件组内条件关系 OR、AND + cids:[], //条件ID集合 + conditions:[] //组内子条件 + } + ], + expression: "" //自定义表达式,灵活构建逻辑关系 +} + +//抄送节点默认属性 +export const CC_PROPS = { + shouldAdd: false, + assignedUser: [], + formPerms:[] +} + +//触发器节点默认属性 +export const TRIGGER_PROPS = { + type: 'WEBHOOK', + http:{ + method: 'GET', //请求方法 支持GET/POST + url: '', //URL地址,可以直接带参数 + headers: [ //http header + { + name: '', + isField: true, + value: '' //支持表达式 ${xxx} xxx为表单字段名称 + } + ], + contentType: 'FORM', //请求参数类型 + params:[ //请求参数 + { + name: '', + isField: true, //是表单字段还是自定义 + value: '' //支持表达式 ${xxx} xxx为表单字段名称 + } + ], + retry: 1, + handlerByScript: false, + success: 'function handlerOk(res) {\n return true;\n}', + fail: 'function handlerFail(res) {\n return true;\n}' + }, + email:{ + subject: '', + to: [], + content: '' + } +} + +//延时节点默认属性 +export const DELAY_PROPS = { + type: "FIXED", //延时类型 FIXED:到达当前节点后延时固定时长 、AUTO:延时到 dateTime设置的时间 + time: 0, //延时时间 + unit: "M", //时间单位 D天 H小时 M分钟 + dateTime: "" //如果当天没有超过设置的此时间点,就延时到这个指定的时间,到了就直接跳过不延时 +} + +export default { + APPROVAL_PROPS, CC_PROPS, DELAY_PROPS, CONDITION_PROPS, ROOT_PROPS, TRIGGER_PROPS +} diff --git a/apps/vue/src/components/FlowDesign/src/components/process/ProcessTree.vue b/apps/vue/src/components/FlowDesign/src/components/process/ProcessTree.vue new file mode 100644 index 000000000..03f95c0df --- /dev/null +++ b/apps/vue/src/components/FlowDesign/src/components/process/ProcessTree.vue @@ -0,0 +1,541 @@ + + +
选择能发起该审批的人员/部门,不选则默认开放给所有人