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