Commit 3a954b47bb9ee1fe9c69a05e58f9bb348a69867a

Authored by gexinzhineng/gxzn27
1 parent b700b316

列表浏览bpmn图

yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
1 1 <template>
2 2 <div class="my-process-designer">
3 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 5 </div>
6 6 </div>
7 7 </template>
... ... @@ -9,8 +9,7 @@
9 9 <script setup lang="ts" name="MyProcessViewer">
10 10 import BpmnViewer from 'bpmn-js/lib/Viewer'
11 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 13 const props = defineProps({
15 14 value: {
16 15 // BPMN XML 字符串
... ... @@ -44,7 +43,7 @@ const emit = defineEmits([&#39;destroy&#39;])
44 43 let bpmnModeler
45 44  
46 45 const xml = ref('')
47   -const activityList = ref([])
  46 +const activityLists = ref([])
48 47 const processInstance = ref(undefined)
49 48 const taskList = ref([])
50 49 const bpmnCanvas = ref()
... ... @@ -84,7 +83,7 @@ const createNewDiagram = async (xml) =&gt; {
84 83 /* 高亮流程图 */
85 84 // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
86 85 const highlightDiagram = async () => {
87   - const activityList = activityList.value
  86 + const activityList = activityLists.value
88 87 if (activityList.length === 0) {
89 88 return
90 89 }
... ... @@ -266,7 +265,7 @@ const elementHover = (element) =&gt; {
266 265 !elementOverlayIds.value && (elementOverlayIds.value = {})
267 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 269 if (!activity) {
271 270 return
272 271 }
... ... @@ -329,7 +328,7 @@ const elementOut = (element) =&gt; {
329 328  
330 329 onMounted(() => {
331 330 xml.value = props.value
332   - activityList.value = props.activityData
  331 + activityLists.value = props.activityData
333 332 // 初始化
334 333 initBpmnModeler()
335 334 createNewDiagram(xml.value)
... ... @@ -355,7 +354,7 @@ watch(
355 354 watch(
356 355 () => props.activityData,
357 356 (newActivityData) => {
358   - activityList.value = newActivityData
  357 + activityLists.value = newActivityData
359 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 298 v-if="formDetailVisible"
299 299 />
300 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 312 </ContentWrap>
302 313 </template>
303 314  
... ... @@ -317,6 +328,11 @@ const { t } = useI18n() // 国际化
317 328 const message = useMessage() // 消息弹窗
318 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 337 const [registerTable, { reload }] = useXTable({
322 338 allSchemas: allSchemas,
... ... @@ -369,7 +385,13 @@ const handleFormDetail = async (row) =&gt; {
369 385 const handleBpmnDetail = (row) => {
370 386 // TODO 芋艿:流程组件开发中
371 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 // 点击任务分配按钮
... ...