import{E as Js}from"./element-plus-CqiD73Lu.js";import{aP as ms,r as L,c as O,q as rt,V as Xs,o as Le,x as d,y as n,z as e,I as ke,C as z,P as u,R as ne,J as Zs,L as h,B as bt,K as _,aq as te,Q as Z,ac as re,T as ea,a5 as Pe,D as ta,_ as Fe,Y as Ke,an as ce,O as A,aa as st,aV as at,al as Te,f as et,u as tt}from"./vue-vendor-Bsazo-x0.js";import{c as G,_ as De,s as j,u as sa}from"./index-CYxiKWcr.js";import{Q as Ge}from"./vendor-Dr8jvgFu.js";import{_ as aa}from"./WindowCountdown-BTXjZ8Dc.js";import{C as Tt}from"./CustomDropdown-BJdhsvuX.js";const Ut=ms("clients",{state:()=>({supportedClients:[],loading:!1,error:null}),actions:{async loadSupportedClients(){if(this.supportedClients.length>0)return this.supportedClients;this.loading=!0,this.error=null;try{const w=await G.get("/admin/supported-clients");return w.success?this.supportedClients=w.data||[]:(this.error=w.message||"加载支持的客户端失败",console.error("Failed to load supported clients:",this.error)),this.supportedClients}catch(w){return this.error=w.message||"加载支持的客户端失败",console.error("Error loading supported clients:",w),[]}finally{this.loading=!1}}}}),Pt=ms("apiKeys",()=>{const w=L([]),N=L(!1),c=L(null),P=L("all"),B=L(""),$=L("asc"),U=async()=>{N.value=!0,c.value=null;try{const T=await G.get("/admin/api-keys");if(T.success)w.value=T.data||[];else throw new Error(T.message||"获取API Keys失败")}catch(T){throw c.value=T.message,T}finally{N.value=!1}};return{apiKeys:w,loading:N,error:c,statsTimeRange:P,sortBy:B,sortOrder:$,fetchApiKeys:U,createApiKey:async T=>{N.value=!0,c.value=null;try{const W=await G.post("/admin/api-keys",T);if(W.success)return await U(),W.data;throw new Error(W.message||"创建API Key失败")}catch(W){throw c.value=W.message,W}finally{N.value=!1}},updateApiKey:async(T,W)=>{N.value=!0,c.value=null;try{const I=await G.put(`/admin/api-keys/${T}`,W);if(I.success)return await U(),I;throw new Error(I.message||"更新API Key失败")}catch(I){throw c.value=I.message,I}finally{N.value=!1}},toggleApiKey:async T=>{N.value=!0,c.value=null;try{const W=await G.put(`/admin/api-keys/${T}/toggle`);if(W.success)return await U(),W;throw new Error(W.message||"切换状态失败")}catch(W){throw c.value=W.message,W}finally{N.value=!1}},renewApiKey:async(T,W)=>{N.value=!0,c.value=null;try{const I=await G.put(`/admin/api-keys/${T}`,W);if(I.success)return await U(),I;throw new Error(I.message||"续期失败")}catch(I){throw c.value=I.message,I}finally{N.value=!1}},deleteApiKey:async T=>{N.value=!0,c.value=null;try{const W=await G.delete(`/admin/api-keys/${T}`);if(W.success)return await U(),W;throw new Error(W.message||"删除失败")}catch(W){throw c.value=W.message,W}finally{N.value=!1}},fetchApiKeyStats:async(T,W="all")=>{try{const I=await G.get(`/admin/api-keys/${T}/stats`,{params:{timeRange:W}});if(I.success)return I.stats;throw new Error(I.message||"获取统计失败")}catch(I){return console.error("获取API Key统计失败:",I),null}},fetchTags:async()=>{try{const T=await G.get("/admin/api-keys/tags");if(T.success)return T.data||[];throw new Error(T.message||"获取标签失败")}catch(T){return console.error("获取标签失败:",T),[]}},sortApiKeys:T=>{B.value===T?$.value=$.value==="asc"?"desc":"asc":(B.value=T,$.value="asc")},reset:()=>{w.value=[],N.value=!1,c.value=null,P.value="all",B.value="",$.value="asc"}}}),ra={class:"flex-shrink-0 border-b border-gray-200 p-3 dark:border-gray-600"},oa={class:"relative"},la={class:"custom-scrollbar flex-1 overflow-y-auto"},na={key:0,class:"border-b border-gray-200 dark:border-gray-600"},ia=["onClick"],da={class:"text-gray-700 dark:text-gray-300"},ua={key:0,class:"ml-2 text-xs text-gray-400 dark:text-gray-500"},ca={class:"text-gray-700 dark:text-gray-300"},ga={key:1},pa=["onClick"],ma={class:"flex items-center justify-between"},xa={class:"text-gray-700 dark:text-gray-300"},ya={class:"text-xs text-gray-500 dark:text-gray-400"},fa={key:2},ba={class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"},va=["onClick"],ka={class:"flex items-center justify-between"},wa={class:"text-gray-700 dark:text-gray-300"},ha={class:"text-xs text-gray-400 dark:text-gray-500"},Aa={key:3},$a=["onClick"],Ca={class:"flex items-center justify-between"},Ia={class:"text-gray-700 dark:text-gray-300"},Ka={class:"text-xs text-gray-400 dark:text-gray-500"},La={key:4},Da=["onClick"],_a={class:"flex items-center justify-between"},Ta={class:"text-gray-700 dark:text-gray-300"},Sa={class:"text-xs text-gray-400 dark:text-gray-500"},Ua={key:5},Pa=["onClick"],Ma={class:"flex items-center justify-between"},Ra={class:"text-gray-700 dark:text-gray-300"},Va={class:"text-xs text-gray-400 dark:text-gray-500"},Ea={key:6,class:"px-4 py-8 text-center text-gray-500 dark:text-gray-400"},Oa={__name:"AccountSelector",props:{modelValue:{type:String,default:""},platform:{type:String,required:!0,validator:w=>["claude","gemini","openai","bedrock","droid"].includes(w)},accounts:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择账号"},defaultOptionText:{type:String,default:"使用共享账号池"},specialOptions:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(w,{emit:N}){const c=w,P=N,B=L(!1),$=L(""),U=L(null),F=L(null),S=L({}),Q=L(null),H=L(""),k=O(()=>c.specialOptions||[]),D=O(()=>{const g=k.value.find(p=>p.value===c.modelValue);if(g)return g.label;if(!c.modelValue)return c.defaultOptionText;if(c.modelValue.startsWith("group:")){const p=c.modelValue.substring(6),l=c.groups.find(y=>y.id===p);return l?`${l.name} (${l.memberCount||0} 个成员)`:""}if(c.modelValue.startsWith("console:")){const p=c.modelValue.substring(8),l=c.accounts.find(y=>y.id===p&&y.platform==="claude-console");return l?`${l.name} (${m(l)})`:""}if(c.modelValue.startsWith("responses:")){const p=c.modelValue.substring(10),l=c.accounts.find(y=>y.id===p&&y.platform==="openai-responses");return l?`${l.name} (${m(l)})`:""}if(c.modelValue.startsWith("api:")){const p=c.modelValue.substring(4),l=c.accounts.find(y=>y.id===p&&y.platform==="gemini-api");return l?`${l.name} (${m(l)})`:""}const C=c.accounts.find(p=>p.id===c.modelValue);return C?`${C.name} (${m(C)})`:""}),m=g=>{if(!g)return"未知";if(!(g.isActive==="true"||g.isActive===!0))switch(g.status){case"unauthorized":return"未授权";case"error":return"Token错误";case"created":return"待验证";case"rate_limited":return"限流中";case"quota_exceeded":return"额度超限";default:return"异常"}return g.status==="rate_limited"?"限流中":"正常"},s=O(()=>[...c.accounts].sort((g,C)=>{const p=new Date(g.createdAt||0);return new Date(C.createdAt||0)-p})),V=O(()=>{let g=c.groups.filter(C=>C.platform?C.platform===c.platform:!0);if($.value){const C=$.value.toLowerCase();g=g.filter(p=>p.name.toLowerCase().includes(C))}return g}),T=O(()=>{let g=[];if(c.platform==="claude"?g=s.value.filter(C=>C.platform==="claude-oauth"):c.platform==="openai"?g=s.value.filter(C=>C.platform==="openai"):c.platform==="droid"?g=s.value.filter(C=>C.platform==="droid"):c.platform==="gemini"?g=s.value.filter(C=>C.platform==="gemini"):g=s.value.filter(C=>!["claude-oauth","claude-console","openai-responses","gemini-api"].includes(C.platform)),$.value){const C=$.value.toLowerCase();g=g.filter(p=>p.name.toLowerCase().includes(C))}return g}),W=O(()=>{if(c.platform!=="claude")return[];let g=s.value.filter(C=>C.platform==="claude-console");if($.value){const C=$.value.toLowerCase();g=g.filter(p=>p.name.toLowerCase().includes(C))}return g}),I=O(()=>{if(c.platform!=="openai")return[];let g=s.value.filter(C=>C.platform==="openai-responses");if($.value){const C=$.value.toLowerCase();g=g.filter(p=>p.name.toLowerCase().includes(C))}return g}),K=O(()=>{if(c.platform!=="gemini")return[];let g=s.value.filter(C=>C.platform==="gemini-api");if($.value){const C=$.value.toLowerCase();g=g.filter(p=>p.name.toLowerCase().includes(C))}return g}),se=O(()=>V.value.length>0||T.value.length>0||W.value.length>0||I.value.length>0||K.value.length>0),ie=g=>{if(!g)return"";const C=new Date(g),l=(new Date-C)/(1e3*60*60);return l<24?"今天创建":l<48?"昨天创建":l<168?`${Math.floor(l/24)} 天前`:C.toLocaleDateString("zh-CN",{month:"2-digit",day:"2-digit"})},ge=()=>{if(!B.value||!F.value||!Q.value)return;const g=Q.value;if(!g)return;const C=g.getBoundingClientRect(),p=window.innerHeight,l=window.innerWidth,y=p-C.bottom,ue=C.top,fe=8,oe=y-fe,we=ue-fe;let xe=!1,X=oe;H.value==="above"&&we>=150?(xe=!0,X=we):H.value==="below"&&oe>=150?(xe=!1,X=oe):we>oe&&oe<200&&(xe=!0,X=we),H.value=xe?"above":"below";let Y=C.left;const $e=C.width;Y+$e>l-fe&&(Y=l-$e-fe),Y{if(!B.value&&Q.value){const g=Q.value.getBoundingClientRect(),p=window.innerHeight-g.bottom,l=8;S.value={position:"fixed",left:`${g.left}px`,width:`${g.width}px`,maxHeight:`${Math.min(p-l,400)}px`,top:`${g.bottom}px`}}B.value=!B.value,B.value&&ta(()=>{var g;ge(),(g=U.value)==null||g.focus()})},me=g=>{P("update:modelValue",g||""),B.value=!1,$.value=""},Ae=()=>{},f=()=>{var g;$.value="",(g=U.value)==null||g.focus()},o=g=>{var C,p;!((C=Q.value)!=null&&C.contains(g.target))&&!((p=F.value)!=null&&p.contains(g.target))&&(B.value=!1)},i=()=>{B.value&&ge()};return rt(()=>{document.addEventListener("click",o),window.addEventListener("scroll",i,!0),window.addEventListener("resize",ge)}),Xs(()=>{document.removeEventListener("click",o),window.removeEventListener("scroll",i,!0),window.removeEventListener("resize",ge)}),Le(B,g=>{g||($.value="",H.value="")}),(g,C)=>(n(),d("div",{ref_key:"triggerRef",ref:Q,class:"relative"},[e("div",{class:z(["form-input flex w-full cursor-pointer items-center justify-between border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"opacity-50":w.disabled}]),onClick:C[0]||(C[0]=p=>!w.disabled&&be())},[e("span",{class:z(w.modelValue?"text-gray-900 dark:text-gray-200":"text-gray-500 dark:text-gray-400")},u(D.value),3),e("i",{class:z(["fas fa-chevron-down text-gray-400 transition-transform duration-200 dark:text-gray-500",{"rotate-180":B.value}])},null,2)],2),(n(),ke(Pe,{to:"body"},[ne(ea,{"enter-active-class":"transition ease-out duration-100","enter-from-class":"transform opacity-0 scale-95","enter-to-class":"transform opacity-100 scale-100","leave-active-class":"transition ease-in duration-75","leave-from-class":"transform opacity-100 scale-100","leave-to-class":"transform opacity-0 scale-95"},{default:Zs(()=>[B.value?(n(),d("div",{key:0,ref_key:"dropdownRef",ref:F,class:"absolute z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:bt(S.value)},[e("div",ra,[e("div",oa,[_(e("input",{ref_key:"searchInput",ref:U,"onUpdate:modelValue":C[1]||(C[1]=p=>$.value=p),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"搜索账号名称...",style:{"padding-left":"40px","padding-right":"36px"},type:"text",onInput:Ae},null,544),[[te,$.value]]),C[4]||(C[4]=e("i",{class:"fas fa-search pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 dark:text-gray-500"},null,-1)),$.value?(n(),d("button",{key:0,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:f},C[3]||(C[3]=[e("i",{class:"fas fa-times text-sm"},null,-1)]))):h("",!0)])]),e("div",la,[k.value.length>0?(n(),d("div",na,[(n(!0),d(Z,null,re(k.value,p=>(n(),d("div",{key:`special-${p.value}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===p.value}]),onClick:l=>me(p.value)},[e("span",da,u(p.label),1),p.description?(n(),d("span",ua,u(p.description),1)):h("",!0)],10,ia))),128))])):h("",!0),e("div",{class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":!w.modelValue}]),onClick:C[2]||(C[2]=p=>me(null))},[e("span",ca,u(w.defaultOptionText),1)],2),V.value.length>0?(n(),d("div",ga,[C[5]||(C[5]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," 调度分组 ",-1)),(n(!0),d(Z,null,re(V.value,p=>(n(),d("div",{key:`group:${p.id}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===`group:${p.id}`}]),onClick:l=>me(`group:${p.id}`)},[e("div",ma,[e("span",xa,u(p.name),1),e("span",ya,u(p.memberCount||0)+" 个成员",1)])],10,pa))),128))])):h("",!0),T.value.length>0?(n(),d("div",fa,[e("div",ba,u(w.platform==="claude"?"Claude OAuth 专属账号":w.platform==="openai"?"OpenAI 专属账号":w.platform==="droid"?"Droid 专属账号":w.platform==="gemini"?"Gemini OAuth 专属账号":"OAuth 专属账号"),1),(n(!0),d(Z,null,re(T.value,p=>(n(),d("div",{key:p.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===p.id}]),onClick:l=>me(p.id)},[e("div",ka,[e("div",null,[e("span",wa,u(p.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",p.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":p.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},u(m(p)),3)]),e("span",ha,u(ie(p.createdAt)),1)])],10,va))),128))])):h("",!0),w.platform==="claude"&&W.value.length>0?(n(),d("div",Aa,[C[6]||(C[6]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Claude Console 专属账号 ",-1)),(n(!0),d(Z,null,re(W.value,p=>(n(),d("div",{key:p.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===`console:${p.id}`}]),onClick:l=>me(`console:${p.id}`)},[e("div",Ca,[e("div",null,[e("span",Ia,u(p.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",p.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":p.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},u(m(p)),3)]),e("span",Ka,u(ie(p.createdAt)),1)])],10,$a))),128))])):h("",!0),w.platform==="openai"&&I.value.length>0?(n(),d("div",La,[C[7]||(C[7]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," OpenAI-Responses 专属账号 ",-1)),(n(!0),d(Z,null,re(I.value,p=>(n(),d("div",{key:p.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===`responses:${p.id}`}]),onClick:l=>me(`responses:${p.id}`)},[e("div",_a,[e("div",null,[e("span",Ta,u(p.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",p.isActive==="true"||p.isActive===!0?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":p.status==="rate_limited"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},u(m(p)),3)]),e("span",Sa,u(ie(p.createdAt)),1)])],10,Da))),128))])):h("",!0),w.platform==="gemini"&&K.value.length>0?(n(),d("div",Ua,[C[8]||(C[8]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Gemini-API 专属账号 ",-1)),(n(!0),d(Z,null,re(K.value,p=>(n(),d("div",{key:p.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":w.modelValue===`api:${p.id}`}]),onClick:l=>me(`api:${p.id}`)},[e("div",Ma,[e("div",null,[e("span",Ra,u(p.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",p.isActive==="true"||p.isActive===!0?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":p.status==="rate_limited"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},u(m(p)),3)]),e("span",Va,u(ie(p.createdAt)),1)])],10,Pa))),128))])):h("",!0),$.value&&!se.value?(n(),d("div",Ea,C[9]||(C[9]=[e("i",{class:"fas fa-search mb-2 text-2xl"},null,-1),e("p",{class:"text-sm"},"没有找到匹配的账号",-1)]))):h("",!0)])],4)):h("",!0)]),_:1})]))],512))}},Ce=De(Oa,[["__scopeId","data-v-32c162ec"]]),ja={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Ga={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6"},qa={class:"mb-4 flex items-center justify-between"},za={class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-3 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20 sm:p-4"},Fa={class:"flex items-center gap-3 sm:gap-4"},Wa={class:"flex cursor-pointer items-center"},Ba={class:"flex cursor-pointer items-center"},Na={key:0,class:"mt-3"},Ha={class:"flex items-center gap-4"},Ya={class:"flex-1"},Qa={class:"flex items-center gap-2"},Ja={class:"mt-2 flex items-start text-xs text-amber-600 dark:text-amber-400"},Xa=["placeholder"],Za={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},er={class:"space-y-4"},tr={key:0},sr={class:"flex flex-wrap gap-2"},ar=["onClick"],rr={key:1},or={class:"flex flex-wrap gap-2"},lr=["onClick"],nr={class:"flex gap-2"},ir=["onKeypress"],dr={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},ur={class:"space-y-2"},cr={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},gr={class:"space-y-2"},pr={class:"flex gap-2"},mr={class:"space-y-2"},xr={class:"flex gap-2"},yr={class:"space-y-2"},fr={class:"flex gap-2"},br={class:"mb-3 rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800"},vr={class:"flex items-center gap-4"},kr={class:"flex cursor-pointer items-center"},wr={class:"flex cursor-pointer items-center"},hr={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Ar={key:0},$r={key:1},Cr={key:0},Ir={key:0,class:"mt-3"},Kr=["min"],Lr={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Dr={key:1},_r={class:"flex items-center gap-2"},Tr=["max","placeholder"],Sr={class:"mt-2 flex flex-wrap gap-2"},Ur=["onClick"],Pr={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Mr={class:"flex gap-4"},Rr={class:"flex cursor-pointer items-center"},Vr={class:"flex cursor-pointer items-center"},Er={class:"flex cursor-pointer items-center"},Or={class:"flex cursor-pointer items-center"},jr={class:"flex cursor-pointer items-center"},Gr={class:"mb-2 flex items-center justify-between"},qr=["disabled"],zr={class:"grid grid-cols-1 gap-3"},Fr={class:"mb-2 flex items-center"},Wr={key:0,class:"space-y-3"},Br={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2"},Nr=["onClick"],Hr={key:0,class:"text-sm text-gray-400"},Yr={class:"space-y-3"},Qr={class:"flex flex-wrap gap-2"},Jr=["onClick"],Xr={key:0,class:"text-sm italic text-gray-400"},Zr={class:"flex gap-2"},eo=["onKeydown"],to={class:"mb-2 flex items-center"},so={key:0,class:"rounded-lg border border-green-200 bg-green-50 p-3 dark:border-green-700 dark:bg-green-900/20"},ao={class:"space-y-1"},ro=["id","value"],oo=["for"],lo={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},no={class:"block text-xs text-gray-500 dark:text-gray-400"},io={class:"flex gap-3 pt-2"},uo=["disabled"],co={key:0,class:"loading-spinner mr-2"},go={key:1,class:"fas fa-plus mr-2"},po={__name:"CreateApiKeyModal",props:{accounts:{type:Object,default:()=>({claude:[],gemini:[],openai:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]})}},emits:["close","success","batch-success"],setup(w,{emit:N}){const c=w,P=N,B=Ut(),$=Pt(),U=L(!1),F=L(!1),S=L({claude:[],gemini:[],openai:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]}),Q=L({name:""}),H=L(""),k=L([]),D=O(()=>k.value.filter(p=>!s.tags.includes(p))),m=L([]),s=Fe({createType:"single",batchCount:10,name:"",description:"",rateLimitWindow:"",rateLimitRequests:"",rateLimitCost:"",concurrencyLimit:"",dailyCostLimit:"",totalCostLimit:"",weeklyOpusCostLimit:"",expireDuration:"",customExpireDate:"",expiresAt:null,expirationMode:"fixed",activationDays:30,activationUnit:"days",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",droidAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[]});rt(async()=>{if(m.value=await B.loadSupportedClients(),k.value=await $.fetchTags(),c.accounts){const p=[];c.accounts.openai&&c.accounts.openai.forEach(l=>{p.push({...l,platform:"openai"})}),c.accounts.openaiResponses&&c.accounts.openaiResponses.forEach(l=>{p.push({...l,platform:"openai-responses"})}),S.value={claude:c.accounts.claude||[],gemini:c.accounts.gemini||[],openai:p,bedrock:c.accounts.bedrock||[],droid:(c.accounts.droid||[]).map(l=>({...l,platform:"droid"})),claudeGroups:c.accounts.claudeGroups||[],geminiGroups:c.accounts.geminiGroups||[],openaiGroups:c.accounts.openaiGroups||[],droidGroups:c.accounts.droidGroups||[]}}});const V=async()=>{var p,l;F.value=!0;try{const[y,ue,fe,oe,we,xe,X,Y]=await Promise.all([G.get("/admin/claude-accounts"),G.get("/admin/claude-console-accounts"),G.get("/admin/gemini-accounts"),G.get("/admin/openai-accounts"),G.get("/admin/openai-responses-accounts"),G.get("/admin/bedrock-accounts"),G.get("/admin/droid-accounts"),G.get("/admin/account-groups")]),$e=[];y.success&&((p=y.data)==null||p.forEach(J=>{$e.push({...J,platform:"claude-oauth",isDedicated:J.accountType==="dedicated"})})),ue.success&&((l=ue.data)==null||l.forEach(J=>{$e.push({...J,platform:"claude-console",isDedicated:J.accountType==="dedicated"})})),S.value.claude=$e,fe.success&&(S.value.gemini=(fe.data||[]).map(J=>({...J,isDedicated:J.accountType==="dedicated"})));const We=[];if(oe.success&&(oe.data||[]).forEach(J=>{We.push({...J,platform:"openai",isDedicated:J.accountType==="dedicated"})}),we.success&&(we.data||[]).forEach(J=>{We.push({...J,platform:"openai-responses",isDedicated:J.accountType==="dedicated"})}),S.value.openai=We,xe.success&&(S.value.bedrock=(xe.data||[]).map(J=>({...J,isDedicated:J.accountType==="dedicated"}))),X.success&&(S.value.droid=(X.data||[]).map(J=>({...J,platform:"droid",isDedicated:J.accountType==="dedicated"}))),Y.success){const J=Y.data||[];S.value.claudeGroups=J.filter(Me=>Me.platform==="claude"),S.value.geminiGroups=J.filter(Me=>Me.platform==="gemini"),S.value.openaiGroups=J.filter(Me=>Me.platform==="openai"),S.value.droidGroups=J.filter(Me=>Me.platform==="droid")}j("账号列表已刷新","success")}catch{j("刷新账号列表失败","error")}finally{F.value=!1}},T=O(()=>{const p=new Date;return p.setMinutes(p.getMinutes()+1),p.toISOString().slice(0,16)}),W=()=>{if(!s.expireDuration){s.expiresAt=null;return}if(s.expireDuration==="custom")return;const p=new Date,y=s.expireDuration.match(/(\d+)([dhmy])/);if(y){const[,ue,fe]=y,oe=parseInt(ue);switch(fe){case"d":p.setDate(p.getDate()+oe);break;case"h":p.setHours(p.getHours()+oe);break;case"m":p.setMonth(p.getMonth()+oe);break;case"y":p.setFullYear(p.getFullYear()+oe);break}s.expiresAt=p.toISOString()}},I=()=>{s.customExpireDate&&(s.expiresAt=new Date(s.customExpireDate).toISOString())},K=p=>new Date(p).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),se=()=>{s.modelInput&&!s.restrictedModels.includes(s.modelInput)&&(s.restrictedModels.push(s.modelInput),s.modelInput="")},ie=p=>{s.restrictedModels.splice(p,1)},ge=L(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),be=O(()=>ge.value.filter(p=>!s.restrictedModels.includes(p))),me=p=>{s.restrictedModels.includes(p)||s.restrictedModels.push(p)},Ae=()=>{if(H.value&&H.value.trim()){const p=H.value.trim();s.tags.includes(p)||s.tags.push(p),H.value=""}},f=p=>{s.tags.includes(p)||s.tags.push(p)},o=p=>{s.tags.splice(p,1)},i=()=>s.activationUnit==="hours"?[{value:1,label:"1小时"},{value:3,label:"3小时"},{value:6,label:"6小时"},{value:12,label:"12小时"}]:[{value:30,label:"30天"},{value:90,label:"90天"},{value:180,label:"180天"},{value:365,label:"365天"}],g=()=>{s.activationUnit==="hours"?s.activationDays>24&&(s.activationDays=24):s.activationDays<1&&(s.activationDays=1)},C=async()=>{if(Q.value.name="",!s.name||!s.name.trim()){Q.value.name="请输入API Key名称";return}if(s.createType==="batch"&&(!s.batchCount||s.batchCount<2||s.batchCount>500)){j("批量创建数量必须在 2-500 之间","error");return}if(s.rateLimitWindow&&(!s.rateLimitCost||parseFloat(s.rateLimitCost)===0)){let p=!1;if(window.showConfirm?p=await window.showConfirm("费用限制提醒",`您设置了时间窗口但费用限制为0,这意味着不会有费用限制。 是否继续?`,"继续创建","返回修改"):p=confirm(`您设置了时间窗口但费用限制为0,这意味着不会有费用限制。 是否继续?`),!p)return}U.value=!0;try{const p={description:s.description||void 0,tokenLimit:0,rateLimitWindow:s.rateLimitWindow!==""&&s.rateLimitWindow!==null?parseInt(s.rateLimitWindow):null,rateLimitRequests:s.rateLimitRequests!==""&&s.rateLimitRequests!==null?parseInt(s.rateLimitRequests):null,rateLimitCost:s.rateLimitCost!==""&&s.rateLimitCost!==null?parseFloat(s.rateLimitCost):null,concurrencyLimit:s.concurrencyLimit!==""&&s.concurrencyLimit!==null?parseInt(s.concurrencyLimit):0,dailyCostLimit:s.dailyCostLimit!==""&&s.dailyCostLimit!==null?parseFloat(s.dailyCostLimit):0,totalCostLimit:s.totalCostLimit!==""&&s.totalCostLimit!==null?parseFloat(s.totalCostLimit):0,weeklyOpusCostLimit:s.weeklyOpusCostLimit!==""&&s.weeklyOpusCostLimit!==null?parseFloat(s.weeklyOpusCostLimit):0,expiresAt:s.expirationMode==="fixed"&&s.expiresAt||void 0,expirationMode:s.expirationMode,activationDays:s.expirationMode==="activation"?s.activationDays:void 0,activationUnit:s.expirationMode==="activation"?s.activationUnit:void 0,permissions:s.permissions,tags:s.tags.length>0?s.tags:void 0,enableModelRestriction:s.enableModelRestriction,restrictedModels:s.restrictedModels,enableClientRestriction:s.enableClientRestriction,allowedClients:s.allowedClients};if(s.claudeAccountId&&(s.claudeAccountId.startsWith("console:")?(p.claudeConsoleAccountId=s.claudeAccountId.substring(8),delete p.claudeAccountId):(p.claudeAccountId=s.claudeAccountId,delete p.claudeConsoleAccountId)),s.geminiAccountId&&(p.geminiAccountId=s.geminiAccountId),s.openaiAccountId&&(p.openaiAccountId=s.openaiAccountId),s.bedrockAccountId&&(p.bedrockAccountId=s.bedrockAccountId),s.droidAccountId&&(p.droidAccountId=s.droidAccountId),s.createType==="single"){const l={...p,name:s.name},y=await G.post("/admin/api-keys",l);y.success?(j("API Key 创建成功","success"),P("success",y.data),P("close")):j(y.message||"创建失败","error")}else{const l={...p,createType:"batch",baseName:s.name,count:s.batchCount},y=await G.post("/admin/api-keys/batch",l);y.success?(j(`成功创建 ${y.data.length} 个 API Key`,"success"),P("batch-success",y.data),P("close")):j(y.message||"批量创建失败","error")}}catch{j("创建失败","error")}finally{U.value=!1}};return(p,l)=>(n(),ke(Pe,{to:"body"},[e("div",ja,[e("div",Ga,[e("div",qa,[l[49]||(l[49]=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-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 创建新的 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:l[0]||(l[0]=y=>p.$emit("close"))},l[48]||(l[48]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4",onSubmit:Ke(C,["prevent"])},[e("div",za,[e("div",{class:z(["flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",s.createType==="batch"?"mb-3":""])},[l[52]||(l[52]=e("label",{class:"flex h-full items-center text-xs font-semibold text-gray-700 dark:text-gray-300 sm:text-sm"},"创建类型",-1)),e("div",Fa,[e("label",Wa,[_(e("input",{"onUpdate:modelValue":l[1]||(l[1]=y=>s.createType=y),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"single"},null,512),[[ce,s.createType]]),l[50]||(l[50]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-key mr-1 text-xs"}),A(" 单个创建 ")],-1))]),e("label",Ba,[_(e("input",{"onUpdate:modelValue":l[2]||(l[2]=y=>s.createType=y),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"batch"},null,512),[[ce,s.createType]]),l[51]||(l[51]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-layer-group mr-1 text-xs"}),A(" 批量创建 ")],-1))])])],2),s.createType==="batch"?(n(),d("div",Na,[e("div",Ha,[e("div",Ya,[l[54]||(l[54]=e("label",{class:"mb-1 block text-xs font-medium text-gray-600 dark:text-gray-400"},"创建数量",-1)),e("div",Qa,[_(e("input",{"onUpdate:modelValue":l[3]||(l[3]=y=>s.batchCount=y),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"500",min:"2",placeholder:"输入数量 (2-500)",required:"",type:"number"},null,512),[[te,s.batchCount,void 0,{number:!0}]]),l[53]||(l[53]=e("div",{class:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400"}," 最大支持 500 个 ",-1))])])]),e("p",Ja,[l[55]||(l[55]=e("i",{class:"fas fa-info-circle mr-1 mt-0.5 flex-shrink-0"},null,-1)),e("span",null,"批量创建时,每个 Key 的名称会自动添加序号后缀,例如:"+u(s.name||"MyKey")+"_1, "+u(s.name||"MyKey")+"_2 ...",1)])])):h("",!0)]),e("div",null,[l[56]||(l[56]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-2 sm:text-sm"},[A("名称 "),e("span",{class:"text-red-500"},"*")],-1)),e("div",null,[_(e("input",{"onUpdate:modelValue":l[4]||(l[4]=y=>s.name=y),class:z(["form-input flex-1 border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":Q.value.name}]),placeholder:s.createType==="batch"?"输入基础名称(将自动添加序号)":"为您的 API Key 取一个名称",required:"",type:"text",onInput:l[5]||(l[5]=y=>Q.value.name="")},null,42,Xa),[[te,s.name]])]),Q.value.name?(n(),d("p",Za,u(Q.value.name),1)):h("",!0)]),e("div",null,[l[64]||(l[64]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"标签",-1)),e("div",er,[s.tags.length>0?(n(),d("div",tr,[l[58]||(l[58]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",sr,[(n(!0),d(Z,null,re(s.tags,(y,ue)=>(n(),d("span",{key:"selected-"+ue,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[A(u(y)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:fe=>o(ue)},l[57]||(l[57]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,ar)]))),128))])])):h("",!0),D.value.length>0?(n(),d("div",rr,[l[60]||(l[60]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",or,[(n(!0),d(Z,null,re(D.value,y=>(n(),d("button",{key:"available-"+y,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:ue=>f(y)},[l[59]||(l[59]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),A(" "+u(y),1)],8,lr))),128))])])):h("",!0),e("div",null,[l[62]||(l[62]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",nr,[_(e("input",{"onUpdate:modelValue":l[6]||(l[6]=y=>H.value=y),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",onKeypress:st(Ke(Ae,["prevent"]),["enter"])},null,40,ir),[[te,H.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:Ae},l[61]||(l[61]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),l[63]||(l[63]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",dr,[l[72]||(l[72]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",ur,[e("div",cr,[e("div",null,[l[65]||(l[65]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),_(e("input",{"onUpdate:modelValue":l[7]||(l[7]=y=>s.rateLimitWindow=y),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[te,s.rateLimitWindow]]),l[66]||(l[66]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[l[67]||(l[67]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),_(e("input",{"onUpdate:modelValue":l[8]||(l[8]=y=>s.rateLimitRequests=y),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[te,s.rateLimitRequests]]),l[68]||(l[68]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[l[69]||(l[69]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"费用限制 (美元)",-1)),_(e("input",{"onUpdate:modelValue":l[9]||(l[9]=y=>s.rateLimitCost=y),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"无限制",step:"0.01",type:"number"},null,512),[[te,s.rateLimitCost]]),l[70]||(l[70]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大费用",-1))])]),l[71]||(l[71]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),A(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),A(" 时间窗口=1,费用=0.1 → 每分钟最多$0.1费用")]),e("div",null,[e("strong",null,"示例3:"),A(" 窗口=30,请求=50,费用=5 → 每30分钟50次请求且不超$5费用 ")])])],-1))])]),e("div",null,[l[74]||(l[74]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",gr,[e("div",pr,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[10]||(l[10]=y=>s.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[11]||(l[11]=y=>s.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[12]||(l[12]=y=>s.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[13]||(l[13]=y=>s.dailyCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":l[14]||(l[14]=y=>s.dailyCostLimit=y),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:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.dailyCostLimit]]),l[73]||(l[73]=e("p",{class:"dark:text灰-400 text-xs text-gray-500"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[l[76]||(l[76]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"总费用限制 (美元)",-1)),e("div",mr,[e("div",xr,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[15]||(l[15]=y=>s.totalCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[16]||(l[16]=y=>s.totalCostLimit="500")}," $500 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[17]||(l[17]=y=>s.totalCostLimit="1000")}," $1000 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[18]||(l[18]=y=>s.totalCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":l[19]||(l[19]=y=>s.totalCostLimit=y),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:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.totalCostLimit]]),l[75]||(l[75]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 的累计总费用限制,达到限制后将拒绝所有后续请求,0 或留空表示无限制 ",-1))])]),e("div",null,[l[78]||(l[78]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Opus 模型周费用限制 (美元)",-1)),e("div",yr,[e("div",fr,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[20]||(l[20]=y=>s.weeklyOpusCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[21]||(l[21]=y=>s.weeklyOpusCostLimit="500")}," $500 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[22]||(l[22]=y=>s.weeklyOpusCostLimit="1000")}," $1000 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[23]||(l[23]=y=>s.weeklyOpusCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":l[24]||(l[24]=y=>s.weeklyOpusCostLimit=y),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:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.weeklyOpusCostLimit]]),l[77]||(l[77]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置 Opus 模型的周费用限制(周一到周日),仅限 Claude 官方账户,0 或留空表示无限制 ",-1))])]),e("div",null,[l[79]||(l[79]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制 (可选)",-1)),_(e("input",{"onUpdate:modelValue":l[25]||(l[25]=y=>s.concurrencyLimit=y),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:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[te,s.concurrencyLimit]]),l[80]||(l[80]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数,0 或留空表示无限制 ",-1))]),e("div",null,[l[81]||(l[81]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注 (可选)",-1)),_(e("textarea",{"onUpdate:modelValue":l[26]||(l[26]=y=>s.description=y),class:"form-input w-full resize-none border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"描述此 API Key 的用途...",rows:"2"},null,512),[[te,s.description]])]),e("div",null,[l[89]||(l[89]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"过期设置",-1)),e("div",br,[e("div",vr,[e("label",kr,[_(e("input",{"onUpdate:modelValue":l[27]||(l[27]=y=>s.expirationMode=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"fixed"},null,512),[[ce,s.expirationMode]]),l[82]||(l[82]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"固定时间过期",-1))]),e("label",wr,[_(e("input",{"onUpdate:modelValue":l[28]||(l[28]=y=>s.expirationMode=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"activation"},null,512),[[ce,s.expirationMode]]),l[83]||(l[83]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"首次使用后激活",-1))])]),e("p",hr,[s.expirationMode==="fixed"?(n(),d("span",Ar,l[84]||(l[84]=[e("i",{class:"fas fa-info-circle mr-1"},null,-1),A(" 固定时间模式:Key 创建后立即生效,按设定时间过期(支持小时和天数) ",-1)]))):(n(),d("span",$r,l[85]||(l[85]=[e("i",{class:"fas fa-info-circle mr-1"},null,-1),A(" 激活模式:Key 首次使用时激活,激活后按设定时间过期(支持小时和天数,适合批量销售) ",-1)])))])]),s.expirationMode==="fixed"?(n(),d("div",Cr,[_(e("select",{"onUpdate:modelValue":l[29]||(l[29]=y=>s.expireDuration=y),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:W},l[86]||(l[86]=[e("option",{value:""},"永不过期",-1),e("option",{value:"1h"},"1 小时",-1),e("option",{value:"3h"},"3 小时",-1),e("option",{value:"6h"},"6 小时",-1),e("option",{value:"12h"},"12 小时",-1),e("option",{value:"1d"},"1 天",-1),e("option",{value:"7d"},"7 天",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[at,s.expireDuration]]),s.expireDuration==="custom"?(n(),d("div",Ir,[_(e("input",{"onUpdate:modelValue":l[30]||(l[30]=y=>s.customExpireDate=y),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:T.value,type:"datetime-local",onChange:I},null,40,Kr),[[te,s.customExpireDate]])])):h("",!0),s.expiresAt?(n(),d("p",Lr," 将于 "+u(K(s.expiresAt))+" 过期 ",1)):h("",!0)])):(n(),d("div",Dr,[e("div",_r,[_(e("input",{"onUpdate:modelValue":l[31]||(l[31]=y=>s.activationDays=y),class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",max:s.activationUnit==="hours"?8760:3650,min:"1",placeholder:s.activationUnit==="hours"?"输入小时数":"输入天数",type:"number"},null,8,Tr),[[te,s.activationDays,void 0,{number:!0}]]),_(e("select",{"onUpdate:modelValue":l[32]||(l[32]=y=>s.activationUnit=y),class:"form-input w-20 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:g},l[87]||(l[87]=[e("option",{value:"hours"},"小时",-1),e("option",{value:"days"},"天",-1)]),544),[[at,s.activationUnit]])]),e("div",Sr,[(n(!0),d(Z,null,re(i(),y=>(n(),d("button",{key:y.value,class:"rounded-md border border-gray-300 px-3 py-1 text-xs hover:bg-gray-100 dark:border-gray-600 dark:hover:bg-gray-700",type:"button",onClick:ue=>s.activationDays=y.value},u(y.label),9,Ur))),128))]),e("p",Pr,[l[88]||(l[88]=e("i",{class:"fas fa-clock mr-1"},null,-1)),A(" Key 将在首次使用后激活,激活后 "+u(s.activationDays||(s.activationUnit==="hours"?24:30))+" "+u(s.activationUnit==="hours"?"小时":"天")+"过期 ",1)])]))]),e("div",null,[l[95]||(l[95]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Mr,[e("label",Rr,[_(e("input",{"onUpdate:modelValue":l[33]||(l[33]=y=>s.permissions=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ce,s.permissions]]),l[90]||(l[90]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Vr,[_(e("input",{"onUpdate:modelValue":l[34]||(l[34]=y=>s.permissions=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ce,s.permissions]]),l[91]||(l[91]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Er,[_(e("input",{"onUpdate:modelValue":l[35]||(l[35]=y=>s.permissions=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ce,s.permissions]]),l[92]||(l[92]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Or,[_(e("input",{"onUpdate:modelValue":l[36]||(l[36]=y=>s.permissions=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ce,s.permissions]]),l[93]||(l[93]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))]),e("label",jr,[_(e("input",{"onUpdate:modelValue":l[37]||(l[37]=y=>s.permissions=y),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"droid"},null,512),[[ce,s.permissions]]),l[94]||(l[94]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Droid",-1))])]),l[96]||(l[96]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Gr,[l[97]||(l[97]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定 (可选)",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:F.value,title:"刷新账号列表",type:"button",onClick:V},[e("i",{class:z(["fas",F.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,u(F.value?"刷新中...":"刷新账号"),1)],8,qr)]),e("div",zr,[e("div",null,[l[98]||(l[98]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(Ce,{modelValue:s.claudeAccountId,"onUpdate:modelValue":l[38]||(l[38]=y=>s.claudeAccountId=y),accounts:S.value.claude,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="claude",groups:S.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[l[99]||(l[99]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(Ce,{modelValue:s.geminiAccountId,"onUpdate:modelValue":l[39]||(l[39]=y=>s.geminiAccountId=y),accounts:S.value.gemini,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="gemini",groups:S.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[l[100]||(l[100]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(Ce,{modelValue:s.openaiAccountId,"onUpdate:modelValue":l[40]||(l[40]=y=>s.openaiAccountId=y),accounts:S.value.openai,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="openai",groups:S.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[l[101]||(l[101]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(Ce,{modelValue:s.bedrockAccountId,"onUpdate:modelValue":l[41]||(l[41]=y=>s.bedrockAccountId=y),accounts:S.value.bedrock,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])]),e("div",null,[l[102]||(l[102]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Droid 专属账号",-1)),ne(Ce,{modelValue:s.droidAccountId,"onUpdate:modelValue":l[42]||(l[42]=y=>s.droidAccountId=y),accounts:S.value.droid,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="droid",groups:S.value.droidGroups,placeholder:"请选择Droid账号",platform:"droid"},null,8,["modelValue","accounts","disabled","groups"])])]),l[103]||(l[103]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择专属账号后,此API Key将只使用该账号,不选择则使用共享账号池 ",-1))]),e("div",null,[e("div",Fr,[_(e("input",{id:"enableModelRestriction","onUpdate:modelValue":l[43]||(l[43]=y=>s.enableModelRestriction=y),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Te,s.enableModelRestriction]]),l[104]||(l[104]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableModelRestriction"}," 启用模型限制 ",-1))]),s.enableModelRestriction?(n(),d("div",Wr,[e("div",null,[l[107]||(l[107]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600"},"限制的模型列表",-1)),e("div",Br,[(n(!0),d(Z,null,re(s.restrictedModels,(y,ue)=>(n(),d("span",{key:ue,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800"},[A(u(y)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800",type:"button",onClick:fe=>ie(ue)},l[105]||(l[105]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Nr)]))),128)),s.restrictedModels.length===0?(n(),d("span",Hr," 暂无限制的模型 ")):h("",!0)]),e("div",Yr,[e("div",Qr,[(n(!0),d(Z,null,re(be.value,y=>(n(),d("button",{key:y,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 sm:text-sm",type:"button",onClick:ue=>me(y)},u(y),9,Jr))),128)),be.value.length===0?(n(),d("span",Xr," 所有常用模型已在限制列表中 ")):h("",!0)]),e("div",Zr,[_(e("input",{"onUpdate:modelValue":l[44]||(l[44]=y=>s.modelInput=y),class:"form-input flex-1",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:st(Ke(se,["prevent"]),["enter"])},null,40,eo),[[te,s.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:se},l[106]||(l[106]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),l[108]||(l[108]=e("p",{class:"mt-2 text-xs text-gray-500"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):h("",!0)]),e("div",null,[e("div",to,[_(e("input",{id:"enableClientRestriction","onUpdate:modelValue":l[45]||(l[45]=y=>s.enableClientRestriction=y),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Te,s.enableClientRestriction]]),l[109]||(l[109]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableClientRestriction"}," 启用客户端限制 ",-1))]),s.enableClientRestriction?(n(),d("div",so,[e("div",null,[l[110]||(l[110]=e("label",{class:"mb-2 block text-xs font-medium text-gray-700 dark:text-gray-300"},"允许的客户端",-1)),e("div",ao,[(n(!0),d(Z,null,re(m.value,y=>(n(),d("div",{key:y.id,class:"flex items-start"},[_(e("input",{id:`client_${y.id}`,"onUpdate:modelValue":l[46]||(l[46]=ue=>s.allowedClients=ue),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:y.id},null,8,ro),[[Te,s.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`client_${y.id}`},[e("span",lo,u(y.name),1),e("span",no,u(y.description),1)],8,oo)]))),128))])])])):h("",!0)]),e("div",io,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:l[47]||(l[47]=y=>p.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 text-sm font-semibold",disabled:U.value,type:"submit"},[U.value?(n(),d("div",co)):(n(),d("i",go)),A(" "+u(U.value?"创建中...":"创建"),1)],8,uo)])],32)])])]))}},mo=De(po,[["__scopeId","data-v-56ed57ab"]]),xo={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},yo={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},fo={class:"mb-4 flex items-center justify-between sm:mb-6"},bo=["value"],vo={key:0,class:"text-gray-500"},ko={class:"space-y-4"},wo={key:0},ho={class:"flex flex-wrap gap-2"},Ao=["onClick"],$o={key:1},Co={class:"flex flex-wrap gap-2"},Io=["onClick"],Ko={class:"flex gap-2"},Lo=["onKeypress"],Do={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},_o={class:"space-y-2"},To={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},So={class:"space-y-3"},Uo={class:"flex gap-2"},Po={class:"space-y-3"},Mo={class:"flex gap-2"},Ro={class:"space-y-3"},Vo={class:"flex gap-2"},Eo={class:"mb-3 flex items-center"},Oo={class:"flex gap-4"},jo={class:"flex cursor-pointer items-center"},Go={class:"flex cursor-pointer items-center"},qo={class:"flex cursor-pointer items-center"},zo={class:"flex cursor-pointer items-center"},Fo={class:"flex cursor-pointer items-center"},Wo={class:"mb-3 flex items-center justify-between"},Bo=["disabled"],No={class:"grid grid-cols-1 gap-3"},Ho={class:"mb-3 flex items-center"},Yo={key:0,class:"space-y-3"},Qo={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-gray-600 dark:bg-gray-700"},Jo=["onClick"],Xo={key:0,class:"text-sm text-gray-400 dark:text-gray-500"},Zo={class:"space-y-3"},el={class:"flex flex-wrap gap-2"},tl=["onClick"],sl={key:0,class:"text-sm italic text-gray-400 dark:text-gray-500"},al={class:"flex gap-2"},rl=["onKeydown"],ol={class:"mb-3 flex items-center"},ll={key:0,class:"space-y-3"},nl={class:"space-y-2"},il=["id","value"],dl=["for"],ul={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},cl={class:"block text-xs text-gray-500 dark:text-gray-400"},gl={class:"flex gap-3 pt-4"},pl=["disabled"],ml={key:0,class:"loading-spinner mr-2"},xl={key:1,class:"fas fa-save mr-2"},yl={__name:"EditApiKeyModal",props:{apiKey:{type:Object,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[],openai:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[],openaiResponses:[]})}},emits:["close","success"],setup(w,{emit:N}){const c=w,P=N,B=Ut(),$=Pt(),U=L(!1),F=L(!1),S=L({claude:[],gemini:[],openai:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]}),Q=L([]),H=L([]),k=L(""),D=L([]),m=O(()=>D.value.filter(f=>!s.tags.includes(f))),s=Fe({name:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",rateLimitCost:"",concurrencyLimit:"",dailyCostLimit:"",totalCostLimit:"",weeklyOpusCostLimit:"",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",droidAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[],isActive:!0,ownerId:""}),V=()=>{s.modelInput&&!s.restrictedModels.includes(s.modelInput)&&(s.restrictedModels.push(s.modelInput),s.modelInput="")},T=f=>{s.restrictedModels.splice(f,1)},W=L(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),I=O(()=>W.value.filter(f=>!s.restrictedModels.includes(f))),K=f=>{s.restrictedModels.includes(f)||s.restrictedModels.push(f)},se=()=>{if(k.value&&k.value.trim()){const f=k.value.trim();s.tags.includes(f)||s.tags.push(f),k.value=""}},ie=f=>{s.tags.includes(f)||s.tags.push(f)},ge=f=>{s.tags.splice(f,1)},be=async()=>{if(s.rateLimitWindow&&(!s.rateLimitCost||parseFloat(s.rateLimitCost)===0)){let f=!1;if(window.showConfirm?f=await window.showConfirm("费用限制提醒",`您设置了时间窗口但费用限制为0,这意味着不会有费用限制。 是否继续?`,"继续保存","返回修改"):f=confirm(`您设置了时间窗口但费用限制为0,这意味着不会有费用限制。 是否继续?`),!f)return}U.value=!0;try{const f={name:s.name,tokenLimit:0,rateLimitWindow:s.rateLimitWindow!==""&&s.rateLimitWindow!==null?parseInt(s.rateLimitWindow):0,rateLimitRequests:s.rateLimitRequests!==""&&s.rateLimitRequests!==null?parseInt(s.rateLimitRequests):0,rateLimitCost:s.rateLimitCost!==""&&s.rateLimitCost!==null?parseFloat(s.rateLimitCost):0,concurrencyLimit:s.concurrencyLimit!==""&&s.concurrencyLimit!==null?parseInt(s.concurrencyLimit):0,dailyCostLimit:s.dailyCostLimit!==""&&s.dailyCostLimit!==null?parseFloat(s.dailyCostLimit):0,totalCostLimit:s.totalCostLimit!==""&&s.totalCostLimit!==null?parseFloat(s.totalCostLimit):0,weeklyOpusCostLimit:s.weeklyOpusCostLimit!==""&&s.weeklyOpusCostLimit!==null?parseFloat(s.weeklyOpusCostLimit):0,permissions:s.permissions,tags:s.tags};s.claudeAccountId?s.claudeAccountId.startsWith("console:")?(f.claudeConsoleAccountId=s.claudeAccountId.substring(8),f.claudeAccountId=null):(s.claudeAccountId.startsWith("group:"),f.claudeAccountId=s.claudeAccountId,f.claudeConsoleAccountId=null):(f.claudeAccountId=null,f.claudeConsoleAccountId=null),s.geminiAccountId?f.geminiAccountId=s.geminiAccountId:f.geminiAccountId=null,s.openaiAccountId?f.openaiAccountId=s.openaiAccountId:f.openaiAccountId=null,s.bedrockAccountId?f.bedrockAccountId=s.bedrockAccountId:f.bedrockAccountId=null,s.droidAccountId?f.droidAccountId=s.droidAccountId:f.droidAccountId=null,f.enableModelRestriction=s.enableModelRestriction,f.restrictedModels=s.restrictedModels,f.enableClientRestriction=s.enableClientRestriction,f.allowedClients=s.allowedClients,f.isActive=s.isActive,s.ownerId!==void 0&&(f.ownerId=s.ownerId);const o=await G.put(`/admin/api-keys/${c.apiKey.id}`,f);o.success?(P("success"),P("close")):j(o.message||"更新失败","error")}catch{j("更新失败","error")}finally{U.value=!1}},me=async()=>{var f,o;F.value=!0;try{const[i,g,C,p,l,y,ue,fe,oe]=await Promise.all([G.get("/admin/claude-accounts"),G.get("/admin/claude-console-accounts"),G.get("/admin/gemini-accounts"),G.get("/admin/gemini-api-accounts"),G.get("/admin/openai-accounts"),G.get("/admin/openai-responses-accounts"),G.get("/admin/bedrock-accounts"),G.get("/admin/droid-accounts"),G.get("/admin/account-groups")]),we=[];i.success&&((f=i.data)==null||f.forEach(Y=>{we.push({...Y,platform:"claude-oauth",isDedicated:Y.accountType==="dedicated"})})),g.success&&((o=g.data)==null||o.forEach(Y=>{we.push({...Y,platform:"claude-console",isDedicated:Y.accountType==="dedicated"})})),S.value.claude=we;const xe=[];C.success&&(C.data||[]).forEach(Y=>{xe.push({...Y,platform:"gemini",isDedicated:Y.accountType==="dedicated"})}),p.success&&(p.data||[]).forEach(Y=>{xe.push({...Y,platform:"gemini-api",isDedicated:Y.accountType==="dedicated"})}),S.value.gemini=xe;const X=[];if(l.success&&(l.data||[]).forEach(Y=>{X.push({...Y,platform:"openai",isDedicated:Y.accountType==="dedicated"})}),y.success&&(y.data||[]).forEach(Y=>{X.push({...Y,platform:"openai-responses",isDedicated:Y.accountType==="dedicated"})}),S.value.openai=X,ue.success&&(S.value.bedrock=(ue.data||[]).map(Y=>({...Y,isDedicated:Y.accountType==="dedicated"}))),fe.success&&(S.value.droid=(fe.data||[]).map(Y=>({...Y,platform:"droid",isDedicated:Y.accountType==="dedicated"}))),oe.success){const Y=oe.data||[];S.value.claudeGroups=Y.filter($e=>$e.platform==="claude"),S.value.geminiGroups=Y.filter($e=>$e.platform==="gemini"),S.value.openaiGroups=Y.filter($e=>$e.platform==="openai"),S.value.droidGroups=Y.filter($e=>$e.platform==="droid")}j("账号列表已刷新","success")}catch{j("刷新账号列表失败","error")}finally{F.value=!1}},Ae=async()=>{try{const f=await G.get("/admin/users");f.success&&(H.value=f.data||[])}catch{H.value=[{id:"admin",username:"admin",displayName:"Admin",email:"",role:"admin"}]}};return rt(async()=>{try{const[f,o]=await Promise.all([B.loadSupportedClients(),$.fetchTags(),Ae()]);Q.value=f||[],D.value=o||[]}catch{Q.value=[],D.value=[]}if(c.accounts){const f=[];c.accounts.gemini&&c.accounts.gemini.forEach(i=>{f.push({...i,platform:"gemini"})}),c.accounts.geminiApi&&c.accounts.geminiApi.forEach(i=>{f.push({...i,platform:"gemini-api"})});const o=[];c.accounts.openai&&c.accounts.openai.forEach(i=>{o.push({...i,platform:"openai"})}),c.accounts.openaiResponses&&c.accounts.openaiResponses.forEach(i=>{o.push({...i,platform:"openai-responses"})}),S.value={claude:c.accounts.claude||[],gemini:f,openai:o,bedrock:c.accounts.bedrock||[],droid:(c.accounts.droid||[]).map(i=>({...i,platform:"droid"})),claudeGroups:c.accounts.claudeGroups||[],geminiGroups:c.accounts.geminiGroups||[],openaiGroups:c.accounts.openaiGroups||[],droidGroups:c.accounts.droidGroups||[]}}s.name=c.apiKey.name,s.tokenLimit=c.apiKey.tokenLimit||"",s.rateLimitCost=c.apiKey.rateLimitCost||"",c.apiKey.tokenLimit>0&&c.apiKey.rateLimitCost,s.rateLimitWindow=c.apiKey.rateLimitWindow||"",s.rateLimitRequests=c.apiKey.rateLimitRequests||"",s.concurrencyLimit=c.apiKey.concurrencyLimit||"",s.dailyCostLimit=c.apiKey.dailyCostLimit||"",s.totalCostLimit=c.apiKey.totalCostLimit||"",s.weeklyOpusCostLimit=c.apiKey.weeklyOpusCostLimit||"",s.permissions=c.apiKey.permissions||"all",c.apiKey.claudeConsoleAccountId?s.claudeAccountId=`console:${c.apiKey.claudeConsoleAccountId}`:s.claudeAccountId=c.apiKey.claudeAccountId||"",s.geminiAccountId=c.apiKey.geminiAccountId||"",s.openaiAccountId=c.apiKey.openaiAccountId||"",s.bedrockAccountId=c.apiKey.bedrockAccountId||"",s.droidAccountId=c.apiKey.droidAccountId||"",s.restrictedModels=c.apiKey.restrictedModels||[],s.allowedClients=c.apiKey.allowedClients||[],s.tags=c.apiKey.tags||[],s.enableModelRestriction=c.apiKey.enableModelRestriction===!0||c.apiKey.enableModelRestriction==="true",s.enableClientRestriction=c.apiKey.enableClientRestriction===!0||c.apiKey.enableClientRestriction==="true",s.isActive=c.apiKey.isActive===void 0||c.apiKey.isActive===!0||c.apiKey.isActive==="true",s.ownerId=c.apiKey.userId||"admin"}),(f,o)=>(n(),ke(Pe,{to:"body"},[e("div",xo,[e("div",yo,[e("div",fo,[o[40]||(o[40]=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-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 编辑 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:o[0]||(o[0]=i=>f.$emit("close"))},o[39]||(o[39]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:Ke(be,["prevent"])},[e("div",null,[o[41]||(o[41]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"名称",-1)),e("div",null,[_(e("input",{"onUpdate:modelValue":o[1]||(o[1]=i=>s.name=i),class:"form-input flex-1 border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",maxlength:"100",placeholder:"请输入API Key名称",required:"",type:"text"},null,512),[[te,s.name]])]),o[42]||(o[42]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"}," 用于识别此 API Key 的用途 ",-1))]),e("div",null,[o[43]||(o[43]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"所有者",-1)),_(e("select",{"onUpdate:modelValue":o[2]||(o[2]=i=>s.ownerId=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},[(n(!0),d(Z,null,re(H.value,i=>(n(),d("option",{key:i.id,value:i.id},[A(u(i.displayName)+" ("+u(i.username)+") ",1),i.role==="admin"?(n(),d("span",vo,"- 管理员")):h("",!0)],8,bo))),128))],512),[[at,s.ownerId]]),o[44]||(o[44]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"}," 分配此 API Key 给指定用户或管理员,管理员分配时不受用户 API Key 数量限制 ",-1))]),e("div",null,[o[52]||(o[52]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"标签",-1)),e("div",ko,[s.tags.length>0?(n(),d("div",wo,[o[46]||(o[46]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",ho,[(n(!0),d(Z,null,re(s.tags,(i,g)=>(n(),d("span",{key:"selected-"+g,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[A(u(i)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:C=>ge(g)},o[45]||(o[45]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Ao)]))),128))])])):h("",!0),m.value.length>0?(n(),d("div",$o,[o[48]||(o[48]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",Co,[(n(!0),d(Z,null,re(m.value,i=>(n(),d("button",{key:"available-"+i,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:g=>ie(i)},[o[47]||(o[47]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),A(" "+u(i),1)],8,Io))),128))])])):h("",!0),e("div",null,[o[50]||(o[50]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",Ko,[_(e("input",{"onUpdate:modelValue":o[3]||(o[3]=i=>k.value=i),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",onKeypress:st(Ke(se,["prevent"]),["enter"])},null,40,Lo),[[te,k.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:se},o[49]||(o[49]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[51]||(o[51]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",Do,[o[60]||(o[60]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",_o,[e("div",To,[e("div",null,[o[53]||(o[53]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),_(e("input",{"onUpdate:modelValue":o[4]||(o[4]=i=>s.rateLimitWindow=i),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[te,s.rateLimitWindow]]),o[54]||(o[54]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[o[55]||(o[55]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),_(e("input",{"onUpdate:modelValue":o[5]||(o[5]=i=>s.rateLimitRequests=i),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[te,s.rateLimitRequests]]),o[56]||(o[56]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[o[57]||(o[57]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"费用限制 (美元)",-1)),_(e("input",{"onUpdate:modelValue":o[6]||(o[6]=i=>s.rateLimitCost=i),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"无限制",step:"0.01",type:"number"},null,512),[[te,s.rateLimitCost]]),o[58]||(o[58]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大费用",-1))])]),o[59]||(o[59]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),A(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),A(" 时间窗口=1,费用=0.1 → 每分钟最多$0.1费用")]),e("div",null,[e("strong",null,"示例3:"),A(" 窗口=30,请求=50,费用=5 → 每30分钟50次请求且不超$5费用 ")])])],-1))])]),e("div",null,[o[62]||(o[62]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",So,[e("div",Uo,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[7]||(o[7]=i=>s.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[8]||(o[8]=i=>s.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[9]||(o[9]=i=>s.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[10]||(o[10]=i=>s.dailyCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":o[11]||(o[11]=i=>s.dailyCostLimit=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.dailyCostLimit]]),o[61]||(o[61]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[64]||(o[64]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"总费用限制 (美元)",-1)),e("div",Po,[e("div",Mo,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[12]||(o[12]=i=>s.totalCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[13]||(o[13]=i=>s.totalCostLimit="500")}," $500 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[14]||(o[14]=i=>s.totalCostLimit="1000")}," $1000 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[15]||(o[15]=i=>s.totalCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":o[16]||(o[16]=i=>s.totalCostLimit=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.totalCostLimit]]),o[63]||(o[63]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 的累计总费用限制,达到限制后将拒绝所有后续请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[66]||(o[66]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Opus 模型周费用限制 (美元)",-1)),e("div",Ro,[e("div",Vo,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[17]||(o[17]=i=>s.weeklyOpusCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[18]||(o[18]=i=>s.weeklyOpusCostLimit="500")}," $500 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[19]||(o[19]=i=>s.weeklyOpusCostLimit="1000")}," $1000 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[20]||(o[20]=i=>s.weeklyOpusCostLimit="")}," 自定义 ")]),_(e("input",{"onUpdate:modelValue":o[21]||(o[21]=i=>s.weeklyOpusCostLimit=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[te,s.weeklyOpusCostLimit]]),o[65]||(o[65]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置 Opus 模型的周费用限制(周一到周日),仅限 Claude 官方账户,0 或留空表示无限制 ",-1))])]),e("div",null,[o[67]||(o[67]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),_(e("input",{"onUpdate:modelValue":o[22]||(o[22]=i=>s.concurrencyLimit=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[te,s.concurrencyLimit]]),o[68]||(o[68]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数 ",-1))]),e("div",null,[e("div",Eo,[_(e("input",{id:"editIsActive","onUpdate:modelValue":o[23]||(o[23]=i=>s.isActive=i),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Te,s.isActive]]),o[69]||(o[69]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editIsActive"}," 激活账号 ",-1))]),o[70]||(o[70]=e("p",{class:"mb-4 text-xs text-gray-500 dark:text-gray-400"}," 取消勾选将禁用此 API Key,暂停所有请求,客户端返回 401 错误 ",-1))]),e("div",null,[o[76]||(o[76]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Oo,[e("label",jo,[_(e("input",{"onUpdate:modelValue":o[24]||(o[24]=i=>s.permissions=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ce,s.permissions]]),o[71]||(o[71]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Go,[_(e("input",{"onUpdate:modelValue":o[25]||(o[25]=i=>s.permissions=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ce,s.permissions]]),o[72]||(o[72]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",qo,[_(e("input",{"onUpdate:modelValue":o[26]||(o[26]=i=>s.permissions=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ce,s.permissions]]),o[73]||(o[73]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",zo,[_(e("input",{"onUpdate:modelValue":o[27]||(o[27]=i=>s.permissions=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ce,s.permissions]]),o[74]||(o[74]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))]),e("label",Fo,[_(e("input",{"onUpdate:modelValue":o[28]||(o[28]=i=>s.permissions=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"droid"},null,512),[[ce,s.permissions]]),o[75]||(o[75]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Droid",-1))])]),o[77]||(o[77]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Wo,[o[78]||(o[78]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:F.value,title:"刷新账号列表",type:"button",onClick:me},[e("i",{class:z(["fas",F.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,u(F.value?"刷新中...":"刷新账号"),1)],8,Bo)]),e("div",No,[e("div",null,[o[79]||(o[79]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(Ce,{modelValue:s.claudeAccountId,"onUpdate:modelValue":o[29]||(o[29]=i=>s.claudeAccountId=i),accounts:S.value.claude,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="claude",groups:S.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[80]||(o[80]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(Ce,{modelValue:s.geminiAccountId,"onUpdate:modelValue":o[30]||(o[30]=i=>s.geminiAccountId=i),accounts:S.value.gemini,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="gemini",groups:S.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[81]||(o[81]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(Ce,{modelValue:s.openaiAccountId,"onUpdate:modelValue":o[31]||(o[31]=i=>s.openaiAccountId=i),accounts:S.value.openai,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="openai",groups:S.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[82]||(o[82]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(Ce,{modelValue:s.bedrockAccountId,"onUpdate:modelValue":o[32]||(o[32]=i=>s.bedrockAccountId=i),accounts:S.value.bedrock,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])]),e("div",null,[o[83]||(o[83]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Droid 专属账号",-1)),ne(Ce,{modelValue:s.droidAccountId,"onUpdate:modelValue":o[33]||(o[33]=i=>s.droidAccountId=i),accounts:S.value.droid,"default-option-text":"使用共享账号池",disabled:s.permissions!=="all"&&s.permissions!=="droid",groups:S.value.droidGroups,placeholder:"请选择Droid账号",platform:"droid"},null,8,["modelValue","accounts","disabled","groups"])])]),o[84]||(o[84]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 修改绑定账号将影响此API Key的请求路由 ",-1))]),e("div",null,[e("div",Ho,[_(e("input",{id:"editEnableModelRestriction","onUpdate:modelValue":o[34]||(o[34]=i=>s.enableModelRestriction=i),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Te,s.enableModelRestriction]]),o[85]||(o[85]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableModelRestriction"}," 启用模型限制 ",-1))]),s.enableModelRestriction?(n(),d("div",Yo,[e("div",null,[o[88]||(o[88]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"限制的模型列表",-1)),e("div",Qo,[(n(!0),d(Z,null,re(s.restrictedModels,(i,g)=>(n(),d("span",{key:g,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800 dark:bg-red-900/30 dark:text-red-400"},[A(u(i)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800 dark:text-red-400 dark:hover:text-red-300",type:"button",onClick:C=>T(g)},o[86]||(o[86]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Jo)]))),128)),s.restrictedModels.length===0?(n(),d("span",Xo," 暂无限制的模型 ")):h("",!0)]),e("div",Zo,[e("div",el,[(n(!0),d(Z,null,re(I.value,i=>(n(),d("button",{key:i,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 sm:text-sm",type:"button",onClick:g=>K(i)},u(i),9,tl))),128)),I.value.length===0?(n(),d("span",sl," 所有常用模型已在限制列表中 ")):h("",!0)]),e("div",al,[_(e("input",{"onUpdate:modelValue":o[35]||(o[35]=i=>s.modelInput=i),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",onKeydown:st(Ke(V,["prevent"]),["enter"])},null,40,rl),[[te,s.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:V},o[87]||(o[87]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[89]||(o[89]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):h("",!0)]),e("div",null,[e("div",ol,[_(e("input",{id:"editEnableClientRestriction","onUpdate:modelValue":o[36]||(o[36]=i=>s.enableClientRestriction=i),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Te,s.enableClientRestriction]]),o[90]||(o[90]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableClientRestriction"}," 启用客户端限制 ",-1))]),s.enableClientRestriction?(n(),d("div",ll,[e("div",null,[o[91]||(o[91]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"允许的客户端",-1)),o[92]||(o[92]=e("p",{class:"mb-3 text-xs text-gray-500 dark:text-gray-400"}," 勾选允许使用此API Key的客户端 ",-1)),e("div",nl,[(n(!0),d(Z,null,re(Q.value,i=>(n(),d("div",{key:i.id,class:"flex items-start"},[_(e("input",{id:`edit_client_${i.id}`,"onUpdate:modelValue":o[37]||(o[37]=g=>s.allowedClients=g),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:i.id},null,8,il),[[Te,s.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`edit_client_${i.id}`},[e("span",ul,u(i.name),1),e("span",cl,u(i.description),1)],8,dl)]))),128))])])])):h("",!0)]),e("div",gl,[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-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[38]||(o[38]=i=>f.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:U.value,type:"submit"},[U.value?(n(),d("div",ml)):(n(),d("i",xl)),A(" "+u(U.value?"保存中...":"保存修改"),1)],8,pl)])],32)])])]))}},fl=De(yl,[["__scopeId","data-v-aa05576b"]]),bl={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},vl={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-8"},kl={class:"mb-6 flex items-center justify-between"},wl={class:"modal-scroll-content custom-scrollbar flex-1 space-y-6"},hl={class:"rounded-lg border border-blue-200 bg-blue-50 p-4"},Al={class:"flex items-start gap-3"},$l={class:"text-sm text-gray-700"},Cl={class:"mt-1 text-xs text-gray-600"},Il={key:0,class:"mt-3"},Kl=["min"],Ll={key:1,class:"mt-2 text-xs text-gray-500"},Dl={class:"flex gap-3 pt-4"},_l=["disabled"],Tl={key:0,class:"loading-spinner mr-2"},Sl={key:1,class:"fas fa-clock mr-2"},Ul={__name:"RenewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close","success"],setup(w,{emit:N}){const c=w,P=N,B=L(!1),$=Fe({renewDuration:"30d",customExpireDate:"",newExpiresAt:null}),U=O(()=>{const k=new Date;return c.apiKey.expiresAt&&new Date(c.apiKey.expiresAt)>k?new Date(c.apiKey.expiresAt).toISOString().slice(0,16):(k.setMinutes(k.getMinutes()+1),k.toISOString().slice(0,16))}),F=k=>new Date(k).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),S=()=>{if(!$.renewDuration){$.newExpiresAt=null;return}if($.renewDuration==="permanent"){$.newExpiresAt=null;return}if($.renewDuration==="custom")return;const k=c.apiKey.expiresAt&&new Date(c.apiKey.expiresAt)>new Date?new Date(c.apiKey.expiresAt):new Date,m=$.renewDuration.match(/(\d+)([dhmy])/);if(m){const[,s,V]=m,T=parseInt(s);switch(V){case"d":k.setDate(k.getDate()+T);break;case"h":k.setHours(k.getHours()+T);break;case"m":k.setMonth(k.getMonth()+T);break;case"y":k.setFullYear(k.getFullYear()+T);break}$.newExpiresAt=k.toISOString()}},Q=()=>{$.customExpireDate&&($.newExpiresAt=new Date($.customExpireDate).toISOString())},H=async()=>{B.value=!0;try{const k={expiresAt:$.renewDuration==="permanent"?null:$.newExpiresAt},D=await G.put(`/admin/api-keys/${c.apiKey.id}`,k);D.success?(j("API Key 续期成功","success"),P("success"),P("close")):j(D.message||"续期失败","error")}catch{j("续期失败","error")}finally{B.value=!1}};return S(),(k,D)=>(n(),ke(Pe,{to:"body"},[e("div",bl,[e("div",vl,[e("div",kl,[D[5]||(D[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-clock text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900"},"续期 API Key")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:D[0]||(D[0]=m=>k.$emit("close"))},D[4]||(D[4]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",wl,[e("div",hl,[e("div",Al,[D[7]||(D[7]=e("div",{class:"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,[D[6]||(D[6]=e("h4",{class:"mb-1 font-semibold text-gray-800"},"API Key 信息",-1)),e("p",$l,u(w.apiKey.name),1),e("p",Cl," 当前过期时间:"+u(w.apiKey.expiresAt?F(w.apiKey.expiresAt):"永不过期"),1)])])]),e("div",null,[D[9]||(D[9]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"续期时长",-1)),_(e("select",{"onUpdate:modelValue":D[1]||(D[1]=m=>$.renewDuration=m),class:"form-input w-full",onChange:S},D[8]||(D[8]=[e("option",{value:"7d"},"延长 7 天",-1),e("option",{value:"30d"},"延长 30 天",-1),e("option",{value:"90d"},"延长 90 天",-1),e("option",{value:"180d"},"延长 180 天",-1),e("option",{value:"365d"},"延长 365 天",-1),e("option",{value:"custom"},"自定义日期",-1),e("option",{value:"permanent"},"设为永不过期",-1)]),544),[[at,$.renewDuration]]),$.renewDuration==="custom"?(n(),d("div",Il,[_(e("input",{"onUpdate:modelValue":D[2]||(D[2]=m=>$.customExpireDate=m),class:"form-input w-full",min:U.value,type:"datetime-local",onChange:Q},null,40,Kl),[[te,$.customExpireDate]])])):h("",!0),$.newExpiresAt?(n(),d("p",Ll," 新的过期时间:"+u(F($.newExpiresAt)),1)):h("",!0)])]),e("div",Dl,[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",type:"button",onClick:D[3]||(D[3]=m=>k.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:B.value||!$.renewDuration,type:"button",onClick:H},[B.value?(n(),d("div",Tl)):(n(),d("i",Sl)),A(" "+u(B.value?"续期中...":"确认续期"),1)],8,_l)])])])]))}},Pl=De(Ul,[["__scopeId","data-v-2fba52a3"]]),Ml={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Rl={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-lg overflow-y-auto p-8"},Vl={class:"mb-6 space-y-4"},El={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},Ol={class:"font-medium text-gray-900 dark:text-gray-100"},jl={key:0},Gl={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},ql={class:"text-gray-700 dark:text-gray-300"},zl={class:"relative"},Fl={class:"flex min-h-[60px] items-center break-all rounded-lg border border-gray-700 bg-gray-900 p-4 pr-14 font-mono text-sm text-white dark:border-gray-600 dark:bg-gray-900"},Wl={class:"absolute right-3 top-3"},Bl=["title"],Nl={__name:"NewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close"],setup(w,{emit:N}){const c=w,P=N,B=L(!1),$=()=>{if(typeof window<"u"){const s=window.location.protocol,V=window.location.host;let T=s+"//"+V;const W=window.location.href,I=W.indexOf("/",8);return I!==-1&&(T=W.substring(0,I)),T}return""},U=O(()=>$()+"/api"),F=()=>{B.value=!B.value},S=()=>{const s=c.apiKey.apiKey||c.apiKey.key||"";return s?B.value||s.length<=12?s:s.substring(0,8)+"●".repeat(Math.max(0,s.length-12))+s.substring(s.length-4):""},Q=async(s,V)=>{try{await navigator.clipboard.writeText(s),j(V,"success")}catch{const W=document.createElement("textarea");W.value=s,document.body.appendChild(W),W.select();try{document.execCommand("copy"),j(V,"success")}catch{j("复制失败,请手动复制","error")}finally{document.body.removeChild(W)}}},H=async()=>{const s=c.apiKey.apiKey||c.apiKey.key||"";if(!s){j("API Key 不存在","error");return}const V=`ANTHROPIC_BASE_URL="${U.value}" ANTHROPIC_AUTH_TOKEN="${s}"`;await Q(V,"配置信息已复制到剪贴板")},k=async()=>{const s=c.apiKey.apiKey||c.apiKey.key||"";if(!s){j("API Key 不存在","error");return}await Q(s,"API Key 已复制")},D=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 确定要关闭吗?`,"确定关闭","取消")&&P("close"):confirm(`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 确定要关闭吗?`)&&P("close")},m=async()=>{window.showConfirm?await window.showConfirm("确定要关闭吗?",`您还没有保存API Key,关闭后将无法再次查看。 建议您先复制API Key再关闭。`,"仍然关闭","返回复制")&&P("close"):confirm(`您还没有保存API Key,关闭后将无法再次查看。 确定要关闭吗?`)&&P("close")};return(s,V)=>(n(),ke(Pe,{to:"body"},[e("div",Ml,[e("div",Rl,[e("div",{class:"mb-6 flex items-center justify-between"},[V[1]||(V[1]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-12 w-12 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-check text-lg text-white"})]),e("div",null,[e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"API Key 创建成功"),e("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"请妥善保存您的 API Key")])],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",title:"直接关闭(不推荐)",onClick:m},V[0]||(V[0]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),V[9]||(V[9]=e("div",{class:"mb-6 border-l-4 border-amber-400 bg-amber-50 p-4 dark:border-amber-500 dark:bg-amber-900/20"},[e("div",{class:"flex items-start"},[e("div",{class:"mt-0.5 flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-lg bg-amber-400 dark:bg-amber-500"},[e("i",{class:"fas fa-exclamation-triangle text-sm text-white"})]),e("div",{class:"ml-3"},[e("h5",{class:"mb-1 font-semibold text-amber-900 dark:text-amber-400"},"重要提醒"),e("p",{class:"text-sm text-amber-800 dark:text-amber-300"}," 这是您唯一能看到完整 API Key 的机会。关闭此窗口后,系统将不再显示完整的 API Key。请立即复制并妥善保存。 ")])])],-1)),e("div",Vl,[e("div",null,[V[2]||(V[2]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key 名称",-1)),e("div",El,[e("span",Ol,u(w.apiKey.name),1)])]),w.apiKey.description?(n(),d("div",jl,[V[3]||(V[3]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注",-1)),e("div",Gl,[e("span",ql,u(w.apiKey.description||"无描述"),1)])])):h("",!0),e("div",null,[V[4]||(V[4]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key",-1)),e("div",zl,[e("div",Fl,u(S()),1),e("div",Wl,[e("button",{class:"btn-icon-sm bg-gray-700 hover:bg-gray-800 dark:bg-gray-700 dark:hover:bg-gray-600",title:B.value?"隐藏API Key":"显示完整API Key",type:"button",onClick:F},[e("i",{class:z(["fas",B.value?"fa-eye-slash":"fa-eye","text-gray-300"])},null,2)],8,Bl)])]),V[5]||(V[5]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 点击眼睛图标切换显示模式,使用下方按钮复制环境变量配置 ",-1))])]),e("div",{class:"flex flex-col gap-3 sm:gap-4"},[e("div",{class:"flex flex-col gap-3 sm:flex-row sm:gap-4"},[e("button",{class:"flex w-full items-center justify-center gap-2 rounded-xl border border-blue-200 bg-blue-50 px-5 py-3 text-sm font-semibold text-blue-700 transition-colors hover:border-blue-300 hover:bg-blue-100 dark:border-blue-500/50 dark:bg-blue-500/10 dark:text-blue-200 dark:hover:bg-blue-500/20 sm:flex-1 sm:text-base",onClick:k},V[6]||(V[6]=[e("i",{class:"fas fa-key"},null,-1),A(" 仅复制密钥 ",-1)])),e("button",{class:"btn btn-primary flex w-full items-center justify-center gap-2 px-5 py-3 text-sm font-semibold sm:flex-1 sm:text-base",onClick:H},V[7]||(V[7]=[e("i",{class:"fas fa-copy"},null,-1),A(" 复制Claude配置 ",-1)]))]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-xl border border-gray-300 bg-gray-200 px-5 py-3 text-sm font-semibold text-gray-800 transition-colors hover:border-gray-400 hover:bg-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600 sm:text-base",onClick:D},V[8]||(V[8]=[e("i",{class:"fas fa-check-circle"},null,-1),A(" 我已保存 ",-1)]))])])])]))}},Hl=De(Nl,[["__scopeId","data-v-d2440499"]]),Yl={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Ql={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-8"},Jl={class:"mb-6 flex items-center justify-between"},Xl={class:"flex items-center gap-3"},Zl={class:"text-sm text-gray-600"},en={class:"mb-6 grid grid-cols-2 gap-4 md:grid-cols-4"},tn={class:"rounded-lg border border-blue-200 bg-gradient-to-br from-blue-50 to-blue-100 p-4"},sn={class:"flex items-center justify-between"},an={class:"mt-1 text-2xl font-bold text-blue-900"},rn={class:"rounded-lg border border-green-200 bg-gradient-to-br from-green-50 to-green-100 p-4"},on={class:"flex items-center justify-between"},ln={class:"mt-1 truncate text-lg font-bold text-green-900"},nn={class:"rounded-lg border border-purple-200 bg-gradient-to-br from-purple-50 to-purple-100 p-4"},dn={class:"flex items-center justify-between"},un={class:"mt-1 text-lg font-bold text-purple-900"},cn={class:"rounded-lg border border-orange-200 bg-gradient-to-br from-orange-50 to-orange-100 p-4"},gn={class:"flex items-center justify-between"},pn={class:"mt-1 text-lg font-bold text-orange-900"},mn={class:"mb-6"},xn={class:"mb-3 flex items-center justify-between"},yn={class:"flex items-center gap-2"},fn={key:0,class:"custom-scrollbar max-h-48 overflow-y-auto rounded-lg bg-gray-900 p-4"},bn={class:"font-mono text-xs text-gray-300"},vn={__name:"BatchApiKeyModal",props:{apiKeys:{type:Array,required:!0}},emits:["close"],setup(w,{emit:N}){const c=w,P=N,B=L(!1),$=O(()=>{if(c.apiKeys.length>0){const m=c.apiKeys[0],s=m.name.match(/^(.+)_\d+$/);return s?s[1]:m.name}return""}),U=()=>{if(c.apiKeys.length===0)return"未知";const m=c.apiKeys[0].permissions;return{all:"全部服务",claude:"仅 Claude",gemini:"仅 Gemini"}[m]||m},F=()=>{if(c.apiKeys.length===0)return"未知";const m=c.apiKeys[0].expiresAt;if(!m)return"永不过期";const s=new Date(m),T=Math.ceil((s-new Date)/(1e3*60*60*24));return T<=7?`${T}天`:T<=30?`${Math.ceil(T/7)}周`:T<=365?`${Math.ceil(T/30)}个月`:`${Math.ceil(T/365)}年`},S=()=>{B.value=!B.value},Q=()=>{const s=c.apiKeys.slice(0,10).map(V=>`${V.name}: ${V.apiKey||V.key||""}`);return c.apiKeys.length>10&&s.push(`... 还有 ${c.apiKeys.length-10} 个 API Key`),s.join(` `)},H=()=>{const m=c.apiKeys.map(I=>`${I.name}: ${I.apiKey||I.key||""}`).join(` `),s=new Blob([m],{type:"text/plain;charset=utf-8"}),V=URL.createObjectURL(s),T=document.createElement("a");T.href=V;const W=new Date().toISOString().replace(/[:.]/g,"-").slice(0,-5);T.download=`api-keys-${$.value}-${W}.txt`,document.body.appendChild(T),T.click(),document.body.removeChild(T),URL.revokeObjectURL(V),j("API Keys 文件已下载","success")},k=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看这些 API Key,请确保已经下载并妥善保存。 确定要关闭吗?`,"确定关闭","返回下载")&&P("close"):confirm(`关闭后将无法再次查看这些 API Key,请确保已经下载并妥善保存。 确定要关闭吗?`)&&P("close")},D=async()=>{window.showConfirm?await window.showConfirm("确定要关闭吗?",`您还没有下载 API Keys,关闭后将无法再次查看。 强烈建议您先下载保存。`,"仍然关闭","返回下载")&&P("close"):confirm(`您还没有下载 API Keys,关闭后将无法再次查看。 确定要关闭吗?`)&&P("close")};return(m,s)=>(n(),ke(Pe,{to:"body"},[e("div",Yl,[e("div",Ql,[e("div",Jl,[e("div",Xl,[s[1]||(s[1]=e("div",{class:"flex h-12 w-12 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-layer-group text-lg text-white"})],-1)),e("div",null,[s[0]||(s[0]=e("h3",{class:"text-xl font-bold text-gray-900"},"批量创建成功",-1)),e("p",Zl,"成功创建 "+u(w.apiKeys.length)+" 个 API Key",1)])]),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",title:"直接关闭(不推荐)",onClick:D},s[2]||(s[2]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),s[14]||(s[14]=e("div",{class:"mb-6 border-l-4 border-amber-400 bg-amber-50 p-4"},[e("div",{class:"flex items-start"},[e("div",{class:"mt-0.5 flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-lg bg-amber-400"},[e("i",{class:"fas fa-exclamation-triangle text-sm text-white"})]),e("div",{class:"ml-3"},[e("h5",{class:"mb-1 font-semibold text-amber-900"},"重要提醒"),e("p",{class:"text-sm text-amber-800"}," 这是您唯一能看到所有 API Key 的机会。关闭此窗口后,系统将不再显示完整的 API Key。请立即下载并妥善保存。 ")])])],-1)),e("div",en,[e("div",tn,[e("div",sn,[e("div",null,[s[3]||(s[3]=e("p",{class:"text-xs font-medium text-blue-600"},"创建数量",-1)),e("p",an,u(w.apiKeys.length),1)]),s[4]||(s[4]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-lg bg-blue-500 bg-opacity-20"},[e("i",{class:"fas fa-key text-blue-600"})],-1))])]),e("div",rn,[e("div",on,[e("div",null,[s[5]||(s[5]=e("p",{class:"text-xs font-medium text-green-600"},"基础名称",-1)),e("p",ln,u($.value),1)]),s[6]||(s[6]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-lg bg-green-500 bg-opacity-20"},[e("i",{class:"fas fa-tag text-green-600"})],-1))])]),e("div",nn,[e("div",dn,[e("div",null,[s[7]||(s[7]=e("p",{class:"text-xs font-medium text-purple-600"},"权限范围",-1)),e("p",un,u(U()),1)]),s[8]||(s[8]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-lg bg-purple-500 bg-opacity-20"},[e("i",{class:"fas fa-shield-alt text-purple-600"})],-1))])]),e("div",cn,[e("div",gn,[e("div",null,[s[9]||(s[9]=e("p",{class:"text-xs font-medium text-orange-600"},"过期时间",-1)),e("p",pn,u(F()),1)]),s[10]||(s[10]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-lg bg-orange-500 bg-opacity-20"},[e("i",{class:"fas fa-clock text-orange-600"})],-1))])])]),e("div",mn,[e("div",xn,[s[12]||(s[12]=e("label",{class:"text-sm font-semibold text-gray-700"},"API Keys 预览",-1)),e("div",yn,[e("button",{class:"flex items-center gap-1 text-xs text-blue-600 hover:text-blue-800",type:"button",onClick:S},[e("i",{class:z(["fas",B.value?"fa-eye-slash":"fa-eye"])},null,2),A(" "+u(B.value?"隐藏":"显示")+"预览 ",1)]),s[11]||(s[11]=e("span",{class:"text-xs text-gray-500"},"(最多显示前10个)",-1))])]),B.value?(n(),d("div",fn,[e("pre",bn,u(Q()),1)])):h("",!0)]),e("div",{class:"flex gap-3"},[e("button",{class:"btn btn-primary flex flex-1 items-center justify-center gap-2 px-6 py-3 font-semibold",onClick:H},s[13]||(s[13]=[e("i",{class:"fas fa-download"},null,-1),A(" 下载所有 API Keys ",-1)])),e("button",{class:"rounded-xl border border-gray-300 bg-gray-200 px-6 py-3 font-semibold text-gray-800 transition-colors hover:bg-gray-300",onClick:k}," 我已保存 ")]),s[15]||(s[15]=e("div",{class:"mt-4 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("p",{class:"flex items-start text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-2 mt-0.5 flex-shrink-0"}),e("span",null," 下载的文件格式为文本文件(.txt),每行包含一个 API Key。 请将文件保存在安全的位置,避免泄露。 ")])],-1))])])]))}},kn=De(vn,[["__scopeId","data-v-b0b904b9"]]),wn={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},hn={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},An={class:"mb-4 flex items-center justify-between sm:mb-6"},$n={class:"flex items-center gap-2 sm:gap-3"},Cn={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},In={class:"rounded-lg bg-blue-50 p-4 dark:bg-blue-900/20"},Kn={class:"flex items-start gap-3"},Ln={class:"mt-1 text-sm text-blue-700 dark:text-blue-400"},Dn={class:"space-y-4"},_n={class:"flex flex-wrap gap-4"},Tn={class:"flex cursor-pointer items-center"},Sn={class:"flex cursor-pointer items-center"},Un={class:"flex cursor-pointer items-center"},Pn={class:"flex cursor-pointer items-center"},Mn={key:0,class:"space-y-3"},Rn={key:0},Vn={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},En={class:"flex flex-wrap gap-2"},On=["onClick"],jn={key:1},Gn={class:"flex flex-wrap gap-2"},qn=["onClick"],zn={class:"flex gap-2"},Fn=["onKeypress"],Wn={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},Bn={class:"space-y-2"},Nn={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Hn={class:"mb-3 flex items-center gap-4"},Yn={class:"flex gap-4"},Qn={class:"flex cursor-pointer items-center"},Jn={class:"flex cursor-pointer items-center"},Xn={class:"flex cursor-pointer items-center"},Zn={class:"flex flex-wrap gap-4"},ei={class:"flex cursor-pointer items-center"},ti={class:"flex cursor-pointer items-center"},si={class:"flex cursor-pointer items-center"},ai={class:"flex cursor-pointer items-center"},ri={class:"flex cursor-pointer items-center"},oi={class:"flex cursor-pointer items-center"},li={class:"mb-3 flex items-center justify-between"},ni=["disabled"],ii={class:"grid grid-cols-1 gap-3"},di={class:"flex gap-3 pt-4"},ui=["disabled"],ci={key:0,class:"loading-spinner mr-2"},gi={key:1,class:"fas fa-save mr-2"},St="__KEEP_ORIGINAL__",pi={__name:"BatchEditApiKeyModal",props:{selectedKeys:{type:Array,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[],openai:[],openaiResponses:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]})}},emits:["close","success"],setup(w,{emit:N}){const c=w,P=N,B=Pt(),$=L(!1),U=L(!1),F=L({claude:[],gemini:[],openai:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]}),S=L(""),Q=L([]),H=L("none"),k=O(()=>c.selectedKeys.length),D=O(()=>Q.value.filter(o=>!m.tags.includes(o))),m=Fe({rateLimitCost:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",totalCostLimit:"",weeklyOpusCostLimit:"",permissions:"",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",droidAccountId:"",tags:[],isActive:null}),s=[{value:St,label:"不修改"},{value:"SHARED_POOL",label:"使用共享账号池"}],V=o=>O({get:()=>m[o]===""?St:m[o],set:i=>{!i||i===St?m[o]="":m[o]=i}}),T=V("claudeAccountId"),W=V("geminiAccountId"),I=V("openaiAccountId"),K=V("bedrockAccountId"),se=V("droidAccountId"),ie=o=>!m.permissions||m.permissions==="all"?!0:m.permissions===o,ge=()=>{if(S.value&&S.value.trim()){const o=S.value.trim();m.tags.includes(o)||m.tags.push(o),S.value=""}},be=o=>{m.tags.includes(o)||m.tags.push(o)},me=o=>{m.tags.splice(o,1)},Ae=async()=>{var o,i;U.value=!0;try{const[g,C,p,l,y,ue,fe,oe]=await Promise.all([G.get("/admin/claude-accounts"),G.get("/admin/claude-console-accounts"),G.get("/admin/gemini-accounts"),G.get("/admin/openai-accounts"),G.get("/admin/openai-responses-accounts"),G.get("/admin/bedrock-accounts"),G.get("/admin/droid-accounts"),G.get("/admin/account-groups")]),we=[];g.success&&((o=g.data)==null||o.forEach(X=>{we.push({...X,platform:"claude-oauth",isDedicated:X.accountType==="dedicated"})})),C.success&&((i=C.data)==null||i.forEach(X=>{we.push({...X,platform:"claude-console",isDedicated:X.accountType==="dedicated"})})),F.value.claude=we,p.success&&(F.value.gemini=(p.data||[]).map(X=>({...X,isDedicated:X.accountType==="dedicated"})));const xe=[];if(l.success&&(l.data||[]).forEach(X=>{xe.push({...X,platform:"openai",isDedicated:X.accountType==="dedicated"})}),y.success&&(y.data||[]).forEach(X=>{xe.push({...X,platform:"openai-responses",isDedicated:X.accountType==="dedicated"})}),F.value.openai=xe,ue.success&&(F.value.bedrock=(ue.data||[]).map(X=>({...X,isDedicated:X.accountType==="dedicated"}))),fe.success&&(F.value.droid=(fe.data||[]).map(X=>({...X,platform:"droid",isDedicated:X.accountType==="dedicated"}))),oe.success){const X=oe.data||[];F.value.claudeGroups=X.filter(Y=>Y.platform==="claude"),F.value.geminiGroups=X.filter(Y=>Y.platform==="gemini"),F.value.openaiGroups=X.filter(Y=>Y.platform==="openai"),F.value.droidGroups=X.filter(Y=>Y.platform==="droid")}j("账号列表已刷新","success")}catch{j("刷新账号列表失败","error")}finally{U.value=!1}},f=async()=>{$.value=!0;try{const o={};m.rateLimitCost!==""&&m.rateLimitCost!==null&&(o.rateLimitCost=parseFloat(m.rateLimitCost)),m.rateLimitWindow!==""&&m.rateLimitWindow!==null&&(o.rateLimitWindow=parseInt(m.rateLimitWindow)),m.rateLimitRequests!==""&&m.rateLimitRequests!==null&&(o.rateLimitRequests=parseInt(m.rateLimitRequests)),m.concurrencyLimit!==""&&m.concurrencyLimit!==null&&(o.concurrencyLimit=parseInt(m.concurrencyLimit)),m.dailyCostLimit!==""&&m.dailyCostLimit!==null&&(o.dailyCostLimit=parseFloat(m.dailyCostLimit)),m.totalCostLimit!==""&&m.totalCostLimit!==null&&(o.totalCostLimit=parseFloat(m.totalCostLimit)),m.weeklyOpusCostLimit!==""&&m.weeklyOpusCostLimit!==null&&(o.weeklyOpusCostLimit=parseFloat(m.weeklyOpusCostLimit)),m.permissions!==""&&(o.permissions=m.permissions),m.claudeAccountId!==""&&(m.claudeAccountId==="SHARED_POOL"?(o.claudeAccountId=null,o.claudeConsoleAccountId=null):m.claudeAccountId.startsWith("console:")?(o.claudeConsoleAccountId=m.claudeAccountId.substring(8),o.claudeAccountId=null):(m.claudeAccountId.startsWith("group:"),o.claudeAccountId=m.claudeAccountId,o.claudeConsoleAccountId=null)),m.geminiAccountId!==""&&(m.geminiAccountId==="SHARED_POOL"?o.geminiAccountId=null:o.geminiAccountId=m.geminiAccountId),m.openaiAccountId!==""&&(m.openaiAccountId==="SHARED_POOL"?o.openaiAccountId=null:o.openaiAccountId=m.openaiAccountId),m.bedrockAccountId!==""&&(m.bedrockAccountId==="SHARED_POOL"?o.bedrockAccountId=null:o.bedrockAccountId=m.bedrockAccountId),m.droidAccountId!==""&&(m.droidAccountId==="SHARED_POOL"?o.droidAccountId=null:o.droidAccountId=m.droidAccountId),m.isActive!==null&&(o.isActive=m.isActive),H.value!=="none"&&(o.tags=m.tags,o.tagOperation=H.value);const i=await G.put("/admin/api-keys/batch",{keyIds:c.selectedKeys,updates:o});if(i.success){const{successCount:g,failedCount:C,errors:p}=i.data;if(g>0){if(j(`成功批量编辑 ${g} 个 API Keys`,"success"),C>0){const l=p.map(y=>`${y.keyId}: ${y.error}`).join(` `);j(`${C} 个编辑失败: ${l}`,"warning")}}else j("所有 API Keys 编辑失败","error");P("success"),P("close")}else j(i.message||"批量编辑失败","error")}catch(o){j("批量编辑失败","error"),console.error("批量编辑 API Keys 失败:",o)}finally{$.value=!1}};return rt(async()=>{if(Q.value=await B.fetchTags(),c.accounts){const o=[];c.accounts.openai&&c.accounts.openai.forEach(i=>{o.push({...i,platform:"openai"})}),c.accounts.openaiResponses&&c.accounts.openaiResponses.forEach(i=>{o.push({...i,platform:"openai-responses"})}),F.value={claude:c.accounts.claude||[],gemini:c.accounts.gemini||[],openai:o,bedrock:c.accounts.bedrock||[],droid:c.accounts.droid||[],claudeGroups:c.accounts.claudeGroups||[],geminiGroups:c.accounts.geminiGroups||[],openaiGroups:c.accounts.openaiGroups||[],droidGroups:c.accounts.droidGroups||[]}}}),(o,i)=>(n(),ke(Pe,{to:"body"},[e("div",wn,[e("div",hn,[e("div",An,[e("div",$n,[i[28]||(i[28]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})],-1)),e("h3",Cn," 批量编辑 API Keys ("+u(k.value)+" 个) ",1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300",onClick:i[0]||(i[0]=g=>o.$emit("close"))},i[29]||(i[29]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:Ke(f,["prevent"])},[e("div",In,[e("div",Kn,[i[31]||(i[31]=e("i",{class:"fas fa-info-circle mt-1 text-blue-500"},null,-1)),e("div",null,[i[30]||(i[30]=e("p",{class:"text-sm font-medium text-blue-800 dark:text-blue-300"},"批量编辑说明",-1)),e("p",Ln," 以下设置将应用到所选的 "+u(k.value)+" 个 API Key。只有填写或修改的字段才会被更新,空白字段将保持原值不变。 ",1)])])]),e("div",null,[i[41]||(i[41]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"}," 标签 (批量操作) ",-1)),e("div",Dn,[e("div",_n,[e("label",Tn,[_(e("input",{"onUpdate:modelValue":i[1]||(i[1]=g=>H.value=g),class:"mr-2",type:"radio",value:"replace"},null,512),[[ce,H.value]]),i[32]||(i[32]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"替换标签",-1))]),e("label",Sn,[_(e("input",{"onUpdate:modelValue":i[2]||(i[2]=g=>H.value=g),class:"mr-2",type:"radio",value:"add"},null,512),[[ce,H.value]]),i[33]||(i[33]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"添加标签",-1))]),e("label",Un,[_(e("input",{"onUpdate:modelValue":i[3]||(i[3]=g=>H.value=g),class:"mr-2",type:"radio",value:"remove"},null,512),[[ce,H.value]]),i[34]||(i[34]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"移除标签",-1))]),e("label",Pn,[_(e("input",{"onUpdate:modelValue":i[4]||(i[4]=g=>H.value=g),class:"mr-2",type:"radio",value:"none"},null,512),[[ce,H.value]]),i[35]||(i[35]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"不修改标签",-1))])]),H.value!=="none"?(n(),d("div",Mn,[m.tags.length>0?(n(),d("div",Rn,[e("div",Vn,u(H.value==="replace"?"新标签列表:":H.value==="add"?"要添加的标签:":"要移除的标签:"),1),e("div",En,[(n(!0),d(Z,null,re(m.tags,(g,C)=>(n(),d("span",{key:"selected-"+C,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},[A(u(g)+" ",1),e("button",{class:"ml-1 hover:text-blue-900",type:"button",onClick:p=>me(C)},i[36]||(i[36]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,On)]))),128))])])):h("",!0),D.value.length>0?(n(),d("div",jn,[i[38]||(i[38]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",Gn,[(n(!0),d(Z,null,re(D.value,g=>(n(),d("button",{key:"available-"+g,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-300",type:"button",onClick:C=>be(g)},[i[37]||(i[37]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),A(" "+u(g),1)],8,qn))),128))])])):h("",!0),e("div",null,[i[40]||(i[40]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",zn,[_(e("input",{"onUpdate:modelValue":i[5]||(i[5]=g=>S.value=g),class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",placeholder:"输入新标签名称",type:"text",onKeypress:st(Ke(ge,["prevent"]),["enter"])},null,40,Fn),[[te,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600 dark:bg-green-600 dark:hover:bg-green-700",type:"button",onClick:ge},i[39]||(i[39]=[e("i",{class:"fas fa-plus"},null,-1)]))])])])):h("",!0)])]),e("div",Wn,[i[45]||(i[45]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"},"速率限制设置")],-1)),e("div",Bn,[e("div",Nn,[e("div",null,[i[42]||(i[42]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"}," 时间窗口 (分钟) ",-1)),_(e("input",{"onUpdate:modelValue":i[6]||(i[6]=g=>m.rateLimitWindow=g),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"1",placeholder:"不修改",type:"number"},null,512),[[te,m.rateLimitWindow]])]),e("div",null,[i[43]||(i[43]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),_(e("input",{"onUpdate:modelValue":i[7]||(i[7]=g=>m.rateLimitRequests=g),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"1",placeholder:"不修改",type:"number"},null,512),[[te,m.rateLimitRequests]])]),e("div",null,[i[44]||(i[44]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"费用限制 (美元)",-1)),_(e("input",{"onUpdate:modelValue":i[8]||(i[8]=g=>m.rateLimitCost=g),class:"form-input w-full border-gray-300 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"0",placeholder:"不修改",step:"0.01",type:"number"},null,512),[[te,m.rateLimitCost]])])])])]),e("div",null,[i[46]||(i[46]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日费用限制 (美元) ",-1)),_(e("input",{"onUpdate:modelValue":i[9]||(i[9]=g=>m.dailyCostLimit=g),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"0",placeholder:"不修改 (0 表示无限制)",step:"0.01",type:"number"},null,512),[[te,m.dailyCostLimit]])]),e("div",null,[i[47]||(i[47]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 总费用限制 (美元) ",-1)),_(e("input",{"onUpdate:modelValue":i[10]||(i[10]=g=>m.totalCostLimit=g),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"0",placeholder:"不修改 (0 表示无限制)",step:"0.01",type:"number"},null,512),[[te,m.totalCostLimit]])]),e("div",null,[i[48]||(i[48]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," Opus 模型周费用限制 (美元) ",-1)),_(e("input",{"onUpdate:modelValue":i[11]||(i[11]=g=>m.weeklyOpusCostLimit=g),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"0",placeholder:"不修改 (0 表示无限制)",step:"0.01",type:"number"},null,512),[[te,m.weeklyOpusCostLimit]]),i[49]||(i[49]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置 Opus 模型的周费用限制(周一到周日),仅限 Claude 官方账户 ",-1))]),e("div",null,[i[50]||(i[50]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),_(e("input",{"onUpdate:modelValue":i[12]||(i[12]=g=>m.concurrencyLimit=g),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",min:"0",placeholder:"不修改 (0 表示无限制)",type:"number"},null,512),[[te,m.concurrencyLimit]])]),e("div",null,[e("div",Hn,[i[54]||(i[54]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"激活状态",-1)),e("div",Yn,[e("label",Qn,[_(e("input",{"onUpdate:modelValue":i[13]||(i[13]=g=>m.isActive=g),class:"mr-2",type:"radio",value:!0},null,512),[[ce,m.isActive]]),i[51]||(i[51]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"激活",-1))]),e("label",Jn,[_(e("input",{"onUpdate:modelValue":i[14]||(i[14]=g=>m.isActive=g),class:"mr-2",type:"radio",value:!1},null,512),[[ce,m.isActive]]),i[52]||(i[52]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"禁用",-1))]),e("label",Xn,[_(e("input",{"onUpdate:modelValue":i[15]||(i[15]=g=>m.isActive=g),class:"mr-2",type:"radio",value:null},null,512),[[ce,m.isActive]]),i[53]||(i[53]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"不修改",-1))])])])]),e("div",null,[i[61]||(i[61]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Zn,[e("label",ei,[_(e("input",{"onUpdate:modelValue":i[16]||(i[16]=g=>m.permissions=g),class:"mr-2",type:"radio",value:""},null,512),[[ce,m.permissions]]),i[55]||(i[55]=e("span",{class:"text-sm text-gray-700"},"不修改",-1))]),e("label",ti,[_(e("input",{"onUpdate:modelValue":i[17]||(i[17]=g=>m.permissions=g),class:"mr-2",type:"radio",value:"all"},null,512),[[ce,m.permissions]]),i[56]||(i[56]=e("span",{class:"text-sm text-gray-700"},"全部服务",-1))]),e("label",si,[_(e("input",{"onUpdate:modelValue":i[18]||(i[18]=g=>m.permissions=g),class:"mr-2",type:"radio",value:"claude"},null,512),[[ce,m.permissions]]),i[57]||(i[57]=e("span",{class:"text-sm text-gray-700"},"仅 Claude",-1))]),e("label",ai,[_(e("input",{"onUpdate:modelValue":i[19]||(i[19]=g=>m.permissions=g),class:"mr-2",type:"radio",value:"gemini"},null,512),[[ce,m.permissions]]),i[58]||(i[58]=e("span",{class:"text-sm text-gray-700"},"仅 Gemini",-1))]),e("label",ri,[_(e("input",{"onUpdate:modelValue":i[20]||(i[20]=g=>m.permissions=g),class:"mr-2",type:"radio",value:"openai"},null,512),[[ce,m.permissions]]),i[59]||(i[59]=e("span",{class:"text-sm text-gray-700"},"仅 OpenAI",-1))]),e("label",oi,[_(e("input",{"onUpdate:modelValue":i[21]||(i[21]=g=>m.permissions=g),class:"mr-2",type:"radio",value:"droid"},null,512),[[ce,m.permissions]]),i[60]||(i[60]=e("span",{class:"text-sm text-gray-700"},"仅 Droid",-1))])])]),e("div",null,[e("div",li,[i[62]||(i[62]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:Ae},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,u(U.value?"刷新中...":"刷新账号"),1)],8,ni)]),e("div",ii,[e("div",null,[i[63]||(i[63]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(Ce,{modelValue:tt(T),"onUpdate:modelValue":i[22]||(i[22]=g=>et(T)?T.value=g:null),accounts:F.value.claude,"default-option-text":"请选择Claude账号",disabled:!ie("claude"),groups:F.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude","special-options":s},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[i[64]||(i[64]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(Ce,{modelValue:tt(W),"onUpdate:modelValue":i[23]||(i[23]=g=>et(W)?W.value=g:null),accounts:F.value.gemini,"default-option-text":"请选择Gemini账号",disabled:!ie("gemini"),groups:F.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini","special-options":s},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[i[65]||(i[65]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(Ce,{modelValue:tt(I),"onUpdate:modelValue":i[24]||(i[24]=g=>et(I)?I.value=g:null),accounts:F.value.openai,"default-option-text":"请选择OpenAI账号",disabled:!ie("openai"),groups:F.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai","special-options":s},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[i[66]||(i[66]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(Ce,{modelValue:tt(K),"onUpdate:modelValue":i[25]||(i[25]=g=>et(K)?K.value=g:null),accounts:F.value.bedrock,"default-option-text":"请选择Bedrock账号",disabled:!ie("openai"),groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock","special-options":s},null,8,["modelValue","accounts","disabled"])]),e("div",null,[i[67]||(i[67]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Droid 专属账号",-1)),ne(Ce,{modelValue:tt(se),"onUpdate:modelValue":i[26]||(i[26]=g=>et(se)?se.value=g:null),accounts:F.value.droid,"default-option-text":"请选择Droid账号",disabled:!ie("droid"),groups:F.value.droidGroups,placeholder:"请选择Droid账号",platform:"droid","special-options":s},null,8,["modelValue","accounts","disabled","groups"])])])]),e("div",di,[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-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:i[27]||(i[27]=g=>o.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:$.value,type:"submit"},[$.value?(n(),d("div",ci)):(n(),d("i",gi)),A(" "+u($.value?"保存中...":"批量保存"),1)],8,ui)])],32)])])]))}},mi=De(pi,[["__scopeId","data-v-0dc5b225"]]),xi={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},yi={class:"modal-content relative mx-auto w-full max-w-lg p-8"},fi={class:"mb-6 flex items-center justify-between"},bi={class:"flex items-center gap-3"},vi={class:"text-sm text-gray-600 dark:text-gray-400"},ki={class:"space-y-6"},wi={class:"rounded-lg border border-gray-200 bg-gradient-to-r from-gray-50 to-gray-100 p-4 dark:border-gray-600 dark:from-gray-700 dark:to-gray-800"},hi={class:"flex items-center justify-between"},Ai={class:"text-sm font-semibold text-gray-800 dark:text-gray-200"},$i={class:"ml-2 text-xs font-normal text-gray-600"},Ci={class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},Ii={key:0,class:"mb-4"},Ki={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Li={class:"mb-3 grid grid-cols-3 gap-2"},Di=["onClick"],_i={key:1,class:"animate-fadeIn"},Ti=["min"],Si={key:2,class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-4 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20"},Ui={class:"flex items-center justify-between"},Pi={class:"text-sm font-semibold text-blue-900 dark:text-blue-200"},Mi={class:"flex gap-3 pt-2"},Ri=["disabled"],Vi={key:0,class:"loading-spinner mr-2"},Ei={key:1,class:"fas fa-save mr-2"},Oi={__name:"ExpiryEditModal",props:{show:{type:Boolean,required:!0},apiKey:{type:Object,required:!0}},emits:["close","save"],setup(w,{expose:N,emit:c}){const P=w,B=c,$=L(!1),U=Fe({expireDuration:"",customExpireDate:"",expiresAt:null}),F=[{value:"",label:"永不过期"},{value:"1d",label:"1 天"},{value:"7d",label:"7 天"},{value:"30d",label:"30 天"},{value:"90d",label:"90 天"},{value:"180d",label:"180 天"},{value:"365d",label:"1 年"},{value:"730d",label:"2 年"}],S=O(()=>{const I=new Date;return I.setMinutes(I.getMinutes()+1),I.toISOString().slice(0,16)});Le(()=>P.show,I=>{I&&Q()}),Le(()=>{var I;return(I=P.apiKey)==null?void 0:I.id},I=>{I&&P.show&&Q()});const Q=()=>{$.value=!1,P.apiKey.expiresAt?(U.expireDuration="custom",U.customExpireDate=new Date(P.apiKey.expiresAt).toISOString().slice(0,16),U.expiresAt=P.apiKey.expiresAt):(U.expireDuration="",U.customExpireDate="",U.expiresAt=null)},H=I=>{if(U.expireDuration=I,!I){U.expiresAt=null;return}if(I==="custom")return;const K=new Date,se=I.match(/(\d+)([dhmy])/);if(se){const[,ie,ge]=se,be=parseInt(ie);switch(ge){case"d":K.setDate(K.getDate()+be);break;case"h":K.setHours(K.getHours()+be);break;case"m":K.setMonth(K.getMonth()+be);break;case"y":K.setFullYear(K.getFullYear()+be);break}U.expiresAt=K.toISOString()}},k=()=>{U.customExpireDate&&(U.expiresAt=new Date(U.customExpireDate).toISOString())},D=I=>I?new Date(I).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",m=I=>I?new Date(I){if(!I)return null;const K=new Date,ie=new Date(I)-K,ge=Math.ceil(ie/(1e3*60*60*24));return ie<0?{text:"已过期",class:"text-red-600"}:ge<=7?{text:`${ge} 天后过期`,class:"text-orange-600"}:ge<=30?{text:`${ge} 天后过期`,class:"text-yellow-600"}:{text:`${Math.ceil(ge/30)} 个月后过期`,class:"text-green-600"}},V=()=>{$.value=!0,B("save",{keyId:P.apiKey.id,expiresAt:U.expiresAt})},T=async()=>{let I=!0;window.showConfirm?I=await window.showConfirm("激活 API Key",`确定要立即激活此 API Key 吗?激活后将在 ${P.apiKey.activationDays||(P.apiKey.activationUnit==="hours"?24:30)} ${P.apiKey.activationUnit==="hours"?"小时":"天"}后自动过期。`,"确定激活","取消"):I=confirm(`确定要立即激活此 API Key 吗?激活后将在 ${P.apiKey.activationDays||(P.apiKey.activationUnit==="hours"?24:30)} ${P.apiKey.activationUnit==="hours"?"小时":"天"}后自动过期。`),I&&($.value=!0,B("save",{keyId:P.apiKey.id,activateNow:!0}))};return N({resetSaving:()=>{$.value=!1}}),(I,K)=>(n(),ke(Pe,{to:"body"},[w.show?(n(),d("div",xi,[e("div",{class:"fixed inset-0 bg-gray-900 bg-opacity-50 backdrop-blur-sm",onClick:K[0]||(K[0]=se=>I.$emit("close"))}),e("div",yi,[e("div",fi,[e("div",bi,[K[6]||(K[6]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-orange-600"},[e("i",{class:"fas fa-clock text-white"})],-1)),e("div",null,[K[5]||(K[5]=e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改过期时间",-1)),e("p",vi,' 为 "'+u(w.apiKey.name||"API Key")+'" 设置新的过期时间 ',1)])]),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:K[1]||(K[1]=se=>I.$emit("close"))},K[7]||(K[7]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",ki,[e("div",wi,[e("div",hi,[e("div",null,[K[12]||(K[12]=e("p",{class:"mb-1 text-xs font-medium text-gray-600 dark:text-gray-400"},"当前状态",-1)),e("p",Ai,[w.apiKey.expirationMode==="activation"&&!w.apiKey.isActivated?(n(),d(Z,{key:0},[K[8]||(K[8]=e("i",{class:"fas fa-pause-circle mr-1 text-blue-500"},null,-1)),K[9]||(K[9]=A(" 未激活 ",-1)),e("span",$i," (激活后 "+u(w.apiKey.activationDays||(w.apiKey.activationUnit==="hours"?24:30))+" "+u(w.apiKey.activationUnit==="hours"?"小时":"天")+"过期) ",1)],64)):w.apiKey.expiresAt?(n(),d(Z,{key:1},[A(u(D(w.apiKey.expiresAt))+" ",1),s(w.apiKey.expiresAt)?(n(),d("span",{key:0,class:z(["ml-2 text-xs font-normal",s(w.apiKey.expiresAt).class])}," ("+u(s(w.apiKey.expiresAt).text)+") ",3)):h("",!0)],64)):(n(),d(Z,{key:2},[K[10]||(K[10]=e("i",{class:"fas fa-infinity mr-1 text-gray-500"},null,-1)),K[11]||(K[11]=A(" 永不过期 ",-1))],64))])]),e("div",Ci,[e("i",{class:z(["fas fa-hourglass-half text-lg",w.apiKey.expiresAt&&m(w.apiKey.expiresAt)?"text-red-500":"text-gray-400"])},null,2)])])]),w.apiKey.expirationMode==="activation"&&!w.apiKey.isActivated?(n(),d("div",Ii,[e("button",{class:"w-full rounded-lg bg-gradient-to-r from-blue-500 to-blue-600 px-4 py-3 font-semibold text-white transition-all hover:from-blue-600 hover:to-blue-700 hover:shadow-lg",onClick:T},[K[13]||(K[13]=e("i",{class:"fas fa-rocket mr-2"},null,-1)),A(" 立即激活 (激活后 "+u(w.apiKey.activationDays||(w.apiKey.activationUnit==="hours"?24:30))+" "+u(w.apiKey.activationUnit==="hours"?"小时":"天")+"过期) ",1)]),e("p",Ki,[K[14]||(K[14]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),A(" 点击立即激活此 API Key,激活后将在 "+u(w.apiKey.activationDays||(w.apiKey.activationUnit==="hours"?24:30))+" "+u(w.apiKey.activationUnit==="hours"?"小时":"天")+"后过期 ",1)])])):h("",!0),e("div",null,[K[16]||(K[16]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择新的期限",-1)),e("div",Li,[(n(),d(Z,null,re(F,se=>e("button",{key:se.value,class:z(["rounded-lg px-3 py-2 text-sm font-medium transition-all",U.expireDuration===se.value?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:ie=>H(se.value)},u(se.label),11,Di)),64)),e("button",{class:z(["rounded-lg px-3 py-2 text-sm font-medium transition-all",U.expireDuration==="custom"?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:K[2]||(K[2]=se=>H("custom"))},K[15]||(K[15]=[e("i",{class:"fas fa-calendar-alt mr-1"},null,-1),A(" 自定义 ",-1)]),2)])]),U.expireDuration==="custom"?(n(),d("div",_i,[K[17]||(K[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择日期和时间",-1)),_(e("input",{"onUpdate:modelValue":K[3]||(K[3]=se=>U.customExpireDate=se),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:S.value,type:"datetime-local",onChange:k},null,40,Ti),[[te,U.customExpireDate]]),K[18]||(K[18]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择一个未来的日期和时间作为过期时间 ",-1))])):h("",!0),U.expiresAt!==w.apiKey.expiresAt?(n(),d("div",Si,[e("div",Ui,[e("div",null,[K[21]||(K[21]=e("p",{class:"mb-1 text-xs font-medium text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-arrow-right mr-1"}),A(" 新的过期时间 ")],-1)),e("p",Pi,[U.expiresAt?(n(),d(Z,{key:0},[A(u(D(U.expiresAt))+" ",1),s(U.expiresAt)?(n(),d("span",{key:0,class:z(["ml-2 text-xs font-normal",s(U.expiresAt).class])}," ("+u(s(U.expiresAt).text)+") ",3)):h("",!0)],64)):(n(),d(Z,{key:1},[K[19]||(K[19]=e("i",{class:"fas fa-infinity mr-1"},null,-1)),K[20]||(K[20]=A(" 永不过期 ",-1))],64))])]),K[22]||(K[22]=e("div",{class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},[e("i",{class:"fas fa-check text-lg text-green-500"})],-1))])])):h("",!0),e("div",Mi,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",onClick:K[4]||(K[4]=se=>I.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 font-semibold",disabled:$.value||U.expiresAt===w.apiKey.expiresAt,onClick:V},[$.value?(n(),d("div",Vi)):(n(),d("i",Ei)),A(" "+u($.value?"保存中...":"保存更改"),1)],8,Ri)])])])])):h("",!0)]))}},ji=De(Oi,[["__scopeId","data-v-fb30c1d3"]]),Gi={class:"w-full"},qi={key:0,class:"flex items-center justify-center rounded-lg px-3 py-2 text-xs"},zi={key:1,class:"space-y-1.5"},Fi={class:"flex items-center justify-between text-[11px] font-medium"},Wi={class:"text-gray-700 dark:text-gray-200"},Bi={class:"relative h-1.5 overflow-hidden rounded-full bg-gray-200/85 dark:bg-gray-700/70"},Ni={class:"relative z-10 flex h-full items-center justify-between px-3"},Hi={class:"flex items-center gap-1.5"},Yi={class:"flex items-center gap-1.5"},Qi={key:0,class:"pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-700 group-hover:opacity-30",style:{background:"linear-gradient(105deg, transparent 35%, rgba(255,255,255,0.55) 48%, transparent 63%)",animation:"shine 2.8s infinite"}},Ji={__name:"LimitProgressBar",props:{type:{type:String,required:!0,validator:w=>["daily","opus","window","total"].includes(w)},variant:{type:String,default:"full",validator:w=>["full","compact"].includes(w)},label:{type:String,required:!0},current:{type:Number,default:0},limit:{type:Number,required:!0},showShine:{type:Boolean,default:!1}},setup(w){const N=w,c=O(()=>N.variant==="compact"),P=O(()=>{if(!N.limit||N.limit<=0)return 0;const D=N.current/N.limit*100;return Math.min(D,100)}),B=O(()=>{switch(N.type){case"daily":return"border-emerald-200/80 bg-white/80 shadow-[0_10px_24px_rgba(16,185,129,0.18)] group-hover:shadow-[0_14px_30px_rgba(16,185,129,0.22)] dark:border-emerald-500/40 dark:bg-emerald-950/40 dark:shadow-[0_12px_28px_rgba(0,0,0,0.45)]";case"opus":return"border-violet-200/80 bg-white/80 shadow-[0_10px_24px_rgba(139,92,246,0.18)] group-hover:shadow-[0_14px_30px_rgba(139,92,246,0.22)] dark:border-violet-500/40 dark:bg-violet-950/40 dark:shadow-[0_12px_28px_rgba(0,0,0,0.45)]";case"window":return"border-sky-200/80 bg-white/80 shadow-[0_10px_24px_rgba(56,189,248,0.18)] group-hover:shadow-[0_14px_30px_rgba(56,189,248,0.22)] dark:border-sky-500/40 dark:bg-sky-950/40 dark:shadow-[0_12px_28px_rgba(0,0,0,0.45)]";case"total":return"border-blue-200/80 bg-white/80 shadow-[0_10px_24px_rgba(59,130,246,0.18)] group-hover:shadow-[0_14px_30px_rgba(59,130,246,0.22)] dark:border-blue-500/40 dark:bg-blue-950/40 dark:shadow-[0_12px_28px_rgba(0,0,0,0.45)]";default:return"border-gray-200/80 bg-white/80 shadow-[0_10px_24px_rgba(148,163,184,0.18)] group-hover:shadow-[0_14px_30px_rgba(148,163,184,0.22)] dark:border-gray-600/50 dark:bg-gray-900/50 dark:shadow-[0_12px_28px_rgba(0,0,0,0.45)]"}}),$=O(()=>{switch(N.type){case"daily":return"bg-gradient-to-r from-emerald-50 via-green-50 to-emerald-100 dark:from-emerald-900/40 dark:via-emerald-900/20 dark:to-emerald-800/30";case"opus":return"bg-gradient-to-r from-violet-50 via-violet-100 to-fuchsia-100 dark:from-violet-900/40 dark:via-violet-900/20 dark:to-fuchsia-900/30";case"window":return"bg-gradient-to-r from-sky-50 via-sky-100 to-cyan-100 dark:from-sky-900/40 dark:via-sky-900/20 dark:to-cyan-900/30";case"total":return"bg-gradient-to-r from-blue-50 via-blue-100 to-sky-100 dark:from-blue-900/40 dark:via-blue-900/20 dark:to-sky-900/30";default:return"bg-gradient-to-r from-gray-100 via-gray-50 to-gray-200 dark:from-gray-900/30 dark:via-gray-900/10 dark:to-gray-800/30"}}),U=O(()=>{const D=P.value;return N.type==="daily"?D>=90?"bg-gradient-to-r from-rose-500 via-red-500 to-rose-600 dark:from-rose-500 dark:via-red-500 dark:to-rose-600":D>=70?"bg-gradient-to-r from-amber-400 via-orange-400 to-amber-500 dark:from-amber-400 dark:via-orange-400 dark:to-amber-500":"bg-gradient-to-r from-emerald-400 via-emerald-500 to-teal-500 dark:from-emerald-400 dark:via-emerald-500 dark:to-teal-500":N.type==="opus"?D>=90?"bg-gradient-to-r from-rose-500 via-red-500 to-rose-600 dark:from-rose-500 dark:via-red-500 dark:to-rose-600":D>=70?"bg-gradient-to-r from-amber-400 via-orange-400 to-amber-500 dark:from-amber-400 dark:via-orange-400 dark:to-amber-500":"bg-gradient-to-r from-violet-400 via-purple-500 to-fuchsia-500 dark:from-violet-400 dark:via-purple-500 dark:to-fuchsia-500":N.type==="window"?D>=90?"bg-gradient-to-r from-rose-500 via-red-500 to-rose-600 dark:from-rose-500 dark:via-red-500 dark:to-rose-600":D>=70?"bg-gradient-to-r from-amber-400 via-orange-400 to-amber-500 dark:from-amber-400 dark:via-orange-400 dark:to-amber-500":"bg-gradient-to-r from-sky-400 via-cyan-400 to-blue-500 dark:from-sky-400 dark:via-cyan-400 dark:to-blue-500":N.type==="total"?D>=90?"bg-gradient-to-r from-rose-500 via-red-500 to-rose-600 dark:from-rose-500 dark:via-red-500 dark:to-rose-600":D>=70?"bg-gradient-to-r from-amber-400 via-orange-400 to-amber-500 dark:from-amber-400 dark:via-orange-400 dark:to-amber-500":"bg-gradient-to-r from-sky-500 via-blue-500 to-cyan-500 dark:from-sky-500 dark:via-blue-500 dark:to-cyan-500":"bg-gray-300 dark:bg-gray-400"}),F=O(()=>{const D=P.value;if(D>=95)return"bg-rose-500 dark:bg-rose-400";if(D>=80)return"bg-amber-400 dark:bg-amber-300";switch(N.type){case"daily":return"bg-emerald-500 dark:bg-emerald-400";case"opus":return"bg-violet-500 dark:bg-violet-400";case"window":return"bg-sky-500 dark:bg-sky-400";case"total":return"bg-blue-500 dark:bg-blue-400";default:return"bg-slate-400 dark:bg-slate-500"}}),S=O(()=>{const D=P.value;if(D>=95)return"text-rose-600 dark:text-rose-300";if(D>=80)return"text-amber-600 dark:text-amber-300";switch(N.type){case"daily":return"text-emerald-600 dark:text-emerald-300";case"opus":return"text-violet-600 dark:text-violet-300";case"window":return"text-sky-600 dark:text-sky-300";case"total":return"text-blue-600 dark:text-blue-300";default:return"text-gray-600 dark:text-gray-300"}}),Q=O(()=>{const D=P.value;let m="";if(D>=90)m="text-red-700 dark:text-red-400";else if(D>=70)m="text-orange-700 dark:text-orange-400";else switch(N.type){case"daily":m="text-green-700 dark:text-green-400";break;case"opus":m="text-purple-700 dark:text-purple-400";break;case"window":m="text-blue-700 dark:text-blue-400";break;default:m="text-gray-600 dark:text-gray-400"}let s="";switch(N.type){case"daily":s="fas fa-calendar-day";break;case"opus":s="fas fa-gem";break;case"window":s="fas fa-clock";break;case"total":s="fas fa-wallet";break;default:s="fas fa-infinity"}return`${s} ${m}`}),H=O(()=>{if(P.value>40)return"text-white drop-shadow-[0_1px_2px_rgba(0,0,0,0.8)]";switch(N.type){case"daily":return"text-gray-900 dark:text-gray-100";case"opus":return"text-purple-900 dark:text-purple-100";case"window":return"text-blue-900 dark:text-blue-100";case"total":return"text-blue-900 dark:text-blue-100";default:return"text-gray-900 dark:text-gray-100"}}),k=O(()=>{const D=P.value;if(D>70)return"text-white drop-shadow-[0_2px_4px_rgba(0,0,0,0.9)]";if(D>=90)return"text-red-700 dark:text-red-300";if(D>=70)return"text-orange-700 dark:text-orange-300";switch(N.type){case"daily":return"text-green-800 dark:text-green-200";case"opus":return"text-purple-800 dark:text-purple-200";case"window":return"text-blue-800 dark:text-blue-200";case"total":return"text-blue-800 dark:text-blue-200";default:return"text-gray-900 dark:text-gray-100"}});return(D,m)=>(n(),d("div",Gi,[!w.limit||w.limit<=0?(n(),d("div",qi,m[0]||(m[0]=[e("div",{class:"flex items-center gap-1.5 text-gray-600 dark:text-gray-300"},[e("i",{class:"fas fa-infinity text-sm text-gray-500 dark:text-gray-400"}),e("span",{class:"font-medium"},"无限制")],-1)]))):c.value?(n(),d("div",zi,[e("div",Fi,[e("div",{class:z(["flex items-center gap-1.5",S.value])},[e("i",{class:z(["text-[11px]",Q.value])},null,2),e("span",null,u(w.label),1)],2),e("span",Wi,"$"+u(w.current.toFixed(2))+" / $"+u(w.limit.toFixed(2)),1)]),e("div",Bi,[e("div",{class:z(["absolute inset-y-0 rounded-full transition-all duration-500 ease-out",F.value]),style:bt({width:P.value+"%"})},null,6)])])):(n(),d("div",{key:2,class:z(["group relative h-9 w-full overflow-hidden rounded-xl border transition-all duration-300 ease-out",B.value])},[e("div",{class:z(["absolute inset-0",$.value])},null,2),e("div",{class:z(["absolute inset-0 h-full transition-all duration-500 ease-out",U.value]),style:bt({width:P.value+"%"})},null,6),m[1]||(m[1]=e("div",{class:"pointer-events-none absolute inset-0 rounded-xl border border-white/50 opacity-40 mix-blend-overlay dark:border-white/10"},null,-1)),e("div",Ni,[e("div",Hi,[e("i",{class:z(["text-xs",Q.value])},null,2),e("span",{class:z(["text-xs font-semibold",H.value])},u(w.label),3)]),e("div",Yi,[e("span",{class:z(["text-xs font-bold tabular-nums",k.value])}," $"+u(w.current.toFixed(2))+" / $"+u(w.limit.toFixed(2)),3)])]),w.showShine&&P.value>0?(n(),d("div",Qi)):h("",!0)],2))]))}},Ue=De(Ji,[["__scopeId","data-v-8a01dc56"]]),Xi={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Zi={class:"modal-content relative mx-auto flex max-h-[90vh] w-[95%] max-w-5xl flex-col p-4 sm:w-full sm:p-6 md:p-8"},ed={class:"mb-4 flex items-center justify-between sm:mb-6"},td={class:"flex items-center gap-2 sm:gap-3"},sd={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},ad={class:"modal-scroll-content custom-scrollbar flex-1 overflow-y-auto"},rd={class:"mb-6 grid grid-cols-1 gap-4 md:grid-cols-2"},od={class:"rounded-lg border border-blue-200 bg-gradient-to-br from-blue-50 to-blue-100 p-4 dark:border-blue-700 dark:from-blue-900/20 dark:to-blue-800/20"},ld={class:"text-2xl font-bold text-gray-900 dark:text-gray-100"},nd={class:"mt-1 text-xs text-gray-600 dark:text-gray-400"},id={class:"rounded-lg border border-green-200 bg-gradient-to-br from-green-50 to-green-100 p-4 dark:border-green-700 dark:from-green-900/20 dark:to-green-800/20"},dd={class:"text-2xl font-bold text-gray-900 dark:text-gray-100"},ud={class:"mt-1 text-xs text-gray-600 dark:text-gray-400"},cd={class:"rounded-lg border border-yellow-200 bg-gradient-to-br from-yellow-50 to-yellow-100 p-4 dark:border-yellow-700 dark:from-yellow-900/20 dark:to-yellow-800/20"},gd={class:"text-2xl font-bold text-gray-900 dark:text-gray-100"},pd={class:"mt-1 text-xs text-gray-600 dark:text-gray-400"},md={class:"rounded-lg border border-purple-200 bg-gradient-to-br from-purple-50 to-purple-100 p-4 dark:border-purple-700 dark:from-purple-900/20 dark:to-purple-800/20"},xd={class:"space-y-1 text-sm"},yd={class:"flex justify-between"},fd={class:"font-semibold text-gray-900 dark:text-gray-100"},bd={class:"flex justify-between"},vd={class:"font-semibold text-gray-900 dark:text-gray-100"},kd={class:"mb-6"},wd={class:"space-y-3 rounded-lg bg-gray-50 p-4 dark:bg-gray-700/50"},hd={class:"flex items-center justify-between"},Ad={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},$d={class:"flex items-center justify-between"},Cd={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Id={key:0,class:"flex items-center justify-between"},Kd={class:"text-sm font-semibold text-purple-600"},Ld={key:1,class:"flex items-center justify-between"},Dd={class:"text-sm font-semibold text-purple-600"},_d={key:0,class:"mb-6"},Td={class:"space-y-3 rounded-lg bg-gray-50 p-4 dark:bg-gray-700/50"},Sd={key:0,class:"space-y-1.5"},Ud={class:"text-right text-xs text-gray-500 dark:text-gray-400"},Pd={key:1,class:"space-y-1.5"},Md={class:"text-right text-xs text-gray-500 dark:text-gray-400"},Rd={key:2,class:"space-y-1.5"},Vd={class:"text-right text-xs text-gray-500 dark:text-gray-400"},Ed={key:3,class:"flex items-center justify-between rounded-lg border border-purple-200/70 bg-white/60 px-3 py-2 text-sm shadow-sm dark:border-purple-500/40 dark:bg-purple-950/20"},Od={class:"font-semibold text-purple-600 dark:text-purple-300"},jd={key:4,class:"space-y-2"},Gd={__name:"UsageDetailModal",props:{show:{type:Boolean,required:!0},apiKey:{type:Object,required:!0}},emits:["close"],setup(w,{emit:N}){const c=w,P=N,B=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.requests)||0}),$=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.daily)==null?void 0:o.requests)||0}),U=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.tokens)||0}),F=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.daily)==null?void 0:o.tokens)||0}),S=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.cost)||0}),Q=O(()=>c.apiKey.dailyCost||0),H=O(()=>c.apiKey.totalCostLimit||0),k=O(()=>c.apiKey.weeklyOpusCost||0),D=O(()=>c.apiKey.weeklyOpusCostLimit||0),m=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.inputTokens)||0}),s=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.outputTokens)||0}),V=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.cacheCreateTokens)||0}),T=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.total)==null?void 0:o.cacheReadTokens)||0}),W=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.averages)==null?void 0:o.rpm)||0}),I=O(()=>{var f,o;return((o=(f=c.apiKey.usage)==null?void 0:f.averages)==null?void 0:o.tpm)||0}),K=O(()=>c.apiKey.dailyCostLimit>0||c.apiKey.totalCostLimit>0||c.apiKey.concurrencyLimit>0||c.apiKey.weeklyOpusCostLimit>0||c.apiKey.rateLimitWindow>0||c.apiKey.tokenLimit>0),se=O(()=>!c.apiKey.dailyCostLimit||c.apiKey.dailyCostLimit===0?0:Q.value/c.apiKey.dailyCostLimit*100),ie=O(()=>!H.value||H.value===0?0:S.value/H.value*100),ge=O(()=>!D.value||D.value===0?0:k.value/D.value*100),be=f=>!f&&f!==0?"0":f.toLocaleString("zh-CN"),me=f=>f>=1e6?(f/1e6).toFixed(1)+"M":f>=1e3?(f/1e3).toFixed(1)+"K":f.toString(),Ae=()=>{P("close")};return(f,o)=>(n(),ke(Pe,{to:"body"},[w.show?(n(),d("div",Xi,[e("div",{class:"fixed inset-0 bg-gray-900 bg-opacity-50 backdrop-blur-sm",onClick:Ae}),e("div",Zi,[e("div",ed,[e("div",td,[o[0]||(o[0]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-chart-line text-sm text-white sm:text-base"})],-1)),e("h3",sd," 使用统计详情 - "+u(w.apiKey.name),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:Ae},o[1]||(o[1]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",ad,[e("div",rd,[e("div",od,[o[2]||(o[2]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"总请求数"),e("i",{class:"fas fa-paper-plane text-blue-500"})],-1)),e("div",ld,u(be(B.value)),1),e("div",nd," 今日: "+u(be($.value))+" 次 ",1)]),e("div",id,[o[3]||(o[3]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"总Token数"),e("i",{class:"fas fa-coins text-green-500"})],-1)),e("div",dd,u(me(U.value)),1),e("div",ud," 今日: "+u(me(F.value)),1)]),e("div",cd,[o[4]||(o[4]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"总费用"),e("i",{class:"fas fa-dollar-sign text-yellow-600"})],-1)),e("div",gd," $"+u(S.value.toFixed(4)),1),e("div",pd," 今日: $"+u(Q.value.toFixed(4)),1)]),e("div",md,[o[7]||(o[7]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"平均速率"),e("i",{class:"fas fa-tachometer-alt text-purple-500"})],-1)),e("div",xd,[e("div",yd,[o[5]||(o[5]=e("span",{class:"text-gray-600 dark:text-gray-400"},"RPM:",-1)),e("span",fd,u(W.value),1)]),e("div",bd,[o[6]||(o[6]=e("span",{class:"text-gray-600 dark:text-gray-400"},"TPM:",-1)),e("span",vd,u(I.value),1)])])])]),e("div",kd,[o[12]||(o[12]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-chart-pie mr-2 text-indigo-500"}),A(" Token 使用分布 ")],-1)),e("div",wd,[e("div",hd,[o[8]||(o[8]=e("div",{class:"flex items-center"},[e("i",{class:"fas fa-arrow-down mr-2 text-green-500"}),e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"输入 Token")],-1)),e("span",Ad,u(me(m.value)),1)]),e("div",$d,[o[9]||(o[9]=e("div",{class:"flex items-center"},[e("i",{class:"fas fa-arrow-up mr-2 text-blue-500"}),e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"输出 Token")],-1)),e("span",Cd,u(me(s.value)),1)]),V.value>0?(n(),d("div",Id,[o[10]||(o[10]=e("div",{class:"flex items-center"},[e("i",{class:"fas fa-save mr-2 text-purple-500"}),e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"缓存创建 Token")],-1)),e("span",Kd,u(me(V.value)),1)])):h("",!0),T.value>0?(n(),d("div",Ld,[o[11]||(o[11]=e("div",{class:"flex items-center"},[e("i",{class:"fas fa-download mr-2 text-purple-500"}),e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"缓存读取 Token")],-1)),e("span",Dd,u(me(T.value)),1)])):h("",!0)])]),K.value?(n(),d("div",_d,[o[15]||(o[15]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-shield-alt mr-2 text-red-500"}),A(" 限制设置 ")],-1)),e("div",Td,[w.apiKey.dailyCostLimit>0?(n(),d("div",Sd,[ne(Ue,{current:Q.value,label:"每日费用限制",limit:w.apiKey.dailyCostLimit,"show-shine":!0,type:"daily"},null,8,["current","limit"]),e("div",Ud," 已使用 "+u(Math.min(se.value,100).toFixed(1))+"% ",1)])):h("",!0),w.apiKey.weeklyOpusCostLimit>0?(n(),d("div",Pd,[ne(Ue,{current:k.value,label:"Opus 周费用限制",limit:w.apiKey.weeklyOpusCostLimit,"show-shine":!0,type:"opus"},null,8,["current","limit"]),e("div",Md," 已使用 "+u(Math.min(ge.value,100).toFixed(1))+"% ",1)])):h("",!0),w.apiKey.totalCostLimit>0?(n(),d("div",Rd,[ne(Ue,{current:S.value,label:"总费用限制",limit:w.apiKey.totalCostLimit,"show-shine":!0,type:"total"},null,8,["current","limit"]),e("div",Vd," 已使用 "+u(Math.min(ie.value,100).toFixed(1))+"% ",1)])):h("",!0),w.apiKey.concurrencyLimit>0?(n(),d("div",Ed,[o[13]||(o[13]=e("span",{class:"text-gray-600 dark:text-gray-300"},"并发限制",-1)),e("span",Od,u(w.apiKey.currentConcurrency||0)+" / "+u(w.apiKey.concurrencyLimit),1)])):h("",!0),w.apiKey.rateLimitWindow>0?(n(),d("div",jd,[o[14]||(o[14]=e("h5",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-clock mr-1 text-blue-500"}),A(" 时间窗口限制 ")],-1)),ne(aa,{"cost-limit":w.apiKey.rateLimitCost,"current-cost":w.apiKey.currentWindowCost,"current-requests":w.apiKey.currentWindowRequests,"current-tokens":w.apiKey.currentWindowTokens,label:"窗口状态","rate-limit-window":w.apiKey.rateLimitWindow,"request-limit":w.apiKey.rateLimitRequests,"show-progress":!0,"show-tooltip":!0,"token-limit":w.apiKey.tokenLimit,"window-end-time":w.apiKey.windowEndTime,"window-remaining-seconds":w.apiKey.windowRemainingSeconds,"window-start-time":w.apiKey.windowStartTime},null,8,["cost-limit","current-cost","current-requests","current-tokens","rate-limit-window","request-limit","token-limit","window-end-time","window-remaining-seconds","window-start-time"])])):h("",!0)])])):h("",!0)]),e("div",{class:"mt-4 flex justify-end gap-2 sm:mt-6 sm:gap-3"},[e("button",{class:"btn btn-secondary px-4 py-2 text-sm",type:"button",onClick:Ae}," 关闭 ")])])])):h("",!0)]))}},qd=De(Gd,[["__scopeId","data-v-da99842f"]]),zd={class:"tab-content"},Fd={class:"card p-4 sm:p-6"},Wd={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Bd={class:"border-b border-gray-200 dark:border-gray-700"},Nd={"aria-label":"Tabs",class:"-mb-px flex space-x-8"},Hd={key:0,class:"ml-2 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-900 dark:bg-gray-700 dark:text-gray-100"},Yd={key:0,class:"ml-2 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-900 dark:bg-gray-700 dark:text-gray-100"},Qd={key:0,class:"tab-panel"},Jd={class:"mb-4 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Xd={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Zd={class:"group relative min-w-[140px]"},e0={key:0,class:"flex items-center"},t0={class:"group relative min-w-[140px]"},s0={class:"relative"},a0={key:0,class:"absolute -right-2 -top-2 z-10 flex h-5 w-5 items-center justify-center rounded-full bg-purple-500 text-xs text-white shadow-sm"},r0={class:"flex min-w-[240px] flex-col gap-2 sm:flex-row sm:items-center"},o0={class:"sm:w-44"},l0={class:"group relative flex-1"},n0={class:"relative flex items-center"},i0=["placeholder"],d0={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},u0=["disabled"],c0={class:"relative"},g0={class:"relative"},p0={key:0,class:"py-12 text-center"},m0={key:1,class:"py-12 text-center"},x0={key:2,class:"table-wrapper hidden md:block"},y0={class:"table-container"},f0={class:"w-full table-fixed"},b0={class:"sticky top-0 z-10 bg-gradient-to-b from-gray-50 to-gray-100/90 backdrop-blur-sm dark:from-gray-700 dark:to-gray-800/90"},v0={key:0,class:"w-[50px] px-3 py-4 text-left"},k0={class:"flex items-center"},w0=["indeterminate"],h0={key:1,class:"fas fa-sort ml-1 text-gray-400"},A0={key:1,class:"fas fa-sort ml-1 text-gray-400"},$0={key:1,class:"fas fa-sort ml-1 text-gray-400"},C0={key:1,class:"fas fa-sort ml-1 text-gray-400"},I0={key:1,class:"fas fa-sort ml-1 text-gray-400"},K0={key:0,class:"px-3 py-3"},L0={class:"flex items-center"},D0=["value"],_0={class:"px-3 py-3"},T0={class:"min-w-0"},S0=["title"],U0={key:0,class:"mt-1 text-xs text-red-600"},P0={class:"px-3 py-3"},M0={class:"space-y-1"},R0={key:0,class:"flex items-center gap-1 text-xs text-gray-400 dark:text-gray-500"},V0={key:0,class:"flex items-center gap-1 text-xs"},E0={class:"truncate text-gray-600 dark:text-gray-400"},O0={key:1,class:"flex items-center gap-1 text-xs"},j0={class:"truncate text-gray-600 dark:text-gray-400"},G0={key:2,class:"flex items-center gap-1 text-xs"},q0={class:"truncate text-gray-600 dark:text-gray-400"},z0={key:3,class:"flex items-center gap-1 text-xs"},F0={class:"truncate text-gray-600 dark:text-gray-400"},W0={key:4,class:"flex items-center gap-1 text-xs"},B0={class:"truncate text-gray-600 dark:text-gray-400"},N0={key:5,class:"text-xs text-gray-500 dark:text-gray-400"},H0={class:"px-3 py-3"},Y0={class:"flex flex-wrap gap-1"},Q0={key:0,class:"text-xs text-gray-400"},J0={class:"whitespace-nowrap px-3 py-3"},X0={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},Z0={key:0,class:"flex items-center justify-end"},eu={key:1,class:"font-semibold text-blue-600 dark:text-blue-400",style:{"font-size":"14px"}},tu={key:2,class:"text-gray-400"},su={class:"px-2 py-2",style:{"font-size":"12px"}},au={class:"flex flex-col gap-2"},ru={key:0,class:"space-y-2"},ou={key:2,class:"space-y-1.5"},lu={class:"flex items-center justify-between text-[10px]"},nu={class:"flex items-center gap-1 text-sky-600 dark:text-sky-300"},iu={class:"font-medium"},du={key:3,class:"flex items-center justify-center gap-1.5 py-2 text-gray-500 dark:text-gray-400"},uu={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},cu={key:0,class:"flex items-center justify-end"},gu={key:1,class:"flex items-center justify-end gap-1"},pu={class:"font-medium text-purple-600 dark:text-purple-400",style:{"font-size":"13px"}},mu={key:2,class:"text-gray-400"},xu={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},yu={key:0,class:"flex items-center justify-end"},fu={key:1,class:"flex items-center justify-end gap-1"},bu={class:"font-medium text-gray-900 dark:text-gray-100",style:{"font-size":"13px"}},vu={key:2,class:"text-gray-400"},ku={class:"whitespace-nowrap px-3 py-3 text-gray-700 dark:text-gray-300",style:{"font-size":"13px"}},wu={class:"flex flex-col leading-tight"},hu=["title"],Au={key:1,class:"text-gray-400",style:{"font-size":"13px"}},$u={key:2,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Cu=["title"],Iu={key:0,class:"ml-1 text-gray-400 dark:text-gray-500"},Ku={key:4,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Lu={class:"whitespace-nowrap px-3 py-3 text-gray-700 dark:text-gray-300",style:{"font-size":"13px"}},Du={class:"whitespace-nowrap px-3 py-3 text-sm text-gray-700 dark:text-gray-300"},_u={class:"inline-flex items-center gap-1.5"},Tu={key:0,class:"inline-flex items-center text-blue-600 dark:text-blue-400",style:{"font-size":"13px"}},Su={key:1},Uu=["onClick"],Pu=["onClick"],Mu=["onClick"],Ru=["onClick"],Vu={class:"operations-column operations-cell whitespace-nowrap px-3 py-3",style:{"font-size":"13px"}},Eu={class:"flex gap-1"},Ou=["onClick"],ju=["onClick"],Gu=["onClick"],qu=["onClick"],zu=["title","onClick"],Fu={class:"ml-1 hidden xl:inline"},Wu=["onClick"],Bu={key:0},Nu={class:"bg-gray-50 px-3 py-3 dark:bg-gray-700",colspan:"13"},Hu={key:0,class:"py-4 text-center"},Yu={class:"space-y-4"},Qu={class:"mb-4 flex items-center justify-between"},Ju={class:"flex items-center gap-2"},Xu={key:0,class:"rounded-full bg-gray-100 px-2 py-1 text-xs text-gray-500 dark:bg-gray-700 dark:text-gray-400"},Zu={class:"flex items-center gap-1"},ec={class:"flex gap-1 rounded bg-gray-100 p-1 dark:bg-gray-700"},tc=["onClick"],sc={key:0,class:"py-8 text-center"},ac={class:"mb-3 flex items-center justify-center gap-2"},rc=["onClick"],oc={key:1,class:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3"},lc={class:"mb-3 flex items-start justify-between"},nc={class:"flex-1"},ic={class:"mb-1 block text-sm font-semibold text-gray-800 dark:text-gray-200"},dc={class:"rounded-full bg-blue-50 px-2 py-1 text-xs text-gray-500 dark:bg-blue-900/30 dark:text-gray-400"},uc={class:"mb-3 space-y-2"},cc={class:"flex items-center justify-between text-sm"},gc={class:"font-semibold text-gray-900 dark:text-gray-100"},pc={class:"flex items-center justify-between text-sm"},mc={class:"font-semibold text-green-600"},xc={class:"mt-2 border-t border-gray-100 pt-2 dark:border-gray-600"},yc={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},fc={class:"font-medium"},bc={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},vc={class:"font-medium"},kc={key:0,class:"flex items-center justify-between text-xs text-purple-600"},wc={class:"font-medium"},hc={key:1,class:"flex items-center justify-between text-xs text-purple-600"},Ac={class:"font-medium"},$c={class:"mt-3 h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Cc={class:"mt-1 text-right"},Ic={class:"text-xs font-medium text-indigo-600"},Kc={key:2,class:"mt-4 rounded-lg border border-indigo-100 bg-gradient-to-r from-indigo-50 to-purple-50 p-3 dark:border-indigo-700 dark:from-indigo-900/20 dark:to-purple-900/20"},Lc={class:"flex items-center justify-between text-sm"},Dc={class:"flex gap-4 text-xs"},_c={class:"text-gray-600 dark:text-gray-400"},Tc={class:"font-semibold text-gray-800 dark:text-gray-200"},Sc={class:"text-gray-600 dark:text-gray-400"},Uc={class:"font-semibold text-gray-800 dark:text-gray-200"},Pc={key:3,class:"space-y-3 md:hidden"},Mc={class:"mb-3 flex items-start justify-between"},Rc={class:"flex items-center gap-3"},Vc=["value"],Ec={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Oc={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},jc={class:"mb-3 space-y-1.5"},Gc={key:0,class:"flex flex-wrap items-center gap-1 text-xs"},qc={class:"text-gray-600 dark:text-gray-400"},zc={key:1,class:"flex flex-wrap items-center gap-1 text-xs"},Fc={class:"text-gray-600 dark:text-gray-400"},Wc={key:2,class:"flex flex-wrap items-center gap-1 text-xs"},Bc={class:"text-gray-600 dark:text-gray-400"},Nc={key:3,class:"flex flex-wrap items-center gap-1 text-xs"},Hc={class:"text-gray-600 dark:text-gray-400"},Yc={key:4,class:"flex flex-wrap items-center gap-1 text-xs"},Qc={class:"text-gray-600 dark:text-gray-400"},Jc={key:5,class:"text-xs text-gray-500 dark:text-gray-400"},Xc={key:6,class:"text-xs text-red-600"},Zc={class:"mb-3 space-y-2"},eg={class:"rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},tg={class:"mb-2 flex items-center justify-between"},sg={class:"text-xs text-gray-600 dark:text-gray-400"},ag=["onClick"],rg={class:"grid grid-cols-2 gap-3"},og={key:0,class:"h-5 w-12 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},lg={key:1,class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},ng={key:2,class:"text-sm font-semibold text-gray-400"},ig={key:0,class:"h-5 w-14 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},dg={key:1,class:"text-sm font-semibold text-green-600"},ug={key:2,class:"text-sm font-semibold text-gray-400"},cg={class:"mt-2 text-xs text-gray-600 dark:text-gray-400"},gg={class:"flex items-center justify-between"},pg={class:"font-medium text-gray-700 dark:text-gray-300"},mg={class:"mt-1 flex items-center justify-between"},xg={key:0,class:"text-gray-400 dark:text-gray-500"},yg=["title"],fg={key:0,class:"ml-1 text-gray-400 dark:text-gray-500"},bg={key:2,class:"text-gray-400 dark:text-gray-500"},vg={class:"space-y-2"},kg={key:0,class:"space-y-2"},wg={key:2,class:"space-y-2"},hg={class:"flex items-center justify-between text-xs"},Ag={class:"flex items-center gap-1.5 text-sky-600 dark:text-sky-300"},$g={class:"font-medium"},Cg={key:3,class:"flex items-center justify-center gap-1.5 py-2 text-gray-500 dark:text-gray-400"},Ig={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Kg={class:"mb-1 flex justify-between"},Lg={class:"flex items-center justify-between"},Dg={class:"flex items-center gap-1"},_g=["onClick"],Tg={key:0,class:"mb-3 flex flex-wrap gap-1"},Sg={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3 dark:border-gray-600"},Ug=["onClick"],Pg=["onClick"],Mg=["onClick"],Rg=["onClick"],Vg=["onClick"],Eg={key:4,class:"mt-4 flex flex-col items-center justify-between gap-4 sm:mt-6 sm:flex-row"},Og={class:"flex w-full flex-col items-center gap-3 sm:w-auto sm:flex-row"},jg={class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Gg={class:"flex items-center gap-2"},qg=["value"],zg={class:"flex items-center gap-2"},Fg=["disabled"],Wg={class:"flex items-center gap-1"},Bg={key:1,class:"hidden px-2 text-gray-500 dark:text-gray-400 sm:inline"},Ng=["onClick"],Hg={key:2,class:"hidden px-2 text-gray-500 dark:text-gray-400 sm:inline"},Yg=["disabled"],Qg={key:1,class:"tab-panel"},Jg={key:0,class:"py-12 text-center"},Xg={key:1,class:"py-12 text-center"},Zg={key:2},ep={class:"mb-4 flex justify-end"},tp={class:"table-wrapper"},sp={class:"table-container"},ap={class:"w-full table-fixed"},rp={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},op={key:0,class:"w-[15%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"},lp={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},np={class:"px-3 py-3"},ip={class:"flex items-center"},dp={class:"min-w-0"},up=["title"],cp={class:"px-3 py-3"},gp={class:"space-y-1"},pp={key:0,class:"flex items-center gap-1 text-xs"},mp={key:1,class:"flex items-center gap-1 text-xs"},xp={key:2,class:"flex items-center gap-1 text-xs"},yp={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},fp={key:0,class:"px-3 py-3"},bp={class:"text-xs"},vp={key:0,class:"text-blue-600"},kp={key:1,class:"text-green-600"},wp={key:2,class:"text-gray-500 dark:text-gray-400"},hp={class:"whitespace-nowrap px-3 py-3 text-gray-700 dark:text-gray-300",style:{"font-size":"13px"}},Ap={class:"px-3 py-3"},$p={class:"text-xs"},Cp={key:0,class:"text-blue-600"},Ip={key:1,class:"text-green-600"},Kp={key:2,class:"text-gray-500 dark:text-gray-400"},Lp={class:"whitespace-nowrap px-3 py-3 text-gray-700 dark:text-gray-300",style:{"font-size":"13px"}},Dp={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},_p={class:"font-medium text-blue-600 dark:text-blue-400",style:{"font-size":"13px"}},Tp={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},Sp={class:"font-medium text-purple-600 dark:text-purple-400",style:{"font-size":"13px"}},Up={class:"whitespace-nowrap px-3 py-3 text-right",style:{"font-size":"13px"}},Pp={class:"flex items-center justify-end gap-1"},Mp={class:"font-medium text-gray-900 dark:text-gray-100",style:{"font-size":"13px"}},Rp={class:"whitespace-nowrap px-3 py-3 text-gray-700 dark:text-gray-300",style:{"font-size":"13px"}},Vp={class:"flex flex-col leading-tight"},Ep=["title"],Op={key:1,class:"text-gray-400",style:{"font-size":"13px"}},jp={key:2,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Gp=["title"],qp={key:0,class:"ml-1 text-gray-400 dark:text-gray-500"},zp={key:4,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Fp={class:"operations-column operations-cell px-3 py-3"},Wp={class:"flex items-center gap-2"},Bp=["onClick"],Np=["onClick"],ps=16,Hp={__name:"ApiKeysView",setup(w){const N=Ut(),c=sa(),P=L([]),B=O(()=>{var a;return((a=c.oemSettings)==null?void 0:a.ldapEnabled)||!1}),$=L([]),U=L(!1),F=L(!1),S=L(!1),Q=L(!1),H=L("today"),k=Fe({type:"preset",preset:"today",customStart:"",customEnd:"",customRange:null}),D=O(()=>S.value),m=()=>{S.value=!S.value,S.value||($.value=[],U.value=!1,F.value=!1)},s=O(()=>[{value:"today",label:"今日",icon:"fa-calendar-day"},{value:"7days",label:"最近7天",icon:"fa-calendar-week"},{value:"30days",label:"最近30天",icon:"fa-calendar-alt"},{value:"all",label:"全部时间",icon:"fa-infinity"},{value:"custom",label:"自定义范围",icon:"fa-calendar-check"}]),V=L("active"),T=L([]),W=L(!1),I=L("createdAt"),K=L("desc"),se=L({}),ie=L({page:1,pageSize:20,total:0,totalPages:0}),ge=L(new Map),be=L(new Set),me=L(new Map),Ae=L(new Set),f=L({}),o=L({}),i=L([new Date(2e3,1,1,0,0,0),new Date(2e3,2,1,23,59,59)]),g=L({claude:[],gemini:[],openai:[],openaiResponses:[],bedrock:[],droid:[],claudeGroups:[],geminiGroups:[],openaiGroups:[],droidGroups:[]}),C=L(!1),p=L(!1),l=L(null),y=L(null),ue=L(!1),fe=L(null),oe=L(""),we=L([]),xe=L(""),X=L("apiKey"),Y=O(()=>[{value:"apiKey",label:"按Key名称",icon:"fa-key"},{value:"bindingAccount",label:"按所属账号",icon:"fa-id-badge"}]),$e=O(()=>{const a=[{value:"",label:"所有标签",icon:"fa-asterisk"}];return we.value.forEach(t=>{a.push({value:t,label:t,icon:"fa-tag"})}),a}),We=O(()=>oe.value?P.value.filter(a=>a.tags&&a.tags.includes(oe.value)).length:0),J=L(1),Be=L((()=>{const a=localStorage.getItem("apiKeysPageSize");if(a){const t=parseInt(a,10);if([10,20,50,100].includes(t))return t}return 10})()),xs=[10,20,50,100],Ne=L(!1),ot=L(!1),lt=L(!1),vt=L(!1),kt=L(!1),nt=L(!1),Mt=L(null),Rt=L(null),Vt=L(null),Et=L([]),it=O(()=>P.value),Oe=O(()=>ie.value.totalPages||0),He=O(()=>{const a=[],t=J.value,x=Oe.value;if(x<=7)for(let r=1;r<=x;r++)a.push(r);else{let r=Math.max(1,t-2),v=Math.min(x,t+2);t<=3?v=5:t>=x-2&&(r=x-4);for(let R=r;R<=v;R++)a.push(R)}return a}),Ot=O(()=>{const a=He.value;return a.length===0?!1:a[0]>1}),jt=O(()=>{const a=He.value;return a.length===0?!1:a[a.length-1]{const a=He.value;return a.length===0?!1:Ot.value&&a[0]>2}),fs=O(()=>{const a=He.value;return a.length===0?!1:jt.value&&a[a.length-1]P.value),dt=async(a=!1)=>{var t,x;if(!(p.value&&!a)){C.value=!0;try{const[r,v,R,E,M,ae,le,b,q]=await Promise.all([G.get("/admin/claude-accounts"),G.get("/admin/claude-console-accounts"),G.get("/admin/gemini-accounts"),G.get("/admin/gemini-api-accounts"),G.get("/admin/openai-accounts"),G.get("/admin/openai-responses-accounts"),G.get("/admin/bedrock-accounts"),G.get("/admin/droid-accounts"),G.get("/admin/account-groups")]),de=[];r.success&&((t=r.data)==null||t.forEach(ee=>{de.push({...ee,platform:"claude-oauth",isDedicated:ee.accountType==="dedicated"})})),v.success&&((x=v.data)==null||x.forEach(ee=>{de.push({...ee,platform:"claude-console",isDedicated:ee.accountType==="dedicated"})})),g.value.claude=de;const ve=[];if(R.success&&(R.data||[]).forEach(ee=>{ve.push({...ee,platform:"gemini",isDedicated:ee.accountType==="dedicated"})}),E.success&&(E.data||[]).forEach(ee=>{ve.push({...ee,platform:"gemini-api",isDedicated:ee.accountType==="dedicated"})}),g.value.gemini=ve,M.success&&(g.value.openai=(M.data||[]).map(ee=>({...ee,isDedicated:ee.accountType==="dedicated"}))),ae.success&&(g.value.openaiResponses=(ae.data||[]).map(ee=>({...ee,isDedicated:ee.accountType==="dedicated"}))),le.success&&(g.value.bedrock=(le.data||[]).map(ee=>({...ee,isDedicated:ee.accountType==="dedicated"}))),b.success&&(g.value.droid=(b.data||[]).map(ee=>({...ee,platform:"droid",isDedicated:ee.accountType==="dedicated"}))),q.success){const ee=q.data||[];g.value.claudeGroups=ee.filter(pe=>pe.platform==="claude"),g.value.geminiGroups=ee.filter(pe=>pe.platform==="gemini"),g.value.openaiGroups=ee.filter(pe=>pe.platform==="openai"),g.value.droidGroups=ee.filter(pe=>pe.platform==="droid")}p.value=!0}catch{}finally{C.value=!1}}},he=async(a=!0)=>{var t,x,r;Q.value=!0;try{a&&(ge.value.clear(),me.value.clear());const v=new URLSearchParams;v.set("page",J.value.toString()),v.set("pageSize",Be.value.toString()),v.set("searchMode",X.value),xe.value&&v.set("search",xe.value),oe.value&&v.set("tag",oe.value);const E=["name","createdAt","expiresAt","lastUsedAt","isActive","status"].includes(I.value)?I.value:"createdAt";v.set("sortBy",E),v.set("sortOrder",K.value),k.type==="custom"&&k.customStart&&k.customEnd?(v.set("startDate",k.customStart),v.set("endDate",k.customEnd),v.set("timeRange","custom")):k.preset==="all"?v.set("timeRange","all"):v.set("timeRange",k.preset);const M=await G.get(`/admin/api-keys?${v.toString()}`);M.success&&(P.value=((t=M.data)==null?void 0:t.items)||[],(x=M.data)!=null&&x.pagination&&(ie.value=M.data.pagination,J.value>ie.value.totalPages&&ie.value.totalPages>0&&(J.value=ie.value.totalPages)),(r=M.data)!=null&&r.availableTags&&(we.value=M.data.availableTags),bs(),vs())}catch{j("加载 API Keys 失败","error")}finally{Q.value=!1}},bs=async()=>{const a=P.value;if(!a||a.length===0)return;let t=k.preset,x=null,r=null;k.type==="custom"&&k.customStart&&k.customEnd&&(t="custom",x=k.customStart,r=k.customEnd);const v=a.filter(E=>{const M=ge.value.get(E.id);return!M||M.timeRange!==t||t==="custom"&&(M.startDate!==x||M.endDate!==r)});if(v.length===0)return;const R=v.map(E=>E.id);R.forEach(E=>be.value.add(E));try{const E={keyIds:R,timeRange:t};t==="custom"&&(E.startDate=x,E.endDate=r);const M=await G.post("/admin/api-keys/batch-stats",E);if(M.success&&M.data)for(const[ae,le]of Object.entries(M.data))ge.value.set(ae,{stats:le,timeRange:t,startDate:x,endDate:r,timestamp:Date.now()})}catch(E){console.error("加载统计数据失败:",E)}finally{R.forEach(E=>be.value.delete(E))}},ye=a=>{const t=ge.value.get(a);return(t==null?void 0:t.stats)||null},je=a=>be.value.has(a),vs=async()=>{const a=P.value;if(!a||a.length===0)return;const t=a.filter(r=>!(!r.lastUsedAt||me.value.has(r.id)));if(t.length===0)return;const x=t.map(r=>r.id);x.forEach(r=>Ae.value.add(r));try{const r=await G.post("/admin/api-keys/batch-last-usage",{keyIds:x});if(r.success&&r.data)for(const[v,R]of Object.entries(r.data))me.value.set(v,R)}catch(r){console.error("加载最后使用账号数据失败:",r)}finally{x.forEach(r=>Ae.value.delete(r))}},ks=a=>me.value.get(a)||null,ut=a=>Ae.value.has(a),ct=async()=>{V.value="deleted",W.value=!0;try{const a=await G.get("/admin/api-keys/deleted");a.success&&(T.value=a.apiKeys||[])}catch{j("加载已删除的 API Keys 失败","error")}finally{W.value=!1}},Ye=a=>{I.value===a?K.value=K.value==="asc"?"desc":"asc":(I.value=a,K.value="asc")},wt=a=>!a&&a!==0?"0":a.toLocaleString("zh-CN"),Ie=a=>!a&&a!==0?"0":a>=1e6?(a/1e6).toFixed(1)+"M":a>=1e3?(a/1e3).toFixed(1)+"K":a.toString(),Qe=a=>{if(!a)return"未知账户";if(a.startsWith("group:")){const M=a.substring(6),ae=g.value.claudeGroups.find(de=>de.id===M);if(ae)return`分组-${ae.name}`;const le=g.value.geminiGroups.find(de=>de.id===M);if(le)return`分组-${le.name}`;const b=g.value.openaiGroups.find(de=>de.id===M);if(b)return`分组-${b.name}`;const q=g.value.droidGroups.find(de=>de.id===M);return q?`分组-${q.name}`:`分组-${M.substring(0,8)}`}const t=g.value.claude.find(M=>M.id===a);if(t)return`${t.name}`;if(a.startsWith("api:")){const M=a.replace("api:",""),ae=g.value.gemini.find(le=>le.id===M&&le.platform==="gemini-api");return ae?`${ae.name}`:`${M.substring(0,8)}`}const x=g.value.gemini.find(M=>M.id===a);if(x)return`${x.name}`;if(a.startsWith("responses:")){const M=a.replace("responses:",""),ae=g.value.openaiResponses.find(le=>le.id===M);return ae?`${ae.name}`:`${M.substring(0,8)}`}const r=g.value.openai.find(M=>M.id===a);if(r)return`${r.name}`;const v=g.value.openaiResponses.find(M=>M.id===a);if(v)return`${v.name}`;const R=g.value.bedrock.find(M=>M.id===a);if(R)return`${R.name}`;const E=g.value.droid.find(M=>M.id===a);return E?`${E.name}`:`${a.substring(0,8)}`},ws=a=>!!(a.claudeAccountId||a.claudeConsoleAccountId||a.geminiAccountId||a.openaiAccountId||a.bedrockAccountId||a.droidAccountId),Gt=a=>{if(a.claudeAccountId){const t=Qe(a.claudeAccountId);if(a.claudeAccountId.startsWith("group:"))return t;const x=g.value.claude.find(r=>r.id===a.claudeAccountId);return x?x.accountType==="dedicated"?`🔒 专属-${t}`:t:`⚠️ ${t} (账户不存在)`}if(a.claudeConsoleAccountId){const t=g.value.claude.find(x=>x.id===a.claudeConsoleAccountId&&x.platform==="claude-console");return t?`Console-${t.name}`:"⚠️ Console账户不存在"}return""},qt=a=>{if(a.geminiAccountId){const t=Qe(a.geminiAccountId);if(a.geminiAccountId.startsWith("group:"))return t;if(a.geminiAccountId.startsWith("api:")){const r=a.geminiAccountId.replace("api:",""),v=g.value.gemini.find(R=>R.id===r&&R.platform==="gemini-api");return v?v.accountType==="dedicated"?`🔒 API专属-${t}`:`API-${t}`:`⚠️ ${t} (账户不存在)`}const x=g.value.gemini.find(r=>r.id===a.geminiAccountId);return x?x.accountType==="dedicated"?`🔒 专属-${t}`:t:`⚠️ ${t} (账户不存在)`}return""},zt=a=>{if(a.openaiAccountId){const t=Qe(a.openaiAccountId);if(a.openaiAccountId.startsWith("group:"))return t;let x=null;if(a.openaiAccountId.startsWith("responses:")){const r=a.openaiAccountId.replace("responses:","");x=g.value.openaiResponses.find(v=>v.id===r)}else x=g.value.openai.find(r=>r.id===a.openaiAccountId);return x?x.accountType==="dedicated"?`🔒 专属-${t}`:t:`⚠️ ${t} (账户不存在)`}return""},Ft=a=>{if(a.bedrockAccountId){const t=Qe(a.bedrockAccountId);if(a.bedrockAccountId.startsWith("group:"))return t;const x=g.value.bedrock.find(r=>r.id===a.bedrockAccountId);return x?x.accountType==="dedicated"?`🔒 专属-${t}`:t:`⚠️ ${t} (账户不存在)`}return""},Wt=a=>{if(a.droidAccountId){const t=Qe(a.droidAccountId);if(a.droidAccountId.startsWith("group:"))return t;const x=g.value.droid.find(r=>r.id===a.droidAccountId);return x?x.accountType==="dedicated"?`🔒 专属-${t}`:t:`⚠️ ${t} (账户不存在)`}return""},gt=a=>a?new Date(a)!a||gt(a)?!1:(new Date(a)-new Date)/(1e3*60*60*24)<=7,Bt=a=>a?new Date(a).toLocaleDateString("zh-CN"):"",hs=async a=>{se.value[a]?se.value[a]=!1:(se.value[a]=!0,o.value[a]||Yt(a),await mt(a,!0))},mt=async(a,t=!1)=>{if(!t&&f.value[a]&&f.value[a].length>0)return;const x=Re(a);try{let r=`/admin/api-keys/${a}/model-stats`;const v=new URLSearchParams;if(x.customStart&&x.customEnd)v.append("startDate",x.customStart),v.append("endDate",x.customEnd),v.append("period","custom");else{const E=x.preset==="today"||x.preset==="7days"?"daily":"monthly";v.append("period",E)}r+="?"+v.toString();const R=await G.get(r);R.success&&(f.value[a]=R.data||[])}catch{j("加载模型统计失败","error"),f.value[a]=[]}},Nt=(a,t)=>{const x=t.reduce((r,v)=>r+(v.allTokens||0),0);return x===0?0:Math.round(a/x*100)},As=a=>a.formatted&&a.formatted.total?a.formatted.total:a.cost!==void 0?`$${a.cost.toFixed(6)}`:"$0.000000",$s=a=>{var t,x,r,v,R,E;if(k.type==="custom"){if(a.usage){if(a.usage.custom&&a.usage.custom.requests!==void 0)return a.usage.custom.requests;if(a.usage.total&&a.usage.total.requests!==void 0)return a.usage.total.requests}return 0}else{if(k.preset==="today")return((x=(t=a.usage)==null?void 0:t.daily)==null?void 0:x.requests)||0;if(k.preset==="7days")return a.usage&&a.usage["7days"]&&a.usage["7days"].requests!==void 0?a.usage["7days"].requests:0;if(k.preset==="30days"){if(a.usage){if(a.usage["30days"]&&a.usage["30days"].requests!==void 0)return a.usage["30days"].requests;if(a.usage.monthly&&a.usage.monthly.requests!==void 0)return a.usage.monthly.requests}return 0}else return k.preset==="all"?a.usage&&a.usage.all&&a.usage.all.requests!==void 0?a.usage.all.requests:((v=(r=a.usage)==null?void 0:r.total)==null?void 0:v.requests)||0:((E=(R=a.usage)==null?void 0:R.total)==null?void 0:E.requests)||0}},Cs=a=>{if(k.type==="custom"){if(a.usage){if(a.usage.custom&&a.usage.custom.cost!==void 0)return a.usage.custom.cost;if(a.usage.total&&a.usage.total.cost!==void 0)return a.usage.total.cost}return 0}else{if(k.preset==="today")return a.dailyCost||0;if(k.preset==="7days")return a.usage&&a.usage["7days"]&&a.usage["7days"].cost!==void 0?a.usage["7days"].cost:a.weeklyCost||a.periodCost||0;if(k.preset==="30days"){if(a.usage){if(a.usage["30days"]&&a.usage["30days"].cost!==void 0)return a.usage["30days"].cost;if(a.usage.monthly&&a.usage.monthly.cost!==void 0)return a.usage.monthly.cost;if(a.usage.total&&a.usage.total.cost!==void 0)return a.usage.total.cost}return a.monthlyCost||a.periodCost||0}else return k.preset==="all"?a.usage&&a.usage.all&&a.usage.all.cost!==void 0?a.usage.all.cost:a.totalCost||0:a.periodCost||a.totalCost||0}},Is=a=>{var t,x,r,v,R,E;if(k.type==="custom"){if(a.usage){if(a.usage.custom&&a.usage.custom.tokens!==void 0)return a.usage.custom.tokens;if(a.usage.total&&a.usage.total.tokens!==void 0)return a.usage.total.tokens}return 0}else{if(k.preset==="today")return((x=(t=a.usage)==null?void 0:t.daily)==null?void 0:x.tokens)||0;if(k.preset==="7days")return a.usage&&a.usage["7days"]&&a.usage["7days"].tokens!==void 0?a.usage["7days"].tokens:0;if(k.preset==="30days"){if(a.usage){if(a.usage["30days"]&&a.usage["30days"].tokens!==void 0)return a.usage["30days"].tokens;if(a.usage.monthly&&a.usage.monthly.tokens!==void 0)return a.usage.monthly.tokens;if(a.usage.total&&a.usage.total.tokens!==void 0)return a.usage.total.tokens}return 0}else return k.preset==="all"?a.usage&&a.usage.all&&a.usage.all.tokens!==void 0?a.usage.all.tokens:((v=(r=a.usage)==null?void 0:r.total)==null?void 0:v.tokens)||0:((E=(R=a.usage)==null?void 0:R.total)==null?void 0:E.tokens)||0}},Ks=a=>{var t,x,r,v,R,E;if(k.type==="custom"){if(a.usage){if(a.usage.custom&&a.usage.custom.inputTokens!==void 0)return a.usage.custom.inputTokens;if(a.usage.total&&a.usage.total.inputTokens!==void 0)return a.usage.total.inputTokens}return 0}else{if(k.preset==="today")return((x=(t=a.usage)==null?void 0:t.daily)==null?void 0:x.inputTokens)||0;if(k.preset==="7days")return a.usage&&a.usage["7days"]&&a.usage["7days"].inputTokens!==void 0?a.usage["7days"].inputTokens:0;if(k.preset==="30days"){if(a.usage){if(a.usage["30days"]&&a.usage["30days"].inputTokens!==void 0)return a.usage["30days"].inputTokens;if(a.usage.monthly&&a.usage.monthly.inputTokens!==void 0)return a.usage.monthly.inputTokens;if(a.usage.total&&a.usage.total.inputTokens!==void 0)return a.usage.total.inputTokens}return 0}else return k.preset==="all"?a.usage&&a.usage.all&&a.usage.all.inputTokens!==void 0?a.usage.all.inputTokens:((v=(r=a.usage)==null?void 0:r.total)==null?void 0:v.inputTokens)||0:((E=(R=a.usage)==null?void 0:R.total)==null?void 0:E.inputTokens)||0}},Ls=a=>{var t,x,r,v,R,E;if(k.type==="custom"){if(a.usage){if(a.usage.custom&&a.usage.custom.outputTokens!==void 0)return a.usage.custom.outputTokens;if(a.usage.total&&a.usage.total.outputTokens!==void 0)return a.usage.total.outputTokens}return 0}else{if(k.preset==="today")return((x=(t=a.usage)==null?void 0:t.daily)==null?void 0:x.outputTokens)||0;if(k.preset==="7days")return a.usage&&a.usage["7days"]&&a.usage["7days"].outputTokens!==void 0?a.usage["7days"].outputTokens:0;if(k.preset==="30days"){if(a.usage){if(a.usage["30days"]&&a.usage["30days"].outputTokens!==void 0)return a.usage["30days"].outputTokens;if(a.usage.monthly&&a.usage.monthly.outputTokens!==void 0)return a.usage.monthly.outputTokens;if(a.usage.total&&a.usage.total.outputTokens!==void 0)return a.usage.total.outputTokens}return 0}else return k.preset==="all"?a.usage&&a.usage.all&&a.usage.all.outputTokens!==void 0?a.usage.all.outputTokens:((v=(r=a.usage)==null?void 0:r.total)==null?void 0:v.outputTokens)||0:((E=(R=a.usage)==null?void 0:R.total)==null?void 0:E.outputTokens)||0}},Ds=a=>{if(!f.value[a.id])return Cs(a);const t=f.value[a.id]||[];let x=0;return t.forEach(r=>{if(r.cost!==void 0)x+=r.cost;else if(r.formatted&&r.formatted.total){const v=r.formatted.total.replace("$","").replace(",",""),R=parseFloat(v);isNaN(R)||(x+=R)}}),x},_s=a=>{Ht(a)},Ht=a=>{if(k.preset=a,a==="custom"){if(k.type="custom",!k.customRange){const t=new Date,x=new Date(t);x.setDate(t.getDate()-6);const r=v=>v.getFullYear()+"-"+String(v.getMonth()+1).padStart(2,"0")+"-"+String(v.getDate()).padStart(2,"0")+" 00:00:00";k.customRange=[r(x),r(t)],k.customStart=x.toISOString().split("T")[0],k.customEnd=t.toISOString().split("T")[0]}}else if(a==="all")k.type="preset",k.customStart=null,k.customEnd=null;else{k.type="preset";const t=new Date,x=new Date(t);a==="today"?x.setHours(0,0,0,0):a==="7days"?x.setDate(t.getDate()-6):a==="30days"&&x.setDate(t.getDate()-29),k.customStart=x.toISOString().split("T")[0],k.customEnd=t.toISOString().split("T")[0]}he()},Ts=a=>{a&&a.length===2?(k.type="custom",k.preset="custom",k.customRange=a,k.customStart=a[0].split(" ")[0],k.customEnd=a[1].split(" ")[0],he()):a===null&&Ht("today")},Yt=a=>{const t=new Date;new Date(t).setHours(0,0,0,0),o.value[a]={type:"preset",preset:"today",customStart:t.toISOString().split("T")[0],customEnd:t.toISOString().split("T")[0],customRange:null,presetOptions:[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30},{value:"custom",label:"自定义",days:-1}]}},Re=a=>(o.value[a]||Yt(a),o.value[a]),Qt=(a,t)=>{const x=Re(t);x.type="preset",x.preset=a;const r=x.presetOptions.find(v=>v.value===a);if(r)if(a==="custom"){if(x.type="custom",!x.customRange){const v=new Date,R=new Date(v);R.setDate(v.getDate()-6);const E=M=>M.getFullYear()+"-"+String(M.getMonth()+1).padStart(2,"0")+"-"+String(M.getDate()).padStart(2,"0")+" 00:00:00";x.customRange=[E(R),E(v)],x.customStart=R.toISOString().split("T")[0],x.customEnd=v.toISOString().split("T")[0]}}else{const v=new Date,R=new Date(v);R.setDate(v.getDate()-(r.days-1)),x.customStart=R.toISOString().split("T")[0],x.customEnd=v.toISOString().split("T")[0];const E=M=>M.getFullYear()+"-"+String(M.getMonth()+1).padStart(2,"0")+"-"+String(M.getDate()).padStart(2,"0")+" 00:00:00";x.customRange=[E(R),E(v)]}mt(t,!0)},Ss=(a,t)=>{const x=Re(a);t&&t.length===2?(x.type="custom",x.preset="custom",x.customRange=t,x.customStart=t[0].split(" ")[0],x.customEnd=t[1].split(" ")[0],mt(a,!0)):t===null&&Qt("7days",a)},Jt=a=>a>new Date,Us=a=>{const t=Re(a);t.type="preset",t.preset="today";const x=new Date;new Date(x).setHours(0,0,0,0),t.customStart=x.toISOString().split("T")[0],t.customEnd=x.toISOString().split("T")[0],t.customRange=null,mt(a,!0),j("已重置筛选条件并刷新数据","info")},Ps=()=>{Ne.value=!0,p.value||dt()},Xt=a=>{Mt.value=a,ot.value=!0,p.value||dt()},Zt=a=>{Rt.value=a,lt.value=!0},Ms=a=>{Ne.value=!1,Vt.value=a,vt.value=!0,he()},Rs=a=>{Ne.value=!1,Et.value=a,kt.value=!0,he()},Vs=()=>{if($.value.length===0){j("请先选择要编辑的 API Keys","warning");return}nt.value=!0,p.value||dt()},Es=()=>{nt.value=!1,$.value=[],_e(),he()},Os=()=>{ot.value=!1,j("API Key 更新成功","success"),he()},js=()=>{lt.value=!1,j("API Key 续期成功","success"),he()},es=async a=>{let t=!0;if(a.isActive&&(window.showConfirm?t=await window.showConfirm("禁用 API Key",`确定要禁用 API Key "${a.name}" 吗?禁用后所有使用此 Key 的请求将返回 401 错误。`,"确定禁用","取消"):t=confirm(`确定要禁用 API Key "${a.name}" 吗?禁用后所有使用此 Key 的请求将返回 401 错误。`)),!!t)try{const x=await G.put(`/admin/api-keys/${a.id}`,{isActive:!a.isActive});if(x.success){j(`API Key 已${a.isActive?"禁用":"激活"}`,"success");const r=P.value.find(v=>v.id===a.id);r&&(r.isActive=!a.isActive)}else j(x.message||"操作失败","error")}catch{j("操作失败","error")}},ts=async a=>{let t=!1;if(window.showConfirm?t=await window.showConfirm("删除 API Key","确定要删除这个 API Key 吗?此操作不可恢复。","确定删除","取消"):t=confirm("确定要删除这个 API Key 吗?此操作不可恢复。"),!!t)try{const x=await G.delete(`/admin/api-keys/${a}`);if(x.success){j("API Key 已删除","success");const r=$.value.indexOf(a);r>-1&&$.value.splice(r,1),_e(),he()}else j(x.message||"删除失败","error")}catch{j("删除失败","error")}},Gs=async a=>{var x,r;let t=!1;if(window.showConfirm?t=await window.showConfirm("恢复 API Key","确定要恢复这个 API Key 吗?恢复后可以重新使用。","确定恢复","取消"):t=confirm("确定要恢复这个 API Key 吗?恢复后可以重新使用。"),!!t)try{const v=await G.post(`/admin/api-keys/${a}/restore`);v.success?(j("API Key 已成功恢复","success"),await ct(),await he()):j(v.error||"恢复失败","error")}catch(v){j(((r=(x=v.response)==null?void 0:x.data)==null?void 0:r.error)||"恢复失败","error")}},qs=async a=>{var x,r;let t=!1;if(window.showConfirm?t=await window.showConfirm("彻底删除 API Key","确定要彻底删除这个 API Key 吗?此操作不可恢复,所有相关数据将被永久删除。","确定彻底删除","取消"):t=confirm("确定要彻底删除这个 API Key 吗?此操作不可恢复,所有相关数据将被永久删除。"),!!t)try{const v=await G.delete(`/admin/api-keys/${a}/permanent`);v.success?(j("API Key 已彻底删除","success"),ct()):j(v.error||"彻底删除失败","error")}catch(v){j(((r=(x=v.response)==null?void 0:x.data)==null?void 0:r.error)||"彻底删除失败","error")}},zs=async()=>{var x,r;const a=T.value.length;if(a===0){j("没有需要清空的 API Keys","info");return}let t=!1;if(window.showConfirm?t=await window.showConfirm("清空所有已删除的 API Keys",`确定要彻底删除全部 ${a} 个已删除的 API Keys 吗?此操作不可恢复,所有相关数据将被永久删除。`,"确定清空全部","取消"):t=confirm(`确定要彻底删除全部 ${a} 个已删除的 API Keys 吗?此操作不可恢复。`),!!t)try{const v=await G.delete("/admin/api-keys/deleted/clear-all");v.success?(j(v.message||"已清空所有已删除的 API Keys","success"),v.details&&v.details.failedCount>0&&j(`${v.details.failedCount} 个清空失败`,"warning"),ct()):j(v.error||"清空失败","error")}catch(v){j(((r=(x=v.response)==null?void 0:x.data)==null?void 0:r.error)||"清空失败","error")}},Fs=async()=>{const a=$.value.length;if(a===0){j("请先选择要删除的 API Keys","warning");return}let t=!1;const x=`确定要删除选中的 ${a} 个 API Key 吗?此操作不可恢复。`;if(window.showConfirm?t=await window.showConfirm("批量删除 API Keys",x,"确定删除","取消"):t=confirm(x),!t)return;const r=[...$.value];try{const v=await G.delete("/admin/api-keys/batch",{data:{keyIds:r}});if(v.success){const{successCount:R,failedCount:E,errors:M}=v.data;if(R>0){if(j(`成功删除 ${R} 个 API Keys`,"success"),E>0){const ae=M.map(le=>`${le.keyId}: ${le.error}`).join(` `);j(`${E} 个删除失败: ${ae}`,"warning")}}else j("所有 API Keys 删除失败","error");$.value=[],_e(),he()}else j(v.message||"批量删除失败","error")}catch{j("批量删除失败","error")}},Ws=()=>{if(U.value)qe.value.forEach(a=>{$.value.includes(a.id)||$.value.push(a.id)});else{const a=new Set(qe.value.map(t=>t.id));$.value=$.value.filter(t=>!a.has(t))}_e()},_e=()=>{const a=qe.value.length,t=qe.value.filter(x=>$.value.includes(x.id)).length;t===0?(U.value=!1,F.value=!1):t===a?(U.value=!0,F.value=!1):(U.value=!1,F.value=!0)},Je=a=>{l.value=a},ss=()=>{l.value=null},Bs=async({keyId:a,expiresAt:t,activateNow:x})=>{try{const r=await G.patch(`/admin/api-keys/${a}/expiration`,{expiresAt:t||null,activateNow:x||!1});if(r.success){j(x?"API Key已激活":"过期时间已更新","success");const v=P.value.find(R=>R.id===a);v&&(x&&r.updates?(v.isActivated=!0,v.activatedAt=r.updates.activatedAt,v.expiresAt=r.updates.expiresAt):(v.expiresAt=t||null,t&&!v.isActivated&&(v.isActivated=!0))),ss()}else j(r.message||"更新失败","error"),y.value&&y.value.resetSaving()}catch{j("更新失败","error"),y.value&&y.value.resetSaving()}},Ve=a=>a?new Date(a).toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"):"",as=a=>{if(a==null)return"--:--";const t=Math.floor(a/3600),x=Math.floor(a%3600/60),r=a%60;return t>0?`${t}h${x}m`:x>0?`${x}m${r}s`:`${r}s`},ht=a=>{var r,v,R,E,M,ae,le,b,q,de,ve,ee,pe,ft,Se;const t=ye(a.id),x={...a,dailyCost:(t==null?void 0:t.dailyCost)??a.dailyCost??0,currentWindowCost:(t==null?void 0:t.currentWindowCost)??a.currentWindowCost??0,windowRemainingSeconds:(t==null?void 0:t.windowRemainingSeconds)??a.windowRemainingSeconds,usage:{...a.usage,total:{...(r=a.usage)==null?void 0:r.total,requests:(t==null?void 0:t.requests)??((R=(v=a.usage)==null?void 0:v.total)==null?void 0:R.requests)??0,tokens:(t==null?void 0:t.tokens)??((M=(E=a.usage)==null?void 0:E.total)==null?void 0:M.tokens)??0,cost:(t==null?void 0:t.allTimeCost)??((le=(ae=a.usage)==null?void 0:ae.total)==null?void 0:le.cost)??0,inputTokens:(t==null?void 0:t.inputTokens)??((q=(b=a.usage)==null?void 0:b.total)==null?void 0:q.inputTokens)??0,outputTokens:(t==null?void 0:t.outputTokens)??((ve=(de=a.usage)==null?void 0:de.total)==null?void 0:ve.outputTokens)??0,cacheCreateTokens:(t==null?void 0:t.cacheCreateTokens)??((pe=(ee=a.usage)==null?void 0:ee.total)==null?void 0:pe.cacheCreateTokens)??0,cacheReadTokens:(t==null?void 0:t.cacheReadTokens)??((Se=(ft=a.usage)==null?void 0:ft.total)==null?void 0:Se.cacheReadTokens)??0}}};fe.value=x,ue.value=!0},At=a=>{if(!a)return"从未使用";const t=new Date(a),r=new Date-t;return r<6e4?"刚刚":r<36e5?`${Math.floor(r/6e4)} 分钟前`:r<864e5?`${Math.floor(r/36e5)} 小时前`:r<6048e5?`${Math.floor(r/864e5)} 天前`:t.toLocaleDateString("zh-CN")},$t={claude:"Claude",openai:"OpenAI",gemini:"Gemini",droid:"Droid",deleted:"已删除",other:"其他"},Ns=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,rs=a=>{if(!a)return"other";const t=String(a).toLowerCase();return t==="claude-console"||t==="claude_console"||t==="claude"?"claude":t==="openai"||t==="openai-responses"||t==="openai_responses"||t==="azure-openai"||t==="azure_openai"?"openai":t==="gemini"||t==="gemini-api"||t==="gemini_api"?"gemini":t==="droid"?"droid":"other"},xt=a=>{if(!a)return null;const t=ks(a.id);return t!==null?t:a.lastUsage||null},Ct=a=>{if(ut(a==null?void 0:a.id))return!1;const t=xt(a);return!!(t&&(t.accountName||t.accountId||t.rawAccountId))},It=a=>{if(!a)return!1;if(a.accountCategory==="deleted")return!0;const t=typeof a.rawAccountId=="string"?a.rawAccountId.trim():"",x=typeof a.accountName=="string"?a.accountName.trim():"",r=typeof a.accountType=="string"?a.accountType.trim().toLowerCase():"";if(!t)return!1;const v=Ns.test(t),R=!x||x===t,E=rs(r);return v&&R&&(!r||r==="unknown"||E==="other")},Hs=a=>a?It(a)?"已删除":a.accountName||a.accountId||a.rawAccountId||"未知账号":"未知账号",Xe=a=>Hs(xt(a)),Kt=a=>{const t=Xe(a);return t.length>ps?`${t.slice(0,ps)}...`:t},yt=a=>{const t=xt(a);if(It(t))return $t.deleted;const x=(t==null?void 0:t.accountCategory)||rs(t==null?void 0:t.accountType);return $t[x]||$t.other},Lt=a=>{const t=xt(a);return It(t)},Ys=()=>{xe.value="",J.value=1},Qs=()=>{try{const a=it.value.map(b=>{var os,ls,ns,is,ds,us,cs,gs;const q=$s(b),de=Ds(b),ve=Is(b),ee=Ks(b),pe=Ls(b),ft={ID:b.id||"",名称:b.name||"",描述:b.description||"",状态:b.isActive?"启用":"禁用",API密钥:b.apiKey||"",过期模式:b.expirationMode==="activation"?"首次使用后激活":b.expirationMode==="fixed"?"固定时间":"无",激活期限:b.activationDays||"",激活单位:b.activationUnit==="hours"?"小时":b.activationUnit==="days"?"天":"",已激活:b.isActivated?"是":"否",激活时间:b.activatedAt?Ve(b.activatedAt):"",过期时间:b.expiresAt?Ve(b.expiresAt):"",服务权限:b.permissions==="all"?"全部服务":b.permissions==="claude"?"仅Claude":b.permissions==="gemini"?"仅Gemini":b.permissions==="openai"?"仅OpenAI":b.permissions==="droid"?"仅Droid":b.permissions||"",令牌限制:b.tokenLimit==="0"||b.tokenLimit===0?"无限制":b.tokenLimit||"",并发限制:b.concurrencyLimit==="0"||b.concurrencyLimit===0?"无限制":b.concurrencyLimit||"","速率窗口(分钟)":b.rateLimitWindow==="0"||b.rateLimitWindow===0?"无限制":b.rateLimitWindow||"",速率请求限制:b.rateLimitRequests==="0"||b.rateLimitRequests===0?"无限制":b.rateLimitRequests||"","日费用限制($)":b.dailyCostLimit==="0"||b.dailyCostLimit===0?"无限制":`$${b.dailyCostLimit}`||"","总费用限制($)":b.totalCostLimit==="0"||b.totalCostLimit===0?"无限制":`$${b.totalCostLimit}`||"",Claude专属账户:b.claudeAccountId||"",Claude控制台账户:b.claudeConsoleAccountId||"",Gemini专属账户:b.geminiAccountId||"",OpenAI专属账户:b.openaiAccountId||"","Azure OpenAI专属账户":b.azureOpenaiAccountId||"",Bedrock专属账户:b.bedrockAccountId||"",Droid专属账户:b.droidAccountId||"",启用模型限制:b.enableModelRestriction?"是":"否",限制的模型:b.restrictedModels&&b.restrictedModels.length>0?b.restrictedModels.join("; "):"",启用客户端限制:b.enableClientRestriction?"是":"否",允许的客户端:b.allowedClients&&b.allowedClients.length>0?b.allowedClients.join("; "):"",创建时间:b.createdAt?Ve(b.createdAt):"",创建者:b.createdBy||"",用户ID:b.userId||"",用户名:b.userUsername||"",标签:b.tags&&b.tags.length>0?b.tags.join(", "):"无",请求总数:q,"总费用($)":de.toFixed(2),Token数:Ie(ve),输入Token:Ie(ee),输出Token:Ie(pe),最后使用时间:b.lastUsedAt?Ve(b.lastUsedAt):"从未使用",最后使用账号:Xe(b),最后使用类型:yt(b)},Se={};let ze=null;return k.preset==="today"?ze=(ls=(os=b.usage)==null?void 0:os.daily)==null?void 0:ls.models:k.preset==="7days"?ze=(is=(ns=b.usage)==null?void 0:ns.weekly)==null?void 0:is.models:k.preset==="30days"?ze=(us=(ds=b.usage)==null?void 0:ds.monthly)==null?void 0:us.models:k.preset==="all"&&(ze=(gs=(cs=b.usage)==null?void 0:cs.total)==null?void 0:gs.models),ze&&Object.entries(ze).forEach(([_t,Ze])=>{let Ee=_t;_t.includes(":")&&(Ee=_t.split(":").pop()),Ee=Ee.replace(/[:/]/g,"_"),Se[`${Ee}_请求数`]=Ze.requests||0,Se[`${Ee}_费用($)`]=(Ze.cost||0).toFixed(2),Se[`${Ee}_Token`]=Ie(Ze.totalTokens||0),Se[`${Ee}_输入Token`]=Ie(Ze.inputTokens||0),Se[`${Ee}_输出Token`]=Ie(Ze.outputTokens||0)}),{...ft,...Se}}),t=Ge.utils.book_new(),x=Ge.utils.json_to_sheet(a),r=Ge.utils.decode_range(x["!ref"]),v=Object.keys(a[0]||{}),R=v.map(b=>b==="ID"?{wch:40}:b==="名称"?{wch:25}:b==="描述"?{wch:30}:b==="API密钥"?{wch:45}:b==="标签"?{wch:20}:b.includes("时间")?{wch:20}:b.includes("限制")?{wch:15}:b.includes("费用")?{wch:15}:b.includes("Token")?{wch:15}:b.includes("请求")?{wch:12}:b.includes("账户")?{wch:30}:b.includes("权限")||b.includes("模型")||b.includes("客户端")?{wch:20}:b.includes("激活")||b.includes("过期")?{wch:18}:{wch:15});x["!cols"]=R;for(let b=r.s.c;b<=r.e.c;++b){const q=Ge.utils.encode_cell({r:0,c:b});if(!x[q])continue;const de=v[b],ve=de&&de.includes("_");x[q].s={fill:{fgColor:{rgb:ve?"70AD47":"4472C4"}},font:{color:{rgb:"FFFFFF"},bold:!0,sz:12},alignment:{horizontal:"center",vertical:"center"},border:{top:{style:"thin",color:{rgb:"2F5597"}},bottom:{style:"thin",color:{rgb:"2F5597"}},left:{style:"thin",color:{rgb:"2F5597"}},right:{style:"thin",color:{rgb:"2F5597"}}}}}for(let b=1;b<=r.e.r;++b)for(let q=r.s.c;q<=r.e.c;++q){const de=Ge.utils.encode_cell({r:b,c:q});if(!x[de])continue;const ve=v[q],ee=x[de].v,pe={font:{sz:11},border:{top:{style:"thin",color:{rgb:"D3D3D3"}},bottom:{style:"thin",color:{rgb:"D3D3D3"}},left:{style:"thin",color:{rgb:"D3D3D3"}},right:{style:"thin",color:{rgb:"D3D3D3"}}}};b%2===0&&(pe.fill={fgColor:{rgb:"F2F2F2"}}),ve==="名称"?pe.alignment={horizontal:"left",vertical:"center"}:ve==="标签"?(pe.alignment={horizontal:"left",vertical:"center"},ee==="无"&&(pe.font={...pe.font,color:{rgb:"999999"},italic:!0})):ve==="最后使用时间"?(pe.alignment={horizontal:"right",vertical:"center"},ee==="从未使用"&&(pe.font={...pe.font,color:{rgb:"999999"},italic:!0})):ve&&ve.includes("费用")?(pe.alignment={horizontal:"right",vertical:"center"},pe.font={...pe.font,color:{rgb:"0066CC"},bold:!0}):ve&&(ve.includes("Token")||ve.includes("请求"))&&(pe.alignment={horizontal:"right",vertical:"center"}),x[de].s=pe}Ge.utils.book_append_sheet(t,x,"用量统计");const E=new Date,M=E.getFullYear()+String(E.getMonth()+1).padStart(2,"0")+String(E.getDate()).padStart(2,"0")+"_"+String(E.getHours()).padStart(2,"0")+String(E.getMinutes()).padStart(2,"0")+String(E.getSeconds()).padStart(2,"0");let ae="";k.type==="preset"?ae={today:"今日","7days":"最近7天","30days":"最近30天",all:"全部时间"}[k.preset]||k.preset:ae="自定义时间";const le=`API_Keys_用量统计_${ae}_${M}.xlsx`;Ge.writeFile(t,le),j(`成功导出 ${a.length} 条API Key用量数据`,"success")}catch{j("导出失败,请重试","error")}};Le([oe,H],()=>{J.value=1,$.value=[],_e()});let Dt=null;return Le(xe,()=>{Dt&&clearTimeout(Dt),Dt=setTimeout(()=>{J.value=1,he(!1)},300)}),Le(X,()=>{J.value=1,he(!1)}),Le(oe,()=>{J.value=1,he(!1)}),Le([I,K],()=>{he(!1)}),Le([J,Be],([a,t],[x,r])=>{(a!==x||t!==r)&&he(!1),_e()}),Le(Be,a=>{localStorage.setItem("apiKeysPageSize",a.toString())}),Le(P,()=>{const a=new Set(P.value.map(t=>t.id));$.value=$.value.filter(t=>a.has(t)),_e()}),rt(async()=>{await Promise.all([N.loadSupportedClients(),he()]),_e(),dt()}),(a,t)=>{const x=Js;return n(),d("div",zd,[e("div",Fd,[e("div",Wd,[t[152]||(t[152]=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"}," API Keys 管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理和监控您的 API 密钥 ")],-1)),e("div",Bd,[e("nav",Nd,[e("button",{class:z(["whitespace-nowrap border-b-2 px-1 py-2 text-sm font-medium",V.value==="active"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300"]),onClick:t[0]||(t[0]=r=>V.value="active")},[t[28]||(t[28]=A(" 活跃 API Keys ",-1)),P.value.length>0?(n(),d("span",Hd,u(P.value.length),1)):h("",!0)],2),e("button",{class:z(["whitespace-nowrap border-b-2 px-1 py-2 text-sm font-medium",V.value==="deleted"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300"]),onClick:ct},[t[29]||(t[29]=A(" 已删除 API Keys ",-1)),T.value.length>0?(n(),d("span",Yd,u(T.value.length),1)):h("",!0)],2)])]),V.value==="active"?(n(),d("div",Qd,[e("div",Jd,[e("div",Xd,[e("div",Zd,[t[30]||(t[30]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-purple-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ne(Tt,{modelValue:k.preset,"onUpdate:modelValue":t[1]||(t[1]=r=>k.preset=r),icon:"fa-calendar-alt","icon-color":"text-blue-500",options:s.value,placeholder:"选择时间范围",onChange:_s},null,8,["modelValue","options"])]),k.type==="custom"?(n(),d("div",e0,[ne(x,{class:"api-key-date-picker custom-date-range-picker",clearable:!0,"default-time":i.value,"disabled-date":Jt,"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","model-value":k.customRange,"range-separator":"至",size:"small","start-placeholder":"开始日期",style:{width:"320px",height:"38px"},type:"datetimerange","unlink-panels":!1,"value-format":"YYYY-MM-DD HH:mm:ss","onUpdate:modelValue":Ts},null,8,["default-time","model-value"])])):h("",!0),e("div",t0,[t[31]||(t[31]=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)),e("div",s0,[ne(Tt,{modelValue:oe.value,"onUpdate:modelValue":t[2]||(t[2]=r=>oe.value=r),icon:"fa-tags","icon-color":"text-purple-500",options:$e.value,placeholder:"所有标签"},null,8,["modelValue","options"]),oe.value?(n(),d("span",a0,u(We.value),1)):h("",!0)])]),e("div",r0,[e("div",o0,[ne(Tt,{modelValue:X.value,"onUpdate:modelValue":t[3]||(t[3]=r=>X.value=r),icon:"fa-filter","icon-color":"text-cyan-500",options:Y.value,placeholder:"选择搜索类型"},null,8,["modelValue","options"])]),e("div",l0,[t[34]||(t[34]=e("div",{class:"pointer-events-none 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",n0,[_(e("input",{"onUpdate:modelValue":t[4]||(t[4]=r=>xe.value=r),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:X.value==="bindingAccount"?"搜索所属账号...":B.value?"搜索名称或所有者...":"搜索名称...",type:"text"},null,8,i0),[[te,xe.value]]),t[33]||(t[33]=e("i",{class:"fas fa-search absolute left-3 text-sm text-cyan-500"},null,-1)),xe.value?(n(),d("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:Ys},t[32]||(t[32]=[e("i",{class:"fas fa-times text-xs"},null,-1)]))):h("",!0)])])])]),e("div",d0,[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-200 dark:hover:border-gray-500 sm:w-auto",disabled:Q.value,onClick:t[5]||(t[5]=r=>he())},[t[35]||(t[35]=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:z(["fas relative text-green-500",Q.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),t[36]||(t[36]=e("span",{class:"relative"},"刷新",-1))],8,u0),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:m},[e("i",{class:z(S.value?"fas fa-times":"fas fa-check-square")},null,2),e("span",null,u(S.value?"取消选择":"选择"),1)]),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 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:border-gray-500 sm:w-auto",onClick:Qs},t[37]||(t[37]=[e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-emerald-500 to-green-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1),e("i",{class:"fas fa-file-excel relative text-emerald-500"},null,-1),e("span",{class:"relative"},"导出数据",-1)])),$.value.length>0?(n(),d("button",{key:0,class:"group relative flex items-center justify-center gap-2 rounded-lg border border-blue-200 bg-blue-50 px-4 py-2 text-sm font-medium text-blue-700 shadow-sm transition-all duration-200 hover:border-blue-300 hover:bg-blue-100 hover:shadow-md dark:border-blue-700 dark:bg-blue-900/30 dark:text-blue-300 dark:hover:bg-blue-900/50 sm:w-auto",onClick:t[6]||(t[6]=r=>Vs())},[t[38]||(t[38]=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)),t[39]||(t[39]=e("i",{class:"fas fa-edit relative text-blue-600 dark:text-blue-400"},null,-1)),e("span",c0,"编辑选中 ("+u($.value.length)+")",1)])):h("",!0),$.value.length>0?(n(),d("button",{key:1,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:t[7]||(t[7]=r=>Fs())},[t[40]||(t[40]=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)),t[41]||(t[41]=e("i",{class:"fas fa-trash relative text-red-600 dark:text-red-400"},null,-1)),e("span",g0,"删除选中 ("+u($.value.length)+")",1)])):h("",!0),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-blue-500 to-blue-600 px-5 py-2 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-blue-600 hover:to-blue-700 hover:shadow-lg sm:w-auto",onClick:Ke(Ps,["stop"])},t[42]||(t[42]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"创建新 Key",-1)]))])]),Q.value?(n(),d("div",p0,t[43]||(t[43]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载 API Keys...",-1)]))):P.value.length===0?(n(),d("div",m0,t[44]||(t[44]=[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-key text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无 API Keys",-1),e("p",{class:"mt-2 text-sm text-gray-400"},"点击上方按钮创建您的第一个 API Key",-1)]))):(n(),d("div",x0,[e("div",y0,[e("table",f0,[e("thead",b0,[e("tr",null,[D.value?(n(),d("th",v0,[e("div",k0,[_(e("input",{"onUpdate:modelValue":t[8]||(t[8]=r=>U.value=r),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",indeterminate:F.value,type:"checkbox",onChange:Ws},null,40,w0),[[Te,U.value]])])])):h("",!0),e("th",{class:"w-[14%] 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:t[9]||(t[9]=r=>Ye("name"))},[t[45]||(t[45]=A(" 名称 ",-1)),I.value==="name"?(n(),d("i",{key:0,class:z(["fas",K.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",h0))]),t[50]||(t[50]=e("th",{class:"w-[15%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 所属账号 ",-1)),t[51]||(t[51]=e("th",{class:"w-[10%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 标签 ",-1)),e("th",{class:"w-[6%] min-w-[60px] 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:t[10]||(t[10]=r=>Ye("status"))},[t[46]||(t[46]=A(" 状态 ",-1)),I.value==="status"?(n(),d("i",{key:0,class:z(["fas",K.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",A0))]),t[52]||(t[52]=e("th",{class:"w-[4%] min-w-[40px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 费用 ",-1)),t[53]||(t[53]=e("th",{class:"w-[14%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 限制 ",-1)),t[54]||(t[54]=e("th",{class:"w-[5%] min-w-[45px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," Token ",-1)),t[55]||(t[55]=e("th",{class:"w-[5%] min-w-[45px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 请求数 ",-1)),e("th",{class:"w-[8%] min-w-[70px] 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:t[11]||(t[11]=r=>Ye("lastUsedAt"))},[t[47]||(t[47]=A(" 最后使用 ",-1)),I.value==="lastUsedAt"?(n(),d("i",{key:0,class:z(["fas",K.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",$0))]),e("th",{class:"w-[8%] min-w-[70px] 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:t[12]||(t[12]=r=>Ye("createdAt"))},[t[48]||(t[48]=A(" 创建时间 ",-1)),I.value==="createdAt"?(n(),d("i",{key:0,class:z(["fas",K.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",C0))]),e("th",{class:"w-[8%] min-w-[70px] 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:t[13]||(t[13]=r=>Ye("expiresAt"))},[t[49]||(t[49]=A(" 过期时间 ",-1)),I.value==="expiresAt"?(n(),d("i",{key:0,class:z(["fas",K.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",I0))]),t[56]||(t[56]=e("th",{class:"operations-column sticky right-0 w-[23%] min-w-[200px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",null,[(n(!0),d(Z,null,re(qe.value,(r,v)=>{var R,E,M,ae,le,b;return n(),d(Z,{key:r.id},[e("tr",{class:z(["table-row transition-all duration-150",v%2===0?"bg-white dark:bg-gray-800/40":"bg-gray-50/70 dark:bg-gray-700/30","border-b-2 border-gray-200/80 dark:border-gray-700/50","hover:bg-blue-50/60 hover:shadow-sm dark:hover:bg-blue-900/20"])},[D.value?(n(),d("td",K0,[e("div",L0,[_(e("input",{"onUpdate:modelValue":t[14]||(t[14]=q=>$.value=q),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:r.id,onChange:_e},null,40,D0),[[Te,$.value]])])])):h("",!0),e("td",_0,[e("div",T0,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},u(r.name),9,S0),B.value&&r.ownerDisplayName?(n(),d("div",U0,[t[57]||(t[57]=e("i",{class:"fas fa-user mr-1"},null,-1)),A(" "+u(r.ownerDisplayName),1)])):h("",!0)])]),e("td",P0,[e("div",M0,[C.value&&ws(r)?(n(),d("div",R0,t[58]||(t[58]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),A(" 加载中... ",-1)]))):(n(),d(Z,{key:1},[r.claudeAccountId||r.claudeConsoleAccountId?(n(),d("div",V0,[t[59]||(t[59]=e("span",{class:"inline-flex items-center rounded bg-indigo-100 px-1.5 py-0.5 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300"},[e("i",{class:"fas fa-brain mr-1 text-[10px]"}),A(" Claude ")],-1)),e("span",E0,u(Gt(r)),1)])):h("",!0),r.geminiAccountId?(n(),d("div",O0,[t[60]||(t[60]=e("span",{class:"inline-flex items-center rounded bg-yellow-100 px-1.5 py-0.5 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300"},[e("i",{class:"fas fa-robot mr-1 text-[10px]"}),A(" Gemini ")],-1)),e("span",j0,u(qt(r)),1)])):h("",!0),r.openaiAccountId?(n(),d("div",G0,[t[61]||(t[61]=e("span",{class:"inline-flex items-center rounded bg-gray-100 px-1.5 py-0.5 text-gray-700 dark:bg-gray-700 dark:text-gray-300"},[e("i",{class:"fa-openai mr-1 text-[10px]"}),A(" OpenAI ")],-1)),e("span",q0,u(zt(r)),1)])):h("",!0),r.bedrockAccountId?(n(),d("div",z0,[t[62]||(t[62]=e("span",{class:"inline-flex items-center rounded bg-orange-100 px-1.5 py-0.5 text-orange-700 dark:bg-orange-900/30 dark:text-orange-300"},[e("i",{class:"fas fa-cloud mr-1 text-[10px]"}),A(" Bedrock ")],-1)),e("span",F0,u(Ft(r)),1)])):h("",!0),r.droidAccountId?(n(),d("div",W0,[t[63]||(t[63]=e("span",{class:"inline-flex items-center rounded bg-cyan-100 px-1.5 py-0.5 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300"},[e("i",{class:"fas fa-robot mr-1 text-[10px]"}),A(" Droid ")],-1)),e("span",B0,u(Wt(r)),1)])):h("",!0),!r.claudeAccountId&&!r.claudeConsoleAccountId&&!r.geminiAccountId&&!r.openaiAccountId&&!r.bedrockAccountId&&!r.droidAccountId?(n(),d("div",N0,t[64]||(t[64]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),A(" 共享池 ",-1)]))):h("",!0)],64))])]),e("td",H0,[e("div",Y0,[(n(!0),d(Z,null,re(r.tags||[],q=>(n(),d("span",{key:q,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},u(q),1))),128)),!r.tags||r.tags.length===0?(n(),d("span",Q0,"无标签")):h("",!0)])]),e("td",J0,[e("span",{class:z(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",r.isActive?"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300":"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300"])},[e("div",{class:z(["mr-2 h-2 w-2 rounded-full",r.isActive?"bg-green-500":"bg-red-500"])},null,2),A(" "+u(r.isActive?"活跃":"禁用"),1)],2)]),e("td",X0,[je(r.id)?(n(),d("div",Z0,t[65]||(t[65]=[e("div",{class:"h-5 w-14 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1)]))):ye(r.id)?(n(),d("span",eu,u(ye(r.id).formattedCost||"$0.00"),1)):(n(),d("span",tu,"-"))]),e("td",su,[e("div",au,[je(r.id)&&(r.dailyCostLimit>0||r.totalCostLimit>0||r.rateLimitWindow>0&&r.rateLimitCost>0)?(n(),d("div",ru,t[66]||(t[66]=[e("div",{class:"h-4 w-full animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1),e("div",{class:"h-3 w-2/3 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1)]))):(n(),d(Z,{key:1},[r.dailyCostLimit>0?(n(),ke(Ue,{key:0,current:((R=ye(r.id))==null?void 0:R.dailyCost)||0,label:"每日限制",limit:r.dailyCostLimit,type:"daily",variant:"compact"},null,8,["current","limit"])):r.totalCostLimit>0?(n(),ke(Ue,{key:1,current:((E=ye(r.id))==null?void 0:E.allTimeCost)||0,label:"总费用限制",limit:r.totalCostLimit,type:"total",variant:"compact"},null,8,["current","limit"])):r.rateLimitWindow>0&&r.rateLimitCost>0&&(!r.dailyCostLimit||r.dailyCostLimit===0)&&(!r.totalCostLimit||r.totalCostLimit===0)?(n(),d("div",ou,[ne(Ue,{current:((M=ye(r.id))==null?void 0:M.currentWindowCost)||0,label:"窗口费用",limit:r.rateLimitCost,type:"window",variant:"compact"},null,8,["current","limit"]),e("div",lu,[e("div",nu,[t[67]||(t[67]=e("i",{class:"fas fa-clock text-[10px]"},null,-1)),e("span",iu,u(r.rateLimitWindow)+"分钟窗口",1)]),e("span",{class:z(["font-bold",(((ae=ye(r.id))==null?void 0:ae.windowRemainingSeconds)||0)>0?"text-sky-700 dark:text-sky-300":"text-gray-400 dark:text-gray-500"])},u((((le=ye(r.id))==null?void 0:le.windowRemainingSeconds)||0)>0?as(((b=ye(r.id))==null?void 0:b.windowRemainingSeconds)||0):"未激活"),3)])])):(n(),d("div",du,t[68]||(t[68]=[e("i",{class:"fas fa-infinity text-base"},null,-1),e("span",{class:"text-xs font-medium"},"无限制",-1)])))],64))])]),e("td",uu,[je(r.id)?(n(),d("div",cu,t[69]||(t[69]=[e("div",{class:"h-5 w-16 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1)]))):ye(r.id)?(n(),d("div",gu,[e("span",pu,u(Ie(ye(r.id).tokens||0)),1)])):(n(),d("span",mu,"-"))]),e("td",xu,[je(r.id)?(n(),d("div",yu,t[70]||(t[70]=[e("div",{class:"h-5 w-12 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1)]))):ye(r.id)?(n(),d("div",fu,[e("span",bu,u(wt(ye(r.id).requests||0)),1),t[71]||(t[71]=e("span",{class:"text-xs text-gray-500"},"次",-1))])):(n(),d("span",vu,"-"))]),e("td",ku,[e("div",wu,[r.lastUsedAt?(n(),d("span",{key:0,class:"cursor-help",style:{"font-size":"13px"},title:new Date(r.lastUsedAt).toLocaleString("zh-CN")},u(At(r.lastUsedAt)),9,hu)):(n(),d("span",Au,"从未使用")),r.lastUsedAt&&ut(r.id)?(n(),d("span",$u,t[72]||(t[72]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),A(" 加载中... ",-1)]))):Ct(r)?(n(),d("span",{key:3,class:"mt-1 text-xs text-gray-500 dark:text-gray-400",title:Xe(r)},[A(u(Kt(r))+" ",1),Lt(r)?h("",!0):(n(),d("span",Iu," ("+u(yt(r))+") ",1))],8,Cu)):(n(),d("span",Ku," 暂无使用账号 "))])]),e("td",Lu,u(new Date(r.createdAt).toLocaleDateString()),1),e("td",Du,[e("div",_u,[r.expirationMode==="activation"&&!r.isActivated?(n(),d("span",Tu,[t[73]||(t[73]=e("i",{class:"fas fa-pause-circle mr-1 text-xs"},null,-1)),A(" 未激活 ( "+u(r.activationDays||(r.activationUnit==="hours"?24:30))+u(r.activationUnit==="hours"?"小时":"天")+") ",1)])):r.expiresAt?(n(),d("span",Su,[gt(r.expiresAt)?(n(),d("span",{key:0,class:"inline-flex cursor-pointer items-center text-red-600 hover:underline",style:{"font-size":"13px"},onClick:Ke(q=>Je(r),["stop"])},t[74]||(t[74]=[e("i",{class:"fas fa-exclamation-circle mr-1 text-xs"},null,-1),A(" 已过期 ",-1)]),8,Uu)):pt(r.expiresAt)?(n(),d("span",{key:1,class:"inline-flex cursor-pointer items-center text-orange-600 hover:underline",style:{"font-size":"13px"},onClick:Ke(q=>Je(r),["stop"])},[t[75]||(t[75]=e("i",{class:"fas fa-clock mr-1 text-xs"},null,-1)),A(" "+u(Bt(r.expiresAt)),1)],8,Pu)):(n(),d("span",{key:2,class:"cursor-pointer text-gray-600 hover:underline dark:text-gray-400",style:{"font-size":"13px"},onClick:Ke(q=>Je(r),["stop"])},u(Bt(r.expiresAt)),9,Mu))])):(n(),d("span",{key:2,class:"inline-flex cursor-pointer items-center text-gray-400 hover:underline dark:text-gray-500",style:{"font-size":"13px"},onClick:Ke(q=>Je(r),["stop"])},t[76]||(t[76]=[e("i",{class:"fas fa-infinity mr-1 text-xs"},null,-1),A(" 永不过期 ",-1)]),8,Ru))])]),e("td",Vu,[e("div",Eu,[e("button",{class:"rounded px-2 py-1 text-xs font-medium text-purple-600 transition-colors hover:bg-purple-50 hover:text-purple-900 dark:hover:bg-purple-900/20",title:"查看详细统计",onClick:q=>ht(r)},t[77]||(t[77]=[e("i",{class:"fas fa-chart-line"},null,-1),e("span",{class:"ml-1 hidden xl:inline"},"详情",-1)]),8,Ou),r&&r.id?(n(),d("button",{key:0,class:"rounded px-2 py-1 text-xs font-medium text-indigo-600 transition-colors hover:bg-indigo-50 hover:text-indigo-900 dark:hover:bg-indigo-900/20",title:"模型使用分布",onClick:q=>hs(r.id)},[e("i",{class:z(["fas",se.value[r.id]?"fa-chevron-up":"fa-chevron-down"])},null,2),t[78]||(t[78]=e("span",{class:"ml-1 hidden xl:inline"},"模型",-1))],8,ju)):h("",!0),e("button",{class:"rounded px-2 py-1 text-xs font-medium text-blue-600 transition-colors hover:bg-blue-50 hover:text-blue-900 dark:hover:bg-blue-900/20",title:"编辑",onClick:q=>Xt(r)},t[79]||(t[79]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1 hidden xl:inline"},"编辑",-1)]),8,Gu),r.expiresAt&&(gt(r.expiresAt)||pt(r.expiresAt))?(n(),d("button",{key:1,class:"rounded px-2 py-1 text-xs font-medium text-green-600 transition-colors hover:bg-green-50 hover:text-green-900 dark:hover:bg-green-900/20",title:"续期",onClick:q=>Zt(r)},t[80]||(t[80]=[e("i",{class:"fas fa-clock"},null,-1),e("span",{class:"ml-1 hidden xl:inline"},"续期",-1)]),8,qu)):h("",!0),e("button",{class:z([r.isActive?"text-orange-600 hover:bg-orange-50 hover:text-orange-900 dark:hover:bg-orange-900/20":"text-green-600 hover:bg-green-50 hover:text-green-900 dark:hover:bg-green-900/20","rounded px-2 py-1 text-xs font-medium transition-colors"]),title:r.isActive?"禁用":"激活",onClick:q=>es(r)},[e("i",{class:z(["fas",r.isActive?"fa-ban":"fa-check-circle"])},null,2),e("span",Fu,u(r.isActive?"禁用":"激活"),1)],10,zu),e("button",{class:"rounded px-2 py-1 text-xs font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900 dark:hover:bg-red-900/20",title:"删除",onClick:q=>ts(r.id)},t[81]||(t[81]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1 hidden xl:inline"},"删除",-1)]),8,Wu)])])],2),r&&r.id&&se.value[r.id]?(n(),d("tr",Bu,[e("td",Nu,[f.value[r.id]?h("",!0):(n(),d("div",Hu,t[82]||(t[82]=[e("div",{class:"loading-spinner mx-auto"},null,-1),e("p",{class:"mt-2 text-sm text-gray-500 dark:text-gray-400"}," 加载模型统计... ",-1)]))),e("div",Yu,[e("div",Qu,[t[83]||(t[83]=e("h5",{class:"flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-chart-pie mr-2 text-indigo-500"}),A(" 模型使用分布 ")],-1)),e("div",Ju,[f.value[r.id]&&f.value[r.id].length>0?(n(),d("span",Xu,u(f.value[r.id].length)+" 个模型 ",1)):h("",!0),e("div",Zu,[e("div",ec,[(n(!0),d(Z,null,re(Re(r.id).presetOptions,q=>(n(),d("button",{key:q.value,class:z(["rounded px-2 py-1 text-xs font-medium transition-colors",Re(r.id).preset===q.value&&Re(r.id).type==="preset"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-200"]),onClick:de=>Qt(q.value,r.id)},u(q.label),11,tc))),128))]),ne(x,{class:"api-key-date-picker",clearable:!0,"default-time":i.value,"disabled-date":Jt,"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","model-value":Re(r.id).customRange,"range-separator":"至",size:"small","start-placeholder":"开始日期",style:{width:"280px"},type:"datetimerange","unlink-panels":!1,"value-format":"YYYY-MM-DD HH:mm:ss","onUpdate:modelValue":q=>Ss(r.id,q)},null,8,["default-time","model-value","onUpdate:modelValue"])])])]),f.value[r.id]&&f.value[r.id].length===0?(n(),d("div",sc,[e("div",ac,[t[85]||(t[85]=e("i",{class:"fas fa-chart-line text-lg text-gray-400"},null,-1)),t[86]||(t[86]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"}," 暂无模型使用数据 ",-1)),e("button",{class:"ml-2 flex items-center gap-1 text-sm text-blue-500 transition-colors hover:text-blue-700",title:"重置筛选条件并刷新",onClick:q=>Us(r.id)},t[84]||(t[84]=[e("i",{class:"fas fa-sync-alt text-xs"},null,-1),e("span",{class:"text-xs"},"刷新",-1)]),8,rc)]),t[87]||(t[87]=e("p",{class:"text-xs text-gray-400"}," 尝试调整时间范围或点击刷新重新加载数据 ",-1))])):f.value[r.id]&&f.value[r.id].length>0?(n(),d("div",oc,[(n(!0),d(Z,null,re(f.value[r.id],q=>(n(),d("div",{key:q.model,class:"rounded-xl border border-gray-200 bg-gradient-to-br from-white to-gray-50 p-4 transition-all duration-200 hover:border-indigo-300 hover:shadow-lg dark:border-gray-600 dark:from-gray-800 dark:to-gray-700 dark:hover:border-indigo-500"},[e("div",lc,[e("div",nc,[e("span",ic,u(q.model),1),e("span",dc,u(q.requests)+" 次请求",1)])]),e("div",uc,[e("div",cc,[t[88]||(t[88]=e("span",{class:"flex items-center text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-coins mr-1 text-xs text-yellow-500"}),A(" 总Token: ")],-1)),e("span",gc,u(Ie(q.allTokens)),1)]),e("div",pc,[t[89]||(t[89]=e("span",{class:"flex items-center text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-dollar-sign mr-1 text-xs text-green-500"}),A(" 费用: ")],-1)),e("span",mc,u(As(q)),1)]),e("div",xc,[e("div",yc,[t[90]||(t[90]=e("span",{class:"flex items-center"},[e("i",{class:"fas fa-arrow-down mr-1 text-green-500"}),A(" 输入: ")],-1)),e("span",fc,u(Ie(q.inputTokens)),1)]),e("div",bc,[t[91]||(t[91]=e("span",{class:"flex items-center"},[e("i",{class:"fas fa-arrow-up mr-1 text-blue-500"}),A(" 输出: ")],-1)),e("span",vc,u(Ie(q.outputTokens)),1)]),q.cacheCreateTokens>0?(n(),d("div",kc,[t[92]||(t[92]=e("span",{class:"flex items-center"},[e("i",{class:"fas fa-save mr-1"}),A(" 缓存创建: ")],-1)),e("span",wc,u(Ie(q.cacheCreateTokens)),1)])):h("",!0),q.cacheReadTokens>0?(n(),d("div",hc,[t[93]||(t[93]=e("span",{class:"flex items-center"},[e("i",{class:"fas fa-download mr-1"}),A(" 缓存读取: ")],-1)),e("span",Ac,u(Ie(q.cacheReadTokens)),1)])):h("",!0)])]),e("div",$c,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-indigo-500 to-purple-600 transition-all duration-500",style:bt({width:Nt(q.allTokens,f.value[r.id])+"%"})},null,4)]),e("div",Cc,[e("span",Ic,u(Nt(q.allTokens,f.value[r.id]))+"% ",1)])]))),128))])):h("",!0),f.value[r.id]&&f.value[r.id].length>0?(n(),d("div",Kc,[e("div",Lc,[t[96]||(t[96]=e("span",{class:"flex items-center font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-calculator mr-2 text-indigo-500"}),A(" 总计统计 ")],-1)),e("div",Dc,[e("span",_c,[t[94]||(t[94]=A(" 总请求: ",-1)),e("span",Tc,u(f.value[r.id].reduce((q,de)=>q+de.requests,0)),1)]),e("span",Sc,[t[95]||(t[95]=A(" 总Token: ",-1)),e("span",Uc,u(Ie(f.value[r.id].reduce((q,de)=>q+de.allTokens,0))),1)])])])])):h("",!0)])])])):h("",!0)],64)}),128))])])])])),!Q.value&&it.value.length>0?(n(),d("div",Pc,[(n(!0),d(Z,null,re(qe.value,r=>{var v,R,E,M,ae,le;return n(),d("div",{key:r.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",Mc,[e("div",Rc,[D.value?_((n(),d("input",{key:0,"onUpdate:modelValue":t[15]||(t[15]=b=>$.value=b),class:"mt-1 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:r.id,onChange:_e},null,40,Vc)),[[Te,$.value]]):h("",!0),e("div",null,[e("h4",Ec,u(r.name),1),e("p",Oc,u(r.id),1)])]),e("span",{class:z(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",r.isActive?"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300":"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300"])},[e("div",{class:z(["mr-1.5 h-1.5 w-1.5 rounded-full",r.isActive?"bg-green-500":"bg-red-500"])},null,2),A(" "+u(r.isActive?"活跃":"已停用"),1)],2)]),e("div",jc,[r.claudeAccountId||r.claudeConsoleAccountId?(n(),d("div",Gc,[t[97]||(t[97]=e("span",{class:"inline-flex items-center rounded bg-indigo-100 px-2 py-0.5 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300"},[e("i",{class:"fas fa-brain mr-1"}),A(" Claude ")],-1)),e("span",qc,u(Gt(r)),1)])):h("",!0),r.geminiAccountId?(n(),d("div",zc,[t[98]||(t[98]=e("span",{class:"inline-flex items-center rounded bg-yellow-100 px-2 py-0.5 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300"},[e("i",{class:"fas fa-robot mr-1"}),A(" Gemini ")],-1)),e("span",Fc,u(qt(r)),1)])):h("",!0),r.openaiAccountId?(n(),d("div",Wc,[t[99]||(t[99]=e("span",{class:"inline-flex items-center rounded bg-gray-100 px-2 py-0.5 text-gray-700 dark:bg-gray-700 dark:text-gray-300"},[e("i",{class:"fa-openai mr-1"}),A(" OpenAI ")],-1)),e("span",Bc,u(zt(r)),1)])):h("",!0),r.bedrockAccountId?(n(),d("div",Nc,[t[100]||(t[100]=e("span",{class:"inline-flex items-center rounded bg-orange-100 px-2 py-0.5 text-orange-700 dark:bg-orange-900/30 dark:text-orange-300"},[e("i",{class:"fas fa-cloud mr-1"}),A(" Bedrock ")],-1)),e("span",Hc,u(Ft(r)),1)])):h("",!0),r.droidAccountId?(n(),d("div",Yc,[t[101]||(t[101]=e("span",{class:"inline-flex items-center rounded bg-cyan-100 px-2 py-0.5 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300"},[e("i",{class:"fas fa-robot mr-1"}),A(" Droid ")],-1)),e("span",Qc,u(Wt(r)),1)])):h("",!0),!r.claudeAccountId&&!r.claudeConsoleAccountId&&!r.geminiAccountId&&!r.openaiAccountId&&!r.bedrockAccountId&&!r.droidAccountId?(n(),d("div",Jc,t[102]||(t[102]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),A(" 使用共享池 ",-1)]))):h("",!0),B.value&&r.ownerDisplayName?(n(),d("div",Xc,[t[103]||(t[103]=e("i",{class:"fas fa-user mr-1"},null,-1)),A(" "+u(r.ownerDisplayName),1)])):h("",!0)]),e("div",Zc,[e("div",eg,[e("div",tg,[e("span",sg,u(k.type==="custom"?"累计统计":"今日使用"),1),e("button",{class:"text-xs text-blue-600 hover:text-blue-800",onClick:b=>ht(r)},t[104]||(t[104]=[e("i",{class:"fas fa-chart-line mr-1"},null,-1),A("详情 ",-1)]),8,ag)]),e("div",rg,[e("div",null,[je(r.id)?(n(),d("div",og)):ye(r.id)?(n(),d("p",lg,u(wt(ye(r.id).requests||0))+" 次 ",1)):(n(),d("p",ng,"-")),t[105]||(t[105]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"请求",-1))]),e("div",null,[je(r.id)?(n(),d("div",ig)):ye(r.id)?(n(),d("p",dg,u(ye(r.id).formattedCost||"$0.00"),1)):(n(),d("p",ug,"-")),t[106]||(t[106]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"费用",-1))])]),e("div",cg,[e("div",gg,[t[107]||(t[107]=e("span",null,"最后使用",-1)),e("span",pg,u(r.lastUsedAt?At(r.lastUsedAt):"从未使用"),1)]),e("div",mg,[t[109]||(t[109]=e("span",null,"账号",-1)),r.lastUsedAt&&ut(r.id)?(n(),d("span",xg,t[108]||(t[108]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),A(" 加载中... ",-1)]))):Ct(r)?(n(),d("span",{key:1,class:"truncate text-gray-500 dark:text-gray-400",style:{"max-width":"180px"},title:Xe(r)},[A(u(Kt(r))+" ",1),Lt(r)?h("",!0):(n(),d("span",fg," ("+u(yt(r))+") ",1))],8,yg)):(n(),d("span",bg,"暂无使用账号"))])])]),e("div",vg,[je(r.id)&&(r.dailyCostLimit>0||r.totalCostLimit>0||r.rateLimitWindow>0&&r.rateLimitCost>0)?(n(),d("div",kg,t[110]||(t[110]=[e("div",{class:"h-4 w-full animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1),e("div",{class:"h-3 w-2/3 animate-pulse rounded bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700"},null,-1)]))):(n(),d(Z,{key:1},[r.dailyCostLimit>0?(n(),ke(Ue,{key:0,current:((v=ye(r.id))==null?void 0:v.dailyCost)||0,label:"每日限制",limit:r.dailyCostLimit,type:"daily",variant:"compact"},null,8,["current","limit"])):r.totalCostLimit>0?(n(),ke(Ue,{key:1,current:((R=ye(r.id))==null?void 0:R.allTimeCost)||0,label:"总费用限制",limit:r.totalCostLimit,type:"total",variant:"compact"},null,8,["current","limit"])):r.rateLimitWindow>0&&r.rateLimitCost>0&&(!r.dailyCostLimit||r.dailyCostLimit===0)&&(!r.totalCostLimit||r.totalCostLimit===0)?(n(),d("div",wg,[ne(Ue,{current:((E=ye(r.id))==null?void 0:E.currentWindowCost)||0,label:"窗口费用",limit:r.rateLimitCost,type:"window",variant:"compact"},null,8,["current","limit"]),e("div",hg,[e("div",Ag,[t[111]||(t[111]=e("i",{class:"fas fa-clock text-xs"},null,-1)),e("span",$g,u(r.rateLimitWindow)+"分钟窗口",1)]),e("span",{class:z(["font-bold",(((M=ye(r.id))==null?void 0:M.windowRemainingSeconds)||0)>0?"text-sky-700 dark:text-sky-300":"text-gray-400 dark:text-gray-500"])},u((((ae=ye(r.id))==null?void 0:ae.windowRemainingSeconds)||0)>0?as(((le=ye(r.id))==null?void 0:le.windowRemainingSeconds)||0):"未激活"),3)])])):(n(),d("div",Cg,t[112]||(t[112]=[e("i",{class:"fas fa-infinity text-base"},null,-1),e("span",{class:"text-xs font-medium"},"无限制",-1)])))],64))])]),e("div",Ig,[e("div",Kg,[t[113]||(t[113]=e("span",null,"创建时间",-1)),e("span",null,u(Ve(r.createdAt)),1)]),e("div",Lg,[t[115]||(t[115]=e("span",null,"过期时间",-1)),e("div",Dg,[e("span",{class:z(pt(r.expiresAt)?"font-semibold text-orange-600":"")},u(r.expiresAt?Ve(r.expiresAt):"永不过期"),3),e("button",{class:"inline-flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-all duration-200 hover:bg-blue-50 hover:text-blue-500 dark:hover:bg-blue-900/20",title:"编辑过期时间",onClick:Ke(b=>Je(r),["stop"])},t[114]||(t[114]=[e("svg",{class:"h-3 w-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"})],-1)]),8,_g)])])]),r.tags&&r.tags.length>0?(n(),d("div",Tg,[(n(!0),d(Z,null,re(r.tags,b=>(n(),d("span",{key:b,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},u(b),1))),128))])):h("",!0),e("div",Sg,[e("button",{class:"flex flex-1 items-center justify-center gap-1 rounded-lg bg-blue-50 px-3 py-1.5 text-xs text-blue-600 transition-colors hover:bg-blue-100 dark:bg-blue-900/30 dark:hover:bg-blue-900/50",onClick:b=>ht(r)},t[116]||(t[116]=[e("i",{class:"fas fa-chart-line"},null,-1),A(" 查看详情 ",-1)]),8,Ug),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-1.5 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",onClick:b=>Xt(r)},t[117]||(t[117]=[e("i",{class:"fas fa-edit mr-1"},null,-1),A(" 编辑 ",-1)]),8,Pg),r.expiresAt&&(gt(r.expiresAt)||pt(r.expiresAt))?(n(),d("button",{key:0,class:"flex-1 rounded-lg bg-orange-50 px-3 py-1.5 text-xs text-orange-600 transition-colors hover:bg-orange-100 dark:bg-orange-900/30 dark:hover:bg-orange-900/50",onClick:b=>Zt(r)},t[118]||(t[118]=[e("i",{class:"fas fa-clock mr-1"},null,-1),A(" 续期 ",-1)]),8,Mg)):h("",!0),e("button",{class:z([r.isActive?"bg-orange-50 text-orange-600 hover:bg-orange-100 dark:bg-orange-900/30 dark:hover:bg-orange-900/50":"bg-green-50 text-green-600 hover:bg-green-100 dark:bg-green-900/30 dark:hover:bg-green-900/50","rounded-lg px-3 py-1.5 text-xs transition-colors"]),onClick:b=>es(r)},[e("i",{class:z(["fas",r.isActive?"fa-ban":"fa-check-circle","mr-1"])},null,2),A(" "+u(r.isActive?"禁用":"激活"),1)],10,Rg),e("button",{class:"rounded-lg bg-red-50 px-3 py-1.5 text-xs text-red-600 transition-colors hover:bg-red-100 dark:bg-red-900/30 dark:hover:bg-red-900/50",onClick:b=>ts(r.id)},t[119]||(t[119]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Vg)])])}),128))])):h("",!0),it.value.length>0?(n(),d("div",Eg,[e("div",Og,[e("span",jg," 共 "+u(it.value.length)+" 条记录 ",1),e("div",Gg,[t[120]||(t[120]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"每页显示",-1)),_(e("select",{"onUpdate:modelValue":t[16]||(t[16]=r=>Be.value=r),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"},[(n(),d(Z,null,re(xs,r=>e("option",{key:r,value:r},u(r),9,qg)),64))],512),[[at,Be.value]]),t[121]||(t[121]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"条",-1))])]),e("div",zg,[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:J.value===1,onClick:t[17]||(t[17]=r=>J.value--)},t[122]||(t[122]=[e("i",{class:"fas fa-chevron-left"},null,-1)]),8,Fg),e("div",Wg,[Ot.value?(n(),d("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:t[18]||(t[18]=r=>J.value=1)}," 1 ")):h("",!0),ys.value?(n(),d("span",Bg,"...")):h("",!0),(n(!0),d(Z,null,re(He.value,r=>(n(),d("button",{key:r,class:z(["rounded-md px-2 py-1 text-xs font-medium sm:px-3 sm:text-sm",r===J.value?"bg-blue-600 text-white":"border 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:v=>J.value=r},u(r),11,Ng))),128)),fs.value?(n(),d("span",Hg,"...")):h("",!0),jt.value?(n(),d("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:t[19]||(t[19]=r=>J.value=Oe.value)},u(Oe.value),1)):h("",!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:J.value===Oe.value||Oe.value===0,onClick:t[20]||(t[20]=r=>J.value++)},t[123]||(t[123]=[e("i",{class:"fas fa-chevron-right"},null,-1)]),8,Yg)])])):h("",!0)])):V.value==="deleted"?(n(),d("div",Qg,[W.value?(n(),d("div",Jg,t[124]||(t[124]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载已删除的 API Keys...",-1)]))):T.value.length===0?(n(),d("div",Xg,t[125]||(t[125]=[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-trash text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无已删除的 API Keys",-1),e("p",{class:"mt-2 text-sm text-gray-400"},"已删除的 API Keys 会出现在这里",-1)]))):(n(),d("div",Zg,[e("div",ep,[T.value.length>0?(n(),d("button",{key:0,class:"rounded-lg bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700 dark:bg-red-600 dark:hover:bg-red-700",onClick:zs},[t[126]||(t[126]=e("i",{class:"fas fa-trash-alt mr-2"},null,-1)),A(" 清空所有已删除 ("+u(T.value.length)+") ",1)])):h("",!0)]),e("div",tp,[e("div",sp,[e("table",ap,[e("thead",rp,[e("tr",null,[t[127]||(t[127]=e("th",{class:"w-[14%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 名称 ",-1)),t[128]||(t[128]=e("th",{class:"w-[15%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 所属账号 ",-1)),B.value?(n(),d("th",op," 创建者 ")):h("",!0),t[129]||(t[129]=e("th",{class:"w-[15%] min-w-[120px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 创建时间 ",-1)),t[130]||(t[130]=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)),t[131]||(t[131]=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)),t[132]||(t[132]=e("th",{class:"w-[8%] min-w-[60px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 费用 ",-1)),t[133]||(t[133]=e("th",{class:"w-[8%] min-w-[60px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," Token ",-1)),t[134]||(t[134]=e("th",{class:"w-[8%] min-w-[60px] px-3 py-4 text-right text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 请求数 ",-1)),t[135]||(t[135]=e("th",{class:"w-[9%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),t[136]||(t[136]=e("th",{class:"operations-column sticky right-0 w-[15%] min-w-[160px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",lp,[(n(!0),d(Z,null,re(T.value,r=>{var v,R,E,M,ae,le;return n(),d("tr",{key:r.id,class:"table-row"},[e("td",np,[e("div",ip,[t[137]||(t[137]=e("div",{class:"mr-2 flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-red-500 to-red-600"},[e("i",{class:"fas fa-trash text-[10px] text-white"})],-1)),e("div",dp,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},u(r.name),9,up)])])]),e("td",cp,[e("div",gp,[r.claudeAccountId?(n(),d("div",pp,t[138]||(t[138]=[e("span",{class:"inline-flex items-center rounded bg-blue-100 px-1.5 py-0.5 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"},[e("i",{class:"fas fa-robot mr-1 text-[10px]"}),A(" Claude OAuth ")],-1)]))):r.claudeConsoleAccountId?(n(),d("div",mp,t[139]||(t[139]=[e("span",{class:"inline-flex items-center rounded bg-green-100 px-1.5 py-0.5 text-green-700 dark:bg-green-900/30 dark:text-green-300"},[e("i",{class:"fas fa-terminal mr-1 text-[10px]"}),A(" Claude Console ")],-1)]))):r.geminiAccountId?(n(),d("div",xp,t[140]||(t[140]=[e("span",{class:"inline-flex items-center rounded bg-purple-100 px-1.5 py-0.5 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300"},[e("i",{class:"fa-google mr-1 text-[10px]"}),A(" Gemini ")],-1)]))):(n(),d("div",yp,t[141]||(t[141]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),A(" 共享池 ",-1)])))])]),B.value?(n(),d("td",fp,[e("div",bp,[r.createdBy==="admin"?(n(),d("span",vp,t[142]||(t[142]=[e("i",{class:"fas fa-user-shield mr-1 text-xs"},null,-1),A(" 管理员 ",-1)]))):r.userUsername?(n(),d("span",kp,[t[143]||(t[143]=e("i",{class:"fas fa-user mr-1 text-xs"},null,-1)),A(" "+u(r.userUsername),1)])):(n(),d("span",wp,t[144]||(t[144]=[e("i",{class:"fas fa-question-circle mr-1 text-xs"},null,-1),A(" 未知 ",-1)])))])])):h("",!0),e("td",hp,u(Ve(r.createdAt)),1),e("td",Ap,[e("div",$p,[r.deletedByType==="admin"?(n(),d("span",Cp,[t[145]||(t[145]=e("i",{class:"fas fa-user-shield mr-1 text-xs"},null,-1)),A(" "+u(r.deletedBy),1)])):r.deletedByType==="user"?(n(),d("span",Ip,[t[146]||(t[146]=e("i",{class:"fas fa-user mr-1 text-xs"},null,-1)),A(" "+u(r.deletedBy),1)])):(n(),d("span",Kp,[t[147]||(t[147]=e("i",{class:"fas fa-cog mr-1 text-xs"},null,-1)),A(" "+u(r.deletedBy),1)]))])]),e("td",Lp,u(Ve(r.deletedAt)),1),e("td",Dp,[e("span",_p," $"+u((((R=(v=r.usage)==null?void 0:v.total)==null?void 0:R.cost)||0).toFixed(2)),1)]),e("td",Tp,[e("span",Sp,u(Ie(((M=(E=r.usage)==null?void 0:E.total)==null?void 0:M.tokens)||0)),1)]),e("td",Up,[e("div",Pp,[e("span",Mp,u(wt(((le=(ae=r.usage)==null?void 0:ae.total)==null?void 0:le.requests)||0)),1),t[148]||(t[148]=e("span",{class:"text-xs text-gray-500"},"次",-1))])]),e("td",Rp,[e("div",Vp,[r.lastUsedAt?(n(),d("span",{key:0,class:"cursor-help",style:{"font-size":"13px"},title:new Date(r.lastUsedAt).toLocaleString("zh-CN")},u(At(r.lastUsedAt)),9,Ep)):(n(),d("span",Op,"从未使用")),r.lastUsedAt&&ut(r.id)?(n(),d("span",jp,t[149]||(t[149]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),A(" 加载中... ",-1)]))):Ct(r)?(n(),d("span",{key:3,class:"mt-1 text-xs text-gray-500 dark:text-gray-400",title:Xe(r)},[A(u(Kt(r))+" ",1),Lt(r)?h("",!0):(n(),d("span",qp," ("+u(yt(r))+") ",1))],8,Gp)):(n(),d("span",zp," 暂无使用账号 "))])]),e("td",Fp,[e("div",Wp,[r.canRestore?(n(),d("button",{key:0,class:"rounded-lg bg-green-50 px-3 py-1.5 text-xs font-medium text-green-600 transition-colors hover:bg-green-100 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",title:"恢复 API Key",onClick:b=>Gs(r.id)},t[150]||(t[150]=[e("i",{class:"fas fa-undo mr-1"},null,-1),A(" 恢复 ",-1)]),8,Bp)):h("",!0),e("button",{class:"rounded-lg bg-red-50 px-3 py-1.5 text-xs font-medium text-red-600 transition-colors hover:bg-red-100 dark:bg-red-900/30 dark:text-red-400 dark:hover:bg-red-900/50",title:"彻底删除 API Key",onClick:b=>qs(r.id)},t[151]||(t[151]=[e("i",{class:"fas fa-times mr-1"},null,-1),A(" 彻底删除 ",-1)]),8,Np)])])])}),128))])])])])]))])):h("",!0)])]),Ne.value?(n(),ke(mo,{key:0,accounts:g.value,onBatchSuccess:Rs,onClose:t[21]||(t[21]=r=>Ne.value=!1),onSuccess:Ms},null,8,["accounts"])):h("",!0),ot.value?(n(),ke(fl,{key:1,accounts:g.value,"api-key":Mt.value,onClose:t[22]||(t[22]=r=>ot.value=!1),onSuccess:Os},null,8,["accounts","api-key"])):h("",!0),lt.value?(n(),ke(Pl,{key:2,"api-key":Rt.value,onClose:t[23]||(t[23]=r=>lt.value=!1),onSuccess:js},null,8,["api-key"])):h("",!0),vt.value?(n(),ke(Hl,{key:3,"api-key":Vt.value,onClose:t[24]||(t[24]=r=>vt.value=!1)},null,8,["api-key"])):h("",!0),kt.value?(n(),ke(kn,{key:4,"api-keys":Et.value,onClose:t[25]||(t[25]=r=>kt.value=!1)},null,8,["api-keys"])):h("",!0),nt.value?(n(),ke(mi,{key:5,accounts:g.value,"selected-keys":$.value,onClose:t[26]||(t[26]=r=>nt.value=!1),onSuccess:Es},null,8,["accounts","selected-keys"])):h("",!0),ne(ji,{ref_key:"expiryEditModalRef",ref:y,"api-key":l.value||{id:null,expiresAt:null,name:""},show:!!l.value,onClose:ss,onSave:Bs},null,8,["api-key","show"]),ne(qd,{"api-key":fe.value||{},show:ue.value,onClose:t[27]||(t[27]=r=>ue.value=!1)},null,8,["api-key","show"])])}}},tm=De(Hp,[["__scopeId","data-v-2b0f9c6c"]]);export{tm as default};