2
2
<ContentWrap :bodyStyle =" { padding: '10px 20px 0' }" >
3
3
<div class =" processInstance-wrap-main" >
4
4
<el-scrollbar >
5
- <div class =" text-#878c93 h-15px" >编号 :{{ selectProcessDefinition.id }}</div >
5
+ <div class =" text-#878c93 h-15px" >流程 :{{ selectProcessDefinition.name }}</div >
6
6
<el-divider class =" !my-8px" />
7
7
8
- <div class =" flex items-center justify-between gap-5 mb-10px h-40px" >
9
- <div class =" text-26px font-bold mb-5px" >{{ selectProcessDefinition.name }}</div >
10
- <el-button style =" float : right " type =" primary" @click =" handleCancel" >
11
- <Icon icon =" ep:delete" /> 选择其它流程
12
- </el-button >
13
- </div >
14
- <!-- 中间主要内容tab栏 -->
8
+ <!-- 中间主要内容 tab 栏 -->
15
9
<el-tabs v-model =" activeTab" >
16
10
<!-- 表单信息 -->
17
11
<el-tab-pane label =" 表单填写" name =" form" >
65
59
<!-- 流程时间线 -->
66
60
<ProcessInstanceTimeline
67
61
ref =" timelineRef"
68
- :approve -nodes =" approveNodes "
62
+ :activity -nodes =" activityNodes "
69
63
:show-status-icon =" false"
70
64
candidateField =" candidateUserList"
71
65
/>
103
97
</ContentWrap >
104
98
</template >
105
99
<script lang="ts" setup>
106
- import { setConfAndFields2 } from ' @/utils/formCreate'
100
+ import { decodeFields , setConfAndFields2 } from ' @/utils/formCreate'
107
101
import ProcessInstanceBpmnViewer from ' ../detail/ProcessInstanceBpmnViewer.vue'
108
102
import ProcessInstanceTimeline from ' ../detail/ProcessInstanceTimeline.vue'
109
103
import type { ApiAttrs } from ' @form-create/element-ui/types/config'
@@ -137,10 +131,10 @@ const bpmnXML: any = ref(null) // BPMN 数据
137
131
const activeTab = ref (' form' )
138
132
const emit = defineEmits ([' cancel' ])
139
133
// 审批节点信息
140
- const approveNodes = ref <ProcessInstanceApi .ApprovalNodeInfo []>([])
134
+ const activityNodes = ref <ProcessInstanceApi .ApprovalNodeInfo []>([])
141
135
142
136
/** 设置表单信息、获取流程图数据 **/
143
- const initProcessInfo = async (row , formVariables ? ) => {
137
+ const initProcessInfo = async (row : any , formVariables ? : any ) => {
144
138
// 重置指定审批人
145
139
startUserSelectTasks .value = []
146
140
startUserSelectAssignees .value = {}
@@ -149,11 +143,20 @@ const initProcessInfo = async (row, formVariables?) => {
149
143
// 情况一:流程表单
150
144
if (row .formType == 10 ) {
151
145
// 设置表单
146
+ // 注意:需要从 formVariables 中,移除不在 row.formFields 的值。
147
+ // 原因是:后端返回的 formVariables 里面,会有一些非表单的信息。例如说,某个流程节点的审批人。
148
+ // 这样,就可能导致一个流程被审批不通过后,重新发起时,会直接后端报错!!!
149
+ const allowedFields = decodeFields (row .formFields ).map ((fieldObj : any ) => fieldObj .field )
150
+ for (const key in formVariables ) {
151
+ if (! allowedFields .includes (key )) {
152
+ delete formVariables [key ]
153
+ }
154
+ }
152
155
setConfAndFields2 (detailForm , row .formConf , row .formFields , formVariables )
153
156
await nextTick ()
154
157
fApi .value ?.btn .show (false ) // 隐藏提交按钮
155
158
// 获取流程审批信息
156
- getApprovalDetail (row )
159
+ await getApprovalDetail (row )
157
160
158
161
// 加载流程图
159
162
const processDefinitionDetail = await DefinitionApi .getProcessDefinition (row .id )
@@ -190,7 +193,7 @@ const initProcessInfo = async (row, formVariables?) => {
190
193
}
191
194
192
195
/** 获取审批详情 */
193
- const getApprovalDetail = async (row ) => {
196
+ const getApprovalDetail = async (row : any ) => {
194
197
try {
195
198
const param = {
196
199
processDefinitionId: row .id
@@ -201,13 +204,14 @@ const getApprovalDetail = async (row) => {
201
204
return
202
205
}
203
206
// 获取审批节点,显示 Timeline 的数据
204
- approveNodes .value = data .approveNodes
207
+ activityNodes .value = data .activityNodes
205
208
} finally {
206
209
}
207
210
}
208
211
/** 提交按钮 */
209
- const submitForm = async (formData ) => {
210
- if (! fApi .value || props .selectProcessDefinition ) {
212
+ const submitForm = async (formData : any ) => {
213
+ debugger
214
+ if (! fApi .value || ! props .selectProcessDefinition ) {
211
215
return
212
216
}
213
217
// 如果有指定审批人,需要校验
0 commit comments