import{A as e,Bt as t,D as n,F as r,I as i,O as a,P as o,Q as s,S as c,Tt as l,Y as u,_t as d,a as f,et as p,j as m,k as h,lt as g,n as _,r as v,t as y,tt as b,vt as x,zt as ee}from"./client-CO11mUW5.js";import{a as S,on as C}from"./config-provider-kwhtQ-D4.js";import{n as w,t as T}from"./DeleteOutlined-Dsl9pMnk.js";import{t as E}from"./PlusOutlined-5Urx-Evx.js";import{t as te}from"./ArrowLeftOutlined-m6YdiMlD.js";import{h as D,m as O}from"./useApi-CROJJdhE-BlzMTLF9.js";var k={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0048.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z`}}]},name:`arrow-down`,theme:`outlined`};function A(e){for(var t=1;tF.value.find(e=>e.node_key===R.value)),V=n(()=>P.value?.status===`draft`),H=n(()=>P.value?.status===`reviewing`),U=[{value:`message`,label:`标准话术`},{value:`question`,label:`单项提问`},{value:`choice`,label:`选择判断`},{value:`condition`,label:`条件节点`},{value:`knowledge`,label:`知识卡`},{value:`escalate`,label:`转人工/转诊`},{value:`finish`,label:`结束`}],J=d({target_node_key:``,field:``,operator:`equals`,value:``});async function Y(){A.value=!0;try{let e=await y.get(`/sops/${k}`);N.value=e.sop,P.value=e.version,F.value=e.nodes.map(e=>({...e,config:e.config||{}})),L.value=e.edges.map(e=>({...e,condition:e.condition||{}})),R.value||=F.value[0]?.node_key||``}catch(e){S.error(_(e))}finally{A.value=!1}}function be(){let e=`node_${Date.now()}`;F.value.push({id:0,created_at:``,updated_at:``,node_key:e,type:`message`,title:`新步骤`,content:``,config:{},position_x:0,position_y:F.value.length*120}),R.value=e}function xe(e){if([`start`].includes(e.type))return S.warning(`开始节点不能删除`);w.confirm({title:`删除“${e.title}”?`,content:`与该节点关联的转移条件也会删除。`,okType:`danger`,onOk(){F.value=F.value.filter(t=>t.node_key!==e.node_key),L.value=L.value.filter(t=>t.source_node_key!==e.node_key&&t.target_node_key!==e.node_key),R.value=F.value[0]?.node_key||``}})}function X(e,t){let n=e+t;if(n<0||n>=F.value.length)return;let r=[...F.value];[r[e],r[n]]=[r[n],r[e]],r.forEach((e,t)=>e.position_y=t*120),F.value=r}function Z(e){return L.value.filter(t=>t.source_node_key===e)}function Se(){if(!z.value||!J.target_node_key)return;let e=J.field?{field:J.field,operator:J.operator,value:we(J.value)}:{};L.value.push({id:0,created_at:``,updated_at:``,source_node_key:z.value.node_key,target_node_key:J.target_node_key,condition:e,priority:Z(z.value.node_key).length}),Object.assign(J,{target_node_key:``,field:``,operator:`equals`,value:``})}function Ce(e){L.value=L.value.filter(t=>t!==e)}function we(e){return e===`true`?!0:e===`false`?!1:e!==``&&!Number.isNaN(Number(e))?Number(e):e}function Te(e){return!e||!e.field?`默认路径`:`${e.field} ${{equals:`等于`,not_equals:`不等于`,contains:`包含`,greater_than:`大于`,less_than:`小于`,exists:`已填写`,not_exists:`未填写`}[e.operator]||e.operator} ${e.value??``}`}async function Q(){j.value=!0;try{await y.put(`/sops/${k}/draft`,{start_node_key:P.value?.start_node_key||`start`,nodes:F.value.map(({node_key:e,type:t,title:n,content:r,config:i,position_x:a,position_y:o})=>({node_key:e,type:t,title:n,content:r,config:i,position_x:a,position_y:o})),edges:L.value.map(({source_node_key:e,target_node_key:t,condition:n,priority:r})=>({source_node_key:e,target_node_key:t,condition:n,priority:r}))}),S.success(`草稿已保存`),await Y()}catch(e){S.error(_(e))}finally{j.value=!1}}async function Ee(){try{let e=await y.post(`/sops/${k}/validate`);e.valid?S.success(`流程校验通过`):w.warning({title:`流程还不能发布`,content:e.problems.join(`;`)})}catch(e){S.error(_(e))}}async function De(){try{await Q(),await y.post(`/sops/${k}/submit-review`),S.success(`SOP 已提交审核`),await Y()}catch(e){S.error(_(e))}}async function Oe(){try{V.value&&await Q(),await y.post(`/sops/${k}/publish`),S.success(`SOP 已发布`),await Y()}catch(e){S.error(_(e))}}async function ke(){try{await y.post(`/sops/${k}/offline`),S.success(`SOP 已下线`),await Y()}catch(e){S.error(_(e))}}async function $(){try{await y.post(`/sops/${k}/versions`),S.success(`已创建新草稿版本`),await Y()}catch(e){S.error(_(e))}}return u(Y),(n,i)=>{let u=b(`a-button`),d=b(`a-input`),f=b(`a-form-item`),_=b(`a-select`),y=b(`a-textarea`),x=b(`a-switch`),S=b(`a-form`),w=b(`a-tag`),D=b(`a-empty`),O=b(`a-spin`);return s(),m(`div`,ne,[a(`header`,re,[a(`div`,ie,[r(u,{type:`text`,"aria-label":`返回场景`,onClick:i[0]||=e=>l(v).push(`/scenarios/${N.value?.scenario_id}`)},{default:g(()=>[r(l(te))]),_:1}),a(`div`,null,[a(`b`,null,t(N.value?.name||`SOP 编辑器`),1),a(`span`,null,`版本 `+t(P.value?.version)+` · `+t(V.value?`草稿`:H.value?`审核中`:P.value?.status===`offline`?`已下线`:`已发布`),1)])]),a(`div`,ae,[r(u,{onClick:Ee},{default:g(()=>[...i[12]||=[o(`校验流程`,-1)]]),_:1}),V.value?(s(),h(u,{key:0,loading:j.value,onClick:Q},{default:g(()=>[r(l(B)),i[13]||=o(`保存`,-1)]),_:1},8,[`loading`])):e(``,!0),V.value?(s(),h(u,{key:1,onClick:De},{default:g(()=>[r(l(W)),i[14]||=o(`提交审核`,-1)]),_:1})):e(``,!0),V.value||H.value?(s(),h(u,{key:2,type:`primary`,onClick:Oe},{default:g(()=>[r(l(W)),i[15]||=o(`发布`,-1)]),_:1})):e(``,!0),P.value?.status===`published`?(s(),h(u,{key:3,danger:``,onClick:ke},{default:g(()=>[...i[16]||=[o(`下线`,-1)]]),_:1})):e(``,!0),!V.value&&P.value?.status!==`reviewing`&&P.value?.status!==`published`?(s(),h(u,{key:4,type:`primary`,onClick:$},{default:g(()=>[r(l(E)),i[17]||=o(`创建新版本`,-1)]),_:1})):e(``,!0),P.value?.status===`published`?(s(),h(u,{key:5,type:`primary`,onClick:$},{default:g(()=>[r(l(E)),i[18]||=o(`创建新版本`,-1)]),_:1})):e(``,!0)])]),r(O,{spinning:A.value},{default:g(()=>[a(`main`,oe,[a(`aside`,G,[a(`div`,K,[i[19]||=a(`span`,null,`流程节点`,-1),V.value?(s(),h(u,{key:0,type:`text`,"aria-label":`添加节点`,onClick:be},{default:g(()=>[r(l(E))]),_:1})):e(``,!0)]),a(`div`,se,[(s(!0),m(c,null,p(F.value,(n,i)=>(s(),m(`button`,{key:n.node_key,class:ee({active:R.value===n.node_key}),onClick:e=>R.value=n.node_key},[a(`span`,le,t(String(i+1).padStart(2,`0`)),1),a(`span`,ue,[a(`b`,null,t(n.title),1),a(`small`,null,t(U.find(e=>e.value===n.type)?.label||n.type),1)]),V.value&&n.type!==`start`?(s(),m(`span`,de,[r(l(I),{onClick:C(e=>X(i,-1),[`stop`])},null,8,[`onClick`]),r(l(M),{onClick:C(e=>X(i,1),[`stop`])},null,8,[`onClick`])])):e(``,!0)],10,ce))),128))])]),z.value?(s(),m(`section`,fe,[a(`div`,pe,[a(`div`,null,[a(`span`,me,t(z.value.type.toUpperCase()),1),a(`h2`,null,t(z.value.title),1)]),V.value&&z.value.type!==`start`?(s(),h(u,{key:0,danger:``,type:`text`,onClick:i[1]||=e=>xe(z.value)},{default:g(()=>[r(l(T)),i[20]||=o(`删除`,-1)]),_:1})):e(``,!0)]),r(S,{layout:`vertical`,class:`property-form`},{default:g(()=>[a(`div`,he,[r(f,{label:`节点名称`},{default:g(()=>[r(d,{value:z.value.title,"onUpdate:value":i[2]||=e=>z.value.title=e,disabled:!V.value},null,8,[`value`,`disabled`])]),_:1}),r(f,{label:`节点类型`},{default:g(()=>[r(_,{value:z.value.type,"onUpdate:value":i[3]||=e=>z.value.type=e,disabled:!V.value||z.value.type===`start`,options:U},null,8,[`value`,`disabled`])]),_:1})]),r(f,{label:`标准话术 / 操作提示`},{default:g(()=>[r(y,{value:z.value.content,"onUpdate:value":i[4]||=e=>z.value.content=e,disabled:!V.value,rows:5,placeholder:`执行到此节点时展示给一线人员的内容`},null,8,[`value`,`disabled`])]),_:1}),[`question`,`choice`].includes(z.value.type)?(s(),m(`div`,ge,[r(f,{label:`写入字段标识`},{default:g(()=>[r(d,{value:z.value.config.field_key,"onUpdate:value":i[5]||=e=>z.value.config.field_key=e,disabled:!V.value,placeholder:`例如 pet_weight`},null,8,[`value`,`disabled`])]),_:1}),r(f,{label:`是否必填`},{default:g(()=>[r(x,{checked:z.value.config.required,"onUpdate:checked":i[6]||=e=>z.value.config.required=e,disabled:!V.value},null,8,[`checked`,`disabled`])]),_:1})])):e(``,!0),z.value.type===`choice`?(s(),h(f,{key:1,label:`可选项(每行一个)`},{default:g(()=>[r(y,{value:(z.value.config.options||[]).join(` `),disabled:!V.value,rows:4,onChange:i[7]||=e=>z.value.config.options=e.target.value.split(` `).filter(Boolean)},null,8,[`value`,`disabled`])]),_:1})):e(``,!0)]),_:1}),i[23]||=a(`div`,{class:`transition-head`},[a(`div`,null,[a(`b`,null,`下一步路径`),a(`span`,null,`按优先级匹配,默认路径建议放最后`)])],-1),a(`div`,_e,[(s(!0),m(c,null,p(Z(R.value),n=>(s(),m(`div`,{key:`${n.source_node_key}-${n.target_node_key}-${n.priority}`,class:`transition-row`},[i[21]||=a(`span`,{class:`route-line`},null,-1),a(`span`,ve,t(F.value.find(e=>e.node_key===n.target_node_key)?.title||n.target_node_key),1),r(w,null,{default:g(()=>[o(t(Te(n.condition)),1)]),_:2},1024),V.value?(s(),h(u,{key:0,type:`text`,danger:``,"aria-label":`删除路径`,onClick:e=>Ce(n)},{default:g(()=>[r(l(T))]),_:1},8,[`onClick`])):e(``,!0)]))),128)),Z(R.value).length?e(``,!0):(s(),m(`div`,ye,`还没有下一步路径`))]),V.value&&![`finish`,`escalate`].includes(z.value.type)?(s(),m(`div`,q,[r(_,{value:J.target_node_key,"onUpdate:value":i[8]||=e=>J.target_node_key=e,placeholder:`目标节点`,options:F.value.filter(e=>e.node_key!==R.value).map(e=>({value:e.node_key,label:e.title}))},null,8,[`value`,`options`]),r(d,{value:J.field,"onUpdate:value":i[9]||=e=>J.field=e,placeholder:`条件字段(留空为默认)`},null,8,[`value`]),r(_,{value:J.operator,"onUpdate:value":i[10]||=e=>J.operator=e,options:[{value:`equals`,label:`等于`},{value:`not_equals`,label:`不等于`},{value:`contains`,label:`包含`},{value:`greater_than`,label:`大于`},{value:`less_than`,label:`小于`},{value:`exists`,label:`已填写`}]},null,8,[`value`]),r(d,{value:J.value,"onUpdate:value":i[11]||=e=>J.value=e,placeholder:`条件值`},null,8,[`value`]),r(u,{onClick:Se},{default:g(()=>[r(l(E)),i[22]||=o(`添加路径`,-1)]),_:1})])):e(``,!0)])):(s(),h(D,{key:1,description:`请选择一个节点`,class:`surface editor-empty`}))])]),_:1},8,[`spinning`])])}}}),[[`__scopeId`,`data-v-06435891`]]);export{J as default};