import{g as de,B as re,c as o,J as Z,a as e,F as k,r as w,t as i,d as y,L as A,m as r,s as O,l as c,q as C,v as ce,C as z,x as S,y as N,z as P,o as a,n as x,p as $,_ as ue}from"./T3_facgV.js";import{u as pe}from"./D7TmXHpa.js";import{u as ve}from"./YYZWHM5Z.js";import"./BaPL5gDJ.js";const me={class:"flex gap-4",style:{"align-items":"flex-start"}},xe={style:{width:"208px","flex-shrink":"0"}},be={class:"flex flex-col gap-1.5"},ye=["onClick"],fe={width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},he=["d"],ge={class:"flex-1 min-w-0"},_e={class:"text-sm font-medium text-slate-700"},ke={class:"text-[11px] text-slate-400 truncate"},we={key:0,class:"dot-on",title:"已启用"},Ce={class:"flex-1 min-w-0"},Se={key:0},qe={class:"rounded-xl px-4 py-3 mb-4 flex items-center gap-3",style:{background:"linear-gradient(135deg,#ecfdf5,#f0fdfa)",border:"1px solid #a7f3d0"}},Me={style:{width:"36px",height:"36px","border-radius":"10px",background:"#10b981",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},Te={style:{width:"19px",height:"19px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ke={class:"flex-1"},Ae={class:"text-sm font-semibold text-emerald-800"},Ie={class:"grid grid-cols-4 gap-3 mb-4"},Ve=["onClick"],Pe={class:"flex items-center justify-between"},$e={key:0,class:"text-[10px] text-emerald-500 font-semibold"},je={key:1,class:"text-[10px] text-slate-300 font-semibold"},Ue={class:"text-sm font-semibold text-slate-700 mt-2"},De={class:"text-[11px] text-slate-400 mb-2.5"},Le=["onClick"],Be=["checked","onClick"],Oe={class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6"},ze={class:"flex items-center justify-between mb-5"},Ne={class:"flex items-center gap-3"},Re={class:"text-base font-semibold text-slate-800"},Ee={class:"text-xs text-slate-400 mt-0.5"},Ge={class:"flex items-center gap-2"},He={class:"flex items-center gap-2 mr-1"},Fe={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Je={class:"label py-1"},Qe={class:"label-text text-sm"},Ze={key:0,class:"text-rose-500 ml-0.5"},We={key:1,class:"lock-tag ml-1.5"},Xe={class:"relative"},Ye=["onUpdate:modelValue","type","placeholder"],et=["onClick"],tt={key:0,class:"text-[11px] text-slate-400 mt-1"},st={key:1},lt={class:"rounded-xl px-4 py-3 mb-4 flex items-center gap-3",style:{background:"#fffbeb",border:"1px solid #fde68a"}},ot={style:{width:"36px",height:"36px","border-radius":"10px",background:"#f59e0b",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},at={style:{width:"19px",height:"19px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},nt={class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6"},it={class:"flex items-center justify-between mb-5"},dt={class:"flex items-center gap-2"},rt={class:"flex items-center gap-2 mr-1"},ct={class:"grid grid-cols-2 gap-x-5 gap-y-4"},ut={class:"form-control"},pt={class:"form-control"},vt={class:"form-control"},mt=["value"],xt={class:"form-control"},bt={class:"form-control"},yt={class:"form-control"},ft={class:"relative"},ht=["type"],gt={class:"form-control col-span-2"},_t={class:"flex items-end gap-3"},kt={class:"form-control flex-1"},wt={key:2},Ct={class:"rounded-xl px-4 py-3 mb-4 flex items-center gap-3",style:{background:"#f0fdfa",border:"1px solid #99f6e4"}},St={style:{width:"36px",height:"36px","border-radius":"10px",background:"#14b8a6",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},qt={style:{width:"19px",height:"19px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Mt={class:"badge badge-sm text-white",style:{background:"#14b8a6",border:"none"}},Tt={class:"grid grid-cols-4 gap-3 mb-4"},Kt=["onClick"],At={class:"flex items-center justify-between"},It={key:0,class:"text-[10px] text-emerald-500 font-semibold"},Vt={key:1,class:"text-[10px] text-slate-300 font-semibold"},Pt={class:"text-sm font-semibold text-slate-700 mt-2"},$t={class:"text-[11px] text-slate-400 mb-2.5"},jt=["onClick"],Ut=["checked","onClick"],Dt={class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6"},Lt={class:"flex items-center justify-between mb-5"},Bt={class:"flex items-center gap-3"},Ot={class:"text-base font-semibold text-slate-800"},zt={class:"text-xs text-slate-400 mt-0.5"},Nt={class:"flex items-center gap-2"},Rt={class:"flex items-center gap-2 mr-1"},Et={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Gt={class:"label py-1"},Ht={class:"label-text text-sm"},Ft={key:0,class:"text-rose-500 ml-0.5"},Jt={key:1,class:"lock-tag ml-1.5"},Qt={class:"relative"},Zt=["onUpdate:modelValue","type","placeholder"],Wt=["onClick"],Xt={key:0,class:"text-[11px] text-slate-400 mt-1"},W="6",Yt=de({__name:"systemconfig",setup(es){const{success:q,info:M,error:R}=pe(),{webApi:E}=ve(),X=[{id:"storage",label:"对象存储",desc:"固件 / 头像 / 文件",color:"#6366f1",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8"},{id:"mail",label:"邮件服务",desc:"生产通知 / 厂家发信",color:"#f59e0b",icon:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"},{id:"translate",label:"翻译服务",desc:"后台文案多语言同步",color:"#14b8a6",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"}],T=S("storage"),n=N({enable:!0,host:"smtp.exmail.qq.com",port:"465",secure:"SSL",user:"noreply@yunyan.com",pass:"",_showPass:!1,fromName:"云岩科技",cc:"ops@yunyan.com",testTo:""}),Y=["SSL","STARTTLS","不加密"];function ee(){if(!n.testTo){M("请先填测试收件邮箱");return}M(`正在向 ${n.testTo} 发送测试邮件…(演示)`),setTimeout(()=>q(`测试邮件已发送至 ${n.testTo}`),600)}function te(l){return l==="storage"?!0:l==="mail"?n.enable:l==="translate"?G.value?.enable??!1:!1}const I=N([{id:"volc",name:"火山引擎翻译",short:"火山",tag:"Volcengine MT",color:"#1664ff",enable:!0,fields:[{key:"region",label:"Region",value:"cn-beijing",mono:!0,required:!0},{key:"accessKey",label:"AccessKey",value:"AKLTZjJmODdk****",mono:!0,encrypted:!0,required:!0},{key:"secretKey",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0,hint:"留空保留原密文"}]},{id:"aliyun",name:"阿里云翻译",short:"阿里",tag:"Aliyun MT",color:"#ff6a00",enable:!0,fields:[{key:"region",label:"Region",value:"cn-hangzhou",mono:!0,required:!0},{key:"accessKeyId",label:"AccessKey ID",value:"LTAI5txxxxxxxx",mono:!0,encrypted:!0,required:!0},{key:"accessKeySecret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0,hint:"留空保留原密文"},{key:"scene",label:"翻译场景",value:"general",mono:!0,hint:"general / social / ecommerce / tech"}]},{id:"google",name:"Google 翻译",short:"G",tag:"Cloud Translation",color:"#ea4335",enable:!1,fields:[{key:"project",label:"Project ID",value:"",mono:!0,required:!0},{key:"apiKey",label:"API Key",value:"",mono:!0,encrypted:!0,required:!0}]},{id:"deepl",name:"DeepL",short:"DL",tag:"DeepL API",color:"#0f2b46",enable:!1,fields:[{key:"authKey",label:"Auth Key",value:"",mono:!0,encrypted:!0,required:!0},{key:"plan",label:"套餐",value:"free",mono:!0,hint:"free / pro"}]}]),f=S("volc"),h=S("volc"),p=P(()=>I.find(l=>l.id===h.value)),G=P(()=>I.find(l=>l.id===f.value));function j(l){const s=I.find(t=>t.id===l);s&&(f.value=l,h.value=l,s.enable=!0,q(`已将「${s.name}」设为默认翻译服务,后台多语言同步将走该服务`))}function se(){M(`正在测试 ${p.value.name} …(演示)`),setTimeout(()=>q(`${p.value.name} 连接正常,可调用翻译`),600)}const K=N([{id:"aliyun",name:"阿里云 OSS",short:"OSS",tag:"Aliyun",color:"#ff6a00",enable:!1,fields:[{key:"endpoint",label:"Endpoint",value:"",placeholder:"oss-cn-shanghai.aliyuncs.com",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",placeholder:"yunyan-firmware",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0,hint:"留空保留原密文"},{key:"domain",label:"自定义域名 (CDN)",value:"",placeholder:"cdn.yunyan.com",wide:!0,hint:"可选,配置后文件下载 URL 走该域名"}]},{id:"tencent",name:"腾讯云 COS",short:"COS",tag:"Tencent",color:"#00a4ff",enable:!0,fields:[{key:"region",label:"Region",value:"ap-guangzhou",mono:!0,required:!0},{key:"appid",label:"AppId",value:"1253517901",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"yunyan-1253517901",mono:!0,required:!0},{key:"secretId",label:"SecretId",value:"AKIDxxxxxxxx",mono:!0,encrypted:!0,required:!0},{key:"secretKey",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0,hint:"留空保留原密文"},{key:"domain",label:"自定义域名 (CDN)",value:"",wide:!0,hint:"可选"}]},{id:"qiniu",name:"七牛云 Kodo",short:"KODO",tag:"Qiniu",color:"#00aaff",enable:!1,fields:[{key:"zone",label:"存储区域",value:"",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"accessKey",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secretKey",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"加速域名",value:"",wide:!0}]},{id:"minio",name:"MinIO",short:"S3",tag:"S3 兼容",color:"#c72e49",enable:!1,fields:[{key:"endpoint",label:"Endpoint",value:"",mono:!0,required:!0,placeholder:"minio.内网:9000"},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"accessKey",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secretKey",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"useSSL",label:"使用 HTTPS",value:"false",mono:!0}]}]),b=S("aliyun"),g=S("aliyun"),v=P(()=>K.find(l=>l.id===g.value)),le=P(()=>K.find(l=>l.id===b.value)),H={aliyun:{svcId:"storage_aliyun_oss",provider:"aliyun_oss"},tencent:{svcId:"storage_tencent_cos",provider:"tencent_cos"},qiniu:{svcId:"storage_qiniu_kodo",provider:"qiniu_kodo"},minio:{svcId:"storage_minio",provider:"minio"}},F={},V={};for(const[l,s]of Object.entries(H))F[s.provider]=l,V[l]=s.svcId;const U=S(new Set);async function oe(){try{const s=(await E("getsvcconfigs",{app_name:""}))?.items||[];let t="";for(const d of s){if(!String(d.categories||"").split(",").map(m=>m.trim()).includes(W))continue;const u=F[d.provider],_=K.find(m=>m.id===u);if(_){U.value.add(d.id),V[u]=d.id,_.enable=!!d.enable,_.enable&&!t&&(t=u);for(const m of d.fields||[]){const B=_.fields.find(ie=>ie.key===m.key);B&&(B.value=m.encrypted?"":m.def_value||"",m.encrypted&&m.def_value==="[encrypted]"&&(B.hint="已配置(留空保留原密文)"))}}}t&&(b.value=t)}catch(l){M("对象存储配置读取失败(console 接口不可用?):"+(l?.message??l))}}re(oe);async function J(l){const s=H[l.id];if(!s)return R("未知的存储厂商: "+l.id),!1;const t=V[l.id]||s.svcId,d={id:t,name:l.name,provider:s.provider,categories:W,description:`${l.tag} · 对象存储`,enable:l.enable,app_name:"",fields:l.fields.map((u,_)=>({key:u.key,description:u.label,type:"",encrypted:!!u.encrypted,def_value:u.value||"",sort:_}))},Q=U.value.has(t)?"updatesvcconfig":"addsvcconfig";try{return await E(Q,d),U.value.add(t),V[l.id]=t,!0}catch(u){return R(u?.message??"保存失败"),!1}}function ae(){D(g.value)}async function D(l){const s=K.find(t=>t.id===l);s&&(b.value=l,g.value=l,s.enable=!0,await J(s)&&q(`已将「${s.name}」设为默认对象存储并保存,固件 / 头像上传将指向该存储桶`))}function ne(){M(`连接测试暂未接后端:保存后到「产品 → 版本管理」上传一个固件即可验证 ${v.value.name} 是否可写`)}async function L(){const l=v.value;await J(l)&&q(`「${l.name}」配置已保存${l.enable?"并启用":""}`)}return(l,s)=>(a(),o("div",null,[s[39]||(s[39]=Z('
平台级服务配置:① 对象存储(固件 / 头像等文件,默认阿里云 OSS);② 邮件服务(生产环节给厂家发通知邮件);③ 翻译服务(后台配置多语言同步)。