|
97 | 97 | </ContentWrap>
|
98 | 98 | </template>
|
99 | 99 | <script setup lang="ts">
|
| 100 | +import { useUserStore } from '@/store/modules/user' |
100 | 101 | import { setConfAndFields2 } from '@/utils/formCreate'
|
101 | 102 | import type { ApiAttrs } from '@form-create/element-ui/types/config'
|
102 |
| -import { useUserStore } from '@/store/modules/user' |
103 | 103 | import * as DefinitionApi from '@/api/bpm/definition'
|
104 | 104 | import * as ProcessInstanceApi from '@/api/bpm/processInstance'
|
105 | 105 | import * as TaskApi from '@/api/bpm/task'
|
@@ -177,95 +177,101 @@ const handleBack = async (task) => {
|
177 | 177 | console.log(task)
|
178 | 178 | }
|
179 | 179 |
|
180 |
| -// ========== 初始化 ========== |
181 |
| -onMounted(() => { |
182 |
| - getDetail() |
183 |
| -}) |
184 |
| -
|
| 180 | +/** 获得详情 */ |
185 | 181 | const getDetail = () => {
|
186 | 182 | // 1. 获得流程实例相关
|
187 |
| - processInstanceLoading.value = true |
188 |
| - ProcessInstanceApi.getProcessInstanceApi(id) |
189 |
| - .then((data) => { |
190 |
| - if (!data) { |
191 |
| - message.error('查询不到流程信息!') |
192 |
| - return |
193 |
| - } |
194 |
| - processInstance.value = data |
| 183 | + getProcessInstance() |
| 184 | + // 2. 获得流程任务列表(审批记录) |
| 185 | + getTaskList() |
| 186 | +} |
195 | 187 |
|
196 |
| - // 设置表单信息 |
197 |
| - const processDefinition = data.processDefinition |
198 |
| - if (processDefinition.formType === 10) { |
199 |
| - setConfAndFields2( |
200 |
| - detailForm, |
201 |
| - processDefinition.formConf, |
202 |
| - processDefinition.formFields, |
203 |
| - data.formVariables |
204 |
| - ) |
205 |
| - nextTick().then(() => { |
206 |
| - fApi.value?.fapi?.btn.show(false) |
207 |
| - fApi.value?.fapi?.resetBtn.show(false) |
208 |
| - fApi.value?.fapi?.disabled(true) |
209 |
| - }) |
210 |
| - } |
| 188 | +/** 加载流程实例 */ |
| 189 | +const getProcessInstance = async () => { |
| 190 | + try { |
| 191 | + processInstanceLoading.value = true |
| 192 | + const data = await ProcessInstanceApi.getProcessInstanceApi(id) |
| 193 | + if (!data) { |
| 194 | + message.error('查询不到流程信息!') |
| 195 | + return |
| 196 | + } |
| 197 | + processInstance.value = data |
211 | 198 |
|
212 |
| - // 加载流程图 |
213 |
| - DefinitionApi.getProcessDefinitionBpmnXML(processDefinition.id).then((data) => { |
214 |
| - bpmnXML.value = data |
| 199 | + // 设置表单信息 |
| 200 | + const processDefinition = data.processDefinition |
| 201 | + if (processDefinition.formType === 10) { |
| 202 | + setConfAndFields2( |
| 203 | + detailForm, |
| 204 | + processDefinition.formConf, |
| 205 | + processDefinition.formFields, |
| 206 | + data.formVariables |
| 207 | + ) |
| 208 | + nextTick().then(() => { |
| 209 | + fApi.value?.fapi?.btn.show(false) |
| 210 | + fApi.value?.fapi?.resetBtn.show(false) |
| 211 | + fApi.value?.fapi?.disabled(true) |
215 | 212 | })
|
| 213 | + } |
| 214 | +
|
| 215 | + // 加载流程图 |
| 216 | + bpmnXML.value = await DefinitionApi.getProcessDefinitionBpmnXML(processDefinition.id) |
| 217 | + } finally { |
| 218 | + processInstanceLoading.value = false |
| 219 | + } |
| 220 | +} |
| 221 | +
|
| 222 | +/** 加载任务列表 */ |
| 223 | +const getTaskList = async () => { |
| 224 | + try { |
| 225 | + // 获得未取消的任务 |
| 226 | + tasksLoad.value = true |
| 227 | + const data = await TaskApi.getTaskListByProcessInstanceId(id) |
| 228 | + tasks.value = [] |
| 229 | + // 1.1 移除已取消的审批 |
| 230 | + data.forEach((task) => { |
| 231 | + if (task.result !== 4) { |
| 232 | + tasks.value.push(task) |
| 233 | + } |
216 | 234 | })
|
217 |
| - .finally(() => { |
218 |
| - processInstanceLoading.value = false |
| 235 | + // 1.2 排序,将未完成的排在前面,已完成的排在后面; |
| 236 | + tasks.value.sort((a, b) => { |
| 237 | + // 有已完成的情况,按照完成时间倒序 |
| 238 | + if (a.endTime && b.endTime) { |
| 239 | + return b.endTime - a.endTime |
| 240 | + } else if (a.endTime) { |
| 241 | + return 1 |
| 242 | + } else if (b.endTime) { |
| 243 | + return -1 |
| 244 | + // 都是未完成,按照创建时间倒序 |
| 245 | + } else { |
| 246 | + return b.createTime - a.createTime |
| 247 | + } |
219 | 248 | })
|
220 | 249 |
|
221 |
| - // 2. 获得流程任务列表(审批记录) |
222 |
| - tasksLoad.value = true |
223 |
| - runningTasks.value = [] |
224 |
| - auditForms.value = [] |
225 |
| - TaskApi.getTaskListByProcessInstanceId(id) |
226 |
| - .then((data) => { |
227 |
| - // 审批记录 |
228 |
| - tasks.value = [] |
229 |
| - // 移除已取消的审批 |
230 |
| - data.forEach((task) => { |
231 |
| - if (task.result !== 4) { |
232 |
| - tasks.value.push(task) |
233 |
| - } |
234 |
| - }) |
235 |
| - // 排序,将未完成的排在前面,已完成的排在后面; |
236 |
| - tasks.value.sort((a, b) => { |
237 |
| - // 有已完成的情况,按照完成时间倒序 |
238 |
| - if (a.endTime && b.endTime) { |
239 |
| - return b.endTime - a.endTime |
240 |
| - } else if (a.endTime) { |
241 |
| - return 1 |
242 |
| - } else if (b.endTime) { |
243 |
| - return -1 |
244 |
| - // 都是未完成,按照创建时间倒序 |
245 |
| - } else { |
246 |
| - return b.createTime - a.createTime |
247 |
| - } |
248 |
| - }) |
249 |
| -
|
250 |
| - // 需要审核的记录 |
251 |
| - tasks.value.forEach((task) => { |
252 |
| - // 1.1 只有待处理才需要 |
253 |
| - if (task.result !== 1) { |
254 |
| - return |
255 |
| - } |
256 |
| - // 1.2 自己不是处理人 |
257 |
| - if (!task.assigneeUser || task.assigneeUser.id !== userId) { |
258 |
| - return |
259 |
| - } |
260 |
| - // 2. 添加到处理任务 |
261 |
| - runningTasks.value.push({ ...task }) |
262 |
| - auditForms.value.push({ |
263 |
| - reason: '' |
264 |
| - }) |
| 250 | + // 获得需要自己审批的任务 |
| 251 | + runningTasks.value = [] |
| 252 | + auditForms.value = [] |
| 253 | + tasks.value.forEach((task) => { |
| 254 | + // 2.1 只有待处理才需要 |
| 255 | + if (task.result !== 1) { |
| 256 | + return |
| 257 | + } |
| 258 | + // 2.2 自己不是处理人 |
| 259 | + if (!task.assigneeUser || task.assigneeUser.id !== userId) { |
| 260 | + return |
| 261 | + } |
| 262 | + // 2.3 添加到处理任务 |
| 263 | + runningTasks.value.push({ ...task }) |
| 264 | + auditForms.value.push({ |
| 265 | + reason: '' |
265 | 266 | })
|
266 | 267 | })
|
267 |
| - .finally(() => { |
268 |
| - tasksLoad.value = false |
269 |
| - }) |
| 268 | + } finally { |
| 269 | + tasksLoad.value = false |
| 270 | + } |
270 | 271 | }
|
| 272 | +
|
| 273 | +/** 初始化 */ |
| 274 | +onMounted(() => { |
| 275 | + getDetail() |
| 276 | +}) |
271 | 277 | </script>
|
0 commit comments