From 556aef3fd1b82825baaa61da19ba932cc0a82d28 Mon Sep 17 00:00:00 2001 From: caixiaofeng <1941338475@qq.com> Date: Thu, 12 Oct 2023 16:48:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=93=8D=E4=BD=9C=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/flowDesign/hooks/useNode.ts | 9 +- src/views/flowDesign/nodes/Approval/index.ts | 13 ++ src/views/flowDesign/nodes/Node/index.vue | 18 ++- src/views/flowDesign/nodes/Start/index.vue | 1 + src/views/flowDesign/penal/ApprovalAttr.vue | 126 ++++++++++++++++++- 5 files changed, 164 insertions(+), 3 deletions(-) diff --git a/src/views/flowDesign/hooks/useNode.ts b/src/views/flowDesign/hooks/useNode.ts index 360b8fa..1d5f136 100644 --- a/src/views/flowDesign/hooks/useNode.ts +++ b/src/views/flowDesign/hooks/useNode.ts @@ -69,7 +69,14 @@ const useNode = (node: FlowNode) => { multi: 'sequential', choice: false, self: false, - nobody: 'reject' + nobody: 'reject', + operations: { + complete: true, + refuse: true, + transfer: false, + addMulti: false, + minusMulti: false + } } as ApprovalNode if (child) { child.pid = id diff --git a/src/views/flowDesign/nodes/Approval/index.ts b/src/views/flowDesign/nodes/Approval/index.ts index 5b1865f..b6b806b 100644 --- a/src/views/flowDesign/nodes/Approval/index.ts +++ b/src/views/flowDesign/nodes/Approval/index.ts @@ -17,4 +17,17 @@ export interface ApprovalNode extends FlowNode { multi: "sequential" | "joint" | "single" // 审批人为空时处理方式:reject-驳回,admin-管理员,pass-通过 nobody: 'reject' | 'pass' + // 操作权限 + operations: { + // 同意 + complete: boolean + // 拒绝 + refuse: boolean + // 转办 + transfer: boolean + // 加签 + addMulti: boolean + // 减签 + minusMulti: boolean + } } diff --git a/src/views/flowDesign/nodes/Node/index.vue b/src/views/flowDesign/nodes/Node/index.vue index 539ba66..90c8593 100644 --- a/src/views/flowDesign/nodes/Node/index.vue +++ b/src/views/flowDesign/nodes/Node/index.vue @@ -12,6 +12,7 @@ export interface NodeProps { color?: string readOnly?: boolean close?: boolean + arrow?: boolean } const icons: Record = { @@ -23,7 +24,8 @@ const icons: Record = { const $props = withDefaults(defineProps(), { readOnly: false, - close: true + close: true, + arrow: true }) const $emits = defineEmits<{ (e: 'update:node', title: string): void @@ -168,5 +170,19 @@ const onClickOutside = () => { } } } + .arrow{ + /* &:before{ + content: ''; + position: absolute; + top: -13px; + left: 50%; + transform: translateX(-50%); + width: 0; + border-style: solid; + border-width: 8px 6px 0; + border-color: var(--el-border-color) transparent transparent; + background-color: var(--el-bg-color); + }*/ + } } diff --git a/src/views/flowDesign/nodes/Start/index.vue b/src/views/flowDesign/nodes/Start/index.vue index 04cc2aa..e98907f 100644 --- a/src/views/flowDesign/nodes/Start/index.vue +++ b/src/views/flowDesign/nodes/Start/index.vue @@ -13,6 +13,7 @@ withDefaults(defineProps(), {}) @@ -100,4 +200,28 @@ const {node} = useVModels($props, $emits) align-items: flex-start !important; flex-direction: column !important; } +.flow-opt-item { + display: flex; + align-items: center; + + .flow-opt-item__icon { + background: var(--el-color-primary); + color: #fff; + border-radius: 7px; + padding: 3px; + } + + .flow-opt-item__content { + box-sizing: border-box; + flex: 1; + margin-left: 20px; + font-size: 14px; + + .flow-opt-item__second { + margin-top: 3px; + font-size: 12px; + color: var(--el-text-color-placeholder); + } + } +}