|
@@ -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>
|