feat: complete pet SOP governance workflow

This commit is contained in:
Eric 1549169735@qq.com
2026-08-08 22:58:35 +08:00
parent 97a76250f7
commit 4b240499c2
85 changed files with 1316 additions and 269 deletions

View File

@@ -0,0 +1 @@
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,et as f,j as p,k as m,lt as h,n as g,r as _,t as v,tt as y,vt as b}from"./client-Bk7n1O1W.js";import{a as x}from"./config-provider-CxhqvDI_.js";import{t as S}from"./auth-D6Tj4g1X.js";import{n as C,t as w}from"./DeleteOutlined-CRNedxr9.js";import{t as T}from"./PlusOutlined-CosM7zFe.js";import{t as E}from"./BookOutlined-Canuw-q-.js";var D={class:`page-shell`},O={class:`page-heading`},k={key:0,class:`knowledge-grid`},A={key:0,class:`risk-note`},j=_(i({__name:`KnowledgeView`,setup(i){let _=b(!1),j=b(!1),M=b([]),N=b([]),P=S(),F=d({scenario_id:void 0,title:``,content:``,forbidden:``,risk_note:``}),I=n(()=>N.value.map(e=>({value:e.id,label:e.name})));async function L(){_.value=!0;try{let[e,t]=await Promise.all([v.get(`/knowledge-cards`),v.get(`/scenarios`)]);M.value=e.items,N.value=t.items}catch(e){x.error(g(e))}finally{_.value=!1}}async function R(){try{await v.post(`/knowledge-cards`,{scenario_id:F.scenario_id,title:F.title,content:{standard_copy:F.content,forbidden_copy:F.forbidden,risk_note:F.risk_note}}),x.success(`知识卡已发布`),j.value=!1,Object.assign(F,{scenario_id:void 0,title:``,content:``,forbidden:``,risk_note:``}),await L()}catch(e){x.error(g(e))}}function z(e){C.confirm({title:`归档“${e.title}”?`,okType:`danger`,async onOk(){await v.delete(`/knowledge-cards/${e.id}`),await L()}})}function B(e,t){return e.content?.[t]||``}return u(L),(n,i)=>{let u=y(`a-button`),d=y(`a-tag`),g=y(`a-empty`),v=y(`a-spin`),b=y(`a-select`),x=y(`a-form-item`),S=y(`a-input`),C=y(`a-textarea`),L=y(`a-form`),V=y(`a-drawer`);return s(),p(`div`,D,[a(`div`,O,[i[8]||=a(`div`,null,[a(`h1`,null,`知识卡`),a(`p`,null,`沉淀经过审核的标准表达、禁用语和风险提醒。`)],-1),l(P).can(`knowledge.edit`)?(s(),m(u,{key:0,type:`primary`,onClick:i[0]||=e=>j.value=!0},{default:h(()=>[r(l(T)),i[7]||=o(`新建知识卡`,-1)]),_:1})):e(``,!0)]),r(v,{spinning:_.value},{default:h(()=>[M.value.length?(s(),p(`div`,k,[(s(!0),p(c,null,f(M.value,n=>(s(),p(`article`,{key:n.id,class:`knowledge-card surface`},[a(`header`,null,[a(`span`,null,[r(l(E))]),r(d,{color:`green`},{default:h(()=>[...i[9]||=[o(`已发布`,-1)]]),_:1})]),a(`h2`,null,t(n.title),1),a(`p`,null,t(B(n,`standard_copy`)||`暂无标准话术`),1),B(n,`risk_note`)?(s(),p(`div`,A,t(B(n,`risk_note`)),1)):e(``,!0),a(`footer`,null,[a(`span`,null,t(N.value.find(e=>e.id===n.scenario_id)?.name||`未分类场景`),1),l(P).can(`knowledge.edit`)?(s(),m(u,{key:0,type:`text`,danger:``,"aria-label":`归档知识卡`,onClick:e=>z(n)},{default:h(()=>[r(l(w))]),_:1},8,[`onClick`])):e(``,!0)])]))),128))])):(s(),m(g,{key:1,description:`还没有知识卡`}))]),_:1},8,[`spinning`]),l(P).can(`knowledge.edit`)?(s(),m(V,{key:0,open:j.value,"onUpdate:open":i[6]||=e=>j.value=e,title:`新建知识卡`,width:`520`},{default:h(()=>[r(L,{layout:`vertical`,model:F,onFinish:R},{default:h(()=>[r(x,{label:`所属场景`,name:`scenario_id`,rules:[{required:!0,message:`请选择场景`}]},{default:h(()=>[r(b,{value:F.scenario_id,"onUpdate:value":i[1]||=e=>F.scenario_id=e,options:I.value},null,8,[`value`,`options`])]),_:1}),r(x,{label:`标题`,name:`title`,rules:[{required:!0,message:`请输入标题`}]},{default:h(()=>[r(S,{value:F.title,"onUpdate:value":i[2]||=e=>F.title=e},null,8,[`value`])]),_:1}),r(x,{label:`标准话术`,name:`content`,rules:[{required:!0,message:`请输入标准话术`}]},{default:h(()=>[r(C,{value:F.content,"onUpdate:value":i[3]||=e=>F.content=e,rows:5},null,8,[`value`])]),_:1}),r(x,{label:`禁用表达`},{default:h(()=>[r(C,{value:F.forbidden,"onUpdate:value":i[4]||=e=>F.forbidden=e,rows:3},null,8,[`value`])]),_:1}),r(x,{label:`风险提醒`},{default:h(()=>[r(C,{value:F.risk_note,"onUpdate:value":i[5]||=e=>F.risk_note=e,rows:3},null,8,[`value`])]),_:1}),r(u,{type:`primary`,"html-type":`submit`,block:``},{default:h(()=>[...i[10]||=[o(`发布知识卡`,-1)]]),_:1})]),_:1},8,[`model`])]),_:1},8,[`open`])):e(``,!0)])}}}),[[`__scopeId`,`data-v-68fdbe9b`]]);export{j as default};