Files
GPT_Management/backend/internal/static/dist/assets/TeamsPage-CxJh0yqz.js

2 lines
14 KiB
JavaScript

import{c as q,d as ye,r,q as ae,p as ke,j as i,h as y,f as o,b as l,w as t,u as e,_ as c,e as u,g as H,a as _,i as I,t as p,F as h,s as E,U as le,l as ge,o as d,n as $e}from"./index-Dn7IzCAm.js";import{_ as xe,a as be,b as we,c as he}from"./CardTitle.vue_vue_type_script_setup_true_lang-nfBPK_e7.js";import{_ as U,a as S}from"./Label.vue_vue_type_script_setup_true_lang--UC5tvAY.js";import{_ as Ce,a as Te,b as Ae,c as te,d as N,e as Ve,f as Ie,g as Ue,h as Se,i as De,j as Me,k as ze,l as Pe,m as je,n as Be,o as Ee,p as Ne,q as Oe,r as Re,s as qe,t as Le,u as Fe,v as He,w as O,x as Ge,T as Je,y as Ke,z as Qe,A as We}from"./PaginationPrevious.vue_vue_type_script_setup_true_lang-Cpcjkb4w.js";import{_ as G,a as se,P as Xe,b as J,c as K,d as Q,e as W,f as X}from"./DialogTrigger.vue_vue_type_script_setup_true_lang-z4mExhxq.js";import{_ as Ye}from"./Skeleton.vue_vue_type_script_setup_true_lang-BCg0BhRz.js";import{u as Ze,d as ea,r as aa,c as la}from"./accounts-m0t2YqdJ.js";import{a as ne}from"./invite-DRaEKloN.js";import{L as R}from"./index-DTrJzHuX.js";import{R as ta}from"./refresh-cw-6LwrArgC.js";const sa=q("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);const na=q("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const ua=q("shuffle",[["path",{d:"m18 14 4 4-4 4",key:"10pe0f"}],["path",{d:"m18 2 4 4-4 4",key:"pucp1d"}],["path",{d:"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22",key:"1ailkh"}],["path",{d:"M2 6h1.972a4 4 0 0 1 3.6 2.2",key:"km57vx"}],["path",{d:"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45",key:"os18l9"}]]);const ia=q("user-plus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]),oa={class:"space-y-6"},da={class:"flex items-center justify-between"},ra={class:"flex items-center gap-2"},fa={class:"space-y-2"},ma={class:"space-y-2"},va={class:"relative"},ca={class:"space-y-2"},_a={class:"space-y-2"},pa={key:0,class:"space-y-4"},ya={key:1,class:"flex-1 flex flex-col items-center justify-center text-muted-foreground"},ka={class:"flex-1"},ga={class:"flex items-center justify-between mt-4 pt-4 border-t"},$a={class:"flex items-center gap-2"},xa={class:"text-sm text-muted-foreground"},ba={class:"space-y-2"},za=ye({__name:"TeamsPage",setup(wa){const ue=ge(),f=Ze(),L=r(!1),D=r(null),M=r(null),k=r(!1),z=r(!1),P=r(!1),j=r(!1),C=r(null),Y=r(""),g=r(""),$=r(!1),F=r(!1),T=r(""),x=r(!1),b=r(null),m=r(1),w=r(10),ie=[5,10,20,50],A=ae(()=>Math.ceil(f.accounts.length/w.value)),Z=ae(()=>{const n=(m.value-1)*w.value,a=n+w.value;return f.accounts.slice(n,a)}),v=r({team_account_id:"",auth_token:"",name:""});ke(()=>{oe()});async function oe(){try{await f.fetchAccounts()}catch(n){i.error(n.message||"加载 Team 列表失败")}}async function ee(n){D.value=n.id;try{const a=await aa(n.id);a.data.success&&a.data.data?(f.updateAccount(a.data.data),i.success("刷新成功")):i.error(a.data.message||"刷新失败"),await f.fetchAccounts()}catch(a){i.error(a.response?.data?.message||"刷新失败")}finally{D.value=null}}function de(n){b.value=n,P.value=!0}async function re(){if(!b.value)return;const n=b.value;M.value=n.id,P.value=!1;try{const a=await ea(n.id);a.data.success?(i.success("删除成功"),await f.fetchAccounts(),Z.value.length===0&&m.value>1&&m.value--):i.error(a.data.message||"删除失败")}catch(a){i.error(a.response?.data?.message||"删除失败")}finally{M.value=null,b.value=null}}async function fe(){if(!v.value.team_account_id.trim()){i.error("请输入 Team Account ID");return}if(!v.value.auth_token.trim()){i.error("请输入 Auth Token");return}k.value=!0;try{const n=await la({team_account_id:v.value.team_account_id.trim(),auth_token:v.value.auth_token.trim(),name:v.value.name.trim()||void 0});n.data.success?(i.success("添加 Team 成功"),L.value=!1,v.value={team_account_id:"",auth_token:"",name:""},await f.fetchAccounts()):i.error(n.data.message||"添加失败")}catch(n){i.error(n.response?.data?.message||"添加失败")}finally{k.value=!1}}function me(n){ue.push(`/admin/teams/${n.id}/invites`)}function ve(n){C.value=n.id,Y.value=n.name||n.team_account_id,g.value="",j.value=!0}async function ce(){if(!g.value.trim()){i.error("请输入邮箱地址");return}if(C.value){$.value=!0;try{const n=await ne({email:g.value.trim(),account_id:C.value});n.data.success?(i.success("邀请发送成功"),j.value=!1,g.value="",C.value&&await ee(f.accounts.find(a=>a.id===C.value))):i.error(n.data.message||"邀请失败")}catch(n){i.error(n.response?.data?.message||"邀请失败")}finally{$.value=!1}}}async function _e(){if(!T.value.trim()){i.error("请输入邮箱地址");return}x.value=!0;try{const n=await ne({email:T.value.trim(),account_id:0});n.data.success?(i.success(`邀请发送成功,已分配到: ${n.data.account_name||"Team"}`),F.value=!1,T.value="",await f.fetchAccounts()):i.error(n.data.message||"邀请失败")}catch(n){i.error(n.response?.data?.message||"邀请失败")}finally{x.value=!1}}function V(n){n>=1&&n<=A.value&&(m.value=n)}function pe(n){n&&(w.value=Number(n),m.value=1)}return(n,a)=>(d(),y("div",oa,[o("div",da,[a[24]||(a[24]=o("h1",{class:"text-2xl font-bold"},"Team 管理",-1)),o("div",ra,[l(e(G),{open:L.value,"onUpdate:open":a[4]||(a[4]=s=>L.value=s)},{default:t(()=>[l(e(se),{"as-child":""},{default:t(()=>[l(e(c),null,{default:t(()=>[l(e(Xe),{class:"h-4 w-4 mr-2"}),a[14]||(a[14]=u(" 添加 Team ",-1))]),_:1})]),_:1}),l(e(J),null,{default:t(()=>[l(e(K),null,{default:t(()=>[l(e(Q),null,{default:t(()=>[...a[15]||(a[15]=[u("添加 Team",-1)])]),_:1}),l(e(W),null,{default:t(()=>[...a[16]||(a[16]=[u(" 填写 Team 信息以添加新的 ChatGPT Team 账号 ",-1)])]),_:1})]),_:1}),o("form",{onSubmit:H(fe,["prevent"]),class:"space-y-4"},[o("div",fa,[l(e(U),{for:"team_account_id"},{default:t(()=>[...a[17]||(a[17]=[u("Team Account ID *",-1)])]),_:1}),l(e(S),{id:"team_account_id",modelValue:v.value.team_account_id,"onUpdate:modelValue":a[0]||(a[0]=s=>v.value.team_account_id=s),placeholder:"例如: org-xxxxx",disabled:k.value},null,8,["modelValue","disabled"])]),o("div",ma,[l(e(U),{for:"auth_token"},{default:t(()=>[...a[18]||(a[18]=[u("Auth Token *",-1)])]),_:1}),o("div",va,[l(e(S),{id:"auth_token",modelValue:v.value.auth_token,"onUpdate:modelValue":a[1]||(a[1]=s=>v.value.auth_token=s),type:z.value?"text":"password",placeholder:"Bearer token",disabled:k.value,class:"pr-10"},null,8,["modelValue","type","disabled"]),l(e(c),{type:"button",variant:"ghost",size:"icon",class:"absolute right-0 top-0 h-full",onClick:a[2]||(a[2]=s=>z.value=!z.value)},{default:t(()=>[z.value?(d(),_(e(sa),{key:1,class:"h-4 w-4"})):(d(),_(e(na),{key:0,class:"h-4 w-4"}))]),_:1})])]),o("div",ca,[l(e(U),{for:"name"},{default:t(()=>[...a[19]||(a[19]=[u("名称(可选)",-1)])]),_:1}),l(e(S),{id:"name",modelValue:v.value.name,"onUpdate:modelValue":a[3]||(a[3]=s=>v.value.name=s),placeholder:"给这个 Team 起个名字",disabled:k.value},null,8,["modelValue","disabled"])]),l(e(X),null,{default:t(()=>[l(e(c),{type:"submit",disabled:k.value},{default:t(()=>[k.value?(d(),_(e(R),{key:0,class:"h-4 w-4 mr-2 animate-spin"})):I("",!0),u(" "+p(k.value?"添加中...":"添加"),1)]),_:1},8,["disabled"])]),_:1})],32)]),_:1})]),_:1},8,["open"]),l(e(G),{open:F.value,"onUpdate:open":a[6]||(a[6]=s=>F.value=s)},{default:t(()=>[l(e(se),{"as-child":""},{default:t(()=>[l(e(c),{variant:"outline"},{default:t(()=>[l(e(ua),{class:"h-4 w-4 mr-2"}),a[20]||(a[20]=u(" 随机邀请 ",-1))]),_:1})]),_:1}),l(e(J),null,{default:t(()=>[l(e(K),null,{default:t(()=>[l(e(Q),null,{default:t(()=>[...a[21]||(a[21]=[u("随机邀请",-1)])]),_:1}),l(e(W),null,{default:t(()=>[...a[22]||(a[22]=[u(" 系统将自动选择有空位的 Team 发送邀请 ",-1)])]),_:1})]),_:1}),o("form",{onSubmit:H(_e,["prevent"]),class:"space-y-4"},[o("div",_a,[l(e(U),{for:"random_invite_email"},{default:t(()=>[...a[23]||(a[23]=[u("邮箱地址 *",-1)])]),_:1}),l(e(S),{id:"random_invite_email",modelValue:T.value,"onUpdate:modelValue":a[5]||(a[5]=s=>T.value=s),type:"email",placeholder:"user@example.com",disabled:x.value},null,8,["modelValue","disabled"])]),l(e(X),null,{default:t(()=>[l(e(c),{type:"submit",disabled:x.value},{default:t(()=>[x.value?(d(),_(e(R),{key:0,class:"h-4 w-4 mr-2 animate-spin"})):I("",!0),u(" "+p(x.value?"邀请中...":"发送邀请"),1)]),_:1},8,["disabled"])]),_:1})],32)]),_:1})]),_:1},8,["open"])])]),l(e(xe),{class:"min-h-[600px] flex flex-col"},{default:t(()=>[l(e(be),null,{default:t(()=>[l(e(we),null,{default:t(()=>[...a[25]||(a[25]=[u("Team 列表",-1)])]),_:1})]),_:1}),l(e(he),{class:"flex-1 flex flex-col"},{default:t(()=>[e(f).loading&&e(f).accounts.length===0?(d(),y("div",pa,[(d(),y(h,null,E(5,s=>l(e(Ye),{key:s,class:"h-12 w-full"})),64))])):e(f).accounts.length===0?(d(),y("div",ya,[l(e(le),{class:"h-12 w-12 mb-4 opacity-50"}),a[26]||(a[26]=o("p",null,"暂无 Team",-1)),a[27]||(a[27]=o("p",{class:"text-sm"},"点击上方按钮添加第一个 Team",-1))])):(d(),y(h,{key:2},[o("div",ka,[l(e(Te),null,{default:t(()=>[l(e(Ae),null,{default:t(()=>[l(e(te),null,{default:t(()=>[l(e(N),null,{default:t(()=>[...a[28]||(a[28]=[u("名称",-1)])]),_:1}),l(e(N),null,{default:t(()=>[...a[29]||(a[29]=[u("订阅状态",-1)])]),_:1}),l(e(N),{class:"text-right"},{default:t(()=>[...a[30]||(a[30]=[u("剩余席位",-1)])]),_:1}),l(e(N),{class:"text-right"},{default:t(()=>[...a[31]||(a[31]=[u("操作",-1)])]),_:1})]),_:1})]),_:1}),l(e(Ve),null,{default:t(()=>[(d(!0),y(h,null,E(Z.value,s=>(d(),_(e(te),{key:s.id},{default:t(()=>[l(e(O),{class:"font-medium"},{default:t(()=>[u(p(s.name||s.team_account_id),1)]),_:2},1024),l(e(O),null,{default:t(()=>[l(e(Ge),{variant:s.is_active?"default":"destructive"},{default:t(()=>[u(p(s.is_active?"有效":"无效"),1)]),_:2},1032,["variant"])]),_:2},1024),l(e(O),{class:"text-right"},{default:t(()=>[u(p((s.seats_entitled||0)-(s.seats_in_use||0)),1)]),_:2},1024),l(e(O),{class:"text-right space-x-2"},{default:t(()=>[l(e(c),{variant:"outline",size:"sm",onClick:B=>ee(s),disabled:D.value===s.id},{default:t(()=>[l(e(ta),{class:$e(["h-4 w-4",D.value===s.id&&"animate-spin"])},null,8,["class"])]),_:2},1032,["onClick","disabled"]),l(e(c),{variant:"outline",size:"sm",onClick:B=>ve(s),title:"直接邀请"},{default:t(()=>[l(e(ia),{class:"h-4 w-4"})]),_:1},8,["onClick"]),l(e(c),{variant:"outline",size:"sm",onClick:B=>me(s),title:"查看已邀请用户"},{default:t(()=>[l(e(le),{class:"h-4 w-4"})]),_:1},8,["onClick"]),l(e(c),{variant:"destructive",size:"sm",onClick:B=>de(s),disabled:M.value===s.id},{default:t(()=>[M.value===s.id?(d(),_(e(R),{key:0,class:"h-4 w-4 animate-spin"})):(d(),_(e(Je),{key:1,class:"h-4 w-4"}))]),_:2},1032,["onClick","disabled"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),o("div",ga,[o("div",$a,[a[32]||(a[32]=o("span",{class:"text-sm text-muted-foreground"},"每页",-1)),l(e(Ie),{"model-value":String(w.value),"onUpdate:modelValue":pe},{default:t(()=>[l(e(Ue),{class:"w-[70px] h-8"},{default:t(()=>[l(e(Se))]),_:1}),l(e(De),null,{default:t(()=>[(d(),y(h,null,E(ie,s=>l(e(Ke),{key:s,value:String(s)},{default:t(()=>[u(p(s),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["model-value"]),o("span",xa,"条,共 "+p(e(f).accounts.length)+" 条",1)]),A.value>1?(d(),_(e(Ee),{key:0,total:e(f).accounts.length,"items-per-page":w.value,"default-page":1},{default:t(()=>[l(e(Me),{class:"flex items-center gap-1"},{default:t(()=>[l(e(ze),{onClick:a[7]||(a[7]=s=>V(1))}),l(e(Pe),{onClick:a[8]||(a[8]=s=>V(m.value-1))}),(d(!0),y(h,null,E(A.value,s=>(d(),y(h,{key:s},[s===1||s===A.value||s>=m.value-1&&s<=m.value+1?(d(),_(e(Qe),{key:0,value:s,onClick:B=>V(s)},{default:t(()=>[l(e(c),{class:"w-9 h-9 p-0",variant:s===m.value?"default":"outline"},{default:t(()=>[u(p(s),1)]),_:2},1032,["variant"])]),_:2},1032,["value","onClick"])):s===m.value-2||s===m.value+2?(d(),_(e(We),{key:1})):I("",!0)],64))),128)),l(e(je),{onClick:a[9]||(a[9]=s=>V(m.value+1))}),l(e(Be),{onClick:a[10]||(a[10]=s=>V(A.value))})]),_:1})]),_:1},8,["total","items-per-page"])):I("",!0)])],64))]),_:1})]),_:1}),l(e(Ce),{open:P.value,"onUpdate:open":a[11]||(a[11]=s=>P.value=s)},{default:t(()=>[l(e(Ne),null,{default:t(()=>[l(e(Oe),null,{default:t(()=>[l(e(Re),null,{default:t(()=>[...a[33]||(a[33]=[u("确认删除",-1)])]),_:1}),l(e(qe),null,{default:t(()=>[a[34]||(a[34]=u(" 确定要删除 Team ",-1)),o("strong",null,p(b.value?.name||b.value?.team_account_id),1),a[35]||(a[35]=u(" 吗?此操作不可撤销。 ",-1))]),_:1})]),_:1}),l(e(Le),null,{default:t(()=>[l(e(Fe),null,{default:t(()=>[...a[36]||(a[36]=[u("取消",-1)])]),_:1}),l(e(He),{onClick:re,class:"bg-destructive text-destructive-foreground hover:bg-destructive/90"},{default:t(()=>[...a[37]||(a[37]=[u(" 删除 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),l(e(G),{open:j.value,"onUpdate:open":a[13]||(a[13]=s=>j.value=s)},{default:t(()=>[l(e(J),null,{default:t(()=>[l(e(K),null,{default:t(()=>[l(e(Q),null,{default:t(()=>[...a[38]||(a[38]=[u("邀请用户",-1)])]),_:1}),l(e(W),null,{default:t(()=>[u(" 邀请用户加入 Team: "+p(Y.value),1)]),_:1})]),_:1}),o("form",{onSubmit:H(ce,["prevent"]),class:"space-y-4"},[o("div",ba,[l(e(U),{for:"invite_email"},{default:t(()=>[...a[39]||(a[39]=[u("邮箱地址 *",-1)])]),_:1}),l(e(S),{id:"invite_email",modelValue:g.value,"onUpdate:modelValue":a[12]||(a[12]=s=>g.value=s),type:"email",placeholder:"user@example.com",disabled:$.value},null,8,["modelValue","disabled"])]),l(e(X),null,{default:t(()=>[l(e(c),{type:"submit",disabled:$.value},{default:t(()=>[$.value?(d(),_(e(R),{key:0,class:"h-4 w-4 mr-2 animate-spin"})):I("",!0),u(" "+p($.value?"邀请中...":"发送邀请"),1)]),_:1},8,["disabled"])]),_:1})],32)]),_:1})]),_:1},8,["open"])]))}});export{za as default};