import{a as ms}from"./element-plus-CqiD73Lu.js";import{r as $,aP as ys,o as Z,V as os,x as i,y as n,z as e,L as b,K as f,al as me,aT as _t,O as U,aq as T,aa as xs,P as g,aV as ns,aY as Yt,C as S,c as oe,q as Gt,I as Oe,an as de,Q as ke,ac as Me,a5 as Ft,R as Fe,B as Ue,u as Se,aX as cs,D as fs,J as Tt,Y as qt}from"./vue-vendor-Bsazo-x0.js";import{c as K,s as z,_ as Qt,a as bs}from"./index-xNQW_aFB.js";import{C as is}from"./ConfirmModal-BSGInIlR.js";import{C as vs}from"./chart-yFHxLHpB.js";import{C as Jt}from"./CustomDropdown-Diey8mC-.js";import"./vendor-Dr8jvgFu.js";const Wt=$(!1),ss=$({title:"",message:"",confirmText:"继续",cancelText:"取消"}),mt=$(null);function ds(){return{showConfirmModal:Wt,confirmOptions:ss,showConfirm:(ne,_,E="继续",Q="取消")=>new Promise(m=>{ss.value={title:ne,message:_,confirmText:E,cancelText:Q},mt.value=m,Wt.value=!0}),handleConfirm:()=>{Wt.value=!1,mt.value&&(mt.value(!0),mt.value=null)},handleCancel:()=>{Wt.value=!1,mt.value&&(mt.value(!1),mt.value=null)}}}const us=ys("accounts",()=>{const q=$([]),ce=$([]),p=$([]),ne=$([]),_=$([]),E=$([]),Q=$([]),m=$(!1),v=$(null),D=$(""),O=$("asc"),N=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/claude-accounts");if(c.success)q.value=c.data||[];else throw new Error(c.message||"获取Claude账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},W=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/claude-console-accounts");if(c.success)ce.value=c.data||[];else throw new Error(c.message||"获取Claude Console账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},H=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/bedrock-accounts");if(c.success)p.value=c.data||[];else throw new Error(c.message||"获取Bedrock账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},Y=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/gemini-accounts");if(c.success)ne.value=c.data||[];else throw new Error(c.message||"获取Gemini账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},G=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/openai-accounts");if(c.success)_.value=c.data||[];else throw new Error(c.message||"获取OpenAI账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},j=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/azure-openai-accounts");if(c.success)E.value=c.data||[];else throw new Error(c.message||"获取Azure OpenAI账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}},d=async()=>{m.value=!0,v.value=null;try{const c=await K.get("/admin/openai-responses-accounts");if(c.success)Q.value=c.data||[];else throw new Error(c.message||"获取OpenAI-Responses账户失败")}catch(c){throw v.value=c.message,c}finally{m.value=!1}};return{claudeAccounts:q,claudeConsoleAccounts:ce,bedrockAccounts:p,geminiAccounts:ne,openaiAccounts:_,azureOpenaiAccounts:E,openaiResponsesAccounts:Q,loading:m,error:v,sortBy:D,sortOrder:O,fetchClaudeAccounts:N,fetchClaudeConsoleAccounts:W,fetchBedrockAccounts:H,fetchGeminiAccounts:Y,fetchOpenAIAccounts:G,fetchAzureOpenAIAccounts:j,fetchOpenAIResponsesAccounts:d,fetchAllAccounts:async()=>{m.value=!0,v.value=null;try{await Promise.all([N(),W(),H(),Y(),G(),j(),d()])}catch(c){throw v.value=c.message,c}finally{m.value=!1}},createClaudeAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/claude-accounts",c);if(y.success)return await N(),y.data;throw new Error(y.message||"创建Claude账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createClaudeConsoleAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/claude-console-accounts",c);if(y.success)return await W(),y.data;throw new Error(y.message||"创建Claude Console账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createBedrockAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/bedrock-accounts",c);if(y.success)return await H(),y.data;throw new Error(y.message||"创建Bedrock账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createGeminiAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/gemini-accounts",c);if(y.success)return await Y(),y.data;throw new Error(y.message||"创建Gemini账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createOpenAIAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/openai-accounts",c);if(y.success)return await G(),y.data;throw new Error(y.message||"创建OpenAI账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createAzureOpenAIAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/azure-openai-accounts",c);if(y.success)return await j(),y.data;throw new Error(y.message||"创建Azure OpenAI账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},createOpenAIResponsesAccount:async c=>{m.value=!0,v.value=null;try{const y=await K.post("/admin/openai-responses-accounts",c);if(y.success)return await d(),y.data;throw new Error(y.message||"创建OpenAI-Responses账户失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},updateClaudeAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/claude-accounts/${c}`,y);if(I.success)return await N(),I;throw new Error(I.message||"更新Claude账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateClaudeConsoleAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/claude-console-accounts/${c}`,y);if(I.success)return await W(),I;throw new Error(I.message||"更新Claude Console账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateBedrockAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/bedrock-accounts/${c}`,y);if(I.success)return await H(),I;throw new Error(I.message||"更新Bedrock账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateGeminiAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/gemini-accounts/${c}`,y);if(I.success)return await Y(),I;throw new Error(I.message||"更新Gemini账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateOpenAIAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/openai-accounts/${c}`,y);if(I.success)return await G(),I;throw new Error(I.message||"更新OpenAI账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateAzureOpenAIAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/azure-openai-accounts/${c}`,y);if(I.success)return await j(),I;throw new Error(I.message||"更新Azure OpenAI账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},updateOpenAIResponsesAccount:async(c,y)=>{m.value=!0,v.value=null;try{const I=await K.put(`/admin/openai-responses-accounts/${c}`,y);if(I.success)return await d(),I;throw new Error(I.message||"更新OpenAI-Responses账户失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},toggleAccount:async(c,y)=>{m.value=!0,v.value=null;try{let I;c==="claude"?I=`/admin/claude-accounts/${y}/toggle`:c==="claude-console"?I=`/admin/claude-console-accounts/${y}/toggle`:c==="bedrock"?I=`/admin/bedrock-accounts/${y}/toggle`:c==="gemini"?I=`/admin/gemini-accounts/${y}/toggle`:c==="openai"?I=`/admin/openai-accounts/${y}/toggle`:c==="azure_openai"?I=`/admin/azure-openai-accounts/${y}/toggle`:c==="openai-responses"?I=`/admin/openai-responses-accounts/${y}/toggle`:I=`/admin/openai-accounts/${y}/toggle`;const ge=await K.put(I);if(ge.success)return c==="claude"?await N():c==="claude-console"?await W():c==="bedrock"?await H():c==="gemini"?await Y():c==="openai"?await G():c==="azure_openai"?await j():c==="openai-responses"?await d():await G(),ge;throw new Error(ge.message||"切换状态失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},deleteAccount:async(c,y)=>{m.value=!0,v.value=null;try{let I;c==="claude"?I=`/admin/claude-accounts/${y}`:c==="claude-console"?I=`/admin/claude-console-accounts/${y}`:c==="bedrock"?I=`/admin/bedrock-accounts/${y}`:c==="gemini"?I=`/admin/gemini-accounts/${y}`:c==="openai"?I=`/admin/openai-accounts/${y}`:c==="azure_openai"?I=`/admin/azure-openai-accounts/${y}`:c==="openai-responses"?I=`/admin/openai-responses-accounts/${y}`:I=`/admin/openai-accounts/${y}`;const ge=await K.delete(I);if(ge.success)return c==="claude"?await N():c==="claude-console"?await W():c==="bedrock"?await H():c==="gemini"?await Y():c==="openai"?await G():c==="azure_openai"?await j():c==="openai-responses"?await d():await G(),ge;throw new Error(ge.message||"删除失败")}catch(I){throw v.value=I.message,I}finally{m.value=!1}},refreshClaudeToken:async c=>{m.value=!0,v.value=null;try{const y=await K.post(`/admin/claude-accounts/${c}/refresh`);if(y.success)return await N(),y;throw new Error(y.message||"Token刷新失败")}catch(y){throw v.value=y.message,y}finally{m.value=!1}},generateClaudeAuthUrl:async c=>{try{const y=await K.post("/admin/claude-accounts/generate-auth-url",c);if(y.success)return y.data;throw new Error(y.message||"生成授权URL失败")}catch(y){throw v.value=y.message,y}},exchangeClaudeCode:async c=>{try{const y=await K.post("/admin/claude-accounts/exchange-code",c);if(y.success)return y.data;throw new Error(y.message||"交换授权码失败")}catch(y){throw v.value=y.message,y}},generateClaudeSetupTokenUrl:async c=>{try{const y=await K.post("/admin/claude-accounts/generate-setup-token-url",c);if(y.success)return y.data;throw new Error(y.message||"生成Setup Token URL失败")}catch(y){throw v.value=y.message,y}},exchangeClaudeSetupTokenCode:async c=>{try{const y=await K.post("/admin/claude-accounts/exchange-setup-token-code",c);if(y.success)return y.data;throw new Error(y.message||"交换Setup Token授权码失败")}catch(y){throw v.value=y.message,y}},generateGeminiAuthUrl:async c=>{try{const y=await K.post("/admin/gemini-accounts/generate-auth-url",c);if(y.success)return y.data;throw new Error(y.message||"生成授权URL失败")}catch(y){throw v.value=y.message,y}},exchangeGeminiCode:async c=>{try{const y=await K.post("/admin/gemini-accounts/exchange-code",c);if(y.success)return y.data;throw new Error(y.message||"交换授权码失败")}catch(y){throw v.value=y.message,y}},generateOpenAIAuthUrl:async c=>{try{const y=await K.post("/admin/openai-accounts/generate-auth-url",c);if(y.success)return y.data;throw new Error(y.message||"生成授权URL失败")}catch(y){throw v.value=y.message,y}},exchangeOpenAICode:async c=>{try{const y=await K.post("/admin/openai-accounts/exchange-code",c);if(y.success)return y.data;throw new Error(y.message||"交换授权码失败")}catch(y){throw v.value=y.message,y}},sortAccounts:c=>{D.value===c?O.value=O.value==="asc"?"desc":"asc":(D.value=c,O.value="asc")},reset:()=>{q.value=[],ce.value=[],p.value=[],ne.value=[],_.value=[],E.value=[],Q.value=[],m.value=!1,v.value=null,D.value="",O.value="asc"}}}),ks={class:"space-y-4"},hs={class:"flex items-center justify-between"},ws={class:"flex cursor-pointer items-center"},$s={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"},As={class:"relative"},Cs={key:0,class:"mt-1 text-xs text-red-500"},Us={key:1,class:"mt-1 text-xs text-green-500"},Is={class:"grid grid-cols-2 gap-4"},Ts={class:"space-y-4"},_s={class:"flex items-center"},Ss={key:0,class:"grid grid-cols-2 gap-4"},Ms={class:"relative"},Vs=["type"],Zt={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(q,{emit:ce}){const p=q,ne=ce,_=$({...p.modelValue}),E=$(!!(_.value.username||_.value.password)),Q=$(!1),m=$(""),v=$(""),D=$(!1);Z(()=>p.modelValue,j=>{JSON.stringify(j)!==JSON.stringify(_.value)&&(_.value={...j},E.value=!!(j.username||j.password))},{deep:!0}),Z(()=>_.value.enabled,()=>{N()}),Z(()=>_.value.type,()=>{N()}),Z(()=>_.value.host,()=>{N()}),Z(()=>_.value.port,()=>{N()}),Z(()=>_.value.username,()=>{N()}),Z(()=>_.value.password,()=>{N()}),Z(E,j=>{j||(_.value.username="",_.value.password="",N())});let O=null;function N(){O&&clearTimeout(O),O=setTimeout(()=>{const j={..._.value};E.value||(j.username="",j.password=""),ne("update:modelValue",j)},100)}function W(){if(v.value="",D.value=!1,!!m.value)try{const j=m.value.split("#")[0].trim();if(!j)return;const d=/^(socks5|https?):\/\/(?:([^:@]+):([^@]+)@)?([^:]+):(\d+)$/i,x=j.match(d);if(!x){const fe=/^([^:]+):(\d+)$/,Ie=j.match(fe);if(Ie){_.value.type="socks5",_.value.host=Ie[1],_.value.port=Ie[2],_.value.username="",_.value.password="",E.value=!1,D.value=!0,N(),setTimeout(()=>{D.value=!1},3e3);return}v.value="无效的代理URL格式,请检查输入";return}const[,M,F,L,A,P]=x;_.value.type=M.toLowerCase(),_.value.host=A,_.value.port=P,F&&L?(_.value.username=decodeURIComponent(F),_.value.password=decodeURIComponent(L),E.value=!0):(_.value.username="",_.value.password="",E.value=!1),D.value=!0,N(),setTimeout(()=>{D.value=!1},3e3)}catch{v.value="解析失败,请检查URL格式"}}function H(){m.value="",v.value="",D.value=!1}function Y(){setTimeout(()=>{W()},0)}function G(){const j=m.value.trim();j.includes("://")?(/^(socks5|https?):\/\/[^:]+:\d+/i.test(j)||/^(socks5|https?):\/\/[^:@]+:[^@]+@[^:]+:\d+/i.test(j))&&W():/^[^:]+:\d{2,5}$/.test(j)&&W()}return os(()=>{O&&clearTimeout(O)}),(j,d)=>(n(),i("div",ks,[e("div",hs,[d[10]||(d[10]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",ws,[f(e("input",{"onUpdate:modelValue":d[0]||(d[0]=x=>_.value.enabled=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[me,_.value.enabled]]),d[9]||(d[9]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),_.value.enabled?(n(),i("div",$s,[d[22]||(d[22]=_t('

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

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

',1)),e("div",null,[d[14]||(d[14]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},[U(" 快速配置 "),e("span",{class:"ml-1 text-xs font-normal text-gray-500 dark:text-gray-400"}," (粘贴完整代理URL自动填充) ")],-1)),e("div",As,[f(e("input",{"onUpdate:modelValue":d[1]||(d[1]=x=>m.value=x),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:G,onKeyup:xs(W,["enter"]),onPaste:Y},null,544),[[T,m.value]]),m.value?(n(),i("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:H},d[11]||(d[11]=[e("i",{class:"fas fa-times"},null,-1)]))):b("",!0)]),v.value?(n(),i("p",Cs,[d[12]||(d[12]=e("i",{class:"fas fa-exclamation-circle mr-1"},null,-1)),U(" "+g(v.value),1)])):D.value?(n(),i("p",Us,d[13]||(d[13]=[e("i",{class:"fas fa-check-circle mr-1"},null,-1),U(" 代理配置已自动填充 ",-1)]))):b("",!0)]),d[23]||(d[23]=e("div",{class:"my-3 border-t border-gray-200 dark:border-gray-600"},null,-1)),e("div",null,[d[16]||(d[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),f(e("select",{"onUpdate:modelValue":d[2]||(d[2]=x=>_.value.type=x),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},d[15]||(d[15]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[ns,_.value.type]])]),e("div",Is,[e("div",null,[d[17]||(d[17]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),f(e("input",{"onUpdate:modelValue":d[3]||(d[3]=x=>_.value.host=x),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),[[T,_.value.host]])]),e("div",null,[d[18]||(d[18]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),f(e("input",{"onUpdate:modelValue":d[4]||(d[4]=x=>_.value.port=x),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),[[T,_.value.port]])])]),e("div",Ts,[e("div",_s,[f(e("input",{id:"proxyAuth","onUpdate:modelValue":d[5]||(d[5]=x=>E.value=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[me,E.value]]),d[19]||(d[19]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),E.value?(n(),i("div",Ss,[e("div",null,[d[20]||(d[20]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),f(e("input",{"onUpdate:modelValue":d[6]||(d[6]=x=>_.value.username=x),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),[[T,_.value.username]])]),e("div",null,[d[21]||(d[21]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",Ms,[f(e("input",{"onUpdate:modelValue":d[7]||(d[7]=x=>_.value.password=x),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:Q.value?"text":"password"},null,8,Vs),[[Yt,_.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:d[8]||(d[8]=x=>Q.value=!Q.value)},[e("i",{class:S(Q.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):b("",!0)]),d[24]||(d[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,"提示:"),U("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):b("",!0)]))}},Rs={class:"space-y-6"},Ks={key:0},zs={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Ps={class:"flex items-start gap-4"},js={class:"flex-1"},Os={class:"space-y-4"},Ds={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Ls={class:"flex items-start gap-3"},Es={class:"flex-1"},Ns=["disabled"],qs={key:0,class:"fas fa-link mr-2"},Ws={key:1,class:"loading-spinner mr-2"},Gs={key:1,class:"space-y-3"},Fs={class:"flex items-center gap-2"},Qs=["value"],Bs={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Hs={class:"flex items-start gap-3"},Js={class:"flex-1"},Ys={class:"space-y-3"},Zs={key:1},Xs={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},ea={class:"flex items-start gap-4"},ta={class:"flex-1"},sa={class:"space-y-4"},aa={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},ra={class:"flex items-start gap-3"},la={class:"flex-1"},oa=["disabled"],na={key:0,class:"fas fa-link mr-2"},ia={key:1,class:"loading-spinner mr-2"},da={key:1,class:"space-y-3"},ua={class:"flex items-center gap-2"},pa=["value"],ga={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},ma={class:"flex items-start gap-3"},ya={class:"flex-1"},xa={class:"space-y-3"},ca={key:2},fa={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},ba={class:"flex items-start gap-4"},va={class:"flex-1"},ka={class:"space-y-4"},ha={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-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"},_a=["value"],Sa={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},Ma={class:"flex items-start gap-3"},Va={class:"flex-1"},Ra={class:"space-y-3"},Ka={class:"flex gap-3 pt-4"},za=["disabled"],Pa={key:0,class:"loading-spinner mr-2"},ja={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(q,{emit:ce}){const p=q,ne=ce,_=us(),E=$(!1),Q=$(!1),m=$(""),v=$(""),D=$(!1),O=$(""),N=oe(()=>m.value&&v.value.trim());Z(v,j=>{if(!j||typeof j!="string")return;const d=j.trim();if(!d)return;if(d.startsWith("http://")||d.startsWith("https://"))if(d.startsWith("http://localhost:45462")||d.startsWith("http://localhost:1455"))try{const F=new URL(d).searchParams.get("code");F?(v.value=F,z("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):z("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(M){console.error("Failed to parse URL:",M),z("链接格式错误,请检查是否为完整的 URL","error")}else if(p.platform==="gemini"||p.platform==="openai")try{const F=new URL(d).searchParams.get("code");F&&(v.value=F,z("成功提取授权码!","success"))}catch{}else z("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const W=async()=>{var j;E.value=!0;try{const d=(j=p.proxy)!=null&&j.enabled?{proxy:{type:p.proxy.type,host:p.proxy.host,port:parseInt(p.proxy.port),username:p.proxy.username||null,password:p.proxy.password||null}}:{};if(p.platform==="claude"){const x=await _.generateClaudeAuthUrl(d);m.value=x.authUrl,O.value=x.sessionId}else if(p.platform==="gemini"){const x=await _.generateGeminiAuthUrl(d);m.value=x.authUrl,O.value=x.sessionId}else if(p.platform==="openai"){const x=await _.generateOpenAIAuthUrl(d);m.value=x.authUrl,O.value=x.sessionId}}catch(d){z(d.message||"生成授权链接失败","error")}finally{E.value=!1}},H=()=>{m.value="",v.value="",W()},Y=async()=>{try{await navigator.clipboard.writeText(m.value),D.value=!0,z("链接已复制","success"),setTimeout(()=>{D.value=!1},2e3)}catch{const d=document.createElement("input");d.value=m.value,document.body.appendChild(d),d.select(),document.execCommand("copy"),document.body.removeChild(d),D.value=!0,z("链接已复制","success"),setTimeout(()=>{D.value=!1},2e3)}},G=async()=>{var j;if(N.value){Q.value=!0;try{let d={};p.platform==="claude"?d={sessionId:O.value,callbackUrl:v.value.trim()}:p.platform==="gemini"?d={code:v.value.trim(),sessionId:O.value}:p.platform==="openai"&&(d={code:v.value.trim(),sessionId:O.value}),(j=p.proxy)!=null&&j.enabled&&(d.proxy={type:p.proxy.type,host:p.proxy.host,port:parseInt(p.proxy.port),username:p.proxy.username||null,password:p.proxy.password||null});let x;p.platform==="claude"?x=await _.exchangeClaudeCode(d):p.platform==="gemini"?x=await _.exchangeGeminiCode(d):p.platform==="openai"&&(x=await _.exchangeOpenAICode(d)),ne("success",x)}catch(d){z(d.message||"授权失败,请检查授权码是否正确","error")}finally{Q.value=!1}}};return(j,d)=>(n(),i("div",Rs,[q.platform==="claude"?(n(),i("div",Ks,[e("div",zs,[e("div",Ps,[d[15]||(d[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",js,[d[13]||(d[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),d[14]||(d[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",Os,[e("div",Ds,[e("div",Ls,[d[6]||(d[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",Es,[d[5]||(d[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),m.value?(n(),i("div",Gs,[e("div",Fs,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:m.value},null,8,Qs),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:Y},[e("i",{class:S(D.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:H},d[4]||(d[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:E.value,onClick:W},[E.value?(n(),i("div",Ws)):(n(),i("i",qs)),U(" "+g(E.value?"生成中...":"生成授权链接"),1)],8,Ns))])])]),d[12]||(d[12]=_t('
2

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

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

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

',1)),e("div",Bs,[e("div",Hs,[d[11]||(d[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",Js,[d[9]||(d[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),d[10]||(d[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[U(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),U(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",Ys,[e("div",null,[d[7]||(d[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"}),U("Authorization Code ")],-1)),f(e("textarea",{"onUpdate:modelValue":d[0]||(d[0]=x=>v.value=x),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[T,v.value]])]),d[8]||(d[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):q.platform==="gemini"?(n(),i("div",Zs,[e("div",Xs,[e("div",ea,[d[27]||(d[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",ta,[d[25]||(d[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),d[26]||(d[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",sa,[e("div",aa,[e("div",ra,[d[18]||(d[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",la,[d[17]||(d[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),m.value?(n(),i("div",da,[e("div",ua,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:m.value},null,8,pa),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:Y},[e("i",{class:S(D.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:H},d[16]||(d[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:E.value,onClick:W},[E.value?(n(),i("div",ia)):(n(),i("i",na)),U(" "+g(E.value?"生成中...":"生成授权链接"),1)],8,oa))])])]),d[24]||(d[24]=_t('
2

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

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

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

',1)),e("div",ga,[e("div",ma,[d[23]||(d[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",ya,[d[21]||(d[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),d[22]||(d[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",xa,[e("div",null,[d[19]||(d[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"}),U("Authorization Code ")],-1)),f(e("textarea",{"onUpdate:modelValue":d[1]||(d[1]=x=>v.value=x),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[T,v.value]])]),d[20]||(d[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"}),U(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):q.platform==="openai"?(n(),i("div",ca,[e("div",fa,[e("div",ba,[d[39]||(d[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",va,[d[37]||(d[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),d[38]||(d[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",ka,[e("div",ha,[e("div",wa,[d[30]||(d[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",$a,[d[29]||(d[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),m.value?(n(),i("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:m.value},null,8,_a),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:Y},[e("i",{class:S(D.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:H},d[28]||(d[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:E.value,onClick:W},[E.value?(n(),i("div",Ua)):(n(),i("i",Ca)),U(" "+g(E.value?"生成中...":"生成授权链接"),1)],8,Aa))])])]),d[36]||(d[36]=_t('
2

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

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

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

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

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

',1)),e("div",Sa,[e("div",Ma,[d[35]||(d[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",Va,[d[33]||(d[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),d[34]||(d[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[U(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),U(" 时: ")],-1)),e("div",Ra,[e("div",null,[d[31]||(d[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"}),U("授权链接或 Code ")],-1)),f(e("textarea",{"onUpdate:modelValue":d[2]||(d[2]=x=>v.value=x),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),[[T,v.value]])]),d[32]||(d[32]=_t('

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

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

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):b("",!0),e("div",Ka,[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:d[3]||(d[3]=x=>j.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!N.value||Q.value,type:"button",onClick:G},[Q.value?(n(),i("div",Pa)):b("",!0),U(" "+g(Q.value?"验证中...":"完成授权"),1)],8,za)])]))}},Oa={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Da={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"},La={class:"mb-4 flex items-center justify-between sm:mb-6"},Ea={class:"mb-6"},Na={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},qa={class:"space-y-4"},Wa={class:"flex gap-4"},Ga={class:"flex cursor-pointer items-center"},Fa={class:"flex cursor-pointer items-center"},Qa={class:"flex cursor-pointer items-center"},Ba={class:"flex gap-3"},Ha=["disabled"],Ja={key:0,class:"loading-spinner mr-2"},Ya={class:"space-y-4"},Za={key:0,class:"py-8 text-center"},Xa={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},er={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},tr={class:"mb-3 flex items-start justify-between"},sr={class:"flex-1"},ar={class:"font-semibold text-gray-900"},rr={class:"mt-1 text-sm text-gray-500"},lr={class:"ml-4 flex items-center gap-2"},or={class:"flex items-center justify-between text-sm text-gray-600"},nr={class:"flex items-center gap-4"},ir={class:"flex items-center gap-2"},dr=["onClick"],ur=["disabled","onClick"],pr={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},gr={class:"modal-content w-full max-w-lg p-4 sm:p-6"},mr={class:"space-y-4"},yr={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},xr={class:"flex gap-3 pt-4"},cr=["disabled"],fr={key:0,class:"loading-spinner mr-2"},br={__name:"GroupManagementModal",emits:["close","refresh"],setup(q,{emit:ce}){const p=ce,ne=$(!0),_=$(!1),E=$([]),Q=$(!1),m=$(!1),v=$({name:"",platform:"claude",description:""}),D=$(!1),O=$(!1),N=$(null),W=$({name:"",platform:"",description:""}),H=L=>L?new Date(L).toLocaleDateString("zh-CN"):"-",Y=async()=>{_.value=!0;try{const L=await K.get("/admin/account-groups");E.value=L.data||[]}catch{z("加载分组列表失败","error")}finally{_.value=!1}},G=async()=>{var L,A;if(!v.value.name||!v.value.platform){z("请填写必填项","error");return}m.value=!0;try{await K.post("/admin/account-groups",{name:v.value.name,platform:v.value.platform,description:v.value.description}),z("分组创建成功","success"),j(),await Y(),p("refresh")}catch(P){z(((A=(L=P.response)==null?void 0:L.data)==null?void 0:A.error)||"创建分组失败","error")}finally{m.value=!1}},j=()=>{Q.value=!1,v.value={name:"",platform:"claude",description:""}},d=L=>{N.value=L,W.value={name:L.name,platform:L.platform,description:L.description||""},D.value=!0},x=async()=>{var L,A;if(!W.value.name){z("请填写分组名称","error");return}O.value=!0;try{await K.put(`/admin/account-groups/${N.value.id}`,{name:W.value.name,description:W.value.description}),z("分组更新成功","success"),M(),await Y(),p("refresh")}catch(P){z(((A=(L=P.response)==null?void 0:L.data)==null?void 0:A.error)||"更新分组失败","error")}finally{O.value=!1}},M=()=>{D.value=!1,N.value=null,W.value={name:"",platform:"",description:""}},F=async L=>{var A,P;if(L.memberCount>0){z("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${L.name}" 吗?`))try{await K.delete(`/admin/account-groups/${L.id}`),z("分组删除成功","success"),await Y(),p("refresh")}catch(fe){z(((P=(A=fe.response)==null?void 0:A.data)==null?void 0:P.error)||"删除分组失败","error")}};return Gt(()=>{Y()}),(L,A)=>(n(),Oe(Ft,{to:"body"},[ne.value?(n(),i("div",Oa,[e("div",Da,[e("div",La,[A[10]||(A[10]=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:A[0]||(A[0]=P=>L.$emit("close"))},A[9]||(A[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Ea,[e("button",{class:"btn btn-primary px-4 py-2",onClick:A[1]||(A[1]=P=>Q.value=!0)},A[11]||(A[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 创建新分组 ",-1)]))]),Q.value?(n(),i("div",Na,[A[18]||(A[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",qa,[e("div",null,[A[12]||(A[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),f(e("input",{"onUpdate:modelValue":A[2]||(A[2]=P=>v.value.name=P),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,v.value.name]])]),e("div",null,[A[16]||(A[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Wa,[e("label",Ga,[f(e("input",{"onUpdate:modelValue":A[3]||(A[3]=P=>v.value.platform=P),class:"mr-2",type:"radio",value:"claude"},null,512),[[de,v.value.platform]]),A[13]||(A[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Fa,[f(e("input",{"onUpdate:modelValue":A[4]||(A[4]=P=>v.value.platform=P),class:"mr-2",type:"radio",value:"gemini"},null,512),[[de,v.value.platform]]),A[14]||(A[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Qa,[f(e("input",{"onUpdate:modelValue":A[5]||(A[5]=P=>v.value.platform=P),class:"mr-2",type:"radio",value:"openai"},null,512),[[de,v.value.platform]]),A[15]||(A[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[A[17]||(A[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":A[6]||(A[6]=P=>v.value.description=P),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,v.value.description]])]),e("div",Ba,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!v.value.name||!v.value.platform||m.value,onClick:G},[m.value?(n(),i("div",Ja)):b("",!0),U(" "+g(m.value?"创建中...":"创建"),1)],8,Ha),e("button",{class:"btn btn-secondary px-4 py-2",onClick:j},"取消")])])])):b("",!0),e("div",Ya,[_.value?(n(),i("div",Za,A[19]||(A[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):E.value.length===0?(n(),i("div",Xa,A[20]||(A[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),i("div",er,[(n(!0),i(ke,null,Me(E.value,P=>(n(),i("div",{key:P.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",tr,[e("div",sr,[e("h4",ar,g(P.name),1),e("p",rr,g(P.description||"暂无描述"),1)]),e("div",lr,[e("span",{class:S(["rounded-full px-2 py-1 text-xs font-medium",P.platform==="claude"?"bg-purple-100 text-purple-700":P.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},g(P.platform==="claude"?"Claude":P.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",or,[e("div",nr,[e("span",null,[A[21]||(A[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),U(" "+g(P.memberCount||0)+" 个成员 ",1)]),e("span",null,[A[22]||(A[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),U(" "+g(H(P.createdAt)),1)])]),e("div",ir,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:fe=>d(P)},A[23]||(A[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,dr),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:P.memberCount>0,title:"删除",onClick:fe=>F(P)},A[24]||(A[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ur)])])]))),128))]))])])])):b("",!0),D.value?(n(),i("div",pr,[e("div",gr,[e("div",{class:"mb-4 flex items-center justify-between"},[A[26]||(A[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:M},A[25]||(A[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",mr,[e("div",null,[A[27]||(A[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),f(e("input",{"onUpdate:modelValue":A[7]||(A[7]=P=>W.value.name=P),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,W.value.name]])]),e("div",null,[A[29]||(A[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",yr,[U(g(W.value.platform==="claude"?"Claude":W.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),A[28]||(A[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[A[30]||(A[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":A[8]||(A[8]=P=>W.value.description=P),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,W.value.description]])]),e("div",xr,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!W.value.name||O.value,onClick:x},[O.value?(n(),i("div",fr)):b("",!0),U(" "+g(O.value?"更新中...":"更新"),1)],8,cr),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:M},"取消")])])])])):b("",!0)]))}},vr={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},kr={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"},hr={class:"mb-4 flex items-center justify-between sm:mb-6"},wr={class:"flex items-center gap-2 sm:gap-3"},$r={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},Ar={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},Cr={class:"flex items-center space-x-2 sm:space-x-4"},Ur={class:"flex items-center"},Ir={class:"flex items-center"},Tr={key:1},_r={class:"space-y-6"},Sr={key:0},Mr={class:"space-y-3"},Vr={class:"grid grid-cols-3 gap-2"},Rr={class:"p-3"},Kr={class:"flex items-center justify-between"},zr={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-indigo-500"},Pr={class:"p-3"},jr={class:"flex items-center justify-between"},Or={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500"},Dr={class:"p-3"},Lr={class:"flex items-center justify-between"},Er={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-blue-500"},Nr={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"},qr={class:"grid grid-cols-2 gap-2 sm:grid-cols-3"},Wr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-indigo-500"},Gr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-purple-500"},Fr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-orange-500"},Qr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-cyan-500"},Br={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-emerald-500"},Hr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-teal-500"},Jr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},Yr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},Zr={key:1},Xr={class:"flex flex-wrap gap-4"},el={class:"flex cursor-pointer items-center"},tl={key:0,class:"flex cursor-pointer items-center"},sl={class:"flex cursor-pointer items-center"},al={key:0,class:"mt-1 text-xs text-red-500"},rl={class:"flex gap-4"},ll={class:"flex cursor-pointer items-center"},ol={class:"flex cursor-pointer items-center"},nl={class:"flex cursor-pointer items-center"},il={key:2},dl={class:"flex gap-2"},ul={class:"flex-1"},pl={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},gl={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},ml=["value"],yl={class:"text-sm text-gray-700 dark:text-gray-200"},xl={key:3},cl={key:4,class:"space-y-4"},fl={key:0,class:"mt-1 text-xs text-red-500"},bl={key:0,class:"mt-1 text-xs text-red-500"},vl={key:0,class:"mt-1 text-xs text-red-500"},kl={key:5,class:"space-y-4"},hl={key:0,class:"mt-1 text-xs text-red-500"},wl={key:0,class:"mt-1 text-xs text-red-500"},$l={key:0,class:"mt-1 text-xs text-red-500"},Al={class:"flex flex-wrap gap-2"},Cl=["value"],Ul={class:"text-sm text-gray-700 dark:text-gray-300"},Il={key:6},Tl={class:"mb-3"},_l={class:"inline-flex cursor-pointer items-center"},Sl={key:0},Ml={key:7,class:"space-y-4"},Vl={key:0,class:"mt-1 text-xs text-red-500"},Rl={key:0,class:"mt-1 text-xs text-red-500"},Kl={class:"grid grid-cols-2 gap-4"},zl={class:"mb-3 space-y-2"},Pl=["onUpdate:modelValue"],jl=["onUpdate:modelValue"],Ol=["onClick"],Dl={class:"mt-3 flex flex-wrap gap-2"},Ll={class:"mb-3"},El={class:"inline-flex cursor-pointer items-center"},Nl={key:0},ql={key:8,class:"space-y-4"},Wl={class:"relative"},Gl=["type"],Fl={key:9},Ql={class:"flex gap-4"},Bl={class:"flex cursor-pointer items-center"},Hl={class:"flex cursor-pointer items-center"},Jl={key:10,class:"mt-4"},Yl={class:"flex items-start"},Zl={key:11,class:"mt-4"},Xl={class:"flex items-start"},eo={class:"ml-3"},to={key:0,class:"mt-1"},so={class:"flex items-center justify-between"},ao={class:"text-xs text-green-600 dark:text-green-400"},ro=["disabled"],lo={key:0,class:"fas fa-trash-alt mr-1"},oo={key:1,class:"loading-spinner mr-1"},no={key:1,class:"mt-1"},io={key:12,class:"mt-4"},uo={class:"flex items-start"},po={class:"ml-3 flex-1"},go={key:0,class:"mt-3"},mo={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},yo={class:"flex items-center gap-2"},xo={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"},co={class:"text-blue-600 dark:text-blue-400"},fo={class:"text-gray-500 dark:text-gray-500"},bo={class:"text-blue-600 dark:text-blue-400"},vo={key:13,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},ko={class:"mb-4 flex items-start gap-3"},ho={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},wo={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},$o={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Ao={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"},Co={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},Uo={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},Io={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},To={key:0},_o={key:1},So={key:0,class:"mt-1 text-xs text-red-500"},Mo={key:2},Vo={key:0,class:"mt-1 text-xs text-red-500"},Ro={key:3},Ko={class:"flex gap-3 pt-4"},zo=["disabled"],Po=["disabled"],jo={key:0,class:"loading-spinner mr-2"},Oo={key:3,class:"space-y-6"},Do={key:0},Lo={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Eo={class:"flex items-start gap-4"},No={class:"flex-1"},qo={class:"space-y-4"},Wo={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Go={class:"flex items-start gap-3"},Fo={class:"flex-1"},Qo=["disabled"],Bo={key:0,class:"fas fa-link mr-2"},Ho={key:1,class:"loading-spinner mr-2"},Jo={key:1,class:"space-y-3"},Yo={class:"flex items-center gap-2"},Zo=["value"],Xo={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},en={class:"flex items-start gap-3"},tn={class:"flex-1"},sn={class:"space-y-3"},an={class:"flex gap-3 pt-4"},rn=["disabled"],ln={key:0,class:"loading-spinner mr-2"},on={key:4,class:"space-y-6"},nn={class:"flex gap-4"},dn={class:"flex cursor-pointer items-center"},un={class:"flex cursor-pointer items-center"},pn={class:"flex cursor-pointer items-center"},gn={key:0},mn={class:"flex gap-2"},yn={class:"flex-1"},xn={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},cn={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},fn=["value"],bn={class:"text-sm text-gray-700 dark:text-gray-200"},vn={key:1},kn={key:2},hn={class:"flex gap-4"},wn={class:"flex cursor-pointer items-center"},$n={class:"flex cursor-pointer items-center"},An={key:3,class:"mt-4"},Cn={class:"flex items-start"},Un={key:4,class:"mt-4"},In={class:"flex items-start"},Tn={class:"ml-3"},_n={key:0,class:"mt-1"},Sn={class:"flex items-center justify-between"},Mn={class:"text-xs text-green-600 dark:text-green-400"},Vn=["disabled"],Rn={key:0,class:"fas fa-trash-alt mr-1"},Kn={key:1,class:"loading-spinner mr-1"},zn={key:1,class:"mt-1"},Pn={key:5,class:"mt-4"},jn={class:"flex items-start"},On={class:"ml-3 flex-1"},Dn={key:0,class:"mt-3"},Ln={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},En={class:"flex items-center gap-2"},Nn={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"},qn={class:"text-blue-600 dark:text-blue-400"},Wn={class:"text-gray-500 dark:text-gray-500"},Gn={class:"text-blue-600 dark:text-blue-400"},Fn={key:6,class:"space-y-4"},Qn={class:"grid grid-cols-2 gap-4"},Bn={key:0,class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},Hn={class:"mb-2 flex items-center justify-between"},Jn={class:"text-sm text-gray-500 dark:text-gray-400"},Yn={class:"relative h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Zn={class:"mt-2 flex items-center justify-between text-xs"},Xn={class:"text-gray-500 dark:text-gray-400"},ei={class:"text-gray-500 dark:text-gray-400"},ti={class:"mb-3 space-y-2"},si=["onUpdate:modelValue"],ai=["onUpdate:modelValue"],ri=["onClick"],li={class:"mt-3 flex flex-wrap gap-2"},oi={class:"mb-3"},ni={class:"inline-flex cursor-pointer items-center"},ii={key:0},di={key:7,class:"space-y-4"},ui={class:"relative"},pi=["type"],gi={class:"grid grid-cols-2 gap-4"},mi={key:8,class:"space-y-4"},yi={class:"mb-3"},xi={class:"inline-flex cursor-pointer items-center"},ci={key:0},fi={key:9,class:"space-y-4"},bi={key:0,class:"mt-1 text-xs text-red-500"},vi={key:0,class:"mt-1 text-xs text-red-500"},ki={key:0,class:"mt-1 text-xs text-red-500"},hi={class:"flex flex-wrap gap-2"},wi=["value"],$i={class:"text-sm text-gray-700 dark:text-gray-300"},Ai={key:10,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},Ci={class:"space-y-4"},Ui={class:"flex gap-3 pt-4"},Ii=["disabled"],Ti={key:0,class:"loading-spinner mr-2"},_i={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success","platform-changed"],setup(q,{emit:ce}){var be,ut,Pe,He,rt,pt,lt,gt,Ge,St,Mt,yt,bt,vt,Vt,Rt,kt,ht,wt,Kt,$t,At,zt,Pt,Ct,Ut,It;const p=q,ne=ce,_=us(),{showConfirmModal:E,confirmOptions:Q,showConfirm:m,handleConfirm:v,handleCancel:D}=ds(),O=oe(()=>!!p.account),N=$(!0),W=$(1),H=$(!1),Y=$(!1),G=$(!1),j=$(!1),d=$(""),x=$(""),M=$(!1),F=$(""),L=$(""),A=$(!1),P=$(""),fe=u=>["claude","claude-console","ccr","bedrock"].includes(u)?"claude":["openai","openai-responses","azure_openai"].includes(u)?"openai":u==="gemini"?"gemini":"",Ie=()=>{var u;return(u=p.account)!=null&&u.proxy&&p.account.proxy.host&&p.account.proxy.port?{enabled:!0,type:p.account.proxy.type||"socks5",host:p.account.proxy.host,port:p.account.proxy.port,username:p.account.proxy.username||"",password:p.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=$({platform:((be=p.account)==null?void 0:be.platform)||"claude",addType:(()=>{var t;const u=((t=p.account)==null?void 0:t.platform)||"claude";return u==="gemini"||u==="openai"||u==="claude"?"oauth":"manual"})(),name:((ut=p.account)==null?void 0:ut.name)||"",description:((Pe=p.account)==null?void 0:Pe.description)||"",accountType:((He=p.account)==null?void 0:He.accountType)||"shared",subscriptionType:"claude_max",autoStopOnWarning:((rt=p.account)==null?void 0:rt.autoStopOnWarning)||!1,useUnifiedUserAgent:((pt=p.account)==null?void 0:pt.useUnifiedUserAgent)||!1,useUnifiedClientId:((lt=p.account)==null?void 0:lt.useUnifiedClientId)||!1,unifiedClientId:((gt=p.account)==null?void 0:gt.unifiedClientId)||"",groupId:"",groupIds:[],projectId:((Ge=p.account)==null?void 0:Ge.projectId)||"",accessToken:"",refreshToken:"",proxy:Ie(),apiUrl:((St=p.account)==null?void 0:St.apiUrl)||"",apiKey:((Mt=p.account)==null?void 0:Mt.apiKey)||"",priority:((yt=p.account)==null?void 0:yt.priority)||50,baseApi:((bt=p.account)==null?void 0:bt.baseApi)||"",rateLimitDuration:((vt=p.account)==null?void 0:vt.rateLimitDuration)||60,supportedModels:(()=>{var t;const u=(t=p.account)==null?void 0:t.supportedModels;return u?typeof u=="object"&&!Array.isArray(u)?Object.keys(u):Array.isArray(u)?u:[]:[]})(),userAgent:((Vt=p.account)==null?void 0:Vt.userAgent)||"",enableRateLimit:p.account?p.account.rateLimitDuration>0:!0,dailyQuota:((Rt=p.account)==null?void 0:Rt.dailyQuota)||0,dailyUsage:((kt=p.account)==null?void 0:kt.dailyUsage)||0,quotaResetTime:((ht=p.account)==null?void 0:ht.quotaResetTime)||"00:00",accessKeyId:((wt=p.account)==null?void 0:wt.accessKeyId)||"",secretAccessKey:((Kt=p.account)==null?void 0:Kt.secretAccessKey)||"",region:(($t=p.account)==null?void 0:$t.region)||"",sessionToken:((At=p.account)==null?void 0:At.sessionToken)||"",defaultModel:((zt=p.account)==null?void 0:zt.defaultModel)||"",smallFastModel:((Pt=p.account)==null?void 0:Pt.smallFastModel)||"",azureEndpoint:((Ct=p.account)==null?void 0:Ct.azureEndpoint)||"",apiVersion:((Ut=p.account)==null?void 0:Ut.apiVersion)||"",deploymentName:((It=p.account)==null?void 0:It.deploymentName)||""}),k=$([]),ye=()=>{var u;(u=p.account)!=null&&u.supportedModels&&(typeof p.account.supportedModels=="object"&&!Array.isArray(p.account.supportedModels)?k.value=Object.entries(p.account.supportedModels).map(([t,o])=>({from:t,to:o})):Array.isArray(p.account.supportedModels)&&(k.value=p.account.supportedModels.map(t=>({from:t,to:t}))))},h=$({name:"",refreshToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:"",azureEndpoint:"",deploymentName:""}),he=oe(()=>{var u;return((u=s.value.name)==null?void 0:u.trim())&&s.value.platform}),De=oe(()=>d.value&&x.value.trim()),we=()=>{var u;return!O.value||!((u=p.account)!=null&&u.id)?0:typeof s.value.dailyUsage=="number"?s.value.dailyUsage:0},Ae=oe(()=>!s.value.dailyQuota||s.value.dailyQuota<=0?0:we()/s.value.dailyQuota*100),Le=async()=>{var u;if(!(!O.value||!((u=p.account)!=null&&u.id)))try{const t=await K.get(`/admin/claude-console-accounts/${p.account.id}/usage`);t&&(s.value.dailyUsage=t.dailyUsage||0)}catch{}},Je=u=>{P.value=u,u==="claude"?s.value.platform="claude":u==="openai"?s.value.platform="openai":u==="gemini"&&(s.value.platform="gemini")},ot=async()=>{if(h.value.name="",!he.value){(!s.value.name||s.value.name.trim()==="")&&(h.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"&&W.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await m("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写"))&&(W.value=2)},et=async()=>{var u;G.value=!0;try{const t=(u=s.value.proxy)!=null&&u.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},o=await _.generateClaudeSetupTokenUrl(t);d.value=o.authUrl,F.value=o.sessionId}catch(t){z(t.message||"生成Setup Token授权链接失败","error")}finally{G.value=!1}},nt=()=>{d.value="",x.value="",et()},Ye=async()=>{try{await navigator.clipboard.writeText(d.value),M.value=!0,z("链接已复制","success"),setTimeout(()=>{M.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=d.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(M.value=!0,z("链接已复制","success")):z("复制失败,请手动复制","error")}catch{z("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{M.value=!1},2e3)}},Ee=async()=>{var u;if(De.value){j.value=!0;try{const t={sessionId:F.value,callbackUrl:x.value.trim()};(u=s.value.proxy)!=null&&u.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const o=await _.exchangeClaudeSetupTokenCode(t);s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=We()),await Ve(o)}catch(t){z(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{j.value=!1}}},Ve=async u=>{var t,o,X,B,je,V;H.value=!0;try{s.value.platform==="claude"&&s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=We());const 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,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(C.claudeAiOauth=u.claudeAiOauth||u,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}):s.value.platform==="gemini"?(C.geminiOauth=u.tokens||u,s.value.projectId&&(C.projectId=s.value.projectId),C.priority=s.value.priority||50):s.value.platform==="openai"&&(C.openaiOauth=u.tokens||u,C.accountInfo=u.accountInfo,C.priority=s.value.priority||50);let ue;s.value.platform==="claude"?ue=await _.createClaudeAccount(C):s.value.platform==="openai"?ue=await _.createOpenAIAccount(C):ue=await _.createGeminiAccount(C),ne("success",ue)}catch(C){const ue=((o=(t=C.response)==null?void 0:t.data)==null?void 0:o.error)||C.message||"账户创建失败",ie=((B=(X=C.response)==null?void 0:X.data)==null?void 0:B.suggestion)||"",le=((V=(je=C.response)==null?void 0:je.data)==null?void 0:V.errorDetails)||null;let $e=ue;ie&&($e+=` ${ie}`),le&&le.error_description?$e+=` 详细信息: ${le.error_description}`:le&&le.error&&le.error.message&&($e+=` 详细信息: ${le.error.message}`),z($e,"error","",8e3)}finally{H.value=!1}},Ke=async()=>{var t,o,X,B,je,V;h.value.name="",h.value.accessToken="",h.value.apiUrl="",h.value.apiKey="";let u=!1;if((!s.value.name||s.value.name.trim()==="")&&(h.value.name="请填写账户名称",u=!0),s.value.platform==="claude-console"&&((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(h.value.apiUrl="请填写 API URL",u=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API Key",u=!0)),s.value.platform==="ccr"&&((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(h.value.apiUrl="请填写 API URL",u=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API Key",u=!0)),s.value.platform==="openai-responses"?((!s.value.baseApi||s.value.baseApi.trim()==="")&&(h.value.baseApi="请填写 API 基础地址",u=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API 密钥",u=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(h.value.accessKeyId="请填写 AWS 访问密钥 ID",u=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(h.value.secretAccessKey="请填写 AWS 秘密访问密钥",u=!0),(!s.value.region||s.value.region.trim()==="")&&(h.value.region="请选择 AWS 区域",u=!0)):s.value.platform==="azure_openai"?((!s.value.azureEndpoint||s.value.azureEndpoint.trim()==="")&&(h.value.azureEndpoint="请填写 Azure Endpoint",u=!0),(!s.value.deploymentName||s.value.deploymentName.trim()==="")&&(h.value.deploymentName="请填写部署名称",u=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API Key",u=!0)):s.value.addType==="manual"&&(s.value.platform==="openai"?(!s.value.refreshToken||s.value.refreshToken.trim()==="")&&(h.value.refreshToken="请填写 Refresh Token",u=!0):s.value.platform==="gemini"?(!s.value.accessToken||s.value.accessToken.trim()==="")&&(h.value.accessToken="请填写 Access Token",u=!0):s.value.platform==="claude"&&(!s.value.accessToken||s.value.accessToken.trim()==="")&&(h.value.accessToken="请填写 Access Token",u=!0)),s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)&&(z("请选择一个分组","error"),u=!0),s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!u){H.value=!0;try{const 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,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const ie=s.value.refreshToken?6e5:31536e6;s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=We()),C.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+ie,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 ie=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()+ie},s.value.projectId&&(C.projectId=s.value.projectId),C.priority=s.value.priority||50}else if(s.value.platform==="openai"){const ie=s.value.refreshToken?6e5:31536e6;C.openaiOauth={idToken:"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken,expires_in:Math.floor(ie/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 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=it()||{},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"):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==="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 ue;if(s.value.platform==="claude")ue=await _.createClaudeAccount(C);else if(s.value.platform==="claude-console"||s.value.platform==="ccr")ue=await _.createClaudeConsoleAccount(C);else if(s.value.platform==="openai-responses")ue=await _.createOpenAIResponsesAccount(C);else if(s.value.platform==="bedrock")ue=await _.createBedrockAccount(C);else if(s.value.platform==="openai")ue=await _.createOpenAIAccount(C);else if(s.value.platform==="azure_openai")ue=await _.createAzureOpenAIAccount(C);else if(s.value.platform==="gemini")ue=await _.createGeminiAccount(C);else throw new Error(`不支持的平台: ${s.value.platform}`);ne("success",ue)}catch(C){const ue=((o=(t=C.response)==null?void 0:t.data)==null?void 0:o.error)||C.message||"账户创建失败",ie=((B=(X=C.response)==null?void 0:X.data)==null?void 0:B.suggestion)||"",le=((V=(je=C.response)==null?void 0:je.data)==null?void 0:V.errorDetails)||null;let $e=ue;ie&&($e+=` ${ie}`),le&&le.error_description?$e+=` 详细信息: ${le.error_description}`:le&&le.error&&le.error.message&&($e+=` 详细信息: ${le.error.message}`),z($e,"error","",8e3)}finally{H.value=!1}}},Ne=async()=>{var u,t,o,X,B,je;if(h.value.name="",!s.value.name||s.value.name.trim()===""){h.value.name="请填写账户名称";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 m("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){H.value=!0;try{const V={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,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(p.account.platform==="claude"){const C=s.value.refreshToken?6e5:31536e6;V.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+C,scopes:p.account.scopes||[]}}else if(p.account.platform==="gemini"){const C=s.value.refreshToken?6e5:31536e6;V.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()+C}}else if(p.account.platform==="openai"){const C=s.value.refreshToken?6e5:31536e6;V.openaiOauth={idToken:"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(C/1e3)},s.value.refreshToken&&s.value.refreshToken!==p.account.refreshToken&&(V.needsImmediateRefresh=!0,V.requireRefreshSuccess=!0)}}if(p.account.platform==="gemini"&&(V.projectId=s.value.projectId||""),p.account.platform==="claude"&&(s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=We()),V.priority=s.value.priority||50,V.autoStopOnWarning=s.value.autoStopOnWarning||!1,V.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,V.useUnifiedClientId=s.value.useUnifiedClientId||!1,V.unifiedClientId=s.value.unifiedClientId||"",V.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),p.account.platform==="openai"&&(V.priority=s.value.priority||50),p.account.platform==="gemini"&&(V.priority=s.value.priority||50),p.account.platform==="claude-console"&&(V.apiUrl=s.value.apiUrl,s.value.apiKey&&(V.apiKey=s.value.apiKey),V.priority=s.value.priority||50,V.supportedModels=it()||{},V.userAgent=s.value.userAgent||null,V.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0,V.dailyQuota=s.value.dailyQuota||0,V.quotaResetTime=s.value.quotaResetTime||"00:00"),p.account.platform==="openai-responses"&&(V.baseApi=s.value.baseApi,s.value.apiKey&&(V.apiKey=s.value.apiKey),V.userAgent=s.value.userAgent||"",V.priority=s.value.priority||50,V.dailyQuota=s.value.dailyQuota||0,V.quotaResetTime=s.value.quotaResetTime||"00:00"),p.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(V.awsCredentials={},s.value.accessKeyId&&(V.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(V.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(V.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(V.region=s.value.region),V.defaultModel=s.value.defaultModel||null,V.smallFastModel=s.value.smallFastModel||null,V.priority=s.value.priority||50,V.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),p.account.platform==="azure_openai"&&(V.azureEndpoint=s.value.azureEndpoint,V.apiVersion=s.value.apiVersion||"2024-02-01",V.deploymentName=s.value.deploymentName,V.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[],V.priority=s.value.priority||50,s.value.apiKey&&s.value.apiKey.trim()&&(V.apiKey=s.value.apiKey)),p.account.platform==="claude")await _.updateClaudeAccount(p.account.id,V);else if(p.account.platform==="claude-console")await _.updateClaudeConsoleAccount(p.account.id,V);else if(p.account.platform==="openai-responses")await _.updateOpenAIResponsesAccount(p.account.id,V);else if(p.account.platform==="bedrock")await _.updateBedrockAccount(p.account.id,V);else if(p.account.platform==="openai")await _.updateOpenAIAccount(p.account.id,V);else if(p.account.platform==="azure_openai")await _.updateAzureOpenAIAccount(p.account.id,V);else if(p.account.platform==="gemini")await _.updateGeminiAccount(p.account.id,V);else throw new Error(`不支持的平台: ${p.account.platform}`);ne("success")}catch(V){const C=((t=(u=V.response)==null?void 0:u.data)==null?void 0:t.error)||V.message||"账户更新失败",ue=((X=(o=V.response)==null?void 0:o.data)==null?void 0:X.suggestion)||"",ie=((je=(B=V.response)==null?void 0:B.data)==null?void 0:je.errorDetails)||null;let le=C;ue&&(le+=` ${ue}`),ie&&ie.error_description?le+=` 详细信息: ${ie.error_description}`:ie&&ie.error&&ie.error.message&&(le+=` 详细信息: ${ie.error.message}`),z(le,"error","",8e3)}finally{H.value=!1}}};Z(()=>s.value.name,()=>{var u;h.value.name&&((u=s.value.name)!=null&&u.trim())&&(h.value.name="")}),Z(()=>s.value.accessToken,()=>{var u;h.value.accessToken&&((u=s.value.accessToken)!=null&&u.trim())&&(h.value.accessToken="")}),Z(()=>s.value.apiUrl,()=>{var u;h.value.apiUrl&&((u=s.value.apiUrl)!=null&&u.trim())&&(h.value.apiUrl="")}),Z(()=>s.value.apiKey,()=>{var u;h.value.apiKey&&((u=s.value.apiKey)!=null&&u.trim())&&(h.value.apiKey="")}),Z(()=>s.value.azureEndpoint,()=>{var u;h.value.azureEndpoint&&((u=s.value.azureEndpoint)!=null&&u.trim())&&(h.value.azureEndpoint="")}),Z(()=>s.value.deploymentName,()=>{var u;h.value.deploymentName&&((u=s.value.deploymentName)!=null&&u.trim())&&(h.value.deploymentName="")});const qe=$([]),Qe=$(!1),c=$(!1),y=oe(()=>{let u=s.value.platform;return s.value.platform==="claude-console"||s.value.platform==="ccr"?u="claude":s.value.platform==="openai-responses"&&(u="openai"),qe.value.filter(t=>t.platform===u)}),I=async()=>{Qe.value=!0;try{const u=await K.get("/admin/account-groups");qe.value=u.data||[]}catch{z("加载分组列表失败","error"),qe.value=[]}finally{Qe.value=!1}},ge=async()=>{await I(),z("分组列表已刷新","success")},Ce=()=>{c.value=!0},Be=async()=>{await I()};Z(()=>s.value.platform,u=>{u==="claude-console"||u==="ccr"||u==="bedrock"||u==="openai-responses"?s.value.addType="manual":(u==="claude"||u==="gemini"||u==="openai")&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="",s.value.groupIds=[])}),Z(()=>s.value.groupIds,u=>{s.value.accountType==="group"&&(u&&u.length>0?s.value.groupId=u[0]:s.value.groupId="")},{deep:!0}),Z(x,u=>{if(!u||typeof u!="string")return;const t=u.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const B=new URL(t).searchParams.get("code");B?(x.value=B,z("成功提取授权码!","success")):z("URL 中未找到授权码参数,请检查链接是否正确","error")}catch{z("链接格式错误,请检查是否为完整的 URL","error")}else z("请粘贴以 http://localhost:45462 开头的链接","error")}),Z(()=>s.value.platform,u=>{O.value||ne("platform-changed",u)}),Z(()=>s.value.accountType,u=>{u==="group"&&qe.value.length===0&&I()}),Z(()=>s.value.groupId,u=>{u==="__new__"&&(s.value.groupId="",c.value=!0)});const tt=()=>{k.value.push({from:"",to:""})},st=u=>{k.value.splice(u,1)},Re=(u,t)=>{if(k.value.some(X=>X.from===u)){z(`模型 ${u} 的映射已存在`,"info");return}k.value.push({from:u,to:t}),z(`已添加映射: ${u} → ${t}`,"success")},it=()=>{const u={};return k.value.forEach(t=>{t.from&&t.to&&(u[t.from]=t.to)}),Object.keys(u).length>0?u:null};Z(()=>p.account,u=>{if(u){ye();const t=u.proxy&&u.proxy.host&&u.proxy.port?{enabled:!0,type:u.proxy.type||"socks5",host:u.proxy.host,port:u.proxy.port,username:u.proxy.username||"",password:u.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let o="";u.accountType==="group"&&(o=u.groupId||u.groupInfo&&u.groupInfo.id||"");let X="claude_max";if(u.subscriptionInfo){const B=typeof u.subscriptionInfo=="string"?JSON.parse(u.subscriptionInfo):u.subscriptionInfo;B.accountType?X=B.accountType:B.hasClaudeMax?X="claude_max":B.hasClaudePro?X="claude_pro":X="claude_free"}s.value={platform:u.platform,addType:"oauth",name:u.name,description:u.description||"",accountType:u.accountType||"shared",subscriptionType:X,autoStopOnWarning:u.autoStopOnWarning||!1,useUnifiedUserAgent:u.useUnifiedUserAgent||!1,useUnifiedClientId:u.useUnifiedClientId||!1,unifiedClientId:u.unifiedClientId||"",groupId:o,groupIds:[],projectId:u.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:u.apiUrl||"",apiKey:"",priority:u.priority||50,supportedModels:(()=>{const B=u.supportedModels;return B?typeof B=="object"&&!Array.isArray(B)?Object.keys(B):Array.isArray(B)?B:[]:[]})(),userAgent:u.userAgent||"",enableRateLimit:!!(u.rateLimitDuration&&u.rateLimitDuration>0),rateLimitDuration:u.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:u.region||"",sessionToken:"",defaultModel:u.defaultModel||"",smallFastModel:u.smallFastModel||"",azureEndpoint:u.azureEndpoint||"",apiVersion:u.apiVersion||"",deploymentName:u.deploymentName||"",baseApi:u.baseApi||"",dailyQuota:u.dailyQuota||0,dailyUsage:u.dailyUsage||0,quotaResetTime:u.quotaResetTime||"00:00"},u.platform==="claude-console"&&Le(),u.accountType==="group"&&I().then(async()=>{const B=[];if(u.groupInfo&&u.groupInfo.id)s.value.groupId=u.groupInfo.id,B.push(u.groupInfo.id);else if(u.groupId)s.value.groupId=u.groupId,B.push(u.groupId);else if(u.groupIds&&Array.isArray(u.groupIds)&&u.groupIds.length>0)s.value.groupId=u.groupIds[0],B.push(...u.groupIds);else{const je=qe.value.map(async V=>{try{((await K.get(`/admin/account-groups/${V.id}/members`)).data||[]).some(ie=>ie.id===u.id)&&(B.push(V.id),s.value.groupId||(s.value.groupId=V.id))}catch{}});await Promise.all(je)}s.value.groupIds=B})}},{immediate:!0});const ze=async()=>{try{const u=await K.get("/admin/claude-code-version");u.success&&u.userAgent?L.value=u.userAgent:L.value=""}catch{L.value=""}},xe=async()=>{A.value=!0;try{(await K.post("/admin/claude-code-version/clear")).success?(L.value="",z("统一User-Agent缓存已清除","success")):z("清除缓存失败","error")}catch(u){z("清除缓存失败:"+(u.message||"未知错误"),"error")}finally{A.value=!1}},We=()=>{const u=new Uint8Array(32);return crypto.getRandomValues(u),Array.from(u,t=>t.toString(16).padStart(2,"0")).join("")},dt=()=>{s.value.unifiedClientId=We(),z("已生成新的客户端标识","success")},at=()=>{s.value.useUnifiedClientId&&(s.value.useUnifiedUserAgent=!0,s.value.unifiedClientId||(s.value.unifiedClientId=We()))};return Gt(()=>{var u;P.value=fe(s.value.platform),ze(),O.value&&((u=p.account)==null?void 0:u.platform)==="claude-console"&&Le()}),Z(()=>s.value.platform,u=>{u==="claude"&&ze()}),(u,t)=>(n(),Oe(Ft,{to:"body"},[N.value?(n(),i("div",vr,[e("div",kr,[e("div",hr,[e("div",wr,[t[115]||(t[115]=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",$r,g(O.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=o=>u.$emit("close"))},t[116]||(t[116]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!O.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),i("div",Ar,[e("div",Cr,[e("div",Ur,[e("div",{class:S(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",W.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[117]||(t[117]=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[119]||(t[119]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",Ir,[e("div",{class:S(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",W.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[118]||(t[118]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):b("",!0),W.value===1&&!O.value?(n(),i("div",Tr,[e("div",_r,[O.value?b("",!0):(n(),i("div",Sr,[t[149]||(t[149]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择平台",-1)),e("div",Mr,[e("div",Vr,[e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.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]=o=>Je("claude"))},[e("div",Rr,[e("div",Kr,[t[121]||(t[121]=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)),P.value==="claude"?(n(),i("div",zr,t[120]||(t[120]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[122]||(t[122]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Claude ",-1)),t[123]||(t[123]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Anthropic",-1))])],2),e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.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]=o=>Je("openai"))},[e("div",Pr,[e("div",jr,[t[125]||(t[125]=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)),P.value==="openai"?(n(),i("div",Or,t[124]||(t[124]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[126]||(t[126]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," OpenAI ",-1)),t[127]||(t[127]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"GPT 系列",-1))])],2),e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.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]=o=>Je("gemini"))},[e("div",Dr,[e("div",Lr,[t[129]||(t[129]=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)),P.value==="gemini"?(n(),i("div",Er,t[128]||(t[128]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[130]||(t[130]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Gemini ",-1)),t[131]||(t[131]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Google AI",-1))])],2)]),P.value?(n(),i("div",Nr,[t[148]||(t[148]=e("p",{class:"mb-2 text-xs font-medium text-gray-700 dark:text-gray-300"}," 选择具体平台类型: ",-1)),e("div",qr,[P.value==="claude"?(n(),i(ke,{key:0},[e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[4]||(t[4]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"claude"},null,512),[[de,s.value.platform]]),t[133]||(t[133]=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"?(n(),i("div",Wr,t[132]||(t[132]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[5]||(t[5]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"claude-console"},null,512),[[de,s.value.platform]]),t[135]||(t[135]=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"?(n(),i("div",Gr,t[134]||(t[134]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[6]||(t[6]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"bedrock"},null,512),[[de,s.value.platform]]),t[137]||(t[137]=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"?(n(),i("div",Fr,t[136]||(t[136]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[7]||(t[7]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"ccr"},null,512),[[de,s.value.platform]]),t[139]||(t[139]=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"?(n(),i("div",Qr,t[138]||(t[138]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)],64)):b("",!0),P.value==="openai"?(n(),i(ke,{key:1},[e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[8]||(t[8]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"openai"},null,512),[[de,s.value.platform]]),t[141]||(t[141]=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"?(n(),i("div",Br,t[140]||(t[140]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[9]||(t[9]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"openai-responses"},null,512),[[de,s.value.platform]]),t[143]||(t[143]=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"?(n(),i("div",Hr,t[142]||(t[142]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[10]||(t[10]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"azure_openai"},null,512),[[de,s.value.platform]]),t[145]||(t[145]=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"?(n(),i("div",Jr,t[144]||(t[144]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)],64)):b("",!0),P.value==="gemini"?(n(),i("label",{key:2,class:S(["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"]])},[f(e("input",{"onUpdate:modelValue":t[11]||(t[11]=o=>s.value.platform=o),class:"sr-only",type:"radio",value:"gemini"},null,512),[[de,s.value.platform]]),t[147]||(t[147]=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"?(n(),i("div",Yr,t[146]||(t[146]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)):b("",!0)])])):b("",!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"?(n(),i("div",Zr,[t[153]||(t[153]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Xr,[e("label",el,[f(e("input",{"onUpdate:modelValue":t[12]||(t[12]=o=>s.value.addType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[de,s.value.addType]]),t[150]||(t[150]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权 (用量可视化)",-1))]),s.value.platform==="claude"?(n(),i("label",tl,[f(e("input",{"onUpdate:modelValue":t[13]||(t[13]=o=>s.value.addType=o),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),[[de,s.value.addType]]),t[151]||(t[151]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (效期长)",-1))])):b("",!0),e("label",sl,[f(e("input",{"onUpdate:modelValue":t[14]||(t[14]=o=>s.value.addType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[de,s.value.addType]]),t[152]||(t[152]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):b("",!0),e("div",null,[t[154]||(t[154]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),f(e("input",{"onUpdate:modelValue":t[15]||(t[15]=o=>s.value.name=o),class:S(["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":h.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[T,s.value.name]]),h.value.name?(n(),i("p",al,g(h.value.name),1)):b("",!0)]),e("div",null,[t[155]||(t[155]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":t[16]||(t[16]=o=>s.value.description=o),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),[[T,s.value.description]])]),e("div",null,[t[159]||(t[159]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",rl,[e("label",ll,[f(e("input",{"onUpdate:modelValue":t[17]||(t[17]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[de,s.value.accountType]]),t[156]||(t[156]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",ol,[f(e("input",{"onUpdate:modelValue":t[18]||(t[18]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[de,s.value.accountType]]),t[157]||(t[157]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",nl,[f(e("input",{"onUpdate:modelValue":t[19]||(t[19]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[de,s.value.accountType]]),t[158]||(t[158]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[160]||(t[160]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",il,[t[162]||(t[162]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",dl,[e("div",ul,[e("div",pl,[y.value.length===0?(n(),i("div",gl," 暂无可用分组 ")):b("",!0),(n(!0),i(ke,null,Me(y.value,o=>(n(),i("label",{key:o.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[f(e("input",{"onUpdate:modelValue":t[20]||(t[20]=X=>s.value.groupIds=X),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:o.id},null,8,ml),[[me,s.value.groupIds]]),e("span",yl,g(o.name)+" ("+g(o.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:Ce},t[161]||(t[161]=[e("i",{class:"fas fa-plus"},null,-1),U(" 新建分组 ",-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:ge},[e("i",{class:S(["fas fa-sync-alt",{"animate-spin":Qe.value}])},null,2)])])])):b("",!0),s.value.platform==="gemini"?(n(),i("div",xl,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[21]||(t[21]=o=>s.value.projectId=o),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),[[T,s.value.projectId]]),t[164]||(t[164]=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,[U(" 访问 "),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,[U(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),U(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),U("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):b("",!0),s.value.platform==="bedrock"&&!O.value?(n(),i("div",cl,[e("div",null,[t[165]||(t[165]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),f(e("input",{"onUpdate:modelValue":t[22]||(t[22]=o=>s.value.accessKeyId=o),class:S(["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":h.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[T,s.value.accessKeyId]]),h.value.accessKeyId?(n(),i("p",fl,g(h.value.accessKeyId),1)):b("",!0)]),e("div",null,[t[166]||(t[166]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),f(e("input",{"onUpdate:modelValue":t[23]||(t[23]=o=>s.value.secretAccessKey=o),class:S(["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":h.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[T,s.value.secretAccessKey]]),h.value.secretAccessKey?(n(),i("p",bl,g(h.value.secretAccessKey),1)):b("",!0)]),e("div",null,[t[167]||(t[167]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),f(e("input",{"onUpdate:modelValue":t[24]||(t[24]=o=>s.value.region=o),class:S(["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":h.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[T,s.value.region]]),h.value.region?(n(),i("p",vl,g(h.value.region),1)):b("",!0),t[168]||(t[168]=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[169]||(t[169]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[25]||(t[25]=o=>s.value.sessionToken=o),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),[[T,s.value.sessionToken]]),t[170]||(t[170]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[171]||(t[171]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[26]||(t[26]=o=>s.value.defaultModel=o),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),[[T,s.value.defaultModel]]),t[172]||(t[172]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[173]||(t[173]=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[174]||(t[174]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[27]||(t[27]=o=>s.value.smallFastModel=o),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),[[T,s.value.smallFastModel]]),t[175]||(t[175]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):b("",!0),s.value.platform==="azure_openai"&&!O.value?(n(),i("div",kl,[e("div",null,[t[176]||(t[176]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),f(e("input",{"onUpdate:modelValue":t[28]||(t[28]=o=>s.value.azureEndpoint=o),class:S(["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":h.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[T,s.value.azureEndpoint]]),h.value.azureEndpoint?(n(),i("p",hl,g(h.value.azureEndpoint),1)):b("",!0),t[177]||(t[177]=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[178]||(t[178]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),f(e("input",{"onUpdate:modelValue":t[29]||(t[29]=o=>s.value.apiVersion=o),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),[[T,s.value.apiVersion]]),t[179]||(t[179]=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[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),f(e("input",{"onUpdate:modelValue":t[30]||(t[30]=o=>s.value.deploymentName=o),class:S(["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":h.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[T,s.value.deploymentName]]),h.value.deploymentName?(n(),i("p",wl,g(h.value.deploymentName),1)):b("",!0),t[181]||(t[181]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[182]||(t[182]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),f(e("input",{"onUpdate:modelValue":t[31]||(t[31]=o=>s.value.apiKey=o),class:S(["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":h.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",$l,g(h.value.apiKey),1)):b("",!0),t[183]||(t[183]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[184]||(t[184]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Al,[(n(),i(ke,null,Me(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],o=>e("label",{key:o,class:"flex cursor-pointer items-center"},[f(e("input",{"onUpdate:modelValue":t[32]||(t[32]=X=>s.value.supportedModels=X),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:o},null,8,Cl),[[me,s.value.supportedModels]]),e("span",Ul,g(o),1)])),64))]),t[185]||(t[185]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):b("",!0),s.value.platform==="bedrock"&&!O.value?(n(),i("div",Il,[e("div",null,[t[190]||(t[190]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Tl,[e("label",_l,[f(e("input",{"onUpdate:modelValue":t[33]||(t[33]=o=>s.value.enableRateLimit=o),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[186]||(t[186]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[187]||(t[187]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Sl,[t[188]||(t[188]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),f(e("input",{"onUpdate:modelValue":t[34]||(t[34]=o=>s.value.rateLimitDuration=o),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),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[189]||(t[189]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)])])):b("",!0),(s.value.platform==="claude-console"||s.value.platform==="ccr")&&!O.value?(n(),i("div",Ml,[e("div",null,[t[191]||(t[191]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),f(e("input",{"onUpdate:modelValue":t[35]||(t[35]=o=>s.value.apiUrl=o),class:S(["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":h.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[T,s.value.apiUrl]]),h.value.apiUrl?(n(),i("p",Vl,g(h.value.apiUrl),1)):b("",!0)]),e("div",null,[t[192]||(t[192]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),f(e("input",{"onUpdate:modelValue":t[36]||(t[36]=o=>s.value.apiKey=o),class:S(["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":h.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",Rl,g(h.value.apiKey),1)):b("",!0)]),e("div",Kl,[e("div",null,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),f(e("input",{"onUpdate:modelValue":t[37]||(t[37]=o=>s.value.dailyQuota=o),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),[[T,s.value.dailyQuota,void 0,{number:!0}]]),t[194]||(t[194]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),f(e("input",{"onUpdate:modelValue":t[38]||(t[38]=o=>s.value.quotaResetTime=o),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),[[T,s.value.quotaResetTime]]),t[196]||(t[196]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 每日自动重置额度的时间 ",-1))])]),e("div",null,[t[200]||(t[200]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[201]||(t[201]=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"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",zl,[(n(!0),i(ke,null,Me(k.value,(o,X)=>(n(),i("div",{key:X,class:"flex items-center gap-2"},[f(e("input",{"onUpdate:modelValue":B=>o.from=B,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,Pl),[[T,o.from]]),t[198]||(t[198]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),f(e("input",{"onUpdate:modelValue":B=>o.to=B,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,jl),[[T,o.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:B=>st(X)},t[197]||(t[197]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Ol)]))),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:tt},t[199]||(t[199]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)])),e("div",Dl,[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[39]||(t[39]=o=>Re("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),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[40]||(t[40]=o=>Re("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[41]||(t[41]=o=>Re("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),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[42]||(t[42]=o=>Re("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[202]||(t[202]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[43]||(t[43]=o=>s.value.userAgent=o),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),[[T,s.value.userAgent]]),t[204]||(t[204]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[209]||(t[209]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Ll,[e("label",El,[f(e("input",{"onUpdate:modelValue":t[44]||(t[44]=o=>s.value.enableRateLimit=o),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[205]||(t[205]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[206]||(t[206]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Nl,[t[207]||(t[207]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),f(e("input",{"onUpdate:modelValue":t[45]||(t[45]=o=>s.value.rateLimitDuration=o),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),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[208]||(t[208]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)])])):b("",!0),s.value.platform==="openai-responses"&&!O.value?(n(),i("div",ql,[e("div",null,[t[210]||(t[210]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),f(e("input",{"onUpdate:modelValue":t[46]||(t[46]=o=>s.value.baseApi=o),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),[[T,s.value.baseApi]]),t[211]||(t[211]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方 OpenAI 兼容 API 的基础地址,不要包含具体路径 ",-1))]),e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",Wl,[f(e("input",{"onUpdate:modelValue":t[47]||(t[47]=o=>s.value.apiKey=o),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:Y.value?"text":"password"},null,8,Gl),[[Yt,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[48]||(t[48]=o=>Y.value=!Y.value)},[e("i",{class:S(Y.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[213]||(t[213]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方服务提供的 API 密钥 ",-1))]),e("div",null,[t[214]||(t[214]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[49]||(t[49]=o=>s.value.userAgent=o),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),[[T,s.value.userAgent]]),t[215]||(t[215]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 可选项。如果设置,所有请求将使用此 User-Agent;否则透传客户端的 User-Agent ",-1))]),f(e("input",{"onUpdate:modelValue":t[50]||(t[50]=o=>s.value.rateLimitDuration=o),type:"hidden",value:"60"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]])])):b("",!0),s.value.platform==="claude"?(n(),i("div",Fl,[t[218]||(t[218]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",Ql,[e("label",Bl,[f(e("input",{"onUpdate:modelValue":t[51]||(t[51]=o=>s.value.subscriptionType=o),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),[[de,s.value.subscriptionType]]),t[216]||(t[216]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",Hl,[f(e("input",{"onUpdate:modelValue":t[52]||(t[52]=o=>s.value.subscriptionType=o),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),[[de,s.value.subscriptionType]]),t[217]||(t[217]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[219]||(t[219]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):b("",!0),s.value.platform==="claude"?(n(),i("div",Jl,[e("label",Yl,[f(e("input",{"onUpdate:modelValue":t[53]||(t[53]=o=>s.value.autoStopOnWarning=o),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[220]||(t[220]=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))])])):b("",!0),s.value.platform==="claude"?(n(),i("div",Zl,[e("label",Xl,[f(e("input",{"onUpdate:modelValue":t[54]||(t[54]=o=>s.value.useUnifiedUserAgent=o),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",eo,[t[222]||(t[222]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[223]||(t[223]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),L.value?(n(),i("div",to,[e("div",so,[e("p",ao," 💡 当前统一版本:"+g(L.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:A.value,type:"button",onClick:xe},[A.value?(n(),i("div",oo)):(n(),i("i",lo)),U(" "+g(A.value?"清除中...":"清除缓存"),1)],8,ro)])])):(n(),i("div",no,t[221]||(t[221]=[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)])))])])])):b("",!0),s.value.platform==="claude"?(n(),i("div",io,[e("label",uo,[f(e("input",{"onUpdate:modelValue":t[55]||(t[55]=o=>s.value.useUnifiedClientId=o),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:at},null,544),[[me,s.value.useUnifiedClientId]]),e("div",po,[t[227]||(t[227]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[228]||(t[228]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(n(),i("div",go,[e("div",mo,[e("div",{class:"mb-2 flex items-center justify-between"},[t[225]||(t[225]=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:dt},t[224]||(t[224]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U(" 重新生成 ",-1)]))]),e("div",yo,[e("code",xo,[e("span",co,g(s.value.unifiedClientId.substring(0,8)),1),e("span",fo,g(s.value.unifiedClientId.substring(8,56)),1),e("span",bo,g(s.value.unifiedClientId.substring(56)),1)])]),t[226]||(t[226]=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"}),U(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):b("",!0)])])])):b("",!0),e("div",null,[t[229]||(t[229]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),f(e("input",{"onUpdate:modelValue":t[56]||(t[56]=o=>s.value.priority=o),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),[[T,s.value.priority,void 0,{number:!0}]]),t[230]||(t[230]=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"?(n(),i("div",vo,[e("div",ko,[t[236]||(t[236]=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[234]||(t[234]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),i("p",ho," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),i("p",wo," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),i("p",$o," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):b("",!0),e("div",Ao,[t[233]||(t[233]=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"}),U(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),i("p",Co,t[231]||(t[231]=[U(" 请从已登录 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),U(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),i("p",Uo,t[232]||(t[232]=[U(" 请从已登录 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),U(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),i("p",Io," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):b("",!0)]),t[235]||(t[235]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),i("div",To,[t[237]||(t[237]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":t[57]||(t[57]=o=>s.value.accessToken=o),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),[[T,s.value.accessToken]]),t[238]||(t[238]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。 ")],-1))])):(n(),i("div",_o,[t[239]||(t[239]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),f(e("textarea",{"onUpdate:modelValue":t[58]||(t[58]=o=>s.value.accessToken=o),class:S(["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":h.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[T,s.value.accessToken]]),h.value.accessToken?(n(),i("p",So,g(h.value.accessToken),1)):b("",!0)])),s.value.platform==="openai"?(n(),i("div",Mo,[t[240]||(t[240]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token *",-1)),f(e("textarea",{"onUpdate:modelValue":t[59]||(t[59]=o=>s.value.refreshToken=o),class:S(["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":h.value.refreshToken}]),placeholder:"请输入 Refresh Token(必填)...",required:"",rows:"4"},null,2),[[T,s.value.refreshToken]]),h.value.refreshToken?(n(),i("p",Vo,g(h.value.refreshToken),1)):b("",!0),t[241]||(t[241]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 系统将使用 Refresh Token 自动获取 Access Token 和用户信息 ")],-1))])):(n(),i("div",Ro,[t[242]||(t[242]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":t[60]||(t[60]=o=>s.value.refreshToken=o),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),[[T,s.value.refreshToken]])]))])):b("",!0),Fe(Zt,{modelValue:s.value.proxy,"onUpdate:modelValue":t[61]||(t[61]=o=>s.value.proxy=o)},null,8,["modelValue"]),e("div",Ko,[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[62]||(t[62]=o=>u.$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"?(n(),i("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:H.value,type:"button",onClick:ot}," 下一步 ",8,zo)):(n(),i("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:H.value,type:"button",onClick:Ke},[H.value?(n(),i("div",jo)):b("",!0),U(" "+g(H.value?"创建中...":"创建"),1)],8,Po))])])])):b("",!0),W.value===2&&s.value.addType==="oauth"?(n(),Oe(ja,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[63]||(t[63]=o=>W.value=1),onSuccess:Ve},null,8,["platform","proxy"])):b("",!0),W.value===2&&s.value.addType==="setup-token"?(n(),i("div",Oo,[s.value.platform==="claude"?(n(),i("div",Do,[e("div",Lo,[e("div",Eo,[t[254]||(t[254]=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",No,[t[252]||(t[252]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[253]||(t[253]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",qo,[e("div",Wo,[e("div",Go,[t[245]||(t[245]=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",Fo,[t[244]||(t[244]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),d.value?(n(),i("div",Jo,[e("div",Yo,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:d.value},null,8,Zo),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:Ye},[e("i",{class:S(M.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:nt},t[243]||(t[243]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:G.value,onClick:et},[G.value?(n(),i("div",Ho)):(n(),i("i",Bo)),U(" "+g(G.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,Qo))])])]),t[251]||(t[251]=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,"注意:"),U("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Xo,[e("div",en,[t[250]||(t[250]=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",tn,[t[248]||(t[248]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[249]||(t[249]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",sn,[e("div",null,[t[246]||(t[246]=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"}),U("Authorization Code ")],-1)),f(e("textarea",{"onUpdate:modelValue":t[64]||(t[64]=o=>x.value=o),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),[[T,x.value]])]),t[247]||(t[247]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):b("",!0),e("div",an,[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[65]||(t[65]=o=>W.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!De.value||j.value,type:"button",onClick:Ee},[j.value?(n(),i("div",ln)):b("",!0),U(" "+g(j.value?"验证中...":"完成授权"),1)],8,rn)])])):b("",!0),O.value?(n(),i("div",on,[e("div",null,[t[255]||(t[255]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),f(e("input",{"onUpdate:modelValue":t[66]||(t[66]=o=>s.value.name=o),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),[[T,s.value.name]])]),e("div",null,[t[256]||(t[256]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":t[67]||(t[67]=o=>s.value.description=o),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),[[T,s.value.description]])]),e("div",null,[t[260]||(t[260]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",nn,[e("label",dn,[f(e("input",{"onUpdate:modelValue":t[68]||(t[68]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[de,s.value.accountType]]),t[257]||(t[257]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",un,[f(e("input",{"onUpdate:modelValue":t[69]||(t[69]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[de,s.value.accountType]]),t[258]||(t[258]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",pn,[f(e("input",{"onUpdate:modelValue":t[70]||(t[70]=o=>s.value.accountType=o),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[de,s.value.accountType]]),t[259]||(t[259]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[261]||(t[261]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",gn,[t[263]||(t[263]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",mn,[e("div",yn,[e("div",xn,[y.value.length===0?(n(),i("div",cn," 暂无可用分组 ")):b("",!0),(n(!0),i(ke,null,Me(y.value,o=>(n(),i("label",{key:o.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[f(e("input",{"onUpdate:modelValue":t[71]||(t[71]=X=>s.value.groupIds=X),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:o.id},null,8,fn),[[me,s.value.groupIds]]),e("span",bn,g(o.name)+" ("+g(o.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:Ce},t[262]||(t[262]=[e("i",{class:"fas fa-plus"},null,-1),U(" 新建分组 ",-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:ge},[e("i",{class:S(["fas fa-sync-alt",{"animate-spin":Qe.value}])},null,2)])])])):b("",!0),s.value.platform==="gemini"?(n(),i("div",vn,[t[264]||(t[264]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[72]||(t[72]=o=>s.value.projectId=o),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),[[T,s.value.projectId]]),t[265]||(t[265]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):b("",!0),s.value.platform==="claude"?(n(),i("div",kn,[t[268]||(t[268]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",hn,[e("label",wn,[f(e("input",{"onUpdate:modelValue":t[73]||(t[73]=o=>s.value.subscriptionType=o),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),[[de,s.value.subscriptionType]]),t[266]||(t[266]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",$n,[f(e("input",{"onUpdate:modelValue":t[74]||(t[74]=o=>s.value.subscriptionType=o),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),[[de,s.value.subscriptionType]]),t[267]||(t[267]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[269]||(t[269]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):b("",!0),s.value.platform==="claude"?(n(),i("div",An,[e("label",Cn,[f(e("input",{"onUpdate:modelValue":t[75]||(t[75]=o=>s.value.autoStopOnWarning=o),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[270]||(t[270]=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))])])):b("",!0),s.value.platform==="claude"?(n(),i("div",Un,[e("label",In,[f(e("input",{"onUpdate:modelValue":t[76]||(t[76]=o=>s.value.useUnifiedUserAgent=o),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",Tn,[t[272]||(t[272]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[273]||(t[273]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),L.value?(n(),i("div",_n,[e("div",Sn,[e("p",Mn," 💡 当前统一版本:"+g(L.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:A.value,type:"button",onClick:xe},[A.value?(n(),i("div",Kn)):(n(),i("i",Rn)),U(" "+g(A.value?"清除中...":"清除缓存"),1)],8,Vn)])])):(n(),i("div",zn,t[271]||(t[271]=[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)])))])])])):b("",!0),s.value.platform==="claude"?(n(),i("div",Pn,[e("label",jn,[f(e("input",{"onUpdate:modelValue":t[77]||(t[77]=o=>s.value.useUnifiedClientId=o),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:at},null,544),[[me,s.value.useUnifiedClientId]]),e("div",On,[t[277]||(t[277]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[278]||(t[278]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(n(),i("div",Dn,[e("div",Ln,[e("div",{class:"mb-2 flex items-center justify-between"},[t[275]||(t[275]=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:dt},t[274]||(t[274]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U(" 重新生成 ",-1)]))]),e("div",En,[e("code",Nn,[e("span",qn,g(s.value.unifiedClientId.substring(0,8)),1),e("span",Wn,g(s.value.unifiedClientId.substring(8,56)),1),e("span",Gn,g(s.value.unifiedClientId.substring(56)),1)])]),t[276]||(t[276]=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"}),U(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):b("",!0)])])])):b("",!0),e("div",null,[t[279]||(t[279]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),f(e("input",{"onUpdate:modelValue":t[78]||(t[78]=o=>s.value.priority=o),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),[[T,s.value.priority,void 0,{number:!0}]]),t[280]||(t[280]=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"?(n(),i("div",Fn,[e("div",null,[t[281]||(t[281]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),f(e("input",{"onUpdate:modelValue":t[79]||(t[79]=o=>s.value.apiUrl=o),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[T,s.value.apiUrl]])]),e("div",null,[t[282]||(t[282]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),f(e("input",{"onUpdate:modelValue":t[80]||(t[80]=o=>s.value.apiKey=o),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.apiKey]]),t[283]||(t[283]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",Qn,[e("div",null,[t[284]||(t[284]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),f(e("input",{"onUpdate:modelValue":t[81]||(t[81]=o=>s.value.dailyQuota=o),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),[[T,s.value.dailyQuota,void 0,{number:!0}]]),t[285]||(t[285]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[286]||(t[286]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),f(e("input",{"onUpdate:modelValue":t[82]||(t[82]=o=>s.value.quotaResetTime=o),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),[[T,s.value.quotaResetTime]]),t[287]||(t[287]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),O.value&&s.value.dailyQuota>0?(n(),i("div",Bn,[e("div",Hn,[t[288]||(t[288]=e("span",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"}," 今日使用情况 ",-1)),e("span",Jn," $"+g(we().toFixed(4))+" / $"+g(s.value.dailyQuota.toFixed(2)),1)]),e("div",Yn,[e("div",{class:S(["absolute left-0 top-0 h-full rounded-full transition-all",Ae.value>=90?"bg-red-500":Ae.value>=70?"bg-yellow-500":"bg-green-500"]),style:Ue({width:`${Math.min(Ae.value,100)}%`})},null,6)]),e("div",Zn,[e("span",Xn," 剩余: $"+g(Math.max(0,s.value.dailyQuota-we()).toFixed(2)),1),e("span",ei,g(Ae.value.toFixed(1))+"% 已使用 ",1)])])):b("",!0),e("div",null,[t[292]||(t[292]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[293]||(t[293]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",ti,[(n(!0),i(ke,null,Me(k.value,(o,X)=>(n(),i("div",{key:X,class:"flex items-center gap-2"},[f(e("input",{"onUpdate:modelValue":B=>o.from=B,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,si),[[T,o.from]]),t[290]||(t[290]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),f(e("input",{"onUpdate:modelValue":B=>o.to=B,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,ai),[[T,o.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:B=>st(X)},t[289]||(t[289]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ri)]))),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",type:"button",onClick:tt},t[291]||(t[291]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)])),e("div",li,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[83]||(t[83]=o=>Re("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[84]||(t[84]=o=>Re("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",type:"button",onClick:t[85]||(t[85]=o=>Re("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[86]||(t[86]=o=>Re("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[294]||(t[294]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[295]||(t[295]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[87]||(t[87]=o=>s.value.userAgent=o),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[296]||(t[296]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[301]||(t[301]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",oi,[e("label",ni,[f(e("input",{"onUpdate:modelValue":t[88]||(t[88]=o=>s.value.enableRateLimit=o),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[297]||(t[297]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[298]||(t[298]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",ii,[t[299]||(t[299]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),f(e("input",{"onUpdate:modelValue":t[89]||(t[89]=o=>s.value.rateLimitDuration=o),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[300]||(t[300]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):b("",!0)])])):b("",!0),s.value.platform==="openai-responses"?(n(),i("div",di,[e("div",null,[t[302]||(t[302]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 基础地址",-1)),f(e("input",{"onUpdate:modelValue":t[90]||(t[90]=o=>s.value.baseApi=o),class:"form-input w-full",placeholder:"https://api.example.com/v1",type:"url"},null,512),[[T,s.value.baseApi]])]),e("div",null,[t[303]||(t[303]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 密钥",-1)),e("div",ui,[f(e("input",{"onUpdate:modelValue":t[91]||(t[91]=o=>s.value.apiKey=o),class:"form-input w-full pr-10",placeholder:"留空表示不更新",type:Y.value?"text":"password"},null,8,pi),[[Yt,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[92]||(t[92]=o=>Y.value=!Y.value)},[e("i",{class:S(Y.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[304]||(t[304]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[305]||(t[305]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent",-1)),f(e("input",{"onUpdate:modelValue":t[93]||(t[93]=o=>s.value.userAgent=o),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[306]||(t[306]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),f(e("input",{"onUpdate:modelValue":t[94]||(t[94]=o=>s.value.rateLimitDuration=o),type:"hidden"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),e("div",gi,[e("div",null,[t[307]||(t[307]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),f(e("input",{"onUpdate:modelValue":t[95]||(t[95]=o=>s.value.dailyQuota=o),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),[[T,s.value.dailyQuota,void 0,{number:!0}]])]),e("div",null,[t[308]||(t[308]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),f(e("input",{"onUpdate:modelValue":t[96]||(t[96]=o=>s.value.quotaResetTime=o),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",type:"time"},null,512),[[T,s.value.quotaResetTime]])])])])):b("",!0),s.value.platform==="bedrock"?(n(),i("div",mi,[e("div",null,[t[309]||(t[309]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),f(e("input",{"onUpdate:modelValue":t[97]||(t[97]=o=>s.value.accessKeyId=o),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[T,s.value.accessKeyId]]),t[310]||(t[310]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[311]||(t[311]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),f(e("input",{"onUpdate:modelValue":t[98]||(t[98]=o=>s.value.secretAccessKey=o),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.secretAccessKey]]),t[312]||(t[312]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[313]||(t[313]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),f(e("input",{"onUpdate:modelValue":t[99]||(t[99]=o=>s.value.region=o),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[T,s.value.region]]),t[314]||(t[314]=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[315]||(t[315]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[100]||(t[100]=o=>s.value.sessionToken=o),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.sessionToken]])]),e("div",null,[t[316]||(t[316]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[101]||(t[101]=o=>s.value.defaultModel=o),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[T,s.value.defaultModel]]),t[317]||(t[317]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[318]||(t[318]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),f(e("input",{"onUpdate:modelValue":t[102]||(t[102]=o=>s.value.smallFastModel=o),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[T,s.value.smallFastModel]]),t[319]||(t[319]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[324]||(t[324]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",yi,[e("label",xi,[f(e("input",{"onUpdate:modelValue":t[103]||(t[103]=o=>s.value.enableRateLimit=o),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[320]||(t[320]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[321]||(t[321]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",ci,[t[322]||(t[322]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),f(e("input",{"onUpdate:modelValue":t[104]||(t[104]=o=>s.value.rateLimitDuration=o),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[323]||(t[323]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):b("",!0)])])):b("",!0),s.value.platform==="azure_openai"?(n(),i("div",fi,[e("div",null,[t[325]||(t[325]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint",-1)),f(e("input",{"onUpdate:modelValue":t[105]||(t[105]=o=>s.value.azureEndpoint=o),class:S(["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":h.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",type:"url"},null,2),[[T,s.value.azureEndpoint]]),h.value.azureEndpoint?(n(),i("p",bi,g(h.value.azureEndpoint),1)):b("",!0)]),e("div",null,[t[326]||(t[326]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),f(e("input",{"onUpdate:modelValue":t[106]||(t[106]=o=>s.value.apiVersion=o),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),[[T,s.value.apiVersion]]),t[327]||(t[327]=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[328]||(t[328]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称",-1)),f(e("input",{"onUpdate:modelValue":t[107]||(t[107]=o=>s.value.deploymentName=o),class:S(["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":h.value.deploymentName}]),placeholder:"gpt-4",type:"text"},null,2),[[T,s.value.deploymentName]]),h.value.deploymentName?(n(),i("p",vi,g(h.value.deploymentName),1)):b("",!0)]),e("div",null,[t[329]||(t[329]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key",-1)),f(e("input",{"onUpdate:modelValue":t[108]||(t[108]=o=>s.value.apiKey=o),class:S(["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":h.value.apiKey}]),placeholder:"留空表示不更新",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",ki,g(h.value.apiKey),1)):b("",!0),t[330]||(t[330]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))]),e("div",null,[t[331]||(t[331]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",hi,[(n(),i(ke,null,Me(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],o=>e("label",{key:o,class:"flex cursor-pointer items-center"},[f(e("input",{"onUpdate:modelValue":t[109]||(t[109]=X=>s.value.supportedModels=X),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:o},null,8,wi),[[me,s.value.supportedModels]]),e("span",$i,g(o),1)])),64))]),t[332]||(t[332]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"选择此部署支持的模型类型",-1))])])):b("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="ccr"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(n(),i("div",Ai,[t[335]||(t[335]=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",Ci,[e("div",null,[t[333]||(t[333]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),f(e("textarea",{"onUpdate:modelValue":t[110]||(t[110]=o=>s.value.accessToken=o),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),[[T,s.value.accessToken]])]),e("div",null,[t[334]||(t[334]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),f(e("textarea",{"onUpdate:modelValue":t[111]||(t[111]=o=>s.value.refreshToken=o),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),[[T,s.value.refreshToken]])])])])):b("",!0),Fe(Zt,{modelValue:s.value.proxy,"onUpdate:modelValue":t[112]||(t[112]=o=>s.value.proxy=o)},null,8,["modelValue"]),e("div",Ui,[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[113]||(t[113]=o=>u.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:H.value,type:"button",onClick:Ne},[H.value?(n(),i("div",Ti)):b("",!0),U(" "+g(H.value?"更新中...":"更新"),1)],8,Ii)])])):b("",!0)])])):b("",!0),Fe(is,{"cancel-text":Se(Q).cancelText,"confirm-text":Se(Q).confirmText,message:Se(Q).message,show:Se(E),title:Se(Q).title,onCancel:Se(D),onConfirm:Se(v)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),c.value?(n(),Oe(br,{key:1,onClose:t[114]||(t[114]=o=>c.value=!1),onRefresh:Be})):b("",!0)]))}},as=Qt(_i,[["__scopeId","data-v-f5707299"]]),Si={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Mi={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"},Vi={class:"mb-4 flex items-center justify-between sm:mb-6"},Ri={class:"flex items-center gap-2 sm:gap-3"},Ki={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},zi={class:"space-y-6"},Pi={key:0,class:"mt-1 text-xs text-red-500"},ji={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Oi={key:0,class:"mt-1 text-xs text-red-500"},Di={class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},Li=["placeholder","required"],Ei={key:0,class:"mt-1 text-xs text-red-500"},Ni={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},qi={class:"mb-3"},Wi={class:"inline-flex cursor-pointer items-center"},Gi={key:0},Fi={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Qi={class:"mb-3 space-y-2"},Bi=["onUpdate:modelValue"],Hi=["onUpdate:modelValue"],Ji=["onClick"],Yi={class:"mt-2 flex gap-3"},Zi=["disabled"],Xi={key:0,class:"loading-spinner mr-2"},ed={__name:"CcrAccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(q,{emit:ce}){const p=q,ne=ce,_=$(!0),E=oe(()=>!!p.account),Q=$(!1),m=$({name:"",description:"",apiUrl:"",apiKey:"",priority:50,userAgent:"",rateLimitDuration:60,dailyQuota:0,quotaResetTime:"00:00",proxy:null,supportedModels:{}}),v=$(!0),D=$({}),O=$([]),N=()=>{const d={};for(const x of O.value){const M=(x.from||"").trim(),F=(x.to||"").trim();M&&F&&(d[M]=F)}return d},W=()=>{O.value.push({from:"",to:""})},H=d=>{O.value.splice(d,1)},Y=()=>{const d={};return(!m.value.name||m.value.name.trim().length===0)&&(d.name="名称不能为空"),(!m.value.apiUrl||m.value.apiUrl.trim().length===0)&&(d.apiUrl="API URL 不能为空"),!E.value&&(!m.value.apiKey||m.value.apiKey.trim().length===0)&&(d.apiKey="API Key 不能为空"),D.value=d,Object.keys(d).length===0},G=async()=>{if(Y()){Q.value=!0;try{if(E.value){const d={name:m.value.name,description:m.value.description,apiUrl:m.value.apiUrl,priority:m.value.priority,userAgent:m.value.userAgent,rateLimitDuration:v.value?Number(m.value.rateLimitDuration||60):0,dailyQuota:Number(m.value.dailyQuota||0),quotaResetTime:m.value.quotaResetTime||"00:00",proxy:m.value.proxy||null,supportedModels:N()};m.value.apiKey&&m.value.apiKey.trim().length>0&&(d.apiKey=m.value.apiKey);const x=await K.put(`/admin/ccr-accounts/${p.account.id}`,d);x.success?ne("success"):z(x.message||"保存失败","error")}else{const d={name:m.value.name,description:m.value.description,apiUrl:m.value.apiUrl,apiKey:m.value.apiKey,priority:Number(m.value.priority||50),supportedModels:N(),userAgent:m.value.userAgent,rateLimitDuration:v.value?Number(m.value.rateLimitDuration||60):0,proxy:m.value.proxy,accountType:"shared",dailyQuota:Number(m.value.dailyQuota||0),quotaResetTime:m.value.quotaResetTime||"00:00"},x=await K.post("/admin/ccr-accounts",d);x.success?ne("success"):z(x.message||"创建失败","error")}}catch(d){z(d.message||"请求失败","error")}finally{Q.value=!1}}},j=()=>{if(!p.account)return;const d=p.account;m.value.name=d.name||"",m.value.description=d.description||"",m.value.apiUrl=d.apiUrl||"",m.value.priority=Number(d.priority||50),m.value.userAgent=d.userAgent||"",m.value.rateLimitDuration=Number(d.rateLimitDuration||60),m.value.dailyQuota=Number(d.dailyQuota||0),m.value.quotaResetTime=d.quotaResetTime||"00:00",m.value.proxy=d.proxy||null,v.value=m.value.rateLimitDuration>0,O.value=[];const x=d.supportedModels||{};if(x&&typeof x=="object")for(const M of Object.keys(x))O.value.push({from:M,to:x[M]})};return Gt(()=>{E.value&&j()}),Z(()=>p.account,()=>{E.value&&j()}),(d,x)=>(n(),Oe(Ft,{to:"body"},[_.value?(n(),i("div",Si,[e("div",Mi,[e("div",Vi,[e("div",Ri,[x[13]||(x[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",Ki,g(E.value?"编辑 CCR 账户":"添加 CCR 账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:x[0]||(x[0]=M=>d.$emit("close"))},x[14]||(x[14]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",zi,[e("div",null,[x[15]||(x[15]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称 *",-1)),f(e("input",{"onUpdate:modelValue":x[1]||(x[1]=M=>m.value.name=M),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":D.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[T,m.value.name]]),D.value.name?(n(),i("p",Pi,g(D.value.name),1)):b("",!0)]),e("div",null,[x[16]||(x[16]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),f(e("textarea",{"onUpdate:modelValue":x[2]||(x[2]=M=>m.value.description=M),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),[[T,m.value.description]])]),e("div",ji,[e("div",null,[x[17]||(x[17]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),f(e("input",{"onUpdate:modelValue":x[3]||(x[3]=M=>m.value.apiUrl=M),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":D.value.apiUrl}]),placeholder:"例如:https://api.example.com/v1/messages",required:"",type:"text"},null,2),[[T,m.value.apiUrl]]),D.value.apiUrl?(n(),i("p",Oi,g(D.value.apiUrl),1)):b("",!0)]),e("div",null,[e("label",Di,"API Key "+g(E.value?"(留空不更新)":"*"),1),f(e("input",{"onUpdate:modelValue":x[4]||(x[4]=M=>m.value.apiKey=M),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":D.value.apiKey}]),placeholder:E.value?"留空表示不更新":"必填",required:!E.value,type:"password"},null,10,Li),[[T,m.value.apiKey]]),D.value.apiKey?(n(),i("p",Ei,g(D.value.apiKey),1)):b("",!0)])]),e("div",Ni,[e("div",null,[x[18]||(x[18]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"优先级",-1)),f(e("input",{"onUpdate:modelValue":x[5]||(x[5]=M=>m.value.priority=M),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),[[T,m.value.priority,void 0,{number:!0}]]),x[19]||(x[19]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 建议范围:1-100,数字越小优先级越高 ",-1))]),e("div",null,[x[20]||(x[20]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),f(e("input",{"onUpdate:modelValue":x[6]||(x[6]=M=>m.value.userAgent=M),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),[[T,m.value.userAgent]])])]),e("div",null,[x[24]||(x[24]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",qi,[e("label",Wi,[f(e("input",{"onUpdate:modelValue":x[7]||(x[7]=M=>v.value=M),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,v.value]]),x[21]||(x[21]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制(429 时暂停调度)",-1))])]),v.value?(n(),i("div",Gi,[x[22]||(x[22]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),f(e("input",{"onUpdate:modelValue":x[8]||(x[8]=M=>m.value.rateLimitDuration=M),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),[[T,m.value.rateLimitDuration,void 0,{number:!0}]]),x[23]||(x[23]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)]),e("div",Fi,[e("div",null,[x[25]||(x[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日额度限制 ($)",-1)),f(e("input",{"onUpdate:modelValue":x[9]||(x[9]=M=>m.value.dailyQuota=M),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),[[T,m.value.dailyQuota,void 0,{number:!0}]]),x[26]||(x[26]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[x[27]||(x[27]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"额度重置时间",-1)),f(e("input",{"onUpdate:modelValue":x[10]||(x[10]=M=>m.value.quotaResetTime=M),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),[[T,m.value.quotaResetTime]]),x[28]||(x[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),e("div",null,[x[32]||(x[32]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),x[33]||(x[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"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",Qi,[(n(!0),i(ke,null,Me(O.value,(M,F)=>(n(),i("div",{key:F,class:"flex items-center gap-2"},[f(e("input",{"onUpdate:modelValue":L=>M.from=L,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,Bi),[[T,M.from]]),x[30]||(x[30]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),f(e("input",{"onUpdate:modelValue":L=>M.to=L,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,Hi),[[T,M.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:L=>H(F)},x[29]||(x[29]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Ji)]))),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:W},x[31]||(x[31]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)]))]),e("div",null,[Fe(Zt,{modelValue:m.value.proxy,"onUpdate:modelValue":x[11]||(x[11]=M=>m.value.proxy=M)},null,8,["modelValue"])]),e("div",Yi,[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:x[12]||(x[12]=M=>d.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:Q.value,type:"button",onClick:G},[Q.value?(n(),i("div",Xi)):b("",!0),U(" "+g(Q.value?E.value?"保存中...":"创建中...":E.value?"保存":"创建"),1)],8,Zi)])])])])):b("",!0)]))}},rs=Qt(ed,[["__scopeId","data-v-8652672a"]]),td={key:0,class:"fixed inset-0 z-[1050] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm"},sd={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"},ad={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"},rd={class:"flex flex-1 items-start gap-3"},ld={class:"space-y-1"},od={class:"flex flex-wrap items-center gap-2"},nd={class:"text-lg font-semibold text-gray-900 dark:text-gray-100 sm:text-xl"},id={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"},dd={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"},ud={class:"text-xs text-gray-500 dark:text-gray-400 sm:text-sm"},pd={key:0},gd={class:"flex-1 overflow-y-auto px-5 py-4 sm:px-6"},md={key:0,class:"flex h-[50vh] items-center justify-center"},yd={class:"mb-5 grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4"},xd={class:"flex items-start justify-between"},cd={class:"text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400"},fd={class:"mt-2 text-xl font-semibold text-gray-900 dark:text-gray-100"},bd={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},vd={class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gray-50 dark:bg-gray-800"},kd={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},hd={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"},wd={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"},$d={class:"flex items-center justify-between"},Ad={class:"font-semibold text-gray-900 dark:text-gray-100"},Cd={class:"mt-2 flex items-center justify-between"},Ud={class:"font-semibold text-gray-900 dark:text-gray-100"},Id={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Td={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"},_d={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"},Sd={class:"flex items-center justify-between"},Md={class:"font-semibold text-gray-900 dark:text-gray-100"},Vd={class:"mt-2 flex items-center justify-between"},Rd={class:"font-semibold text-gray-900 dark:text-gray-100"},Kd={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},zd={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"},Pd={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"},jd={class:"flex items-center justify-between"},Od={class:"font-semibold text-gray-900 dark:text-gray-100"},Dd={class:"mt-2 flex items-center justify-between"},Ld={class:"font-semibold text-gray-900 dark:text-gray-100"},Ed={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Nd={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},qd={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},Wd={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},Gd={class:"flex items-center justify-between"},Fd={class:"font-semibold text-gray-900 dark:text-gray-100"},Qd={class:"flex items-center justify-between"},Bd={class:"font-semibold text-gray-900 dark:text-gray-100"},Hd={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Jd={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},Yd={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},Zd={class:"flex items-center justify-between"},Xd={class:"font-semibold text-gray-900 dark:text-gray-100"},e0={class:"flex items-center justify-between"},t0={class:"font-semibold text-gray-900 dark:text-gray-100"},s0={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},a0={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},r0={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},l0={class:"flex items-center justify-between"},o0={class:"font-semibold text-gray-900 dark:text-gray-100"},n0={class:"flex items-center justify-between"},i0={class:"font-semibold text-gray-900 dark:text-gray-100"},d0={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},u0={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"},p0={class:"mb-4 flex flex-wrap items-center justify-between gap-2"},g0={class:"text-xs text-gray-400 dark:text-gray-500"},m0={class:"h-[260px] sm:h-[300px]"},y0={__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:ce}){const p=q,ne=ce,_=bs(),{isDarkMode:E}=cs(_),Q=$(null);let m=null;const v={claude:"Claude","claude-console":"Claude Console",openai:"OpenAI","openai-responses":"OpenAI Responses",gemini:"Gemini"},D=oe(()=>{var s;return v[(s=p.account)==null?void 0:s.platform]||"未知平台"}),O=oe(()=>{var s;return(s=p.account)!=null&&s.accountType?p.account.accountType==="dedicated"?"专属":p.account.accountType==="group"?"分组":"共享":"共享"}),N=oe(()=>({text:E.value?"#e5e7eb":"#374151",grid:E.value?"rgba(75, 85, 99, 0.25)":"rgba(209, 213, 219, 0.4)",cost:"#3b82f6",costFill:"rgba(59, 130, 246, 0.15)",requests:"#f97316"})),W=oe(()=>{var s;return((s=p.summary)==null?void 0:s.totalTokens)||0}),H=oe(()=>{var s,k;return((k=(s=p.overview)==null?void 0:s.total)==null?void 0:k.inputTokens)||0}),Y=oe(()=>{var s,k;return((k=(s=p.overview)==null?void 0:s.total)==null?void 0:k.outputTokens)||0}),G=s=>{const k=Number(s||0);return k>=1e6?`${(k/1e6).toFixed(2)}M`:k>=1e3?`${(k/1e3).toFixed(2)}K`:k.toLocaleString()},j=s=>{const k=Number(s||0);return Number.isNaN(k)?"$0.000000":k>=1?`$${k.toFixed(2)}`:k>=.01?`$${k.toFixed(3)}`:`$${k.toFixed(6)}`},d=s=>Math.round((Number(s)||0)*100)/100,x=s=>{if(!s)return"-";const k=new Date(s);if(Number.isNaN(k.getTime())){const he=s.split("-");return he.length===3?`${he[1]}-${he[2]}`:s}const ye=String(k.getMonth()+1).padStart(2,"0"),h=String(k.getDate()).padStart(2,"0");return`${ye}-${h}`},M=s=>{if(!s)return"暂无";const k=new Date(s);return Number.isNaN(k.getTime())?s:`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.getDate()).padStart(2,"0")} ${String(k.getHours()).padStart(2,"0")}:${String(k.getMinutes()).padStart(2,"0")}`},F=(s,k)=>{if(!s)return 0;const ye=p.history.find(h=>h.date===s);return ye&&ye[k]||0},L=oe(()=>{var s,k;return p.generatedAt||((s=p.summary)==null?void 0:s.generatedAt)||((k=p.summary)==null?void 0:k.generated_at)||""}),A=oe(()=>{var s,k,ye,h,he,De,we,Ae;return[{key:"totalCost",label:"30天总费用",value:((s=p.summary)==null?void 0:s.totalCostFormatted)||"$0.000000",subtitle:"累计成本",icon:"fa-file-invoice-dollar",iconClass:"text-emerald-500"},{key:"totalRequests",label:"30天总请求",value:G(((k=p.summary)==null?void 0:k.totalRequests)||0),subtitle:"调用次数",icon:"fa-paper-plane",iconClass:"text-blue-500"},{key:"avgCost",label:"日均费用",value:((ye=p.summary)==null?void 0:ye.avgDailyCostFormatted)||j(((h=p.summary)==null?void 0:h.avgDailyCost)||0),subtitle:(he=p.summary)!=null&&he.actualDaysUsed&&((De=p.summary)==null?void 0:De.actualDaysUsed)<((we=p.summary)==null?void 0:we.days)?`基于 ${p.summary.actualDaysUsed} 天实际使用`:"平均每日成本",icon:"fa-wave-square",iconClass:"text-purple-500"},{key:"avgRequests",label:"日均请求",value:G(d(((Ae=p.summary)==null?void 0:Ae.avgDailyRequests)||0)),subtitle:"平均每日调用",icon:"fa-chart-line",iconClass:"text-orange-500"}]}),P=async()=>{if(await fs(),!p.show||!Q.value)return;if(m&&m.destroy(),!p.history||p.history.length===0){m=null;return}const s=p.history.map(h=>h.label),k=p.history.map(h=>h.cost||0),ye=p.history.map(h=>h.requests||0);m=new vs(Q.value,{type:"line",data:{labels:s,datasets:[{label:"费用 (USD)",data:k,borderColor:N.value.cost,backgroundColor:N.value.costFill,tension:.35,fill:!0,yAxisID:"y"},{label:"请求次数",data:ye,borderColor:N.value.requests,backgroundColor:"transparent",tension:.35,yAxisID:"y1"}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{labels:{color:N.value.text}},tooltip:{callbacks:{label(h){return h.dataset.label==="费用 (USD)"?`${h.dataset.label}: ${j(h.parsed.y)}`:`${h.dataset.label}: ${G(h.parsed.y)} 次`}}}},scales:{x:{ticks:{color:N.value.text},grid:{color:N.value.grid}},y:{position:"left",ticks:{color:N.value.text,callback:h=>j(h)},grid:{color:N.value.grid}},y1:{position:"right",ticks:{color:N.value.text,callback:h=>G(h)},grid:{drawOnChartArea:!1}}}}})},fe=()=>{m&&(m.destroy(),m=null)},Ie=()=>{fe(),ne("close")};return Z(()=>p.show,s=>{s&&!p.loading?P():s||fe()}),Z(()=>p.loading,s=>{!s&&p.show&&P()}),Z(()=>p.history,()=>{p.show&&!p.loading&&P()},{deep:!0}),Z(E,()=>{p.show&&!p.loading&&P()}),os(()=>{fe()}),(s,k)=>{var ye,h,he,De,we,Ae,Le,Je,ot,et,nt,Ye,Ee,Ve,Ke,Ne,qe,Qe,c,y,I,ge,Ce,Be,tt,st,Re,it,ze,xe,We,dt,at,be,ut,Pe,He,rt,pt,lt,gt;return n(),Oe(Ft,{to:"body"},[q.show?(n(),i("div",td,[e("div",{class:"absolute inset-0",onClick:Ie}),e("div",sd,[e("div",ad,[e("div",rd,[k[2]||(k[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",ld,[e("div",od,[e("h3",nd,g(((ye=q.account)==null?void 0:ye.name)||((h=q.account)==null?void 0:h.email)||"账号使用详情"),1),(he=q.account)!=null&&he.platform?(n(),i("span",id,[k[0]||(k[0]=e("i",{class:"fas fa-layer-group mr-1"},null,-1)),U(g(D.value),1)])):b("",!0),(De=q.account)!=null&&De.accountType?(n(),i("span",dd,[k[1]||(k[1]=e("i",{class:"fas fa-user-tag mr-1"},null,-1)),U(g(O.value),1)])):b("",!0)]),e("p",ud,[U(" 近 "+g(((we=q.summary)==null?void 0:we.days)||30)+" 天内的费用与请求趋势 ",1),(Ae=q.summary)!=null&&Ae.actualDaysUsed&&((Le=q.summary)==null?void 0:Le.actualDaysUsed)<((Je=q.summary)==null?void 0:Je.days)?(n(),i("span",pd," (日均基于实际使用 "+g(q.summary.actualDaysUsed)+" 天) ",1)):b("",!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:Ie},k[3]||(k[3]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",gd,[q.loading?(n(),i("div",md,k[4]||(k[4]=[e("div",{class:"loading-spinner h-12 w-12 border-4 border-blue-500"},null,-1)]))):(n(),i(ke,{key:1},[e("div",yd,[(n(!0),i(ke,null,Me(A.value,Ge=>(n(),i("div",{key:Ge.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",xd,[e("div",null,[e("p",cd,g(Ge.label),1),e("p",fd,g(Ge.value),1),e("p",bd,g(Ge.subtitle),1)]),e("div",vd,[e("i",{class:S(["fas",Ge.icon,Ge.iconClass])},null,2)])])]))),128))]),e("div",kd,[e("div",hd,[k[8]||(k[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"}),U(" 今日概览 ")],-1)),e("div",wd,[e("div",$d,[k[5]||(k[5]=e("span",null,"费用",-1)),e("span",Ad,g(((et=(ot=q.summary)==null?void 0:ot.today)==null?void 0:et.costFormatted)||"$0.000000"),1)]),e("div",Cd,[k[6]||(k[6]=e("span",null,"请求",-1)),e("span",Ud,g(G(((Ye=(nt=q.summary)==null?void 0:nt.today)==null?void 0:Ye.requests)||0)),1)]),e("div",Id,[k[7]||(k[7]=e("span",null,"Tokens",-1)),e("span",null,g(G(((Ve=(Ee=q.summary)==null?void 0:Ee.today)==null?void 0:Ve.tokens)||0)),1)])])]),e("div",Td,[k[12]||(k[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"}),U(" 最高费用日 ")],-1)),e("div",_d,[e("div",Sd,[k[9]||(k[9]=e("span",null,"日期",-1)),e("span",Md,g(x((Ne=(Ke=q.summary)==null?void 0:Ke.highestCostDay)==null?void 0:Ne.date)),1)]),e("div",Vd,[k[10]||(k[10]=e("span",null,"费用",-1)),e("span",Rd,g(((Qe=(qe=q.summary)==null?void 0:qe.highestCostDay)==null?void 0:Qe.formattedCost)||"$0.000000"),1)]),e("div",Kd,[k[11]||(k[11]=e("span",null,"请求",-1)),e("span",null,g(G(F((y=(c=q.summary)==null?void 0:c.highestCostDay)==null?void 0:y.date,"requests"))),1)])])]),e("div",zd,[k[16]||(k[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"}),U(" 最高请求日 ")],-1)),e("div",Pd,[e("div",jd,[k[13]||(k[13]=e("span",null,"日期",-1)),e("span",Od,g(x((ge=(I=q.summary)==null?void 0:I.highestRequestDay)==null?void 0:ge.date)),1)]),e("div",Dd,[k[14]||(k[14]=e("span",null,"请求",-1)),e("span",Ld,g(G(((Be=(Ce=q.summary)==null?void 0:Ce.highestRequestDay)==null?void 0:Be.requests)||0)),1)]),e("div",Ed,[k[15]||(k[15]=e("span",null,"费用",-1)),e("span",null,g(j(F((st=(tt=q.summary)==null?void 0:tt.highestRequestDay)==null?void 0:st.date,"cost"))),1)])])])]),e("div",Nd,[e("div",qd,[k[20]||(k[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"}),U(" 累计 Token ")],-1)),e("div",Wd,[e("div",Gd,[k[17]||(k[17]=e("span",null,"30天总计",-1)),e("span",Fd,g(G(W.value)),1)]),e("div",Qd,[k[18]||(k[18]=e("span",null,"日均 Token",-1)),e("span",Bd,g(G(Math.round(((Re=q.summary)==null?void 0:Re.avgDailyTokens)||0))),1)]),e("div",Hd,[k[19]||(k[19]=e("span",null,"输入 / 输出",-1)),e("span",null,g(G(H.value))+" / "+g(G(Y.value)),1)])])]),e("div",Jd,[k[24]||(k[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"}),U(" 平均速率 ")],-1)),e("div",Yd,[e("div",Zd,[k[21]||(k[21]=e("span",null,"RPM",-1)),e("span",Xd,g(((ze=(it=q.overview)==null?void 0:it.averages)==null?void 0:ze.rpm)??0),1)]),e("div",e0,[k[22]||(k[22]=e("span",null,"TPM",-1)),e("span",t0,g(((We=(xe=q.overview)==null?void 0:xe.averages)==null?void 0:We.tpm)??0),1)]),e("div",s0,[k[23]||(k[23]=e("span",null,"日均请求 / Token",-1)),e("span",null,g(G(Math.round((((at=(dt=q.overview)==null?void 0:dt.averages)==null?void 0:at.dailyRequests)||0)*100)/100))+" / "+g(G(Math.round((((ut=(be=q.overview)==null?void 0:be.averages)==null?void 0:ut.dailyTokens)||0)*100)/100)),1)])])]),e("div",a0,[k[28]||(k[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"}),U(" 最近统计 ")],-1)),e("div",r0,[e("div",l0,[k[25]||(k[25]=e("span",null,"今日请求",-1)),e("span",o0,g(G(((He=(Pe=q.overview)==null?void 0:Pe.daily)==null?void 0:He.requests)||0)),1)]),e("div",n0,[k[26]||(k[26]=e("span",null,"今日 Token",-1)),e("span",i0,g(G(((pt=(rt=q.overview)==null?void 0:rt.daily)==null?void 0:pt.allTokens)||0)),1)]),e("div",d0,[k[27]||(k[27]=e("span",null,"今日费用",-1)),e("span",null,g(j(((gt=(lt=q.overview)==null?void 0:lt.daily)==null?void 0:gt.cost)||0)),1)])])])]),e("div",u0,[e("div",p0,[k[29]||(k[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"}),U(" 30天费用与请求趋势 ")],-1)),e("span",g0," 最新更新时间:"+g(M(L.value)),1)]),e("div",m0,[e("canvas",{ref_key:"chartCanvas",ref:Q,class:"h-full w-full"},null,512)])])],64))])])])):b("",!0)])}}},x0=Qt(y0,[["__scopeId","data-v-49825dc6"]]),c0={class:"accounts-container"},f0={class:"card p-4 sm:p-6"},b0={class:"mb-4 flex flex-col gap-4 sm:mb-6"},v0={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},k0={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},h0={class:"group relative min-w-[160px]"},w0={class:"group relative min-w-[140px]"},$0={class:"group relative min-w-[160px]"},A0={class:"group relative min-w-[200px]"},C0={class:"relative flex items-center"},U0={class:"flex w-full flex-col gap-3 sm:w-auto sm:flex-row sm:items-center sm:gap-3"},I0={class:"relative"},T0=["disabled"],_0={class:"relative"},S0={key:0,class:"py-12 text-center"},M0={key:1,class:"py-12 text-center"},V0={key:2,class:"table-container hidden md:block"},R0={class:"w-full table-fixed"},K0={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},z0={key:0,class:"w-[50px] px-3 py-4 text-left"},P0={class:"flex items-center"},j0=["indeterminate"],O0={key:1,class:"fas fa-sort ml-1 text-gray-400"},D0={key:1,class:"fas fa-sort ml-1 text-gray-400"},L0={key:1,class:"fas fa-sort ml-1 text-gray-400"},E0={key:1,class:"fas fa-sort ml-1 text-gray-400"},N0={class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"},q0={class:"flex items-center gap-2"},W0={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},G0={key:0,class:"px-3 py-3"},F0={class:"flex items-center"},Q0=["value"],B0={class:"px-3 py-4"},H0={class:"flex items-center"},J0={class:"min-w-0"},Y0={class:"flex items-center gap-2"},Z0=["title"],X0={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},eu={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},tu={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},su={key:0,class:"my-2 flex flex-wrap items-center gap-2"},au=["title"],ru=["title"],lu={class:"px-3 py-4"},ou={class:"flex items-center gap-1"},nu={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"},iu={class:"text-xs font-medium text-yellow-700"},du={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"},uu={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"},pu={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"},gu={class:"text-xs font-medium text-gray-950"},mu={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"},yu={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"},xu={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"},cu={class:"text-xs font-semibold text-indigo-800"},fu={class:"text-xs font-medium text-indigo-700"},bu={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"},vu={key:8,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"},ku={class:"whitespace-nowrap px-3 py-4"},hu={class:"flex flex-col gap-1"},wu={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},$u={key:0},Au={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},Cu=["title"],Uu={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Iu={class:"whitespace-nowrap px-3 py-4"},Tu={key:0,class:"flex items-center gap-2"},_u={class:"h-2 w-16 rounded-full bg-gray-200"},Su={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},Mu={key:1,class:"text-sm text-gray-400"},Vu={class:"px-3 py-4 text-sm text-gray-600"},Ru=["title"],Ku={key:1,class:"text-gray-400"},zu={class:"whitespace-nowrap px-3 py-4 text-sm"},Pu={key:0,class:"space-y-1"},ju={class:"flex items-center gap-2"},Ou={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Du={class:"flex items-center gap-2"},Lu={class:"text-xs text-gray-600 dark:text-gray-300"},Eu={class:"flex items-center gap-2"},Nu={class:"text-xs text-gray-600 dark:text-gray-300"},qu={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Wu={key:1,class:"text-xs text-gray-400"},Gu={class:"whitespace-nowrap px-3 py-4"},Fu={key:0,class:"space-y-2"},Qu={key:0,class:"space-y-2"},Bu={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Hu={class:"flex items-center gap-2"},Ju={class:"flex-1"},Yu={class:"flex items-center gap-2"},Zu={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Xu={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},ep={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},tp={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},sp={class:"flex items-center gap-2"},ap={class:"flex-1"},rp={class:"flex items-center gap-2"},lp={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},op={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},np={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},ip={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},dp={class:"flex items-center gap-2"},up={class:"flex-1"},pp={class:"flex items-center gap-2"},gp={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},mp={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},yp={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},xp={key:1,class:"space-y-2"},cp={key:0,class:"flex items-center gap-3 text-xs"},fp={class:"flex items-center gap-1"},bp={class:"font-medium text-gray-900 dark:text-gray-100"},vp={class:"flex items-center gap-1"},kp={class:"font-medium text-gray-900 dark:text-gray-100"},hp={class:"flex items-center gap-2"},wp={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},$p={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Ap={class:"text-xs text-gray-600 dark:text-gray-400"},Cp={key:0,class:"font-medium text-indigo-600 dark:text-indigo-400"},Up={key:2,class:"text-xs text-gray-400"},Ip={key:1,class:"space-y-2"},Tp={key:0},_p={class:"flex items-center justify-between text-xs"},Sp={class:"font-medium text-gray-700 dark:text-gray-200"},Mp={class:"flex items-center gap-2"},Vp={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Rp={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Kp={class:"text-xs text-gray-600 dark:text-gray-400"},zp={class:"ml-2 text-gray-400"},Pp={key:1,class:"text-sm text-gray-400"},jp={key:2,class:"space-y-2"},Op={key:0,class:"space-y-2"},Dp={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Lp={class:"flex items-center gap-2"},Ep={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"},Np={class:"flex-1"},qp={class:"flex items-center gap-2"},Wp={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Gp={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Fp={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Qp={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Bp={class:"flex items-center gap-2"},Hp={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"},Jp={class:"flex-1"},Yp={class:"flex items-center gap-2"},Zp={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Xp={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},eg={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},tg={key:1,class:"text-sm text-gray-400"},sg={key:3,class:"text-sm text-gray-400"},ag={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},rg={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},lg={class:"flex flex-wrap items-center gap-1"},og=["disabled","title","onClick"],ng=["disabled","title","onClick"],ig={class:"ml-1"},dg=["onClick"],ug=["onClick"],pg=["onClick"],gg={key:3,class:"space-y-3 md:hidden"},mg={class:"mb-3 flex items-start justify-between"},yg={class:"flex items-center gap-3"},xg=["value"],cg={class:"text-sm font-semibold text-gray-900"},fg={class:"mt-0.5 flex items-center gap-2"},bg={class:"text-xs text-gray-500 dark:text-gray-400"},vg={class:"text-xs text-gray-500 dark:text-gray-400"},kg={class:"mb-3 grid grid-cols-2 gap-3"},hg={class:"space-y-1"},wg={class:"flex items-center gap-1.5"},$g={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Ag={class:"flex items-center gap-1.5"},Cg={class:"text-xs text-gray-600 dark:text-gray-400"},Ug={class:"flex items-center gap-1.5"},Ig={class:"text-xs text-gray-600 dark:text-gray-400"},Tg={key:0,class:"space-y-1"},_g={class:"flex items-center gap-1.5"},Sg={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Mg={class:"flex items-center gap-1.5"},Vg={class:"text-xs text-gray-600 dark:text-gray-400"},Rg={key:1,class:"text-sm font-semibold text-gray-400"},Kg={class:"mb-3 space-y-2"},zg={key:0,class:"space-y-2"},Pg={key:0,class:"space-y-2"},jg={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Og={class:"flex items-center gap-2"},Dg={class:"flex-1"},Lg={class:"flex items-center gap-2"},Eg={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Ng={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},qg={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Wg={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Gg={class:"flex items-center gap-2"},Fg={class:"flex-1"},Qg={class:"flex items-center gap-2"},Bg={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Hg={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Jg={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Yg={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Zg={class:"flex items-center gap-2"},Xg={class:"flex-1"},em={class:"flex items-center gap-2"},tm={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},sm={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},am={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},rm={key:1,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},lm={class:"flex items-center justify-between text-xs"},om={class:"flex items-center gap-1"},nm={class:"font-medium text-gray-700 dark:text-gray-200"},im={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},dm={class:"flex items-center justify-between text-xs"},um={class:"text-gray-500 dark:text-gray-400"},pm={key:0,class:"font-medium text-indigo-600"},gm={key:1,class:"text-gray-500"},mm={key:2,class:"text-xs text-gray-400"},ym={key:1,class:"space-y-2"},xm={key:0,class:"space-y-2"},cm={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},fm={class:"flex items-center gap-2"},bm={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"},vm={class:"flex-1"},km={class:"flex items-center gap-2"},hm={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},wm={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},$m={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Am={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Cm={class:"flex items-center gap-2"},Um={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"},Im={class:"flex-1"},Tm={class:"flex items-center gap-2"},_m={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},Sm={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Mm={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Vm={key:1,class:"text-xs text-gray-400"},Rm={class:"flex items-center justify-between text-xs"},Km={class:"text-gray-700 dark:text-gray-200"},zm={key:2,class:"flex items-center justify-between text-xs"},Pm={class:"text-gray-700 dark:text-gray-200"},jm={class:"flex items-center justify-between text-xs"},Om={class:"font-medium text-gray-700 dark:text-gray-200"},Dm={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Lm=["disabled","onClick"],Em=["onClick"],Nm=["onClick"],qm=["onClick"],Wm={key:0,class:"mt-4 flex flex-col items-center justify-between gap-4 sm:mt-6 sm:flex-row"},Gm={class:"flex w-full flex-col items-center gap-3 sm:w-auto sm:flex-row"},Fm={class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Qm={class:"flex items-center gap-2"},Bm=["value"],Hm={class:"flex items-center gap-2"},Jm=["disabled"],Ym={class:"flex items-center gap-1"},Zm={key:1,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},Xm=["onClick"],ey={key:2,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},ty=["disabled"],ls="accountsPageSize",sy={__name:"AccountsView",setup(q){const{showConfirmModal:ce,confirmOptions:p,showConfirm:ne,handleConfirm:_,handleCancel:E}=ds(),Q=$([]),m=$(!1),v=$("name"),D=$(""),O=$("asc"),N=$([]),W=$([]),H=$("all"),Y=$("all"),G=$(""),j=()=>{const r=localStorage.getItem(ls);if(r){const a=parseInt(r,10);if([10,20,50,100].includes(a))return a}return 10},d=[10,20,50,100],x=$(j()),M=$(1),F=$([]),L=$(!1),A=$(!1),P=$(!1),fe=$(!1),Ie=$(!1),s=$(null),k=$([]),ye=$({}),h=$({}),he=$(""),De=["claude","claude-console","openai","openai-responses","gemini"],we=$(!1),Ae=$(!1),Le=$(!1),Je=$(new Map),ot=$([{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"}]),et=$([{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:"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"}]),nt=oe(()=>{const r=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return W.value.forEach(a=>{r.push({value:a.id,label:`${a.name} (${a.platform==="claude"?"Claude":a.platform==="gemini"?"Gemini":"OpenAI"})`,icon:a.platform==="claude"?"fa-brain":a.platform==="gemini"?"fa-robot":"fa-openai"})}),r}),Ye=oe(()=>P.value),Ee=$(!1),Ve=$(null),Ke=$(!1),Ne=$(null),qe=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 R=l.trim();R&&a.add(R)}}),Array.isArray(r==null?void 0:r.groupInfos)&&r.groupInfos.forEach(l=>{if(l&&typeof l.name=="string"){const R=l.name.trim();R&&a.add(R)}}),Object.entries(r||{}).forEach(([l,R])=>{if(typeof R=="string"){const J=l.toLowerCase();if(J.includes("name")||J.includes("email")){const te=R.trim();te&&a.add(te)}}}),Array.from(a)},Qe=(r,a)=>a?qe(r).some(w=>w.toLowerCase().includes(a)):!0,c=r=>!!r&&De.includes(r.platform),y=async r=>{if(!c(r)){z("该账户类型暂不支持查看详情","warning");return}s.value=r,fe.value=!0,Ie.value=!0,k.value=[],ye.value={},h.value={},he.value="";try{const a=await K.get(`/admin/accounts/${r.id}/usage-history?platform=${r.platform}&days=30`);if(a.success){const w=a.data||{};k.value=w.history||[],ye.value=w.summary||{},h.value=w.overview||{},he.value=w.generatedAt||""}else z(a.error||"加载账号使用详情失败","error")}catch{z("加载账号使用详情失败","error")}finally{Ie.value=!1}},I=()=>{fe.value=!1,Ie.value=!1,s.value=null},ge=oe(()=>{let r=Q.value;const a=G.value.trim();if(a){const l=a.toLowerCase();r=r.filter(R=>Qe(R,l))}return D.value?[...r].sort((l,R)=>{var ae,ve,Ze,ee,pe,Xe,se,re,Te,_e,es,ts;let J=l[D.value],te=R[D.value];return D.value==="dailyTokens"?(J=((ve=(ae=l.usage)==null?void 0:ae.daily)==null?void 0:ve.allTokens)||0,te=((ee=(Ze=R.usage)==null?void 0:Ze.daily)==null?void 0:ee.allTokens)||0):D.value==="dailyRequests"?(J=((Xe=(pe=l.usage)==null?void 0:pe.daily)==null?void 0:Xe.requests)||0,te=((re=(se=R.usage)==null?void 0:se.daily)==null?void 0:re.requests)||0):D.value==="totalTokens"&&(J=((_e=(Te=l.usage)==null?void 0:Te.total)==null?void 0:_e.allTokens)||0,te=((ts=(es=R.usage)==null?void 0:es.total)==null?void 0:ts.allTokens)||0),D.value==="lastUsed"&&(J=l.lastUsedAt?new Date(l.lastUsedAt).getTime():0,te=R.lastUsedAt?new Date(R.lastUsedAt).getTime():0),D.value==="status"&&(J=l.isActive?1:0,te=R.isActive?1:0),Jte?O.value==="asc"?1:-1:0}):r}),Ce=oe(()=>{const r=ge.value.length;return Math.ceil(r/x.value)||0}),Be=oe(()=>{const r=Ce.value,a=M.value,w=[];if(r<=7)for(let l=1;l<=r;l++)w.push(l);else{let l=Math.max(1,a-2),R=Math.min(r,a+2);a<=3?R=5:a>=r-2&&(l=r-4);for(let J=l;J<=R;J++)w.push(J)}return w}),tt=oe(()=>{const r=Be.value;return r.length===0?!1:r[0]>1}),st=oe(()=>{const r=Be.value;return r.length===0?!1:r[r.length-1]{const r=Be.value;return r.length===0?!1:tt.value&&r[0]>2}),it=oe(()=>{const r=Be.value;return r.length===0?!1:st.value&&r[r.length-1]{const r=(M.value-1)*x.value,a=r+x.value;return ge.value.slice(r,a)}),xe=()=>{const r=ze.value.map(l=>l.id),a=r.filter(l=>F.value.includes(l)).length,w=r.length;a===0?(L.value=!1,A.value=!1):a===w?(L.value=!0,A.value=!1):(L.value=!1,A.value=!0)},We=()=>{if(L.value)ze.value.forEach(r=>{F.value.includes(r.id)||F.value.push(r.id)});else{const r=new Set(ze.value.map(a=>a.id));F.value=F.value.filter(a=>!r.has(a))}xe()},dt=()=>{P.value=!P.value,P.value?xe():(F.value=[],L.value=!1,A.value=!1)},at=()=>{const r=new Set(Q.value.map(a=>a.id));F.value=F.value.filter(a=>r.has(a)),xe()},be=async(r=!1)=>{m.value=!0;try{const a={};Y.value!=="all"&&(a.platform=Y.value),H.value!=="all"&&(a.groupId=H.value);const w=[];if(Y.value==="all")w.push(K.get("/admin/claude-accounts",{params:a}),K.get("/admin/claude-console-accounts",{params:a}),K.get("/admin/bedrock-accounts",{params:a}),K.get("/admin/gemini-accounts",{params:a}),K.get("/admin/openai-accounts",{params:a}),K.get("/admin/azure-openai-accounts",{params:a}),K.get("/admin/openai-responses-accounts",{params:a}),K.get("/admin/ccr-accounts",{params:a}));else switch(Y.value){case"claude":w.push(K.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:[]}));break;case"claude-console":w.push(Promise.resolve({success:!0,data:[]}),K.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:[]}));break;case"bedrock":w.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),K.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:[]}));break;case"gemini":w.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),K.get("/admin/gemini-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"openai":w.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),K.get("/admin/openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"azure_openai":w.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:[]}),K.get("/admin/azure-openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}));break;case"openai-responses":w.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:[]}),K.get("/admin/openai-responses-accounts",{params:a}));break;case"ccr":w.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:[]}),K.get("/admin/ccr-accounts",{params:a}));break;default:w.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:[]}));break}await Promise.all([lt(r),gt(r)]);const[l,R,J,te,ae,ve,Ze,ee]=await Promise.all(w),pe=[];if(l.success){const se=(l.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.claudeAccountId===re.id).length;return{...re,platform:"claude",boundApiKeysCount:Te}});pe.push(...se)}if(R.success){const se=(R.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.claudeConsoleAccountId===re.id).length;return{...re,platform:"claude-console",boundApiKeysCount:Te}});pe.push(...se)}if(J.success){const se=(J.data||[]).map(re=>({...re,platform:"bedrock",boundApiKeysCount:0}));pe.push(...se)}if(te.success){const se=(te.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.geminiAccountId===re.id).length;return{...re,platform:"gemini",boundApiKeysCount:Te}});pe.push(...se)}if(ae.success){const se=(ae.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.openaiAccountId===re.id).length;return{...re,platform:"openai",boundApiKeysCount:Te}});pe.push(...se)}if(ve&&ve.success){const se=(ve.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.azureOpenaiAccountId===re.id).length;return{...re,platform:"azure_openai",boundApiKeysCount:Te}});pe.push(...se)}if(Ze&&Ze.success){const se=(Ze.data||[]).map(re=>{const Te=N.value.filter(_e=>_e.openaiAccountId===`responses:${re.id}`).length;return{...re,platform:"openai-responses",boundApiKeysCount:Te}});pe.push(...se)}if(ee&&ee.success){const se=(ee.data||[]).map(re=>({...re,platform:"ccr",boundApiKeysCount:0}));pe.push(...se)}let Xe=pe;H.value!=="all"&&(H.value==="ungrouped"?Xe=pe.filter(se=>!se.groupInfos||se.groupInfos.length===0):Xe=pe.filter(se=>!se.groupInfos||se.groupInfos.length===0?!1:se.groupInfos.some(re=>re.id===H.value))),Q.value=Xe,at(),Xe.some(se=>se.platform==="claude")&&ut().catch(se=>{console.debug("Claude usage loading failed:",se)})}catch{z("加载账户失败","error")}finally{m.value=!1}},ut=async()=>{try{const r=await K.get("/admin/claude-accounts/usage");if(r.success&&r.data){const a=r.data;Q.value=Q.value.map(w=>w.platform==="claude"&&a[w.id]?{...w,claudeUsage:a[w.id]}:w)}}catch(r){console.debug("Failed to load Claude usage data:",r)}},Pe=r=>{r&&(D.value===r?O.value=O.value==="asc"?"desc":"asc":(D.value=r,O.value="asc"))},He=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)},rt=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")},pt=()=>{G.value="",M.value=1},lt=async(r=!1)=>{if(!(!r&&we.value))try{const a=await K.get("/admin/api-keys");a.success&&(N.value=a.data||[],we.value=!0)}catch{}},gt=async(r=!1)=>{if(!(!r&&Ae.value))try{const a=await K.get("/admin/account-groups");a.success&&(W.value=a.data||[],Ae.value=!0)}catch{}},Ge=()=>{we.value=!1,Ae.value=!1,Le.value=!1,Je.value.clear()},St=()=>{M.value=1,be()},Mt=()=>{M.value=1,be()},yt=r=>{if(!r||!r.host||!r.port)return null;const a=r.type==="socks5"?"S5":r.type.toUpperCase();let w=r.host;w.length>15&&(w=w.substring(0,12)+"...");let l=`${a}://${w}:${r.port}`;return r.username&&(l=`${a}://***@${w}:${r.port}`),l},bt=(r,a)=>{if(!r||!a)return"--";const w=new Date(r),l=new Date(a),R=w.getHours().toString().padStart(2,"0"),J=w.getMinutes().toString().padStart(2,"0"),te=l.getHours().toString().padStart(2,"0"),ae=l.getMinutes().toString().padStart(2,"0");return`${R}:${J} - ${te}:${ae}`},vt=r=>{if(!r||r<=0)return"已结束";const a=Math.floor(r/60),w=r%60;return a>0?`${a}小时${w}分钟`:`${w}分钟`},Vt=r=>{if(!r||r<=0)return"";r=Math.floor(r);const a=Math.floor(r/1440),w=r%1440,l=Math.floor(w/60),R=w%60;return a>0?l>0?`${a}天${l}小时`:`${a}天`:l>0?R>0?`${l}小时${R}分钟`:`${l}小时`:`${R}分钟`},Rt=()=>{Ve.value=null,Ee.value=!0},kt=()=>{Ee.value=!1,Ve.value=null},ht=r=>{Ne.value=r,Ke.value=!0},wt=r=>!r||!r.id?[]:N.value.filter(a=>{const w=r.id;return a.claudeAccountId===w||a.claudeConsoleAccountId===w||a.geminiAccountId===w||a.openaiAccountId===w||a.azureOpenaiAccountId===w||a.openaiAccountId===`responses:${w}`}),Kt=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}`;default:return null}},$t=async r=>{var w,l;const a=Kt(r);if(!a)return{success:!1,message:"不支持的账户类型"};try{const R=await K.delete(a);return R.success?{success:!0,data:R}:{success:!1,message:R.message||"删除失败"}}catch(R){return{success:!1,message:((l=(w=R.response)==null?void 0:w.data)==null?void 0:l.message)||R.message||"删除失败"}}},At=async r=>{const w=wt(r).length;let l=`确定要删除账户 "${r.name}" 吗?`;if(w>0&&(l+=` ⚠️ 注意:此账号有 ${w} 个 API Key 绑定。`,l+=` 删除后,这些 API Key 将自动切换为共享池模式。`),l+=` 此操作不可恢复。`,!await ne("删除账户",l,"删除","取消"))return;const J=await $t(r);if(J.success){const te=J.data;let ae="账户已成功删除";(te==null?void 0:te.unboundKeys)>0&&(ae+=`,${te.unboundKeys} 个 API Key 已切换为共享池模式`),z(ae,"success"),F.value=F.value.filter(ve=>ve!==r.id),xe(),Le.value=!1,we.value=!1,be(),lt(!0)}else z(J.message||"删除失败","error")},zt=async()=>{var Ze;if(F.value.length===0){z("请先选择要删除的账户","warning");return}const r=new Map(Q.value.map(ee=>[ee.id,ee])),a=F.value.map(ee=>r.get(ee)).filter(ee=>!!ee);if(a.length===0){z("选中的账户已不存在","warning"),F.value=[],xe();return}let w=`确定要删除选中的 ${a.length} 个账户吗?此操作不可恢复。`;const l=a.map(ee=>({account:ee,boundKeys:wt(ee)})).filter(ee=>ee.boundKeys.length>0);if(l.length>0&&(w+=` ⚠️ 以下账户存在绑定的 API Key,将自动解绑:`,l.forEach(({account:ee,boundKeys:pe})=>{const Xe=ee.name||ee.email||ee.accountName||ee.id;w+=` - ${Xe}: ${pe.length} 个`}),w+=` 删除后,这些 API Key 将切换为共享池模式。`),w+=` 请再次确认是否继续。`,!await ne("批量删除账户",w,"删除","取消"))return;let J=0,te=0,ae=0;const ve=[];for(const ee of a){const pe=await $t(ee);pe.success?(J+=1,ae+=((Ze=pe.data)==null?void 0:Ze.unboundKeys)||0):(te+=1,ve.push({name:ee.name||ee.email||ee.accountName||ee.id,message:pe.message||"删除失败"}))}if(J>0){let ee=`成功删除 ${J} 个账户`;ae>0&&(ee+=`,${ae} 个 API Key 已切换为共享池模式`),z(ee,te>0?"warning":"success"),F.value=[],L.value=!1,A.value=!1,Le.value=!1,we.value=!1,await be(!0)}if(te>0){const ee=ve.map(pe=>`${pe.name}: ${pe.message}`).join(` `);z(`有 ${te} 个账户删除失败: ${ee}`,J>0?"warning":"error")}xe()},Pt=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 w="";if(r.platform==="openai")w=`/admin/openai-accounts/${r.id}/reset-status`;else if(r.platform==="openai-responses")w=`/admin/openai-responses-accounts/${r.id}/reset-status`;else if(r.platform==="claude")w=`/admin/claude-accounts/${r.id}/reset-status`;else if(r.platform==="claude-console")w=`/admin/claude-console-accounts/${r.id}/reset-status`;else if(r.platform==="ccr")w=`/admin/ccr-accounts/${r.id}/reset-status`;else{z("不支持的账户类型","error"),r.isResetting=!1;return}const l=await K.post(w);l.success?(z("账户状态已重置","success"),be(!0)):z(l.message||"状态重置失败","error")}catch{z("状态重置失败","error")}finally{r.isResetting=!1}},Ct=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{z("该账户类型暂不支持调度控制","warning");return}const w=await K.put(a);w.success?(r.schedulable=w.schedulable,z(w.schedulable?"已启用调度":"已禁用调度","success")):z(w.message||"操作失败","error")}catch{z("切换调度状态失败","error")}finally{r.isTogglingSchedulable=!1}},Ut=()=>{Ee.value=!1,z("账户创建成功","success"),Ge(),be()},It=()=>{Ke.value=!1,z("账户更新成功","success"),Le.value=!1,be()},u=r=>!r.lastRefreshAt||r.lastRefreshAt===""?"Setup":"OAuth",t=()=>"OAuth",o=()=>"OAuth",X=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"},B=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:"手动停止调度"},je=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?"已暂停":"正常",V=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",C=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",ue=r=>rt(r),ie=(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"},le=r=>r.authType==="oauth",$e=r=>!r||r.utilization===null||r.utilization===void 0?"-":`${r.utilization}%`,xt=r=>!r||r.utilization===null||r.utilization===void 0?"0%":`${r.utilization}%`,ct=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"},ft=r=>{if(!r||!r.remainingSeconds)return"-";const a=r.remainingSeconds,w=Math.floor(a/86400),l=Math.floor(a%86400/3600),R=Math.floor(a%3600/60);return w>0?l>0?`${w}天${l}小时`:`${w}天`:l>0?R>0?`${l}小时${R}分钟`:`${l}小时`:R>0?`${R}分钟`:`${Math.floor(a%60)}秒`},Bt=r=>{if(!r)return null;const a=typeof r.usedPercent=="number"&&!Number.isNaN(r.usedPercent)?r.usedPercent:null,w=typeof r.resetAfterSeconds=="number"&&!Number.isNaN(r.resetAfterSeconds)?r.resetAfterSeconds:null,l=typeof r.remainingSeconds=="number"?r.remainingSeconds:null,R=r.resetAt?Date.parse(r.resetAt):null;return w!==null&&(l!==null&&l<=0||R!==null&&!Number.isNaN(R)&&Date.now()>=R)?0:a===null?null:Math.max(0,Math.min(100,a))},jt=r=>{const a=Bt(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"},Ot=r=>{const a=Bt(r);return a===null?"--":`${a.toFixed(1)}%`},Dt=r=>{const a=Bt(r);return a===null?"0%":`${a}%`},Lt=r=>r==="secondary"?"周限":"5h",Et=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 w=Math.floor(a/86400),l=Math.floor(a%86400/3600),R=Math.floor(a%3600/60),J=a%60;return w>0?l>0?`${w}天${l}小时`:`${w}天`:l>0?R>0?`${l}小时${R}分钟`:`${l}小时`:R>0?`${R}分钟`:`${J}秒`},Nt=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),Ht=r=>{var l,R;const a=Number(((R=(l=r==null?void 0:r.usage)==null?void 0:l.daily)==null?void 0:R.cost)||0),w=Number((r==null?void 0:r.dailyQuota)||0);return!w||w<=0?0:a/w*100},ps=r=>r>=90?"bg-red-500":r>=70?"bg-yellow-500":"bg-green-500",gs=r=>{var l,R;const a=Number(((R=(l=r==null?void 0:r.usage)==null?void 0:l.daily)==null?void 0:R.cost)||0),w=Number((r==null?void 0:r.dailyQuota)||0);return!w||w<=0?"0.00":Math.max(0,w-a).toFixed(2)},Xt=r=>!r.usage||!r.usage.daily?"0.0000":r.usage.daily.cost!==void 0?Nt(r.usage.daily.cost):"0.0000";return Z(G,()=>{M.value=1,xe()}),Z(x,r=>{localStorage.setItem(ls,r.toString()),xe()}),Z(()=>ge.value.length,()=>{M.value>Ce.value&&(M.value=Ce.value||1),xe()}),Z(v,r=>{const a={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};a[r]&&Pe(a[r])}),Z(M,()=>{xe()}),Z(ze,()=>{xe()}),Z(Q,()=>{at()}),Gt(()=>{be(!0)}),(r,a)=>{const w=ms;return n(),i("div",c0,[e("div",f0,[e("div",b0,[a[35]||(a[35]=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",v0,[e("div",k0,[e("div",h0,[a[24]||(a[24]=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)),Fe(Jt,{modelValue:v.value,"onUpdate:modelValue":a[0]||(a[0]=l=>v.value=l),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:ot.value,placeholder:"选择排序",onChange:a[1]||(a[1]=l=>Pe())},null,8,["modelValue","options"])]),e("div",w0,[a[25]||(a[25]=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)),Fe(Jt,{modelValue:Y.value,"onUpdate:modelValue":a[2]||(a[2]=l=>Y.value=l),icon:"fa-server","icon-color":"text-blue-500",options:et.value,placeholder:"选择平台",onChange:St},null,8,["modelValue","options"])]),e("div",$0,[a[26]||(a[26]=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)),Fe(Jt,{modelValue:H.value,"onUpdate:modelValue":a[3]||(a[3]=l=>H.value=l),icon:"fa-layer-group","icon-color":"text-purple-500",options:nt.value,placeholder:"选择分组",onChange:Mt},null,8,["modelValue","options"])]),e("div",A0,[a[29]||(a[29]=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",C0,[f(e("input",{"onUpdate:modelValue":a[4]||(a[4]=l=>G.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),[[T,G.value]]),a[28]||(a[28]=e("i",{class:"fas fa-search absolute left-3 text-sm text-cyan-500"},null,-1)),G.value?(n(),i("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:pt},a[27]||(a[27]=[e("i",{class:"fas fa-times text-xs"},null,-1)]))):b("",!0)])])]),e("div",U0,[e("div",I0,[Fe(w,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:Tt(()=>[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:m.value,onClick:[a[5]||(a[5]=qt(l=>be(!0),["ctrl","exact"])),a[6]||(a[6]=qt(l=>be(!1),["exact"])),a[7]||(a[7]=qt(l=>be(!0),["meta","exact"]))]},[a[30]||(a[30]=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:S(["fas relative text-green-500",m.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),a[31]||(a[31]=e("span",{class:"relative"},"刷新",-1))],8,T0)]),_: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:dt},[e("i",{class:S(P.value?"fas fa-times":"fas fa-check-square")},null,2),e("span",null,g(P.value?"取消选择":"选择"),1)]),F.value.length>0?(n(),i("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:zt},[a[32]||(a[32]=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[33]||(a[33]=e("i",{class:"fas fa-trash relative text-red-600 dark:text-red-400"},null,-1)),e("span",_0,"删除选中 ("+g(F.value.length)+")",1)])):b("",!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:qt(Rt,["stop"])},a[34]||(a[34]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])])]),m.value?(n(),i("div",S0,a[36]||(a[36]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):ge.value.length===0?(n(),i("div",M0,a[37]||(a[37]=[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)]))):(n(),i("div",V0,[e("table",R0,[e("thead",K0,[e("tr",null,[Ye.value?(n(),i("th",z0,[e("div",P0,[f(e("input",{"onUpdate:modelValue":a[8]||(a[8]=l=>L.value=l),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",indeterminate:A.value,type:"checkbox",onChange:We},null,40,j0),[[me,L.value]])])])):b("",!0),e("th",{class:"w-[22%] 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",onClick:a[9]||(a[9]=l=>Pe("name"))},[a[38]||(a[38]=U(" 名称 ",-1)),D.value==="name"?(n(),i("i",{key:0,class:S(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",O0))]),e("th",{class:"w-[15%] min-w-[120px] 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=>Pe("platform"))},[a[39]||(a[39]=U(" 平台/类型 ",-1)),D.value==="platform"?(n(),i("i",{key:0,class:S(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",D0))]),e("th",{class:"w-[12%] min-w-[100px] 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=>Pe("status"))},[a[40]||(a[40]=U(" 状态 ",-1)),D.value==="status"?(n(),i("i",{key:0,class:S(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",L0))]),e("th",{class:"w-[8%] 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=>Pe("priority"))},[a[41]||(a[41]=U(" 优先级 ",-1)),D.value==="priority"?(n(),i("i",{key:0,class:S(["fas",O.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",E0))]),a[45]||(a[45]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),a[46]||(a[46]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),e("th",N0,[e("div",q0,[a[44]||(a[44]=e("span",null,"会话窗口",-1)),Fe(w,{placement:"top"},{content:Tt(()=>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"},"Opus 窗口:7天Opus模型专用限额。")]),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:Tt(()=>[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[47]||(a[47]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),a[48]||(a[48]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",W0,[(n(!0),i(ke,null,Me(ze.value,l=>{var R,J,te;return n(),i("tr",{key:l.id,class:"table-row"},[Ye.value?(n(),i("td",G0,[e("div",F0,[f(e("input",{"onUpdate:modelValue":a[13]||(a[13]=ae=>F.value=ae),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:xe},null,40,Q0),[[me,F.value]])])])):b("",!0),e("td",B0,[e("div",H0,[a[53]||(a[53]=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",J0,[e("div",Y0,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:l.name},g(l.name),9,Z0),l.accountType==="dedicated"?(n(),i("span",X0,a[49]||(a[49]=[e("i",{class:"fas fa-lock mr-1"},null,-1),U("专属 ",-1)]))):l.accountType==="group"?(n(),i("span",eu,a[50]||(a[50]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),U("分组调度 ",-1)]))):(n(),i("span",tu,a[51]||(a[51]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),U("共享 ",-1)])))]),l.groupInfos&&l.groupInfos.length>0?(n(),i("div",su,[(n(!0),i(ke,null,Me(l.groupInfos,ae=>(n(),i("span",{key:ae.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:`所属分组: ${ae.name}`},[a[52]||(a[52]=e("i",{class:"fas fa-folder mr-1"},null,-1)),U(g(ae.name),1)],8,au))),128))])):b("",!0),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:l.id},g(l.id),9,ru)])])]),e("td",lu,[e("div",ou,[l.platform==="gemini"?(n(),i("div",nu,[a[54]||(a[54]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),a[55]||(a[55]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),a[56]||(a[56]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",iu,g(t()),1)])):l.platform==="claude-console"?(n(),i("div",du,a[57]||(a[57]=[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"?(n(),i("div",uu,a[58]||(a[58]=[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"?(n(),i("div",pu,[a[59]||(a[59]=e("div",{class:"fa-openai"},null,-1)),a[60]||(a[60]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),a[61]||(a[61]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",gu,g(o()),1)])):l.platform==="azure_openai"?(n(),i("div",mu,a[62]||(a[62]=[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"?(n(),i("div",yu,a[63]||(a[63]=[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-Responses",-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"?(n(),i("div",xu,[a[64]||(a[64]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",cu,g(X(l)),1),a[65]||(a[65]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",fu,g(u(l)),1)])):l.platform==="ccr"?(n(),i("div",bu,a[66]||(a[66]=[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)]))):(n(),i("div",vu,a[67]||(a[67]=[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",ku,[e("div",hu,[e("span",{class:S(["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:S(["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),U(" "+g(l.status==="blocked"?"已封锁":l.status==="unauthorized"?"异常":l.status==="temp_error"?"临时异常":l.isActive?"正常":"异常"),1)],2),l.rateLimitStatus&&l.rateLimitStatus.isRateLimited||l.rateLimitStatus==="limited"?(n(),i("span",wu,[a[68]||(a[68]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),a[69]||(a[69]=U(" 限流中 ",-1)),l.rateLimitStatus&&typeof l.rateLimitStatus=="object"&&l.rateLimitStatus.minutesRemaining>0?(n(),i("span",$u,"("+g(Vt(l.rateLimitStatus.minutesRemaining))+")",1)):b("",!0)])):b("",!0),l.schedulable===!1?(n(),i("span",Au,[a[71]||(a[71]=e("i",{class:"fas fa-pause-circle mr-1"},null,-1)),a[72]||(a[72]=U(" 不可调度 ",-1)),B(l)?(n(),Oe(w,{key:0,content:B(l),effect:"dark",placement:"top"},{default:Tt(()=>a[70]||(a[70]=[e("i",{class:"fas fa-question-circle ml-1 cursor-help text-gray-500"},null,-1)])),_:2,__:[70]},1032,["content"])):b("",!0)])):b("",!0),l.status==="blocked"&&l.errorMessage?(n(),i("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:l.errorMessage},g(l.errorMessage),9,Cu)):b("",!0),l.accountType==="dedicated"?(n(),i("span",Uu," 绑定: "+g(l.boundApiKeysCount||0)+" 个API Key ",1)):b("",!0)])]),e("td",Iu,[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"?(n(),i("div",Tu,[e("div",_u,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:Ue({width:101-(l.priority||50)+"%"})},null,4)]),e("span",Su,g(l.priority||50),1)])):(n(),i("div",Mu,a[73]||(a[73]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",Vu,[yt(l.proxy)?(n(),i("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:yt(l.proxy)},g(yt(l.proxy)),9,Ru)):(n(),i("div",Ku,"无代理"))]),e("td",zu,[l.usage&&l.usage.daily?(n(),i("div",Pu,[e("div",ju,[a[74]||(a[74]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",Ou,g(l.usage.daily.requests||0)+" 次",1)]),e("div",Du,[a[75]||(a[75]=e("div",{class:"h-2 w-2 rounded-full bg-purple-500"},null,-1)),e("span",Lu,g(He(l.usage.daily.allTokens||0))+"M",1)]),e("div",Eu,[a[76]||(a[76]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Nu,"$"+g(Xt(l)),1)]),l.usage.averages&&l.usage.averages.rpm>0?(n(),i("div",qu," 平均 "+g(l.usage.averages.rpm.toFixed(2))+" RPM ",1)):b("",!0)])):(n(),i("div",Wu,"暂无数据"))]),e("td",Gu,[l.platform==="claude"?(n(),i("div",Fu,[le(l)&&l.claudeUsage?(n(),i("div",Qu,[e("div",Bu,[e("div",Hu,[a[77]||(a[77]=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",Ju,[e("div",Yu,[e("div",Zu,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.fiveHour)]),style:Ue({width:xt(l.claudeUsage.fiveHour)})},null,6)]),e("span",Xu,g($e(l.claudeUsage.fiveHour)),1)])])]),e("div",ep," 重置剩余 "+g(ft(l.claudeUsage.fiveHour)),1)]),e("div",tp,[e("div",sp,[a[78]||(a[78]=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",ap,[e("div",rp,[e("div",lp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.sevenDay)]),style:Ue({width:xt(l.claudeUsage.sevenDay)})},null,6)]),e("span",op,g($e(l.claudeUsage.sevenDay)),1)])])]),e("div",np," 重置剩余 "+g(ft(l.claudeUsage.sevenDay)),1)]),e("div",ip,[e("div",dp,[a[79]||(a[79]=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",up,[e("div",pp,[e("div",gp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.sevenDayOpus)]),style:Ue({width:xt(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",mp,g($e(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",yp," 重置剩余 "+g(ft(l.claudeUsage.sevenDayOpus)),1)])])):!le(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(n(),i("div",xp,[l.usage&&l.usage.sessionWindow?(n(),i("div",cp,[e("div",fp,[a[80]||(a[80]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("span",bp,g(He(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",vp,[a[81]||(a[81]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("span",kp," $"+g(Nt(l.usage.sessionWindow.totalCost)),1)])])):b("",!0),e("div",hp,[e("div",wp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ie(l.sessionWindow.sessionWindowStatus,l)]),style:Ue({width:l.sessionWindow.progress+"%"})},null,6)]),e("span",$p,g(l.sessionWindow.progress)+"% ",1)]),e("div",Ap,[e("div",null,g(bt(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(n(),i("div",Cp," 剩余 "+g(vt(l.sessionWindow.remainingTime)),1)):b("",!0)])])):(n(),i("div",Up,"暂无统计"))])):l.platform==="claude-console"?(n(),i("div",Ip,[Number(l.dailyQuota)>0?(n(),i("div",Tp,[e("div",_p,[a[82]||(a[82]=e("span",{class:"text-gray-600 dark:text-gray-300"},"额度进度",-1)),e("span",Sp,g(Ht(l).toFixed(1))+"% ",1)]),e("div",Mp,[e("div",Vp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ps(Ht(l))]),style:Ue({width:Math.min(100,Ht(l))+"%"})},null,6)]),e("span",Rp," $"+g(Nt(((J=(R=l.usage)==null?void 0:R.daily)==null?void 0:J.cost)||0))+" / $"+g(Number(l.dailyQuota).toFixed(2)),1)]),e("div",Kp,[U(" 剩余 $"+g(gs(l))+" ",1),e("span",zp,"重置 "+g(l.quotaResetTime||"00:00"),1)])])):(n(),i("div",Pp,a[83]||(a[83]=[e("i",{class:"fas fa-minus"},null,-1)])))])):l.platform==="openai"?(n(),i("div",jp,[l.codexUsage?(n(),i("div",Op,[e("div",Dp,[e("div",Lp,[e("span",Ep,g(Lt("primary")),1),e("div",Np,[e("div",qp,[e("div",Wp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",jt(l.codexUsage.primary)]),style:Ue({width:Dt(l.codexUsage.primary)})},null,6)]),e("span",Gp,g(Ot(l.codexUsage.primary)),1)])])]),e("div",Fp," 重置剩余 "+g(Et(l.codexUsage.primary)),1)]),e("div",Qp,[e("div",Bp,[e("span",Hp,g(Lt("secondary")),1),e("div",Jp,[e("div",Yp,[e("div",Zp,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",jt(l.codexUsage.secondary)]),style:Ue({width:Dt(l.codexUsage.secondary)})},null,6)]),e("span",Xp,g(Ot(l.codexUsage.secondary)),1)])])]),e("div",eg," 重置剩余 "+g(Et(l.codexUsage.secondary)),1)])])):(n(),i("div",tg,a[84]||(a[84]=[e("span",{class:"text-xs"},"N/A",-1)])))])):(n(),i("div",sg,a[85]||(a[85]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",ag,g(rt(l.lastUsedAt)),1),e("td",rg,[e("div",lg,[(l.platform==="claude"||l.platform==="claude-console"||l.platform==="openai"||l.platform==="openai-responses")&&(l.status==="unauthorized"||l.status!=="active"||(te=l.rateLimitStatus)!=null&&te.isRateLimited||l.rateLimitStatus==="limited"||!l.isActive)?(n(),i("button",{key:0,class:S(["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:ae=>Pt(l)},[e("i",{class:S(["fas fa-redo",l.isResetting?"animate-spin":""])},null,2),a[86]||(a[86]=e("span",{class:"ml-1"},"重置状态",-1))],10,og)):b("",!0),e("button",{class:S(["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:ae=>Ct(l)},[e("i",{class:S(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",ig,g(l.schedulable?"调度":"停用"),1)],10,ng),c(l)?(n(),i("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:ae=>y(l)},a[87]||(a[87]=[e("i",{class:"fas fa-chart-line"},null,-1),e("span",{class:"ml-1"},"详情",-1)]),8,dg)):b("",!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:ae=>ht(l)},a[88]||(a[88]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,ug),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:ae=>At(l)},a[89]||(a[89]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,pg)])])])}),128))])])])),!m.value&&ge.value.length>0?(n(),i("div",gg,[(n(!0),i(ke,null,Me(ze.value,l=>{var R,J,te,ae;return n(),i("div",{key:l.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",mg,[e("div",yg,[Ye.value?f((n(),i("input",{key:0,"onUpdate:modelValue":a[14]||(a[14]=ve=>F.value=ve),class:"mt-1 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:xe},null,40,xg)),[[me,F.value]]):b("",!0),e("div",{class:S(["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":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:S(["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":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",cg,g(l.name||l.email),1),e("div",fg,[e("span",bg,g(l.platform),1),a[90]||(a[90]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",vg,g(l.type),1)])])]),e("span",{class:S(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",V(l)])},[e("div",{class:S(["mr-1.5 h-1.5 w-1.5 rounded-full",C(l)])},null,2),U(" "+g(je(l)),1)],2)]),e("div",kg,[e("div",null,[a[94]||(a[94]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("div",hg,[e("div",wg,[a[91]||(a[91]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-blue-500"},null,-1)),e("p",$g,g(((J=(R=l.usage)==null?void 0:R.daily)==null?void 0:J.requests)||0)+" 次 ",1)]),e("div",Ag,[a[92]||(a[92]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",Cg,g(He(((ae=(te=l.usage)==null?void 0:te.daily)==null?void 0:ae.allTokens)||0))+"M ",1)]),e("div",Ug,[a[93]||(a[93]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",Ig," $"+g(Xt(l)),1)])])]),e("div",null,[a[97]||(a[97]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"会话窗口",-1)),l.usage&&l.usage.sessionWindow?(n(),i("div",Tg,[e("div",_g,[a[95]||(a[95]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",Sg,g(He(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",Mg,[a[96]||(a[96]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",Vg," $"+g(Nt(l.usage.sessionWindow.totalCost)),1)])])):(n(),i("div",Rg,"-"))])]),e("div",Kg,[l.platform==="claude"?(n(),i("div",zg,[le(l)&&l.claudeUsage?(n(),i("div",Pg,[e("div",jg,[e("div",Og,[a[98]||(a[98]=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",Dg,[e("div",Lg,[e("div",Eg,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.fiveHour)]),style:Ue({width:xt(l.claudeUsage.fiveHour)})},null,6)]),e("span",Ng,g($e(l.claudeUsage.fiveHour)),1)])])]),e("div",qg," 重置剩余 "+g(ft(l.claudeUsage.fiveHour)),1)]),e("div",Wg,[e("div",Gg,[a[99]||(a[99]=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",Fg,[e("div",Qg,[e("div",Bg,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.sevenDay)]),style:Ue({width:xt(l.claudeUsage.sevenDay)})},null,6)]),e("span",Hg,g($e(l.claudeUsage.sevenDay)),1)])])]),e("div",Jg," 重置剩余 "+g(ft(l.claudeUsage.sevenDay)),1)]),e("div",Yg,[e("div",Zg,[a[100]||(a[100]=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",Xg,[e("div",em,[e("div",tm,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",ct(l.claudeUsage.sevenDayOpus)]),style:Ue({width:xt(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",sm,g($e(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",am," 重置剩余 "+g(ft(l.claudeUsage.sevenDayOpus)),1)])])):!le(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(n(),i("div",rm,[e("div",lm,[e("div",om,[a[102]||(a[102]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),Fe(w,{content:"会话窗口进度不代表使用量,仅表示距离下一个5小时窗口的剩余时间",placement:"top"},{default:Tt(()=>a[101]||(a[101]=[e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600"},null,-1)])),_:1,__:[101]})]),e("span",nm,g(l.sessionWindow.progress)+"% ",1)]),e("div",im,[e("div",{class:S(["h-full transition-all duration-300",ie(l.sessionWindow.sessionWindowStatus,l)]),style:Ue({width:l.sessionWindow.progress+"%"})},null,6)]),e("div",dm,[e("span",um,g(bt(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(n(),i("span",pm," 剩余 "+g(vt(l.sessionWindow.remainingTime)),1)):(n(),i("span",gm," 已结束 "))])])):(n(),i("div",mm,"暂无统计"))])):l.platform==="openai"?(n(),i("div",ym,[l.codexUsage?(n(),i("div",xm,[e("div",cm,[e("div",fm,[e("span",bm,g(Lt("primary")),1),e("div",vm,[e("div",km,[e("div",hm,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",jt(l.codexUsage.primary)]),style:Ue({width:Dt(l.codexUsage.primary)})},null,6)]),e("span",wm,g(Ot(l.codexUsage.primary)),1)])])]),e("div",$m," 重置剩余 "+g(Et(l.codexUsage.primary)),1)]),e("div",Am,[e("div",Cm,[e("span",Um,g(Lt("secondary")),1),e("div",Im,[e("div",Tm,[e("div",_m,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",jt(l.codexUsage.secondary)]),style:Ue({width:Dt(l.codexUsage.secondary)})},null,6)]),e("span",Sm,g(Ot(l.codexUsage.secondary)),1)])])]),e("div",Mm," 重置剩余 "+g(Et(l.codexUsage.secondary)),1)])])):b("",!0),l.codexUsage?b("",!0):(n(),i("div",Vm,"暂无统计"))])):b("",!0),e("div",Rm,[a[103]||(a[103]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",Km,g(l.lastUsedAt?ue(l.lastUsedAt):"从未使用"),1)]),l.proxyConfig&&l.proxyConfig.type!=="none"?(n(),i("div",zm,[a[104]||(a[104]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Pm,g(l.proxyConfig.type.toUpperCase()),1)])):b("",!0),e("div",jm,[a[105]||(a[105]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",Om,g(l.priority||50),1)])]),e("div",Dm,[e("button",{class:S(["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:ve=>Ct(l)},[e("i",{class:S(["fas",l.schedulable?"fa-pause":"fa-play"])},null,2),U(" "+g(l.schedulable?"暂停":"启用"),1)],10,Lm),c(l)?(n(),i("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:ve=>y(l)},a[106]||(a[106]=[e("i",{class:"fas fa-chart-line"},null,-1),U(" 详情 ",-1)]),8,Em)):b("",!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:ve=>ht(l)},a[107]||(a[107]=[e("i",{class:"fas fa-edit mr-1"},null,-1),U(" 编辑 ",-1)]),8,Nm),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:ve=>At(l)},a[108]||(a[108]=[e("i",{class:"fas fa-trash"},null,-1)]),8,qm)])])}),128))])):b("",!0)]),!m.value&&ge.value.length>0?(n(),i("div",Wm,[e("div",Gm,[e("span",Fm," 共 "+g(ge.value.length)+" 条记录 ",1),e("div",Qm,[a[109]||(a[109]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"每页显示",-1)),f(e("select",{"onUpdate:modelValue":a[15]||(a[15]=l=>x.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[16]||(a[16]=l=>M.value=1)},[(n(),i(ke,null,Me(d,l=>e("option",{key:l,value:l},g(l),9,Bm)),64))],544),[[ns,x.value]]),a[110]||(a[110]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"条",-1))])]),e("div",Hm,[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:M.value===1,onClick:a[17]||(a[17]=l=>M.value--)},a[111]||(a[111]=[e("i",{class:"fas fa-chevron-left"},null,-1)]),8,Jm),e("div",Ym,[tt.value?(n(),i("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[18]||(a[18]=l=>M.value=1)}," 1 ")):b("",!0),Re.value?(n(),i("span",Zm," ... ")):b("",!0),(n(!0),i(ke,null,Me(Be.value,l=>(n(),i("button",{key:l,class:S(["rounded-md border px-3 py-1 text-xs font-medium transition-colors sm:text-sm",l===M.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:R=>M.value=l},g(l),11,Xm))),128)),it.value?(n(),i("span",ey," ... ")):b("",!0),st.value?(n(),i("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[19]||(a[19]=l=>M.value=Ce.value)},g(Ce.value),1)):b("",!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:M.value===Ce.value||Ce.value===0,onClick:a[20]||(a[20]=l=>M.value++)},a[112]||(a[112]=[e("i",{class:"fas fa-chevron-right"},null,-1)]),8,ty)])])):b("",!0),Ee.value&&(!Ve.value||Ve.value!=="ccr")?(n(),Oe(as,{key:1,onClose:kt,onPlatformChanged:a[21]||(a[21]=l=>Ve.value=l),onSuccess:Ut})):Ee.value&&Ve.value==="ccr"?(n(),Oe(rs,{key:2,onClose:kt,onSuccess:Ut})):b("",!0),Ke.value&&Ne.value&&Ne.value.platform==="ccr"?(n(),Oe(rs,{key:3,account:Ne.value,onClose:a[22]||(a[22]=l=>Ke.value=!1),onSuccess:It},null,8,["account"])):Ke.value?(n(),Oe(as,{key:4,account:Ne.value,onClose:a[23]||(a[23]=l=>Ke.value=!1),onSuccess:It},null,8,["account"])):b("",!0),Fe(is,{"cancel-text":Se(p).cancelText,"confirm-text":Se(p).confirmText,message:Se(p).message,show:Se(ce),title:Se(p).title,onCancel:Se(E),onConfirm:Se(_)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),fe.value?(n(),Oe(x0,{key:5,account:s.value||{},"generated-at":he.value,history:k.value,loading:Ie.value,overview:h.value,show:fe.value,summary:ye.value,onClose:I},null,8,["account","generated-at","history","loading","overview","show","summary"])):b("",!0)])}}},uy=Qt(sy,[["__scopeId","data-v-68135a84"]]);export{uy as default};