import{a as Qs}from"./element-plus-CqiD73Lu.js";import{r as U,aP as Bs,o as ye,V as As,x as n,y as o,z as e,L as y,K as b,al as Me,aT as jt,O as k,aq as j,aa as Hs,P as p,aV as $s,aY as Zt,C as K,c as le,Z as Js,q as Xt,I as qe,an as Ae,Q as he,ac as ze,a5 as Kt,R as Je,B as Oe,u as Ye,aX as Ys,D as Is,_ as Zs,J as Yt,Y as ht}from"./vue-vendor-Bsazo-x0.js";import{c as L,s as z,_ as es,a as Xs,A as Ms}from"./index-CHriGhoa.js";import{C as Rs}from"./ConfirmModal-lz-KJODZ.js";import{C as ea}from"./chart-yFHxLHpB.js";import{C as Us,_ as ta}from"./ActionDropdown-a9b4mr-N.js";import"./vendor-Dr8jvgFu.js";const ws=U(!1),Ds=U({title:"",message:"",confirmText:"继续",cancelText:"取消"}),Tt=U(null);function Vs(){return{showConfirmModal:ws,confirmOptions:Ds,showConfirm:(xe,I,G="继续",V="取消")=>new Promise(A=>{Ds.value={title:xe,message:I,confirmText:G,cancelText:V},Tt.value=A,ws.value=!0}),handleConfirm:()=>{ws.value=!1,Tt.value&&(Tt.value(!0),Tt.value=null)},handleCancel:()=>{ws.value=!1,Tt.value&&(Tt.value(!1),Tt.value=null)}}}const Os=Bs("accounts",()=>{const Q=U([]),Ke=U([]),g=U([]),xe=U([]),I=U([]),G=U([]),V=U([]),A=U([]),h=U(!1),v=U(null),O=U(""),X=U("asc"),H=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/claude-accounts");if(f.success)Q.value=f.data||[];else throw new Error(f.message||"获取Claude账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},re=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/claude-console-accounts");if(f.success)Ke.value=f.data||[];else throw new Error(f.message||"获取Claude Console账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},W=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/bedrock-accounts");if(f.success)g.value=f.data||[];else throw new Error(f.message||"获取Bedrock账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},J=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/gemini-accounts");if(f.success)xe.value=f.data||[];else throw new Error(f.message||"获取Gemini账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},B=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/openai-accounts");if(f.success)I.value=f.data||[];else throw new Error(f.message||"获取OpenAI账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},w=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/azure-openai-accounts");if(f.success)G.value=f.data||[];else throw new Error(f.message||"获取Azure OpenAI账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},m=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/openai-responses-accounts");if(f.success)V.value=f.data||[];else throw new Error(f.message||"获取OpenAI-Responses账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}},R=async()=>{h.value=!0,v.value=null;try{const f=await L.get("/admin/droid-accounts");if(f.success)A.value=f.data||[];else throw new Error(f.message||"获取Droid账户失败")}catch(f){throw v.value=f.message,f}finally{h.value=!1}};return{claudeAccounts:Q,claudeConsoleAccounts:Ke,bedrockAccounts:g,geminiAccounts:xe,openaiAccounts:I,azureOpenaiAccounts:G,openaiResponsesAccounts:V,droidAccounts:A,loading:h,error:v,sortBy:O,sortOrder:X,fetchClaudeAccounts:H,fetchClaudeConsoleAccounts:re,fetchBedrockAccounts:W,fetchGeminiAccounts:J,fetchOpenAIAccounts:B,fetchAzureOpenAIAccounts:w,fetchOpenAIResponsesAccounts:m,fetchDroidAccounts:R,fetchAllAccounts:async()=>{h.value=!0,v.value=null;try{await Promise.all([H(),re(),W(),J(),B(),w(),m(),R()])}catch(f){throw v.value=f.message,f}finally{h.value=!1}},createClaudeAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/claude-accounts",f);if(c.success)return await H(),c.data;throw new Error(c.message||"创建Claude账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createClaudeConsoleAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/claude-console-accounts",f);if(c.success)return await re(),c.data;throw new Error(c.message||"创建Claude Console账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createBedrockAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/bedrock-accounts",f);if(c.success)return await W(),c.data;throw new Error(c.message||"创建Bedrock账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createGeminiAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/gemini-accounts",f);if(c.success)return await J(),c.data;throw new Error(c.message||"创建Gemini账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createOpenAIAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/openai-accounts",f);if(c.success)return await B(),c.data;throw new Error(c.message||"创建OpenAI账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createDroidAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/droid-accounts",f);if(c.success)return await R(),c.data;throw new Error(c.message||"创建Droid账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},updateDroidAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/droid-accounts/${f}`,c);if(S.success)return await R(),S.data;throw new Error(S.message||"更新Droid账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},createAzureOpenAIAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/azure-openai-accounts",f);if(c.success)return await w(),c.data;throw new Error(c.message||"创建Azure OpenAI账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createOpenAIResponsesAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/openai-responses-accounts",f);if(c.success)return await m(),c.data;throw new Error(c.message||"创建OpenAI-Responses账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},createGeminiApiAccount:async f=>{h.value=!0,v.value=null;try{const c=await L.post("/admin/gemini-api-accounts",f);if(c.success)return await J(),c.data;throw new Error(c.message||"创建Gemini API账户失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},updateClaudeAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/claude-accounts/${f}`,c);if(S.success)return await H(),S;throw new Error(S.message||"更新Claude账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateClaudeConsoleAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/claude-console-accounts/${f}`,c);if(S.success)return await re(),S;throw new Error(S.message||"更新Claude Console账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateBedrockAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/bedrock-accounts/${f}`,c);if(S.success)return await W(),S;throw new Error(S.message||"更新Bedrock账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateGeminiAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/gemini-accounts/${f}`,c);if(S.success)return await J(),S;throw new Error(S.message||"更新Gemini账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateOpenAIAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/openai-accounts/${f}`,c);if(S.success)return await B(),S;throw new Error(S.message||"更新OpenAI账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateAzureOpenAIAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/azure-openai-accounts/${f}`,c);if(S.success)return await w(),S;throw new Error(S.message||"更新Azure OpenAI账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateOpenAIResponsesAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/openai-responses-accounts/${f}`,c);if(S.success)return await m(),S;throw new Error(S.message||"更新OpenAI-Responses账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},updateGeminiApiAccount:async(f,c)=>{h.value=!0,v.value=null;try{const S=await L.put(`/admin/gemini-api-accounts/${f}`,c);if(S.success)return await J(),S;throw new Error(S.message||"更新Gemini API账户失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},toggleAccount:async(f,c)=>{h.value=!0,v.value=null;try{let S;f==="claude"?S=`/admin/claude-accounts/${c}/toggle`:f==="claude-console"?S=`/admin/claude-console-accounts/${c}/toggle`:f==="bedrock"?S=`/admin/bedrock-accounts/${c}/toggle`:f==="gemini"?S=`/admin/gemini-accounts/${c}/toggle`:f==="openai"?S=`/admin/openai-accounts/${c}/toggle`:f==="azure_openai"?S=`/admin/azure-openai-accounts/${c}/toggle`:f==="openai-responses"?S=`/admin/openai-responses-accounts/${c}/toggle`:S=`/admin/openai-accounts/${c}/toggle`;const Le=await L.put(S);if(Le.success)return f==="claude"?await H():f==="claude-console"?await re():f==="bedrock"?await W():f==="gemini"?await J():f==="openai"?await B():f==="azure_openai"?await w():f==="openai-responses"?await m():await B(),Le;throw new Error(Le.message||"切换状态失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},deleteAccount:async(f,c)=>{h.value=!0,v.value=null;try{let S;f==="claude"?S=`/admin/claude-accounts/${c}`:f==="claude-console"?S=`/admin/claude-console-accounts/${c}`:f==="bedrock"?S=`/admin/bedrock-accounts/${c}`:f==="gemini"?S=`/admin/gemini-accounts/${c}`:f==="openai"?S=`/admin/openai-accounts/${c}`:f==="azure_openai"?S=`/admin/azure-openai-accounts/${c}`:f==="openai-responses"?S=`/admin/openai-responses-accounts/${c}`:S=`/admin/openai-accounts/${c}`;const Le=await L.delete(S);if(Le.success)return f==="claude"?await H():f==="claude-console"?await re():f==="bedrock"?await W():f==="gemini"?await J():f==="openai"?await B():f==="azure_openai"?await w():f==="openai-responses"?await m():await B(),Le;throw new Error(Le.message||"删除失败")}catch(S){throw v.value=S.message,S}finally{h.value=!1}},refreshClaudeToken:async f=>{h.value=!0,v.value=null;try{const c=await L.post(`/admin/claude-accounts/${f}/refresh`);if(c.success)return await H(),c;throw new Error(c.message||"Token刷新失败")}catch(c){throw v.value=c.message,c}finally{h.value=!1}},generateClaudeAuthUrl:async f=>{try{const c=await L.post("/admin/claude-accounts/generate-auth-url",f);if(c.success)return c.data;throw new Error(c.message||"生成授权URL失败")}catch(c){throw v.value=c.message,c}},exchangeClaudeCode:async f=>{try{const c=await L.post("/admin/claude-accounts/exchange-code",f);if(c.success)return c.data;throw new Error(c.message||"交换授权码失败")}catch(c){throw v.value=c.message,c}},generateClaudeSetupTokenUrl:async f=>{try{const c=await L.post("/admin/claude-accounts/generate-setup-token-url",f);if(c.success)return c.data;throw new Error(c.message||"生成Setup Token URL失败")}catch(c){throw v.value=c.message,c}},exchangeClaudeSetupTokenCode:async f=>{try{const c=await L.post("/admin/claude-accounts/exchange-setup-token-code",f);if(c.success)return c.data;throw new Error(c.message||"交换Setup Token授权码失败")}catch(c){throw v.value=c.message,c}},generateGeminiAuthUrl:async f=>{try{const c=await L.post("/admin/gemini-accounts/generate-auth-url",f);if(c.success)return c.data;throw new Error(c.message||"生成授权URL失败")}catch(c){throw v.value=c.message,c}},exchangeGeminiCode:async f=>{try{const c=await L.post("/admin/gemini-accounts/exchange-code",f);if(c.success)return c.data;throw new Error(c.message||"交换授权码失败")}catch(c){throw v.value=c.message,c}},generateOpenAIAuthUrl:async f=>{try{const c=await L.post("/admin/openai-accounts/generate-auth-url",f);if(c.success)return c.data;throw new Error(c.message||"生成授权URL失败")}catch(c){throw v.value=c.message,c}},exchangeOpenAICode:async f=>{try{const c=await L.post("/admin/openai-accounts/exchange-code",f);if(c.success)return c.data;throw new Error(c.message||"交换授权码失败")}catch(c){throw v.value=c.message,c}},generateDroidAuthUrl:async f=>{v.value=null;try{const c=await L.post("/admin/droid-accounts/generate-auth-url",f);if(c.success)return c.data;throw new Error(c.message||"生成授权URL失败")}catch(c){throw v.value=c.message,c}},exchangeDroidCode:async f=>{v.value=null;try{return await L.post("/admin/droid-accounts/exchange-code",f)}catch(c){throw v.value=c.message,c}},sortAccounts:f=>{O.value===f?X.value=X.value==="asc"?"desc":"asc":(O.value=f,X.value="asc")},reset:()=>{Q.value=[],Ke.value=[],g.value=[],xe.value=[],I.value=[],G.value=[],V.value=[],A.value=[],h.value=!1,v.value=null,O.value="",X.value="asc"}}}),sa={class:"space-y-4"},aa={class:"flex items-center justify-between"},ra={class:"flex cursor-pointer items-center"},la={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},oa={class:"relative"},na={key:0,class:"mt-1 text-xs text-red-500"},ia={key:1,class:"mt-1 text-xs text-green-500"},da={class:"grid grid-cols-2 gap-4"},ua={class:"space-y-4"},pa={class:"flex items-center"},ga={key:0,class:"grid grid-cols-2 gap-4"},ma={class:"relative"},ca=["type"],Ts={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=U({...g.modelValue}),G=U(!!(I.value.username||I.value.password)),V=U(!1),A=U(""),h=U(""),v=U(!1);ye(()=>g.modelValue,B=>{JSON.stringify(B)!==JSON.stringify(I.value)&&(I.value={...B},G.value=!!(B.username||B.password))},{deep:!0}),ye(()=>I.value.enabled,()=>{X()}),ye(()=>I.value.type,()=>{X()}),ye(()=>I.value.host,()=>{X()}),ye(()=>I.value.port,()=>{X()}),ye(()=>I.value.username,()=>{X()}),ye(()=>I.value.password,()=>{X()}),ye(G,B=>{B||(I.value.username="",I.value.password="",X())});let O=null;function X(){O&&clearTimeout(O),O=setTimeout(()=>{const B={...I.value};G.value||(B.username="",B.password=""),xe("update:modelValue",B)},100)}function H(){if(h.value="",v.value=!1,!!A.value)try{const B=A.value.split("#")[0].trim();if(!B)return;const w=/^(socks5|https?):\/\/(?:([^:@]+):([^@]+)@)?([^:]+):(\d+)$/i,m=B.match(w);if(!m){const ke=/^([^:]+):(\d+)$/,de=B.match(ke);if(de){I.value.type="socks5",I.value.host=de[1],I.value.port=de[2],I.value.username="",I.value.password="",G.value=!1,v.value=!0,X(),setTimeout(()=>{v.value=!1},3e3);return}h.value="无效的代理URL格式,请检查输入";return}const[,R,te,E,P,N]=m;I.value.type=R.toLowerCase(),I.value.host=P,I.value.port=N,te&&E?(I.value.username=decodeURIComponent(te),I.value.password=decodeURIComponent(E),G.value=!0):(I.value.username="",I.value.password="",G.value=!1),v.value=!0,X(),setTimeout(()=>{v.value=!1},3e3)}catch{h.value="解析失败,请检查URL格式"}}function re(){A.value="",h.value="",v.value=!1}function W(){setTimeout(()=>{H()},0)}function J(){const B=A.value.trim();B.includes("://")?(/^(socks5|https?):\/\/[^:]+:\d+/i.test(B)||/^(socks5|https?):\/\/[^:@]+:[^@]+@[^:]+:\d+/i.test(B))&&H():/^[^:]+:\d{2,5}$/.test(B)&&H()}return As(()=>{O&&clearTimeout(O)}),(B,w)=>(o(),n("div",sa,[e("div",aa,[w[10]||(w[10]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",ra,[b(e("input",{"onUpdate:modelValue":w[0]||(w[0]=m=>I.value.enabled=m),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Me,I.value.enabled]]),w[9]||(w[9]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),I.value.enabled?(o(),n("div",la,[w[22]||(w[22]=jt('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[w[14]||(w[14]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},[k(" 快速配置 "),e("span",{class:"ml-1 text-xs font-normal text-gray-500 dark:text-gray-400"}," (粘贴完整代理URL自动填充) ")],-1)),e("div",oa,[b(e("input",{"onUpdate:modelValue":w[1]||(w[1]=m=>A.value=m),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: socks5://username:password@host:port 或 http://host:port",type:"text",onInput:J,onKeyup:Hs(H,["enter"]),onPaste:W},null,544),[[j,A.value]]),A.value?(o(),n("button",{key:0,class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:re},w[11]||(w[11]=[e("i",{class:"fas fa-times"},null,-1)]))):y("",!0)]),h.value?(o(),n("p",na,[w[12]||(w[12]=e("i",{class:"fas fa-exclamation-circle mr-1"},null,-1)),k(" "+p(h.value),1)])):v.value?(o(),n("p",ia,w[13]||(w[13]=[e("i",{class:"fas fa-check-circle mr-1"},null,-1),k(" 代理配置已自动填充 ",-1)]))):y("",!0)]),w[23]||(w[23]=e("div",{class:"my-3 border-t border-gray-200 dark:border-gray-600"},null,-1)),e("div",null,[w[16]||(w[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),b(e("select",{"onUpdate:modelValue":w[2]||(w[2]=m=>I.value.type=m),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},w[15]||(w[15]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[$s,I.value.type]])]),e("div",da,[e("div",null,[w[17]||(w[17]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),b(e("input",{"onUpdate:modelValue":w[3]||(w[3]=m=>I.value.host=m),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[j,I.value.host]])]),e("div",null,[w[18]||(w[18]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),b(e("input",{"onUpdate:modelValue":w[4]||(w[4]=m=>I.value.port=m),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[j,I.value.port]])])]),e("div",ua,[e("div",pa,[b(e("input",{id:"proxyAuth","onUpdate:modelValue":w[5]||(w[5]=m=>G.value=m),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Me,G.value]]),w[19]||(w[19]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),G.value?(o(),n("div",ga,[e("div",null,[w[20]||(w[20]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),b(e("input",{"onUpdate:modelValue":w[6]||(w[6]=m=>I.value.username=m),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[j,I.value.username]])]),e("div",null,[w[21]||(w[21]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",ma,[b(e("input",{"onUpdate:modelValue":w[7]||(w[7]=m=>I.value.password=m),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:V.value?"text":"password"},null,8,ca),[[Zt,I.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:w[8]||(w[8]=m=>V.value=!V.value)},[e("i",{class:K(V.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):y("",!0)]),w[24]||(w[24]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),k("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):y("",!0)]))}},ya={class:"space-y-6"},xa={key:0},fa={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},ba={class:"flex items-start gap-4"},va={class:"flex-1"},ka={class:"space-y-4"},ha={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},wa={class:"flex items-start gap-3"},$a={class:"flex-1"},Aa=["disabled"],Ca={key:0,class:"fas fa-link mr-2"},Ua={key:1,class:"loading-spinner mr-2"},Ia={key:1,class:"space-y-3"},Ta={class:"flex items-center gap-2"},Ka=["value"],Pa={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},_a={class:"flex items-start gap-3"},Ma={class:"flex-1"},Da={class:"space-y-3"},Sa={key:1},ja={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},za={class:"flex items-start gap-4"},Ra={class:"flex-1"},Va={class:"space-y-4"},Oa={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},La={class:"flex items-start gap-3"},Ea={class:"flex-1"},Na=["disabled"],qa={key:0,class:"fas fa-link mr-2"},Ga={key:1,class:"loading-spinner mr-2"},Fa={key:1,class:"space-y-3"},Wa={class:"flex items-center gap-2"},Qa=["value"],Ba={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Ha={class:"flex items-start gap-3"},Ja={class:"flex-1"},Ya={class:"space-y-3"},Za={key:2},Xa={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},er={class:"flex items-start gap-4"},tr={class:"flex-1"},sr={class:"space-y-4"},ar={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},rr={class:"flex items-start gap-3"},lr={class:"flex-1"},or=["disabled"],nr={key:0,class:"fas fa-link mr-2"},ir={key:1,class:"loading-spinner mr-2"},dr={key:1,class:"space-y-3"},ur={class:"flex items-center gap-2"},pr=["value"],gr={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},mr={class:"flex items-start gap-3"},cr={class:"flex-1"},yr={class:"space-y-3"},xr={key:3},fr={class:"rounded-lg border border-cyan-200 bg-cyan-50 p-6 dark:border-cyan-700 dark:bg-cyan-900/30"},br={class:"flex items-start gap-4"},vr={class:"flex-1"},kr={class:"space-y-4"},hr={class:"rounded-lg border border-cyan-300 bg-white/80 p-4 dark:border-cyan-600 dark:bg-gray-800/80"},wr={class:"flex items-start gap-3"},$r={class:"flex-1"},Ar=["disabled"],Cr={key:0,class:"fas fa-link mr-2"},Ur={key:1,class:"loading-spinner mr-2"},Ir={key:1,class:"space-y-4"},Tr={class:"space-y-2"},Kr={class:"flex flex-col gap-2 rounded-md border border-cyan-200 bg-white p-3 dark:border-cyan-700 dark:bg-gray-800"},Pr={class:"flex items-center gap-2"},_r=["value"],Mr={class:"space-y-2"},Dr={class:"flex items-center justify-between rounded-md border border-cyan-200 bg-cyan-50 px-4 py-3 dark:border-cyan-700 dark:bg-cyan-900/30"},Sr={class:"font-mono text-xl font-semibold text-cyan-700 dark:text-cyan-200"},jr={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},zr={class:"flex gap-3 pt-4"},Rr=["disabled"],Vr={key:0,class:"loading-spinner mr-2"},Or={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=Os(),G=U(!1),V=U(!1),A=U(""),h=U(""),v=U(!1),O=U(""),X=U(""),H=U(""),re=U(""),W=U(0);let J=null;const B=le(()=>g.platform==="droid"?!!O.value:A.value&&h.value.trim()),w=le(()=>{if(!W.value||W.value<=0)return"00:00";const D=Math.floor(W.value/60),u=W.value%60;return`${D.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}`}),m=D=>{if(R(),!D||D<=0){W.value=0;return}W.value=Math.floor(D),J=setInterval(()=>{W.value<=1?(W.value=0,R()):W.value-=1},1e3)},R=()=>{J&&(clearInterval(J),J=null)};ye(h,D=>{if(g.platform==="droid"||!D||typeof D!="string")return;const u=D.trim();if(!u)return;if(u.startsWith("http://")||u.startsWith("https://"))if(u.startsWith("http://localhost:45462")||u.startsWith("http://localhost:1455"))try{const we=new URL(u).searchParams.get("code");we?(h.value=we,z("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):z("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(ee){console.error("Failed to parse URL:",ee),z("链接格式错误,请检查是否为完整的 URL","error")}else if(g.platform==="gemini"||g.platform==="openai")try{const we=new URL(u).searchParams.get("code");we&&(h.value=we,z("成功提取授权码!","success"))}catch{}else z("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const te=async()=>{var D;R(),A.value="",h.value="",X.value="",H.value="",re.value="",W.value=0,O.value="",v.value=!1,G.value=!0;try{const u=(D=g.proxy)!=null&&D.enabled?{proxy:{type:g.proxy.type,host:g.proxy.host,port:parseInt(g.proxy.port),username:g.proxy.username||null,password:g.proxy.password||null}}:{};if(g.platform==="claude"){const Z=await I.generateClaudeAuthUrl(u);A.value=Z.authUrl,O.value=Z.sessionId}else if(g.platform==="gemini"){const Z=await I.generateGeminiAuthUrl(u);A.value=Z.authUrl,O.value=Z.sessionId}else if(g.platform==="openai"){const Z=await I.generateOpenAIAuthUrl(u);A.value=Z.authUrl,O.value=Z.sessionId}else if(g.platform==="droid"){const Z=await I.generateDroidAuthUrl(u);A.value=Z.verificationUriComplete||Z.verificationUri,H.value=Z.verificationUri,re.value=Z.verificationUriComplete||Z.verificationUri,X.value=Z.userCode,m(Z.expiresIn||300),O.value=Z.sessionId}}catch(u){z(u.message||"生成授权链接失败","error")}finally{G.value=!1}},E=()=>{R(),A.value="",h.value="",X.value="",H.value="",re.value="",W.value=0,O.value="",te()},P=async()=>{if(!A.value){z("请先生成授权链接","warning");return}try{await navigator.clipboard.writeText(A.value),v.value=!0,z("链接已复制","success"),setTimeout(()=>{v.value=!1},2e3)}catch{const u=document.createElement("input");u.value=A.value,document.body.appendChild(u),u.select(),document.execCommand("copy"),document.body.removeChild(u),v.value=!0,z("链接已复制","success"),setTimeout(()=>{v.value=!1},2e3)}},N=async()=>{if(!X.value){z("请先生成授权验证码","warning");return}try{await navigator.clipboard.writeText(X.value),z("验证码已复制","success")}catch{const u=document.createElement("input");u.value=X.value,document.body.appendChild(u),u.select(),document.execCommand("copy"),document.body.removeChild(u),z("验证码已复制","success")}},ke=()=>{re.value?window.open(re.value,"_blank","noopener"):H.value&&window.open(H.value,"_blank","noopener")},de=async()=>{var D;if(B.value){V.value=!0;try{let u={};g.platform==="claude"?u={sessionId:O.value,callbackUrl:h.value.trim()}:g.platform==="gemini"?u={code:h.value.trim(),sessionId:O.value}:g.platform==="openai"?u={code:h.value.trim(),sessionId:O.value}:g.platform==="droid"&&(u={sessionId:O.value}),(D=g.proxy)!=null&&D.enabled&&(u.proxy={type:g.proxy.type,host:g.proxy.host,port:parseInt(g.proxy.port),username:g.proxy.username||null,password:g.proxy.password||null});let Z;if(g.platform==="claude")Z=await I.exchangeClaudeCode(u);else if(g.platform==="gemini")Z=await I.exchangeGeminiCode(u);else if(g.platform==="openai")Z=await I.exchangeOpenAICode(u);else if(g.platform==="droid"){const ee=await I.exchangeDroidCode(u);if(!ee.success){if(ee.pending){const we=ee.message||"授权尚未完成,请在浏览器确认后稍候再次尝试。";z(we,"info"),typeof ee.expiresIn=="number"&&ee.expiresIn>=0&&m(ee.expiresIn);return}throw new Error(ee.message||"授权失败,请重试")}Z=ee.data,R()}xe("success",Z)}catch(u){z(u.message||"授权失败,请检查授权码是否正确","error")}finally{V.value=!1}}};return Js(()=>{R()}),(D,u)=>(o(),n("div",ya,[Q.platform==="claude"?(o(),n("div",xa,[e("div",fa,[e("div",ba,[u[15]||(u[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",va,[u[13]||(u[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),u[14]||(u[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",ka,[e("div",ha,[e("div",wa,[u[6]||(u[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",$a,[u[5]||(u[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),A.value?(o(),n("div",Ia,[e("div",Ta,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:A.value},null,8,Ka),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:P},[e("i",{class:K(v.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:E},u[4]||(u[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:G.value,onClick:te},[G.value?(o(),n("div",Ua)):(o(),n("i",Ca)),k(" "+p(G.value?"生成中...":"生成授权链接"),1)],8,Aa))])])]),u[12]||(u[12]=jt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Pa,[e("div",_a,[u[11]||(u[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Ma,[u[9]||(u[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),u[10]||(u[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[k(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),k(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",Da,[e("div",null,[u[7]||(u[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),k("Authorization Code ")],-1)),b(e("textarea",{"onUpdate:modelValue":u[0]||(u[0]=Z=>h.value=Z),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[j,h.value]])]),u[8]||(u[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):Q.platform==="gemini"?(o(),n("div",Sa,[e("div",ja,[e("div",za,[u[27]||(u[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",Ra,[u[25]||(u[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),u[26]||(u[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",Va,[e("div",Oa,[e("div",La,[u[18]||(u[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Ea,[u[17]||(u[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),A.value?(o(),n("div",Fa,[e("div",Wa,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:A.value},null,8,Qa),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:P},[e("i",{class:K(v.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:E},u[16]||(u[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:G.value,onClick:te},[G.value?(o(),n("div",Ga)):(o(),n("i",qa)),k(" "+p(G.value?"生成中...":"生成授权链接"),1)],8,Na))])])]),u[24]||(u[24]=jt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Ba,[e("div",Ha,[u[23]||(u[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Ja,[u[21]||(u[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),u[22]||(u[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Ya,[e("div",null,[u[19]||(u[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),k("Authorization Code ")],-1)),b(e("textarea",{"onUpdate:modelValue":u[1]||(u[1]=Z=>h.value=Z),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[j,h.value]])]),u[20]||(u[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),k(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):Q.platform==="openai"?(o(),n("div",Za,[e("div",Xa,[e("div",er,[u[39]||(u[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",tr,[u[37]||(u[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),u[38]||(u[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",sr,[e("div",ar,[e("div",rr,[u[30]||(u[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",lr,[u[29]||(u[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),A.value?(o(),n("div",dr,[e("div",ur,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:A.value},null,8,pr),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:P},[e("i",{class:K(v.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:E},u[28]||(u[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:G.value,onClick:te},[G.value?(o(),n("div",ir)):(o(),n("i",nr)),k(" "+p(G.value?"生成中...":"生成授权链接"),1)],8,or))])])]),u[36]||(u[36]=jt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",gr,[e("div",mr,[u[35]||(u[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",cr,[u[33]||(u[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),u[34]||(u[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[k(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),k(" 时: ")],-1)),e("div",yr,[e("div",null,[u[31]||(u[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),k("授权链接或 Code ")],-1)),b(e("textarea",{"onUpdate:modelValue":u[2]||(u[2]=Z=>h.value=Z),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...) 方式2:仅复制 code 参数的值 系统会自动识别并提取所需信息`,rows:"3"},null,512),[[j,h.value]])]),u[32]||(u[32]=jt('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):Q.platform==="droid"?(o(),n("div",xr,[e("div",fr,[e("div",br,[u[51]||(u[51]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-cyan-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",vr,[u[49]||(u[49]=e("h4",{class:"mb-3 font-semibold text-cyan-900 dark:text-cyan-200"},"Droid 账户授权",-1)),u[50]||(u[50]=e("p",{class:"mb-4 text-sm text-cyan-800 dark:text-cyan-300"}," 请按照以下步骤完成 Factory (Droid) 账户的授权: ",-1)),e("div",kr,[e("div",hr,[e("div",wr,[u[47]||(u[47]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-cyan-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",$r,[u[46]||(u[46]=e("p",{class:"mb-2 font-medium text-cyan-900 dark:text-cyan-200"}," 点击下方按钮生成授权链接 ",-1)),A.value?(o(),n("div",Ir,[e("div",Tr,[u[42]||(u[42]=e("label",{class:"text-xs font-semibold text-gray-600 dark:text-gray-300"},"授权链接",-1)),e("div",Kr,[e("div",Pr,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:A.value},null,8,_r),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:P},[e("i",{class:K(v.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("div",{class:"flex flex-wrap items-center gap-2"},[e("button",{class:"inline-flex items-center gap-1 rounded-md border border-cyan-200 bg-white px-3 py-1.5 text-xs font-medium text-cyan-600 shadow-sm transition-colors hover:border-cyan-300 hover:bg-cyan-50 dark:border-cyan-700 dark:bg-cyan-900/40 dark:text-cyan-200 dark:hover:border-cyan-500 dark:hover:bg-cyan-900/60",onClick:ke},u[40]||(u[40]=[e("i",{class:"fas fa-external-link-alt text-xs"},null,-1),k(" 在新标签中打开 ",-1)])),e("button",{class:"inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium text-cyan-600 transition-colors hover:text-cyan-700 dark:text-cyan-300 dark:hover:text-cyan-200",onClick:E},u[41]||(u[41]=[e("i",{class:"fas fa-sync-alt text-xs"},null,-1),k("重新生成 ",-1)]))])])]),e("div",Mr,[u[44]||(u[44]=e("label",{class:"text-xs font-semibold text-gray-600 dark:text-gray-300"},"授权验证码",-1)),e("div",Dr,[e("span",Sr,p(X.value||"------"),1),e("button",{class:"rounded-lg bg-white px-3 py-1 text-sm text-cyan-600 transition-colors hover:bg-cyan-100 dark:bg-cyan-800 dark:text-cyan-200 dark:hover:bg-cyan-700",onClick:N},u[43]||(u[43]=[e("i",{class:"fas fa-copy mr-1"},null,-1),k("复制 ",-1)]))])]),e("div",jr,[e("span",null,[u[45]||(u[45]=e("i",{class:"fas fa-hourglass-half mr-1 text-cyan-500"},null,-1)),k(" 剩余有效期:"+p(w.value),1)])])])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:G.value,onClick:te},[G.value?(o(),n("div",Ur)):(o(),n("i",Cr)),k(" "+p(G.value?"生成中...":"生成授权链接"),1)],8,Ar))])])]),u[48]||(u[48]=jt('
2

在浏览器中打开链接并完成授权

在浏览器中打开授权页面,输入上方验证码并登录 Factory / Droid 账户,最后点击允许授权。

3

完成授权后点击下方“完成授权”按钮,系统会自动获取访问令牌。

若提示授权仍在等待确认,请稍候片刻后系统会自动重试。

',2))])])])])])):y("",!0),e("div",zr,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:u[3]||(u[3]=Z=>D.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!B.value||V.value,type:"button",onClick:de},[V.value?(o(),n("div",Vr)):y("",!0),k(" "+p(V.value?"验证中...":"完成授权"),1)],8,Rr)])]))}},Lr={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Er={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},Nr={class:"mb-4 flex items-center justify-between sm:mb-6"},qr={class:"mb-6"},Gr={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},Fr={class:"space-y-4"},Wr={class:"flex gap-4"},Qr={class:"flex cursor-pointer items-center"},Br={class:"flex cursor-pointer items-center"},Hr={class:"flex cursor-pointer items-center"},Jr={class:"flex cursor-pointer items-center"},Yr={class:"flex gap-3"},Zr=["disabled"],Xr={key:0,class:"loading-spinner mr-2"},el={class:"space-y-4"},tl={key:0,class:"py-8 text-center"},sl={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},al={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},rl={class:"mb-3 flex items-start justify-between"},ll={class:"flex-1"},ol={class:"font-semibold text-gray-900"},nl={class:"mt-1 text-sm text-gray-500"},il={class:"ml-4 flex items-center gap-2"},dl={class:"flex items-center justify-between text-sm text-gray-600"},ul={class:"flex items-center gap-4"},pl={class:"flex items-center gap-2"},gl=["onClick"],ml=["disabled","onClick"],cl={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},yl={class:"modal-content w-full max-w-lg p-4 sm:p-6"},xl={class:"space-y-4"},fl={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},bl={class:"flex gap-3 pt-4"},vl=["disabled"],kl={key:0,class:"loading-spinner mr-2"},hl={__name:"GroupManagementModal",emits:["close","refresh"],setup(Q,{emit:Ke}){const g=Ke,xe=U(!0),I=U(!1),G=U([]),V=U(!1),A=U(!1),h=U({name:"",platform:"claude",description:""}),v=U(!1),O=U(!1),X=U(null),H=U({name:"",platform:"",description:""}),re=E=>E?new Date(E).toLocaleDateString("zh-CN"):"-",W=async()=>{I.value=!0;try{const E=await L.get("/admin/account-groups");G.value=E.data||[]}catch{z("加载分组列表失败","error")}finally{I.value=!1}},J=async()=>{var E,P;if(!h.value.name||!h.value.platform){z("请填写必填项","error");return}A.value=!0;try{await L.post("/admin/account-groups",{name:h.value.name,platform:h.value.platform,description:h.value.description}),z("分组创建成功","success"),B(),await W(),g("refresh")}catch(N){z(((P=(E=N.response)==null?void 0:E.data)==null?void 0:P.error)||"创建分组失败","error")}finally{A.value=!1}},B=()=>{V.value=!1,h.value={name:"",platform:"claude",description:""}},w=E=>{X.value=E,H.value={name:E.name,platform:E.platform,description:E.description||""},v.value=!0},m=async()=>{var E,P;if(!H.value.name){z("请填写分组名称","error");return}O.value=!0;try{await L.put(`/admin/account-groups/${X.value.id}`,{name:H.value.name,description:H.value.description}),z("分组更新成功","success"),R(),await W(),g("refresh")}catch(N){z(((P=(E=N.response)==null?void 0:E.data)==null?void 0:P.error)||"更新分组失败","error")}finally{O.value=!1}},R=()=>{v.value=!1,X.value=null,H.value={name:"",platform:"",description:""}},te=async E=>{var P,N;if(E.memberCount>0){z("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${E.name}" 吗?`))try{await L.delete(`/admin/account-groups/${E.id}`),z("分组删除成功","success"),await W(),g("refresh")}catch(ke){z(((N=(P=ke.response)==null?void 0:P.data)==null?void 0:N.error)||"删除分组失败","error")}};return Xt(()=>{W()}),(E,P)=>(o(),qe(Kt,{to:"body"},[xe.value?(o(),n("div",Lr,[e("div",Er,[e("div",Nr,[P[11]||(P[11]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:P[0]||(P[0]=N=>E.$emit("close"))},P[10]||(P[10]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",qr,[e("button",{class:"btn btn-primary px-4 py-2",onClick:P[1]||(P[1]=N=>V.value=!0)},P[12]||(P[12]=[e("i",{class:"fas fa-plus mr-2"},null,-1),k(" 创建新分组 ",-1)]))]),V.value?(o(),n("div",Gr,[P[20]||(P[20]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",Fr,[e("div",null,[P[13]||(P[13]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),b(e("input",{"onUpdate:modelValue":P[2]||(P[2]=N=>h.value.name=N),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[j,h.value.name]])]),e("div",null,[P[18]||(P[18]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Wr,[e("label",Qr,[b(e("input",{"onUpdate:modelValue":P[3]||(P[3]=N=>h.value.platform=N),class:"mr-2",type:"radio",value:"claude"},null,512),[[Ae,h.value.platform]]),P[14]||(P[14]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Br,[b(e("input",{"onUpdate:modelValue":P[4]||(P[4]=N=>h.value.platform=N),class:"mr-2",type:"radio",value:"gemini"},null,512),[[Ae,h.value.platform]]),P[15]||(P[15]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Hr,[b(e("input",{"onUpdate:modelValue":P[5]||(P[5]=N=>h.value.platform=N),class:"mr-2",type:"radio",value:"openai"},null,512),[[Ae,h.value.platform]]),P[16]||(P[16]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))]),e("label",Jr,[b(e("input",{"onUpdate:modelValue":P[6]||(P[6]=N=>h.value.platform=N),class:"mr-2",type:"radio",value:"droid"},null,512),[[Ae,h.value.platform]]),P[17]||(P[17]=e("span",{class:"text-sm text-gray-700"},"Droid",-1))])])]),e("div",null,[P[19]||(P[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":P[7]||(P[7]=N=>h.value.description=N),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[j,h.value.description]])]),e("div",Yr,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!h.value.name||!h.value.platform||A.value,onClick:J},[A.value?(o(),n("div",Xr)):y("",!0),k(" "+p(A.value?"创建中...":"创建"),1)],8,Zr),e("button",{class:"btn btn-secondary px-4 py-2",onClick:B},"取消")])])])):y("",!0),e("div",el,[I.value?(o(),n("div",tl,P[21]||(P[21]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):G.value.length===0?(o(),n("div",sl,P[22]||(P[22]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(o(),n("div",al,[(o(!0),n(he,null,ze(G.value,N=>(o(),n("div",{key:N.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",rl,[e("div",ll,[e("h4",ol,p(N.name),1),e("p",nl,p(N.description||"暂无描述"),1)]),e("div",il,[e("span",{class:K(["rounded-full px-2 py-1 text-xs font-medium",N.platform==="claude"?"bg-purple-100 text-purple-700":N.platform==="gemini"?"bg-blue-100 text-blue-700":N.platform==="openai"?"bg-gray-100 text-gray-700":"bg-cyan-100 text-cyan-700"])},p(N.platform==="claude"?"Claude":N.platform==="gemini"?"Gemini":N.platform==="openai"?"OpenAI":"Droid"),3)])]),e("div",dl,[e("div",ul,[e("span",null,[P[23]||(P[23]=e("i",{class:"fas fa-users mr-1"},null,-1)),k(" "+p(N.memberCount||0)+" 个成员 ",1)]),e("span",null,[P[24]||(P[24]=e("i",{class:"fas fa-clock mr-1"},null,-1)),k(" "+p(re(N.createdAt)),1)])]),e("div",pl,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:ke=>w(N)},P[25]||(P[25]=[e("i",{class:"fas fa-edit"},null,-1)]),8,gl),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:N.memberCount>0,title:"删除",onClick:ke=>te(N)},P[26]||(P[26]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ml)])])]))),128))]))])])])):y("",!0),v.value?(o(),n("div",cl,[e("div",yl,[e("div",{class:"mb-4 flex items-center justify-between"},[P[28]||(P[28]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:R},P[27]||(P[27]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",xl,[e("div",null,[P[29]||(P[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),b(e("input",{"onUpdate:modelValue":P[8]||(P[8]=N=>H.value.name=N),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[j,H.value.name]])]),e("div",null,[P[31]||(P[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",fl,[k(p(H.value.platform==="claude"?"Claude":H.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),P[30]||(P[30]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[P[32]||(P[32]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":P[9]||(P[9]=N=>H.value.description=N),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[j,H.value.description]])]),e("div",bl,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!H.value.name||O.value,onClick:m},[O.value?(o(),n("div",kl)):y("",!0),k(" "+p(O.value?"更新中...":"更新"),1)],8,vl),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:R},"取消")])])])])):y("",!0)]))}},wl={key:0,class:"modal fixed inset-0 z-[60] flex items-center justify-center p-3 sm:p-4"},$l={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},Al={class:"mb-4 flex items-center justify-between sm:mb-6"},Cl={class:"flex items-center gap-2 sm:gap-3"},Ul={class:"text-xs text-gray-500 dark:text-gray-400 sm:text-sm"},Il={class:"flex items-center gap-2"},Tl=["disabled"],Kl={key:0,class:"py-8 text-center"},Pl={key:1,class:"rounded-lg bg-gray-50 py-8 text-center dark:bg-gray-800"},_l={key:2},Ml={class:"mb-4 space-y-3"},Dl={class:"rounded-lg border border-gray-200 bg-white p-3 shadow-sm dark:border-gray-700 dark:bg-gray-800"},Sl={class:"mb-3 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},jl={class:"flex items-center gap-2"},zl={class:"flex gap-1"},Rl={class:"flex flex-1 items-center gap-2 lg:max-w-md"},Vl={class:"relative flex-1"},Ol={class:"flex gap-1"},Ll={class:"flex flex-wrap items-center justify-between gap-2"},El={class:"flex flex-wrap items-center gap-2"},Nl=["disabled"],ql=["disabled"],Gl=["disabled"],Fl=["disabled"],Wl={class:"flex items-center gap-2 rounded-md bg-purple-50 px-3 py-1.5 dark:bg-purple-900/20"},Ql={class:"text-xs font-medium text-purple-700 dark:text-purple-300"},Bl={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"},Hl={key:0,class:"absolute -left-2 -top-2 z-10"},Jl=["title"],Yl={class:"flex flex-col gap-3"},Zl={class:"flex items-start justify-between gap-2"},Xl=["title"],eo={class:"flex items-center gap-1"},to=["onClick"],so=["disabled","onClick"],ao={key:0,class:"loading-spinner-sm"},ro={key:1,class:"fas fa-redo"},lo=["disabled","onClick"],oo={key:0,class:"loading-spinner-sm"},no={key:1,class:"fas fa-trash"},io={class:"flex flex-wrap items-center gap-3 text-xs text-gray-600 dark:text-gray-400"},uo={key:0},po={key:0,class:"mt-4 flex items-center justify-between"},go={class:"text-sm text-gray-600 dark:text-gray-400"},mo={class:"flex items-center gap-2"},co=["disabled"],yo=["disabled"],xo={class:"px-3 py-1.5 text-sm font-medium text-gray-700 dark:text-gray-300"},fo=["disabled"],bo=["disabled"],vo={__name:"ApiKeyManagementModal",props:{accountId:{type:String,required:!0},accountName:{type:String,default:""}},emits:["close","refresh"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=U(!0),G=U(!1),V=U(null),A=U(null),h=U([]),v=U(1),O=U(15),X=U(!1),H=U("all"),re=U(""),W=U("fuzzy"),J=U(!1),B=q=>!q||q.length<12?q:`${q.substring(0,8)}...${q.substring(q.length-4)}`,w=le(()=>{let q=h.value;if(H.value!=="all"&&(q=q.filter($=>$.status===H.value)),re.value.trim()){const $=re.value.trim();q=q.filter(M=>{const ue=M.key;return W.value==="exact"?ue===$:ue.toLowerCase().includes($.toLowerCase())})}return q}),m=le(()=>w.value.length),R=le(()=>Math.ceil(m.value/O.value)),te=le(()=>{const q=(v.value-1)*O.value,$=q+O.value;return w.value.slice(q,$)}),E=le(()=>h.value.filter(q=>q.status==="active").length),P=le(()=>h.value.filter(q=>q.status==="error").length),N=async()=>{G.value=!0;try{const $=(await L.get(`/admin/droid-accounts/${g.accountId}`)).data;let M=[];if(Array.isArray($.apiKeys))M=$.apiKeys;else if(typeof $.apiKeys=="string")try{M=JSON.parse($.apiKeys)}catch(ie){console.error("Failed to parse apiKeys:",ie)}const ue=M.map(ie=>typeof ie=="string"?{key:ie,usageCount:0,status:"active",lastUsedAt:null,errorMessage:""}:typeof ie=="object"&&ie!==null?{key:ie.key||ie.apiKey||"",usageCount:ie.usageCount||ie.count||0,status:ie.status||"active",lastUsedAt:ie.lastUsedAt||ie.lastUsed||null,errorMessage:ie.errorMessage||""}:{key:String(ie),usageCount:0,status:"active",lastUsedAt:null,errorMessage:""});h.value=ue.sort((ie,Ie)=>ie.lastUsedAt&&Ie.lastUsedAt?new Date(Ie.lastUsedAt)-new Date(ie.lastUsedAt):ie.lastUsedAt&&!Ie.lastUsedAt?-1:!ie.lastUsedAt&&Ie.lastUsedAt?1:(Ie.usageCount||0)-(ie.usageCount||0))}catch(q){console.error("Failed to load API keys:",q),z("加载 API Key 失败","error")}finally{G.value=!1,v.value=1}},ke=async q=>{var $,M;if(confirm(`确定要删除 API Key "${B(q.key)}" 吗?`)){V.value=q.key;try{const ue={removeApiKeys:[q.key],apiKeyUpdateMode:"delete"};await L.put(`/admin/droid-accounts/${g.accountId}`,ue),z("API Key 已删除","success"),await N(),xe("refresh")}catch(ue){console.error("Failed to delete API key:",ue),z(((M=($=ue.response)==null?void 0:$.data)==null?void 0:M.error)||"删除 API Key 失败","error")}finally{V.value=null}}},de=async q=>{var $,M;if(confirm(`确定要重置 API Key "${B(q.key)}" 的状态吗?这将清除错误信息并恢复为正常状态。`)){A.value=q.key;try{const ue={apiKeys:[{key:q.key,status:"active",errorMessage:""}],apiKeyUpdateMode:"update"};await L.put(`/admin/droid-accounts/${g.accountId}`,ue),z("API Key 状态已重置","success"),await N(),xe("refresh")}catch(ue){console.error("Failed to reset API key status:",ue),z(((M=($=ue.response)==null?void 0:$.data)==null?void 0:M.error)||"重置 API Key 状态失败","error")}finally{A.value=null}}},D=async()=>{var $,M;const q=h.value.filter(ue=>ue.status==="error");if(q.length===0){z("没有异常状态的 API Key","warning");return}if(confirm(`确定要删除所有 ${q.length} 个异常状态的 API Key 吗?此操作不可恢复!`)){J.value=!0;try{const ie={removeApiKeys:q.map(Ie=>Ie.key),apiKeyUpdateMode:"delete"};await L.put(`/admin/droid-accounts/${g.accountId}`,ie),z(`成功删除 ${q.length} 个异常 API Key`,"success"),await N(),xe("refresh")}catch(ue){console.error("Failed to delete error API keys:",ue),z(((M=($=ue.response)==null?void 0:$.data)==null?void 0:M.error)||"批量删除失败","error")}finally{J.value=!1}}},u=async()=>{var q,$;if(h.value.length===0){z("没有可删除的 API Key","warning");return}if(confirm(`确定要删除所有 ${h.value.length} 个 API Key 吗?此操作不可恢复! 请再次确认:这将删除该账户下的所有 API Key。`)&&confirm("最后确认:真的要删除所有 API Key 吗?")){J.value=!0;try{const M=h.value.map(ie=>ie.key),ue={removeApiKeys:M,apiKeyUpdateMode:"delete"};await L.put(`/admin/droid-accounts/${g.accountId}`,ue),z(`成功删除所有 ${M.length} 个 API Key`,"success"),await N(),xe("refresh")}catch(M){console.error("Failed to delete all API keys:",M),z((($=(q=M.response)==null?void 0:q.data)==null?void 0:$.error)||"批量删除失败","error")}finally{J.value=!1}}},Z=q=>{let $=[],M="";if(q==="error"?($=h.value.filter(Be=>Be.status==="error"),M=`error_api_keys_${g.accountName}_${new Date().toISOString().split("T")[0]}.txt`):($=h.value,M=`all_api_keys_${g.accountName}_${new Date().toISOString().split("T")[0]}.txt`),$.length===0){z("没有可导出的 API Key","warning");return}const ue=$.map(Be=>Be.key).join(` `),ie=new Blob([ue],{type:"text/plain;charset=utf-8"}),Ie=URL.createObjectURL(ie),Ve=document.createElement("a");Ve.href=Ie,Ve.download=M,document.body.appendChild(Ve),Ve.click(),document.body.removeChild(Ve),URL.revokeObjectURL(Ie),z(`成功导出 ${$.length} 个 API Key`,"success")},ee=async q=>{if(typeof navigator<"u"&&navigator.clipboard&&typeof navigator.clipboard.writeText=="function"&&(typeof window>"u"||window.isSecureContext!==!1)){await navigator.clipboard.writeText(q);return}if(typeof document>"u")throw new Error("clipboard unavailable");const M=document.createElement("textarea");M.value=q,M.setAttribute("readonly",""),M.style.position="fixed",M.style.opacity="0",M.style.pointerEvents="none",document.body.appendChild(M),M.select();try{const ue=document.execCommand("copy");if(document.body.removeChild(M),!ue)throw new Error("execCommand failed")}catch(ue){throw document.body.removeChild(M),ue}},we=async q=>{try{await ee(q),z("API Key 已复制","success")}catch($){console.error("Failed to copy:",$),z("复制失败,请手动复制","error")}},s=async()=>{if(!(!h.value.length||X.value)){X.value=!0;try{const q=h.value.map($=>$.key).join(` `);await ee(q),z(`已复制 ${h.value.length} 条 API Key`,"success")}catch(q){console.error("Failed to copy all keys:",q),z("复制全部 API Key 失败,请手动复制","error")}finally{X.value=!1}}},Ce=q=>{if(!q)return"-";try{return new Date(q).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return"-"}};return Xt(()=>{N()}),(q,$)=>(o(),qe(Kt,{to:"body"},[I.value?(o(),n("div",wl,[e("div",$l,[e("div",Al,[e("div",Cl,[$[14]||($[14]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})],-1)),e("div",null,[$[13]||($[13]=e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," API Key 管理 ",-1)),e("p",Ul,p(Q.accountName),1)])]),e("div",Il,[e("button",{class:"flex items-center gap-2 rounded-lg border border-purple-200 bg-white/90 px-3 py-1.5 text-xs font-semibold text-purple-600 shadow-sm transition-all duration-200 hover:border-purple-300 hover:bg-purple-50 hover:text-purple-700 focus:outline-none focus:ring-2 focus:ring-purple-200 disabled:cursor-not-allowed disabled:opacity-60 dark:border-purple-600/60 dark:bg-purple-900/20 dark:text-purple-200 dark:hover:border-purple-500 dark:hover:bg-purple-900/40 dark:hover:text-purple-100 dark:focus:ring-purple-500/40 sm:text-sm",disabled:G.value||h.value.length===0||X.value,onClick:s},[e("i",{class:K(["text-sm sm:text-base",X.value?"fas fa-spinner fa-spin":"fas fa-clipboard-list"])},null,2),$[15]||($[15]=e("span",null,"复制全部 Key",-1))],8,Tl),e("button",{class:"flex h-9 w-9 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:text-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:text-gray-200 sm:h-10 sm:w-10",title:"关闭",onClick:$[0]||($[0]=M=>q.$emit("close"))},$[16]||($[16]=[e("i",{class:"fas fa-times text-base sm:text-lg"},null,-1)]))])]),G.value?(o(),n("div",Kl,$[17]||($[17]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"加载中...",-1)]))):y("",!0),!G.value&&h.value.length===0?(o(),n("div",Pl,$[18]||($[18]=[e("i",{class:"fas fa-key mb-4 text-4xl text-gray-300 dark:text-gray-600"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"暂无 API Key",-1)]))):y("",!0),!G.value&&h.value.length>0?(o(),n("div",_l,[e("div",Ml,[e("div",Dl,[e("div",Sl,[e("div",jl,[$[21]||($[21]=e("i",{class:"fas fa-filter text-gray-400 dark:text-gray-500"},null,-1)),$[22]||($[22]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"筛选:",-1)),e("div",zl,[e("button",{class:K(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",H.value==="all"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[1]||($[1]=M=>H.value="all")}," 全部 ("+p(h.value.length)+") ",3),e("button",{class:K(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",H.value==="active"?"bg-green-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[2]||($[2]=M=>H.value="active")},[$[19]||($[19]=e("i",{class:"fas fa-check-circle mr-1"},null,-1)),k(" 正常 ("+p(E.value)+") ",1)],2),e("button",{class:K(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",H.value==="error"?"bg-red-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[3]||($[3]=M=>H.value="error")},[$[20]||($[20]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),k(" 异常 ("+p(P.value)+") ",1)],2)])]),e("div",Rl,[e("div",Vl,[b(e("input",{"onUpdate:modelValue":$[4]||($[4]=M=>re.value=M),class:"w-full rounded-md border border-gray-300 bg-gray-50 py-2 pl-10 pr-3 text-sm text-gray-700 transition-colors placeholder:text-gray-400 focus:border-purple-500 focus:bg-white focus:outline-none focus:ring-2 focus:ring-purple-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-300 dark:placeholder:text-gray-500 dark:focus:border-purple-400 dark:focus:bg-gray-800",placeholder:"搜索 API Key...",type:"text"},null,512),[[j,re.value]]),$[23]||($[23]=e("i",{class:"fas fa-search absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500"},null,-1))]),e("div",Ol,[e("button",{class:K(["rounded-md px-2.5 py-2 text-xs font-medium transition-colors",W.value==="fuzzy"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),title:"模糊搜索:包含查询字符串即可",onClick:$[5]||($[5]=M=>W.value="fuzzy")},$[24]||($[24]=[e("i",{class:"fas fa-search mr-1"},null,-1),k(" 模糊 ",-1)]),2),e("button",{class:K(["rounded-md px-2.5 py-2 text-xs font-medium transition-colors",W.value==="exact"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),title:"精确搜索:完全匹配完整 Key",onClick:$[6]||($[6]=M=>W.value="exact")},$[25]||($[25]=[e("i",{class:"fas fa-equals mr-1"},null,-1),k(" 精确 ",-1)]),2)])])]),$[35]||($[35]=e("div",{class:"my-3 border-t border-gray-200 dark:border-gray-700"},null,-1)),e("div",Ll,[e("div",El,[$[30]||($[30]=e("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"批量操作:",-1)),e("button",{class:"group rounded-md bg-gradient-to-r from-red-500 to-red-600 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-red-600 hover:to-red-700 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:P.value===0||J.value,title:"删除所有异常状态的 API Key",onClick:D},$[26]||($[26]=[e("i",{class:"fas fa-trash-alt mr-1"},null,-1),k(" 删除异常 ",-1)]),8,Nl),e("button",{class:"group rounded-md bg-gradient-to-r from-red-600 to-red-700 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-red-700 hover:to-red-800 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:h.value.length===0||J.value,title:"删除所有 API Key",onClick:u},$[27]||($[27]=[e("i",{class:"fas fa-trash mr-1"},null,-1),k(" 删除全部 ",-1)]),8,ql),$[31]||($[31]=e("div",{class:"mx-1 h-5 w-px bg-gray-300 dark:bg-gray-600"},null,-1)),e("button",{class:"rounded-md bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-blue-600 hover:to-blue-700 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:P.value===0,title:"导出所有异常状态的 API Key",onClick:$[7]||($[7]=M=>Z("error"))},$[28]||($[28]=[e("i",{class:"fas fa-download mr-1"},null,-1),k(" 导出异常 ",-1)]),8,Gl),e("button",{class:"rounded-md bg-gradient-to-r from-blue-600 to-blue-700 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-blue-700 hover:to-blue-800 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:h.value.length===0,title:"导出所有 API Key",onClick:$[8]||($[8]=M=>Z("all"))},$[29]||($[29]=[e("i",{class:"fas fa-file-export mr-1"},null,-1),k(" 导出全部 ",-1)]),8,Fl)]),e("div",Wl,[$[34]||($[34]=e("i",{class:"fas fa-info-circle text-purple-500 dark:text-purple-400"},null,-1)),e("span",Ql,[$[32]||($[32]=k(" 显示 ",-1)),e("strong",null,p(w.value.length),1),$[33]||($[33]=k(" 个 ",-1))])])])])]),e("div",Bl,[(o(!0),n(he,null,ze(te.value,(M,ue)=>(o(),n("div",{key:ue,class:"relative rounded-lg border border-gray-200 bg-white p-4 transition-all hover:shadow-md dark:border-gray-700 dark:bg-gray-800"},[(M.status==="error"||M.status==="disabled")&&M.errorMessage?(o(),n("div",Hl,[e("span",{class:K(["inline-flex items-center justify-center rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm",[M.status==="error"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400"]]),title:`错误状态码: ${M.errorMessage}`},p(M.errorMessage),11,Jl)])):y("",!0),e("div",Yl,[e("div",Zl,[e("span",{class:"flex-1 break-all font-mono text-xs font-medium text-gray-900 dark:text-gray-100",title:M.key},p(B(M.key)),9,Xl),e("div",eo,[e("button",{class:"text-xs text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",title:"复制 API Key",onClick:ie=>we(M.key)},$[36]||($[36]=[e("i",{class:"fas fa-copy"},null,-1)]),8,to),M.status==="error"||M.status==="disabled"?(o(),n("button",{key:0,class:K(["text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-50",[M.status==="error"?"text-orange-500 hover:text-orange-700 dark:text-orange-400 dark:hover:text-orange-300":"text-yellow-500 hover:text-yellow-700 dark:text-yellow-400 dark:hover:text-yellow-300"]]),disabled:A.value===M.key,title:"重置状态",onClick:ie=>de(M)},[A.value===M.key?(o(),n("div",ao)):(o(),n("i",ro))],10,so)):y("",!0),e("button",{class:"text-xs text-red-500 transition-colors hover:text-red-700 disabled:cursor-not-allowed disabled:opacity-50 dark:text-red-400 dark:hover:text-red-600",disabled:V.value===M.key,onClick:ie=>ke(M)},[V.value===M.key?(o(),n("div",oo)):(o(),n("i",no))],8,lo)])]),e("div",io,[e("div",null,[e("span",{class:K([M.status==="active"?"text-green-600 dark:text-green-400":M.status==="error"?"text-red-600 dark:text-red-400":"text-yellow-600 dark:text-yellow-400"])},[e("i",{class:K(["mr-1",[M.status==="active"?"fas fa-check-circle":M.status==="error"?"fas fa-exclamation-triangle":"fas fa-exclamation-circle"]])},null,2),k(" "+p(M.status==="active"?"正常":M.status==="error"?"异常":M.status==="disabled"?"禁用":M.status||"未知"),1)],2)]),e("div",null,[e("span",null,[$[37]||($[37]=k("使用: ",-1)),e("strong",null,p(M.usageCount||0),1),$[38]||($[38]=k("次",-1))])]),M.lastUsedAt?(o(),n("div",uo,[e("span",null,p(Ce(M.lastUsedAt)),1)])):y("",!0)])])]))),128))]),R.value>1?(o(),n("div",po,[e("div",go," 显示 "+p((v.value-1)*O.value+1)+"-"+p(Math.min(v.value*O.value,m.value))+" 项,共 "+p(m.value)+" 项 ",1),e("div",mo,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:v.value===1,onClick:$[9]||($[9]=M=>v.value=1)},$[39]||($[39]=[e("i",{class:"fas fa-angle-double-left"},null,-1)]),8,co),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:v.value===1,onClick:$[10]||($[10]=M=>v.value--)},$[40]||($[40]=[e("i",{class:"fas fa-angle-left"},null,-1)]),8,yo),e("span",xo,p(v.value)+" / "+p(R.value),1),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:v.value===R.value,onClick:$[11]||($[11]=M=>v.value++)},$[41]||($[41]=[e("i",{class:"fas fa-angle-right"},null,-1)]),8,fo),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:v.value===R.value,onClick:$[12]||($[12]=M=>v.value=R.value)},$[42]||($[42]=[e("i",{class:"fas fa-angle-double-right"},null,-1)]),8,bo)])])):y("",!0)])):y("",!0)])])):y("",!0)]))}},ko={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ho={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},wo={class:"mb-4 flex items-center justify-between sm:mb-6"},$o={class:"flex items-center gap-2 sm:gap-3"},Ao={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},Co={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},Uo={class:"flex items-center space-x-2 sm:space-x-4"},Io={class:"flex items-center"},To={class:"flex items-center"},Ko={key:1},Po={class:"space-y-6"},_o={key:0},Mo={class:"space-y-3"},Do={class:"grid grid-cols-2 gap-2 sm:grid-cols-4"},So={class:"p-3"},jo={class:"flex items-center justify-between"},zo={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-indigo-500"},Ro={class:"p-3"},Vo={class:"flex items-center justify-between"},Oo={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500"},Lo={class:"p-3"},Eo={class:"flex items-center justify-between"},No={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-blue-500"},qo={class:"p-3"},Go={class:"flex items-center justify-between"},Fo={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-rose-500"},Wo={key:0,class:"animate-fadeIn rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},Qo={class:"grid grid-cols-2 gap-2 sm:grid-cols-3"},Bo={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-indigo-500"},Ho={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-purple-500"},Jo={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-orange-500"},Yo={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-cyan-500"},Zo={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-emerald-500"},Xo={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-teal-500"},en={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},tn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},sn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500"},an={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-rose-500"},rn={key:1},ln={class:"flex flex-wrap gap-4"},on={class:"flex cursor-pointer items-center"},nn={class:"text-sm text-gray-700 dark:text-gray-300"},dn={key:0},un={key:0,class:"flex cursor-pointer items-center"},pn={class:"flex cursor-pointer items-center"},gn={key:1,class:"flex cursor-pointer items-center"},mn={key:0,class:"mt-1 text-xs text-red-500"},cn={class:"flex gap-4"},yn={class:"flex cursor-pointer items-center"},xn={class:"flex cursor-pointer items-center"},fn={class:"flex cursor-pointer items-center"},bn={key:2},vn={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800"},kn={key:0,class:"mt-3"},hn=["min"],wn={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},$n={key:2,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},An={key:3},Cn={class:"flex gap-2"},Un={class:"flex-1"},In={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},Tn={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},Kn=["value"],Pn={class:"text-sm text-gray-700 dark:text-gray-200"},_n={key:4},Mn={key:5,class:"space-y-4"},Dn={key:0,class:"mt-1 text-xs text-red-500"},Sn={key:0,class:"mt-1 text-xs text-red-500"},jn={key:0,class:"mt-1 text-xs text-red-500"},zn={key:6,class:"space-y-4"},Rn={key:0,class:"mt-1 text-xs text-red-500"},Vn={key:0,class:"mt-1 text-xs text-red-500"},On={key:0,class:"mt-1 text-xs text-red-500"},Ln={class:"flex flex-wrap gap-2"},En=["value"],Nn={class:"text-sm text-gray-700 dark:text-gray-300"},qn={key:7},Gn={class:"mb-3"},Fn={class:"inline-flex cursor-pointer items-center"},Wn={key:0},Qn={key:8,class:"space-y-4"},Bn={key:0,class:"mt-1 text-xs text-red-500"},Hn={key:0,class:"mt-1 text-xs text-red-500"},Jn={class:"grid grid-cols-2 gap-4"},Yn={class:"mb-4 flex gap-2"},Zn={key:0},Xn={class:"mb-3 grid grid-cols-2 gap-2"},ei=["value"],ti={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},si={class:"text-xs text-gray-500 dark:text-gray-400"},ai={key:0},ri={key:1},li={class:"mb-3 space-y-2"},oi=["onUpdate:modelValue"],ni=["onUpdate:modelValue"],ii=["onClick"],di={class:"mt-3 flex flex-wrap gap-2"},ui={class:"mb-3"},pi={class:"inline-flex cursor-pointer items-center"},gi={key:0},mi={key:9,class:"space-y-4"},ci={class:"relative"},yi=["type"],xi={key:10,class:"space-y-4"},fi={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},bi={class:"relative"},vi=["type"],ki={key:11},hi={class:"flex gap-4"},wi={class:"flex cursor-pointer items-center"},$i={class:"flex cursor-pointer items-center"},Ai={key:12,class:"mt-4"},Ci={class:"flex items-start"},Ui={key:13,class:"mt-4"},Ii={class:"flex items-start"},Ti={class:"ml-3"},Ki={key:0,class:"mt-1"},Pi={class:"flex items-center justify-between"},_i={class:"text-xs text-green-600 dark:text-green-400"},Mi=["disabled"],Di={key:0,class:"fas fa-trash-alt mr-1"},Si={key:1,class:"loading-spinner mr-1"},ji={key:1,class:"mt-1"},zi={key:14,class:"mt-4"},Ri={class:"flex items-start"},Vi={class:"ml-3 flex-1"},Oi={key:0,class:"mt-3"},Li={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},Ei={class:"flex items-center gap-2"},Ni={class:"block w-full select-all break-all rounded bg-gray-100 px-3 py-2 font-mono text-xs text-gray-700 dark:bg-gray-900 dark:text-gray-300"},qi={class:"text-blue-600 dark:text-blue-400"},Gi={class:"text-gray-500 dark:text-gray-500"},Fi={class:"text-blue-600 dark:text-blue-400"},Wi={key:15,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},Qi={class:"mb-4 flex items-start gap-3"},Bi={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Hi={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Ji={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Yi={key:3,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Zi={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},Xi={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},ed={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},td={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},sd={key:3,class:"text-xs text-blue-800 dark:text-blue-300"},ad={key:4,class:"text-xs text-blue-600 dark:text-blue-400"},rd={key:5,class:"text-xs text-red-600 dark:text-red-400"},ld={key:0},od={key:1},nd={key:0,class:"mt-1 text-xs text-red-500"},id={key:2},dd={key:0,class:"mt-1 text-xs text-red-500"},ud={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},pd={key:3},gd={key:16,class:"space-y-4 rounded-lg border border-purple-200 bg-purple-50 p-4 dark:border-purple-700 dark:bg-purple-900/30"},md={key:0,class:"mt-1 text-xs text-red-500"},cd={class:"flex gap-3 pt-4"},yd=["disabled"],xd=["disabled"],fd={key:0,class:"loading-spinner mr-2"},bd={key:3,class:"space-y-6"},vd={key:0},kd={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},hd={class:"flex items-start gap-4"},wd={class:"flex-1"},$d={class:"space-y-4"},Ad={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Cd={class:"flex items-start gap-3"},Ud={class:"flex-1"},Id=["disabled"],Td={key:0,class:"fas fa-link mr-2"},Kd={key:1,class:"loading-spinner mr-2"},Pd={key:1,class:"space-y-3"},_d={class:"flex items-center gap-2"},Md=["value"],Dd={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Sd={class:"flex items-start gap-3"},jd={class:"flex-1"},zd={class:"space-y-3"},Rd={class:"flex gap-3 pt-4"},Vd=["disabled"],Od={key:0,class:"loading-spinner mr-2"},Ld={key:4,class:"space-y-6"},Ed={class:"flex gap-4"},Nd={class:"flex cursor-pointer items-center"},qd={class:"flex cursor-pointer items-center"},Gd={class:"flex cursor-pointer items-center"},Fd={key:0},Wd={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800"},Qd={key:0,class:"mt-3"},Bd=["min"],Hd={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Jd={key:2,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Yd={key:1},Zd={class:"flex gap-2"},Xd={class:"flex-1"},e0={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},t0={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},s0=["value"],a0={class:"text-sm text-gray-700 dark:text-gray-200"},r0={key:2},l0={key:3},o0={class:"flex gap-4"},n0={class:"flex cursor-pointer items-center"},i0={class:"flex cursor-pointer items-center"},d0={key:4,class:"mt-4"},u0={class:"flex items-start"},p0={key:5,class:"mt-4"},g0={class:"flex items-start"},m0={class:"ml-3"},c0={key:0,class:"mt-1"},y0={class:"flex items-center justify-between"},x0={class:"text-xs text-green-600 dark:text-green-400"},f0=["disabled"],b0={key:0,class:"fas fa-trash-alt mr-1"},v0={key:1,class:"loading-spinner mr-1"},k0={key:1,class:"mt-1"},h0={key:6,class:"mt-4"},w0={class:"flex items-start"},$0={class:"ml-3 flex-1"},A0={key:0,class:"mt-3"},C0={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},U0={class:"flex items-center gap-2"},I0={class:"block w-full select-all break-all rounded bg-gray-100 px-3 py-2 font-mono text-xs text-gray-700 dark:bg-gray-900 dark:text-gray-300"},T0={class:"text-blue-600 dark:text-blue-400"},K0={class:"text-gray-500 dark:text-gray-500"},P0={class:"text-blue-600 dark:text-blue-400"},_0={key:7,class:"space-y-4"},M0={class:"grid grid-cols-2 gap-4"},D0={key:0,class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},S0={class:"mb-2 flex items-center justify-between"},j0={class:"text-sm text-gray-500 dark:text-gray-400"},z0={class:"relative h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},R0={class:"mt-2 flex items-center justify-between text-xs"},V0={class:"text-gray-500 dark:text-gray-400"},O0={class:"text-gray-500 dark:text-gray-400"},L0={class:"mb-4 flex gap-2"},E0={key:0},N0={class:"mb-3 grid grid-cols-2 gap-2"},q0=["value"],G0={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},F0={class:"text-xs text-gray-500 dark:text-gray-400"},W0={key:0},Q0={key:1},B0={class:"mb-3 space-y-2"},H0=["onUpdate:modelValue"],J0=["onUpdate:modelValue"],Y0=["onClick"],Z0={class:"mt-3 flex flex-wrap gap-2"},X0={class:"mb-3"},eu={class:"inline-flex cursor-pointer items-center"},tu={key:0},su={key:8,class:"space-y-4"},au={class:"relative"},ru=["type"],lu={class:"grid grid-cols-2 gap-4"},ou={key:9,class:"space-y-4"},nu={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},iu={class:"relative"},du=["type"],uu={key:10,class:"space-y-4"},pu={class:"mb-3"},gu={class:"inline-flex cursor-pointer items-center"},mu={key:0},cu={key:11,class:"space-y-4"},yu={key:0,class:"mt-1 text-xs text-red-500"},xu={key:0,class:"mt-1 text-xs text-red-500"},fu={key:0,class:"mt-1 text-xs text-red-500"},bu={class:"flex flex-wrap gap-2"},vu=["value"],ku={class:"text-sm text-gray-700 dark:text-gray-300"},hu={key:12,class:"rounded-lg border border-purple-200 bg-purple-50 p-4 dark:border-purple-700 dark:bg-purple-900/30"},wu={class:"mb-4 flex items-start gap-3"},$u={class:"flex-1"},Au={class:"mb-2 flex items-center justify-between"},Cu={class:"mb-1 text-sm text-purple-800 dark:text-purple-200"},Uu={class:"space-y-4"},Iu={key:0,class:"mt-1 text-xs text-red-500"},Tu={class:"space-y-2"},Ku={class:"flex items-center justify-between"},Pu={class:"text-xs text-purple-600 dark:text-purple-300"},_u={class:"relative grid h-11 grid-cols-3 overflow-hidden rounded-2xl border border-purple-200/80 bg-gradient-to-r from-purple-50/80 via-white to-purple-50/80 shadow-inner dark:border-purple-700/70 dark:from-purple-900/40 dark:via-purple-900/20 dark:to-purple-900/40"},Mu=["onClick"],Du={class:"text-xs text-purple-700 dark:text-purple-300"},Su={key:13,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},ju={class:"space-y-4"},zu={class:"flex gap-3 pt-4"},Ru=["disabled"],Vu={key:0,class:"loading-spinner mr-2"},Ou={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success","platform-changed"],setup(Q,{emit:Ke}){var Rt,ls,os,ns,is,ds,Vt,_t,Ot,Lt,us,ps,Et,Mt,Nt,gs,qt,Dt,ms,Gt,St,Ft,Wt,cs,ys,xs,Qt,fs,Bt,bs,vs,Ht;const g=Q,xe=Ke,I=Os(),{showConfirmModal:G,confirmOptions:V,showConfirm:A,handleConfirm:h,handleCancel:v}=Vs(),O=le(()=>!!g.account),X=U(!0),H=U(1),re=U(!1),W=U(!1),J=U(!1),B=U(!1),w=U(""),m=U(""),R=U(!1),te=U(""),E=U(""),P=U(!1),N=U(""),ke=U(!1),de=d=>["claude","claude-console","ccr","bedrock"].includes(d)?"claude":["openai","openai-responses","azure_openai"].includes(d)?"openai":["gemini","gemini-api"].includes(d)?"gemini":d==="droid"?"droid":"",D=()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}),u=d=>{if(!d)return null;let t=d;if(typeof d=="string")try{t=JSON.parse(d)}catch{return null}if(t&&typeof t=="object"&&t.proxy&&typeof t.proxy=="object"&&(t=t.proxy),!t||typeof t!="object")return null;const ae=typeof t.host=="string"?t.host.trim():t.host!==void 0&&t.host!==null?String(t.host).trim():"",pe=t.port!==void 0&&t.port!==null?String(t.port).trim():"",i=typeof t.type=="string"&&t.type.trim()?t.type.trim():"socks5",ge=typeof t.username=="string"?t.username:t.username!==void 0&&t.username!==null?String(t.username):"",oe=typeof t.password=="string"?t.password:t.password!==void 0&&t.password!==null?String(t.password):"";return{type:i,host:ae,port:pe,username:ge,password:oe}},Z=d=>{const t=u(d);return t&&t.host&&t.port?{enabled:!0,type:t.type||"socks5",host:t.host,port:t.port,username:t.username||"",password:t.password||""}:D()},ee=d=>{if(!d||!d.enabled)return null;const t=(d.host||"").trim(),ae=Number.parseInt(d.port,10);if(!t||Number.isNaN(ae)||ae<=0)return null;const pe=d.username?d.username.trim():"",i=d.password?d.password.trim():"";return{type:d.type||"socks5",host:t,port:ae,username:pe||null,password:i||null}},we=()=>{var d;return Z((d=g.account)==null?void 0:d.proxy)},s=U({platform:((Rt=g.account)==null?void 0:Rt.platform)||"claude",addType:(()=>{var t;const d=((t=g.account)==null?void 0:t.platform)||"claude";return d==="gemini"||d==="openai"||d==="claude"?"oauth":"manual"})(),name:((ls=g.account)==null?void 0:ls.name)||"",description:((os=g.account)==null?void 0:os.description)||"",accountType:((ns=g.account)==null?void 0:ns.accountType)||"shared",authenticationMethod:((is=g.account)==null?void 0:is.authenticationMethod)||"",subscriptionType:"claude_max",autoStopOnWarning:((ds=g.account)==null?void 0:ds.autoStopOnWarning)||!1,useUnifiedUserAgent:((Vt=g.account)==null?void 0:Vt.useUnifiedUserAgent)||!1,useUnifiedClientId:((_t=g.account)==null?void 0:_t.useUnifiedClientId)||!1,unifiedClientId:((Ot=g.account)==null?void 0:Ot.unifiedClientId)||"",groupId:"",groupIds:[],projectId:((Lt=g.account)==null?void 0:Lt.projectId)||"",accessToken:"",refreshToken:"",apiKeysInput:"",apiKeyUpdateMode:"append",proxy:we(),apiUrl:((us=g.account)==null?void 0:us.apiUrl)||"",apiKey:((ps=g.account)==null?void 0:ps.apiKey)||"",priority:((Et=g.account)==null?void 0:Et.priority)||50,endpointType:((Mt=g.account)==null?void 0:Mt.endpointType)||"anthropic",baseApi:((Nt=g.account)==null?void 0:Nt.baseApi)||"",baseUrl:((gs=g.account)==null?void 0:gs.baseUrl)||"https://generativelanguage.googleapis.com",rateLimitDuration:((qt=g.account)==null?void 0:qt.rateLimitDuration)||60,supportedModels:(()=>{var t;const d=(t=g.account)==null?void 0:t.supportedModels;return d?typeof d=="object"&&!Array.isArray(d)?Object.keys(d):Array.isArray(d)?d:[]:[]})(),userAgent:((Dt=g.account)==null?void 0:Dt.userAgent)||"",enableRateLimit:g.account?g.account.rateLimitDuration>0:!0,dailyQuota:((ms=g.account)==null?void 0:ms.dailyQuota)||0,dailyUsage:((Gt=g.account)==null?void 0:Gt.dailyUsage)||0,quotaResetTime:((St=g.account)==null?void 0:St.quotaResetTime)||"00:00",maxConcurrentTasks:((Ft=g.account)==null?void 0:Ft.maxConcurrentTasks)||0,accessKeyId:((Wt=g.account)==null?void 0:Wt.accessKeyId)||"",secretAccessKey:((cs=g.account)==null?void 0:cs.secretAccessKey)||"",region:((ys=g.account)==null?void 0:ys.region)||"",sessionToken:((xs=g.account)==null?void 0:xs.sessionToken)||"",defaultModel:((Qt=g.account)==null?void 0:Qt.defaultModel)||"",smallFastModel:((fs=g.account)==null?void 0:fs.smallFastModel)||"",azureEndpoint:((Bt=g.account)==null?void 0:Bt.azureEndpoint)||"",apiVersion:((bs=g.account)==null?void 0:bs.apiVersion)||"",deploymentName:((vs=g.account)==null?void 0:vs.deploymentName)||"",expireDuration:(()=>{var d;return(d=g.account)!=null&&d.expiresAt?"custom":""})(),customExpireDate:(()=>{var d;return(d=g.account)!=null&&d.expiresAt?new Date(g.account.expiresAt).toISOString().slice(0,16):""})(),expiresAt:((Ht=g.account)==null?void 0:Ht.expiresAt)||null}),Ce=U("whitelist"),q=U(["claude-sonnet-4-20250514","claude-sonnet-4-5-20250929","claude-3-5-haiku-20241022"]),$=[{value:"claude-opus-4-5-20251101",label:"Claude Opus 4.5",color:"blue"},{value:"claude-sonnet-4-20250514",label:"Claude Sonnet 4",color:"blue"},{value:"claude-sonnet-4-5-20250929",label:"Claude Sonnet 4.5",color:"indigo"},{value:"claude-3-5-haiku-20241022",label:"Claude 3.5 Haiku",color:"green"},{value:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",color:"emerald"},{value:"claude-opus-4-20250514",label:"Claude Opus 4",color:"purple"},{value:"claude-opus-4-1-20250805",label:"Claude Opus 4.1",color:"purple"},{value:"deepseek-chat",label:"DeepSeek Chat",color:"cyan"},{value:"Qwen",label:"Qwen",color:"orange"},{value:"Kimi",label:"Kimi",color:"pink"},{value:"GLM",label:"GLM",color:"teal"}],M=U([]),ue=()=>{var d;if((d=g.account)!=null&&d.supportedModels)if(typeof g.account.supportedModels=="object"&&!Array.isArray(g.account.supportedModels)){const t=Object.entries(g.account.supportedModels);t.every(([pe,i])=>pe===i)?(Ce.value="whitelist",q.value=t.map(([pe])=>pe),M.value=t.map(([pe,i])=>({from:pe,to:i}))):(Ce.value="mapping",M.value=t.map(([pe,i])=>({from:pe,to:i})))}else Array.isArray(g.account.supportedModels)&&(Ce.value="whitelist",q.value=g.account.supportedModels,M.value=g.account.supportedModels.map(t=>({from:t,to:t})))},ie=d=>{if(!d||typeof d!="string")return[];const t=d.split(/\r?\n/).map(pe=>pe.trim()).filter(pe=>pe.length>0);return t.length===0?[]:Array.from(new Set(t))},Ie=[{value:"append",label:"追加模式",description:"保留现有 Key,并在末尾追加新 Key 列表。"},{value:"replace",label:"覆盖模式",description:"先清空旧 Key,再写入上方的新 Key 列表。"},{value:"delete",label:"删除模式",description:"输入要移除的 Key,可精准删除失效或被封禁的 Key。"}],Ve=le(()=>{const d=Math.max(Ie.findIndex(ae=>ae.value===s.value.apiKeyUpdateMode),0),t=100/Ie.length;return{width:`${t}%`,left:`${d*t}%`}}),Be=le(()=>{const d=Ie.find(t=>t.value===s.value.apiKeyUpdateMode);return d?d.label:Ie[0].label}),gt=le(()=>{const d=Ie.find(t=>t.value===s.value.apiKeyUpdateMode);return d?d.description:Ie[0].description}),T=U({name:"",refreshToken:"",accessToken:"",apiKeys:"",apiUrl:"",apiKey:"",baseApi:"",accessKeyId:"",secretAccessKey:"",region:"",azureEndpoint:"",deploymentName:""}),wt=le(()=>{var d;return((d=s.value.name)==null?void 0:d.trim())&&s.value.platform}),bt=le(()=>w.value&&m.value.trim()),mt=()=>{var d;return!O.value||!((d=g.account)!=null&&d.id)?0:typeof s.value.dailyUsage=="number"?s.value.dailyUsage:0},it=le(()=>!s.value.dailyQuota||s.value.dailyQuota<=0?0:mt()/s.value.dailyQuota*100),tt=le(()=>{if(!g.account||g.account.platform!=="droid")return 0;let d=0;if(Array.isArray(g.account.apiKeys))d=g.account.apiKeys.length;else if(typeof g.account.apiKeys=="string")try{const ae=JSON.parse(g.account.apiKeys);Array.isArray(ae)&&(d=ae.length)}catch{d=0}const t=g.account.apiKeyCount??g.account.apiKeysCount??g.account.api_key_count??d;return Number(t)||0}),Ze=le(()=>{var t,ae,pe;if(!O.value||s.value.platform!=="droid")return!1;const d=s.value.authenticationMethod||((t=g.account)==null?void 0:t.authenticationMethod)||((ae=g.account)==null?void 0:ae.authMethod)||((pe=g.account)==null?void 0:pe.authentication_mode)||"";return typeof d!="string"?!1:d.trim().toLowerCase()==="api_key"}),Xe=async()=>{var d;if(!(!O.value||!((d=g.account)!=null&&d.id)))try{const t=await L.get(`/admin/claude-console-accounts/${g.account.id}/usage`);t&&(s.value.dailyUsage=t.dailyUsage||0)}catch{}},Ge=d=>{N.value=d,d==="claude"?s.value.platform="claude":d==="openai"?s.value.platform="openai":d==="gemini"?s.value.platform="gemini":d==="droid"&&(s.value.platform="droid")},st=async()=>{if(T.value.name="",!wt.value){(!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)){z("请选择一个分组","error");return}s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!(s.value.platform==="gemini"&&H.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await A("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写"))&&(H.value=2)},vt=async()=>{J.value=!0;try{const d=ee(s.value.proxy),t=d?{proxy:d}:{},ae=await I.generateClaudeSetupTokenUrl(t);w.value=ae.authUrl,te.value=ae.sessionId}catch(d){z(d.message||"生成Setup Token授权链接失败","error")}finally{J.value=!1}},$t=()=>{w.value="",m.value="",vt()},f=async()=>{try{await navigator.clipboard.writeText(w.value),R.value=!0,z("链接已复制","success"),setTimeout(()=>{R.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=w.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(R.value=!0,z("链接已复制","success")):z("复制失败,请手动复制","error")}catch{z("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{R.value=!1},2e3)}},c=async()=>{if(bt.value){B.value=!0;try{const d={sessionId:te.value,callbackUrl:m.value.trim()},t=ee(s.value.proxy);t&&(d.proxy=t);const ae=await I.exchangeClaudeSetupTokenCode(d);s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=yt()),await S(ae)}catch(d){z(d.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{B.value=!1}}},S=async d=>{var t,ae,pe,i,ge,oe,_e,De;re.value=!0;try{s.value.platform==="claude"&&s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=yt());const Te=ee(s.value.proxy),C={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,expiresAt:s.value.expiresAt||void 0,proxy:Te},_=s.value.platform;if(_==="claude"){const Y=d.claudeAiOauth||d;if(C.claudeAiOauth=Y,Y){const me={},$e=Y.extInfo;if($e&&typeof $e=="object"&&($e.org_uuid&&(me.org_uuid=$e.org_uuid),$e.account_uuid&&(me.account_uuid=$e.account_uuid)),!$e){const ot=(t=Y.organization)==null?void 0:t.uuid,pt=(ae=Y.account)==null?void 0:ae.uuid;ot&&(me.org_uuid=ot),pt&&(me.account_uuid=pt)}Object.keys(me).length>0&&(C.extInfo=me)}C.priority=s.value.priority||50,C.autoStopOnWarning=s.value.autoStopOnWarning||!1,C.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,C.useUnifiedClientId=s.value.useUnifiedClientId||!1,C.unifiedClientId=s.value.unifiedClientId||"",C.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(_==="gemini")C.geminiOauth=d.tokens||d,s.value.projectId&&(C.projectId=s.value.projectId),C.priority=s.value.priority||50;else if(_==="openai")C.openaiOauth=d.tokens||d,C.accountInfo=d.accountInfo,C.priority=s.value.priority||50;else if(_==="droid"){const Y=d.tokens||d||{},me={accessToken:Y.accessToken||Y.access_token||"",refreshToken:Y.refreshToken||Y.refresh_token||"",expiresAt:Y.expiresAt||Y.expires_at||"",expiresIn:Y.expiresIn||Y.expires_in||null,tokenType:Y.tokenType||Y.token_type||"Bearer",organizationId:Y.organizationId||Y.organization_id||"",authenticationMethod:Y.authenticationMethod||Y.authentication_method||""};if(!me.refreshToken){re.value=!1,z("授权成功但未返回 Refresh Token,请确认已授予离线访问权限后重试。","error");return}if(C.refreshToken=me.refreshToken,C.accessToken=me.accessToken,C.expiresAt=me.expiresAt,me.expiresIn!==null&&me.expiresIn!==void 0&&(C.expiresIn=me.expiresIn),C.priority=s.value.priority||50,C.endpointType=s.value.endpointType||"anthropic",C.platform="droid",C.tokenType=me.tokenType,C.authenticationMethod=me.authenticationMethod,me.organizationId&&(C.organizationId=me.organizationId),Y.user){const $e=Y.user,ot=[];typeof $e.first_name=="string"&&$e.first_name.trim()&&ot.push($e.first_name.trim()),typeof $e.last_name=="string"&&$e.last_name.trim()&&ot.push($e.last_name.trim());const pt=ot.join(" ").trim()||(typeof $e.name=="string"?$e.name.trim():"")||(typeof $e.display_name=="string"?$e.display_name.trim():"");typeof $e.email=="string"&&$e.email.trim()&&(C.ownerEmail=$e.email.trim()),pt?(C.ownerName=pt,C.ownerDisplayName=pt):C.ownerEmail&&(C.ownerName=C.ownerName||C.ownerEmail,C.ownerDisplayName=C.ownerDisplayName||C.ownerEmail),typeof $e.id=="string"&&$e.id.trim()&&(C.userId=$e.id.trim())}}let se;_==="claude"?se=await I.createClaudeAccount(C):_==="gemini"?se=await I.createGeminiAccount(C):_==="openai"?se=await I.createOpenAIAccount(C):_==="droid"?se=await I.createDroidAccount(C):se=await I.createGeminiAccount(C),xe("success",se)}catch(Te){const C=((i=(pe=Te.response)==null?void 0:pe.data)==null?void 0:i.error)||Te.message||"账户创建失败",_=((oe=(ge=Te.response)==null?void 0:ge.data)==null?void 0:oe.suggestion)||"",se=((De=(_e=Te.response)==null?void 0:_e.data)==null?void 0:De.errorDetails)||null;let Y=C;_&&(Y+=` ${_}`),se&&se.error_description?Y+=` 详细信息: ${se.error_description}`:se&&se.error&&se.error.message&&(Y+=` 详细信息: ${se.error.message}`),z(Y,"error","",8e3)}finally{re.value=!1}},Le=async()=>{var t,ae,pe,i,ge,oe,_e,De;T.value.name="",T.value.accessToken="",T.value.refreshToken="",T.value.apiUrl="",T.value.apiKey="",T.value.apiKeys="";let d=!1;if((!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称",d=!0),s.value.platform==="claude-console"&&((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",d=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)),s.value.platform==="ccr"&&((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",d=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)),s.value.platform==="openai-responses"?((!s.value.baseApi||s.value.baseApi.trim()==="")&&(T.value.baseApi="请填写 API 基础地址",d=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API 密钥",d=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(T.value.accessKeyId="请填写 AWS 访问密钥 ID",d=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(T.value.secretAccessKey="请填写 AWS 秘密访问密钥",d=!0),(!s.value.region||s.value.region.trim()==="")&&(T.value.region="请选择 AWS 区域",d=!0)):s.value.platform==="azure_openai"?((!s.value.azureEndpoint||s.value.azureEndpoint.trim()==="")&&(T.value.azureEndpoint="请填写 Azure Endpoint",d=!0),(!s.value.deploymentName||s.value.deploymentName.trim()==="")&&(T.value.deploymentName="请填写部署名称",d=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)):s.value.addType==="manual"?s.value.platform==="openai"?(!s.value.refreshToken||s.value.refreshToken.trim()==="")&&(T.value.refreshToken="请填写 Refresh Token",d=!0):s.value.platform==="gemini"?(!s.value.accessToken||s.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0):s.value.platform==="droid"?((!s.value.accessToken||s.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0),(!s.value.refreshToken||s.value.refreshToken.trim()==="")&&(T.value.refreshToken="请填写 Refresh Token",d=!0)):s.value.platform==="claude"&&(!s.value.accessToken||s.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0):s.value.addType==="apikey"&&(s.value.platform==="gemini-api"?((!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0),!s.value.baseUrl||s.value.baseUrl.trim()===""?(T.value.baseUrl="请填写 API 基础地址",d=!0):s.value.baseUrl.trim().endsWith("/models")||(T.value.baseUrl="API 基础地址必须以 /models 结尾",d=!0)):ie(s.value.apiKeysInput).length===0&&(T.value.apiKeys="请至少填写一个 API Key",d=!0)),s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)&&(z("请选择一个分组","error"),d=!0),s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!d){re.value=!0;try{const Te=ee(s.value.proxy),C={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,expiresAt:s.value.expiresAt||void 0,proxy:Te};if(s.value.platform==="claude"){const se=s.value.refreshToken?6e5:31536e6;s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=yt()),C.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+se,scopes:[]},C.priority=s.value.priority||50,C.autoStopOnWarning=s.value.autoStopOnWarning||!1,C.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,C.useUnifiedClientId=s.value.useUnifiedClientId||!1,C.unifiedClientId=s.value.unifiedClientId||"",C.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const se=s.value.refreshToken?6e5:31536e6;C.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+se},s.value.projectId&&(C.projectId=s.value.projectId),C.priority=s.value.priority||50}else if(s.value.platform==="openai"){const se=s.value.refreshToken?6e5:31536e6;C.openaiOauth={idToken:"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken,expires_in:Math.floor(se/1e3)},C.accountInfo={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1},C.needsImmediateRefresh=!0,C.requireRefreshSuccess=!0,C.priority=s.value.priority||50}else if(s.value.platform==="droid")if(C.priority=s.value.priority||50,C.endpointType=s.value.endpointType||"anthropic",C.platform="droid",s.value.addType==="apikey"){const se=ie(s.value.apiKeysInput);C.apiKeys=se,C.authenticationMethod="api_key",C.isActive=!0,C.schedulable=!0}else{const se=((t=s.value.accessToken)==null?void 0:t.trim())||"",Y=((ae=s.value.refreshToken)==null?void 0:ae.trim())||"",me=new Date(Date.now()+8*60*60*1e3).toISOString();C.accessToken=se,C.refreshToken=Y,C.expiresAt=me,C.expiresIn=8*60*60,C.tokenType="Bearer",C.authenticationMethod="manual"}else s.value.platform==="claude-console"||s.value.platform==="ccr"?(C.apiUrl=s.value.apiUrl,C.apiKey=s.value.apiKey,C.priority=s.value.priority||50,C.supportedModels=Ee()||{},C.userAgent=s.value.userAgent||null,C.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0,C.dailyQuota=s.value.dailyQuota||0,C.quotaResetTime=s.value.quotaResetTime||"00:00",C.maxConcurrentTasks=s.value.maxConcurrentTasks||0):s.value.platform==="openai-responses"?(C.baseApi=s.value.baseApi,C.apiKey=s.value.apiKey,C.userAgent=s.value.userAgent||"",C.priority=s.value.priority||50,C.rateLimitDuration=60,C.dailyQuota=s.value.dailyQuota||0,C.quotaResetTime=s.value.quotaResetTime||"00:00"):s.value.platform==="gemini-api"?(C.baseUrl=s.value.baseUrl||"https://generativelanguage.googleapis.com",C.apiKey=s.value.apiKey,C.priority=s.value.priority||50,C.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[]):s.value.platform==="bedrock"?(C.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},C.region=s.value.region,C.defaultModel=s.value.defaultModel||null,C.smallFastModel=s.value.smallFastModel||null,C.priority=s.value.priority||50,C.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="azure_openai"&&(C.azureEndpoint=s.value.azureEndpoint,C.apiKey=s.value.apiKey,C.apiVersion=s.value.apiVersion||"2024-02-01",C.deploymentName=s.value.deploymentName,C.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[],C.priority=s.value.priority||50,C.isActive=s.value.isActive!==!1,C.schedulable=s.value.schedulable!==!1);let _;if(s.value.platform==="claude")_=await I.createClaudeAccount(C);else if(s.value.platform==="claude-console"||s.value.platform==="ccr")_=await I.createClaudeConsoleAccount(C);else if(s.value.platform==="droid")_=await I.createDroidAccount(C);else if(s.value.platform==="openai-responses")_=await I.createOpenAIResponsesAccount(C);else if(s.value.platform==="bedrock")_=await I.createBedrockAccount(C);else if(s.value.platform==="openai")_=await I.createOpenAIAccount(C);else if(s.value.platform==="azure_openai")_=await I.createAzureOpenAIAccount(C);else if(s.value.platform==="gemini")_=await I.createGeminiAccount(C);else if(s.value.platform==="gemini-api")_=await I.createGeminiApiAccount(C);else throw new Error(`不支持的平台: ${s.value.platform}`);xe("success",_)}catch(Te){const C=((i=(pe=Te.response)==null?void 0:pe.data)==null?void 0:i.error)||Te.message||"账户创建失败",_=((oe=(ge=Te.response)==null?void 0:ge.data)==null?void 0:oe.suggestion)||"",se=((De=(_e=Te.response)==null?void 0:_e.data)==null?void 0:De.errorDetails)||null;let Y=C;_&&(Y+=` ${_}`),se&&se.error_description?Y+=` 详细信息: ${se.error_description}`:se&&se.error&&se.error.message&&(Y+=` 详细信息: ${se.error.message}`),z(Y,"error","",8e3)}finally{re.value=!1}}},Pt=async()=>{var d,t,ae,pe,i,ge,oe,_e,De,Te;if(T.value.name="",T.value.apiKeys="",T.value.baseUrl="",!s.value.name||s.value.name.trim()===""){T.value.name="请填写账户名称";return}if(s.value.platform==="gemini-api"){const C=((d=s.value.baseUrl)==null?void 0:d.trim())||"";if(!C){T.value.baseUrl="请填写 API 基础地址";return}if(!C.endsWith("/models")){T.value.baseUrl="API 基础地址必须以 /models 结尾";return}}if(s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)){z("请选择一个分组","error");return}if(s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await A("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){re.value=!0;try{const C=ee(s.value.proxy),_={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,expiresAt:s.value.expiresAt||void 0,proxy:C};if(s.value.accessToken||s.value.refreshToken){const se=((t=s.value.accessToken)==null?void 0:t.trim())||"",Y=((ae=s.value.refreshToken)==null?void 0:ae.trim())||"";if(g.account.platform==="claude"){const me=s.value.refreshToken?6e5:31536e6;_.claudeAiOauth={accessToken:se||"",refreshToken:Y||"",expiresAt:Date.now()+me,scopes:g.account.scopes||[]}}else if(g.account.platform==="gemini"){const me=s.value.refreshToken?6e5:31536e6;_.geminiOauth={access_token:se||"",refresh_token:Y||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+me}}else if(g.account.platform==="openai"){const me=s.value.refreshToken?6e5:31536e6;_.openaiOauth={idToken:"",accessToken:se||"",refreshToken:Y||"",expires_in:Math.floor(me/1e3)},Y&&Y!==g.account.refreshToken&&(_.needsImmediateRefresh=!0,_.requireRefreshSuccess=!0)}else g.account.platform==="droid"&&(se&&(_.accessToken=se),Y&&(_.refreshToken=Y))}if(g.account.platform==="droid"){const se=((pe=s.value.apiKeysInput)==null?void 0:pe.trim())||"",Y=s.value.apiKeyUpdateMode||"append";if(Y==="delete"){if(!se){T.value.apiKeys="请填写需要删除的 API Key",re.value=!1;return}const me=ie(se);if(me.length===0){T.value.apiKeys="请填写需要删除的 API Key",re.value=!1;return}_.removeApiKeys=me,_.apiKeyUpdateMode="delete"}else{if(se){const me=ie(se);if(me.length===0){T.value.apiKeys="请至少填写一个 API Key",re.value=!1;return}_.apiKeys=me}else Y==="replace"&&(_.apiKeys=[]);(Y!=="append"||se)&&(_.apiKeyUpdateMode=Y)}Ze.value&&(_.authenticationMethod="api_key")}if(g.account.platform==="gemini"&&(_.projectId=s.value.projectId||""),g.account.platform==="droid"&&(_.priority=s.value.priority||50,_.endpointType=s.value.endpointType||"anthropic"),g.account.platform==="claude"&&(s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=yt()),_.priority=s.value.priority||50,_.autoStopOnWarning=s.value.autoStopOnWarning||!1,_.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,_.useUnifiedClientId=s.value.useUnifiedClientId||!1,_.unifiedClientId=s.value.unifiedClientId||"",_.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),g.account.platform==="openai"&&(_.priority=s.value.priority||50),g.account.platform==="gemini"&&(_.priority=s.value.priority||50),g.account.platform==="claude-console"&&(_.apiUrl=s.value.apiUrl,s.value.apiKey&&(_.apiKey=s.value.apiKey),_.priority=s.value.priority||50,_.supportedModels=Ee()||{},_.userAgent=s.value.userAgent||null,_.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0,_.dailyQuota=s.value.dailyQuota||0,_.quotaResetTime=s.value.quotaResetTime||"00:00",_.maxConcurrentTasks=s.value.maxConcurrentTasks||0),g.account.platform==="openai-responses"&&(_.baseApi=s.value.baseApi,s.value.apiKey&&(_.apiKey=s.value.apiKey),_.userAgent=s.value.userAgent||"",_.priority=s.value.priority||50,_.dailyQuota=s.value.dailyQuota||0,_.quotaResetTime=s.value.quotaResetTime||"00:00"),g.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(_.awsCredentials={},s.value.accessKeyId&&(_.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(_.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(_.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(_.region=s.value.region),_.defaultModel=s.value.defaultModel||null,_.smallFastModel=s.value.smallFastModel||null,_.priority=s.value.priority||50,_.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),g.account.platform==="azure_openai"&&(_.azureEndpoint=s.value.azureEndpoint,_.apiVersion=s.value.apiVersion||"2024-02-01",_.deploymentName=s.value.deploymentName,_.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[],_.priority=s.value.priority||50,s.value.apiKey&&s.value.apiKey.trim()&&(_.apiKey=s.value.apiKey)),g.account.platform==="gemini-api"&&(_.baseUrl=s.value.baseUrl||"https://generativelanguage.googleapis.com",s.value.apiKey&&s.value.apiKey.trim()&&(_.apiKey=s.value.apiKey),_.priority=s.value.priority||50,_.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[]),g.account.platform==="claude")await I.updateClaudeAccount(g.account.id,_);else if(g.account.platform==="claude-console")await I.updateClaudeConsoleAccount(g.account.id,_);else if(g.account.platform==="openai-responses")await I.updateOpenAIResponsesAccount(g.account.id,_);else if(g.account.platform==="bedrock")await I.updateBedrockAccount(g.account.id,_);else if(g.account.platform==="openai")await I.updateOpenAIAccount(g.account.id,_);else if(g.account.platform==="azure_openai")await I.updateAzureOpenAIAccount(g.account.id,_);else if(g.account.platform==="gemini")await I.updateGeminiAccount(g.account.id,_);else if(g.account.platform==="gemini-api")await I.updateGeminiApiAccount(g.account.id,_);else if(g.account.platform==="droid")await I.updateDroidAccount(g.account.id,_);else throw new Error(`不支持的平台: ${g.account.platform}`);xe("success")}catch(C){const _=((ge=(i=C.response)==null?void 0:i.data)==null?void 0:ge.error)||C.message||"账户更新失败",se=((_e=(oe=C.response)==null?void 0:oe.data)==null?void 0:_e.suggestion)||"",Y=((Te=(De=C.response)==null?void 0:De.data)==null?void 0:Te.errorDetails)||null;let me=_;se&&(me+=` ${se}`),Y&&Y.error_description?me+=` 详细信息: ${Y.error_description}`:Y&&Y.error&&Y.error.message&&(me+=` 详细信息: ${Y.error.message}`),z(me,"error","",8e3)}finally{re.value=!1}}};ye(()=>s.value.name,()=>{var d;T.value.name&&((d=s.value.name)!=null&&d.trim())&&(T.value.name="")}),ye(()=>s.value.accessToken,()=>{var d;T.value.accessToken&&((d=s.value.accessToken)!=null&&d.trim())&&(T.value.accessToken="")}),ye(()=>s.value.refreshToken,()=>{var d;T.value.refreshToken&&((d=s.value.refreshToken)!=null&&d.trim())&&(T.value.refreshToken="")}),ye(()=>s.value.apiUrl,()=>{var d;T.value.apiUrl&&((d=s.value.apiUrl)!=null&&d.trim())&&(T.value.apiUrl="")}),ye(()=>s.value.apiKey,()=>{var d;T.value.apiKey&&((d=s.value.apiKey)!=null&&d.trim())&&(T.value.apiKey="")}),ye(()=>s.value.azureEndpoint,()=>{var d;T.value.azureEndpoint&&((d=s.value.azureEndpoint)!=null&&d.trim())&&(T.value.azureEndpoint="")}),ye(()=>s.value.deploymentName,()=>{var d;T.value.deploymentName&&((d=s.value.deploymentName)!=null&&d.trim())&&(T.value.deploymentName="")});const dt=U([]),et=U(!1),at=U(!1),ct=le(()=>{let d=s.value.platform;return s.value.platform==="claude-console"||s.value.platform==="ccr"?d="claude":s.value.platform==="openai-responses"?d="openai":s.value.platform==="gemini-api"&&(d="gemini"),dt.value.filter(t=>t.platform===d)}),Fe=async()=>{et.value=!0;try{const d=await L.get("/admin/account-groups");dt.value=d.data||[]}catch{z("加载分组列表失败","error"),dt.value=[]}finally{et.value=!1}},We=async()=>{await Fe(),z("分组列表已刷新","success")},rt=()=>{at.value=!0},At=async()=>{await Fe()},Ct=async()=>{var t;if(!((t=g.account)!=null&&t.id))return;const d=[typeof I.fetchDroidAccounts=="function"?I.fetchDroidAccounts:null,typeof I.fetchAllAccounts=="function"?I.fetchAllAccounts:null].filter(Boolean);for(const ae of d)try{await ae();return}catch(pe){console.error("刷新账户列表失败:",pe)}};ye(()=>s.value.platform,d=>{d==="claude-console"||d==="ccr"||d==="bedrock"||d==="openai-responses"?s.value.addType="manual":d==="claude"||d==="gemini"||d==="openai"?s.value.addType="oauth":(d==="gemini-api"||d==="azure_openai")&&(s.value.addType="apikey"),s.value.accountType==="group"&&(s.value.groupId="",s.value.groupIds=[])}),ye(()=>s.value.groupIds,d=>{s.value.accountType==="group"&&(d&&d.length>0?s.value.groupId=d[0]:s.value.groupId="")},{deep:!0}),ye(()=>s.value.addType,(d,t)=>{d!==t&&(d==="apikey"?(s.value.accessToken="",s.value.refreshToken="",T.value.accessToken="",T.value.refreshToken="",s.value.authenticationMethod="api_key",s.value.apiKeyUpdateMode="append"):t==="apikey"&&(s.value.apiKeysInput="",s.value.apiKeyUpdateMode="append",T.value.apiKeys="",O.value||(s.value.authenticationMethod="")))}),ye(()=>s.value.apiKeyUpdateMode,(d,t)=>{d!==t&&T.value.apiKeys&&(T.value.apiKeys="")}),ye(()=>s.value.apiKeysInput,d=>{if(!T.value.apiKeys)return;const t=ie(d),ae=s.value.apiKeyUpdateMode;if(ae==="append"&&t.length>0){T.value.apiKeys="";return}if(ae==="replace"){(t.length>0||!d||d.trim()==="")&&(T.value.apiKeys="");return}ae==="delete"&&t.length>0&&(T.value.apiKeys="")}),ye(m,d=>{if(!d||typeof d!="string")return;const t=d.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const i=new URL(t).searchParams.get("code");i?(m.value=i,z("成功提取授权码!","success")):z("URL 中未找到授权码参数,请检查链接是否正确","error")}catch{z("链接格式错误,请检查是否为完整的 URL","error")}else z("请粘贴以 http://localhost:45462 开头的链接","error")}),ye(()=>s.value.platform,d=>{O.value||xe("platform-changed",d)}),ye(()=>s.value.accountType,d=>{d==="group"&&dt.value.length===0&&Fe()}),ye(()=>s.value.groupId,d=>{d==="__new__"&&(s.value.groupId="",at.value=!0)});const Ut=()=>{M.value.push({from:"",to:""})},lt=d=>{M.value.splice(d,1)},Ue=(d,t)=>{if(M.value.some(pe=>pe.from===d)){z(`模型 ${d} 的映射已存在`,"info");return}M.value.push({from:d,to:t}),z(`已添加映射: ${d} → ${t}`,"success")},Ee=()=>{const d={};return Ce.value==="whitelist"?q.value.forEach(t=>{d[t]=t}):M.value.forEach(t=>{t.from&&t.to&&(d[t.from]=t.to)}),Object.keys(d).length>0?d:null};ye(()=>g.account,d=>{if(d){ue();const t=Z(d.proxy),ae=typeof d.authenticationMethod=="string"?d.authenticationMethod.trim().toLowerCase():"",pe=ae==="api_key"?"apikey":ae==="manual"?"manual":"oauth";let i="";d.accountType==="group"&&(i=d.groupId||d.groupInfo&&d.groupInfo.id||"");let ge="claude_max";if(d.subscriptionInfo){const oe=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;oe.accountType?ge=oe.accountType:oe.hasClaudeMax?ge="claude_max":oe.hasClaudePro?ge="claude_pro":ge="claude_free"}s.value={platform:d.platform,addType:pe,name:d.name,description:d.description||"",accountType:d.accountType||"shared",subscriptionType:ge,autoStopOnWarning:d.autoStopOnWarning||!1,useUnifiedUserAgent:d.useUnifiedUserAgent||!1,useUnifiedClientId:d.useUnifiedClientId||!1,unifiedClientId:d.unifiedClientId||"",groupId:i,groupIds:[],projectId:d.projectId||"",accessToken:"",refreshToken:"",authenticationMethod:d.authenticationMethod||"",apiKeysInput:"",apiKeyUpdateMode:"append",proxy:t,apiUrl:d.apiUrl||"",apiKey:"",priority:d.priority||50,supportedModels:(()=>{const oe=d.supportedModels;return oe?typeof oe=="object"&&!Array.isArray(oe)?Object.keys(oe):Array.isArray(oe)?oe:[]:[]})(),userAgent:d.userAgent||"",enableRateLimit:!!(d.rateLimitDuration&&d.rateLimitDuration>0),rateLimitDuration:d.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:d.region||"",sessionToken:"",defaultModel:d.defaultModel||"",smallFastModel:d.smallFastModel||"",azureEndpoint:d.azureEndpoint||"",apiVersion:d.apiVersion||"",deploymentName:d.deploymentName||"",baseApi:d.baseApi||"",baseUrl:d.baseUrl||"https://generativelanguage.googleapis.com",dailyQuota:d.dailyQuota||0,dailyUsage:d.dailyUsage||0,quotaResetTime:d.quotaResetTime||"00:00",maxConcurrentTasks:d.maxConcurrentTasks||0},d.platform==="claude-console"&&Xe(),d.accountType==="group"&&Fe().then(async()=>{const oe=[];if(d.groupInfos&&Array.isArray(d.groupInfos)&&d.groupInfos.length>0)d.groupInfos.forEach(_e=>{_e&&_e.id&&oe.push(_e.id)}),oe.length>0&&(s.value.groupId=oe[0]);else if(d.groupInfo&&d.groupInfo.id)s.value.groupId=d.groupInfo.id,oe.push(d.groupInfo.id);else if(d.groupId)s.value.groupId=d.groupId,oe.push(d.groupId);else if(d.groupIds&&Array.isArray(d.groupIds)&&d.groupIds.length>0)s.value.groupId=d.groupIds[0],oe.push(...d.groupIds);else{const _e=dt.value.map(async De=>{try{((await L.get(`/admin/account-groups/${De.id}/members`)).data||[]).some(_=>_.id===d.id)&&(oe.push(De.id),s.value.groupId||(s.value.groupId=De.id))}catch{}});await Promise.all(_e)}s.value.groupIds=oe})}},{immediate:!0});const ts=async()=>{try{const d=await L.get("/admin/claude-code-version");d.success&&d.userAgent?E.value=d.userAgent:E.value=""}catch{E.value=""}},ss=async()=>{P.value=!0;try{(await L.post("/admin/claude-code-version/clear")).success?(E.value="",z("统一User-Agent缓存已清除","success")):z("清除缓存失败","error")}catch(d){z("清除缓存失败:"+(d.message||"未知错误"),"error")}finally{P.value=!1}},yt=()=>{const d=new Uint8Array(32);return crypto.getRandomValues(d),Array.from(d,t=>t.toString(16).padStart(2,"0")).join("")},He=()=>{s.value.unifiedClientId=yt(),z("已生成新的客户端标识","success")},as=()=>{s.value.useUnifiedClientId&&(s.value.useUnifiedUserAgent=!0,s.value.unifiedClientId||(s.value.unifiedClientId=yt()))},ut=le(()=>{const d=new Date;return d.setMinutes(d.getMinutes()+1),d.toISOString().slice(0,16)}),It=()=>{if(!s.value.expireDuration){s.value.expiresAt=null;return}if(s.value.expireDuration==="custom")return;const d=new Date,ae=s.value.expireDuration.match(/(\d+)([d])/);if(ae){const[,pe,i]=ae,ge=parseInt(pe);i==="d"&&d.setDate(d.getDate()+ge),s.value.expiresAt=d.toISOString()}},zt=()=>{s.value.customExpireDate&&(s.value.expiresAt=new Date(s.value.customExpireDate).toISOString())},rs=d=>d?new Date(d).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"";return Xt(()=>{var d;N.value=de(s.value.platform),O.value&&ue(),ts(),O.value&&((d=g.account)==null?void 0:d.platform)==="claude-console"&&Xe()}),ye(()=>s.value.platform,d=>{d==="claude"&&ts()}),(d,t)=>{var ae,pe;return o(),qe(Kt,{to:"body"},[X.value?(o(),n("div",ko,[e("div",ho,[e("div",wo,[e("div",$o,[t[154]||(t[154]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",Ao,p(O.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=i=>d.$emit("close"))},t[155]||(t[155]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!O.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(o(),n("div",Co,[e("div",Uo,[e("div",Io,[e("div",{class:K(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",H.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[156]||(t[156]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[158]||(t[158]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",To,[e("div",{class:K(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",H.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[157]||(t[157]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):y("",!0),H.value===1&&!O.value?(o(),n("div",Ko,[e("div",Po,[O.value?y("",!0):(o(),n("div",_o,[t[196]||(t[196]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择平台",-1)),e("div",Mo,[e("div",Do,[e("div",{class:K(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[N.value==="claude"?"border-indigo-500 bg-gradient-to-br from-indigo-50 to-purple-50 shadow-md dark:from-indigo-900/20 dark:to-purple-900/20":"border-gray-200 bg-white hover:border-indigo-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-indigo-600"]]),onClick:t[1]||(t[1]=i=>Ge("claude"))},[e("div",So,[e("div",jo,[t[160]||(t[160]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-indigo-500 to-purple-600"},[e("i",{class:"fas fa-brain text-sm text-white"})],-1)),N.value==="claude"?(o(),n("div",zo,t[159]||(t[159]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)]),t[161]||(t[161]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Claude ",-1)),t[162]||(t[162]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Anthropic",-1))])],2),e("div",{class:K(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[N.value==="openai"?"border-emerald-500 bg-gradient-to-br from-emerald-50 to-teal-50 shadow-md dark:from-emerald-900/20 dark:to-teal-900/20":"border-gray-200 bg-white hover:border-emerald-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-emerald-600"]]),onClick:t[2]||(t[2]=i=>Ge("openai"))},[e("div",Ro,[e("div",Vo,[t[164]||(t[164]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-emerald-500 to-teal-600"},[e("svg",{class:"h-5 w-5 text-white",fill:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.8956zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4069-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"})])],-1)),N.value==="openai"?(o(),n("div",Oo,t[163]||(t[163]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)]),t[165]||(t[165]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," OpenAI ",-1)),t[166]||(t[166]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"GPT 系列",-1))])],2),e("div",{class:K(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[N.value==="gemini"?"border-blue-500 bg-gradient-to-br from-blue-50 to-indigo-50 shadow-md dark:from-blue-900/20 dark:to-indigo-900/20":"border-gray-200 bg-white hover:border-blue-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-blue-600"]]),onClick:t[3]||(t[3]=i=>Ge("gemini"))},[e("div",Lo,[e("div",Eo,[t[168]||(t[168]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-blue-500 to-indigo-600"},[e("i",{class:"fab fa-google text-sm text-white"})],-1)),N.value==="gemini"?(o(),n("div",No,t[167]||(t[167]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)]),t[169]||(t[169]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Gemini ",-1)),t[170]||(t[170]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Google AI",-1))])],2),e("div",{class:K(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[N.value==="droid"?"border-rose-500 bg-gradient-to-br from-rose-50 to-orange-50 shadow-md dark:from-rose-900/20 dark:to-orange-900/20":"border-gray-200 bg-white hover:border-rose-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-rose-600"]]),onClick:t[4]||(t[4]=i=>Ge("droid"))},[e("div",qo,[e("div",Go,[t[172]||(t[172]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-rose-500 to-orange-500"},[e("i",{class:"fas fa-robot text-sm text-white"})],-1)),N.value==="droid"?(o(),n("div",Fo,t[171]||(t[171]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)]),t[173]||(t[173]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Droid ",-1)),t[174]||(t[174]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Claude Droid",-1))])],2)]),N.value?(o(),n("div",Wo,[t[195]||(t[195]=e("p",{class:"mb-2 text-xs font-medium text-gray-700 dark:text-gray-300"}," 选择具体平台类型: ",-1)),e("div",Qo,[N.value==="claude"?(o(),n(he,{key:0},[e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="claude"?"border-indigo-500 bg-indigo-50 dark:border-indigo-400 dark:bg-indigo-900/30":"border-gray-300 bg-white hover:border-indigo-400 hover:bg-indigo-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-indigo-500 dark:hover:bg-indigo-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[5]||(t[5]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"claude"},null,512),[[Ae,s.value.platform]]),t[176]||(t[176]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-brain text-sm text-indigo-600 dark:text-indigo-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Claude Code"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="claude"?(o(),n("div",Bo,t[175]||(t[175]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="claude-console"?"border-purple-500 bg-purple-50 dark:border-purple-400 dark:bg-purple-900/30":"border-gray-300 bg-white hover:border-purple-400 hover:bg-purple-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-purple-500 dark:hover:bg-purple-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[6]||(t[6]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"claude-console"},null,512),[[Ae,s.value.platform]]),t[178]||(t[178]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-terminal text-sm text-purple-600 dark:text-purple-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Claude Console"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"标准API")])],-1)),s.value.platform==="claude-console"?(o(),n("div",Ho,t[177]||(t[177]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="bedrock"?"border-orange-500 bg-orange-50 dark:border-orange-400 dark:bg-orange-900/30":"border-gray-300 bg-white hover:border-orange-400 hover:bg-orange-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-orange-500 dark:hover:bg-orange-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[7]||(t[7]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"bedrock"},null,512),[[Ae,s.value.platform]]),t[180]||(t[180]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-aws text-sm text-orange-600 dark:text-orange-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Bedrock"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"AWS")])],-1)),s.value.platform==="bedrock"?(o(),n("div",Jo,t[179]||(t[179]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="ccr"?"border-cyan-500 bg-cyan-50 dark:border-cyan-400 dark:bg-cyan-900/30":"border-gray-300 bg-white hover:border-cyan-400 hover:bg-cyan-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-cyan-500 dark:hover:bg-cyan-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[8]||(t[8]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"ccr"},null,512),[[Ae,s.value.platform]]),t[182]||(t[182]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-code-branch text-sm text-cyan-600 dark:text-cyan-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"CCR"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Claude Code Router")])],-1)),s.value.platform==="ccr"?(o(),n("div",Yo,t[181]||(t[181]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2)],64)):y("",!0),N.value==="openai"?(o(),n(he,{key:1},[e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="openai"?"border-emerald-500 bg-emerald-50 dark:border-emerald-400 dark:bg-emerald-900/30":"border-gray-300 bg-white hover:border-emerald-400 hover:bg-emerald-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-emerald-500 dark:hover:bg-emerald-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[9]||(t[9]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"openai"},null,512),[[Ae,s.value.platform]]),t[184]||(t[184]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-robot text-sm text-emerald-600 dark:text-emerald-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Codex Cli"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="openai"?(o(),n("div",Zo,t[183]||(t[183]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="openai-responses"?"border-teal-500 bg-teal-50 dark:border-teal-400 dark:bg-teal-900/30":"border-gray-300 bg-white hover:border-teal-400 hover:bg-teal-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-teal-500 dark:hover:bg-teal-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[10]||(t[10]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"openai-responses"},null,512),[[Ae,s.value.platform]]),t[186]||(t[186]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-server text-sm text-teal-600 dark:text-teal-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Responses"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Openai-Responses")])],-1)),s.value.platform==="openai-responses"?(o(),n("div",Xo,t[185]||(t[185]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="azure_openai"?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300 bg-white hover:border-blue-400 hover:bg-blue-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-blue-500 dark:hover:bg-blue-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[11]||(t[11]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"azure_openai"},null,512),[[Ae,s.value.platform]]),t[188]||(t[188]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-microsoft text-sm text-blue-600 dark:text-blue-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Azure"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Azure Openai")])],-1)),s.value.platform==="azure_openai"?(o(),n("div",en,t[187]||(t[187]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2)],64)):y("",!0),N.value==="gemini"?(o(),n(he,{key:2},[e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="gemini"?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300 bg-white hover:border-blue-400 hover:bg-blue-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-blue-500 dark:hover:bg-blue-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[12]||(t[12]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"gemini"},null,512),[[Ae,s.value.platform]]),t[190]||(t[190]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-google text-sm text-blue-600 dark:text-blue-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Gemini Cli"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="gemini"?(o(),n("div",tn,t[189]||(t[189]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2),e("label",{class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="gemini-api"?"border-amber-500 bg-amber-50 dark:border-amber-400 dark:bg-amber-900/30":"border-gray-300 bg-white hover:border-amber-400 hover:bg-amber-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-amber-500 dark:hover:bg-amber-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[13]||(t[13]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"gemini-api"},null,512),[[Ae,s.value.platform]]),t[192]||(t[192]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-key text-sm text-amber-600 dark:text-amber-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Gemini API"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"API Key")])],-1)),s.value.platform==="gemini-api"?(o(),n("div",sn,t[191]||(t[191]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2)],64)):y("",!0),N.value==="droid"?(o(),n("label",{key:3,class:K(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="droid"?"border-rose-500 bg-rose-50 dark:border-rose-400 dark:bg-rose-900/30":"border-gray-300 bg-white hover:border-rose-400 hover:bg-rose-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-rose-500 dark:hover:bg-rose-900/20"]])},[b(e("input",{"onUpdate:modelValue":t[14]||(t[14]=i=>s.value.platform=i),class:"sr-only",type:"radio",value:"droid"},null,512),[[Ae,s.value.platform]]),t[194]||(t[194]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-robot text-sm text-rose-600 dark:text-rose-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Droid 专属"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="droid"?(o(),n("div",an,t[193]||(t[193]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):y("",!0)],2)):y("",!0)])])):y("",!0)])])),!O.value&&s.value.platform!=="claude-console"&&s.value.platform!=="ccr"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"&&s.value.platform!=="gemini-api"?(o(),n("div",rn,[t[201]||(t[201]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",ln,[e("label",on,[b(e("input",{"onUpdate:modelValue":t[15]||(t[15]=i=>s.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[Ae,s.value.addType]]),e("span",nn,[t[197]||(t[197]=k(" OAuth 授权",-1)),s.value.platform==="claude"||s.value.platform==="openai"?(o(),n("span",dn," (用量可视化)")):y("",!0)])]),s.value.platform==="claude"?(o(),n("label",un,[b(e("input",{"onUpdate:modelValue":t[16]||(t[16]=i=>s.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[Ae,s.value.addType]]),t[198]||(t[198]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (效期长)",-1))])):y("",!0),e("label",pn,[b(e("input",{"onUpdate:modelValue":t[17]||(t[17]=i=>s.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[Ae,s.value.addType]]),t[199]||(t[199]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))]),s.value.platform==="droid"?(o(),n("label",gn,[b(e("input",{"onUpdate:modelValue":t[18]||(t[18]=i=>s.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"apikey"},null,512),[[Ae,s.value.addType]]),t[200]||(t[200]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"使用 API Key (支持多个)",-1))])):y("",!0)])])):y("",!0),e("div",null,[t[202]||(t[202]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),b(e("input",{"onUpdate:modelValue":t[19]||(t[19]=i=>s.value.name=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[j,s.value.name]]),T.value.name?(o(),n("p",mn,p(T.value.name),1)):y("",!0)]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":t[20]||(t[20]=i=>s.value.description=i),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[j,s.value.description]])]),e("div",null,[t[207]||(t[207]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",cn,[e("label",yn,[b(e("input",{"onUpdate:modelValue":t[21]||(t[21]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[Ae,s.value.accountType]]),t[204]||(t[204]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",xn,[b(e("input",{"onUpdate:modelValue":t[22]||(t[22]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[Ae,s.value.accountType]]),t[205]||(t[205]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",fn,[b(e("input",{"onUpdate:modelValue":t[23]||(t[23]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[Ae,s.value.accountType]]),t[206]||(t[206]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[208]||(t[208]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),!O.value&&s.value.platform!=="gemini-api"?(o(),n("div",bn,[t[212]||(t[212]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"到期时间 (可选)",-1)),e("div",vn,[b(e("select",{"onUpdate:modelValue":t[24]||(t[24]=i=>s.value.expireDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:It},t[209]||(t[209]=[e("option",{value:""},"永不过期",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$s,s.value.expireDuration]]),s.value.expireDuration==="custom"?(o(),n("div",kn,[b(e("input",{"onUpdate:modelValue":t[25]||(t[25]=i=>s.value.customExpireDate=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:ut.value,type:"datetime-local",onChange:zt},null,40,hn),[[j,s.value.customExpireDate]])])):y("",!0),s.value.expiresAt?(o(),n("p",wn,[t[210]||(t[210]=e("i",{class:"fas fa-calendar-alt mr-1"},null,-1)),k(" 将于 "+p(rs(s.value.expiresAt))+" 过期 ",1)])):(o(),n("p",$n,t[211]||(t[211]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),k(" 账户永不过期 ",-1)])))]),t[213]||(t[213]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置 Claude Max/Pro 订阅的到期时间,到期后将停止调度此账户 ",-1))])):y("",!0),s.value.accountType==="group"?(o(),n("div",An,[t[215]||(t[215]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Cn,[e("div",Un,[e("div",In,[ct.value.length===0?(o(),n("div",Tn," 暂无可用分组 ")):y("",!0),(o(!0),n(he,null,ze(ct.value,i=>(o(),n("label",{key:i.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[b(e("input",{"onUpdate:modelValue":t[26]||(t[26]=ge=>s.value.groupIds=ge),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i.id},null,8,Kn),[[Me,s.value.groupIds]]),e("span",Pn,p(i.name)+" ("+p(i.memberCount||0)+" 个成员) ",1)]))),128)),e("div",{class:"border-t pt-2 dark:border-gray-600"},[e("button",{class:"flex items-center gap-2 text-sm text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",type:"button",onClick:rt},t[214]||(t[214]=[e("i",{class:"fas fa-plus"},null,-1),k(" 新建分组 ",-1)]))])])]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",type:"button",onClick:We},[e("i",{class:K(["fas fa-sync-alt",{"animate-spin":et.value}])},null,2)])])])):y("",!0),s.value.platform==="gemini"?(o(),n("div",_n,[t[216]||(t[216]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[27]||(t[27]=i=>s.value.projectId=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[j,s.value.projectId]]),t[217]||(t[217]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[k(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[k(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),k(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),k("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):y("",!0),s.value.platform==="bedrock"&&!O.value?(o(),n("div",Mn,[e("div",null,[t[218]||(t[218]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),b(e("input",{"onUpdate:modelValue":t[28]||(t[28]=i=>s.value.accessKeyId=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[j,s.value.accessKeyId]]),T.value.accessKeyId?(o(),n("p",Dn,p(T.value.accessKeyId),1)):y("",!0)]),e("div",null,[t[219]||(t[219]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),b(e("input",{"onUpdate:modelValue":t[29]||(t[29]=i=>s.value.secretAccessKey=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[j,s.value.secretAccessKey]]),T.value.secretAccessKey?(o(),n("p",Sn,p(T.value.secretAccessKey),1)):y("",!0)]),e("div",null,[t[220]||(t[220]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),b(e("input",{"onUpdate:modelValue":t[30]||(t[30]=i=>s.value.region=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[j,s.value.region]]),T.value.region?(o(),n("p",jn,p(T.value.region),1)):y("",!0),t[221]||(t[221]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[222]||(t[222]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[31]||(t[31]=i=>s.value.sessionToken=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[j,s.value.sessionToken]]),t[223]||(t[223]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[224]||(t[224]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[32]||(t[32]=i=>s.value.defaultModel=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[j,s.value.defaultModel]]),t[225]||(t[225]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[226]||(t[226]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[227]||(t[227]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[33]||(t[33]=i=>s.value.smallFastModel=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[j,s.value.smallFastModel]]),t[228]||(t[228]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):y("",!0),s.value.platform==="azure_openai"&&!O.value?(o(),n("div",zn,[e("div",null,[t[229]||(t[229]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),b(e("input",{"onUpdate:modelValue":t[34]||(t[34]=i=>s.value.azureEndpoint=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[j,s.value.azureEndpoint]]),T.value.azureEndpoint?(o(),n("p",Rn,p(T.value.azureEndpoint),1)):y("",!0),t[230]||(t[230]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI 资源的终结点 URL,格式:https://your-resource.openai.azure.com ",-1))]),e("div",null,[t[231]||(t[231]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),b(e("input",{"onUpdate:modelValue":t[35]||(t[35]=i=>s.value.apiVersion=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[j,s.value.apiVersion]]),t[232]||(t[232]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[233]||(t[233]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),b(e("input",{"onUpdate:modelValue":t[36]||(t[36]=i=>s.value.deploymentName=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[j,s.value.deploymentName]]),T.value.deploymentName?(o(),n("p",Vn,p(T.value.deploymentName),1)):y("",!0),t[234]||(t[234]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[235]||(t[235]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),b(e("input",{"onUpdate:modelValue":t[37]||(t[37]=i=>s.value.apiKey=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[j,s.value.apiKey]]),T.value.apiKey?(o(),n("p",On,p(T.value.apiKey),1)):y("",!0),t[236]||(t[236]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[237]||(t[237]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Ln,[(o(),n(he,null,ze(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],i=>e("label",{key:i,class:"flex cursor-pointer items-center"},[b(e("input",{"onUpdate:modelValue":t[38]||(t[38]=ge=>s.value.supportedModels=ge),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i},null,8,En),[[Me,s.value.supportedModels]]),e("span",Nn,p(i),1)])),64))]),t[238]||(t[238]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):y("",!0),s.value.platform==="bedrock"&&!O.value?(o(),n("div",qn,[e("div",null,[t[243]||(t[243]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Gn,[e("label",Fn,[b(e("input",{"onUpdate:modelValue":t[39]||(t[39]=i=>s.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.enableRateLimit]]),t[239]||(t[239]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[240]||(t[240]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(o(),n("div",Wn,[t[241]||(t[241]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),b(e("input",{"onUpdate:modelValue":t[40]||(t[40]=i=>s.value.rateLimitDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]]),t[242]||(t[242]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):y("",!0)])])):y("",!0),(s.value.platform==="claude-console"||s.value.platform==="ccr")&&!O.value?(o(),n("div",Qn,[e("div",null,[t[244]||(t[244]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),b(e("input",{"onUpdate:modelValue":t[41]||(t[41]=i=>s.value.apiUrl=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[j,s.value.apiUrl]]),T.value.apiUrl?(o(),n("p",Bn,p(T.value.apiUrl),1)):y("",!0)]),e("div",null,[t[245]||(t[245]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),b(e("input",{"onUpdate:modelValue":t[42]||(t[42]=i=>s.value.apiKey=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[j,s.value.apiKey]]),T.value.apiKey?(o(),n("p",Hn,p(T.value.apiKey),1)):y("",!0)]),e("div",Jn,[e("div",null,[t[246]||(t[246]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),b(e("input",{"onUpdate:modelValue":t[43]||(t[43]=i=>s.value.dailyQuota=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[j,s.value.dailyQuota,void 0,{number:!0}]]),t[247]||(t[247]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[248]||(t[248]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),b(e("input",{"onUpdate:modelValue":t[44]||(t[44]=i=>s.value.quotaResetTime=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[j,s.value.quotaResetTime]]),t[249]||(t[249]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 每日自动重置额度的时间 ",-1))])]),e("div",null,[t[250]||(t[250]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 最大并发任务数 ",-1)),b(e("input",{"onUpdate:modelValue":t[45]||(t[45]=i=>s.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[j,s.value.maxConcurrentTasks,void 0,{number:!0}]]),t[251]||(t[251]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))]),e("div",null,[t[259]||(t[259]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型限制 (可选)",-1)),e("div",Yn,[e("button",{class:K(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",Ce.value==="whitelist"?"bg-blue-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-blue-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-blue-500"]),type:"button",onClick:t[46]||(t[46]=i=>Ce.value="whitelist")},t[252]||(t[252]=[e("i",{class:"fas fa-check-circle mr-2"},null,-1),k(" 模型白名单 ",-1)]),2),e("button",{class:K(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",Ce.value==="mapping"?"bg-purple-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-purple-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-purple-500"]),type:"button",onClick:t[47]||(t[47]=i=>Ce.value="mapping")},t[253]||(t[253]=[e("i",{class:"fas fa-random mr-2"},null,-1),k(" 模型映射 ",-1)]),2)]),Ce.value==="whitelist"?(o(),n("div",Zn,[t[254]||(t[254]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 选择允许使用此账户的模型。留空表示支持所有模型。 ")])],-1)),e("div",Xn,[(o(),n(he,null,ze($,i=>e("label",{key:i.value,class:K(["flex cursor-pointer items-center rounded-lg border p-3 transition-all hover:bg-gray-50 dark:border-gray-600 dark:hover:bg-gray-700",q.value.includes(i.value)?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300"])},[b(e("input",{"onUpdate:modelValue":t[48]||(t[48]=ge=>q.value=ge),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"checkbox",value:i.value},null,8,ei),[[Me,q.value]]),e("span",ti,p(i.label),1)],2)),64))]),e("p",si,[k(" 已选择 "+p(q.value.length)+" 个模型 ",1),q.value.length===0?(o(),n("span",ai,"(支持所有模型)")):y("",!0)])])):(o(),n("div",ri,[t[258]||(t[258]=e("div",{class:"mb-3 rounded-lg bg-purple-50 p-3 dark:bg-purple-900/30"},[e("p",{class:"text-xs text-purple-700 dark:text-purple-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 配置模型映射关系。左侧是客户端请求的模型,右侧是实际发送给API的模型。 ")])],-1)),e("div",li,[(o(!0),n(he,null,ze(M.value,(i,ge)=>(o(),n("div",{key:ge,class:"flex items-center gap-2"},[b(e("input",{"onUpdate:modelValue":oe=>i.from=oe,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,oi),[[j,i.from]]),t[256]||(t[256]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),b(e("input",{"onUpdate:modelValue":oe=>i.to=oe,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,ni),[[j,i.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:oe=>lt(ge)},t[255]||(t[255]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ii)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:Ut},t[257]||(t[257]=[e("i",{class:"fas fa-plus mr-2"},null,-1),k(" 添加模型映射 ",-1)])),e("div",di,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[49]||(t[49]=i=>Ue("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-indigo-100 px-3 py-1 text-xs text-indigo-700 transition-colors hover:bg-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50",type:"button",onClick:t[50]||(t[50]=i=>Ue("claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929"))}," + Sonnet 4.5 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[51]||(t[51]=i=>Ue("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[52]||(t[52]=i=>Ue("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-emerald-100 px-3 py-1 text-xs text-emerald-700 transition-colors hover:bg-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:hover:bg-emerald-900/50",type:"button",onClick:t[53]||(t[53]=i=>Ue("claude-haiku-4-5-20251001","claude-haiku-4-5-20251001"))}," + Haiku 4.5 "),e("button",{class:"rounded-lg bg-cyan-100 px-3 py-1 text-xs text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:hover:bg-cyan-900/50",type:"button",onClick:t[54]||(t[54]=i=>Ue("deepseek-chat","deepseek-chat"))}," + DeepSeek "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[55]||(t[55]=i=>Ue("Qwen","Qwen"))}," + Qwen "),e("button",{class:"rounded-lg bg-pink-100 px-3 py-1 text-xs text-pink-700 transition-colors hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400 dark:hover:bg-pink-900/50",type:"button",onClick:t[56]||(t[56]=i=>Ue("Kimi","Kimi"))}," + Kimi "),e("button",{class:"rounded-lg bg-teal-100 px-3 py-1 text-xs text-teal-700 transition-colors hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400 dark:hover:bg-teal-900/50",type:"button",onClick:t[57]||(t[57]=i=>Ue("GLM","GLM"))}," + GLM "),e("button",{class:"rounded-lg bg-amber-100 px-3 py-1 text-xs text-amber-700 transition-colors hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:hover:bg-amber-900/50",type:"button",onClick:t[58]||(t[58]=i=>Ue("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus → Sonnet ")])]))]),e("div",null,[t[260]||(t[260]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[59]||(t[59]=i=>s.value.userAgent=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[j,s.value.userAgent]]),t[261]||(t[261]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[266]||(t[266]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",ui,[e("label",pi,[b(e("input",{"onUpdate:modelValue":t[60]||(t[60]=i=>s.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.enableRateLimit]]),t[262]||(t[262]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[263]||(t[263]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(o(),n("div",gi,[t[264]||(t[264]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),b(e("input",{"onUpdate:modelValue":t[61]||(t[61]=i=>s.value.rateLimitDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]]),t[265]||(t[265]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):y("",!0)])])):y("",!0),s.value.platform==="openai-responses"&&!O.value?(o(),n("div",mi,[e("div",null,[t[267]||(t[267]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),b(e("input",{"onUpdate:modelValue":t[62]||(t[62]=i=>s.value.baseApi=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"https://api.example.com/v1",required:"",type:"url"},null,512),[[j,s.value.baseApi]]),t[268]||(t[268]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方 OpenAI 兼容 API 的基础地址,不要包含具体路径 ",-1))]),e("div",null,[t[269]||(t[269]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",ci,[b(e("input",{"onUpdate:modelValue":t[63]||(t[63]=i=>s.value.apiKey=i),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"sk-xxxxxxxxxxxx",required:"",type:W.value?"text":"password"},null,8,yi),[[Zt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:t[64]||(t[64]=i=>W.value=!W.value)},[e("i",{class:K(W.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[270]||(t[270]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方服务提供的 API 密钥 ",-1))]),e("div",null,[t[271]||(t[271]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[65]||(t[65]=i=>s.value.userAgent=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传原始请求的 User-Agent",type:"text"},null,512),[[j,s.value.userAgent]]),t[272]||(t[272]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 可选项。如果设置,所有请求将使用此 User-Agent;否则透传客户端的 User-Agent ",-1))]),b(e("input",{"onUpdate:modelValue":t[66]||(t[66]=i=>s.value.rateLimitDuration=i),type:"hidden",value:"60"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]])])):y("",!0),s.value.platform==="gemini-api"&&!O.value?(o(),n("div",xi,[e("div",null,[t[273]||(t[273]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),b(e("input",{"onUpdate:modelValue":t[67]||(t[67]=i=>s.value.baseUrl=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500 dark:border-red-400":T.value.baseUrl}]),placeholder:"https://generativelanguage.googleapis.com/v1beta/models",required:"",type:"url"},null,2),[[j,s.value.baseUrl]]),T.value.baseUrl?(o(),n("p",fi,p(T.value.baseUrl),1)):y("",!0),t[274]||(t[274]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},[k(" 填写 API 基础地址,必须以 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/models"),k(" 结尾。系统会自动拼接 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/{model}:generateContent")],-1)),t[275]||(t[275]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[k(" 官方: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://generativelanguage.googleapis.com/v1beta/models")],-1)),t[276]||(t[276]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[k(" 上游为 CRS: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://your-crs.com/gemini/v1beta/models")],-1))]),e("div",null,[t[277]||(t[277]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",bi,[b(e("input",{"onUpdate:modelValue":t[68]||(t[68]=i=>s.value.apiKey=i),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"AIzaSy...",required:"",type:W.value?"text":"password"},null,8,vi),[[Zt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:t[69]||(t[69]=i=>W.value=!W.value)},[e("i",{class:K(W.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[278]||(t[278]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Google AI Studio 获取的 API 密钥 ",-1))])])):y("",!0),s.value.platform==="claude"?(o(),n("div",ki,[t[281]||(t[281]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",hi,[e("label",wi,[b(e("input",{"onUpdate:modelValue":t[70]||(t[70]=i=>s.value.subscriptionType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[Ae,s.value.subscriptionType]]),t[279]||(t[279]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",$i,[b(e("input",{"onUpdate:modelValue":t[71]||(t[71]=i=>s.value.subscriptionType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[Ae,s.value.subscriptionType]]),t[280]||(t[280]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[282]||(t[282]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):y("",!0),s.value.platform==="claude"?(o(),n("div",Ai,[e("label",Ci,[b(e("input",{"onUpdate:modelValue":t[72]||(t[72]=i=>s.value.autoStopOnWarning=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.autoStopOnWarning]]),t[283]||(t[283]=e("div",{class:"ml-3"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 5小时使用量接近限制时自动停止调度 "),e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 当系统检测到账户接近5小时使用限制时,自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。 ")],-1))])])):y("",!0),s.value.platform==="claude"?(o(),n("div",Ui,[e("label",Ii,[b(e("input",{"onUpdate:modelValue":t[73]||(t[73]=i=>s.value.useUnifiedUserAgent=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.useUnifiedUserAgent]]),e("div",Ti,[t[285]||(t[285]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[286]||(t[286]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),E.value?(o(),n("div",Ki,[e("div",Pi,[e("p",_i," 💡 当前统一版本:"+p(E.value),1),e("button",{class:"ml-2 text-xs text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",disabled:P.value,type:"button",onClick:ss},[P.value?(o(),n("div",Si)):(o(),n("i",Di)),k(" "+p(P.value?"清除中...":"清除缓存"),1)],8,Mi)])])):(o(),n("div",ji,t[284]||(t[284]=[e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," ⏳ 等待从 Claude Code 客户端捕获 User-Agent ",-1),e("p",{class:"mt-1 text-xs text-gray-400 dark:text-gray-500"}," 💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户, 或联系开发者检查 User-Agent 格式是否发生变化 ",-1)])))])])])):y("",!0),s.value.platform==="claude"?(o(),n("div",zi,[e("label",Ri,[b(e("input",{"onUpdate:modelValue":t[74]||(t[74]=i=>s.value.useUnifiedClientId=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:as},null,544),[[Me,s.value.useUnifiedClientId]]),e("div",Vi,[t[290]||(t[290]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[291]||(t[291]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(o(),n("div",Oi,[e("div",Li,[e("div",{class:"mb-2 flex items-center justify-between"},[t[288]||(t[288]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"客户端标识 ID",-1)),e("button",{class:"rounded-md bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:He},t[287]||(t[287]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k(" 重新生成 ",-1)]))]),e("div",Ei,[e("code",Ni,[e("span",qi,p(s.value.unifiedClientId.substring(0,8)),1),e("span",Gi,p(s.value.unifiedClientId.substring(8,56)),1),e("span",Fi,p(s.value.unifiedClientId.substring(56)),1)])]),t[289]||(t[289]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1 text-blue-500"}),k(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):y("",!0)])])])):y("",!0),e("div",null,[t[292]||(t[292]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),b(e("input",{"onUpdate:modelValue":t[75]||(t[75]=i=>s.value.priority=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[j,s.value.priority,void 0,{number:!0}]]),t[293]||(t[293]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="ccr"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(o(),n("div",Wi,[e("div",Qi,[t[298]||(t[298]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[297]||(t[297]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(o(),n("p",Bi," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(o(),n("p",Hi," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(o(),n("p",Ji," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="droid"?(o(),n("p",Yi," 请输入有效的 Droid Access Token,并同时提供 Refresh Token 以支持自动刷新。 ")):y("",!0),e("div",Zi,[t[296]||(t[296]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),k(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(o(),n("p",Xi,t[294]||(t[294]=[k(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),k(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(o(),n("p",ed,t[295]||(t[295]=[k(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),k(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(o(),n("p",td," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):s.value.platform==="droid"?(o(),n("p",sd," 请从已完成授权的 Droid CLI 或 Factory.ai 导出的凭证中获取 Access Token 与 Refresh Token。 ")):y("",!0)]),s.value.platform!=="droid"?(o(),n("p",ad," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ")):(o(),n("p",rd," ⚠️ Droid 账户必须填写 Refresh Token,缺失将导致无法自动刷新 Access Token。 "))])]),s.value.platform==="openai"?(o(),n("div",ld,[t[299]||(t[299]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":t[76]||(t[76]=i=>s.value.accessToken=i),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"可选:如果不填写,系统会自动通过 Refresh Token 获取...",rows:"4"},null,512),[[j,s.value.accessToken]]),t[300]||(t[300]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。 ")],-1))])):(o(),n("div",od,[t[301]||(t[301]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),b(e("textarea",{"onUpdate:modelValue":t[77]||(t[77]=i=>s.value.accessToken=i),class:K(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[j,s.value.accessToken]]),T.value.accessToken?(o(),n("p",nd,p(T.value.accessToken),1)):y("",!0)])),s.value.platform==="openai"||s.value.platform==="droid"?(o(),n("div",id,[t[303]||(t[303]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token *",-1)),b(e("textarea",{"onUpdate:modelValue":t[78]||(t[78]=i=>s.value.refreshToken=i),class:K(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.refreshToken}]),placeholder:"请输入 Refresh Token(必填)...",required:"",rows:"4"},null,2),[[j,s.value.refreshToken]]),T.value.refreshToken?(o(),n("p",dd,p(T.value.refreshToken),1)):y("",!0),e("p",ud,[t[302]||(t[302]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),s.value.platform==="openai"?(o(),n(he,{key:0},[k(" 系统将使用 Refresh Token 自动获取 Access Token 和用户信息 ")],64)):(o(),n(he,{key:1},[k(" 系统将使用 Refresh Token 自动刷新 Factory.ai 访问令牌,确保账户保持可用。 ")],64))])])):(o(),n("div",pd,[t[304]||(t[304]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":t[79]||(t[79]=i=>s.value.refreshToken=i),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[j,s.value.refreshToken]])]))])):y("",!0),s.value.addType==="apikey"&&s.value.platform==="droid"?(o(),n("div",gd,[t[307]||(t[307]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-purple-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-purple-900 dark:text-purple-200"}," 使用 API Key 调度 Droid "),e("p",{class:"text-sm text-purple-800 dark:text-purple-200"}," 请填写一个或多个 Factory.ai API Key,系统会自动在请求时随机挑选并结合会话哈希维持粘性,确保对话上下文保持稳定。 ")])],-1)),e("div",null,[t[305]||(t[305]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key 列表 *",-1)),b(e("textarea",{"onUpdate:modelValue":t[80]||(t[80]=i=>s.value.apiKeysInput=i),class:K(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKeys}]),placeholder:"每行一个 API Key,可粘贴多行",required:"",rows:"6"},null,2),[[j,s.value.apiKeysInput]]),T.value.apiKeys?(o(),n("p",md,p(T.value.apiKeys),1)):y("",!0),t[306]||(t[306]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 建议为每条 Key 提供独立额度;系统会自动去重并忽略空白行。 ")],-1))]),t[308]||(t[308]=e("div",{class:"rounded-lg border border-purple-200 bg-white/70 p-3 text-xs text-purple-800 dark:border-purple-700 dark:bg-purple-800/20 dark:text-purple-100"},[e("p",{class:"font-medium"},[e("i",{class:"fas fa-random mr-1"}),k("分配策略说明")]),e("ul",{class:"mt-1 list-disc space-y-1 pl-4"},[e("li",null,"新会话将随机命中一个 Key,并在会话有效期内保持粘性。"),e("li",null,"若某 Key 失效,会自动切换到剩余可用 Key,最大化成功率。"),e("li",null," 若上游返回 4xx 错误码,该 Key 会被自动标记为异常;全部 Key 异常后账号将暂停调度。 ")])],-1))])):y("",!0),Je(Ts,{modelValue:s.value.proxy,"onUpdate:modelValue":t[81]||(t[81]=i=>s.value.proxy=i)},null,8,["modelValue"]),e("div",cd,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[82]||(t[82]=i=>d.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="ccr"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"&&s.value.platform!=="gemini-api"?(o(),n("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:re.value,type:"button",onClick:st}," 下一步 ",8,yd)):(o(),n("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:re.value,type:"button",onClick:Le},[re.value?(o(),n("div",fd)):y("",!0),k(" "+p(re.value?"创建中...":"创建"),1)],8,xd))])])])):y("",!0),H.value===2&&s.value.addType==="oauth"?(o(),qe(Or,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[83]||(t[83]=i=>H.value=1),onSuccess:S},null,8,["platform","proxy"])):y("",!0),H.value===2&&s.value.addType==="setup-token"?(o(),n("div",bd,[s.value.platform==="claude"?(o(),n("div",vd,[e("div",kd,[e("div",hd,[t[320]||(t[320]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",wd,[t[318]||(t[318]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[319]||(t[319]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",$d,[e("div",Ad,[e("div",Cd,[t[311]||(t[311]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Ud,[t[310]||(t[310]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),w.value?(o(),n("div",Pd,[e("div",_d,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:w.value},null,8,Md),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:f},[e("i",{class:K(R.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:$t},t[309]||(t[309]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:J.value,onClick:vt},[J.value?(o(),n("div",Kd)):(o(),n("i",Td)),k(" "+p(J.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,Id))])])]),t[317]||(t[317]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),k("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Dd,[e("div",Sd,[t[316]||(t[316]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",jd,[t[314]||(t[314]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[315]||(t[315]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",zd,[e("div",null,[t[312]||(t[312]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),k("Authorization Code ")],-1)),b(e("textarea",{"onUpdate:modelValue":t[84]||(t[84]=i=>m.value=i),class:"form-input w-full resize-none border-gray-300 font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[j,m.value]])]),t[313]||(t[313]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):y("",!0),e("div",Rd,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[85]||(t[85]=i=>H.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!bt.value||B.value,type:"button",onClick:c},[B.value?(o(),n("div",Od)):y("",!0),k(" "+p(B.value?"验证中...":"完成授权"),1)],8,Vd)])])):y("",!0),O.value?(o(),n("div",Ld,[e("div",null,[t[321]||(t[321]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),b(e("input",{"onUpdate:modelValue":t[86]||(t[86]=i=>s.value.name=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[j,s.value.name]])]),e("div",null,[t[322]||(t[322]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":t[87]||(t[87]=i=>s.value.description=i),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[j,s.value.description]])]),e("div",null,[t[326]||(t[326]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",Ed,[e("label",Nd,[b(e("input",{"onUpdate:modelValue":t[88]||(t[88]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[Ae,s.value.accountType]]),t[323]||(t[323]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",qd,[b(e("input",{"onUpdate:modelValue":t[89]||(t[89]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[Ae,s.value.accountType]]),t[324]||(t[324]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Gd,[b(e("input",{"onUpdate:modelValue":t[90]||(t[90]=i=>s.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[Ae,s.value.accountType]]),t[325]||(t[325]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[327]||(t[327]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),O.value?y("",!0):(o(),n("div",Fd,[t[331]||(t[331]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"到期时间 (可选)",-1)),e("div",Wd,[b(e("select",{"onUpdate:modelValue":t[91]||(t[91]=i=>s.value.expireDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:It},t[328]||(t[328]=[e("option",{value:""},"永不过期",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$s,s.value.expireDuration]]),s.value.expireDuration==="custom"?(o(),n("div",Qd,[b(e("input",{"onUpdate:modelValue":t[92]||(t[92]=i=>s.value.customExpireDate=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:ut.value,type:"datetime-local",onChange:zt},null,40,Bd),[[j,s.value.customExpireDate]])])):y("",!0),s.value.expiresAt?(o(),n("p",Hd,[t[329]||(t[329]=e("i",{class:"fas fa-calendar-alt mr-1"},null,-1)),k(" 将于 "+p(rs(s.value.expiresAt))+" 过期 ",1)])):(o(),n("p",Jd,t[330]||(t[330]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),k(" 账户永不过期 ",-1)])))]),t[332]||(t[332]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置 Claude Max/Pro 订阅的到期时间,到期后将停止调度此账户 ",-1))])),s.value.accountType==="group"?(o(),n("div",Yd,[t[334]||(t[334]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Zd,[e("div",Xd,[e("div",e0,[ct.value.length===0?(o(),n("div",t0," 暂无可用分组 ")):y("",!0),(o(!0),n(he,null,ze(ct.value,i=>(o(),n("label",{key:i.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[b(e("input",{"onUpdate:modelValue":t[93]||(t[93]=ge=>s.value.groupIds=ge),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i.id},null,8,s0),[[Me,s.value.groupIds]]),e("span",a0,p(i.name)+" ("+p(i.memberCount||0)+" 个成员) ",1)]))),128)),e("div",{class:"border-t pt-2 dark:border-gray-600"},[e("button",{class:"flex items-center gap-2 text-sm text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",type:"button",onClick:rt},t[333]||(t[333]=[e("i",{class:"fas fa-plus"},null,-1),k(" 新建分组 ",-1)]))])])]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",type:"button",onClick:We},[e("i",{class:K(["fas fa-sync-alt",{"animate-spin":et.value}])},null,2)])])])):y("",!0),s.value.platform==="gemini"?(o(),n("div",r0,[t[335]||(t[335]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[94]||(t[94]=i=>s.value.projectId=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[j,s.value.projectId]]),t[336]||(t[336]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):y("",!0),s.value.platform==="claude"?(o(),n("div",l0,[t[339]||(t[339]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",o0,[e("label",n0,[b(e("input",{"onUpdate:modelValue":t[95]||(t[95]=i=>s.value.subscriptionType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[Ae,s.value.subscriptionType]]),t[337]||(t[337]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",i0,[b(e("input",{"onUpdate:modelValue":t[96]||(t[96]=i=>s.value.subscriptionType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[Ae,s.value.subscriptionType]]),t[338]||(t[338]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[340]||(t[340]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):y("",!0),s.value.platform==="claude"?(o(),n("div",d0,[e("label",u0,[b(e("input",{"onUpdate:modelValue":t[97]||(t[97]=i=>s.value.autoStopOnWarning=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.autoStopOnWarning]]),t[341]||(t[341]=e("div",{class:"ml-3"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 5小时使用量接近限制时自动停止调度 "),e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 当系统检测到账户接近5小时使用限制时,自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。 ")],-1))])])):y("",!0),s.value.platform==="claude"?(o(),n("div",p0,[e("label",g0,[b(e("input",{"onUpdate:modelValue":t[98]||(t[98]=i=>s.value.useUnifiedUserAgent=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,s.value.useUnifiedUserAgent]]),e("div",m0,[t[343]||(t[343]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[344]||(t[344]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),E.value?(o(),n("div",c0,[e("div",y0,[e("p",x0," 💡 当前统一版本:"+p(E.value),1),e("button",{class:"ml-2 text-xs text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",disabled:P.value,type:"button",onClick:ss},[P.value?(o(),n("div",v0)):(o(),n("i",b0)),k(" "+p(P.value?"清除中...":"清除缓存"),1)],8,f0)])])):(o(),n("div",k0,t[342]||(t[342]=[e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," ⏳ 等待从 Claude Code 客户端捕获 User-Agent ",-1),e("p",{class:"mt-1 text-xs text-gray-400 dark:text-gray-500"}," 💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户, 或联系开发者检查 User-Agent 格式是否发生变化 ",-1)])))])])])):y("",!0),s.value.platform==="claude"?(o(),n("div",h0,[e("label",w0,[b(e("input",{"onUpdate:modelValue":t[99]||(t[99]=i=>s.value.useUnifiedClientId=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:as},null,544),[[Me,s.value.useUnifiedClientId]]),e("div",$0,[t[348]||(t[348]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[349]||(t[349]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(o(),n("div",A0,[e("div",C0,[e("div",{class:"mb-2 flex items-center justify-between"},[t[346]||(t[346]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"客户端标识 ID",-1)),e("button",{class:"rounded-md bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:He},t[345]||(t[345]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),k(" 重新生成 ",-1)]))]),e("div",U0,[e("code",I0,[e("span",T0,p(s.value.unifiedClientId.substring(0,8)),1),e("span",K0,p(s.value.unifiedClientId.substring(8,56)),1),e("span",P0,p(s.value.unifiedClientId.substring(56)),1)])]),t[347]||(t[347]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1 text-blue-500"}),k(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):y("",!0)])])])):y("",!0),e("div",null,[t[350]||(t[350]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),b(e("input",{"onUpdate:modelValue":t[100]||(t[100]=i=>s.value.priority=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[j,s.value.priority,void 0,{number:!0}]]),t[351]||(t[351]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"||s.value.platform==="ccr"?(o(),n("div",_0,[e("div",null,[t[352]||(t[352]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),b(e("input",{"onUpdate:modelValue":t[101]||(t[101]=i=>s.value.apiUrl=i),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[j,s.value.apiUrl]])]),e("div",null,[t[353]||(t[353]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),b(e("input",{"onUpdate:modelValue":t[102]||(t[102]=i=>s.value.apiKey=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[j,s.value.apiKey]]),t[354]||(t[354]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",M0,[e("div",null,[t[355]||(t[355]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),b(e("input",{"onUpdate:modelValue":t[103]||(t[103]=i=>s.value.dailyQuota=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[j,s.value.dailyQuota,void 0,{number:!0}]]),t[356]||(t[356]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[357]||(t[357]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),b(e("input",{"onUpdate:modelValue":t[104]||(t[104]=i=>s.value.quotaResetTime=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[j,s.value.quotaResetTime]]),t[358]||(t[358]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),O.value&&s.value.dailyQuota>0?(o(),n("div",D0,[e("div",S0,[t[359]||(t[359]=e("span",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"}," 今日使用情况 ",-1)),e("span",j0," $"+p(mt().toFixed(4))+" / $"+p(s.value.dailyQuota.toFixed(2)),1)]),e("div",z0,[e("div",{class:K(["absolute left-0 top-0 h-full rounded-full transition-all",it.value>=90?"bg-red-500":it.value>=70?"bg-yellow-500":"bg-green-500"]),style:Oe({width:`${Math.min(it.value,100)}%`})},null,6)]),e("div",R0,[e("span",V0," 剩余: $"+p(Math.max(0,s.value.dailyQuota-mt()).toFixed(2)),1),e("span",O0,p(it.value.toFixed(1))+"% 已使用 ",1)])])):y("",!0),e("div",null,[t[360]||(t[360]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 最大并发任务数 ",-1)),b(e("input",{"onUpdate:modelValue":t[105]||(t[105]=i=>s.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[j,s.value.maxConcurrentTasks,void 0,{number:!0}]]),t[361]||(t[361]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))]),e("div",null,[t[369]||(t[369]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型限制 (可选)",-1)),e("div",L0,[e("button",{class:K(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",Ce.value==="whitelist"?"bg-blue-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-blue-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-blue-500"]),type:"button",onClick:t[106]||(t[106]=i=>Ce.value="whitelist")},t[362]||(t[362]=[e("i",{class:"fas fa-check-circle mr-2"},null,-1),k(" 模型白名单 ",-1)]),2),e("button",{class:K(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",Ce.value==="mapping"?"bg-purple-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-purple-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-purple-500"]),type:"button",onClick:t[107]||(t[107]=i=>Ce.value="mapping")},t[363]||(t[363]=[e("i",{class:"fas fa-random mr-2"},null,-1),k(" 模型映射 ",-1)]),2)]),Ce.value==="whitelist"?(o(),n("div",E0,[t[364]||(t[364]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 选择允许使用此账户的模型。留空表示支持所有模型。 ")])],-1)),e("div",N0,[(o(),n(he,null,ze($,i=>e("label",{key:i.value,class:K(["flex cursor-pointer items-center rounded-lg border p-3 transition-all hover:bg-gray-50 dark:border-gray-600 dark:hover:bg-gray-700",q.value.includes(i.value)?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300"])},[b(e("input",{"onUpdate:modelValue":t[108]||(t[108]=ge=>q.value=ge),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"checkbox",value:i.value},null,8,q0),[[Me,q.value]]),e("span",G0,p(i.label),1)],2)),64))]),e("p",F0,[k(" 已选择 "+p(q.value.length)+" 个模型 ",1),q.value.length===0?(o(),n("span",W0,"(支持所有模型)")):y("",!0)])])):(o(),n("div",Q0,[t[368]||(t[368]=e("div",{class:"mb-3 rounded-lg bg-purple-50 p-3 dark:bg-purple-900/30"},[e("p",{class:"text-xs text-purple-700 dark:text-purple-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 配置模型映射关系。左侧是客户端请求的模型,右侧是实际发送给API的模型。 ")])],-1)),e("div",B0,[(o(!0),n(he,null,ze(M.value,(i,ge)=>(o(),n("div",{key:ge,class:"flex items-center gap-2"},[b(e("input",{"onUpdate:modelValue":oe=>i.from=oe,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"原始模型名称",type:"text"},null,8,H0),[[j,i.from]]),t[366]||(t[366]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),b(e("input",{"onUpdate:modelValue":oe=>i.to=oe,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"映射后的模型名称",type:"text"},null,8,J0),[[j,i.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:oe=>lt(ge)},t[365]||(t[365]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Y0)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500",type:"button",onClick:Ut},t[367]||(t[367]=[e("i",{class:"fas fa-plus mr-2"},null,-1),k(" 添加模型映射 ",-1)])),e("div",Z0,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[109]||(t[109]=i=>Ue("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-indigo-100 px-3 py-1 text-xs text-indigo-700 transition-colors hover:bg-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50",type:"button",onClick:t[110]||(t[110]=i=>Ue("claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929"))}," + Sonnet 4.5 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[111]||(t[111]=i=>Ue("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[112]||(t[112]=i=>Ue("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-emerald-100 px-3 py-1 text-xs text-emerald-700 transition-colors hover:bg-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:hover:bg-emerald-900/50",type:"button",onClick:t[113]||(t[113]=i=>Ue("claude-haiku-4-5-20251001","claude-haiku-4-5-20251001"))}," + Haiku 4.5 "),e("button",{class:"rounded-lg bg-cyan-100 px-3 py-1 text-xs text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:hover:bg-cyan-900/50",type:"button",onClick:t[114]||(t[114]=i=>Ue("deepseek-chat","deepseek-chat"))}," + DeepSeek "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[115]||(t[115]=i=>Ue("Qwen","Qwen"))}," + Qwen "),e("button",{class:"rounded-lg bg-pink-100 px-3 py-1 text-xs text-pink-700 transition-colors hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400 dark:hover:bg-pink-900/50",type:"button",onClick:t[116]||(t[116]=i=>Ue("Kimi","Kimi"))}," + Kimi "),e("button",{class:"rounded-lg bg-teal-100 px-3 py-1 text-xs text-teal-700 transition-colors hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400 dark:hover:bg-teal-900/50",type:"button",onClick:t[117]||(t[117]=i=>Ue("GLM","GLM"))}," + GLM "),e("button",{class:"rounded-lg bg-amber-100 px-3 py-1 text-xs text-amber-700 transition-colors hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:hover:bg-amber-900/50",type:"button",onClick:t[118]||(t[118]=i=>Ue("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus → Sonnet ")])]))]),e("div",null,[t[370]||(t[370]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[119]||(t[119]=i=>s.value.userAgent=i),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[j,s.value.userAgent]]),t[371]||(t[371]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[376]||(t[376]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",X0,[e("label",eu,[b(e("input",{"onUpdate:modelValue":t[120]||(t[120]=i=>s.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[Me,s.value.enableRateLimit]]),t[372]||(t[372]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[373]||(t[373]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(o(),n("div",tu,[t[374]||(t[374]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),b(e("input",{"onUpdate:modelValue":t[121]||(t[121]=i=>s.value.rateLimitDuration=i),class:"form-input w-full",min:"1",type:"number"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]]),t[375]||(t[375]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):y("",!0)])])):y("",!0),s.value.platform==="openai-responses"?(o(),n("div",su,[e("div",null,[t[377]||(t[377]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 基础地址",-1)),b(e("input",{"onUpdate:modelValue":t[122]||(t[122]=i=>s.value.baseApi=i),class:"form-input w-full",placeholder:"https://api.example.com/v1",type:"url"},null,512),[[j,s.value.baseApi]])]),e("div",null,[t[378]||(t[378]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 密钥",-1)),e("div",au,[b(e("input",{"onUpdate:modelValue":t[123]||(t[123]=i=>s.value.apiKey=i),class:"form-input w-full pr-10",placeholder:"留空表示不更新",type:W.value?"text":"password"},null,8,ru),[[Zt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",type:"button",onClick:t[124]||(t[124]=i=>W.value=!W.value)},[e("i",{class:K(W.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[379]||(t[379]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[380]||(t[380]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent",-1)),b(e("input",{"onUpdate:modelValue":t[125]||(t[125]=i=>s.value.userAgent=i),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[j,s.value.userAgent]]),t[381]||(t[381]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),b(e("input",{"onUpdate:modelValue":t[126]||(t[126]=i=>s.value.rateLimitDuration=i),type:"hidden"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]]),e("div",lu,[e("div",null,[t[382]||(t[382]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),b(e("input",{"onUpdate:modelValue":t[127]||(t[127]=i=>s.value.dailyQuota=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[j,s.value.dailyQuota,void 0,{number:!0}]])]),e("div",null,[t[383]||(t[383]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),b(e("input",{"onUpdate:modelValue":t[128]||(t[128]=i=>s.value.quotaResetTime=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",type:"time"},null,512),[[j,s.value.quotaResetTime]])])]),e("div",null,[t[384]||(t[384]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 最大并发任务数 ",-1)),b(e("input",{"onUpdate:modelValue":t[129]||(t[129]=i=>s.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[j,s.value.maxConcurrentTasks,void 0,{number:!0}]]),t[385]||(t[385]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))])])):y("",!0),s.value.platform==="gemini-api"?(o(),n("div",ou,[e("div",null,[t[386]||(t[386]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址",-1)),b(e("input",{"onUpdate:modelValue":t[130]||(t[130]=i=>s.value.baseUrl=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500 dark:border-red-400":T.value.baseUrl}]),placeholder:"https://generativelanguage.googleapis.com/v1beta/models",type:"url"},null,2),[[j,s.value.baseUrl]]),T.value.baseUrl?(o(),n("p",nu,p(T.value.baseUrl),1)):y("",!0),t[387]||(t[387]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},[k(" 填写 API 基础地址,必须以 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/models"),k(" 结尾。系统会自动拼接 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/{model}:generateContent")],-1)),t[388]||(t[388]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[k(" 官方: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://generativelanguage.googleapis.com/v1beta/models")],-1)),t[389]||(t[389]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[k(" 上游为 CRS: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://your-crs.com/gemini/v1beta/models")],-1))]),e("div",null,[t[390]||(t[390]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥",-1)),e("div",iu,[b(e("input",{"onUpdate:modelValue":t[131]||(t[131]=i=>s.value.apiKey=i),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"留空表示不更新",type:W.value?"text":"password"},null,8,du),[[Zt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:t[132]||(t[132]=i=>W.value=!W.value)},[e("i",{class:K(W.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[391]||(t[391]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))])])):y("",!0),s.value.platform==="bedrock"?(o(),n("div",uu,[e("div",null,[t[392]||(t[392]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),b(e("input",{"onUpdate:modelValue":t[133]||(t[133]=i=>s.value.accessKeyId=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[j,s.value.accessKeyId]]),t[393]||(t[393]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[394]||(t[394]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),b(e("input",{"onUpdate:modelValue":t[134]||(t[134]=i=>s.value.secretAccessKey=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[j,s.value.secretAccessKey]]),t[395]||(t[395]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[396]||(t[396]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),b(e("input",{"onUpdate:modelValue":t[135]||(t[135]=i=>s.value.region=i),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[j,s.value.region]]),t[397]||(t[397]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[398]||(t[398]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[136]||(t[136]=i=>s.value.sessionToken=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[j,s.value.sessionToken]])]),e("div",null,[t[399]||(t[399]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[137]||(t[137]=i=>s.value.defaultModel=i),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[j,s.value.defaultModel]]),t[400]||(t[400]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[401]||(t[401]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),b(e("input",{"onUpdate:modelValue":t[138]||(t[138]=i=>s.value.smallFastModel=i),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[j,s.value.smallFastModel]]),t[402]||(t[402]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[407]||(t[407]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",pu,[e("label",gu,[b(e("input",{"onUpdate:modelValue":t[139]||(t[139]=i=>s.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[Me,s.value.enableRateLimit]]),t[403]||(t[403]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[404]||(t[404]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(o(),n("div",mu,[t[405]||(t[405]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),b(e("input",{"onUpdate:modelValue":t[140]||(t[140]=i=>s.value.rateLimitDuration=i),class:"form-input w-full",min:"1",type:"number"},null,512),[[j,s.value.rateLimitDuration,void 0,{number:!0}]]),t[406]||(t[406]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):y("",!0)])])):y("",!0),s.value.platform==="azure_openai"?(o(),n("div",cu,[e("div",null,[t[408]||(t[408]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint",-1)),b(e("input",{"onUpdate:modelValue":t[141]||(t[141]=i=>s.value.azureEndpoint=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",type:"url"},null,2),[[j,s.value.azureEndpoint]]),T.value.azureEndpoint?(o(),n("p",yu,p(T.value.azureEndpoint),1)):y("",!0)]),e("div",null,[t[409]||(t[409]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),b(e("input",{"onUpdate:modelValue":t[142]||(t[142]=i=>s.value.apiVersion=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[j,s.value.apiVersion]]),t[410]||(t[410]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[411]||(t[411]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称",-1)),b(e("input",{"onUpdate:modelValue":t[143]||(t[143]=i=>s.value.deploymentName=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.deploymentName}]),placeholder:"gpt-4",type:"text"},null,2),[[j,s.value.deploymentName]]),T.value.deploymentName?(o(),n("p",xu,p(T.value.deploymentName),1)):y("",!0)]),e("div",null,[t[412]||(t[412]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key",-1)),b(e("input",{"onUpdate:modelValue":t[144]||(t[144]=i=>s.value.apiKey=i),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKey}]),placeholder:"留空表示不更新",type:"password"},null,2),[[j,s.value.apiKey]]),T.value.apiKey?(o(),n("p",fu,p(T.value.apiKey),1)):y("",!0),t[413]||(t[413]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))]),e("div",null,[t[414]||(t[414]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",bu,[(o(),n(he,null,ze(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],i=>e("label",{key:i,class:"flex cursor-pointer items-center"},[b(e("input",{"onUpdate:modelValue":t[145]||(t[145]=ge=>s.value.supportedModels=ge),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i},null,8,vu),[[Me,s.value.supportedModels]]),e("span",ku,p(i),1)])),64))]),t[415]||(t[415]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"选择此部署支持的模型类型",-1))])])):y("",!0),O.value&&Ze.value?(o(),n("div",hu,[e("div",wu,[t[421]||(t[421]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-purple-500"},[e("i",{class:"fas fa-retweet text-sm text-white"})],-1)),e("div",$u,[e("div",Au,[t[417]||(t[417]=e("h5",{class:"font-semibold text-purple-900 dark:text-purple-200"},"更新 API Key",-1)),e("button",{class:"flex items-center gap-1.5 rounded-lg bg-purple-600 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-purple-700 dark:bg-purple-500 dark:hover:bg-purple-600",type:"button",onClick:t[146]||(t[146]=i=>ke.value=!0)},t[416]||(t[416]=[e("i",{class:"fas fa-list-ul"},null,-1),e("span",null,"管理 API Key",-1)]))]),e("p",Cu,[t[418]||(t[418]=k(" 当前已保存 ",-1)),e("strong",null,p(tt.value),1),t[419]||(t[419]=k(" 条 API Key。您可以追加新的 Key,或通过下方模式快速覆盖、删除指定 Key。 ",-1))]),t[420]||(t[420]=e("p",{class:"text-xs text-purple-700 dark:text-purple-300"}," 留空表示保留现有 Key 不变;根据所选模式决定是追加、覆盖还是删除输入的 Key。 ",-1))])]),e("div",Uu,[e("div",null,[t[422]||(t[422]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 API Key 列表",-1)),b(e("textarea",{"onUpdate:modelValue":t[147]||(t[147]=i=>s.value.apiKeysInput=i),class:K(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKeys}]),placeholder:"根据模式填写;每行一个 API Key",rows:"6"},null,2),[[j,s.value.apiKeysInput]]),T.value.apiKeys?(o(),n("p",Iu,p(T.value.apiKeys),1)):y("",!0)]),e("div",Tu,[e("div",Ku,[t[423]||(t[423]=e("span",{class:"text-sm font-semibold text-purple-800 dark:text-purple-100"},"API Key 更新模式",-1)),e("span",Pu,p(Be.value),1)]),e("div",_u,[e("span",{class:"pointer-events-none absolute inset-y-0 rounded-2xl bg-gradient-to-r from-purple-500/90 via-purple-600 to-indigo-500/90 shadow-lg ring-1 ring-purple-100/80 transition-all duration-300 ease-out dark:from-purple-500/70 dark:via-purple-600/70 dark:to-indigo-500/70 dark:ring-purple-400/30",style:Oe(Ve.value)},null,4),(o(),n(he,null,ze(Ie,i=>e("button",{key:i.value,class:K(["relative z-10 flex items-center justify-center rounded-2xl px-2 text-xs font-semibold transition-all duration-200 ease-out focus:outline-none focus-visible:ring-2 focus-visible:ring-purple-500/60 dark:focus-visible:ring-purple-400/60",s.value.apiKeyUpdateMode===i.value?"text-white drop-shadow-sm":"text-purple-500/80 hover:text-purple-700 dark:text-purple-200/70 dark:hover:text-purple-100"]),type:"button",onClick:ge=>s.value.apiKeyUpdateMode=i.value},p(i.label),11,Mu)),64))]),e("p",Du,p(gt.value),1)]),t[424]||(t[424]=e("div",{class:"rounded-lg border border-purple-200 bg-white/70 p-3 text-xs text-purple-800 dark:border-purple-700 dark:bg-purple-800/20 dark:text-purple-100"},[e("p",{class:"font-medium"},[e("i",{class:"fas fa-lightbulb mr-1"}),k("小提示")]),e("ul",{class:"mt-1 list-disc space-y-1 pl-4"},[e("li",null,"系统会为新的 Key 自动建立粘性映射,保持同一会话命中同一个 Key。"),e("li",null,"追加模式会保留现有 Key 并在末尾追加新的 Key。"),e("li",null,"覆盖模式会先清空旧 Key 再写入上方的新列表。"),e("li",null,"删除模式会根据输入精准移除指定 Key,适合快速处理失效或被封禁的 Key。")])],-1))])])):y("",!0),!(O.value&&Ze.value)&&s.value.platform!=="claude-console"&&s.value.platform!=="ccr"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(o(),n("div",Su,[t[427]||(t[427]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",ju,[e("div",null,[t[425]||(t[425]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),b(e("textarea",{"onUpdate:modelValue":t[148]||(t[148]=i=>s.value.accessToken=i),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[j,s.value.accessToken]])]),e("div",null,[t[426]||(t[426]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),b(e("textarea",{"onUpdate:modelValue":t[149]||(t[149]=i=>s.value.refreshToken=i),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[j,s.value.refreshToken]])])])])):y("",!0),Je(Ts,{modelValue:s.value.proxy,"onUpdate:modelValue":t[150]||(t[150]=i=>s.value.proxy=i)},null,8,["modelValue"]),e("div",zu,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[151]||(t[151]=i=>d.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:re.value,type:"button",onClick:Pt},[re.value?(o(),n("div",Vu)):y("",!0),k(" "+p(re.value?"更新中...":"更新"),1)],8,Ru)])])):y("",!0)])])):y("",!0),Je(Rs,{"cancel-text":Ye(V).cancelText,"confirm-text":Ye(V).confirmText,message:Ye(V).message,show:Ye(G),title:Ye(V).title,onCancel:Ye(v),onConfirm:Ye(h)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),at.value?(o(),qe(hl,{key:1,onClose:t[152]||(t[152]=i=>at.value=!1),onRefresh:At})):y("",!0),ke.value?(o(),qe(vo,{key:2,"account-id":(ae=g.account)==null?void 0:ae.id,"account-name":(pe=g.account)==null?void 0:pe.name,onClose:t[153]||(t[153]=i=>ke.value=!1),onRefresh:Ct},null,8,["account-id","account-name"])):y("",!0)])}}},Ss=es(Ou,[["__scopeId","data-v-d2c70a49"]]),Lu={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Eu={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto rounded-2xl bg-white/90 p-4 shadow-xl backdrop-blur-xl dark:bg-gray-800/95 dark:shadow-2xl sm:p-6 md:p-8"},Nu={class:"mb-4 flex items-center justify-between sm:mb-6"},qu={class:"flex items-center gap-2 sm:gap-3"},Gu={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},Fu={class:"space-y-6"},Wu={key:0,class:"mt-1 text-xs text-red-500"},Qu={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Bu={key:0,class:"mt-1 text-xs text-red-500"},Hu={class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},Ju=["placeholder","required"],Yu={key:0,class:"mt-1 text-xs text-red-500"},Zu={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Xu={class:"mb-3"},ep={class:"inline-flex cursor-pointer items-center"},tp={key:0},sp={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},ap={class:"mb-3 space-y-2"},rp=["onUpdate:modelValue"],lp=["onUpdate:modelValue"],op=["onClick"],np={class:"mt-2 flex gap-3"},ip=["disabled"],dp={key:0,class:"loading-spinner mr-2"},up={__name:"CcrAccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=U(!0),G=le(()=>!!g.account),V=U(!1),A=U({name:"",description:"",apiUrl:"",apiKey:"",priority:50,userAgent:"",rateLimitDuration:60,dailyQuota:0,quotaResetTime:"00:00",proxy:null,supportedModels:{}}),h=U(!0),v=U({}),O=U([]),X=()=>{const w={};for(const m of O.value){const R=(m.from||"").trim(),te=(m.to||"").trim();R&&te&&(w[R]=te)}return w},H=()=>{O.value.push({from:"",to:""})},re=w=>{O.value.splice(w,1)},W=()=>{const w={};return(!A.value.name||A.value.name.trim().length===0)&&(w.name="名称不能为空"),(!A.value.apiUrl||A.value.apiUrl.trim().length===0)&&(w.apiUrl="API URL 不能为空"),!G.value&&(!A.value.apiKey||A.value.apiKey.trim().length===0)&&(w.apiKey="API Key 不能为空"),v.value=w,Object.keys(w).length===0},J=async()=>{if(W()){V.value=!0;try{if(G.value){const w={name:A.value.name,description:A.value.description,apiUrl:A.value.apiUrl,priority:A.value.priority,userAgent:A.value.userAgent,rateLimitDuration:h.value?Number(A.value.rateLimitDuration||60):0,dailyQuota:Number(A.value.dailyQuota||0),quotaResetTime:A.value.quotaResetTime||"00:00",proxy:A.value.proxy||null,supportedModels:X()};A.value.apiKey&&A.value.apiKey.trim().length>0&&(w.apiKey=A.value.apiKey);const m=await L.put(`/admin/ccr-accounts/${g.account.id}`,w);m.success?xe("success"):z(m.message||"保存失败","error")}else{const w={name:A.value.name,description:A.value.description,apiUrl:A.value.apiUrl,apiKey:A.value.apiKey,priority:Number(A.value.priority||50),supportedModels:X(),userAgent:A.value.userAgent,rateLimitDuration:h.value?Number(A.value.rateLimitDuration||60):0,proxy:A.value.proxy,accountType:"shared",dailyQuota:Number(A.value.dailyQuota||0),quotaResetTime:A.value.quotaResetTime||"00:00"},m=await L.post("/admin/ccr-accounts",w);m.success?xe("success"):z(m.message||"创建失败","error")}}catch(w){z(w.message||"请求失败","error")}finally{V.value=!1}}},B=()=>{if(!g.account)return;const w=g.account;A.value.name=w.name||"",A.value.description=w.description||"",A.value.apiUrl=w.apiUrl||"",A.value.priority=Number(w.priority||50),A.value.userAgent=w.userAgent||"",A.value.rateLimitDuration=Number(w.rateLimitDuration||60),A.value.dailyQuota=Number(w.dailyQuota||0),A.value.quotaResetTime=w.quotaResetTime||"00:00",A.value.proxy=w.proxy||null,h.value=A.value.rateLimitDuration>0,O.value=[];const m=w.supportedModels||{};if(m&&typeof m=="object")for(const R of Object.keys(m))O.value.push({from:R,to:m[R]})};return Xt(()=>{G.value&&B()}),ye(()=>g.account,()=>{G.value&&B()}),(w,m)=>(o(),qe(Kt,{to:"body"},[I.value?(o(),n("div",Lu,[e("div",Eu,[e("div",Nu,[e("div",qu,[m[13]||(m[13]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-teal-500 to-emerald-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-code-branch text-sm text-white sm:text-base"})],-1)),e("h3",Gu,p(G.value?"编辑 CCR 账户":"添加 CCR 账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:m[0]||(m[0]=R=>w.$emit("close"))},m[14]||(m[14]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Fu,[e("div",null,[m[15]||(m[15]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称 *",-1)),b(e("input",{"onUpdate:modelValue":m[1]||(m[1]=R=>A.value.name=R),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":v.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[j,A.value.name]]),v.value.name?(o(),n("p",Wu,p(v.value.name),1)):y("",!0)]),e("div",null,[m[16]||(m[16]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),b(e("textarea",{"onUpdate:modelValue":m[2]||(m[2]=R=>A.value.description=R),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"账户用途说明...",rows:"3"},null,512),[[j,A.value.description]])]),e("div",Qu,[e("div",null,[m[17]||(m[17]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),b(e("input",{"onUpdate:modelValue":m[3]||(m[3]=R=>A.value.apiUrl=R),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":v.value.apiUrl}]),placeholder:"例如:https://api.example.com/v1/messages",required:"",type:"text"},null,2),[[j,A.value.apiUrl]]),v.value.apiUrl?(o(),n("p",Bu,p(v.value.apiUrl),1)):y("",!0)]),e("div",null,[e("label",Hu,"API Key "+p(G.value?"(留空不更新)":"*"),1),b(e("input",{"onUpdate:modelValue":m[4]||(m[4]=R=>A.value.apiKey=R),class:K(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":v.value.apiKey}]),placeholder:G.value?"留空表示不更新":"必填",required:!G.value,type:"password"},null,10,Ju),[[j,A.value.apiKey]]),v.value.apiKey?(o(),n("p",Yu,p(v.value.apiKey),1)):y("",!0)])]),e("div",Zu,[e("div",null,[m[18]||(m[18]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"优先级",-1)),b(e("input",{"onUpdate:modelValue":m[5]||(m[5]=R=>A.value.priority=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",max:"100",min:"1",placeholder:"默认50,数字越小优先级越高",type:"number"},null,512),[[j,A.value.priority,void 0,{number:!0}]]),m[19]||(m[19]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 建议范围:1-100,数字越小优先级越高 ",-1))]),e("div",null,[m[20]||(m[20]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),b(e("input",{"onUpdate:modelValue":m[6]||(m[6]=R=>A.value.userAgent=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[j,A.value.userAgent]])])]),e("div",null,[m[24]||(m[24]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Xu,[e("label",ep,[b(e("input",{"onUpdate:modelValue":m[7]||(m[7]=R=>h.value=R),class:"mr-2 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Me,h.value]]),m[21]||(m[21]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制(429 时暂停调度)",-1))])]),h.value?(o(),n("div",tp,[m[22]||(m[22]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),b(e("input",{"onUpdate:modelValue":m[8]||(m[8]=R=>A.value.rateLimitDuration=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[j,A.value.rateLimitDuration,void 0,{number:!0}]]),m[23]||(m[23]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):y("",!0)]),e("div",sp,[e("div",null,[m[25]||(m[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日额度限制 ($)",-1)),b(e("input",{"onUpdate:modelValue":m[9]||(m[9]=R=>A.value.dailyQuota=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[j,A.value.dailyQuota,void 0,{number:!0}]]),m[26]||(m[26]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[m[27]||(m[27]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"额度重置时间",-1)),b(e("input",{"onUpdate:modelValue":m[10]||(m[10]=R=>A.value.quotaResetTime=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[j,A.value.quotaResetTime]]),m[28]||(m[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),e("div",null,[m[32]||(m[32]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),m[33]||(m[33]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),k(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",ap,[(o(!0),n(he,null,ze(O.value,(R,te)=>(o(),n("div",{key:te,class:"flex items-center gap-2"},[b(e("input",{"onUpdate:modelValue":E=>R.from=E,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,rp),[[j,R.from]]),m[30]||(m[30]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),b(e("input",{"onUpdate:modelValue":E=>R.to=E,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,lp),[[j,R.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:E=>re(te)},m[29]||(m[29]=[e("i",{class:"fas fa-trash"},null,-1)]),8,op)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:H},m[31]||(m[31]=[e("i",{class:"fas fa-plus mr-2"},null,-1),k(" 添加模型映射 ",-1)]))]),e("div",null,[Je(Ts,{modelValue:A.value.proxy,"onUpdate:modelValue":m[11]||(m[11]=R=>A.value.proxy=R)},null,8,["modelValue"])]),e("div",np,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:m[12]||(m[12]=R=>w.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:V.value,type:"button",onClick:J},[V.value?(o(),n("div",dp)):y("",!0),k(" "+p(V.value?G.value?"保存中...":"创建中...":G.value?"保存":"创建"),1)],8,ip)])])])])):y("",!0)]))}},js=es(up,[["__scopeId","data-v-2a966370"]]),pp={key:0,class:"fixed inset-0 z-[1050] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm"},gp={class:"relative z-10 mx-3 flex max-h-[92vh] w-full max-w-6xl flex-col overflow-hidden rounded-2xl border border-gray-200/70 bg-white/95 shadow-2xl ring-1 ring-black/5 transition-all dark:border-gray-700/60 dark:bg-gray-900/95 dark:ring-white/10 sm:mx-4 sm:p-1"},mp={class:"flex flex-col gap-3 border-b border-gray-100 bg-white/80 px-5 py-4 backdrop-blur dark:border-gray-800 dark:bg-gray-900/80 sm:flex-row sm:items-center sm:justify-between"},cp={class:"flex flex-1 items-start gap-3"},yp={class:"space-y-1"},xp={class:"flex flex-wrap items-center gap-2"},fp={class:"text-lg font-semibold text-gray-900 dark:text-gray-100 sm:text-xl"},bp={key:0,class:"inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-700 dark:bg-blue-500/10 dark:text-blue-300"},vp={key:1,class:"inline-flex items-center rounded-full bg-purple-100 px-2.5 py-0.5 text-xs font-medium text-purple-700 dark:bg-purple-500/10 dark:text-purple-300"},kp={class:"text-xs text-gray-500 dark:text-gray-400 sm:text-sm"},hp={key:0},wp={class:"flex-1 overflow-y-auto px-5 py-4 sm:px-6"},$p={key:0,class:"flex h-[50vh] items-center justify-center"},Ap={class:"mb-5 grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4"},Cp={class:"flex items-start justify-between"},Up={class:"text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400"},Ip={class:"mt-2 text-xl font-semibold text-gray-900 dark:text-gray-100"},Tp={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Kp={class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gray-50 dark:bg-gray-800"},Pp={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},_p={class:"space-y-3 rounded-2xl border border-blue-100 bg-blue-50/60 p-4 dark:border-blue-500/20 dark:bg-blue-900/20"},Mp={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-blue-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-blue-500/20"},Dp={class:"flex items-center justify-between"},Sp={class:"font-semibold text-gray-900 dark:text-gray-100"},jp={class:"mt-2 flex items-center justify-between"},zp={class:"font-semibold text-gray-900 dark:text-gray-100"},Rp={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Vp={class:"space-y-3 rounded-2xl border border-amber-100 bg-amber-50/70 p-4 dark:border-amber-500/20 dark:bg-amber-900/20"},Op={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-amber-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-amber-500/20"},Lp={class:"flex items-center justify-between"},Ep={class:"font-semibold text-gray-900 dark:text-gray-100"},Np={class:"mt-2 flex items-center justify-between"},qp={class:"font-semibold text-gray-900 dark:text-gray-100"},Gp={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Fp={class:"space-y-3 rounded-2xl border border-emerald-100 bg-emerald-50/60 p-4 dark:border-emerald-500/20 dark:bg-emerald-900/20"},Wp={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-emerald-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-emerald-500/20"},Qp={class:"flex items-center justify-between"},Bp={class:"font-semibold text-gray-900 dark:text-gray-100"},Hp={class:"mt-2 flex items-center justify-between"},Jp={class:"font-semibold text-gray-900 dark:text-gray-100"},Yp={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Zp={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},Xp={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},eg={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},tg={class:"flex items-center justify-between"},sg={class:"font-semibold text-gray-900 dark:text-gray-100"},ag={class:"flex items-center justify-between"},rg={class:"font-semibold text-gray-900 dark:text-gray-100"},lg={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},og={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},ng={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},ig={class:"flex items-center justify-between"},dg={class:"font-semibold text-gray-900 dark:text-gray-100"},ug={class:"flex items-center justify-between"},pg={class:"font-semibold text-gray-900 dark:text-gray-100"},gg={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},mg={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},cg={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},yg={class:"flex items-center justify-between"},xg={class:"font-semibold text-gray-900 dark:text-gray-100"},fg={class:"flex items-center justify-between"},bg={class:"font-semibold text-gray-900 dark:text-gray-100"},vg={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},kg={class:"mb-6 rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},hg={class:"mb-4 flex flex-wrap items-center justify-between gap-2"},wg={class:"text-xs text-gray-400 dark:text-gray-500"},$g={class:"h-[260px] sm:h-[300px]"},Ag={__name:"AccountUsageDetailModal",props:{show:{type:Boolean,default:!1},account:{type:Object,default:()=>({})},history:{type:Array,default:()=>[]},summary:{type:Object,default:()=>({})},overview:{type:Object,default:()=>({})},generatedAt:{type:String,default:""},loading:{type:Boolean,default:!1}},emits:["close"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=Xs(),{isDarkMode:G}=Ys(I),V=U(null);let A=null;const h={claude:"Claude","claude-console":"Claude Console",openai:"OpenAI","openai-responses":"OpenAI Responses",gemini:"Gemini","gemini-api":"Gemini API",droid:"Droid"},v=le(()=>{var D;return h[(D=g.account)==null?void 0:D.platform]||"未知平台"}),O=le(()=>{var D;return(D=g.account)!=null&&D.accountType?g.account.accountType==="dedicated"?"专属":g.account.accountType==="group"?"分组":"共享":"共享"}),X=le(()=>({text:G.value?"#e5e7eb":"#374151",grid:G.value?"rgba(75, 85, 99, 0.25)":"rgba(209, 213, 219, 0.4)",cost:"#3b82f6",costFill:"rgba(59, 130, 246, 0.15)",requests:"#f97316"})),H=le(()=>{var D;return((D=g.summary)==null?void 0:D.totalTokens)||0}),re=le(()=>{var D,u;return((u=(D=g.overview)==null?void 0:D.total)==null?void 0:u.inputTokens)||0}),W=le(()=>{var D,u;return((u=(D=g.overview)==null?void 0:D.total)==null?void 0:u.outputTokens)||0}),J=D=>{const u=Number(D||0);return u>=1e6?`${(u/1e6).toFixed(2)}M`:u>=1e3?`${(u/1e3).toFixed(2)}K`:u.toLocaleString()},B=D=>{const u=Number(D||0);return Number.isNaN(u)?"$0.000000":u>=1?`$${u.toFixed(2)}`:u>=.01?`$${u.toFixed(3)}`:`$${u.toFixed(6)}`},w=D=>Math.round((Number(D)||0)*100)/100,m=D=>{if(!D)return"-";const u=new Date(D);if(Number.isNaN(u.getTime())){const we=D.split("-");return we.length===3?`${we[1]}-${we[2]}`:D}const Z=String(u.getMonth()+1).padStart(2,"0"),ee=String(u.getDate()).padStart(2,"0");return`${Z}-${ee}`},R=D=>{if(!D)return"暂无";const u=new Date(D);return Number.isNaN(u.getTime())?D:`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")} ${String(u.getHours()).padStart(2,"0")}:${String(u.getMinutes()).padStart(2,"0")}`},te=(D,u)=>{if(!D)return 0;const Z=g.history.find(ee=>ee.date===D);return Z&&Z[u]||0},E=le(()=>{var D,u;return g.generatedAt||((D=g.summary)==null?void 0:D.generatedAt)||((u=g.summary)==null?void 0:u.generated_at)||""}),P=le(()=>{var D,u,Z,ee,we,s,Ce,q;return[{key:"totalCost",label:"30天总费用",value:((D=g.summary)==null?void 0:D.totalCostFormatted)||"$0.000000",subtitle:"累计成本",icon:"fa-file-invoice-dollar",iconClass:"text-emerald-500"},{key:"totalRequests",label:"30天总请求",value:J(((u=g.summary)==null?void 0:u.totalRequests)||0),subtitle:"调用次数",icon:"fa-paper-plane",iconClass:"text-blue-500"},{key:"avgCost",label:"日均费用",value:((Z=g.summary)==null?void 0:Z.avgDailyCostFormatted)||B(((ee=g.summary)==null?void 0:ee.avgDailyCost)||0),subtitle:(we=g.summary)!=null&&we.actualDaysUsed&&((s=g.summary)==null?void 0:s.actualDaysUsed)<((Ce=g.summary)==null?void 0:Ce.days)?`基于 ${g.summary.actualDaysUsed} 天实际使用`:"平均每日成本",icon:"fa-wave-square",iconClass:"text-purple-500"},{key:"avgRequests",label:"日均请求",value:J(w(((q=g.summary)==null?void 0:q.avgDailyRequests)||0)),subtitle:"平均每日调用",icon:"fa-chart-line",iconClass:"text-orange-500"}]}),N=async()=>{if(await Is(),!g.show||!V.value)return;if(A&&A.destroy(),!g.history||g.history.length===0){A=null;return}const D=g.history.map(ee=>ee.label),u=g.history.map(ee=>ee.cost||0),Z=g.history.map(ee=>ee.requests||0);A=new ea(V.value,{type:"line",data:{labels:D,datasets:[{label:"费用 (USD)",data:u,borderColor:X.value.cost,backgroundColor:X.value.costFill,tension:.35,fill:!0,yAxisID:"y"},{label:"请求次数",data:Z,borderColor:X.value.requests,backgroundColor:"transparent",tension:.35,yAxisID:"y1"}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{labels:{color:X.value.text}},tooltip:{callbacks:{label(ee){return ee.dataset.label==="费用 (USD)"?`${ee.dataset.label}: ${B(ee.parsed.y)}`:`${ee.dataset.label}: ${J(ee.parsed.y)} 次`}}}},scales:{x:{ticks:{color:X.value.text},grid:{color:X.value.grid}},y:{position:"left",ticks:{color:X.value.text,callback:ee=>B(ee)},grid:{color:X.value.grid}},y1:{position:"right",ticks:{color:X.value.text,callback:ee=>J(ee)},grid:{drawOnChartArea:!1}}}}})},ke=()=>{A&&(A.destroy(),A=null)},de=()=>{ke(),xe("close")};return ye(()=>g.show,D=>{D&&!g.loading?N():D||ke()}),ye(()=>g.loading,D=>{!D&&g.show&&N()}),ye(()=>g.history,()=>{g.show&&!g.loading&&N()},{deep:!0}),ye(G,()=>{g.show&&!g.loading&&N()}),As(()=>{ke()}),(D,u)=>{var Z,ee,we,s,Ce,q,$,M,ue,ie,Ie,Ve,Be,gt,T,wt,bt,mt,it,tt,Ze,Xe,Ge,st,vt,$t,f,c,S,Le,Pt,dt,et,at,ct,Fe,We,rt,At,Ct,Ut;return o(),qe(Kt,{to:"body"},[Q.show?(o(),n("div",pp,[e("div",{class:"absolute inset-0",onClick:de}),e("div",gp,[e("div",mp,[e("div",cp,[u[2]||(u[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-indigo-500 text-white shadow-lg"},[e("i",{class:"fas fa-chart-area text-lg"})],-1)),e("div",yp,[e("div",xp,[e("h3",fp,p(((Z=Q.account)==null?void 0:Z.name)||((ee=Q.account)==null?void 0:ee.email)||"账号使用详情"),1),(we=Q.account)!=null&&we.platform?(o(),n("span",bp,[u[0]||(u[0]=e("i",{class:"fas fa-layer-group mr-1"},null,-1)),k(p(v.value),1)])):y("",!0),(s=Q.account)!=null&&s.accountType?(o(),n("span",vp,[u[1]||(u[1]=e("i",{class:"fas fa-user-tag mr-1"},null,-1)),k(p(O.value),1)])):y("",!0)]),e("p",kp,[k(" 近 "+p(((Ce=Q.summary)==null?void 0:Ce.days)||30)+" 天内的费用与请求趋势 ",1),(q=Q.summary)!=null&&q.actualDaysUsed&&(($=Q.summary)==null?void 0:$.actualDaysUsed)<((M=Q.summary)==null?void 0:M.days)?(o(),n("span",hp," (日均基于实际使用 "+p(Q.summary.actualDaysUsed)+" 天) ",1)):y("",!0)])])]),e("button",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200",onClick:de},u[3]||(u[3]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",wp,[Q.loading?(o(),n("div",$p,u[4]||(u[4]=[e("div",{class:"loading-spinner h-12 w-12 border-4 border-blue-500"},null,-1)]))):(o(),n(he,{key:1},[e("div",Ap,[(o(!0),n(he,null,ze(P.value,lt=>(o(),n("div",{key:lt.key,class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm transition dark:border-gray-700 dark:bg-gray-900/70"},[e("div",Cp,[e("div",null,[e("p",Up,p(lt.label),1),e("p",Ip,p(lt.value),1),e("p",Tp,p(lt.subtitle),1)]),e("div",Kp,[e("i",{class:K(["fas",lt.icon,lt.iconClass])},null,2)])])]))),128))]),e("div",Pp,[e("div",_p,[u[8]||(u[8]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-sun"}),k(" 今日概览 ")],-1)),e("div",Mp,[e("div",Dp,[u[5]||(u[5]=e("span",null,"费用",-1)),e("span",Sp,p(((ie=(ue=Q.summary)==null?void 0:ue.today)==null?void 0:ie.costFormatted)||"$0.000000"),1)]),e("div",jp,[u[6]||(u[6]=e("span",null,"请求",-1)),e("span",zp,p(J(((Ve=(Ie=Q.summary)==null?void 0:Ie.today)==null?void 0:Ve.requests)||0)),1)]),e("div",Rp,[u[7]||(u[7]=e("span",null,"Tokens",-1)),e("span",null,p(J(((gt=(Be=Q.summary)==null?void 0:Be.today)==null?void 0:gt.tokens)||0)),1)])])]),e("div",Vp,[u[12]||(u[12]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-amber-700 dark:text-amber-300"},[e("i",{class:"fas fa-crown"}),k(" 最高费用日 ")],-1)),e("div",Op,[e("div",Lp,[u[9]||(u[9]=e("span",null,"日期",-1)),e("span",Ep,p(m((wt=(T=Q.summary)==null?void 0:T.highestCostDay)==null?void 0:wt.date)),1)]),e("div",Np,[u[10]||(u[10]=e("span",null,"费用",-1)),e("span",qp,p(((mt=(bt=Q.summary)==null?void 0:bt.highestCostDay)==null?void 0:mt.formattedCost)||"$0.000000"),1)]),e("div",Gp,[u[11]||(u[11]=e("span",null,"请求",-1)),e("span",null,p(J(te((tt=(it=Q.summary)==null?void 0:it.highestCostDay)==null?void 0:tt.date,"requests"))),1)])])]),e("div",Fp,[u[16]||(u[16]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-emerald-700 dark:text-emerald-300"},[e("i",{class:"fas fa-chart-bar"}),k(" 最高请求日 ")],-1)),e("div",Wp,[e("div",Qp,[u[13]||(u[13]=e("span",null,"日期",-1)),e("span",Bp,p(m((Xe=(Ze=Q.summary)==null?void 0:Ze.highestRequestDay)==null?void 0:Xe.date)),1)]),e("div",Hp,[u[14]||(u[14]=e("span",null,"请求",-1)),e("span",Jp,p(J(((st=(Ge=Q.summary)==null?void 0:Ge.highestRequestDay)==null?void 0:st.requests)||0)),1)]),e("div",Yp,[u[15]||(u[15]=e("span",null,"费用",-1)),e("span",null,p(B(te(($t=(vt=Q.summary)==null?void 0:vt.highestRequestDay)==null?void 0:$t.date,"cost"))),1)])])])]),e("div",Zp,[e("div",Xp,[u[20]||(u[20]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-database mr-2 text-indigo-500"}),k(" 累计 Token ")],-1)),e("div",eg,[e("div",tg,[u[17]||(u[17]=e("span",null,"30天总计",-1)),e("span",sg,p(J(H.value)),1)]),e("div",ag,[u[18]||(u[18]=e("span",null,"日均 Token",-1)),e("span",rg,p(J(Math.round(((f=Q.summary)==null?void 0:f.avgDailyTokens)||0))),1)]),e("div",lg,[u[19]||(u[19]=e("span",null,"输入 / 输出",-1)),e("span",null,p(J(re.value))+" / "+p(J(W.value)),1)])])]),e("div",og,[u[24]||(u[24]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-tachometer-alt mr-2 text-purple-500"}),k(" 平均速率 ")],-1)),e("div",ng,[e("div",ig,[u[21]||(u[21]=e("span",null,"RPM",-1)),e("span",dg,p(((S=(c=Q.overview)==null?void 0:c.averages)==null?void 0:S.rpm)??0),1)]),e("div",ug,[u[22]||(u[22]=e("span",null,"TPM",-1)),e("span",pg,p(((Pt=(Le=Q.overview)==null?void 0:Le.averages)==null?void 0:Pt.tpm)??0),1)]),e("div",gg,[u[23]||(u[23]=e("span",null,"日均请求 / Token",-1)),e("span",null,p(J(Math.round((((et=(dt=Q.overview)==null?void 0:dt.averages)==null?void 0:et.dailyRequests)||0)*100)/100))+" / "+p(J(Math.round((((ct=(at=Q.overview)==null?void 0:at.averages)==null?void 0:ct.dailyTokens)||0)*100)/100)),1)])])]),e("div",mg,[u[28]||(u[28]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-layer-group mr-2 text-teal-500"}),k(" 最近统计 ")],-1)),e("div",cg,[e("div",yg,[u[25]||(u[25]=e("span",null,"今日请求",-1)),e("span",xg,p(J(((We=(Fe=Q.overview)==null?void 0:Fe.daily)==null?void 0:We.requests)||0)),1)]),e("div",fg,[u[26]||(u[26]=e("span",null,"今日 Token",-1)),e("span",bg,p(J(((At=(rt=Q.overview)==null?void 0:rt.daily)==null?void 0:At.allTokens)||0)),1)]),e("div",vg,[u[27]||(u[27]=e("span",null,"今日费用",-1)),e("span",null,p(B(((Ut=(Ct=Q.overview)==null?void 0:Ct.daily)==null?void 0:Ut.cost)||0)),1)])])])]),e("div",kg,[e("div",hg,[u[29]||(u[29]=e("h4",{class:"flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-chart-line mr-2 text-blue-500"}),k(" 30天费用与请求趋势 ")],-1)),e("span",wg," 最新更新时间:"+p(R(E.value)),1)]),e("div",$g,[e("canvas",{ref_key:"chartCanvas",ref:V,class:"h-full w-full"},null,512)])])],64))])])])):y("",!0)])}}},Cg=es(Ag,[["__scopeId","data-v-2d353513"]]),Ug={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Ig={class:"modal-content relative mx-auto w-full max-w-lg p-8"},Tg={class:"mb-6 flex items-center justify-between"},Kg={class:"flex items-center gap-3"},Pg={class:"text-sm text-gray-600 dark:text-gray-400"},_g={class:"space-y-6"},Mg={class:"rounded-lg border border-gray-200 bg-gradient-to-r from-gray-50 to-gray-100 p-4 dark:border-gray-600 dark:from-gray-700 dark:to-gray-800"},Dg={class:"flex items-center justify-between"},Sg={class:"text-sm font-semibold text-gray-800 dark:text-gray-200"},jg={class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},zg={class:"mb-3 grid grid-cols-3 gap-2"},Rg=["onClick"],Vg={key:0,class:"animate-fadeIn"},Og=["min"],Lg={key:1,class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-4 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20"},Eg={class:"flex items-center justify-between"},Ng={class:"text-sm font-semibold text-blue-900 dark:text-blue-200"},qg={class:"flex gap-3 pt-2"},Gg=["disabled"],Fg={key:0,class:"loading-spinner mr-2"},Wg={key:1,class:"fas fa-save mr-2"},Qg={__name:"AccountExpiryEditModal",props:{show:{type:Boolean,required:!0},account:{type:Object,required:!0}},emits:["close","save"],setup(Q,{expose:Ke,emit:g}){const xe=Q,I=g,G=U(!1),V=Zs({expireDuration:"",customExpireDate:"",expiresAt:null}),A=[{value:"",label:"永不过期"},{value:"30d",label:"30 天"},{value:"90d",label:"90 天"},{value:"180d",label:"180 天"},{value:"365d",label:"1 年"},{value:"730d",label:"2 年"}],h=le(()=>{const w=new Date;return w.setMinutes(w.getMinutes()+1),w.toISOString().slice(0,16)});ye(()=>xe.show,w=>{w&&v()}),ye(()=>{var w;return(w=xe.account)==null?void 0:w.id},w=>{w&&xe.show&&v()});const v=()=>{G.value=!1,xe.account.expiresAt?(V.expireDuration="custom",V.customExpireDate=new Date(xe.account.expiresAt).toISOString().slice(0,16),V.expiresAt=xe.account.expiresAt):(V.expireDuration="",V.customExpireDate="",V.expiresAt=null)},O=w=>{if(V.expireDuration=w,!w){V.expiresAt=null;return}if(w==="custom")return;const m=new Date,R=w.match(/(\d+)([dhmy])/);if(R){const[,te,E]=R,P=parseInt(te);switch(E){case"d":m.setDate(m.getDate()+P);break;case"h":m.setHours(m.getHours()+P);break;case"m":m.setMonth(m.getMonth()+P);break;case"y":m.setFullYear(m.getFullYear()+P);break}V.expiresAt=m.toISOString()}},X=()=>{if(V.customExpireDate)try{const[w,m]=V.customExpireDate.split("T"),[R,te,E]=w.split("-").map(Number),[P,N]=m.split(":").map(Number),ke=new Date(R,te-1,E,P,N,0,0);if(isNaN(ke.getTime())){console.error("Invalid date:",V.customExpireDate);return}V.expiresAt=ke.toISOString()}catch(w){console.error("Failed to parse custom expire date:",w)}},H=w=>w?new Date(w).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",re=w=>w?new Date(w){if(!w)return null;const m=new Date,te=new Date(w)-m,E=Math.ceil(te/(1e3*60*60*24));return te<0?{text:"已过期",class:"text-red-600"}:E<=7?{text:`${E} 天后过期`,class:"text-orange-600"}:E<=30?{text:`${E} 天后过期`,class:"text-yellow-600"}:{text:`${Math.ceil(E/30)} 个月后过期`,class:"text-green-600"}},J=()=>{G.value=!0,I("save",{accountId:xe.account.id,expiresAt:V.expiresAt})};return Ke({resetSaving:()=>{G.value=!1}}),(w,m)=>(o(),qe(Kt,{to:"body"},[Q.show?(o(),n("div",Ug,[e("div",{class:"fixed inset-0 bg-gray-900 bg-opacity-50 backdrop-blur-sm",onClick:m[0]||(m[0]=R=>w.$emit("close"))}),e("div",Ig,[e("div",Tg,[e("div",Kg,[m[6]||(m[6]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-orange-600"},[e("i",{class:"fas fa-clock text-white"})],-1)),e("div",null,[m[5]||(m[5]=e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改到期时间",-1)),e("p",Pg,' 为 "'+p(Q.account.name||"Account")+'" 设置新的到期时间 ',1)])]),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:m[1]||(m[1]=R=>w.$emit("close"))},m[7]||(m[7]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",_g,[e("div",Mg,[e("div",Dg,[e("div",null,[m[10]||(m[10]=e("p",{class:"mb-1 text-xs font-medium text-gray-600 dark:text-gray-400"},"当前状态",-1)),e("p",Sg,[Q.account.expiresAt?(o(),n(he,{key:0},[k(p(H(Q.account.expiresAt))+" ",1),W(Q.account.expiresAt)?(o(),n("span",{key:0,class:K(["ml-2 text-xs font-normal",W(Q.account.expiresAt).class])}," ("+p(W(Q.account.expiresAt).text)+") ",3)):y("",!0)],64)):(o(),n(he,{key:1},[m[8]||(m[8]=e("i",{class:"fas fa-infinity mr-1 text-gray-500"},null,-1)),m[9]||(m[9]=k(" 永不过期 ",-1))],64))])]),e("div",jg,[e("i",{class:K(["fas fa-hourglass-half text-lg",Q.account.expiresAt&&re(Q.account.expiresAt)?"text-red-500":"text-gray-400"])},null,2)])])]),e("div",null,[m[12]||(m[12]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择新的期限",-1)),e("div",zg,[(o(),n(he,null,ze(A,R=>e("button",{key:R.value,class:K(["rounded-lg px-3 py-2 text-sm font-medium transition-all",V.expireDuration===R.value?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:te=>O(R.value)},p(R.label),11,Rg)),64)),e("button",{class:K(["rounded-lg px-3 py-2 text-sm font-medium transition-all",V.expireDuration==="custom"?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:m[2]||(m[2]=R=>O("custom"))},m[11]||(m[11]=[e("i",{class:"fas fa-calendar-alt mr-1"},null,-1),k(" 自定义 ",-1)]),2)])]),V.expireDuration==="custom"?(o(),n("div",Vg,[m[13]||(m[13]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择日期和时间",-1)),b(e("input",{"onUpdate:modelValue":m[3]||(m[3]=R=>V.customExpireDate=R),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:h.value,type:"datetime-local",onChange:X},null,40,Og),[[j,V.customExpireDate]]),m[14]||(m[14]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择一个未来的日期和时间作为到期时间 ",-1))])):y("",!0),V.expiresAt!==Q.account.expiresAt?(o(),n("div",Lg,[e("div",Eg,[e("div",null,[m[17]||(m[17]=e("p",{class:"mb-1 text-xs font-medium text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-arrow-right mr-1"}),k(" 新的到期时间 ")],-1)),e("p",Ng,[V.expiresAt?(o(),n(he,{key:0},[k(p(H(V.expiresAt))+" ",1),W(V.expiresAt)?(o(),n("span",{key:0,class:K(["ml-2 text-xs font-normal",W(V.expiresAt).class])}," ("+p(W(V.expiresAt).text)+") ",3)):y("",!0)],64)):(o(),n(he,{key:1},[m[15]||(m[15]=e("i",{class:"fas fa-infinity mr-1"},null,-1)),m[16]||(m[16]=k(" 永不过期 ",-1))],64))])]),m[18]||(m[18]=e("div",{class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},[e("i",{class:"fas fa-check text-lg text-green-500"})],-1))])])):y("",!0),e("div",qg,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",onClick:m[4]||(m[4]=R=>w.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 font-semibold",disabled:G.value||V.expiresAt===Q.account.expiresAt,onClick:J},[G.value?(o(),n("div",Fg)):(o(),n("i",Wg)),k(" "+p(G.value?"保存中...":"保存更改"),1)],8,Gg)])])])])):y("",!0)]))}},Bg=es(Qg,[["__scopeId","data-v-f19e4a71"]]),Hg={key:0,class:"fixed inset-0 z-[1050] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm"},Jg={class:"relative z-10 mx-3 flex w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-gray-200/70 bg-white/95 shadow-2xl ring-1 ring-black/5 transition-all dark:border-gray-700/60 dark:bg-gray-900/95 dark:ring-white/10 sm:mx-4"},Yg={class:"flex items-center justify-between border-b border-gray-100 bg-white/80 px-5 py-4 backdrop-blur dark:border-gray-800 dark:bg-gray-900/80"},Zg={class:"flex items-center gap-3"},Xg={class:"text-xs text-gray-500 dark:text-gray-400"},em=["disabled"],tm={class:"px-5 py-4"},sm={class:"mb-4 space-y-2"},am={class:"flex items-center justify-between text-sm"},rm={class:"flex items-center justify-between text-sm"},lm={class:"font-medium text-gray-700 dark:text-gray-300"},om={class:"flex items-center gap-3"},nm={class:"text-xs text-gray-500 dark:text-gray-400"},im={key:0,class:"mb-4 overflow-hidden rounded-xl border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"},dm={class:"flex items-center justify-between border-b border-gray-200 bg-gray-100 px-3 py-2 dark:border-gray-700 dark:bg-gray-800"},um={key:0,class:"text-xs text-gray-500 dark:text-gray-500"},pm={class:"max-h-40 overflow-y-auto p-3"},gm={key:0,class:"whitespace-pre-wrap text-sm text-gray-700 dark:text-gray-300"},mm={key:0,class:"inline-block h-4 w-1 animate-pulse bg-blue-500"},cm={key:1,class:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400"},ym={key:2,class:"text-sm text-red-600 dark:text-red-400"},xm={key:1,class:"mb-4 flex items-center justify-center gap-2 text-xs text-gray-500 dark:text-gray-400"},fm={class:"flex items-center justify-end gap-3 border-t border-gray-100 bg-gray-50/80 px-5 py-3 dark:border-gray-800 dark:bg-gray-900/50"},bm=["disabled"],vm=["disabled"],km={__name:"AccountTestModal",props:{show:{type:Boolean,default:!1},account:{type:Object,default:null}},emits:["close"],setup(Q,{emit:Ke}){const g=Q,xe=Ke,I=U("idle"),G=U(""),V=U(""),A=U(0),h=U(null),v=U(null),O=U("claude-sonnet-4-5-20250929"),X=le(()=>{if(!g.account)return"未知";const de=g.account.platform;return de==="claude"?"Claude OAuth":de==="claude-console"?"Claude Console":de}),H=le(()=>{if(!g.account)return"fas fa-question";const de=g.account.platform;return de==="claude"||de==="claude-console"?"fas fa-brain":"fas fa-robot"}),re=le(()=>{if(!g.account)return"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300";const de=g.account.platform;return de==="claude"?"bg-indigo-100 text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300":de==="claude-console"?"bg-purple-100 text-purple-700 dark:bg-purple-500/20 dark:text-purple-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300"}),W=le(()=>{switch(I.value){case"idle":return"准备就绪";case"testing":return"正在测试...";case"success":return"测试成功";case"error":return"测试失败";default:return"未知状态"}}),J=le(()=>{switch(I.value){case"idle":return"点击下方按钮开始测试账户连通性";case"testing":return"正在发送测试请求并等待响应";case"success":return"账户可以正常访问 Claude API";case"error":return V.value||"无法连接到 Claude API";default:return""}}),B=le(()=>{switch(I.value){case"idle":return"border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50";case"testing":return"border-blue-200 bg-blue-50 dark:border-blue-500/30 dark:bg-blue-900/20";case"success":return"border-green-200 bg-green-50 dark:border-green-500/30 dark:bg-green-900/20";case"error":return"border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-900/20";default:return"border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"}}),w=le(()=>{switch(I.value){case"idle":return"bg-gray-200 dark:bg-gray-700";case"testing":return"bg-blue-100 dark:bg-blue-500/30";case"success":return"bg-green-100 dark:bg-green-500/30";case"error":return"bg-red-100 dark:bg-red-500/30";default:return"bg-gray-200 dark:bg-gray-700"}}),m=le(()=>{switch(I.value){case"idle":return"fa-hourglass-start";case"testing":return"fa-spinner fa-spin";case"success":return"fa-check-circle";case"error":return"fa-exclamation-circle";default:return"fa-question-circle"}}),R=le(()=>{switch(I.value){case"idle":return"text-gray-500 dark:text-gray-400";case"testing":return"text-blue-500 dark:text-blue-400";case"success":return"text-green-500 dark:text-green-400";case"error":return"text-red-500 dark:text-red-400";default:return"text-gray-500 dark:text-gray-400"}}),te=le(()=>{switch(I.value){case"idle":return"text-gray-700 dark:text-gray-300";case"testing":return"text-blue-700 dark:text-blue-300";case"success":return"text-green-700 dark:text-green-300";case"error":return"text-red-700 dark:text-red-300";default:return"text-gray-700 dark:text-gray-300"}});function E(){if(!g.account)return"";const de=g.account.platform;return de==="claude"?`${Ms}/admin/claude-accounts/${g.account.id}/test`:de==="claude-console"?`${Ms}/admin/claude-console-accounts/${g.account.id}/test`:""}async function P(){if(!g.account)return;I.value="testing",G.value="",V.value="",A.value=0,h.value=Date.now(),v.value&&v.value.close();const de=E();if(!de){I.value="error",V.value="不支持的账户类型";return}try{const D=localStorage.getItem("authToken"),u=await fetch(de,{method:"POST",headers:{"Content-Type":"application/json",Authorization:D?`Bearer ${D}`:""},body:JSON.stringify({model:O.value})});if(!u.ok){const s=await u.json().catch(()=>({}));throw new Error(s.message||`HTTP ${u.status}`)}const Z=u.body.getReader(),ee=new TextDecoder;let we=!1;for(;!we;){const{done:s,value:Ce}=await Z.read();if(s){we=!0;continue}const $=ee.decode(Ce).split(` `);for(const M of $)if(M.startsWith("data: "))try{const ue=JSON.parse(M.substring(6));N(ue)}catch{}}}catch(D){I.value="error",V.value=D.message||"连接失败",A.value=Date.now()-h.value}}function N(de){switch(de.type){case"test_start":break;case"content":G.value+=de.text;break;case"message_stop":break;case"test_complete":A.value=Date.now()-h.value,de.success?I.value="success":(I.value="error",V.value=de.error||"测试失败");break;case"error":I.value="error",V.value=de.error||"未知错误",A.value=Date.now()-h.value;break}}function ke(){I.value!=="testing"&&(v.value&&(v.value.close(),v.value=null),I.value="idle",G.value="",V.value="",A.value=0,xe("close"))}return ye(()=>g.show,de=>{de&&(I.value="idle",G.value="",V.value="",A.value=0)}),As(()=>{v.value&&v.value.close()}),(de,D)=>{var u;return o(),qe(Kt,{to:"body"},[Q.show?(o(),n("div",Hg,[e("div",{class:"absolute inset-0",onClick:ke}),e("div",Jg,[e("div",Yg,[e("div",Zg,[e("div",{class:K(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-xl text-white shadow-lg",I.value==="success"?"bg-gradient-to-br from-green-500 to-emerald-500":I.value==="error"?"bg-gradient-to-br from-red-500 to-pink-500":"bg-gradient-to-br from-blue-500 to-indigo-500"])},[e("i",{class:K(["fas",I.value==="idle"?"fa-vial":I.value==="testing"?"fa-spinner fa-spin":I.value==="success"?"fa-check":"fa-times"])},null,2)],2),e("div",null,[D[0]||(D[0]=e("h3",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"},"账户连通性测试",-1)),e("p",Xg,p(((u=Q.account)==null?void 0:u.name)||"未知账户"),1)])]),e("button",{class:"flex h-9 w-9 items-center justify-center rounded-full bg-gray-100 text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200",disabled:I.value==="testing",onClick:ke},D[1]||(D[1]=[e("i",{class:"fas fa-times text-sm"},null,-1)]),8,em)]),e("div",tm,[e("div",sm,[e("div",am,[D[2]||(D[2]=e("span",{class:"text-gray-500 dark:text-gray-400"},"平台类型",-1)),e("span",{class:K(["inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium",re.value])},[e("i",{class:K(H.value)},null,2),k(" "+p(X.value),1)],2)]),e("div",rm,[D[3]||(D[3]=e("span",{class:"text-gray-500 dark:text-gray-400"},"测试模型",-1)),e("span",lm,p(O.value),1)])]),e("div",{class:K(["mb-4 rounded-xl border p-4 transition-all duration-300",B.value])},[e("div",om,[e("div",{class:K(["flex h-8 w-8 items-center justify-center rounded-lg",w.value])},[e("i",{class:K(["fas text-sm",m.value,R.value])},null,2)],2),e("div",null,[e("p",{class:K(["font-medium",te.value])},p(W.value),3),e("p",nm,p(J.value),1)])])],2),I.value!=="idle"?(o(),n("div",im,[e("div",dm,[D[4]||(D[4]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"AI 响应",-1)),G.value?(o(),n("span",um,p(G.value.length)+" 字符 ",1)):y("",!0)]),e("div",pm,[G.value?(o(),n("p",gm,[k(p(G.value)+" ",1),I.value==="testing"?(o(),n("span",mm)):y("",!0)])):I.value==="testing"?(o(),n("p",cm,D[5]||(D[5]=[e("i",{class:"fas fa-circle-notch fa-spin"},null,-1),k(" 等待响应中... ",-1)]))):I.value==="error"&&V.value?(o(),n("p",ym,p(V.value),1)):y("",!0)])])):y("",!0),A.value>0?(o(),n("div",xm,[D[6]||(D[6]=e("i",{class:"fas fa-clock"},null,-1)),e("span",null,"耗时 "+p((A.value/1e3).toFixed(2))+" 秒",1)])):y("",!0)]),e("div",fm,[e("button",{class:"rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition hover:bg-gray-50 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",disabled:I.value==="testing",onClick:ke}," 关闭 ",8,bm),e("button",{class:K(["flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium shadow-sm transition",I.value==="testing"?"cursor-not-allowed bg-gray-200 text-gray-400 dark:bg-gray-700 dark:text-gray-500":"bg-gradient-to-r from-blue-500 to-indigo-500 text-white hover:from-blue-600 hover:to-indigo-600 hover:shadow-md"]),disabled:I.value==="testing",onClick:P},[e("i",{class:K(["fas",I.value==="testing"?"fa-spinner fa-spin":"fa-play"])},null,2),k(" "+p(I.value==="testing"?"测试中...":I.value==="idle"?"开始测试":"重新测试"),1)],10,vm)])])])):y("",!0)])}}},hm={class:"accounts-container"},wm={class:"card p-4 sm:p-6"},$m={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Am={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Cm={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Um={class:"group relative min-w-[160px]"},Im={class:"group relative min-w-[140px]"},Tm={class:"group relative min-w-[160px]"},Km={class:"group relative min-w-[200px]"},Pm={class:"relative flex items-center"},_m={class:"flex w-full flex-col gap-3 sm:w-auto sm:flex-row sm:items-center sm:gap-3"},Mm={class:"relative"},Dm=["disabled"],Sm={class:"relative"},jm={key:0,class:"py-12 text-center"},zm={key:1,class:"py-12 text-center"},Rm={key:2,class:"table-wrapper hidden md:block"},Vm={class:"w-full"},Om={class:"sticky top-0 z-10 bg-gradient-to-b from-gray-50 to-gray-100/90 backdrop-blur-sm dark:from-gray-700 dark:to-gray-800/90"},Lm={key:0,class:"checkbox-column sticky left-0 z-20 min-w-[50px] px-3 py-4 text-left"},Em={class:"flex items-center"},Nm=["indeterminate"],qm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Gm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Fm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Wm={class:"min-w-[210px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"},Qm={class:"flex items-center gap-2"},Bm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Hm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Jm={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},Ym={key:0,class:"checkbox-column sticky left-0 z-10 px-3 py-3"},Zm={class:"flex items-center"},Xm=["value"],ec={class:"flex items-center"},tc={class:"min-w-0"},sc={class:"flex items-center gap-2"},ac=["title"],rc={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},lc={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},oc={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},nc={key:0,class:"my-2 flex flex-wrap items-center gap-2"},ic=["title"],dc=["title"],uc={class:"px-3 py-4"},pc={class:"flex items-center gap-1"},gc={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},mc={class:"text-xs font-medium text-yellow-700"},cc={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},yc={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},xc={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},fc={class:"text-xs font-medium text-gray-950"},bc={key:4,class:"flex items-center gap-1.5 rounded-lg border border-blue-200 bg-gradient-to-r from-blue-100 to-cyan-100 px-2.5 py-1 dark:border-blue-700 dark:from-blue-900/20 dark:to-cyan-900/20"},vc={key:5,class:"flex items-center gap-1.5 rounded-lg border border-teal-200 bg-gradient-to-r from-teal-100 to-green-100 px-2.5 py-1 dark:border-teal-700 dark:from-teal-900/20 dark:to-green-900/20"},kc={key:6,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},hc={class:"text-xs font-semibold text-indigo-800"},wc={class:"text-xs font-medium text-indigo-700"},$c={key:7,class:"flex items-center gap-1.5 rounded-lg border border-teal-200 bg-gradient-to-r from-teal-100 to-emerald-100 px-2.5 py-1 dark:border-teal-700 dark:from-teal-900/20 dark:to-emerald-900/20"},Ac={key:8,class:"flex items-center gap-1.5 rounded-lg border border-cyan-200 bg-gradient-to-r from-cyan-100 to-sky-100 px-2.5 py-1 dark:border-cyan-700 dark:from-cyan-900/20 dark:to-sky-900/20"},Cc={class:"text-xs font-medium text-cyan-700 dark:text-cyan-300"},Uc={key:9,class:"flex items-center gap-1.5 rounded-lg border border-amber-200 bg-gradient-to-r from-amber-100 to-yellow-100 px-2.5 py-1 dark:border-amber-700 dark:from-amber-900/20 dark:to-yellow-900/20"},Ic={key:10,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},Tc={class:"w-[100px] min-w-[100px] max-w-[100px] whitespace-nowrap px-3 py-4"},Kc={class:"flex flex-col gap-1"},Pc={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},_c={key:0},Mc={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},Dc=["title"],Sc={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},jc={class:"whitespace-nowrap px-3 py-4 text-sm"},zc={key:0,class:"space-y-1"},Rc={class:"flex items-center gap-2"},Vc={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Oc={class:"flex items-center gap-2"},Lc={class:"text-xs text-gray-600 dark:text-gray-300"},Ec={class:"flex items-center gap-2"},Nc={class:"text-xs text-gray-600 dark:text-gray-300"},qc={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Gc={key:1,class:"text-xs text-gray-400"},Fc={class:"whitespace-nowrap px-3 py-4"},Wc={key:0,class:"space-y-2"},Qc={key:0,class:"space-y-2"},Bc={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Hc={class:"flex items-center gap-2"},Jc={class:"flex-1"},Yc={class:"flex items-center gap-2"},Zc={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Xc={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},ey={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},ty={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},sy={class:"flex items-center gap-2"},ay={class:"flex-1"},ry={class:"flex items-center gap-2"},ly={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},oy={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},ny={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},iy={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},dy={class:"flex items-center gap-2"},uy={class:"flex-1"},py={class:"flex items-center gap-2"},gy={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},my={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},cy={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},yy={key:1,class:"space-y-2"},xy={key:0,class:"flex items-center gap-3 text-xs"},fy={class:"flex items-center gap-1"},by={class:"font-medium text-gray-900 dark:text-gray-100"},vy={class:"flex items-center gap-1"},ky={class:"font-medium text-gray-900 dark:text-gray-100"},hy={class:"flex items-center gap-2"},wy={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},$y={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Ay={class:"text-xs text-gray-600 dark:text-gray-400"},Cy={key:0,class:"font-medium text-indigo-600 dark:text-indigo-400"},Uy={key:2,class:"text-xs text-gray-400"},Iy={key:1,class:"space-y-3"},Ty={class:"flex items-center justify-between text-xs"},Ky={class:"font-medium text-gray-700 dark:text-gray-200"},Py={class:"flex items-center gap-2"},_y={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},My={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Dy={class:"text-xs text-gray-600 dark:text-gray-400"},Sy={class:"ml-2 text-gray-400"},jy={key:1,class:"text-sm text-gray-400"},zy={class:"space-y-1"},Ry={class:"flex items-center justify-between text-xs"},Vy={key:0,class:"font-medium text-gray-700 dark:text-gray-200"},Oy={key:0,class:"flex items-center gap-2"},Ly={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Ey={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-500 dark:bg-gray-700 dark:text-gray-300"},Ny={key:2,class:"space-y-2"},qy={key:0,class:"space-y-2"},Gy={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Fy={class:"flex items-center gap-2"},Wy={class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"},Qy={class:"flex-1"},By={class:"flex items-center gap-2"},Hy={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Jy={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Yy={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Zy={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Xy={class:"flex items-center gap-2"},ex={class:"inline-flex min-w-[32px] justify-center rounded-full bg-blue-100 px-2 py-0.5 text-[11px] font-medium text-blue-600 dark:bg-blue-500/20 dark:text-blue-300"},tx={class:"flex-1"},sx={class:"flex items-center gap-2"},ax={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},rx={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},lx={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},ox={key:1,class:"text-sm text-gray-400"},nx={key:3,class:"text-sm text-gray-400"},ix={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},dx={class:"whitespace-nowrap px-3 py-4"},ux={key:0,class:"flex items-center gap-2"},px={class:"h-2 w-16 rounded-full bg-gray-200"},gx={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},mx={key:1,class:"text-sm text-gray-400"},cx={class:"px-3 py-4 text-sm text-gray-600"},yx=["title"],xx={key:1,class:"text-gray-400"},fx={class:"whitespace-nowrap px-3 py-4"},bx={class:"flex flex-col gap-1"},vx={key:0},kx=["onClick"],hx=["onClick"],wx=["onClick"],$x=["onClick"],Ax={class:"operations-column sticky right-0 z-10 whitespace-nowrap px-3 py-4 text-sm font-medium"},Cx={key:0,class:"flex items-center gap-1"},Ux=["disabled","title","onClick"],Ix=["disabled","title","onClick"],Tx={class:"ml-1"},Kx=["onClick"],Px=["onClick"],_x=["onClick"],Mx=["onClick"],Dx={key:1,class:"flex items-center gap-1"},Sx=["disabled","title","onClick"],jx={class:"ml-1"},zx=["onClick"],Rx={key:3,class:"space-y-3 md:hidden"},Vx={class:"mb-3 flex items-start justify-between"},Ox={class:"flex items-center gap-3"},Lx=["value"],Ex={class:"text-sm font-semibold text-gray-900"},Nx={class:"mt-0.5 flex items-center gap-2"},qx={class:"text-xs text-gray-500 dark:text-gray-400"},Gx={class:"text-xs text-gray-500 dark:text-gray-400"},Fx={class:"mb-3 grid grid-cols-2 gap-3"},Wx={class:"space-y-1"},Qx={class:"flex items-center gap-1.5"},Bx={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Hx={class:"flex items-center gap-1.5"},Jx={class:"text-xs text-gray-600 dark:text-gray-400"},Yx={class:"flex items-center gap-1.5"},Zx={class:"text-xs text-gray-600 dark:text-gray-400"},Xx={key:0,class:"space-y-1"},ef={class:"flex items-center gap-1.5"},tf={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},sf={class:"flex items-center gap-1.5"},af={class:"text-xs text-gray-600 dark:text-gray-400"},rf={key:1,class:"text-sm font-semibold text-gray-400"},lf={class:"mb-3 space-y-2"},of={key:0,class:"space-y-2"},nf={key:0,class:"space-y-2"},df={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},uf={class:"flex items-center gap-2"},pf={class:"flex-1"},gf={class:"flex items-center gap-2"},mf={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},cf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},yf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},xf={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},ff={class:"flex items-center gap-2"},bf={class:"flex-1"},vf={class:"flex items-center gap-2"},kf={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},hf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},wf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},$f={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Af={class:"flex items-center gap-2"},Cf={class:"flex-1"},Uf={class:"flex items-center gap-2"},If={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Tf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Kf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Pf={key:1,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},_f={class:"flex items-center justify-between text-xs"},Mf={class:"flex items-center gap-1"},Df={class:"font-medium text-gray-700 dark:text-gray-200"},Sf={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},jf={class:"flex items-center justify-between text-xs"},zf={class:"text-gray-500 dark:text-gray-400"},Rf={key:0,class:"font-medium text-indigo-600"},Vf={key:1,class:"text-gray-500"},Of={key:2,class:"text-xs text-gray-400"},Lf={key:1,class:"space-y-2"},Ef={key:0,class:"space-y-2"},Nf={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},qf={class:"flex items-center gap-2"},Gf={class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"},Ff={class:"flex-1"},Wf={class:"flex items-center gap-2"},Qf={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Bf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Hf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Jf={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Yf={class:"flex items-center gap-2"},Zf={class:"inline-flex min-w-[32px] justify-center rounded-full bg-blue-100 px-2 py-0.5 text-[11px] font-medium text-blue-600 dark:bg-blue-500/20 dark:text-blue-300"},Xf={class:"flex-1"},eb={class:"flex items-center gap-2"},tb={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},sb={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},ab={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},rb={key:1,class:"text-xs text-gray-400"},lb={class:"flex items-center justify-between text-xs"},ob={class:"text-gray-700 dark:text-gray-200"},nb={key:2,class:"flex items-center justify-between text-xs"},ib={class:"text-gray-700 dark:text-gray-200"},db={class:"flex items-center justify-between text-xs"},ub={class:"font-medium text-gray-700 dark:text-gray-200"},pb={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},gb=["disabled","onClick"],mb=["onClick"],cb=["onClick"],yb=["onClick"],xb=["onClick"],fb={key:0,class:"mt-4 flex flex-col items-center justify-between gap-4 sm:mt-6 sm:flex-row"},bb={class:"flex w-full flex-col items-center gap-3 sm:w-auto sm:flex-row"},vb={class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},kb={class:"flex items-center gap-2"},hb=["value"],wb={class:"flex items-center gap-2"},$b=["disabled"],Ab={class:"flex items-center gap-1"},Cb={key:1,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},Ub=["onClick"],Ib={key:2,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},Tb=["disabled"],zs="accountsPageSize",Kb={__name:"AccountsView",setup(Q){const{showConfirmModal:Ke,confirmOptions:g,showConfirm:xe,handleConfirm:I,handleCancel:G}=Vs(),V=U([]),A=U(!1),h=U("name"),v=U(""),O=U("asc"),X=U([]),H=U({}),re=U([]),W=U("all"),J=U("all"),B=U(""),w=()=>{const r=localStorage.getItem(zs);if(r){const a=parseInt(r,10);if([10,20,50,100].includes(a))return a}return 10},m=[10,20,50,100],R=U(w()),te=U(1),E=U([]),P=U(!1),N=U(!1),ke=U(!1),de=U(!1),D=U(!1),u=U(null),Z=U([]),ee=U({}),we=U({}),s=U(""),Ce=["claude","claude-console","openai","openai-responses","gemini","droid","gemini-api"],q=U(null),$=U(null),M=U(!1),ue=U(null),ie=U(null),Ie=U(!1),Ve=U(!1),Be=U(!1),gt=U(!1),T=U(!1),wt=U(new Map),bt=U([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),mt=U([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fab fa-google"},{value:"gemini-api",label:"Gemini API",icon:"fa-key"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"azure_openai",label:"Azure OpenAI",icon:"fab fa-microsoft"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"},{value:"openai-responses",label:"OpenAI-Responses",icon:"fa-server"},{value:"ccr",label:"CCR",icon:"fa-code-branch"},{value:"droid",label:"Droid",icon:"fa-robot"}]),it=le(()=>{const r=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return re.value.forEach(a=>{r.push({value:a.id,label:`${a.name} (${a.platform==="claude"?"Claude":a.platform==="gemini"?"Gemini":a.platform==="openai"?"OpenAI":"Droid"})`,icon:a.platform==="claude"?"fa-brain":a.platform==="gemini"?"fa-robot":a.platform==="openai"?"fa-openai":"fa-robot"})}),r}),tt=le(()=>ke.value),Ze=U(!1),Xe=U(null),Ge=U(!1),st=U(null),vt=r=>{const a=new Set;return[r==null?void 0:r.name,r==null?void 0:r.email,r==null?void 0:r.accountName,r==null?void 0:r.owner,r==null?void 0:r.ownerName,r==null?void 0:r.ownerDisplayName,r==null?void 0:r.displayName,r==null?void 0:r.username,r==null?void 0:r.identifier,r==null?void 0:r.alias,r==null?void 0:r.title,r==null?void 0:r.label].forEach(l=>{if(typeof l=="string"){const F=l.trim();F&&a.add(F)}}),Array.isArray(r==null?void 0:r.groupInfos)&&r.groupInfos.forEach(l=>{if(l&&typeof l.name=="string"){const F=l.name.trim();F&&a.add(F)}}),Object.entries(r||{}).forEach(([l,F])=>{if(typeof F=="string"){const ce=l.toLowerCase();if(ce.includes("name")||ce.includes("email")){const ne=F.trim();ne&&a.add(ne)}}}),Array.from(a)},$t=(r,a)=>a?vt(r).some(x=>x.toLowerCase().includes(a)):!0,f=r=>!!r&&Ce.includes(r.platform),c=r=>{var x;return["claude","claude-console","openai","openai-responses","gemini","gemini-api","ccr"].includes(r.platform)&&(r.status==="unauthorized"||r.status!=="active"||((x=r.rateLimitStatus)==null?void 0:x.isRateLimited)||r.rateLimitStatus==="limited"||!r.isActive)},S=r=>{const a=[];return c(r)&&a.push({key:"reset",label:"重置状态",icon:"fa-redo",color:"orange",handler:()=>Gt(r)}),f(r)&&a.push({key:"usage",label:"详情",icon:"fa-chart-line",color:"indigo",handler:()=>Le(r)}),et(r)&&a.push({key:"test",label:"测试",icon:"fa-vial",color:"blue",handler:()=>at(r)}),a.push({key:"delete",label:"删除",icon:"fa-trash",color:"red",handler:()=>Dt(r)}),a},Le=async r=>{if(!f(r)){z("该账户类型暂不支持查看详情","warning");return}u.value=r,de.value=!0,D.value=!0,Z.value=[],ee.value={},we.value={},s.value="";try{const a=await L.get(`/admin/accounts/${r.id}/usage-history?platform=${r.platform}&days=30`);if(a.success){const x=a.data||{};Z.value=x.history||[],ee.value=x.summary||{},we.value=x.overview||{},s.value=x.generatedAt||""}else z(a.error||"加载账号使用详情失败","error")}catch{z("加载账号使用详情失败","error")}finally{D.value=!1}},Pt=()=>{de.value=!1,D.value=!1,u.value=null},dt=["claude","claude-console"],et=r=>!!r&&dt.includes(r.platform),at=r=>{if(!et(r)){z("该账户类型暂不支持测试","warning");return}ue.value=r,M.value=!0},ct=()=>{M.value=!1,ue.value=null},Fe=le(()=>{let r=V.value;const a=B.value.trim();if(a){const l=a.toLowerCase();r=r.filter(F=>$t(F,l))}return v.value?[...r].sort((l,F)=>{var Se,je,xt,ve,Qe,kt,Ne,nt,ft,fe,be,Re;let ce=l[v.value],ne=F[v.value];return v.value==="dailyTokens"?(ce=((je=(Se=l.usage)==null?void 0:Se.daily)==null?void 0:je.allTokens)||0,ne=((ve=(xt=F.usage)==null?void 0:xt.daily)==null?void 0:ve.allTokens)||0):v.value==="dailyRequests"?(ce=((kt=(Qe=l.usage)==null?void 0:Qe.daily)==null?void 0:kt.requests)||0,ne=((nt=(Ne=F.usage)==null?void 0:Ne.daily)==null?void 0:nt.requests)||0):v.value==="totalTokens"&&(ce=((fe=(ft=l.usage)==null?void 0:ft.total)==null?void 0:fe.allTokens)||0,ne=((Re=(be=F.usage)==null?void 0:be.total)==null?void 0:Re.allTokens)||0),v.value==="lastUsed"&&(ce=l.lastUsedAt?new Date(l.lastUsedAt).getTime():0,ne=F.lastUsedAt?new Date(F.lastUsedAt).getTime():0),v.value==="status"&&(ce=l.isActive?1:0,ne=F.isActive?1:0),cene?O.value==="asc"?1:-1:0}):r}),We=le(()=>{const r=Fe.value.length;return Math.ceil(r/R.value)||0}),rt=le(()=>{const r=We.value,a=te.value,x=[];if(r<=7)for(let l=1;l<=r;l++)x.push(l);else{let l=Math.max(1,a-2),F=Math.min(r,a+2);a<=3?F=5:a>=r-2&&(l=r-4);for(let ce=l;ce<=F;ce++)x.push(ce)}return x}),At=le(()=>{const r=rt.value;return r.length===0?!1:r[0]>1}),Ct=le(()=>{const r=rt.value;return r.length===0?!1:r[r.length-1]{const r=rt.value;return r.length===0?!1:At.value&&r[0]>2}),lt=le(()=>{const r=rt.value;return r.length===0?!1:Ct.value&&r[r.length-1]{const r=(te.value-1)*R.value,a=r+R.value;return Fe.value.slice(r,a)}),Ee=()=>{const r=Ue.value.map(l=>l.id),a=r.filter(l=>E.value.includes(l)).length,x=r.length;a===0?(P.value=!1,N.value=!1):a===x?(P.value=!0,N.value=!1):(P.value=!1,N.value=!0)},ts=()=>{if(P.value)Ue.value.forEach(r=>{E.value.includes(r.id)||E.value.push(r.id)});else{const r=new Set(Ue.value.map(a=>a.id));E.value=E.value.filter(a=>!r.has(a))}Ee()},ss=()=>{ke.value=!ke.value,ke.value?Ee():(E.value=[],P.value=!1,N.value=!1)},yt=()=>{const r=new Set(V.value.map(a=>a.id));E.value=E.value.filter(a=>r.has(a)),Ee()},He=async(r=!1)=>{A.value=!0;try{const a={};J.value!=="all"&&(a.platform=J.value),W.value!=="all"&&(a.groupId=W.value);const x=[];if(J.value==="all")x.push(L.get("/admin/claude-accounts",{params:a}),L.get("/admin/claude-console-accounts",{params:a}),L.get("/admin/bedrock-accounts",{params:a}),L.get("/admin/gemini-accounts",{params:a}),L.get("/admin/openai-accounts",{params:a}),L.get("/admin/azure-openai-accounts",{params:a}),L.get("/admin/openai-responses-accounts",{params:a}),L.get("/admin/ccr-accounts",{params:a}),L.get("/admin/droid-accounts",{params:a}),L.get("/admin/gemini-api-accounts",{params:a}));else switch(J.value){case"claude":x.push(L.get("/admin/claude-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":x.push(Promise.resolve({success:!0,data:[]}),L.get("/admin/claude-console-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/bedrock-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"gemini":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/gemini-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"openai":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"azure_openai":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/azure-openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"openai-responses":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/openai-responses-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"ccr":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/ccr-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"droid":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/droid-accounts",{params:a}),Promise.resolve({success:!0,data:[]}));break;case"gemini-api":x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),L.get("/admin/gemini-api-accounts",{params:a}));break;default:x.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break}await Promise.all([Rt(r),os(r)]);const[l,F,ce,ne,Se,je,xt,ve,Qe,kt]=await Promise.all(x),Ne=[],nt=H.value;if(l.success){const fe=(l.data||[]).map(be=>{var Pe;const Re=((Pe=nt.claudeAccountId)==null?void 0:Pe[be.id])||0;return{...be,platform:"claude",boundApiKeysCount:Re}});Ne.push(...fe)}if(F.success){const fe=(F.data||[]).map(be=>{var Pe;const Re=((Pe=nt.claudeConsoleAccountId)==null?void 0:Pe[be.id])||0;return{...be,platform:"claude-console",boundApiKeysCount:Re}});Ne.push(...fe)}if(ce.success){const fe=(ce.data||[]).map(be=>({...be,platform:"bedrock",boundApiKeysCount:0}));Ne.push(...fe)}if(ne.success){const fe=(ne.data||[]).map(be=>{var Pe;const Re=((Pe=nt.geminiAccountId)==null?void 0:Pe[be.id])||0;return{...be,platform:"gemini",boundApiKeysCount:Re}});Ne.push(...fe)}if(Se.success){const fe=(Se.data||[]).map(be=>{var Pe;const Re=((Pe=nt.openaiAccountId)==null?void 0:Pe[be.id])||0;return{...be,platform:"openai",boundApiKeysCount:Re}});Ne.push(...fe)}if(je&&je.success){const fe=(je.data||[]).map(be=>{var Pe;const Re=((Pe=nt.azureOpenaiAccountId)==null?void 0:Pe[be.id])||0;return{...be,platform:"azure_openai",boundApiKeysCount:Re}});Ne.push(...fe)}if(xt&&xt.success){const fe=(xt.data||[]).map(be=>{var Pe;const Re=((Pe=nt.openaiAccountId)==null?void 0:Pe[`responses:${be.id}`])||0;return{...be,platform:"openai-responses",boundApiKeysCount:Re}});Ne.push(...fe)}if(ve&&ve.success){const fe=(ve.data||[]).map(be=>({...be,platform:"ccr",boundApiKeysCount:0}));Ne.push(...fe)}if(Qe&&Qe.success){const fe=(Qe.data||[]).map(be=>{var Pe;const Re=((Pe=nt.droidAccountId)==null?void 0:Pe[be.id])||be.boundApiKeysCount||0;return{...be,platform:"droid",boundApiKeysCount:Re}});Ne.push(...fe)}if(kt&&kt.success){const fe=(kt.data||[]).map(be=>{var Pe;const Re=((Pe=nt.geminiAccountId)==null?void 0:Pe[`api:${be.id}`])||0;return{...be,platform:"gemini-api",boundApiKeysCount:Re}});Ne.push(...fe)}let ft=Ne;W.value!=="all"&&(W.value==="ungrouped"?ft=Ne.filter(fe=>!fe.groupInfos||fe.groupInfos.length===0):ft=Ne.filter(fe=>!fe.groupInfos||fe.groupInfos.length===0?!1:fe.groupInfos.some(be=>be.id===W.value))),ft=ft.map(fe=>{const be=Vt(fe.proxyConfig||fe.proxy);return{...fe,proxyConfig:be||null}}),V.value=ft,yt(),ft.some(fe=>fe.platform==="claude")&&as().catch(fe=>{console.debug("Claude usage loading failed:",fe)})}catch{z("加载账户失败","error")}finally{A.value=!1}},as=async()=>{try{const r=await L.get("/admin/claude-accounts/usage");if(r.success&&r.data){const a=r.data;V.value=V.value.map(x=>x.platform==="claude"&&a[x.id]?{...x,claudeUsage:a[x.id]}:x)}}catch(r){console.debug("Failed to load Claude usage data:",r)}},ut=r=>{r&&(v.value===r?O.value=O.value==="asc"?"desc":"asc":(v.value=r,O.value="asc"))},It=r=>{if(r==null)return"0";const a=Number(r);return a>=1e6?(a/1e6).toFixed(2):a>=1e3?(a/1e6).toFixed(4):(a/1e6).toFixed(6)},zt=r=>{if(!r)return"从未使用";const a=new Date(r),l=new Date-a;return l<6e4?"刚刚":l<36e5?`${Math.floor(l/6e4)} 分钟前`:l<864e5?`${Math.floor(l/36e5)} 小时前`:l<6048e5?`${Math.floor(l/864e5)} 天前`:a.toLocaleDateString("zh-CN")},rs=()=>{B.value="",te.value=1},Rt=async(r=!1)=>{if(!(!r&&Be.value))try{const a=await L.get("/admin/accounts/binding-counts");a.success&&(H.value=a.data||{},Be.value=!0)}catch{H.value={}}},ls=async(r=!1)=>{var a;if(!(!r&&Ve.value))try{const x=await L.get("/admin/api-keys");x.success&&(X.value=((a=x.data)==null?void 0:a.items)||x.data||[],Ve.value=!0)}catch{}},os=async(r=!1)=>{if(!(!r&>.value))try{const a=await L.get("/admin/account-groups");a.success&&(re.value=a.data||[],gt.value=!0)}catch{}},ns=()=>{Ve.value=!1,Be.value=!1,gt.value=!1,T.value=!1,wt.value.clear()},is=()=>{te.value=1,He()},ds=()=>{te.value=1,He()};function Vt(r){if(!r)return null;let a=r;if(typeof r=="string")try{a=JSON.parse(r)}catch{return null}if(!a||typeof a!="object")return null;const x=a.proxy&&typeof a.proxy=="object"?a.proxy:a,l=typeof x.host=="string"?x.host.trim():x.host!==void 0&&x.host!==null?String(x.host).trim():"",F=x.port!==void 0&&x.port!==null?String(x.port).trim():"";if(!l||!F)return null;const ce=typeof x.type=="string"&&x.type.trim()?x.type.trim():"socks5",ne=typeof x.username=="string"?x.username:x.username!==void 0&&x.username!==null?String(x.username):"",Se=typeof x.password=="string"?x.password:x.password!==void 0&&x.password!==null?String(x.password):"";return{type:ce,host:l,port:F,username:ne,password:Se}}const _t=r=>{const a=Vt(r);if(!a)return null;const x=a.type.toLowerCase()==="socks5"?"S5":a.type.toUpperCase();let l=a.host;l.length>15&&(l=l.substring(0,12)+"...");let F=`${x}://${l}:${a.port}`;return a.username&&(F=`${x}://***@${l}:${a.port}`),F},Ot=(r,a)=>{if(!r||!a)return"--";const x=new Date(r),l=new Date(a),F=x.getHours().toString().padStart(2,"0"),ce=x.getMinutes().toString().padStart(2,"0"),ne=l.getHours().toString().padStart(2,"0"),Se=l.getMinutes().toString().padStart(2,"0");return`${F}:${ce} - ${ne}:${Se}`},Lt=r=>{if(!r||r<=0)return"已结束";const a=Math.floor(r/60),x=r%60;return a>0?`${a}小时${x}分钟`:`${x}分钟`},us=r=>{if(!r||r<=0)return"";r=Math.floor(r);const a=Math.floor(r/1440),x=r%1440,l=Math.floor(x/60),F=x%60;return a>0?l>0?`${a}天${l}小时`:`${a}天`:l>0?F>0?`${l}小时${F}分钟`:`${l}小时`:`${F}分钟`},ps=()=>{Xe.value=null,Ze.value=!0},Et=()=>{Ze.value=!1,Xe.value=null},Mt=r=>{st.value=r,Ge.value=!0},Nt=r=>!r||!r.id?[]:X.value.filter(a=>{const x=r.id;return a.claudeAccountId===x||a.claudeConsoleAccountId===x||a.geminiAccountId===x||a.openaiAccountId===x||a.azureOpenaiAccountId===x||a.openaiAccountId===`responses:${x}`||a.geminiAccountId===`api:${x}`}),gs=r=>{switch(r.platform){case"claude":return`/admin/claude-accounts/${r.id}`;case"claude-console":return`/admin/claude-console-accounts/${r.id}`;case"bedrock":return`/admin/bedrock-accounts/${r.id}`;case"openai":return`/admin/openai-accounts/${r.id}`;case"azure_openai":return`/admin/azure-openai-accounts/${r.id}`;case"openai-responses":return`/admin/openai-responses-accounts/${r.id}`;case"ccr":return`/admin/ccr-accounts/${r.id}`;case"gemini":return`/admin/gemini-accounts/${r.id}`;case"droid":return`/admin/droid-accounts/${r.id}`;case"gemini-api":return`/admin/gemini-api-accounts/${r.id}`;default:return null}},qt=async r=>{var x,l;const a=gs(r);if(!a)return{success:!1,message:"不支持的账户类型"};try{const F=await L.delete(a);return F.success?{success:!0,data:F}:{success:!1,message:F.message||"删除失败"}}catch(F){return{success:!1,message:((l=(x=F.response)==null?void 0:x.data)==null?void 0:l.message)||F.message||"删除失败"}}},Dt=async r=>{const x=Nt(r).length;let l=`确定要删除账户 "${r.name}" 吗?`;if(x>0&&(l+=` ⚠️ 注意:此账号有 ${x} 个 API Key 绑定。`,l+=` 删除后,这些 API Key 将自动切换为共享池模式。`),l+=` 此操作不可恢复。`,!await xe("删除账户",l,"删除","取消"))return;const ce=await qt(r);if(ce.success){const ne=ce.data;let Se="账户已成功删除";(ne==null?void 0:ne.unboundKeys)>0&&(Se+=`,${ne.unboundKeys} 个 API Key 已切换为共享池模式`),z(Se,"success"),E.value=E.value.filter(je=>je!==r.id),Ee(),T.value=!1,Ve.value=!1,Be.value=!1,He(),ls(!0),Rt(!0)}else z(ce.message||"删除失败","error")},ms=async()=>{var xt;if(E.value.length===0){z("请先选择要删除的账户","warning");return}const r=new Map(V.value.map(ve=>[ve.id,ve])),a=E.value.map(ve=>r.get(ve)).filter(ve=>!!ve);if(a.length===0){z("选中的账户已不存在","warning"),E.value=[],Ee();return}let x=`确定要删除选中的 ${a.length} 个账户吗?此操作不可恢复。`;const l=a.map(ve=>({account:ve,boundKeys:Nt(ve)})).filter(ve=>ve.boundKeys.length>0);if(l.length>0&&(x+=` ⚠️ 以下账户存在绑定的 API Key,将自动解绑:`,l.forEach(({account:ve,boundKeys:Qe})=>{const kt=ve.name||ve.email||ve.accountName||ve.id;x+=` - ${kt}: ${Qe.length} 个`}),x+=` 删除后,这些 API Key 将切换为共享池模式。`),x+=` 请再次确认是否继续。`,!await xe("批量删除账户",x,"删除","取消"))return;let ce=0,ne=0,Se=0;const je=[];for(const ve of a){const Qe=await qt(ve);Qe.success?(ce+=1,Se+=((xt=Qe.data)==null?void 0:xt.unboundKeys)||0):(ne+=1,je.push({name:ve.name||ve.email||ve.accountName||ve.id,message:Qe.message||"删除失败"}))}if(ce>0){let ve=`成功删除 ${ce} 个账户`;Se>0&&(ve+=`,${Se} 个 API Key 已切换为共享池模式`),z(ve,ne>0?"warning":"success"),E.value=[],P.value=!1,N.value=!1,T.value=!1,Ve.value=!1,await He(!0)}if(ne>0){const ve=je.map(Qe=>`${Qe.name}: ${Qe.message}`).join(` `);z(`有 ${ne} 个账户删除失败: ${ve}`,ce>0?"warning":"error")}Ee()},Gt=async r=>{if(r.isResetting)return;let a=!1;if(window.showConfirm?a=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):a=confirm("确定要重置此账户的所有异常状态吗?"),!!a)try{r.isResetting=!0;let x="";if(r.platform==="openai")x=`/admin/openai-accounts/${r.id}/reset-status`;else if(r.platform==="openai-responses")x=`/admin/openai-responses-accounts/${r.id}/reset-status`;else if(r.platform==="claude")x=`/admin/claude-accounts/${r.id}/reset-status`;else if(r.platform==="claude-console")x=`/admin/claude-console-accounts/${r.id}/reset-status`;else if(r.platform==="ccr")x=`/admin/ccr-accounts/${r.id}/reset-status`;else if(r.platform==="droid")x=`/admin/droid-accounts/${r.id}/reset-status`;else if(r.platform==="gemini-api")x=`/admin/gemini-api-accounts/${r.id}/reset-status`;else if(r.platform==="gemini")x=`/admin/gemini-accounts/${r.id}/reset-status`;else{z("不支持的账户类型","error"),r.isResetting=!1;return}const l=await L.post(x);l.success?(z("账户状态已重置","success"),He(!0)):z(l.message||"状态重置失败","error")}catch{z("状态重置失败","error")}finally{r.isResetting=!1}},St=async r=>{if(!r.isTogglingSchedulable)try{r.isTogglingSchedulable=!0;let a;if(r.platform==="claude")a=`/admin/claude-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="claude-console")a=`/admin/claude-console-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="bedrock")a=`/admin/bedrock-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="gemini")a=`/admin/gemini-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="openai")a=`/admin/openai-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="azure_openai")a=`/admin/azure-openai-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="openai-responses")a=`/admin/openai-responses-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="ccr")a=`/admin/ccr-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="droid")a=`/admin/droid-accounts/${r.id}/toggle-schedulable`;else if(r.platform==="gemini-api")a=`/admin/gemini-api-accounts/${r.id}/toggle-schedulable`;else{z("该账户类型暂不支持调度控制","warning");return}const x=await L.put(a);x.success?(r.schedulable=x.schedulable,z(x.schedulable?"已启用调度":"已禁用调度","success")):z(x.message||"操作失败","error")}catch{z("切换调度状态失败","error")}finally{r.isTogglingSchedulable=!1}},Ft=()=>{Ze.value=!1,z("账户创建成功","success"),ns(),He()},Wt=()=>{Ge.value=!1,z("账户更新成功","success"),T.value=!1,He()},cs=r=>!r.lastRefreshAt||r.lastRefreshAt===""?"Setup":"OAuth",ys=()=>"OAuth",xs=()=>"OAuth",Qt=r=>{if(!r||typeof r!="object")return"OAuth";const a=r.isApiKeyMode??r.is_api_key_mode??r.apiKeyMode??r.api_key_mode;if(a===!0||a==="true"||a===1||a==="1")return"API Key";const x=r.authenticationMethod||r.authMethod||r.authentication_mode||r.authenticationMode||r.authentication_method||r.auth_type||r.authType||r.authentication_type||r.authenticationType||r.droidAuthType||r.droidAuthenticationMethod||r.method||r.auth||"";return typeof x=="string"&&x.trim().toLowerCase().replace(/[\s_-]/g,"")==="apikey"?"API Key":"OAuth"},fs=r=>Qt(r)==="API Key",Bt=r=>{if(!r||typeof r!="object")return 0;if(Array.isArray(r.apiKeys))return r.apiKeys.filter(x=>x.status!=="error").length;if(typeof r.apiKeys=="string"&&r.apiKeys.trim())try{const x=JSON.parse(r.apiKeys);if(Array.isArray(x))return x.filter(l=>l.status!=="error").length}catch{}const a=[r.apiKeyCount,r.api_key_count,r.apiKeysCount,r.api_keys_count];for(const x of a){const l=Number(x);if(Number.isFinite(l)&&l>=0)return l}return 0},bs=r=>{const a=Bt(r),x="ml-1 inline-flex items-center gap-1 rounded-md border px-1.5 py-[1px] text-[10px] font-medium shadow-sm backdrop-blur-sm";return a>0?[x,"border-cyan-200 bg-cyan-50/90 text-cyan-700 dark:border-cyan-500/40 dark:bg-cyan-900/40 dark:text-cyan-200"]:[x,"border-rose-200 bg-rose-50/90 text-rose-600 dark:border-rose-500/40 dark:bg-rose-900/40 dark:text-rose-200"]},vs=r=>{if(r.subscriptionInfo)try{const a=typeof r.subscriptionInfo=="string"?JSON.parse(r.subscriptionInfo):r.subscriptionInfo;return a.hasClaudeMax===!0?"Claude Max":a.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch{return"Claude"}return"Claude"},Ht=r=>{if(r.schedulable!==!1)return null;if(r.platform==="claude-console"){if(r.status==="unauthorized")return"API Key无效或已过期(401错误)";if(r.overloadStatus==="overloaded")return"服务过载(529错误)";if(r.rateLimitStatus==="limited")return"触发限流(429错误)";if(r.status==="blocked"&&r.errorMessage)return r.errorMessage}if(r.platform==="claude"){if(r.status==="unauthorized")return"认证失败(401错误)";if(r.status==="temp_error"&&r.errorMessage||r.status==="error"&&r.errorMessage)return r.errorMessage;if(r.isRateLimited)return"触发限流(429错误)";if(r.stoppedReason)return r.stoppedReason;if(r.fiveHourAutoStopped==="true"||r.fiveHourAutoStopped===!0)return"5小时使用量接近限制,已自动停止调度"}if(r.platform==="openai"){if(r.status==="unauthorized")return"认证失败(401错误)";if(r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.isRateLimited)return"触发限流(429错误)";if(r.status==="error"&&r.errorMessage)return r.errorMessage}if(r.platform==="openai-responses"){if(r.status==="unauthorized")return"认证失败(401错误)";if(r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.isRateLimited)return"触发限流(429错误)";if(r.status==="error"&&r.errorMessage)return r.errorMessage;if(r.status==="rateLimited")return"触发限流(429错误)"}return r.stoppedReason?r.stoppedReason:r.errorMessage?r.errorMessage:"手动停止调度"},d=r=>r.status==="blocked"?"已封锁":r.status==="unauthorized"?"异常":r.isRateLimited||r.status==="rate_limited"||r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"?"限流中":r.status==="temp_error"?"临时异常":r.status==="error"||!r.isActive?"错误":r.schedulable===!1?"已暂停":"正常",t=r=>r.status==="blocked"||r.status==="unauthorized"?"bg-red-100 text-red-800":r.isRateLimited||r.status==="rate_limited"||r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"||r.status==="temp_error"?"bg-orange-100 text-orange-800":r.status==="error"||!r.isActive?"bg-red-100 text-red-800":r.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",ae=r=>r.status==="blocked"||r.status==="unauthorized"?"bg-red-500":r.isRateLimited||r.status==="rate_limited"||r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"||r.status==="temp_error"?"bg-orange-500":r.status==="error"||!r.isActive?"bg-red-500":r.schedulable===!1?"bg-gray-500":"bg-green-500",pe=r=>zt(r),i=(r,a=null)=>{if(!r)return"bg-gradient-to-r from-blue-500 to-indigo-600";if(a&&(a.isRateLimited||a.status==="rate_limited"||a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.rateLimitStatus==="limited"))return"bg-gradient-to-r from-red-500 to-red-600";const l=String(r).toLowerCase();return l==="rejected"?"bg-gradient-to-r from-red-500 to-red-600":l==="allowed_warning"?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-blue-500 to-indigo-600"},ge=r=>r.authType==="oauth",oe=r=>!r||r.utilization===null||r.utilization===void 0?"-":`${r.utilization}%`,_e=r=>!r||r.utilization===null||r.utilization===void 0?"0%":`${r.utilization}%`,De=r=>{const a=(r==null?void 0:r.utilization)||0;return a<60?"bg-gradient-to-r from-blue-500 to-indigo-600":a<90?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-red-500 to-red-600"},Te=r=>{if(!r||!r.remainingSeconds)return"-";const a=r.remainingSeconds,x=Math.floor(a/86400),l=Math.floor(a%86400/3600),F=Math.floor(a%3600/60);return x>0?l>0?`${x}天${l}小时`:`${x}天`:l>0?F>0?`${l}小时${F}分钟`:`${l}小时`:F>0?`${F}分钟`:`${Math.floor(a%60)}秒`},C=r=>{if(!r)return null;const a=typeof r.usedPercent=="number"&&!Number.isNaN(r.usedPercent)?r.usedPercent:null,x=typeof r.resetAfterSeconds=="number"&&!Number.isNaN(r.resetAfterSeconds)?r.resetAfterSeconds:null,l=typeof r.remainingSeconds=="number"?r.remainingSeconds:null,F=r.resetAt?Date.parse(r.resetAt):null;return x!==null&&(l!==null&&l<=0||F!==null&&!Number.isNaN(F)&&Date.now()>=F)?0:a===null?null:Math.max(0,Math.min(100,a))},_=r=>{const a=C(r);return a===null?"bg-gradient-to-r from-gray-300 to-gray-400":a>=90?"bg-gradient-to-r from-red-500 to-red-600":a>=75?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-emerald-500 to-teal-500"},se=r=>{const a=C(r);return a===null?"--":`${a.toFixed(1)}%`},Y=r=>{const a=C(r);return a===null?"0%":`${a}%`},me=r=>r==="secondary"?"周限":"5h",$e=r=>{if(!r)return"--";let a=r.remainingSeconds;if(a==null&&(a=r.resetAfterSeconds),a==null||Number.isNaN(Number(a)))return"--";a=Math.max(0,Math.floor(Number(a)));const x=Math.floor(a/86400),l=Math.floor(a%86400/3600),F=Math.floor(a%3600/60),ce=a%60;return x>0?l>0?`${x}天${l}小时`:`${x}天`:l>0?F>0?`${l}小时${F}分钟`:`${l}小时`:F>0?`${F}分钟`:`${ce}秒`},ot=r=>!r||r===0?"0.0000":r<1e-4?r.toExponential(2):r<.01?r.toFixed(6):r<1?r.toFixed(4):r.toFixed(2),pt=r=>{var l,F;const a=Number(((F=(l=r==null?void 0:r.usage)==null?void 0:l.daily)==null?void 0:F.cost)||0),x=Number((r==null?void 0:r.dailyQuota)||0);return!x||x<=0?0:a/x*100},Ls=r=>r>=90?"bg-red-500":r>=70?"bg-yellow-500":"bg-green-500",Cs=r=>{const a=Number((r==null?void 0:r.maxConcurrentTasks)||0);if(!a||a<=0)return 0;const x=Number((r==null?void 0:r.activeTaskCount)||0);return Math.min(100,x/a*100)},Es=r=>r>=100?"bg-red-500":r>=80?"bg-yellow-500":"bg-green-500",Ns=r=>{const a=Number((r==null?void 0:r.maxConcurrentTasks)||0);if(!a||a<=0)return"text-gray-500 dark:text-gray-400";const x=Number((r==null?void 0:r.activeTaskCount)||0);return x>=a?"text-red-600 dark:text-red-400":x>=a*.8?"text-yellow-600 dark:text-yellow-400":"text-gray-700 dark:text-gray-200"},qs=r=>{var l,F;const a=Number(((F=(l=r==null?void 0:r.usage)==null?void 0:l.daily)==null?void 0:F.cost)||0),x=Number((r==null?void 0:r.dailyQuota)||0);return!x||x<=0?"0.00":Math.max(0,x-a).toFixed(2)},Ks=r=>!r.usage||!r.usage.daily?"0.0000":r.usage.daily.cost!==void 0?ot(r.usage.daily.cost):"0.0000";ye(B,()=>{te.value=1,Ee()}),ye(R,r=>{localStorage.setItem(zs,r.toString()),Ee()}),ye(()=>Fe.value.length,()=>{te.value>We.value&&(te.value=We.value||1),Ee()}),ye(h,r=>{const a={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};a[r]&&ut(a[r])}),ye(te,()=>{Ee()}),ye(Ue,()=>{Ee(),Is(()=>{Jt()})}),ye(V,()=>{yt()});const Ps=r=>r?new Date(r).toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"}):"",Gs=r=>r?new Date(r){if(!r)return!1;const a=new Date,l=(new Date(r)-a)/(1e3*60*60*24);return l>0&&l<=7},ks=r=>{q.value=r},_s=()=>{q.value=null},Ws=async({accountId:r,expiresAt:a})=>{try{const x=V.value.find(ce=>ce.id===r);if(!x){z("未找到账户","error");return}let l="";switch(x.platform){case"claude":case"claude-oauth":l=`/admin/claude-accounts/${r}`;break;case"gemini":l=`/admin/gemini-accounts/${r}`;break;case"claude-console":l=`/admin/claude-console-accounts/${r}`;break;case"bedrock":l=`/admin/bedrock-accounts/${r}`;break;case"ccr":l=`/admin/ccr-accounts/${r}`;break;case"openai":l=`/admin/openai-accounts/${r}`;break;case"droid":l=`/admin/droid-accounts/${r}`;break;case"azure_openai":l=`/admin/azure-openai-accounts/${r}`;break;case"openai-responses":l=`/admin/openai-responses-accounts/${r}`;break;default:z(`不支持的平台类型: ${x.platform}`,"error");return}const F=await L.put(l,{expiresAt:a||null});F.success?(z("账户到期时间已更新","success"),x.expiresAt=a||null,_s()):(z(F.message||"更新失败","error"),$.value&&$.value.resetSaving())}catch(x){console.error("更新账户过期时间失败:",x),z("更新失败","error"),$.value&&$.value.resetSaving()}},Jt=()=>{ie.value&&(Ie.value=ie.value.scrollWidth>ie.value.clientWidth)};let hs=null;return Xt(()=>{He(!0),Is(()=>{ie.value&&(hs=new ResizeObserver(()=>{Jt()}),hs.observe(ie.value),Jt())}),window.addEventListener("resize",Jt)}),As(()=>{hs&&hs.disconnect(),window.removeEventListener("resize",Jt)}),(r,a)=>{const x=Qs;return o(),n("div",hm,[e("div",wm,[e("div",$m,[a[36]||(a[36]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理 Claude、Gemini、OpenAI 等账户与代理配置 ")],-1)),e("div",Am,[e("div",Cm,[e("div",Um,[a[25]||(a[25]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),Je(Us,{modelValue:h.value,"onUpdate:modelValue":a[0]||(a[0]=l=>h.value=l),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:bt.value,placeholder:"选择排序",onChange:a[1]||(a[1]=l=>ut())},null,8,["modelValue","options"])]),e("div",Im,[a[26]||(a[26]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),Je(Us,{modelValue:J.value,"onUpdate:modelValue":a[2]||(a[2]=l=>J.value=l),icon:"fa-server","icon-color":"text-blue-500",options:mt.value,placeholder:"选择平台",onChange:is},null,8,["modelValue","options"])]),e("div",Tm,[a[27]||(a[27]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),Je(Us,{modelValue:W.value,"onUpdate:modelValue":a[3]||(a[3]=l=>W.value=l),icon:"fa-layer-group","icon-color":"text-purple-500",options:it.value,placeholder:"选择分组",onChange:ds},null,8,["modelValue","options"])]),e("div",Km,[a[30]||(a[30]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-cyan-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("div",Pm,[b(e("input",{"onUpdate:modelValue":a[4]||(a[4]=l=>B.value=l),class:"h-10 w-full rounded-lg border border-gray-200 bg-white px-3 pl-9 text-sm text-gray-700 placeholder-gray-400 shadow-sm transition-all duration-200 hover:border-gray-300 focus:border-cyan-500 focus:outline-none focus:ring-2 focus:ring-cyan-500/20 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:placeholder-gray-500 dark:hover:border-gray-500",placeholder:"搜索账户名称...",type:"text"},null,512),[[j,B.value]]),a[29]||(a[29]=e("i",{class:"fas fa-search absolute left-3 text-sm text-cyan-500"},null,-1)),B.value?(o(),n("button",{key:0,class:"absolute right-2 flex h-5 w-5 items-center justify-center rounded-full text-gray-400 hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",onClick:rs},a[28]||(a[28]=[e("i",{class:"fas fa-times text-xs"},null,-1)]))):y("",!0)])])]),e("div",_m,[e("div",Mm,[Je(x,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:Yt(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:A.value,onClick:[a[5]||(a[5]=ht(l=>He(!0),["ctrl","exact"])),a[6]||(a[6]=ht(l=>He(!1),["exact"])),a[7]||(a[7]=ht(l=>He(!0),["meta","exact"]))]},[a[31]||(a[31]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:K(["fas relative text-green-500",A.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),a[32]||(a[32]=e("span",{class:"relative"},"刷新",-1))],8,Dm)]),_:1})]),e("button",{class:"flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:bg-gray-50 hover:shadow-md dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:ss},[e("i",{class:K(ke.value?"fas fa-times":"fas fa-check-square")},null,2),e("span",null,p(ke.value?"取消选择":"选择"),1)]),E.value.length>0?(o(),n("button",{key:0,class:"group relative flex items-center justify-center gap-2 rounded-lg border border-red-200 bg-red-50 px-4 py-2 text-sm font-medium text-red-700 shadow-sm transition-all duration-200 hover:border-red-300 hover:bg-red-100 hover:shadow-md dark:border-red-700 dark:bg-red-900/30 dark:text-red-300 dark:hover:bg-red-900/50 sm:w-auto",onClick:ms},[a[33]||(a[33]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-red-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),a[34]||(a[34]=e("i",{class:"fas fa-trash relative text-red-600 dark:text-red-400"},null,-1)),e("span",Sm,"删除选中 ("+p(E.value.length)+")",1)])):y("",!0),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:ht(ps,["stop"])},a[35]||(a[35]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])])]),A.value?(o(),n("div",jm,a[37]||(a[37]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):Fe.value.length===0?(o(),n("div",zm,a[38]||(a[38]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(o(),n("div",Rm,[e("div",{ref_key:"tableContainerRef",ref:ie,class:"table-container"},[e("table",Vm,[e("thead",Om,[e("tr",null,[tt.value?(o(),n("th",Lm,[e("div",Em,[b(e("input",{"onUpdate:modelValue":a[8]||(a[8]=l=>P.value=l),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",indeterminate:N.value,type:"checkbox",onChange:ts},null,40,Nm),[[Me,P.value]])])])):y("",!0),e("th",{class:K(["name-column sticky z-20 min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",tt.value?"left-[50px]":"left-0"]),onClick:a[9]||(a[9]=l=>ut("name"))},[a[39]||(a[39]=k(" 名称 ",-1)),v.value==="name"?(o(),n("i",{key:0,class:K(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",qm))],2),e("th",{class:"min-w-[220px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[10]||(a[10]=l=>ut("platform"))},[a[40]||(a[40]=k(" 平台/类型 ",-1)),v.value==="platform"?(o(),n("i",{key:0,class:K(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Gm))]),e("th",{class:"w-[120px] min-w-[180px] max-w-[200px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[11]||(a[11]=l=>ut("status"))},[a[41]||(a[41]=k(" 状态 ",-1)),v.value==="status"?(o(),n("i",{key:0,class:K(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Fm))]),a[47]||(a[47]=e("th",{class:"min-w-[150px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),e("th",Wm,[e("div",Qm,[a[44]||(a[44]=e("span",null,"会话窗口",-1)),Je(x,{placement:"top"},{content:Yt(()=>a[42]||(a[42]=[e("div",{class:"w-[260px] space-y-3 text-xs leading-relaxed text-white dark:text-gray-800"},[e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," Claude 系列 "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 会话窗口进度表示 5 小时窗口的时间推移,颜色提示当前调度状态。 "),e("div",{class:"space-y-1 pt-1 text-gray-200 dark:text-gray-600"},[e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-blue-500 to-indigo-600"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"正常:请求正常处理")]),e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-yellow-500 to-orange-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"警告:接近限制")]),e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-red-500 to-red-600"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"拒绝:达到速率限制")])])]),e("div",{class:"h-px bg-gray-200 dark:bg-gray-600/50"}),e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," OpenAI "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 进度条分别展示 5h 与周限窗口的额度使用比例,颜色含义与上方保持一致。 "),e("div",{class:"space-y-1 text-gray-200 dark:text-gray-600"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-clock mt-[2px] text-[10px] text-blue-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"5h 窗口:5小时使用量进度,到达重置时间后会自动归零。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-history mt-[2px] text-[10px] text-emerald-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"周限窗口:7天使用量进度,重置时同样回到 0%。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-[2px] text-[10px] text-indigo-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},'当"重置剩余"为 0 时,进度条与百分比会同步清零。')])])]),e("div",{class:"h-px bg-gray-200 dark:bg-gray-600/50"}),e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," Claude OAuth 账户 "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 展示三个窗口的使用率(utilization百分比),颜色含义同上。 "),e("div",{class:"space-y-1 text-gray-200 dark:text-gray-600"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-clock mt-[2px] text-[10px] text-indigo-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"5h 窗口:5小时滑动窗口的使用率。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-calendar-alt mt-[2px] text-[10px] text-emerald-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"7d 窗口:7天总限额的使用率。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-gem mt-[2px] text-[10px] text-purple-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"Sonnet窗口:7天Sonnet模型专用限额。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-sync-alt mt-[2px] text-[10px] text-blue-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"到达重置时间后自动归零。")])])])],-1)])),default:Yt(()=>[a[43]||(a[43]=e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400"},null,-1))]),_:1,__:[43]})])]),a[48]||(a[48]=e("th",{class:"min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),e("th",{class:"min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[12]||(a[12]=l=>ut("priority"))},[a[45]||(a[45]=k(" 优先级 ",-1)),v.value==="priority"?(o(),n("i",{key:0,class:K(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Bm))]),a[49]||(a[49]=e("th",{class:"min-w-[150px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),e("th",{class:"min-w-[110px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[13]||(a[13]=l=>ut("expiresAt"))},[a[46]||(a[46]=k(" 到期时间 ",-1)),v.value==="expiresAt"?(o(),n("i",{key:0,class:K(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Hm))]),e("th",{class:K(["operations-column sticky right-0 z-20 px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300",Ie.value?"min-w-[170px]":"min-w-[200px]"])}," 操作 ",2)])]),e("tbody",Jm,[(o(!0),n(he,null,ze(Ue.value,l=>{var F,ce;return o(),n("tr",{key:l.id,class:"table-row"},[tt.value?(o(),n("td",Ym,[e("div",Zm,[b(e("input",{"onUpdate:modelValue":a[14]||(a[14]=ne=>E.value=ne),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:Ee},null,40,Xm),[[Me,E.value]])])])):y("",!0),e("td",{class:K(["name-column sticky z-10 px-3 py-4",tt.value?"left-[50px]":"left-0"])},[e("div",ec,[a[54]||(a[54]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",tc,[e("div",sc,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:l.name},p(l.name),9,ac),l.accountType==="dedicated"?(o(),n("span",rc,a[50]||(a[50]=[e("i",{class:"fas fa-lock mr-1"},null,-1),k("专属 ",-1)]))):l.accountType==="group"?(o(),n("span",lc,a[51]||(a[51]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),k("分组调度 ",-1)]))):(o(),n("span",oc,a[52]||(a[52]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),k("共享 ",-1)])))]),l.groupInfos&&l.groupInfos.length>0?(o(),n("div",nc,[(o(!0),n(he,null,ze(l.groupInfos,ne=>(o(),n("span",{key:ne.id,class:"inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${ne.name}`},[a[53]||(a[53]=e("i",{class:"fas fa-folder mr-1"},null,-1)),k(p(ne.name),1)],8,ic))),128))])):y("",!0),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:l.id},p(l.id),9,dc)])])],2),e("td",uc,[e("div",pc,[l.platform==="gemini"?(o(),n("div",gc,[a[55]||(a[55]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),a[56]||(a[56]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),a[57]||(a[57]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",mc,p(ys()),1)])):l.platform==="claude-console"?(o(),n("div",cc,a[58]||(a[58]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):l.platform==="bedrock"?(o(),n("div",yc,a[59]||(a[59]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):l.platform==="openai"?(o(),n("div",xc,[a[60]||(a[60]=e("div",{class:"fa-openai"},null,-1)),a[61]||(a[61]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),a[62]||(a[62]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",fc,p(xs()),1)])):l.platform==="azure_openai"?(o(),n("div",bc,a[63]||(a[63]=[e("i",{class:"fab fa-microsoft text-xs text-blue-700 dark:text-blue-400"},null,-1),e("span",{class:"text-xs font-semibold text-blue-800 dark:text-blue-300"},"Azure OpenAI",-1),e("span",{class:"mx-1 h-4 w-px bg-blue-300 dark:bg-blue-600"},null,-1),e("span",{class:"text-xs font-medium text-blue-700 dark:text-blue-400"},"API Key",-1)]))):l.platform==="openai-responses"?(o(),n("div",vc,a[64]||(a[64]=[e("i",{class:"fas fa-server text-xs text-teal-700 dark:text-teal-400"},null,-1),e("span",{class:"text-xs font-semibold text-teal-800 dark:text-teal-300"},"OpenAI-Api",-1),e("span",{class:"mx-1 h-4 w-px bg-teal-300 dark:bg-teal-600"},null,-1),e("span",{class:"text-xs font-medium text-teal-700 dark:text-teal-400"},"API Key",-1)]))):l.platform==="claude"||l.platform==="claude-oauth"?(o(),n("div",kc,[a[65]||(a[65]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",hc,p(vs(l)),1),a[66]||(a[66]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",wc,p(cs(l)),1)])):l.platform==="ccr"?(o(),n("div",$c,a[67]||(a[67]=[e("i",{class:"fas fa-code-branch text-xs text-teal-700 dark:text-teal-400"},null,-1),e("span",{class:"text-xs font-semibold text-teal-800 dark:text-teal-300"},"CCR",-1),e("span",{class:"mx-1 h-4 w-px bg-teal-300 dark:bg-teal-600"},null,-1),e("span",{class:"text-xs font-medium text-teal-700 dark:text-teal-300"},"Relay",-1)]))):l.platform==="droid"?(o(),n("div",Ac,[a[69]||(a[69]=e("i",{class:"fas fa-robot text-xs text-cyan-700 dark:text-cyan-400"},null,-1)),a[70]||(a[70]=e("span",{class:"text-xs font-semibold text-cyan-800 dark:text-cyan-300"},"Droid",-1)),a[71]||(a[71]=e("span",{class:"mx-1 h-4 w-px bg-cyan-300 dark:bg-cyan-600"},null,-1)),e("span",Cc,p(Qt(l)),1),fs(l)?(o(),n("span",{key:0,class:K(bs(l))},[a[68]||(a[68]=e("i",{class:"fas fa-key text-[9px]"},null,-1)),e("span",null,"x"+p(Bt(l)),1)],2)):y("",!0)])):l.platform==="gemini-api"?(o(),n("div",Uc,a[72]||(a[72]=[e("i",{class:"fas fa-robot text-xs text-amber-700 dark:text-amber-400"},null,-1),e("span",{class:"text-xs font-semibold text-amber-800 dark:text-amber-300"},"Gemini-API",-1),e("span",{class:"mx-1 h-4 w-px bg-amber-300 dark:bg-amber-600"},null,-1),e("span",{class:"text-xs font-medium text-amber-700 dark:text-amber-400"},"API Key",-1)]))):(o(),n("div",Ic,a[73]||(a[73]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",Tc,[e("div",Kc,[e("span",{class:K(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",l.status==="blocked"?"bg-orange-100 text-orange-800":l.status==="unauthorized"?"bg-red-100 text-red-800":l.status==="temp_error"?"bg-orange-100 text-orange-800":l.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:K(["mr-2 h-2 w-2 rounded-full",l.status==="blocked"?"bg-orange-500":l.status==="unauthorized"?"bg-red-500":l.status==="temp_error"?"bg-orange-500":l.isActive?"bg-green-500":"bg-red-500"])},null,2),k(" "+p(l.status==="blocked"?"已封锁":l.status==="unauthorized"?"异常":l.status==="temp_error"?"临时异常":l.isActive?"正常":"异常"),1)],2),l.rateLimitStatus&&l.rateLimitStatus.isRateLimited||l.rateLimitStatus==="limited"?(o(),n("span",Pc,[a[74]||(a[74]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),a[75]||(a[75]=k(" 限流中 ",-1)),l.rateLimitStatus&&typeof l.rateLimitStatus=="object"&&l.rateLimitStatus.minutesRemaining>0?(o(),n("span",_c,"("+p(us(l.rateLimitStatus.minutesRemaining))+")",1)):y("",!0)])):y("",!0),l.schedulable===!1?(o(),n("span",Mc,[a[77]||(a[77]=e("i",{class:"fas fa-pause-circle mr-1"},null,-1)),a[78]||(a[78]=k(" 不可调度 ",-1)),Ht(l)?(o(),qe(x,{key:0,content:Ht(l),effect:"dark",placement:"top"},{default:Yt(()=>a[76]||(a[76]=[e("i",{class:"fas fa-question-circle ml-1 cursor-help text-gray-500"},null,-1)])),_:2,__:[76]},1032,["content"])):y("",!0)])):y("",!0),l.status==="blocked"&&l.errorMessage?(o(),n("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:l.errorMessage},p(l.errorMessage),9,Dc)):y("",!0),l.accountType==="dedicated"?(o(),n("span",Sc," 绑定: "+p(l.boundApiKeysCount||0)+" 个API Key ",1)):y("",!0)])]),e("td",jc,[l.usage&&l.usage.daily?(o(),n("div",zc,[e("div",Rc,[a[79]||(a[79]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",Vc,p(l.usage.daily.requests||0)+" 次",1)]),e("div",Oc,[a[80]||(a[80]=e("div",{class:"h-2 w-2 rounded-full bg-purple-500"},null,-1)),e("span",Lc,p(It(l.usage.daily.allTokens||0))+"M",1)]),e("div",Ec,[a[81]||(a[81]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Nc,"$"+p(Ks(l)),1)]),l.usage.averages&&l.usage.averages.rpm>0?(o(),n("div",qc," 平均 "+p(l.usage.averages.rpm.toFixed(2))+" RPM ",1)):y("",!0)])):(o(),n("div",Gc,"暂无数据"))]),e("td",Fc,[l.platform==="claude"?(o(),n("div",Wc,[ge(l)&&l.claudeUsage?(o(),n("div",Qc,[e("div",Bc,[e("div",Hc,[a[82]||(a[82]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"}," 5h ",-1)),e("div",Jc,[e("div",Yc,[e("div",Zc,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.fiveHour)]),style:Oe({width:_e(l.claudeUsage.fiveHour)})},null,6)]),e("span",Xc,p(oe(l.claudeUsage.fiveHour)),1)])])]),e("div",ey," 重置剩余 "+p(Te(l.claudeUsage.fiveHour)),1)]),e("div",ty,[e("div",sy,[a[83]||(a[83]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-emerald-100 px-2 py-0.5 text-[11px] font-medium text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-300"}," 7d ",-1)),e("div",ay,[e("div",ry,[e("div",ly,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.sevenDay)]),style:Oe({width:_e(l.claudeUsage.sevenDay)})},null,6)]),e("span",oy,p(oe(l.claudeUsage.sevenDay)),1)])])]),e("div",ny," 重置剩余 "+p(Te(l.claudeUsage.sevenDay)),1)]),e("div",iy,[e("div",dy,[a[84]||(a[84]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-purple-100 px-2 py-0.5 text-[11px] font-medium text-purple-600 dark:bg-purple-500/20 dark:text-purple-300"}," sonnet ",-1)),e("div",uy,[e("div",py,[e("div",gy,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.sevenDayOpus)]),style:Oe({width:_e(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",my,p(oe(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",cy," 重置剩余 "+p(Te(l.claudeUsage.sevenDayOpus)),1)])])):!ge(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(o(),n("div",yy,[l.usage&&l.usage.sessionWindow?(o(),n("div",xy,[e("div",fy,[a[85]||(a[85]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("span",by,p(It(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",vy,[a[86]||(a[86]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("span",ky," $"+p(ot(l.usage.sessionWindow.totalCost)),1)])])):y("",!0),e("div",hy,[e("div",wy,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",i(l.sessionWindow.sessionWindowStatus,l)]),style:Oe({width:l.sessionWindow.progress+"%"})},null,6)]),e("span",$y,p(l.sessionWindow.progress)+"% ",1)]),e("div",Ay,[e("div",null,p(Ot(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(o(),n("div",Cy," 剩余 "+p(Lt(l.sessionWindow.remainingTime)),1)):y("",!0)])])):(o(),n("div",Uy,"暂无统计"))])):l.platform==="claude-console"?(o(),n("div",Iy,[e("div",null,[Number(l.dailyQuota)>0?(o(),n(he,{key:0},[e("div",Ty,[a[87]||(a[87]=e("span",{class:"text-gray-600 dark:text-gray-300"},"额度进度",-1)),e("span",Ky,p(pt(l).toFixed(1))+"% ",1)]),e("div",Py,[e("div",_y,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",Ls(pt(l))]),style:Oe({width:Math.min(100,pt(l))+"%"})},null,6)]),e("span",My," $"+p(ot(((ce=(F=l.usage)==null?void 0:F.daily)==null?void 0:ce.cost)||0))+" / $"+p(Number(l.dailyQuota).toFixed(2)),1)]),e("div",Dy,[k(" 剩余 $"+p(qs(l))+" ",1),e("span",Sy,"重置 "+p(l.quotaResetTime||"00:00"),1)])],64)):(o(),n("div",jy,a[88]||(a[88]=[e("i",{class:"fas fa-minus"},null,-1)])))]),e("div",zy,[e("div",Ry,[a[89]||(a[89]=e("span",{class:"text-gray-600 dark:text-gray-300"},"并发状态",-1)),Number(l.maxConcurrentTasks||0)>0?(o(),n("span",Vy,p(Cs(l).toFixed(0))+"% ",1)):y("",!0)]),Number(l.maxConcurrentTasks||0)>0?(o(),n("div",Oy,[e("div",Ly,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",Es(Cs(l))]),style:Oe({width:Math.min(100,Cs(l))+"%"})},null,6)]),e("span",{class:K(["min-w-[48px] text-xs font-medium",Ns(l)])},p(Number(l.activeTaskCount||0))+" / "+p(Number(l.maxConcurrentTasks||0)),3)])):(o(),n("div",Ey,a[90]||(a[90]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),k("并发无限制 ",-1)])))])])):l.platform==="openai"?(o(),n("div",Ny,[l.codexUsage?(o(),n("div",qy,[e("div",Gy,[e("div",Fy,[e("span",Wy,p(me("primary")),1),e("div",Qy,[e("div",By,[e("div",Hy,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",_(l.codexUsage.primary)]),style:Oe({width:Y(l.codexUsage.primary)})},null,6)]),e("span",Jy,p(se(l.codexUsage.primary)),1)])])]),e("div",Yy," 重置剩余 "+p($e(l.codexUsage.primary)),1)]),e("div",Zy,[e("div",Xy,[e("span",ex,p(me("secondary")),1),e("div",tx,[e("div",sx,[e("div",ax,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",_(l.codexUsage.secondary)]),style:Oe({width:Y(l.codexUsage.secondary)})},null,6)]),e("span",rx,p(se(l.codexUsage.secondary)),1)])])]),e("div",lx," 重置剩余 "+p($e(l.codexUsage.secondary)),1)])])):(o(),n("div",ox,a[91]||(a[91]=[e("span",{class:"text-xs"},"N/A",-1)])))])):(o(),n("div",nx,a[92]||(a[92]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",ix,p(zt(l.lastUsedAt)),1),e("td",dx,[l.platform==="claude"||l.platform==="claude-console"||l.platform==="bedrock"||l.platform==="gemini"||l.platform==="openai"||l.platform==="openai-responses"||l.platform==="azure_openai"||l.platform==="ccr"||l.platform==="droid"||l.platform==="gemini-api"?(o(),n("div",ux,[e("div",px,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:Oe({width:101-(l.priority||50)+"%"})},null,4)]),e("span",gx,p(l.priority||50),1)])):(o(),n("div",mx,a[93]||(a[93]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",cx,[_t(l.proxy)?(o(),n("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:_t(l.proxy)},p(_t(l.proxy)),9,yx)):(o(),n("div",xx,"无代理"))]),e("td",fx,[e("div",bx,[l.expiresAt?(o(),n("span",vx,[Gs(l.expiresAt)?(o(),n("span",{key:0,class:"inline-flex cursor-pointer items-center text-red-600 hover:underline",style:{"font-size":"13px"},onClick:ht(ne=>ks(l),["stop"])},a[94]||(a[94]=[e("i",{class:"fas fa-exclamation-circle mr-1 text-xs"},null,-1),k(" 已过期 ",-1)]),8,kx)):Fs(l.expiresAt)?(o(),n("span",{key:1,class:"inline-flex cursor-pointer items-center text-orange-600 hover:underline",style:{"font-size":"13px"},onClick:ht(ne=>ks(l),["stop"])},[a[95]||(a[95]=e("i",{class:"fas fa-clock mr-1 text-xs"},null,-1)),k(" "+p(Ps(l.expiresAt)),1)],8,hx)):(o(),n("span",{key:2,class:"cursor-pointer text-gray-600 hover:underline dark:text-gray-400",style:{"font-size":"13px"},onClick:ht(ne=>ks(l),["stop"])},p(Ps(l.expiresAt)),9,wx))])):(o(),n("span",{key:1,class:"inline-flex cursor-pointer items-center text-gray-400 hover:underline dark:text-gray-500",style:{"font-size":"13px"},onClick:ht(ne=>ks(l),["stop"])},a[96]||(a[96]=[e("i",{class:"fas fa-infinity mr-1 text-xs"},null,-1),k(" 永不过期 ",-1)]),8,$x))])]),e("td",Ax,[Ie.value?(o(),n("div",Dx,[e("button",{class:K(["rounded px-2.5 py-1 text-xs font-medium transition-colors",l.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":l.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:l.isTogglingSchedulable,title:l.schedulable?"点击禁用调度":"点击启用调度",onClick:ne=>St(l)},[e("i",{class:K(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",jx,p(l.schedulable?"调度":"停用"),1)],10,Sx),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:ne=>Mt(l)},a[102]||(a[102]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,zx),Je(ta,{actions:S(l)},null,8,["actions"])])):(o(),n("div",Cx,[c(l)?(o(),n("button",{key:0,class:K(["rounded px-2.5 py-1 text-xs font-medium transition-colors",l.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:l.isResetting,title:l.isResetting?"重置中...":"重置所有异常状态",onClick:ne=>Gt(l)},[e("i",{class:K(["fas fa-redo",l.isResetting?"animate-spin":""])},null,2),a[97]||(a[97]=e("span",{class:"ml-1"},"重置状态",-1))],10,Ux)):y("",!0),e("button",{class:K(["rounded px-2.5 py-1 text-xs font-medium transition-colors",l.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":l.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:l.isTogglingSchedulable,title:l.schedulable?"点击禁用调度":"点击启用调度",onClick:ne=>St(l)},[e("i",{class:K(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",Tx,p(l.schedulable?"调度":"停用"),1)],10,Ix),f(l)?(o(),n("button",{key:1,class:"rounded bg-indigo-100 px-2.5 py-1 text-xs font-medium text-indigo-700 transition-colors hover:bg-indigo-200",title:"查看使用详情",onClick:ne=>Le(l)},a[98]||(a[98]=[e("i",{class:"fas fa-chart-line"},null,-1),e("span",{class:"ml-1"},"详情",-1)]),8,Kx)):y("",!0),et(l)?(o(),n("button",{key:2,class:"rounded bg-cyan-100 px-2.5 py-1 text-xs font-medium text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/40 dark:text-cyan-300 dark:hover:bg-cyan-800/50",title:"测试账户连通性",onClick:ne=>at(l)},a[99]||(a[99]=[e("i",{class:"fas fa-vial"},null,-1),e("span",{class:"ml-1"},"测试",-1)]),8,Px)):y("",!0),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:ne=>Mt(l)},a[100]||(a[100]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,_x),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:ne=>Dt(l)},a[101]||(a[101]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,Mx)]))])])}),128))])])],512)])),!A.value&&Fe.value.length>0?(o(),n("div",Rx,[(o(!0),n(he,null,ze(Ue.value,l=>{var F,ce,ne,Se;return o(),n("div",{key:l.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",Vx,[e("div",Ox,[tt.value?b((o(),n("input",{key:0,"onUpdate:modelValue":a[15]||(a[15]=je=>E.value=je),class:"mt-1 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:Ee},null,40,Lx)),[[Me,E.value]]):y("",!0),e("div",{class:K(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",l.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":l.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":l.platform==="azure_openai"?"bg-gradient-to-br from-blue-500 to-cyan-600":l.platform==="openai"?"bg-gradient-to-br from-gray-600 to-gray-700":l.platform==="ccr"?"bg-gradient-to-br from-teal-500 to-emerald-600":l.platform==="droid"?"bg-gradient-to-br from-cyan-500 to-sky-600":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:K(["text-sm text-white",l.platform==="claude"?"fas fa-brain":l.platform==="bedrock"?"fab fa-aws":l.platform==="azure_openai"?"fab fa-microsoft":l.platform==="openai"?"fas fa-openai":l.platform==="ccr"?"fas fa-code-branch":(l.platform==="droid","fas fa-robot")])},null,2)],2),e("div",null,[e("h4",Ex,p(l.name||l.email),1),e("div",Nx,[e("span",qx,p(l.platform),1),a[103]||(a[103]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",Gx,p(l.type),1)])])]),e("span",{class:K(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",t(l)])},[e("div",{class:K(["mr-1.5 h-1.5 w-1.5 rounded-full",ae(l)])},null,2),k(" "+p(d(l)),1)],2)]),e("div",Fx,[e("div",null,[a[107]||(a[107]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("div",Wx,[e("div",Qx,[a[104]||(a[104]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-blue-500"},null,-1)),e("p",Bx,p(((ce=(F=l.usage)==null?void 0:F.daily)==null?void 0:ce.requests)||0)+" 次 ",1)]),e("div",Hx,[a[105]||(a[105]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",Jx,p(It(((Se=(ne=l.usage)==null?void 0:ne.daily)==null?void 0:Se.allTokens)||0))+"M ",1)]),e("div",Yx,[a[106]||(a[106]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",Zx," $"+p(Ks(l)),1)])])]),e("div",null,[a[110]||(a[110]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"会话窗口",-1)),l.usage&&l.usage.sessionWindow?(o(),n("div",Xx,[e("div",ef,[a[108]||(a[108]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",tf,p(It(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",sf,[a[109]||(a[109]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",af," $"+p(ot(l.usage.sessionWindow.totalCost)),1)])])):(o(),n("div",rf,"-"))])]),e("div",lf,[l.platform==="claude"?(o(),n("div",of,[ge(l)&&l.claudeUsage?(o(),n("div",nf,[e("div",df,[e("div",uf,[a[111]||(a[111]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"}," 5h ",-1)),e("div",pf,[e("div",gf,[e("div",mf,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.fiveHour)]),style:Oe({width:_e(l.claudeUsage.fiveHour)})},null,6)]),e("span",cf,p(oe(l.claudeUsage.fiveHour)),1)])])]),e("div",yf," 重置剩余 "+p(Te(l.claudeUsage.fiveHour)),1)]),e("div",xf,[e("div",ff,[a[112]||(a[112]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-emerald-100 px-2 py-0.5 text-[11px] font-medium text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-300"}," 7d ",-1)),e("div",bf,[e("div",vf,[e("div",kf,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.sevenDay)]),style:Oe({width:_e(l.claudeUsage.sevenDay)})},null,6)]),e("span",hf,p(oe(l.claudeUsage.sevenDay)),1)])])]),e("div",wf," 重置剩余 "+p(Te(l.claudeUsage.sevenDay)),1)]),e("div",$f,[e("div",Af,[a[113]||(a[113]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-purple-100 px-2 py-0.5 text-[11px] font-medium text-purple-600 dark:bg-purple-500/20 dark:text-purple-300"}," Opus ",-1)),e("div",Cf,[e("div",Uf,[e("div",If,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",De(l.claudeUsage.sevenDayOpus)]),style:Oe({width:_e(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",Tf,p(oe(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",Kf," 重置剩余 "+p(Te(l.claudeUsage.sevenDayOpus)),1)])])):!ge(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(o(),n("div",Pf,[e("div",_f,[e("div",Mf,[a[115]||(a[115]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),Je(x,{content:"会话窗口进度不代表使用量,仅表示距离下一个5小时窗口的剩余时间",placement:"top"},{default:Yt(()=>a[114]||(a[114]=[e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600"},null,-1)])),_:1,__:[114]})]),e("span",Df,p(l.sessionWindow.progress)+"% ",1)]),e("div",Sf,[e("div",{class:K(["h-full transition-all duration-300",i(l.sessionWindow.sessionWindowStatus,l)]),style:Oe({width:l.sessionWindow.progress+"%"})},null,6)]),e("div",jf,[e("span",zf,p(Ot(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(o(),n("span",Rf," 剩余 "+p(Lt(l.sessionWindow.remainingTime)),1)):(o(),n("span",Vf," 已结束 "))])])):(o(),n("div",Of,"暂无统计"))])):l.platform==="openai"?(o(),n("div",Lf,[l.codexUsage?(o(),n("div",Ef,[e("div",Nf,[e("div",qf,[e("span",Gf,p(me("primary")),1),e("div",Ff,[e("div",Wf,[e("div",Qf,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",_(l.codexUsage.primary)]),style:Oe({width:Y(l.codexUsage.primary)})},null,6)]),e("span",Bf,p(se(l.codexUsage.primary)),1)])])]),e("div",Hf," 重置剩余 "+p($e(l.codexUsage.primary)),1)]),e("div",Jf,[e("div",Yf,[e("span",Zf,p(me("secondary")),1),e("div",Xf,[e("div",eb,[e("div",tb,[e("div",{class:K(["h-2 rounded-full transition-all duration-300",_(l.codexUsage.secondary)]),style:Oe({width:Y(l.codexUsage.secondary)})},null,6)]),e("span",sb,p(se(l.codexUsage.secondary)),1)])])]),e("div",ab," 重置剩余 "+p($e(l.codexUsage.secondary)),1)])])):y("",!0),l.codexUsage?y("",!0):(o(),n("div",rb,"暂无统计"))])):y("",!0),e("div",lb,[a[116]||(a[116]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",ob,p(l.lastUsedAt?pe(l.lastUsedAt):"从未使用"),1)]),l.proxyConfig&&l.proxyConfig.type!=="none"?(o(),n("div",nb,[a[117]||(a[117]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",ib,p(l.proxyConfig.type.toUpperCase()),1)])):y("",!0),e("div",db,[a[118]||(a[118]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",ub,p(l.priority||50),1)])]),e("div",pb,[e("button",{class:K(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",l.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:l.isTogglingSchedulable,onClick:je=>St(l)},[e("i",{class:K(["fas",l.schedulable?"fa-pause":"fa-play"])},null,2),k(" "+p(l.schedulable?"暂停":"启用"),1)],10,gb),f(l)?(o(),n("button",{key:0,class:"flex flex-1 items-center justify-center gap-1 rounded-lg bg-indigo-50 px-3 py-2 text-xs text-indigo-600 transition-colors hover:bg-indigo-100",onClick:je=>Le(l)},a[119]||(a[119]=[e("i",{class:"fas fa-chart-line"},null,-1),k(" 详情 ",-1)]),8,mb)):y("",!0),et(l)?(o(),n("button",{key:1,class:"flex flex-1 items-center justify-center gap-1 rounded-lg bg-cyan-50 px-3 py-2 text-xs text-cyan-600 transition-colors hover:bg-cyan-100 dark:bg-cyan-900/40 dark:text-cyan-300 dark:hover:bg-cyan-800/50",onClick:je=>at(l)},a[120]||(a[120]=[e("i",{class:"fas fa-vial"},null,-1),k(" 测试 ",-1)]),8,cb)):y("",!0),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:je=>Mt(l)},a[121]||(a[121]=[e("i",{class:"fas fa-edit mr-1"},null,-1),k(" 编辑 ",-1)]),8,yb),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:je=>Dt(l)},a[122]||(a[122]=[e("i",{class:"fas fa-trash"},null,-1)]),8,xb)])])}),128))])):y("",!0)]),!A.value&&Fe.value.length>0?(o(),n("div",fb,[e("div",bb,[e("span",vb," 共 "+p(Fe.value.length)+" 条记录 ",1),e("div",kb,[a[123]||(a[123]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"每页显示",-1)),b(e("select",{"onUpdate:modelValue":a[16]||(a[16]=l=>R.value=l),class:"rounded-md border border-gray-200 bg-white px-2 py-1 text-xs text-gray-700 transition-colors hover:border-gray-300 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:text-sm",onChange:a[17]||(a[17]=l=>te.value=1)},[(o(),n(he,null,ze(m,l=>e("option",{key:l,value:l},p(l),9,hb)),64))],544),[[$s,R.value]]),a[124]||(a[124]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"条",-1))])]),e("div",wb,[e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-1.5 text-xs font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:py-1 sm:text-sm",disabled:te.value===1,onClick:a[18]||(a[18]=l=>te.value--)},a[125]||(a[125]=[e("i",{class:"fas fa-chevron-left"},null,-1)]),8,$b),e("div",Ab,[At.value?(o(),n("button",{key:0,class:"hidden rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:block",onClick:a[19]||(a[19]=l=>te.value=1)}," 1 ")):y("",!0),Ut.value?(o(),n("span",Cb," ... ")):y("",!0),(o(!0),n(he,null,ze(rt.value,l=>(o(),n("button",{key:l,class:K(["rounded-md border px-3 py-1 text-xs font-medium transition-colors sm:text-sm",l===te.value?"border-blue-500 bg-blue-50 text-blue-600 dark:border-blue-400 dark:bg-blue-500/10 dark:text-blue-300":"border-gray-300 bg-white text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"]),onClick:F=>te.value=l},p(l),11,Ub))),128)),lt.value?(o(),n("span",Ib," ... ")):y("",!0),Ct.value?(o(),n("button",{key:3,class:"hidden rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:block",onClick:a[20]||(a[20]=l=>te.value=We.value)},p(We.value),1)):y("",!0)]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-1.5 text-xs font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:py-1 sm:text-sm",disabled:te.value===We.value||We.value===0,onClick:a[21]||(a[21]=l=>te.value++)},a[126]||(a[126]=[e("i",{class:"fas fa-chevron-right"},null,-1)]),8,Tb)])])):y("",!0),Ze.value&&(!Xe.value||Xe.value!=="ccr")?(o(),qe(Ss,{key:1,onClose:Et,onPlatformChanged:a[22]||(a[22]=l=>Xe.value=l),onSuccess:Ft})):Ze.value&&Xe.value==="ccr"?(o(),qe(js,{key:2,onClose:Et,onSuccess:Ft})):y("",!0),Ge.value&&st.value&&st.value.platform==="ccr"?(o(),qe(js,{key:3,account:st.value,onClose:a[23]||(a[23]=l=>Ge.value=!1),onSuccess:Wt},null,8,["account"])):Ge.value?(o(),qe(Ss,{key:4,account:st.value,onClose:a[24]||(a[24]=l=>Ge.value=!1),onSuccess:Wt},null,8,["account"])):y("",!0),Je(Rs,{"cancel-text":Ye(g).cancelText,"confirm-text":Ye(g).confirmText,message:Ye(g).message,show:Ye(Ke),title:Ye(g).title,onCancel:Ye(G),onConfirm:Ye(I)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),de.value?(o(),qe(Cg,{key:5,account:u.value||{},"generated-at":s.value,history:Z.value,loading:D.value,overview:we.value,show:de.value,summary:ee.value,onClose:Pt},null,8,["account","generated-at","history","loading","overview","show","summary"])):y("",!0),Je(Bg,{ref_key:"expiryEditModalRef",ref:$,account:q.value||{id:null,expiresAt:null,name:""},show:!!q.value,onClose:_s,onSave:Ws},null,8,["account","show"]),Je(km,{account:ue.value,show:M.value,onClose:ct},null,8,["account","show"])])}}},Rb=es(Kb,[["__scopeId","data-v-2ac548a4"]]);export{Rb as default};