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