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)),U=n(()=>P.value?.status===`draft`),G=n(()=>P.value?.status===`reviewing`),K=[{value:`message`,label:`标准话术`},{value:`question`,label:`单项提问`},{value:`form`,label:`信息表单`},{value:`choice`,label:`选择判断`},{value:`condition`,label:`条件节点`},{value:`knowledge`,label:`知识卡`},{value:`escalate`,label:`转人工/转诊`},{value:`finish`,label:`结束`}],q=d({target_node_key:``,field:``,operator:`equals`,value:``});async function J(){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||``;let[t,n]=await Promise.all([y.get(`/scenarios/${e.sop.scenario_id}`),y.get(`/knowledge-cards`)]);z.value=t.fields,V.value=n.items.filter(t=>t.scenario_id===e.sop.scenario_id)}catch(e){S.error(_(e))}finally{A.value=!1}}function Ce(){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 we(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 Y(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 X(e){return L.value.filter(t=>t.source_node_key===e)}function Te(){if(!H.value||!q.target_node_key)return;let e=q.field?{field:q.field,operator:q.operator,value:De(q.value)}:{};L.value.push({id:0,created_at:``,updated_at:``,source_node_key:H.value.node_key,target_node_key:q.target_node_key,condition:e,priority:X(H.value.node_key).length}),Object.assign(q,{target_node_key:``,field:``,operator:`equals`,value:``})}function Ee(e){L.value=L.value.filter(t=>t!==e)}function De(e){return e===`true`?!0:e===`false`?!1:e!==``&&!Number.isNaN(Number(e))?Number(e):e}function Z(e){return!e||Object.keys(e).length===0?`默认路径`:Array.isArray(e.any)?`任一:${e.any.map(Z).join(`;`)}`:Array.isArray(e.all)?`全部:${e.all.map(Z).join(`;`)}`:e.field?`${z.value.find(t=>t.field_key===e.field)?.field_name||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 J()}catch(e){S.error(_(e))}finally{j.value=!1}}async function Oe(){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 ke(){try{await Q(),await y.post(`/sops/${k}/submit-review`),S.success(`SOP 已提交审核`),await J()}catch(e){S.error(_(e))}}async function Ae(){try{U.value&&await Q(),await y.post(`/sops/${k}/publish`),S.success(`SOP 已发布`),await J()}catch(e){S.error(_(e))}}async function je(){try{await y.post(`/sops/${k}/offline`),S.success(`SOP 已下线`),await J()}catch(e){S.error(_(e))}}async function $(){try{await y.post(`/sops/${k}/versions`),S.success(`已创建新草稿版本`),await J()}catch(e){S.error(_(e))}}return u(J),(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(U.value?`草稿`:G.value?`审核中`:P.value?.status===`offline`?`已下线`:`已发布`),1)])]),a(`div`,ae,[r(u,{onClick:Oe},{default:g(()=>[...i[14]||=[o(`校验流程`,-1)]]),_:1}),U.value?(s(),h(u,{key:0,loading:j.value,onClick:Q},{default:g(()=>[r(l(B)),i[15]||=o(`保存`,-1)]),_:1},8,[`loading`])):e(``,!0),U.value?(s(),h(u,{key:1,onClick:ke},{default:g(()=>[r(l(W)),i[16]||=o(`提交审核`,-1)]),_:1})):e(``,!0),U.value||G.value?(s(),h(u,{key:2,type:`primary`,onClick:Ae},{default:g(()=>[r(l(W)),i[17]||=o(`发布`,-1)]),_:1})):e(``,!0),P.value?.status===`published`?(s(),h(u,{key:3,danger:``,onClick:je},{default:g(()=>[...i[18]||=[o(`下线`,-1)]]),_:1})):e(``,!0),!U.value&&P.value?.status!==`reviewing`&&P.value?.status!==`published`?(s(),h(u,{key:4,type:`primary`,onClick:$},{default:g(()=>[r(l(E)),i[19]||=o(`创建新版本`,-1)]),_:1})):e(``,!0),P.value?.status===`published`?(s(),h(u,{key:5,type:`primary`,onClick:$},{default:g(()=>[r(l(E)),i[20]||=o(`创建新版本`,-1)]),_:1})):e(``,!0)])]),r(O,{spinning:A.value},{default:g(()=>[a(`main`,oe,[a(`aside`,se,[a(`div`,ce,[i[21]||=a(`span`,null,`流程节点`,-1),U.value?(s(),h(u,{key:0,type:`text`,"aria-label":`添加节点`,onClick:Ce},{default:g(()=>[r(l(E))]),_:1})):e(``,!0)]),a(`div`,le,[(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`,de,t(String(i+1).padStart(2,`0`)),1),a(`span`,fe,[a(`b`,null,t(n.title),1),a(`small`,null,t(K.find(e=>e.value===n.type)?.label||n.type),1)]),U.value&&n.type!==`start`?(s(),m(`span`,pe,[r(l(I),{onClick:C(e=>Y(i,-1),[`stop`])},null,8,[`onClick`]),r(l(M),{onClick:C(e=>Y(i,1),[`stop`])},null,8,[`onClick`])])):e(``,!0)],10,ue))),128))])]),H.value?(s(),m(`section`,me,[a(`div`,he,[a(`div`,null,[a(`span`,ge,t(H.value.type.toUpperCase()),1),a(`h2`,null,t(H.value.title),1)]),U.value&&H.value.type!==`start`?(s(),h(u,{key:0,danger:``,type:`text`,onClick:i[1]||=e=>we(H.value)},{default:g(()=>[r(l(T)),i[22]||=o(`删除`,-1)]),_:1})):e(``,!0)]),r(S,{layout:`vertical`,class:`property-form`},{default:g(()=>[a(`div`,_e,[r(f,{label:`节点名称`},{default:g(()=>[r(d,{value:H.value.title,"onUpdate:value":i[2]||=e=>H.value.title=e,disabled:!U.value},null,8,[`value`,`disabled`])]),_:1}),r(f,{label:`节点类型`},{default:g(()=>[r(_,{value:H.value.type,"onUpdate:value":i[3]||=e=>H.value.type=e,disabled:!U.value||H.value.type===`start`,options:K},null,8,[`value`,`disabled`])]),_:1})]),r(f,{label:`标准话术 / 操作提示`},{default:g(()=>[r(y,{value:H.value.content,"onUpdate:value":i[4]||=e=>H.value.content=e,disabled:!U.value,rows:5,placeholder:`执行到此节点时展示给一线人员的内容`},null,8,[`value`,`disabled`])]),_:1}),[`question`,`choice`].includes(H.value.type)?(s(),m(`div`,ve,[r(f,{label:`写入场景字段`},{default:g(()=>[r(_,{value:H.value.config.field_key,"onUpdate:value":i[5]||=e=>H.value.config.field_key=e,disabled:!U.value,"show-search":``,"option-filter-prop":`label`,placeholder:`选择需要采集的字段`,options:z.value.map(e=>({value:e.field_key,label:`${e.field_name} (${e.field_key})`}))},null,8,[`value`,`disabled`,`options`])]),_:1}),r(f,{label:`是否必填`},{default:g(()=>[r(x,{checked:H.value.config.required,"onUpdate:checked":i[6]||=e=>H.value.config.required=e,disabled:!U.value},null,8,[`checked`,`disabled`])]),_:1})])):e(``,!0),H.value.type===`form`?(s(),h(f,{key:1,label:`表单采集字段`},{default:g(()=>[r(_,{value:H.value.config.field_keys,"onUpdate:value":i[7]||=e=>H.value.config.field_keys=e,mode:`multiple`,disabled:!U.value,"show-search":``,"option-filter-prop":`label`,placeholder:`选择本步骤需要采集的字段`,options:z.value.map(e=>({value:e.field_key,label:`${e.field_name} (${e.field_key})`}))},null,8,[`value`,`disabled`,`options`])]),_:1})):e(``,!0),H.value.type===`choice`?(s(),h(f,{key:2,label:`可选项(每行一个)`},{default:g(()=>[r(y,{value:(H.value.config.options||[]).join(` `),disabled:!U.value,rows:4,onChange:i[8]||=e=>H.value.config.options=e.target.value.split(` `).filter(Boolean)},null,8,[`value`,`disabled`])]),_:1})):e(``,!0),H.value.type===`knowledge`?(s(),h(f,{key:3,label:`关联知识卡`},{default:g(()=>[r(_,{value:H.value.config.knowledge_card_id,"onUpdate:value":i[9]||=e=>H.value.config.knowledge_card_id=e,disabled:!U.value,placeholder:`选择已发布知识卡`,options:V.value.map(e=>({value:e.id,label:e.title}))},null,8,[`value`,`disabled`,`options`])]),_:1})):e(``,!0)]),_:1}),i[25]||=a(`div`,{class:`transition-head`},[a(`div`,null,[a(`b`,null,`下一步路径`),a(`span`,null,`按优先级匹配,默认路径建议放最后`)])],-1),a(`div`,ye,[(s(!0),m(c,null,p(X(R.value),n=>(s(),m(`div`,{key:`${n.source_node_key}-${n.target_node_key}-${n.priority}`,class:`transition-row`},[i[23]||=a(`span`,{class:`route-line`},null,-1),a(`span`,be,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(Z(n.condition)),1)]),_:2},1024),U.value?(s(),h(u,{key:0,type:`text`,danger:``,"aria-label":`删除路径`,onClick:e=>Ee(n)},{default:g(()=>[r(l(T))]),_:1},8,[`onClick`])):e(``,!0)]))),128)),X(R.value).length?e(``,!0):(s(),m(`div`,xe,`还没有下一步路径`))]),U.value&&![`finish`,`escalate`].includes(H.value.type)?(s(),m(`div`,Se,[r(_,{value:q.target_node_key,"onUpdate:value":i[10]||=e=>q.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:q.field,"onUpdate:value":i[11]||=e=>q.field=e,placeholder:`条件字段(留空为默认)`},null,8,[`value`]),r(_,{value:q.operator,"onUpdate:value":i[12]||=e=>q.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:q.value,"onUpdate:value":i[13]||=e=>q.value=e,placeholder:`条件值`},null,8,[`value`]),r(u,{onClick:Te},{default:g(()=>[r(l(E)),i[24]||=o(`添加路径`,-1)]),_:1})])):e(``,!0)])):(s(),h(D,{key:1,description:`请选择一个节点`,class:`surface editor-empty`}))])]),_:1},8,[`spinning`])])}}}),[[`__scopeId`,`data-v-a5b6c482`]]);export{G as default};