From f6ea543b3de9a770c1bf5db2baf3e8a5dc2c867a Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 30 十二月 2024 18:18:44 +0800 Subject: [PATCH] 10.88.4.131 --- src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 0 deletions(-) diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue new file mode 100644 index 0000000..2f9c535 --- /dev/null +++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue @@ -0,0 +1,91 @@ +<template> + <div> + <el-form-item label="执行类型" key="executeType"> + <el-select v-model="serviceTaskForm.executeType"> + <el-option label="Java类" value="class" /> + <el-option label="表达式" value="expression" /> + <el-option label="代理表达式" value="delegateExpression" /> + </el-select> + </el-form-item> + <el-form-item + v-if="serviceTaskForm.executeType === 'class'" + label="Java类" + prop="class" + key="execute-class" + > + <el-input v-model="serviceTaskForm.class" clearable @change="updateElementTask" /> + </el-form-item> + <el-form-item + v-if="serviceTaskForm.executeType === 'expression'" + label="表达式" + prop="expression" + key="execute-expression" + > + <el-input v-model="serviceTaskForm.expression" clearable @change="updateElementTask" /> + </el-form-item> + <el-form-item + v-if="serviceTaskForm.executeType === 'delegateExpression'" + label="代理表达式" + prop="delegateExpression" + key="execute-delegate" + > + <el-input v-model="serviceTaskForm.delegateExpression" clearable @change="updateElementTask" /> + </el-form-item> + </div> +</template> + +<script lang="ts" setup> +defineOptions({ name: 'ServiceTask' }) +const props = defineProps({ + id: String, + type: String +}) + +const defaultTaskForm = ref({ + executeType: '', + class: '', + expression: '', + delegateExpression: '' +}) + +const serviceTaskForm = ref<any>({}) +const bpmnElement = ref() + +const bpmnInstances = () => (window as any)?.bpmnInstances + +const resetTaskForm = () => { + for (let key in defaultTaskForm.value) { + let value = bpmnElement.value?.businessObject[key] || defaultTaskForm.value[key] + serviceTaskForm.value[key] = value + if (value) { + serviceTaskForm.value.executeType = key + } + } +} + +const updateElementTask = () => { + let taskAttr = Object.create(null); + const type = serviceTaskForm.value.executeType; + for (let key in serviceTaskForm.value) { + if (key !== 'executeType' && key !== type) taskAttr[key] = null; + } + taskAttr[type] = serviceTaskForm.value[type] || ""; + bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), taskAttr) +} + +onBeforeUnmount(() => { + bpmnElement.value = null +}) + +watch( + () => props.id, + () => { + bpmnElement.value = bpmnInstances().bpmnElement + nextTick(() => { + resetTaskForm() + }) + }, + { immediate: true } +) + +</script> -- Gitblit v1.9.3