From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue | 125 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 125 insertions(+), 0 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
new file mode 100644
index 0000000..83ed24e
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
@@ -0,0 +1,125 @@
+<template>
+ <div style="margin-top: 16px">
+ <el-form-item label="娑堟伅瀹炰緥">
+ <div
+ style="
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: nowrap;
+ "
+ >
+ <el-select v-model="bindMessageId" @change="updateTaskMessage">
+ <el-option
+ v-for="key in Object.keys(messageMap)"
+ :value="key"
+ :label="messageMap[key]"
+ :key="key"
+ />
+ </el-select>
+ <XButton
+ type="primary"
+ preIcon="ep:plus"
+ style="margin-left: 8px"
+ @click="openMessageModel"
+ />
+ </div>
+ </el-form-item>
+ <el-dialog
+ v-model="messageModelVisible"
+ :close-on-click-modal="false"
+ title="鍒涘缓鏂版秷鎭�"
+ width="400px"
+ append-to-body
+ destroy-on-close
+ >
+ <el-form :model="newMessageForm" size="small" label-width="90px">
+ <el-form-item label="娑堟伅ID">
+ <el-input v-model="newMessageForm.id" clearable />
+ </el-form-item>
+ <el-form-item label="娑堟伅鍚嶇О">
+ <el-input v-model="newMessageForm.name" clearable />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button size="small" type="primary" @click="createNewMessage">纭� 璁�</el-button>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script lang="ts" setup>
+defineOptions({ name: 'ReceiveTask' })
+const props = defineProps({
+ id: String,
+ type: String
+})
+
+const message = useMessage()
+
+const bindMessageId = ref('')
+const newMessageForm = ref<any>({})
+const messageMap = ref<any>({})
+const messageModelVisible = ref(false)
+const bpmnElement = ref<any>()
+const bpmnMessageRefsMap = ref<any>()
+const bpmnRootElements = ref<any>()
+
+const bpmnInstances = () => (window as any).bpmnInstances
+const getBindMessage = () => {
+ bpmnElement.value = bpmnInstances().bpmnElement
+ bindMessageId.value = bpmnElement.value.businessObject?.messageRef?.id || '-1'
+}
+const openMessageModel = () => {
+ messageModelVisible.value = true
+ newMessageForm.value = {}
+}
+const createNewMessage = () => {
+ if (messageMap.value[newMessageForm.value.id]) {
+ message.error('璇ユ秷鎭凡瀛樺湪锛岃淇敼id鍚庨噸鏂颁繚瀛�')
+ return
+ }
+ const newMessage = bpmnInstances().moddle.create('bpmn:Message', newMessageForm.value)
+ bpmnRootElements.value.push(newMessage)
+ messageMap.value[newMessageForm.value.id] = newMessageForm.value.name
+ bpmnMessageRefsMap.value[newMessageForm.value.id] = newMessage
+ messageModelVisible.value = false
+}
+const updateTaskMessage = (messageId) => {
+ if (messageId === '-1') {
+ bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
+ messageRef: null
+ })
+ } else {
+ bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
+ messageRef: bpmnMessageRefsMap.value[messageId]
+ })
+ }
+}
+
+onMounted(() => {
+ bpmnMessageRefsMap.value = Object.create(null)
+ bpmnRootElements.value = bpmnInstances().modeler.getDefinitions().rootElements
+ bpmnRootElements.value
+ .filter((el) => el.$type === 'bpmn:Message')
+ .forEach((m) => {
+ bpmnMessageRefsMap.value[m.id] = m
+ messageMap.value[m.id] = m.name
+ })
+ messageMap.value['-1'] = '鏃�'
+})
+
+onBeforeUnmount(() => {
+ bpmnElement.value = null
+})
+watch(
+ () => props.id,
+ () => {
+ // bpmnElement.value = bpmnInstances().bpmnElement
+ nextTick(() => {
+ getBindMessage()
+ })
+ },
+ { immediate: true }
+)
+</script>
--
Gitblit v1.8.0