CzRger 5 天之前
父节点
当前提交
c60c1b5485

+ 1 - 0
src/stores/modules/workflow.ts

@@ -22,6 +22,7 @@ export const useWorkflowStore = defineStore('workflow', {
   actions: {
     init(graph) {
       this.graph = graph
+      // 动态获取各节点大小
       return new Promise((resolve) => {
         const keys = Object.keys(NodeTypeObj)
         const arr: any = []

+ 3 - 0
src/views/workflow/chart/context-menu-tool.vue

@@ -21,6 +21,9 @@ const { proxy }: any = getCurrentInstance()
 const state: any = reactive({})
 const onDel = () => {
   if (props.delFlag) {
+    if (proxy.data.id === WorkflowStore.panel.node.id) {
+      WorkflowStore.nodePanelClose()
+    }
     WorkflowStore.graph.startBatch(props.delFlag)
     WorkflowStore.graph.removeEdge(props.data.id)
     WorkflowStore.graph.removeNode(props.data.id)

+ 9 - 2
src/views/workflow/chart/panel-index.vue

@@ -6,10 +6,11 @@
     >
       <div class="flex items-center px-4 pt-4 font-bold">
         <template v-if="nodeSources[nodeDataCpt.type]?.icon">
-          <img class="mr-2 size-6" :src="nodeSources[nodeDataCpt.type].icon" />
+          <img class="size-6" :src="nodeSources[nodeDataCpt.type].icon" />
         </template>
-        <div class="">
+        <div>
           <CzrFormColumn
+            class="title"
             :span="24"
             label-width="0px"
             v-model:param="state.nodeData.title"
@@ -110,4 +111,10 @@ watch(
 .slide-leave-to {
   transform: translateX(100%);
 }
+:deep(.title) {
+  .el-input__inner {
+    color: #303133;
+    font-size: 18px;
+  }
+}
 </style>

+ 12 - 0
src/views/workflow/config.ts

@@ -29,6 +29,7 @@ import variableAggregatorImg from '@/assets/images/workflow/icon-switch.png'
 import variableAggregatorNodeDefault from '@/views/workflow/instance/variable-aggregator/default'
 
 import { defineAsyncComponent } from 'vue'
+import { useWorkflowStore } from '@/stores'
 
 export const lineStyle = {
   stroke: '#bcbcbc',
@@ -203,8 +204,19 @@ export const nodeSources = {
   },
 }
 export const getNodeDefault = (type: NodeType) => {
+  const WorkflowStore = useWorkflowStore()
+  const StartNode = WorkflowStore.graph
+    .getRootNodes()
+    .filter((v) => v.data.workflowData.type === NodeType.Start)[0]
   const node = nodeSources[type].defaultValue()
   node.id = node.data.id
   node.data.type = type
+  if (StartNode) {
+    if (StartNode.data.workflowData[`__${type}Index`]) {
+      node.data.title += ++StartNode.data.workflowData[`__${type}Index`]
+    } else {
+      StartNode.data.workflowData[`__${type}Index`] = 1
+    }
+  }
   return node
 }

+ 1 - 1
src/views/workflow/instance/component/params-textarea/param-value.vue

@@ -17,7 +17,7 @@
     </template>
     <div class="__text-ellipsis flex-1">
       <span class="text-[12px]">
-        {{ nodeDataCpt.desc || nodeDataCpt.title }}
+        {{ nodeDataCpt.title }}
       </span>
       / <span class="text-[#155aef]">{{ vars.key }}</span>
     </div>

+ 1 - 3
src/views/workflow/instance/component/vars/vars-value.vue

@@ -13,9 +13,7 @@
       <SvgIcon name="vars" color="#155aef" size="14" class="mr-1" />
     </template>
     <div class="__text-ellipsis flex-1">
-      <span class="text-[12px]">{{
-        nodeDataCpt.desc || nodeDataCpt.title
-      }}</span>
+      <span class="text-[12px]">{{ nodeDataCpt.title }}</span>
       / <span class="text-[#155aef]">{{ vars.key }}</span> ·
       <span class="opacity-65">{{ vars.label }}</span>
     </div>