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
7.0 KiB
1 lines
7.0 KiB
import{g as D,B as F,c as n,p as i,H as $,a as e,F as b,r as y,q as B,v,l as j,t as r,m as q,x as d,y as I,z as E,o as u}from"./CSjlBIfC.js";import{u as O}from"./CX31_Ko0.js";import{u as T}from"./QmZ_XupB.js";import"./CgE-6DOq.js";const z={class:"flex items-center justify-between mb-5"},G={class:"flex items-center gap-3 mb-4"},H=["value"],J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},K={class:"overflow-x-auto"},P={class:"table"},Q={key:0},W={key:1},X={class:"bg-slate-100/80"},Y={colspan:"4",class:"py-2"},Z={class:"font-semibold text-slate-600 text-sm"},ee={class:"text-xs text-slate-400 ml-2"},te={class:"font-mono text-sm font-medium"},le=["title"],se={class:"text-sm text-slate-400"},oe={class:"text-right"},ae={class:"inline-flex gap-1"},ne=["onClick"],ie=["onClick"],ue={class:"flex items-center gap-3 mb-5"},re={class:"text-lg font-semibold text-slate-800"},de={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},me={class:"grid grid-cols-2 gap-4"},be={class:"form-control mb-4"},ve=["value"],pe={class:"form-control mb-4"},ce={class:"form-control mb-4"},fe={class:"form-control mb-4"},ge={class:"form-control mb-6"},xe={class:"flex gap-3"},ye=["disabled"],Ve=D({__name:"globalconfig",setup(we){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],{webApi:p}=O(),{success:U,error:w}=T(),c=d("list"),f=d([]),k=d(!1),_=d(!1),g=d(!1),m=d(1),h=d(""),s=I({id:0,region:1,group:"",key:"",value:"",description:""}),N=E(()=>{const o=h.value.trim().toLowerCase();return o?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(o)):f.value}),L=E(()=>{const o={};return N.value.forEach(l=>{const a=l.group||"";(o[a]=o[a]||[]).push(l)}),Object.keys(o).sort((l,a)=>l===""?-1:a===""?1:l<a?-1:1).map(l=>({key:l,label:l||"未分组",items:o[l]}))});async function x(){k.value=!0;try{const o=await p("getglobalconfigs",{region:m.value});f.value=o?.items??[]}catch(o){w(o?.message??"获取配置失败"),f.value=[]}finally{k.value=!1}}function C(){c.value="list",x()}function S(o){o?(g.value=!0,s.id=o.id||0,s.region=o.region||1,s.group=o.group||"",s.key=o.key||"",s.value=o.value||"",s.description=o.description||""):(g.value=!1,s.id=0,s.region=m.value>0?m.value:1,s.group="",s.key="",s.value="",s.description=""),c.value="form"}async function M(){_.value=!0;try{const o={region:Number(s.region)||0,group:s.group.trim(),key:s.key.trim(),value:s.value,description:s.description.trim()};g.value?(o.id=Number(s.id),await p("updateglobalconfig",o)):await p("addglobalconfig",o),U("保存成功"),C()}catch(o){w(o?.message??"保存失败")}finally{_.value=!1}}function R(o){window.confirm("确定删除该配置项吗?")&&p("delglobalconfig",{ids:[o.id]}).then(()=>{U("删除成功"),x()}).catch(t=>w(t?.message??"删除失败"))}return F(x),(o,t)=>(u(),n("div",null,[i(e("div",null,[e("div",z,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"全局环境配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"全局第三方服务配置(AI / 翻译等),按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>S())},"+ 新增配置")]),e("div",G,[t[11]||(t[11]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),i(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:x},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,H)),64))],544),[[B,m.value,void 0,{number:!0}]]),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>h.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[v,h.value]])]),e("div",J,[e("div",K,[e("table",P,[t[14]||(t[14]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[k.value?(u(),n("tr",Q,[...t[12]||(t[12]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):N.value.length?j("",!0):(u(),n("tr",W,[...t[13]||(t[13]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),n(b,null,y(L.value,l=>(u(),n(b,{key:l.key},[e("tr",X,[e("td",Y,[e("span",Z,"▸ "+r(l.label),1),e("span",ee,r(l.items.length)+" 项",1)])]),(u(!0),n(b,null,y(l.items,a=>(u(),n("tr",{key:a.id,class:"hover"},[e("td",te,r(a.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:a.value||""},r(a.value||""),9,le),e("td",se,r(a.description||""),1),e("td",oe,[e("div",ae,[e("button",{class:"btn btn-ghost btn-xs",onClick:A=>S(a)},"编辑",8,ne),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:A=>R(a)},"删除",8,ie)])])]))),128))],64))),128))])])])])],512),[[$,c.value==="list"]]),i(e("div",null,[e("div",ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>C())},"← 返回列表"),e("h2",re,r(g.value?"编辑配置":"新增配置"),1)]),e("div",de,[e("form",{onSubmit:q(M,["prevent"])},[e("div",me,[e("div",be,[t[15]||(t[15]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.region=l),class:"select select-bordered w-full"},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,ve)),64))],512),[[B,s.region,void 0,{number:!0}]])]),e("div",pe,[t[16]||(t[16]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 ai / translate / asr"},null,512),[[v,s.group]])])]),e("div",ce,[t[17]||(t[17]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 openai_api_key"},null,512),[[v,s.key]])]),e("div",fe,[t[18]||(t[18]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),i(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[v,s.value]])]),e("div",ge,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[v,s.description]])]),e("div",xe,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>C())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,ye)])],32)])],512),[[$,c.value==="form"]])]))}});export{Ve as default};
|
|
|