From d1b185507498cca35c481e66b8fbe61f663bc304 Mon Sep 17 00:00:00 2001 From: caixiaofeng <1941338475@qq.com> Date: Fri, 24 Nov 2023 23:11:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=84=E9=80=81=E4=BA=BA=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/flowDesign/hooks/useNode.ts | 12 +++- src/views/flowDesign/nodes/Cc/index.ts | 3 + src/views/flowDesign/penal/ApprovalAttr.vue | 22 ++++++- src/views/flowDesign/penal/CcAttr.vue | 65 ++++++++++++++++++++- 4 files changed, 98 insertions(+), 4 deletions(-) diff --git a/src/views/flowDesign/hooks/useNode.ts b/src/views/flowDesign/hooks/useNode.ts index 195364b..943b4ab 100644 --- a/src/views/flowDesign/hooks/useNode.ts +++ b/src/views/flowDesign/hooks/useNode.ts @@ -148,7 +148,17 @@ const useNode = (node: Ref, fields: Ref) => { type: 'cc', name: '抄送人', child: child, - users: [] + users: [], + formProperties: fields.value.map(item => { + return { + id: item.id, + name: item.title, + readable: true, + writeable: false, + hidden: false, + required: false + } as FormProperty + }) } as CcNode if (child) { child.pid = id diff --git a/src/views/flowDesign/nodes/Cc/index.ts b/src/views/flowDesign/nodes/Cc/index.ts index 8ac153e..6472aed 100644 --- a/src/views/flowDesign/nodes/Cc/index.ts +++ b/src/views/flowDesign/nodes/Cc/index.ts @@ -1,4 +1,7 @@ import { FlowNode } from '../Node/index' +import {FormProperty} from "~/views/flowDesign/index"; export interface CcNode extends FlowNode { users: string[] + // 表单字段 + formProperties: FormProperty[] } \ No newline at end of file diff --git a/src/views/flowDesign/penal/ApprovalAttr.vue b/src/views/flowDesign/penal/ApprovalAttr.vue index a40cb21..0cb4d9d 100644 --- a/src/views/flowDesign/penal/ApprovalAttr.vue +++ b/src/views/flowDesign/penal/ApprovalAttr.vue @@ -2,7 +2,7 @@ import Segmented from '~/components/Segmented' import {useVModels} from '@vueuse/core' import {ApprovalNode} from '../nodes/Approval/index' -import {computed, inject, Ref, ref} from "vue"; +import {computed, inject, Ref, ref, watchEffect} from "vue"; import {CircleCheck, CircleClose, Switch, Plus, Minus} from "@element-plus/icons-vue"; import {Field} from "~/components/Render/index"; import {FormProperty} from "~/views/flowDesign/index"; @@ -123,6 +123,26 @@ const changeHidden = (row: FormProperty) => { row.required = false } } +watchEffect(() => { + const formProperties = node.value.formProperties + node.value.formProperties = fields.value.filter(e => e.value !== undefined).map(e => ({ + id: e.id, + name: e.title, + readable: e.props.disabled || false, + writeable: !e.props.disabled || false, + hidden: e.props.hidden || false, + required: (e.props.required && !e.props.disabled) || false + })) + node.value.formProperties.forEach(item => { + const properties = formProperties.find(f => f.id === item.id) + if (properties) { + item.readable = properties.readable + item.writeable = properties.writeable + item.hidden = properties.hidden + item.required = properties.required + } + }) +})