Commit 3a954b47bb9ee1fe9c69a05e58f9bb348a69867a
1 parent
b700b316
列表浏览bpmn图
Showing
6 changed files
with
46 additions
and
25 deletions
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(['destroy']) | @@ -44,7 +43,7 @@ const emit = defineEmits(['destroy']) | ||
| 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) => { | @@ -84,7 +83,7 @@ const createNewDiagram = async (xml) => { | ||
| 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) => { | @@ -266,7 +265,7 @@ const elementHover = (element) => { | ||
| 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) => { | @@ -329,7 +328,7 @@ const elementOut = (element) => { | ||
| 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
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index.ts
0 → 100644
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index2.js deleted
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index2.ts
0 → 100644
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) => { | @@ -369,7 +385,13 @@ const handleFormDetail = async (row) => { | ||
| 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 | // 点击任务分配按钮 |