Skip to content

Commit 3a9197d

Browse files
committed
【功能修改】 整合审批详情接口
1 parent 842fe09 commit 3a9197d

File tree

5 files changed

+96
-86
lines changed

5 files changed

+96
-86
lines changed

src/api/bpm/processInstance/index.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,8 @@ export const getProcessInstanceCopyPage = async (params: any) => {
8787
}
8888

8989
// 获取审批详情
90-
export const getApprovalDetail = async (
91-
processInstanceId?: string,
92-
processDefinitionId?: string
93-
) => {
94-
const param = processInstanceId
95-
? '?processInstanceId=' + processInstanceId
96-
: '?processDefinitionId=' + processDefinitionId
97-
return await request.get({ url: 'bpm/process-instance/get-approval-detail' + param })
90+
export const getApprovalDetail = async (params: any) => {
91+
return await request.get({ url: 'bpm/process-instance/get-approval-detail' , params })
9892
}
9993

10094
// 获取表单字段权限

src/utils/formCreate.ts

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const setConfAndFields2 = (
4444
value?: object
4545
) => {
4646
if (isRef(detailPreview)) {
47+
// @ts-ignore
4748
detailPreview = detailPreview.value
4849
}
4950
// @ts-ignore

src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue

+6-10
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,6 @@ const openChildrenTask = () => {
657657
658658
/** 重新加载数据 */
659659
const reload = () => {
660-
getMyTodoTask()
661660
emit('success')
662661
}
663662
@@ -691,26 +690,23 @@ const getButtonDisplayName = (btnType: OperationButtonType) => {
691690
return displayName
692691
}
693692
694-
/** 获取我的待办任务 */
695-
const getMyTodoTask = async () => {
693+
const loadTodoTask = (task: any) => {
696694
genericForm.value = {}
697695
approveForm.value = {}
698696
approveFormFApi.value = {}
699-
const data = await TaskApi.myTodoTask(props.processInstanceId)
700-
runningTask.value = data
697+
runningTask.value = task
701698
// 处理 approve 表单.
702-
if (data && data.formId && data.formConf) {
699+
if (task && task.formId && task.formConf) {
703700
const tempApproveForm = {}
704-
setConfAndFields2(tempApproveForm, data.formConf, data.formFields, data.formVariables)
701+
setConfAndFields2(tempApproveForm, task.formConf, task.formFields, task.formVariables)
705702
approveForm.value = tempApproveForm
706703
} else {
707704
approveForm.value = {} // 占位,避免为空
708705
}
709706
}
710707
711-
onMounted(async () => {
712-
await getMyTodoTask()
713-
})
708+
defineExpose({ loadTodoTask })
709+
714710
</script>
715711

716712
<style lang="scss" scoped>

src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue

+37-29
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,31 @@ import { TaskStatusEnum } from '@/api/bpm/task'
134134
import { NodeType } from '@/components/SimpleProcessDesignerV2/src/consts'
135135
import { Check, Close, Loading, Clock, Minus, Delete } from '@element-plus/icons-vue'
136136
defineOptions({ name: 'BpmProcessInstanceTimeline' })
137-
const props = defineProps({
138-
// 流程实例编号
139-
processInstanceId: {
140-
type: String,
141-
required: false,
142-
default: ''
143-
},
144-
// 流程定义编号
145-
processDefinitionId: {
146-
type: String,
147-
required: false,
148-
default: ''
149-
}
150-
})
137+
// const props = defineProps({
138+
// // 流程实例编号
139+
// processInstanceId: {
140+
// type: String,
141+
// required: false,
142+
// default: ''
143+
// },
144+
// // 流程定义编号
145+
// processDefinitionId: {
146+
// type: String,
147+
// required: false,
148+
// default: ''
149+
// },
150+
// approveNodes : {
151+
// type: ProcessInstanceApi.ApprovalNodeInfo[],
152+
// required: false,
153+
// default: ''
154+
// }
155+
// })
156+
defineProps<{
157+
approveNodes: ProcessInstanceApi.ApprovalNodeInfo[] // 审批节点信息
158+
}>()
151159

152160
// 审批节点
153-
const approveNodes = ref<ProcessInstanceApi.ApprovalNodeInfo[]>([])
161+
154162

155163
const statusIconMap2 = {
156164
// 未开始
@@ -194,13 +202,13 @@ const statusIconMap = {
194202
}
195203

196204
/** 获得审批详情 */
197-
const getApprovalDetail = async () => {
198-
const data = await ProcessInstanceApi.getApprovalDetail(
199-
props.processInstanceId,
200-
props.processDefinitionId
201-
)
202-
approveNodes.value = data.approveNodes
203-
}
205+
// const getApprovalDetail = async () => {
206+
// const data = await ProcessInstanceApi.getApprovalDetail(
207+
// props.processInstanceId,
208+
// props.processDefinitionId
209+
// )
210+
// approveNodes.value = data.approveNodes
211+
// }
204212

205213
const getApprovalNodeIcon = (taskStatus: number, nodeType: NodeType) => {
206214
if (taskStatus == TaskStatusEnum.NOT_START) {
@@ -226,13 +234,13 @@ const getApprovalNodeTime = (node: ProcessInstanceApi.ApprovalNodeInfo) => {
226234
}
227235

228236
/** 重新刷新审批详情 */
229-
const refresh = () => {
230-
getApprovalDetail()
231-
}
237+
// const refresh = () => {
238+
// getApprovalDetail()
239+
// }
232240

233-
defineExpose({ refresh })
241+
// defineExpose({ refresh })
234242

235-
onMounted(async () => {
236-
await getApprovalDetail()
237-
})
243+
// onMounted(async () => {
244+
// await getApprovalDetail()
245+
// })
238246
</script>

src/views/bpm/processInstance/detail/index_new.vue

+50-39
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
<div
2424
class="bg-gray-100 h-35px rounded-3xl flex items-center p-8px gap-2 dark:color-gray-600"
2525
>
26-
<!-- <img class="rounded-full h-28px" src="@/assets/imgs/avatar.jpg" alt="" /> -->
2726
<el-avatar
2827
:size="28"
2928
v-if="processInstance?.startUser?.avatar"
@@ -50,7 +49,7 @@
5049
class="form-box flex flex-col mb-30px flex-1"
5150
>
5251
<!-- 情况一:流程表单 -->
53-
<el-col v-if="processInstance?.processDefinition?.formType === 10">
52+
<el-col v-if="processDefinition?.formType === 10">
5453
<form-create
5554
v-model="detailForm.value"
5655
v-model:api="fApi"
@@ -59,14 +58,14 @@
5958
/>
6059
</el-col>
6160
<!-- 情况二:业务表单 -->
62-
<div v-if="processInstance?.processDefinition?.formType === 20">
61+
<div v-if="processDefinition?.formType === 20">
6362
<BusinessFormComponent :id="processInstance.businessKey" />
6463
</div>
6564
</div>
6665
</el-col>
6766
<el-col :span="6">
6867
<!-- 审批记录时间线 -->
69-
<ProcessInstanceTimeline ref="timelineRef" :process-instance-id="id" />
68+
<ProcessInstanceTimeline ref="timelineRef" :approve-nodes="approveNodes" />
7069
</el-col>
7170
</el-row>
7271
</el-scrollbar>
@@ -104,6 +103,7 @@
104103
<div class="b-t-solid border-t-1px border-[var(--el-border-color)]">
105104
<!-- 操作栏按钮 -->
106105
<ProcessInstanceOperationButton
106+
ref="operationButtonRef"
107107
:process-instance-id="id"
108108
:userOptions="userOptions"
109109
@success="refresh"
@@ -124,7 +124,6 @@ import ProcessInstanceBpmnViewer from './ProcessInstanceBpmnViewer.vue'
124124
import ProcessInstanceTaskList from './ProcessInstanceTaskList.vue'
125125
import ProcessInstanceOperationButton from './ProcessInstanceOperationButton.vue'
126126
import ProcessInstanceTimeline from './ProcessInstanceTimeline.vue'
127-
import { registerComponent } from '@/utils/routerHelper'
128127
import * as UserApi from '@/api/system/user'
129128
import { FieldPermissionType } from '@/components/SimpleProcessDesignerV2/src/consts'
130129
import audit1 from '@/assets/svgs/bpm/audit1.svg'
@@ -141,7 +140,10 @@ const props = defineProps<{
141140
const message = useMessage() // 消息弹窗
142141
const processInstanceLoading = ref(false) // 流程实例的加载中
143142
const processInstance = ref<any>({}) // 流程实例
143+
const processDefinition = ref<any>({}) // 流程定义
144144
const timelineRef = ref()
145+
// 操作按钮组件 ref
146+
const operationButtonRef = ref()
145147
const tasksLoad = ref(true) // 任务的加载中
146148
const tasks = ref<any[]>([]) // 任务列表
147149
const auditIcons = {
@@ -161,78 +163,92 @@ const detailForm = ref({
161163
162164
/** 获得详情 */
163165
const getDetail = async () => {
164-
// 1. 获得流程实例相关
165-
getProcessInstance()
166+
// 1. 获取审批详情
167+
getApprovalDetail()
166168
// 2. 获得流程任务列表
167169
getTaskList()
168170
}
169171
170172
/** 加载流程实例 */
171173
const BusinessFormComponent = ref<any>(null) // 异步组件
172-
const getProcessInstance = async () => {
174+
/** 获取审批详情 */
175+
const getApprovalDetail = async () => {
176+
processInstanceLoading.value = true
173177
try {
174-
processInstanceLoading.value = true
175-
const data = await ProcessInstanceApi.getProcessInstance(props.id)
178+
const param = {
179+
processInstanceId: props.id,
180+
activityId: props.activityId,
181+
taskId: props.taskId
182+
}
183+
const data = await ProcessInstanceApi.getApprovalDetail(param);
176184
if (!data) {
185+
message.error('查询不到审批详情信息!')
186+
return
187+
}
188+
if(!data.processDefinition || !data.processInstance) {
177189
message.error('查询不到流程信息!')
178190
return
179191
}
180-
processInstance.value = data
192+
processInstance.value = data.processInstance
193+
processDefinition.value = data.processDefinition
181194
182195
// 设置表单信息
183-
const processDefinition = data.processDefinition
184-
if (processDefinition.formType === 10) {
196+
if (processDefinition.value.formType === 10) {
185197
// 获取表单字段权限
186-
let fieldsPermission = undefined
187-
if (props.taskId || props.activityId) {
188-
fieldsPermission = await ProcessInstanceApi.getFormFieldsPermission({
189-
processInstanceId: props.id,
190-
taskId: props.taskId,
191-
activityId: props.activityId
192-
})
193-
}
194-
195-
if (detailForm.value.rule.length > 0) { // 避免刷新 form-create 表单不显示
196-
detailForm.value.value = data.formVariables
198+
const formFieldsPermission = data.formFieldsPermission
199+
200+
if (detailForm.value.rule.length > 0) { // 避免刷新 form-create 显示不了,
201+
detailForm.value.value = processInstance.value.formVariables
197202
} else {
198203
setConfAndFields2(
199204
detailForm,
200-
processDefinition.formConf,
201-
processDefinition.formFields,
202-
data.formVariables
205+
processDefinition.value.formConf,
206+
processDefinition.value.formFields,
207+
processInstance.value.formVariables
203208
)
204209
}
205-
206210
nextTick().then(() => {
207211
fApi.value?.btn.show(false)
208212
fApi.value?.resetBtn.show(false)
213+
//@ts-ignore
209214
fApi.value?.disabled(true)
210-
if (fieldsPermission) {
211-
Object.keys(fieldsPermission).forEach((item) => {
212-
setFieldPermission(item, fieldsPermission[item])
215+
// 设置表单字段权限
216+
if (formFieldsPermission) {
217+
Object.keys(data.formFieldsPermission).forEach((item) => {
218+
setFieldPermission(item, formFieldsPermission[item])
213219
})
214220
}
215221
})
216-
} else {
217-
// 注意:data.processDefinition.formCustomViewPath 是组件的全路径,例如说:/crm/contract/detail/index.vue
218-
BusinessFormComponent.value = registerComponent(data.processDefinition.formCustomViewPath)
219222
}
223+
224+
// 获取审批节点,显示 Timeline 的数据
225+
approveNodes.value = data.approveNodes
226+
227+
// 获取待办任务显示操作按钮
228+
operationButtonRef.value?.loadTodoTask(data.todoTask)
229+
220230
} finally {
221231
processInstanceLoading.value = false
222232
}
233+
223234
}
224235
236+
// 审批节点信息
237+
const approveNodes = ref<ProcessInstanceApi.ApprovalNodeInfo[]>([])
225238
/**
226239
* 设置表单权限
227240
*/
228241
const setFieldPermission = (field: string, permission: string) => {
229242
if (permission === FieldPermissionType.READ) {
243+
//@ts-ignore
230244
fApi.value?.disabled(true, field)
231245
}
232246
if (permission === FieldPermissionType.WRITE) {
247+
//@ts-ignore
233248
fApi.value?.disabled(false, field)
234249
}
235250
if (permission === FieldPermissionType.NONE) {
251+
//@ts-ignore
236252
fApi.value?.hidden(true, field)
237253
}
238254
}
@@ -264,9 +280,6 @@ const getTaskList = async () => {
264280
return b.createTime - a.createTime
265281
}
266282
})
267-
268-
// 获得需要自己审批的任务
269-
//operationButtonRef.value?.loadRunningTask(tasks.value)
270283
} finally {
271284
tasksLoad.value = false
272285
}
@@ -278,8 +291,6 @@ const getTaskList = async () => {
278291
const refresh = () => {
279292
// 重新获取详情
280293
getDetail()
281-
// 刷新审批详情 Timeline
282-
timelineRef.value?.refresh()
283294
}
284295
285296
/** 当前的Tab */

0 commit comments

Comments
 (0)