2023-02-11 00:44:00 +08:00
|
|
|
|
<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
|
2023-03-06 20:53:19 +08:00
|
|
|
|
v-for="item in Object.keys(messageMap)"
|
|
|
|
|
:value="item"
|
|
|
|
|
:label="messageMap[item]"
|
|
|
|
|
:key="item"
|
2023-02-11 00:44:00 +08:00
|
|
|
|
/>
|
|
|
|
|
</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 setup lang="ts" 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>()
|
|
|
|
|
|
2023-02-21 18:29:27 +08:00
|
|
|
|
const bpmnInstances = () => (window as any).bpmnInstances
|
2023-02-11 00:44:00 +08:00
|
|
|
|
const getBindMessage = () => {
|
2023-02-21 18:29:27 +08:00
|
|
|
|
bpmnElement.value = bpmnInstances().bpmnElement
|
2023-02-11 00:44:00 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
2023-02-21 18:29:27 +08:00
|
|
|
|
const newMessage = bpmnInstances().moddle.create('bpmn:Message', newMessageForm.value)
|
2023-02-11 00:44:00 +08:00
|
|
|
|
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') {
|
2023-02-21 18:29:27 +08:00
|
|
|
|
bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
|
2023-02-11 00:44:00 +08:00
|
|
|
|
messageRef: null
|
|
|
|
|
})
|
|
|
|
|
} else {
|
2023-02-21 18:29:27 +08:00
|
|
|
|
bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
|
2023-02-11 00:44:00 +08:00
|
|
|
|
messageRef: bpmnMessageRefsMap.value[messageId]
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
bpmnMessageRefsMap.value = Object.create(null)
|
2023-02-21 18:29:27 +08:00
|
|
|
|
bpmnRootElements.value = bpmnInstances().modeler.getDefinitions().rootElements
|
2023-02-11 00:44:00 +08:00
|
|
|
|
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,
|
|
|
|
|
() => {
|
2023-02-21 18:29:27 +08:00
|
|
|
|
// bpmnElement.value = bpmnInstances().bpmnElement
|
2023-02-11 00:44:00 +08:00
|
|
|
|
nextTick(() => {
|
|
|
|
|
getBindMessage()
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
{ immediate: true }
|
|
|
|
|
)
|
|
|
|
|
</script>
|