Commit 2253ba069f09177c4d1d60fc0ddc04337fb606fa

Authored by YunaiV
1 parent b6d90b22

bpm:完成流程详情的整体界面

yudao-ui-admin-vue3/src/api/bpm/activity/index.ts 0 → 100644
  1 +import request from '@/config/axios'
  2 +
  3 +export const getActivityList = async (params) => {
  4 + return await request.get({
  5 + url: '/bpm/activity/list',
  6 + params
  7 + })
  8 +}
yudao-ui-admin-vue3/src/api/bpm/definition/index.ts
@@ -12,6 +12,7 @@ export const getProcessDefinitionPageApi = async (params) => { @@ -12,6 +12,7 @@ export const getProcessDefinitionPageApi = async (params) => {
12 params 12 params
13 }) 13 })
14 } 14 }
  15 +
15 export const getProcessDefinitionListApi = async (params) => { 16 export const getProcessDefinitionListApi = async (params) => {
16 return await request.get({ 17 return await request.get({
17 url: '/bpm/process-definition/list', 18 url: '/bpm/process-definition/list',
yudao-ui-admin-vue3/src/types/auto-imports.d.ts
@@ -3,7 +3,6 @@ export {} @@ -3,7 +3,6 @@ export {}
3 declare global { 3 declare global {
4 const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE'] 4 const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
5 const EffectScope: typeof import('vue')['EffectScope'] 5 const EffectScope: typeof import('vue')['EffectScope']
6 - const ElMessage: typeof import('element-plus/es')['ElMessage']  
7 const computed: typeof import('vue')['computed'] 6 const computed: typeof import('vue')['computed']
8 const createApp: typeof import('vue')['createApp'] 7 const createApp: typeof import('vue')['createApp']
9 const customRef: typeof import('vue')['customRef'] 8 const customRef: typeof import('vue')['customRef']
yudao-ui-admin-vue3/src/views/bpm/definition/index.vue
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 37
38 <!-- 表单详情的弹窗 --> 38 <!-- 表单详情的弹窗 -->
39 <XModal v-model="formDetailVisible" width="800" title="表单详情" :show-footer="false"> 39 <XModal v-model="formDetailVisible" width="800" title="表单详情" :show-footer="false">
40 - <ViewForm 40 + <form-create
41 :rule="formDetailPreview.rule" 41 :rule="formDetailPreview.rule"
42 :option="formDetailPreview.option" 42 :option="formDetailPreview.option"
43 v-if="formDetailVisible" 43 v-if="formDetailVisible"
@@ -58,8 +58,6 @@ const message = useMessage() // 消息弹窗 @@ -58,8 +58,6 @@ const message = useMessage() // 消息弹窗
58 const router = useRouter() // 路由 58 const router = useRouter() // 路由
59 const { query } = useRoute() // 查询参数 59 const { query } = useRoute() // 查询参数
60 60
61 -import viewForm from '@form-create/element-ui'  
62 -const ViewForm = viewForm.$form()  
63 import { setConfAndFields2 } from '@/utils/formCreate' 61 import { setConfAndFields2 } from '@/utils/formCreate'
64 62
65 // ========== 列表相关 ========== 63 // ========== 列表相关 ==========
yudao-ui-admin-vue3/src/views/bpm/form/index.vue
@@ -39,7 +39,7 @@ @@ -39,7 +39,7 @@
39 </XTable> 39 </XTable>
40 <!-- 表单详情的弹窗 --> 40 <!-- 表单详情的弹窗 -->
41 <XModal v-model="detailOpen" width="800" title="表单详情"> 41 <XModal v-model="detailOpen" width="800" title="表单详情">
42 - <ViewForm :rule="detailPreview.rule" :option="detailPreview.option" v-if="detailOpen" /> 42 + <form-create :rule="detailPreview.rule" :option="detailPreview.option" v-if="detailOpen" />
43 </XModal> 43 </XModal>
44 </div> 44 </div>
45 </ContentWrap> 45 </ContentWrap>
@@ -55,8 +55,6 @@ const { t } = useI18n() // 国际化 @@ -55,8 +55,6 @@ const { t } = useI18n() // 国际化
55 const router = useRouter() // 路由 55 const router = useRouter() // 路由
56 56
57 // 表单详情相关的变量和 import 57 // 表单详情相关的变量和 import
58 -import viewForm from '@form-create/element-ui'  
59 -const ViewForm = viewForm.$form()  
60 import { setConfAndFields2 } from '@/utils/formCreate' 58 import { setConfAndFields2 } from '@/utils/formCreate'
61 59
62 // 列表相关的变量 60 // 列表相关的变量
yudao-ui-admin-vue3/src/views/bpm/model/index.vue
@@ -292,7 +292,7 @@ @@ -292,7 +292,7 @@
292 292
293 <!-- 表单详情的弹窗 --> 293 <!-- 表单详情的弹窗 -->
294 <XModal v-model="formDetailVisible" width="800" title="表单详情" :show-footer="false"> 294 <XModal v-model="formDetailVisible" width="800" title="表单详情" :show-footer="false">
295 - <ViewForm 295 + <form-create
296 :rule="formDetailPreview.rule" 296 :rule="formDetailPreview.rule"
297 :option="formDetailPreview.option" 297 :option="formDetailPreview.option"
298 v-if="formDetailVisible" 298 v-if="formDetailVisible"
@@ -317,8 +317,6 @@ const { t } = useI18n() // 国际化 @@ -317,8 +317,6 @@ const { t } = useI18n() // 国际化
317 const message = useMessage() // 消息弹窗 317 const message = useMessage() // 消息弹窗
318 const router = useRouter() // 路由 318 const router = useRouter() // 路由
319 319
320 -import viewForm from '@form-create/element-ui'  
321 -const ViewForm = viewForm.$form()  
322 import { setConfAndFields2 } from '@/utils/formCreate' 320 import { setConfAndFields2 } from '@/utils/formCreate'
323 321
324 // ========== 列表相关 ========== 322 // ========== 列表相关 ==========
yudao-ui-admin-vue3/src/views/bpm/processInstance/detail.vue
@@ -51,6 +51,13 @@ @@ -51,6 +51,13 @@
51 title="转办" 51 title="转办"
52 @click="handleUpdateAssignee(item)" 52 @click="handleUpdateAssignee(item)"
53 /> 53 />
  54 + <XButton
  55 + pre-icon="ep:position"
  56 + type="primary"
  57 + title="委派"
  58 + @click="handleDelegate(item)"
  59 + />
  60 + <XButton pre-icon="ep:back" type="warning" title="委派" @click="handleBack(item)" />
54 </div> 61 </div>
55 </el-col> 62 </el-col>
56 </el-card> 63 </el-card>
@@ -129,6 +136,21 @@ @@ -129,6 +136,21 @@
129 </el-col> 136 </el-col>
130 </el-card> 137 </el-card>
131 138
  139 + <!-- 高亮流程图 -->
  140 + <el-card class="box-card" v-loading="processInstanceLoading">
  141 + <template #header>
  142 + <span class="el-icon-picture-outline">流程图</span>
  143 + </template>
  144 + <my-process-viewer
  145 + key="designer"
  146 + v-model="bpmnXML"
  147 + v-bind="bpmnControlForm"
  148 + :activityData="activityList"
  149 + :processInstanceData="processInstance"
  150 + :taskData="tasks"
  151 + />
  152 + </el-card>
  153 +
132 <!-- 对话框(转派审批人) --> 154 <!-- 对话框(转派审批人) -->
133 <XModal v-model="updateAssigneeVisible" title="转派审批人" width="500"> 155 <XModal v-model="updateAssigneeVisible" title="转派审批人" width="500">
134 <el-form 156 <el-form
@@ -172,7 +194,9 @@ import { getCurrentInstance } from &#39;vue&#39; @@ -172,7 +194,9 @@ import { getCurrentInstance } from &#39;vue&#39;
172 import dayjs from 'dayjs' 194 import dayjs from 'dayjs'
173 import * as UserApi from '@/api/system/user' 195 import * as UserApi from '@/api/system/user'
174 import * as ProcessInstanceApi from '@/api/bpm/processInstance' 196 import * as ProcessInstanceApi from '@/api/bpm/processInstance'
  197 +import * as DefinitionApi from '@/api/bpm/definition'
175 import * as TaskApi from '@/api/bpm/task' 198 import * as TaskApi from '@/api/bpm/task'
  199 +import * as ActivityApi from '@/api/bpm/activity'
176 import { formatPast2 } from '@/utils/formatTime' 200 import { formatPast2 } from '@/utils/formatTime'
177 201
178 const { query } = useRoute() // 查询参数 202 const { query } = useRoute() // 查询参数
@@ -319,6 +343,34 @@ const resetUpdateAssigneeForm = () =&gt; { @@ -319,6 +343,34 @@ const resetUpdateAssigneeForm = () =&gt; {
319 updateAssigneeFormRef.value?.resetFields() 343 updateAssigneeFormRef.value?.resetFields()
320 } 344 }
321 345
  346 +/** 处理审批退回的操作 */
  347 +const handleDelegate = async (task) => {
  348 + message.error('暂不支持【委派】功能,可以使用【转派】替代!')
  349 + console.log(task)
  350 +}
  351 +
  352 +/** 处理审批退回的操作 */
  353 +const handleBack = async (task) => {
  354 + message.error('暂不支持【退回】功能!')
  355 + // 可参考 http://blog.wya1.com/article/636697030/details/7296
  356 + // const data = {
  357 + // id: task.id,
  358 + // assigneeUserId: 1
  359 + // }
  360 + // backTask(data).then(response => {
  361 + // this.$modal.msgSuccess("回退成功!");
  362 + // this.getDetail(); // 获得最新详情
  363 + // });
  364 + console.log(task)
  365 +}
  366 +
  367 +// ========== 高亮流程图 ==========
  368 +const bpmnXML = ref(null)
  369 +const bpmnControlForm = ref({
  370 + prefix: 'flowable'
  371 +})
  372 +const activityList = ref([])
  373 +
322 // ========== 初始化 ========== 374 // ========== 初始化 ==========
323 onMounted(() => { 375 onMounted(() => {
324 // 加载详情 376 // 加载详情
@@ -355,9 +407,17 @@ const getDetail = () =&gt; { @@ -355,9 +407,17 @@ const getDetail = () =&gt; {
355 }) 407 })
356 } 408 }
357 409
358 - // TODO 加载流程图 410 + // 加载流程图
  411 + DefinitionApi.getProcessDefinitionBpmnXMLApi(processDefinition.id).then((data) => {
  412 + bpmnXML.value = data
  413 + })
359 414
360 - // TODO 加载活动列表 415 + // 加载活动列表
  416 + ActivityApi.getActivityList({
  417 + processInstanceId: data.id
  418 + }).then((data) => {
  419 + activityList.value = data
  420 + })
361 }) 421 })
362 .finally(() => { 422 .finally(() => {
363 processInstanceLoading.value = false 423 processInstanceLoading.value = false
yudao-ui-admin-vue3/src/views/bpm/processInstance/detail2.vue deleted
1 -<template>  
2 - <div class="app-container">  
3 -  
4 -  
5 -  
6 - <el-button  
7 - icon="el-icon-edit-outline"  
8 - type="primary"  
9 - size="mini"  
10 - @click="handleDelegate(item)"  
11 - >委派</el-button  
12 - >  
13 - <el-button  
14 - icon="el-icon-refresh-left"  
15 - type="warning"  
16 - size="mini"  
17 - @click="handleBack(item)"  
18 - >退回</el-button  
19 - >  
20 -  
21 - <!-- 高亮流程图 -->  
22 - <el-card class="box-card" v-loading="processInstanceLoading">  
23 - <div slot="header" class="clearfix">  
24 - <span class="el-icon-picture-outline">流程图</span>  
25 - </div>  
26 - <my-process-viewer  
27 - key="designer"  
28 - v-model="bpmnXML"  
29 - v-bind="bpmnControlForm"  
30 - :activityData="activityList"  
31 - :processInstanceData="processInstance"  
32 - :taskData="tasks"  
33 - />  
34 - </el-card>  
35 - </div>  
36 -</template>  
37 -  
38 -<script>  
39 -  
40 -// 流程实例的详情页,可用于审批  
41 -export default {  
42 - name: "ProcessInstanceDetail",  
43 - data () {  
44 - return {  
45 -  
46 - // BPMN 数据  
47 - bpmnXML: null,  
48 - bpmnControlForm: {  
49 - prefix: "flowable"  
50 - },  
51 - activityList: [],  
52 - }  
53 - },  
54 -  
55 -  
56 - /** 处理审批退回的操作 */  
57 - handleDelegate (task) {  
58 - this.$modal.msgError("暂不支持【委派】功能,可以使用【转派】替代!")  
59 - },  
60 - /** 处理审批退回的操作 */  
61 - handleBack (task) {  
62 - this.$modal.msgError("暂不支持【退回】功能!")  
63 - // 可参考 http://blog.wya1.com/article/636697030/details/7296  
64 - // const data = {  
65 - // id: task.id,  
66 - // assigneeUserId: 1  
67 - // }  
68 - // backTask(data).then(response => {  
69 - // this.$modal.msgSuccess("回退成功!");  
70 - // this.getDetail(); // 获得最新详情  
71 - // });  
72 - }  
73 - }  
74 -};  
75 -</script>