Commit 3a954b47bb9ee1fe9c69a05e58f9bb348a69867a

Authored by gexinzhineng/gxzn27
1 parent b700b316

列表浏览bpmn图

yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
1 <template> 1 <template>
2 <div class="my-process-designer"> 2 <div class="my-process-designer">
3 <div class="my-process-designer__container"> 3 <div class="my-process-designer__container">
4 - <div class="my-process-designer__canvas" ref="bpmn-canvas"></div> 4 + <div class="my-process-designer__canvas" style="height: 760px" ref="bpmnCanvas"></div>
5 </div> 5 </div>
6 </div> 6 </div>
7 </template> 7 </template>
@@ -9,8 +9,7 @@ @@ -9,8 +9,7 @@
9 <script setup lang="ts" name="MyProcessViewer"> 9 <script setup lang="ts" name="MyProcessViewer">
10 import BpmnViewer from 'bpmn-js/lib/Viewer' 10 import BpmnViewer from 'bpmn-js/lib/Viewer'
11 import DefaultEmptyXML from './plugins/defaultEmpty' 11 import DefaultEmptyXML from './plugins/defaultEmpty'
12 -import { onMounted } from 'vue'  
13 -import { onBeforeUnmount, provide, ref, watch } from 'vue' 12 +import { onMounted, onBeforeUnmount, provide, ref, watch } from 'vue'
14 const props = defineProps({ 13 const props = defineProps({
15 value: { 14 value: {
16 // BPMN XML 字符串 15 // BPMN XML 字符串
@@ -44,7 +43,7 @@ const emit = defineEmits([&#39;destroy&#39;]) @@ -44,7 +43,7 @@ const emit = defineEmits([&#39;destroy&#39;])
44 let bpmnModeler 43 let bpmnModeler
45 44
46 const xml = ref('') 45 const xml = ref('')
47 -const activityList = ref([]) 46 +const activityLists = ref([])
48 const processInstance = ref(undefined) 47 const processInstance = ref(undefined)
49 const taskList = ref([]) 48 const taskList = ref([])
50 const bpmnCanvas = ref() 49 const bpmnCanvas = ref()
@@ -84,7 +83,7 @@ const createNewDiagram = async (xml) =&gt; { @@ -84,7 +83,7 @@ const createNewDiagram = async (xml) =&gt; {
84 /* 高亮流程图 */ 83 /* 高亮流程图 */
85 // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html 84 // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
86 const highlightDiagram = async () => { 85 const highlightDiagram = async () => {
87 - const activityList = activityList.value 86 + const activityList = activityLists.value
88 if (activityList.length === 0) { 87 if (activityList.length === 0) {
89 return 88 return
90 } 89 }
@@ -266,7 +265,7 @@ const elementHover = (element) =&gt; { @@ -266,7 +265,7 @@ const elementHover = (element) =&gt; {
266 !elementOverlayIds.value && (elementOverlayIds.value = {}) 265 !elementOverlayIds.value && (elementOverlayIds.value = {})
267 !overlays.value && (overlays.value = bpmnModeler.get('overlays')) 266 !overlays.value && (overlays.value = bpmnModeler.get('overlays'))
268 // 展示信息 267 // 展示信息
269 - const activity = activityList.value.find((m) => m.key === element.value.id) 268 + const activity = activityLists.value.find((m) => m.key === element.value.id)
270 if (!activity) { 269 if (!activity) {
271 return 270 return
272 } 271 }
@@ -329,7 +328,7 @@ const elementOut = (element) =&gt; { @@ -329,7 +328,7 @@ const elementOut = (element) =&gt; {
329 328
330 onMounted(() => { 329 onMounted(() => {
331 xml.value = props.value 330 xml.value = props.value
332 - activityList.value = props.activityData 331 + activityLists.value = props.activityData
333 // 初始化 332 // 初始化
334 initBpmnModeler() 333 initBpmnModeler()
335 createNewDiagram(xml.value) 334 createNewDiagram(xml.value)
@@ -355,7 +354,7 @@ watch( @@ -355,7 +354,7 @@ watch(
355 watch( 354 watch(
356 () => props.activityData, 355 () => props.activityData,
357 (newActivityData) => { 356 (newActivityData) => {
358 - activityList.value = newActivityData 357 + activityLists.value = newActivityData
359 createNewDiagram(xml.value) 358 createNewDiagram(xml.value)
360 } 359 }
361 ) 360 )
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index.js deleted
1 -import MyProcessDesigner from "./ProcessDesigner.vue";  
2 -  
3 -MyProcessDesigner.install = function(Vue) {  
4 - Vue.component(MyProcessDesigner.name, MyProcessDesigner);  
5 -};  
6 -  
7 -// 流程图的设计器,可编辑  
8 -export default MyProcessDesigner;  
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index.ts 0 → 100644
  1 +import MyProcessDesigner from './ProcessDesigner.vue'
  2 +
  3 +MyProcessDesigner.install = function (Vue) {
  4 + Vue.component(MyProcessDesigner.name, MyProcessDesigner)
  5 +}
  6 +
  7 +// 流程图的设计器,可编辑
  8 +export default MyProcessDesigner
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index2.js deleted
1 -import MyProcessViewer from "./ProcessViewer.vue";  
2 -  
3 -MyProcessViewer.install = function(Vue) {  
4 - Vue.component(MyProcessViewer.name, MyProcessViewer);  
5 -};  
6 -  
7 -// 流程图的查看器,不可编辑  
8 -export default MyProcessViewer;  
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index2.ts 0 → 100644
  1 +import MyProcessViewer from './ProcessViewer.vue'
  2 +
  3 +MyProcessViewer.install = function (Vue) {
  4 + Vue.component(MyProcessViewer.name, MyProcessViewer)
  5 +}
  6 +
  7 +// 流程图的查看器,不可编辑
  8 +export default MyProcessViewer
yudao-ui-admin-vue3/src/views/bpm/model/index.vue
@@ -298,6 +298,17 @@ @@ -298,6 +298,17 @@
298 v-if="formDetailVisible" 298 v-if="formDetailVisible"
299 /> 299 />
300 </XModal> 300 </XModal>
  301 +
  302 + <!-- 流程模型图的预览 -->
  303 + <XModal title="流程图" v-model="showBpmnOpen" width="80%" height="90%">
  304 + <my-process-viewer
  305 + key="designer"
  306 + v-model="bpmnXML"
  307 + :value="bpmnXML"
  308 + v-bind="bpmnControlForm"
  309 + :prefix="bpmnControlForm.prefix"
  310 + />
  311 + </XModal>
301 </ContentWrap> 312 </ContentWrap>
302 </template> 313 </template>
303 314
@@ -317,6 +328,11 @@ const { t } = useI18n() // 国际化 @@ -317,6 +328,11 @@ const { t } = useI18n() // 国际化
317 const message = useMessage() // 消息弹窗 328 const message = useMessage() // 消息弹窗
318 const router = useRouter() // 路由 329 const router = useRouter() // 路由
319 330
  331 +const showBpmnOpen = ref(false)
  332 +const bpmnXML = ref(null)
  333 +const bpmnControlForm = ref({
  334 + prefix: 'flowable'
  335 +})
320 // ========== 列表相关 ========== 336 // ========== 列表相关 ==========
321 const [registerTable, { reload }] = useXTable({ 337 const [registerTable, { reload }] = useXTable({
322 allSchemas: allSchemas, 338 allSchemas: allSchemas,
@@ -369,7 +385,13 @@ const handleFormDetail = async (row) =&gt; { @@ -369,7 +385,13 @@ const handleFormDetail = async (row) =&gt; {
369 const handleBpmnDetail = (row) => { 385 const handleBpmnDetail = (row) => {
370 // TODO 芋艿:流程组件开发中 386 // TODO 芋艿:流程组件开发中
371 console.log(row) 387 console.log(row)
372 - message.success('流程组件开发中,预计 2 月底完成') 388 + ModelApi.getModelApi(row).then((response) => {
  389 + console.log(response, 'response')
  390 + bpmnXML.value = response.bpmnXml
  391 + // 弹窗打开
  392 + showBpmnOpen.value = true
  393 + })
  394 + // message.success('流程组件开发中,预计 2 月底完成')
373 } 395 }
374 396
375 // 点击任务分配按钮 397 // 点击任务分配按钮