import{q as e,a9 as a,aR as t,aS as o,e as l,z as n,A as s,t as r,ad as i,d,au as u,aq as c,g as v,a as f,aT as p,ak as g,aU as m,ai as h,aj as w,aV as y,aW as _,P as b,ag as k}from"./element-plus.DUy1TWHM.js";import{u as x,a as $,b as C,c as D,d as E,e as T}from"./@vue-flow.C14KmPsA.js";import{d as j}from"./dagre.C9k86_Gz.js";import z from"./DynamicNode._CPMgUtp.js";import V from"./NodeConfigPanel.Vr2brQKy.js";import W from"./EdgeConfigPanel.BFydi7eE.js";import{a0 as N,W as L,_ as S}from"./index.B1CvNv-2.js";import{M as U,aD as B,bE as O,aL as I,s as P,bJ as q,I as M,v as G,bk as H,u as R,F as A,aX as J,H as F,bb as X,au as Y,t as K,aU as Q,aS as Z,q as ee,ao as ae}from"./@vue.DbmRtknU.js";const te="/task/workflow/definition",oe={getWorkflowList:e=>N({url:`${te}/list`,method:"get",params:e}),getWorkflowDetail:e=>N({url:`${te}/detail/${e}`,method:"get"}),createWorkflow:e=>N({url:`${te}/create`,method:"post",data:e}),updateWorkflow:(e,a)=>N({url:`${te}/update/${e}`,method:"put",data:a}),deleteWorkflow:e=>N({url:`${te}/delete`,method:"delete",data:e}),publishWorkflow:(e,a)=>N({url:`${te}/publish/${e}`,method:"post",data:a}),executeWorkflow:e=>N({url:`${te}/execute`,method:"post",data:e})},le={class:"panel-section"},ne={class:"panel-section"},se={style:{"margin-left":"4px","font-size":"10px",opacity:"0.7"}},re={class:"canvas-main"},ie={class:"drawer-footer"},de=S(U({name:"WorkflowCreateDrawer",inheritAttrs:!1,__name:"WorkflowDesignDrawer",props:{visible:{type:Boolean,default:!1},workflow:{type:Object,default:void 0}},emits:["update:visible","refresh"],setup(N,{emit:S}){const U=N,te=S,de=Q(),ue=Q(),ce=Z({code:"",name:"",description:""}),ve={code:[{required:!0,message:"请输入流程编码",trigger:"blur"}],name:[{required:!0,message:"请输入流程名称",trigger:"blur"}]},fe=ee({get:()=>U.visible,set:e=>te("update:visible",e)}),pe=ee(()=>U.workflow?"编辑工作流":"创建工作流"),{onInit:ge,onConnect:me,addEdges:he,getNodes:we,getEdges:ye,setEdges:_e,setNodes:be,screenToFlowCoordinate:ke,onNodesInitialized:xe,updateNode:$e,addNodes:Ce}=x(),De={type:"smoothstep",animated:!0,markerEnd:"arrowclosed"},Ee=Q("smoothstep"),Te=Q(!0),je=e=>{Ee.value=e,De.type=e,_e(ye.value.map(a=>({...a,type:e})))},ze=Q("LR"),Ve=()=>{const a=we.value,t=ye.value;if(0===a.length)return void e.warning("画布中没有节点,无法布局");const o=new j.graphlib.Graph;o.setDefaultEdgeLabel(()=>({}));o.setGraph({rankdir:ze.value,nodesep:80,ranksep:120,marginx:50,marginy:50}),a.forEach(e=>{o.setNode(e.id,{width:180,height:60})}),t.forEach(e=>{o.setEdge(e.source,e.target)}),j.layout(o);const l=a.map(e=>{const a=o.node(e.id);return{...e,position:{x:a.x-90,y:a.y-30}}});be(l),_e(t.map(e=>({...e,type:Ee.value,animated:Te.value}))),e.success("画布布局完成")},We=()=>{const a=we.value,t=ye.value;if(0===a.length)return void e.warning("画布中没有节点,无法格式化");const o=new j.graphlib.Graph;o.setDefaultEdgeLabel(()=>({}));o.setGraph({rankdir:ze.value,nodesep:100,ranksep:150,marginx:80,marginy:80}),a.forEach(e=>{o.setNode(e.id,{width:180,height:60})}),t.forEach(e=>{o.setEdge(e.source,e.target)}),j.layout(o);const l=a.map(e=>{const a=o.node(e.id);return{...e,position:{x:a.x-90,y:a.y-30}}});be(l),_e(t.map(e=>({...e,type:Ee.value,animated:Te.value}))),e.success("画布格式化完成")},Ne=Q([]),Le=Q([]),Se=Q(""),Ue=Q([]),Be=ee(()=>{if(!Se.value)return Ue.value;const e=Se.value.toLowerCase();return Ue.value.filter(a=>a.name.toLowerCase().includes(e))}),Oe=e=>({trigger:"触发器",action:"动作",condition:"条件",control:"控制"}[e]||e),Ie=Q({}),Pe=Q(""),qe=Q(),Me=Q(),Ge=Q(!1),He=()=>we.value,Re=()=>ye.value.map(e=>({id:e.id,source:e.source,target:e.target,label:"string"==typeof e.label?e.label:void 0,type:e.type,animated:e.animated,style:e.style,data:e.data}));B(()=>{(async()=>{Ge.value=!0;try{const e=await L.getWorkflowNodeTypeOptions();if(e.data&&e.data.data){Ue.value=e.data.data.map(e=>({id:e.id,type:e.code,name:e.name,category:e.category||"action",args:e.args||"",kwargs:e.kwargs||"{}"}));const a={};e.data.data.forEach(e=>{a[e.code]=ae(z)}),Ie.value=a}}catch{e.error("加载节点类型失败")}finally{Ge.value=!1}})()}),ge(a=>{a.fitView(),ue.value?oe.getWorkflowDetail(ue.value).then(e=>{e.data&&e.data.data&&(Ne.value=e.data.data.nodes||[],Le.value=e.data.data.edges||[],na(Ne.value,Le.value))}).catch(()=>{e.error("流程加载失败")}):na(Ne.value,Le.value)}),me(e=>{he({...e,type:Ee.value,animated:Te.value}),na(Ne.value,Le.value)});const Ae=e=>{e.event.stopPropagation(),qe.value=e.edge,Pe.value="edge"},Je=e=>{e.target instanceof HTMLElement&&(e.target.classList.contains("vue-flow__node")||e.target.closest(".vue-flow__node"))||(Pe.value="",Me.value=void 0,qe.value=void 0)},Fe=e=>{e.event.stopPropagation(),Me.value=e.node,Pe.value="node"};function Xe(e){!function(e,a,t,o,l){var n;const s=null==(n=e.dataTransfer)?void 0:n.getData("application/vueflow");if(!s)return;const r=JSON.parse(s),i=a({x:e.clientX,y:e.clientY}),d={id:`node-${Date.now()}`,type:r.type,position:i,data:{label:r.name,type:r.type,category:r.category,args:r.args,kwargs:r.kwargs}};l([d])}(e,ke,0,0,Ce)}function Ye(){Pe.value="",Me.value=void 0,qe.value=void 0}function Ke(e){if(!Me.value)return;const a=Me.value.id;a&&function(e,a,t,o){const l=t(),n=l.findIndex(a=>a.id===e);if(-1===n)return!1;const s=[...l];return s[n]={...s[n],data:{...s[n].data,...a}},o(s),!0}(a,e,He,be)&&na(Ne.value,Le.value)}function Qe(){if(!Me.value)return;const a=Me.value.id;a&&b.confirm("确定要删除该节点吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{!function(e,a,t,o,l){const n=a(),s=o(),r=n.filter(a=>a.id!==e),i=s.filter(a=>a.source!==e&&a.target!==e);t(r),l(i)}(a,He,be,Re,_e),e.success("节点删除成功"),Ye(),na(Ne.value,Le.value)})}function Ze(e){if(!qe.value)return;const a=qe.value.id;a&&function(e,a,t,o){const l=t(),n=l.findIndex(a=>a.id===e);if(-1===n)return!1;const s=[...l];return s[n]={...s[n],...a,data:{...s[n].data,...a}},o(s),!0}(a,e,Re,_e)&&na(Ne.value,Le.value)}function ea(){if(!qe.value)return;const a=qe.value.id;a&&b.confirm("确定要删除该连线吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{!function(e,a,t){const o=a().filter(a=>a.id!==e);t(o)}(a,Re,_e),e.success("连线删除成功"),Ye(),na(Ne.value,Le.value)})}O(()=>U.workflow,e=>{e?(Object.assign(ce,{code:e.code,name:e.name,description:e.description}),ue.value=e.id,Ne.value=e.nodes||[],Le.value=e.edges||[]):(Object.assign(ce,{code:"",name:"",description:""}),ue.value=void 0,Ne.value=[],Le.value=[])},{immediate:!0});const aa=async()=>{if(de.value)try{await de.value.validate(),await function(){const e=[],a=[],t=He(),o=Re();0===t.length&&e.push("流程中没有节点");const l=new Set(t.map(e=>e.id));o.forEach(a=>{l.has(a.source)||e.push(`连线 ${a.label||a.id} 的源节点不存在`),l.has(a.target)||e.push(`连线 ${a.label||a.id} 的目标节点不存在`)});const n=t.filter(e=>!o.some(a=>a.source===e.id||a.target===e.id));if(n.length>0&&a.push(`有 ${n.length} 个孤立节点: ${n.map(e=>e.data.label).join(", ")}`),e.length>0)throw b.alert(`