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 >
@@ -104,7 +73,6 @@ import type { ApiAttrs } from '@form-create/element-ui/types/config'
104
73
import { useTagsViewStore } from ' @/store/modules/tagsView'
105
74
import * as ProcessInstanceApi from ' @/api/bpm/processInstance'
106
75
import * as DefinitionApi from ' @/api/bpm/definition'
107
- import * as UserApi from ' @/api/system/user'
108
76
109
77
defineOptions ({ name: ' ProcessDefinitionDetail' })
110
78
const props = defineProps <{
@@ -121,11 +89,8 @@ const detailForm: any = ref({
121
89
}) // 流程表单详情
122
90
const fApi = ref <ApiAttrs >()
123
91
// 指定审批人
124
- const startUserSelectAssigneesFormRef = ref () // 发起人选择审批人的表单 Ref
125
92
const startUserSelectTasks: any = ref ([]) // 发起人需要选择审批人的用户任务列表
126
93
const startUserSelectAssignees = ref ({}) // 发起人选择审批人的数据
127
- const startUserSelectAssigneesFormRules = ref ({}) // 发起人选择审批人的表单 Rules
128
- const userList = ref <any []>([]) // 用户列表
129
94
const bpmnXML: any = ref (null ) // BPMN 数据
130
95
/** 当前的Tab */
131
96
const activeTab = ref (' form' )
@@ -138,7 +103,6 @@ const initProcessInfo = async (row: any, formVariables?: any) => {
138
103
// 重置指定审批人
139
104
startUserSelectTasks .value = []
140
105
startUserSelectAssignees .value = {}
141
- startUserSelectAssigneesFormRules .value = {}
142
106
143
107
// 情况一:流程表单
144
108
if (row .formType == 10 ) {
@@ -163,24 +127,12 @@ const initProcessInfo = async (row: any, formVariables?: any) => {
163
127
if (processDefinitionDetail ) {
164
128
bpmnXML .value = processDefinitionDetail .bpmnXml
165
129
startUserSelectTasks .value = processDefinitionDetail .startUserSelectTasks
166
-
167
130
// 设置指定审批人
168
131
if (startUserSelectTasks .value ?.length > 0 ) {
169
- detailForm .value .rule .push ({
170
- type: ' startUserSelect' ,
171
- props: {
172
- title: ' 指定审批人'
173
- }
174
- })
175
- // 设置校验规则
176
132
for (const userTask of startUserSelectTasks .value ) {
133
+ // 初始化数据
177
134
startUserSelectAssignees .value [userTask .id ] = []
178
- startUserSelectAssigneesFormRules .value [userTask .id ] = [
179
- { required: true , message: ' 请选择审批人' , trigger: ' blur' }
180
- ]
181
135
}
182
- // 加载用户列表
183
- userList .value = await UserApi .getSimpleUserList ()
184
136
}
185
137
}
186
138
// 情况二:业务表单
@@ -209,22 +161,27 @@ const getApprovalDetail = async (row: any) => {
209
161
}
210
162
}
211
163
/** 提交按钮 */
212
- const submitForm = async (formData : any ) => {
213
- debugger
164
+ const submitForm = async () => {
214
165
if (! fApi .value || ! props .selectProcessDefinition ) {
215
166
return
216
167
}
217
168
// 如果有指定审批人,需要校验
218
169
if (startUserSelectTasks .value ?.length > 0 ) {
219
- await startUserSelectAssigneesFormRef .value .validate ()
170
+ for (const userTask of startUserSelectTasks .value ) {
171
+ if (
172
+ Array .isArray (startUserSelectAssignees .value [userTask .id ]) &&
173
+ startUserSelectAssignees .value [userTask .id ].length === 0
174
+ )
175
+ return message .warning (` 请选择${userTask .name }的审批人 ` )
176
+ }
220
177
}
221
178
222
179
// 提交请求
223
180
fApi .value .btn .loading (true )
224
181
try {
225
182
await ProcessInstanceApi .createProcessInstance ({
226
183
processDefinitionId: props .selectProcessDefinition .id ,
227
- variables: formData || detailForm .value .value ,
184
+ variables: detailForm .value .value ,
228
185
startUserSelectAssignees: startUserSelectAssignees .value
229
186
})
230
187
// 提示
@@ -243,14 +200,18 @@ const handleCancel = () => {
243
200
emit (' cancel' )
244
201
}
245
202
203
+ const selectUserConfirm = (id , userList ) => {
204
+ startUserSelectAssignees .value [id ] = userList ?.map ((item ) => item .id )
205
+ }
206
+
246
207
defineExpose ({ initProcessInfo })
247
208
</script >
248
209
249
210
<style lang="scss" scoped>
250
211
$wrap-padding-height : 20px ;
251
212
$wrap-margin-height : 15px ;
252
213
$button-height : 51px ;
253
- $process-header-height : 194 px ;
214
+ $process-header-height : 105 px ;
254
215
255
216
.processInstance-wrap-main {
256
217
height : calc (
0 commit comments