@@ -14,7 +14,8 @@ import {
14
14
NODE_DEFAULT_NAME ,
15
15
AssignStartUserHandlerType ,
16
16
AssignEmptyHandlerType ,
17
- FieldPermissionType
17
+ FieldPermissionType ,
18
+ ProcessVariableEnum
18
19
} from './consts'
19
20
export function useWatchNode ( props : { flowNode : SimpleFlowNode } ) : Ref < SimpleFlowNode > {
20
21
const node = ref < SimpleFlowNode > ( props . flowNode )
@@ -27,6 +28,61 @@ export function useWatchNode(props: { flowNode: SimpleFlowNode }): Ref<SimpleFlo
27
28
return node
28
29
}
29
30
31
+ // 解析 formCreate 所有表单字段, 并返回
32
+ const parseFormCreateFields = ( formFields ?: string [ ] ) => {
33
+ const result : Array < Record < string , any > > = [ ]
34
+ if ( formFields ) {
35
+ formFields . forEach ( ( fieldStr : string ) => {
36
+ parseFields ( JSON . parse ( fieldStr ) , result )
37
+ } )
38
+ }
39
+ // 固定添加发起人 ID 字段
40
+ result . unshift ( {
41
+ field : ProcessVariableEnum . START_USER_ID ,
42
+ title : '发起人' ,
43
+ type : 'UserSelect' ,
44
+ required : true
45
+ } )
46
+ return result
47
+ }
48
+
49
+ const parseFields = (
50
+ rule : Record < string , any > ,
51
+ fields : Array < Record < string , any > > ,
52
+ parentTitle : string = ''
53
+ ) => {
54
+ const { type, field, $required, title : tempTitle , children } = rule
55
+ if ( field && tempTitle ) {
56
+ let title = tempTitle
57
+ if ( parentTitle ) {
58
+ title = `${ parentTitle } .${ tempTitle } `
59
+ }
60
+ let required = false ;
61
+ if ( $required ) {
62
+ required = true ;
63
+ }
64
+ fields . push ( {
65
+ field,
66
+ title,
67
+ type,
68
+ required
69
+ } )
70
+ // TODO 子表单 需要处理子表单字段
71
+ // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) {
72
+ // // 解析子表单的字段
73
+ // rule.props.rule.forEach((item) => {
74
+ // parseFields(item, fieldsPermission, title)
75
+ // })
76
+ // }
77
+ }
78
+ if ( children && Array . isArray ( children ) ) {
79
+ children . forEach ( ( rule ) => {
80
+ parseFields ( rule , fields )
81
+ } )
82
+ }
83
+ }
84
+
85
+
30
86
/**
31
87
* @description 表单数据权限配置,用于发起人节点 、审批节点、抄送节点
32
88
*/
@@ -57,51 +113,8 @@ export function useFormFieldsPermission(defaultPermission: FieldPermissionType)
57
113
}
58
114
return defaultFieldsPermission
59
115
}
60
- // 解析 formCreate 所有表单字段, 并返回
61
- const parseFormCreateFields = ( formFields ?: string [ ] ) => {
62
- const result : Array < Record < string , any > > = [ ]
63
- if ( formFields ) {
64
- formFields . forEach ( ( fieldStr : string ) => {
65
- parseFields ( JSON . parse ( fieldStr ) , result )
66
- } )
67
- }
68
- return result
69
- }
70
- const parseFields = (
71
- rule : Record < string , any > ,
72
- fields : Array < Record < string , any > > ,
73
- parentTitle : string = ''
74
- ) => {
75
- const { type, field, $required, title : tempTitle , children } = rule
76
- if ( field && tempTitle ) {
77
- let title = tempTitle
78
- if ( parentTitle ) {
79
- title = `${ parentTitle } .${ tempTitle } `
80
- }
81
- let required = false ;
82
- if ( $required ) {
83
- required = true ;
84
- }
85
- fields . push ( {
86
- field,
87
- title,
88
- type,
89
- required
90
- } )
91
- // TODO 子表单 需要处理子表单字段
92
- // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) {
93
- // // 解析子表单的字段
94
- // rule.props.rule.forEach((item) => {
95
- // parseFields(item, fieldsPermission, title)
96
- // })
97
- // }
98
- }
99
- if ( children && Array . isArray ( children ) ) {
100
- children . forEach ( ( rule ) => {
101
- parseFields ( rule , fields )
102
- } )
103
- }
104
- }
116
+
117
+
105
118
106
119
// 获取表单的所有字段,作为下拉框选项
107
120
const formFieldOptions = parseFormCreateFields ( unref ( formFields ) )
@@ -117,50 +130,8 @@ export function useFormFieldsPermission(defaultPermission: FieldPermissionType)
117
130
* @description 获取表单的字段
118
131
*/
119
132
export function useFormFields ( ) {
120
- // 解析后的表单字段
121
133
const formFields = inject < Ref < string [ ] > > ( 'formFields' ) // 流程表单字段
122
- const parseFormFields = ( ) => {
123
- const parsedFormFields : Array < Record < string , string > > = [ ]
124
- if ( formFields ) {
125
- formFields . value . forEach ( ( fieldStr : string ) => {
126
- parseField ( JSON . parse ( fieldStr ) , parsedFormFields )
127
- } )
128
- }
129
- return parsedFormFields
130
- }
131
- // 解析字段。
132
- const parseField = (
133
- rule : Record < string , any > ,
134
- parsedFormFields : Array < Record < string , string > > ,
135
- parentTitle : string = ''
136
- ) => {
137
- const { field, title : tempTitle , children, type } = rule
138
- if ( field && tempTitle ) {
139
- let title = tempTitle
140
- if ( parentTitle ) {
141
- title = `${ parentTitle } .${ tempTitle } `
142
- }
143
- parsedFormFields . push ( {
144
- field,
145
- title,
146
- type
147
- } )
148
- // TODO 子表单 需要处理子表单字段
149
- // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) {
150
- // // 解析子表单的字段
151
- // rule.props.rule.forEach((item) => {
152
- // parseFieldsSetDefaultPermission(item, fieldsPermission, title)
153
- // })
154
- // }
155
- }
156
- if ( children && Array . isArray ( children ) ) {
157
- children . forEach ( ( rule ) => {
158
- parseField ( rule , parsedFormFields )
159
- } )
160
- }
161
- }
162
-
163
- return parseFormFields ( )
134
+ return parseFormCreateFields ( unref ( formFields ) )
164
135
}
165
136
166
137
export type UserTaskFormType = {
@@ -174,7 +145,7 @@ export type UserTaskFormType = {
174
145
userGroups ?: number [ ] // 用户组
175
146
postIds ?: number [ ] // 岗位
176
147
expression ?: string // 流程表达式
177
- userFieldOnForm ?: string // 表单内成员字段
148
+ userFieldOnForm ?: string // 表单内用户字段
178
149
approveRatio ?: number
179
150
rejectHandlerType ?: RejectHandlerType
180
151
returnNodeId ?: string
@@ -197,7 +168,7 @@ export type CopyTaskFormType = {
197
168
userIds ?: number [ ] // 用户
198
169
userGroups ?: number [ ] // 用户组
199
170
postIds ?: number [ ] // 岗位
200
- userFieldOnForm ?: string // 表单内成员字段
171
+ userFieldOnForm ?: string // 表单内用户字段
201
172
expression ?: string // 流程表达式
202
173
}
203
174
@@ -211,6 +182,7 @@ export function useNodeForm(nodeType: NodeType) {
211
182
const deptOptions = inject < Ref < DeptApi . DeptVO [ ] > > ( 'deptList' ) // 部门列表
212
183
const userGroupOptions = inject < Ref < UserGroupApi . UserGroupVO [ ] > > ( 'userGroupList' ) // 用户组列表
213
184
const deptTreeOptions = inject ( 'deptTree' ) // 部门树
185
+ const formFields = inject < Ref < string [ ] > > ( 'formFields' ) // 流程表单字段
214
186
const configForm = ref < UserTaskFormType | CopyTaskFormType > ( )
215
187
if ( nodeType === NodeType . USER_TASK_NODE ) {
216
188
configForm . value = {
@@ -306,9 +278,11 @@ export function useNodeForm(nodeType: NodeType) {
306
278
}
307
279
}
308
280
309
- // 表单内成员字段
281
+ // 表单内用户字段
310
282
if ( configForm . value ?. candidateStrategy === CandidateStrategy . USER_FIELD_ON_FORM ) {
311
- showText = `表单内用户字段`
283
+ const formFieldOptions = parseFormCreateFields ( unref ( formFields ) )
284
+ const item = formFieldOptions . find ( ( item ) => item . field === configForm . value ?. userFieldOnForm )
285
+ showText = `表单用户:${ item ?. title } `
312
286
}
313
287
314
288
// 发起人自选
0 commit comments