You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1 lines
9.4 KiB

import{g as q,B as H,c as a,m as i,H as A,a as t,F as p,r as f,v as D,q as u,t as r,p as I,J,x as m,y as G,z as k,o as d}from"./T3_facgV.js";import{u as K}from"./YYZWHM5Z.js";import{u as P}from"./D7TmXHpa.js";import"./BaPL5gDJ.js";const Q={class:"flex items-center justify-between mb-5"},W={class:"flex items-center gap-3 mb-4 flex-wrap"},X=["value"],Y=["value"],Z={class:"bg-white rounded-xl shadow-sm border border-slate-100"},tt={class:"overflow-x-auto"},et={class:"table table-zebra"},st={key:0},lt={key:1},ot={class:"bg-slate-100/80"},nt={colspan:"7",class:"py-2"},at={class:"font-semibold text-slate-600 text-sm"},it={class:"text-xs text-slate-400 ml-2"},dt={class:"font-mono text-sm text-slate-400"},rt={class:"font-medium"},ut={class:"font-mono text-sm"},mt={class:"badge badge-outline badge-sm"},pt={class:"text-sm"},bt={class:"text-sm"},ct={key:1,class:"text-slate-300"},ft={class:"text-right"},vt={class:"inline-flex gap-1"},gt=["onClick"],xt=["onClick"],yt={class:"flex items-center gap-3 mb-5"},wt={class:"text-lg font-semibold text-slate-800"},kt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},ht={class:"grid grid-cols-2 gap-4"},_t={class:"form-control mb-4"},Vt={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Ct={class:"form-control mb-4"},Lt={class:"form-control mb-4"},Ft={class:"form-control mb-4"},St={class:"form-control mb-4"},$t={class:"form-control mb-4"},zt={class:"form-control mb-6"},Bt={class:"flex gap-3"},Et=["disabled"],jt=q({__name:"meettemplates",setup(At){const{webApi:v}=K(),{success:S,error:g}=P(),x=m("list"),b=m([]),h=m(!1),_=m(!1),c=m(!1),y=m("zh"),w=m(""),V=m(""),o=G({id:0,title:"",tid:"",language:"",ttype:"",tags:"",icon:"",description:"",outline:"",template:""});function $(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function z(l){return(l||"").split("-")[0].trim().toLowerCase()}const M=k(()=>{const l=new Set;return b.value.forEach(e=>{e.language&&l.add(e.language)}),Array.from(l).sort()}),O=k(()=>{const l=new Set;return b.value.forEach(e=>{e.tid&&l.add(e.tid)}),Array.from(l).sort()}),B=k(()=>{const l=V.value.trim().toLowerCase();return b.value.filter(e=>!(y.value&&z(e.language)!==z(y.value)||w.value&&(e.tid||"")!==w.value||l&&(e.title||"").toLowerCase().indexOf(l)<0))}),T=k(()=>{const l={};return B.value.forEach(s=>{const n=s.tid||"";(l[n]=l[n]||[]).push(s)}),Object.keys(l).sort((s,n)=>s===""?-1:n===""?1:s<n?-1:1).map(s=>({key:s,label:s||"无 tid",items:l[s]}))});async function U(){h.value=!0;try{const l=await v("getmeettemplates",{});b.value=l?.templates??[]}catch(l){g(l?.message??"加载失败"),b.value=[]}finally{h.value=!1}}function C(){x.value="list",U()}function L(l){o.id=l.id||0,o.title=l.title||"",o.tid=l.tid||"",o.language=l.language||"",o.ttype=l.ttype||"",o.tags=l.tags||"",o.icon=l.icon||"",o.description=l.description||"",o.outline=l.outline||"",o.template=l.template||""}async function E(l){if(x.value="form",l&&l.id){c.value=!0,L(l);try{const e=await v("getmeettemplate",{id:l.id});e&&L(e)}catch(e){g(e?.message??"加载详情失败")}}else c.value=!1,L({})}async function j(){_.value=!0;try{const l={title:o.title.trim(),tid:o.tid.trim(),language:o.language.trim(),ttype:o.ttype.trim(),tags:o.tags.trim(),icon:o.icon.trim(),description:o.description.trim(),outline:o.outline,template:o.template};c.value&&(l.id=Number(o.id)),await v(c.value?"updatemeettemplate":"addmeettemplate",l),S("保存成功"),C()}catch(l){g(l?.message??"保存失败")}finally{_.value=!1}}function N(l){window.confirm(`确定删除模板 "${l.title||""}" 吗?`)&&v("delmeettemplate",{ids:[l.id]}).then(()=>{S("删除成功"),U()}).catch(e=>g(e?.message??"删除失败"))}return H(U),(l,e)=>(d(),a("div",null,[i(t("div",null,[t("div",Q,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"会议模板"),t("p",{class:"text-xs text-slate-400 mt-1"},"会议纪要公共模板(source=public),所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>E())},"+ 新增模板")]),t("div",W,[e[18]||(e[18]=t("span",{class:"text-sm text-slate-500"},"语言",-1)),i(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>y.value=s),class:"select select-bordered select-sm"},[e[16]||(e[16]=t("option",{value:""},"全部语言",-1)),(d(!0),a(p,null,f(M.value,s=>(d(),a("option",{key:s,value:s},r(s),9,X))),128))],512),[[D,y.value]]),e[19]||(e[19]=t("span",{class:"text-sm text-slate-500"},"分组(tid)",-1)),i(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>w.value=s),class:"select select-bordered select-sm"},[e[17]||(e[17]=t("option",{value:""},"全部分组",-1)),(d(!0),a(p,null,f(O.value,s=>(d(),a("option",{key:s,value:s},r(s),9,Y))),128))],512),[[D,w.value]]),i(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>V.value=s),class:"input input-bordered input-sm w-48",placeholder:"按标题搜索"},null,512),[[u,V.value]])]),t("div",Z,[t("div",tt,[t("table",et,[e[22]||(e[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"标题"),t("th",null,"模板标识(tid)"),t("th",null,"语言"),t("th",null,"类型"),t("th",null,"标签"),t("th",{class:"text-right"},"操作")])],-1)),t("tbody",null,[h.value?(d(),a("tr",st,[...e[20]||(e[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):B.value.length?(d(!0),a(p,{key:2},f(T.value,s=>(d(),a(p,{key:s.key},[t("tr",ot,[t("td",nt,[t("span",at,"▸ "+r(s.label),1),t("span",it,r(s.items.length)+" 个版本",1)])]),(d(!0),a(p,null,f(s.items,n=>(d(),a("tr",{key:n.id,class:"hover"},[t("td",dt,r(n.id||""),1),t("td",rt,r(n.title||""),1),t("td",ut,r(n.tid||""),1),t("td",null,[t("span",mt,r(n.language||"-"),1)]),t("td",pt,r(n.ttype||""),1),t("td",bt,[$(n.tags).length?(d(!0),a(p,{key:0},f($(n.tags),(F,R)=>(d(),a("span",{key:R,class:"badge badge-ghost badge-sm mr-1"},r(F),1))),128)):(d(),a("span",ct,"-"))]),t("td",ft,[t("div",vt,[t("button",{class:"btn btn-ghost btn-xs",onClick:F=>E(n)},"编辑",8,gt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:F=>N(n)},"删除",8,xt)])])]))),128))],64))),128)):(d(),a("tr",lt,[...e[21]||(e[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无模板",-1)])]))])])])])],512),[[A,x.value==="list"]]),i(t("div",null,[t("div",yt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>C())},"← 返回列表"),t("h2",wt,r(c.value?"编辑模板":"新增模板"),1)]),t("div",kt,[t("form",{onSubmit:I(j,["prevent"])},[t("div",ht,[t("div",_t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标题 *")],-1)),i(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>o.title=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[u,o.title]])]),t("div",Vt,[e[24]||(e[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板标识 (tid)")],-1)),i(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>o.tid=s),type:"text",class:"input input-bordered w-full",placeholder:"同一 tid 可有多语言版本"},null,512),[[u,o.tid]])]),t("div",Ut,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"语言")],-1)),i(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>o.language=s),type:"text",class:"input input-bordered w-full",placeholder:"如 zh / en",list:"langlist"},null,512),[[u,o.language]]),e[26]||(e[26]=J('<datalist id="langlist"><option value="zh"></option><option value="en"></option><option value="ja"></option><option value="ko"></option></datalist>',1))]),t("div",Ct,[e[27]||(e[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"类型 (ttype)")],-1)),i(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>o.ttype=s),type:"text",class:"input input-bordered w-full",placeholder:"如 meeting / interview"},null,512),[[u,o.ttype]])]),t("div",Lt,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标签 (tags)")],-1)),i(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>o.tags=s),type:"text",class:"input input-bordered w-full",placeholder:"逗号分隔"},null,512),[[u,o.tags]])]),t("div",Ft,[e[29]||(e[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"图标 (icon)")],-1)),i(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>o.icon=s),type:"text",class:"input input-bordered w-full",placeholder:"图标 URL 或名称"},null,512),[[u,o.icon]])])]),t("div",St,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),i(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>o.description=s),type:"text",class:"input input-bordered w-full"},null,512),[[u,o.description]])]),t("div",$t,[e[31]||(e[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"大纲 (outline)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=s=>o.outline=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"4"},null,512),[[u,o.outline]])]),t("div",zt,[e[32]||(e[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板内容 (template)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[13]||(e[13]=s=>o.template=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"10"},null,512),[[u,o.template]])]),t("div",Bt,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[14]||(e[14]=s=>C())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,Et)])],32)])],512),[[A,x.value==="form"]])]))}});export{jt as default};