19
19
v-model =" detailForm.value"
20
20
:option =" detailForm.option"
21
21
@submit =" submitForm"
22
- >
23
- <template #type-startUserSelect >
24
- <el-col :span =" 24" >
25
- <el-card class =" mb-10px" >
26
- <template #header >指定审批人</template >
27
- <el-form
28
- :model =" startUserSelectAssignees"
29
- :rules =" startUserSelectAssigneesFormRules"
30
- ref =" startUserSelectAssigneesFormRef"
31
- >
32
- <el-form-item
33
- v-for =" userTask in startUserSelectTasks"
34
- :key =" userTask.id"
35
- :label =" `任务【${userTask.name}】`"
36
- :prop =" userTask.id"
37
- >
38
- <el-select
39
- v-model =" startUserSelectAssignees[userTask.id]"
40
- multiple
41
- placeholder =" 请选择审批人"
42
- >
43
- <el-option
44
- v-for =" user in userList"
45
- :key =" user.id"
46
- :label =" user.nickname"
47
- :value =" user.id"
48
- />
49
- </el-select >
50
- </el-form-item >
51
- </el-form >
52
- </el-card >
53
- </el-col >
54
- </template >
55
- </form-create >
22
+ />
56
23
</el-col >
57
24
58
25
<el-col :span =" 6" :offset =" 1" >
61
28
ref =" timelineRef"
62
29
:activity-nodes =" activityNodes"
63
30
:show-status-icon =" false"
64
- candidateField =" candidateUserList"
31
+ :startUserSelectTasks =" startUserSelectTasks"
32
+ :startUserSelectAssignees =" startUserSelectAssignees"
33
+ @select-user-confirm =" selectUserConfirm"
65
34
/>
66
35
</el-col >
67
36
</el-row >
72
41
<el-tab-pane label =" 流程图" name =" diagram" >
73
42
<div class =" form-scroll-area" >
74
43
<!-- BPMN 流程图预览 -->
75
- <ProcessInstanceBpmnViewer
76
- :bpmn-xml =" bpmnXML"
77
- v-if =" BpmModelType.BPMN === selectProcessDefinition.modelType"
44
+ <ProcessInstanceBpmnViewer
45
+ :bpmn-xml =" bpmnXML"
46
+ v-if =" BpmModelType.BPMN === selectProcessDefinition.modelType"
78
47
/>
79
48
80
49
<!-- Simple 流程图预览 -->
81
- <ProcessInstanceSimpleViewer
82
- :simple-json =" simpleJson"
83
- v-if =" BpmModelType.SIMPLE === selectProcessDefinition.modelType"
50
+ <ProcessInstanceSimpleViewer
51
+ :simple-json =" simpleJson"
52
+ v-if =" BpmModelType.SIMPLE === selectProcessDefinition.modelType"
84
53
/>
85
54
</div >
86
55
</el-tab-pane >
@@ -115,7 +84,6 @@ import type { ApiAttrs } from '@form-create/element-ui/types/config'
115
84
import { useTagsViewStore } from ' @/store/modules/tagsView'
116
85
import * as ProcessInstanceApi from ' @/api/bpm/processInstance'
117
86
import * as DefinitionApi from ' @/api/bpm/definition'
118
- import * as UserApi from ' @/api/system/user'
119
87
120
88
defineOptions ({ name: ' ProcessDefinitionDetail' })
121
89
const props = defineProps <{
@@ -132,11 +100,8 @@ const detailForm: any = ref({
132
100
}) // 流程表单详情
133
101
const fApi = ref <ApiAttrs >()
134
102
// 指定审批人
135
- const startUserSelectAssigneesFormRef = ref () // 发起人选择审批人的表单 Ref
136
103
const startUserSelectTasks: any = ref ([]) // 发起人需要选择审批人的用户任务列表
137
104
const startUserSelectAssignees = ref ({}) // 发起人选择审批人的数据
138
- const startUserSelectAssigneesFormRules = ref ({}) // 发起人选择审批人的表单 Rules
139
- const userList = ref <any []>([]) // 用户列表
140
105
const bpmnXML: any = ref (null ) // BPMN 数据
141
106
const simpleJson = ref <string | undefined >() // Simple 设计器数据 json 格式
142
107
/** 当前的Tab */
@@ -150,7 +115,6 @@ const initProcessInfo = async (row: any, formVariables?: any) => {
150
115
// 重置指定审批人
151
116
startUserSelectTasks .value = []
152
117
startUserSelectAssignees .value = {}
153
- startUserSelectAssigneesFormRules .value = {}
154
118
155
119
// 情况一:流程表单
156
120
if (row .formType == 10 ) {
@@ -176,24 +140,12 @@ const initProcessInfo = async (row: any, formVariables?: any) => {
176
140
bpmnXML .value = processDefinitionDetail .bpmnXml
177
141
simpleJson .value = processDefinitionDetail .simpleModel
178
142
startUserSelectTasks .value = processDefinitionDetail .startUserSelectTasks
179
-
180
143
// 设置指定审批人
181
144
if (startUserSelectTasks .value ?.length > 0 ) {
182
- detailForm .value .rule .push ({
183
- type: ' startUserSelect' ,
184
- props: {
185
- title: ' 指定审批人'
186
- }
187
- })
188
- // 设置校验规则
189
145
for (const userTask of startUserSelectTasks .value ) {
146
+ // 初始化数据
190
147
startUserSelectAssignees .value [userTask .id ] = []
191
- startUserSelectAssigneesFormRules .value [userTask .id ] = [
192
- { required: true , message: ' 请选择审批人' , trigger: ' blur' }
193
- ]
194
148
}
195
- // 加载用户列表
196
- userList .value = await UserApi .getSimpleUserList ()
197
149
}
198
150
}
199
151
// 情况二:业务表单
@@ -223,21 +175,27 @@ const getApprovalDetail = async (row: any) => {
223
175
}
224
176
225
177
/** 提交按钮 */
226
- const submitForm = async (formData : any ) => {
178
+ const submitForm = async () => {
227
179
if (! fApi .value || ! props .selectProcessDefinition ) {
228
180
return
229
181
}
230
182
// 如果有指定审批人,需要校验
231
183
if (startUserSelectTasks .value ?.length > 0 ) {
232
- await startUserSelectAssigneesFormRef .value .validate ()
184
+ for (const userTask of startUserSelectTasks .value ) {
185
+ if (
186
+ Array .isArray (startUserSelectAssignees .value [userTask .id ]) &&
187
+ startUserSelectAssignees .value [userTask .id ].length === 0
188
+ )
189
+ return message .warning (` 请选择${userTask .name }的审批人 ` )
190
+ }
233
191
}
234
192
235
193
// 提交请求
236
194
fApi .value .btn .loading (true )
237
195
try {
238
196
await ProcessInstanceApi .createProcessInstance ({
239
197
processDefinitionId: props .selectProcessDefinition .id ,
240
- variables: formData || detailForm .value .value ,
198
+ variables: detailForm .value .value ,
241
199
startUserSelectAssignees: startUserSelectAssignees .value
242
200
})
243
201
// 提示
@@ -256,14 +214,18 @@ const handleCancel = () => {
256
214
emit (' cancel' )
257
215
}
258
216
217
+ const selectUserConfirm = (id , userList ) => {
218
+ startUserSelectAssignees .value [id ] = userList ?.map ((item ) => item .id )
219
+ }
220
+
259
221
defineExpose ({ initProcessInfo })
260
222
</script >
261
223
262
224
<style lang="scss" scoped>
263
225
$wrap-padding-height : 20px ;
264
226
$wrap-margin-height : 15px ;
265
227
$button-height : 51px ;
266
- $process-header-height : 194 px ;
228
+ $process-header-height : 105 px ;
267
229
268
230
.processInstance-wrap-main {
269
231
height : calc (
0 commit comments