import{aR as F,r as h,aW as O,q as T,x as d,z as t,L as f,u as s,K as S,aq as D,O as m,C as j,P as k,aY as C,y as c}from"./vue-vendor-DfnFpxGJ.js";import{s as y}from"./toast-BvwA7Mwb.js";import{b as N,_ as E}from"./index-BdtiivzQ.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const V=F("settings",()=>{const n=h({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null}),g=h(!1),p=h(!1),u=async()=>{g.value=!0;try{const r=await N.get("/admin/oem-settings");return r&&r.success&&(n.value={...n.value,...r.data},x()),r}catch(r){throw console.error("Failed to load OEM settings:",r),r}finally{g.value=!1}},a=async r=>{p.value=!0;try{const o=await N.put("/admin/oem-settings",r);return o&&o.success&&(n.value={...n.value,...o.data},x()),o}catch(o){throw console.error("Failed to save OEM settings:",o),o}finally{p.value=!1}},v=async()=>{const r={siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null};return n.value={...r},await a(r)},x=()=>{if(n.value.siteName&&(document.title=`${n.value.siteName} - 管理后台`),n.value.siteIconData||n.value.siteIcon){const r=document.querySelector('link[rel="icon"]')||document.createElement("link");r.rel="icon",r.href=n.value.siteIconData||n.value.siteIcon,document.querySelector('link[rel="icon"]')||document.head.appendChild(r)}};return{oemSettings:n,loading:g,saving:p,loadOemSettings:u,saveOemSettings:a,resetOemSettings:v,applyOemSettings:x,formatDateTime:r=>r?new Date(r).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",validateIconFile:r=>{const o=[];return r.size>350*1024&&o.push("图标文件大小不能超过 350KB"),["image/x-icon","image/png","image/jpeg","image/jpg","image/svg+xml"].includes(r.type)||o.push("不支持的文件类型,请选择 .ico, .png, .jpg 或 .svg 文件"),{isValid:o.length===0,errors:o}},fileToBase64:r=>new Promise((o,i)=>{const e=new FileReader;e.onload=l=>o(l.target.result),e.onerror=i,e.readAsDataURL(r)})}}),R={class:"settings-container"},B={class:"card p-4 sm:p-6"},A={key:0,class:"py-12 text-center"},M={key:1,class:"table-container hidden sm:block"},U={class:"min-w-full"},$={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},q={class:"table-row"},z={class:"px-6 py-4"},L={class:"table-row"},P={class:"px-6 py-4"},G={class:"space-y-3"},K={key:0,class:"inline-flex items-center gap-3 rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},J=["src"],W={class:"px-6 py-6",colspan:"2"},Y={class:"flex items-center justify-between"},H={class:"flex gap-3"},Q=["disabled"],X={key:0,class:"loading-spinner mr-2"},Z={key:1,class:"fas fa-save mr-2"},tt=["disabled"],et={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},st={key:2,class:"space-y-4 sm:hidden"},at={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},rt={class:"space-y-2"},ot={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},it={class:"space-y-3"},nt={key:0,class:"inline-flex w-full items-center gap-3 rounded-lg border border-gray-200 bg-white p-3 dark:border-gray-600 dark:bg-gray-800"},lt=["src"],dt={class:"flex flex-col gap-2"},ct={class:"space-y-3 pt-2"},gt=["disabled"],ut={key:0,class:"loading-spinner mr-2"},mt={key:1,class:"fas fa-save mr-2"},yt=["disabled"],pt={key:0,class:"text-center text-xs text-gray-500 dark:text-gray-400"},xt={__name:"SettingsView",setup(n){const g=V(),{loading:p,saving:u,oemSettings:a}=O(g),v=h();T(async()=>{try{await g.loadOemSettings()}catch{y("加载设置失败","error")}});const x=async()=>{try{const i={siteName:a.value.siteName,siteIcon:a.value.siteIcon,siteIconData:a.value.siteIconData},e=await g.saveOemSettings(i);e&&e.success?y("OEM设置保存成功","success"):y((e==null?void 0:e.message)||"保存失败","error")}catch{y("保存OEM设置失败","error")}},w=async()=>{if(confirm(`确定要重置为默认设置吗? 这将清除所有自定义的网站名称和图标设置。`))try{const i=await g.resetOemSettings();i&&i.success?y("已重置为默认设置","success"):y("重置失败","error")}catch{y("重置失败","error")}},I=async i=>{const e=i.target.files[0];if(!e)return;const l=g.validateIconFile(e);if(!l.isValid){l.errors.forEach(b=>y(b,"error"));return}try{const b=await g.fileToBase64(e);a.value.siteIconData=b}catch{y("文件读取失败","error")}i.target.value=""},_=()=>{a.value.siteIcon="",a.value.siteIconData=""},r=()=>{console.warn("Icon failed to load")},o=g.formatDateTime;return(i,e)=>(c(),d("div",R,[t("div",B,[e[25]||(e[25]=t("div",{class:"mb-4 sm:mb-6"},[t("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 其他设置 "),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"},"自定义网站名称和图标")],-1)),s(p)?(c(),d("div",A,e[5]||(e[5]=[t("div",{class:"loading-spinner mx-auto mb-4"},null,-1),t("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载设置...",-1)]))):(c(),d("div",M,[t("table",U,[t("tbody",$,[t("tr",q,[e[7]||(e[7]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-font text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站名称 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"品牌标识")])])],-1)),t("td",z,[S(t("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>s(a).siteName=l),class:"form-input w-full max-w-md dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[6]||(e[6]=t("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 将显示在浏览器标题和页面头部 ",-1))])]),t("tr",L,[e[12]||(e[12]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-image text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站图标 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Favicon")])])],-1)),t("td",P,[t("div",G,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",K,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,J),e[9]||(e[9]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[8]||(e[8]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("div",null,[t("input",{ref_key:"iconFileInput",ref:v,accept:".ico,.png,.jpg,.jpeg,.svg",class:"hidden",type:"file",onChange:I},null,544),t("button",{class:"btn btn-success px-4 py-2",onClick:e[1]||(e[1]=l=>i.$refs.iconFileInput.click())},e[10]||(e[10]=[t("i",{class:"fas fa-upload mr-2"},null,-1),m(" 上传图标 ",-1)])),e[11]||(e[11]=t("span",{class:"ml-3 text-xs text-gray-500 dark:text-gray-400"},"支持 .ico, .png, .jpg, .svg 格式,最大 350KB",-1))])])])]),t("tr",null,[t("td",W,[t("div",Y,[t("div",H,[t("button",{class:j(["btn btn-primary px-6 py-3",{"cursor-not-allowed opacity-50":s(u)}]),disabled:s(u),onClick:x},[s(u)?(c(),d("div",X)):(c(),d("i",Z)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],10,Q),t("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[13]||(e[13]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,tt)]),s(a).updatedAt?(c(),d("div",et,[e[14]||(e[14]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])])])])])])),s(p)?f("",!0):(c(),d("div",st,[t("div",at,[e[16]||(e[16]=C('

网站名称

品牌标识

',1)),t("div",rt,[S(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s(a).siteName=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[15]||(e[15]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"将显示在浏览器标题和页面头部",-1))])]),t("div",ot,[e[22]||(e[22]=C('

网站图标

Favicon

',1)),t("div",it,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",nt,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,lt),e[18]||(e[18]=t("span",{class:"flex-1 text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 text-sm font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[17]||(e[17]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("input",{ref_key:"iconFileInput",ref:v,accept:"image/*",style:{display:"none"},type:"file",onChange:I},null,544),t("div",dt,[t("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm text-gray-700 transition-colors hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:e[3]||(e[3]=l=>i.$refs.iconFileInput.click())},e[19]||(e[19]=[t("i",{class:"fas fa-upload"},null,-1),m(" 上传图标 ",-1)])),e[20]||(e[20]=t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"或者输入图标URL:",-1)),S(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s(a).siteIcon=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",placeholder:"https://example.com/icon.png",type:"url"},null,512),[[D,s(a).siteIcon]])]),e[21]||(e[21]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 支持 PNG、JPEG、GIF 格式,建议使用正方形图片 ",-1))])]),t("div",ct,[t("button",{class:"btn btn-primary w-full py-3 text-sm font-semibold",disabled:s(u),onClick:x},[s(u)?(c(),d("div",ut)):(c(),d("i",mt)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],8,gt),t("button",{class:"btn w-full bg-gray-100 py-3 text-sm text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[23]||(e[23]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,yt),s(a).updatedAt?(c(),d("div",pt,[e[24]||(e[24]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])]))])]))}},wt=E(xt,[["__scopeId","data-v-32a92c9b"]]);export{wt as default};