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/ScriptTask.vue | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 99 insertions(+), 0 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
new file mode 100644
index 0000000..683fef3
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
@@ -0,0 +1,99 @@
+<template>
+ <div style="margin-top: 16px">
+ <el-form-item label="鑴氭湰鏍煎紡">
+ <el-input
+ v-model="scriptTaskForm.scriptFormat"
+ clearable
+ @input="updateElementTask()"
+ @change="updateElementTask()"
+ />
+ </el-form-item>
+ <el-form-item label="鑴氭湰绫诲瀷">
+ <el-select v-model="scriptTaskForm.scriptType">
+ <el-option label="鍐呰仈鑴氭湰" value="inline" />
+ <el-option label="澶栭儴璧勬簮" value="external" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鑴氭湰" v-show="scriptTaskForm.scriptType === 'inline'">
+ <el-input
+ v-model="scriptTaskForm.script"
+ type="textarea"
+ resize="vertical"
+ :autosize="{ minRows: 2, maxRows: 4 }"
+ clearable
+ @input="updateElementTask()"
+ @change="updateElementTask()"
+ />
+ </el-form-item>
+ <el-form-item label="璧勬簮鍦板潃" v-show="scriptTaskForm.scriptType === 'external'">
+ <el-input
+ v-model="scriptTaskForm.resource"
+ clearable
+ @input="updateElementTask()"
+ @change="updateElementTask()"
+ />
+ </el-form-item>
+ <el-form-item label="缁撴灉鍙橀噺">
+ <el-input
+ v-model="scriptTaskForm.resultVariable"
+ clearable
+ @input="updateElementTask()"
+ @change="updateElementTask()"
+ />
+ </el-form-item>
+ </div>
+</template>
+
+<script lang="ts" setup>
+defineOptions({ name: 'ScriptTask' })
+const props = defineProps({
+ id: String,
+ type: String
+})
+const defaultTaskForm = ref({
+ scriptFormat: '',
+ script: '',
+ resource: '',
+ resultVariable: ''
+})
+const scriptTaskForm = 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]
+ scriptTaskForm.value[key] = value
+ }
+ scriptTaskForm.value.scriptType = scriptTaskForm.value.script ? 'inline' : 'external'
+}
+const updateElementTask = () => {
+ let taskAttr = Object.create(null)
+ taskAttr.scriptFormat = scriptTaskForm.value.scriptFormat || null
+ taskAttr.resultVariable = scriptTaskForm.value.resultVariable || null
+ if (scriptTaskForm.value.scriptType === 'inline') {
+ taskAttr.script = scriptTaskForm.value.script || null
+ taskAttr.resource = null
+ } else {
+ taskAttr.resource = scriptTaskForm.value.resource || null
+ taskAttr.script = null
+ }
+ 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.8.0