码桶
发现社区成员的开源项目
Users-1yoQrVio.js7.8 KB
import{u as oe,r as i,b as g,j as t,S as h,o as S,B as x,O as ce,aZ as U,T as b,F as w,C as me}from"./index-GWuvg2UH.js";import{B as E}from"./index-DihvOmSo.js";import{E as K}from"./index-VbOLTMR0.js";import{M as j}from"./Modal-08QhW3n9.js";import{S as C}from"./index-BZDftoba.js";import{S as V}from"./index-CfWZ9ycl.js";import{T as q}from"./index-mZVFvfKe.js";import{T as d}from"./index-BW_2QB9V.js";import"./IconTickCircle-BYgwCdAe.js";import"./_baseDifference-DopHgqVv.js";import"./index-DIHsQVbu.js";import"./slice-B6jKCnyX.js";import"./object-DkPZvw8u.js";import"./index-BMbdBPA2.js";function Te(){const{t:s}=oe(),[_,H]=i.useState([]),[Z,G]=i.useState(0),[p,J]=i.useState(1),[l,Q]=i.useState(""),[o,W]=i.useState(""),[z,P]=i.useState(!1),[A,$]=i.useState(""),[X,T]=i.useState(!1),[n,f]=i.useState({email:"",password:"",nickname:"",is_admin:!1}),[Y,B]=i.useState(!1),[c,v]=i.useState(null),[r,k]=i.useState({nickname:"",is_admin:!1,password:""}),[ee,L]=i.useState(!1),[I,O]=i.useState(null),[D,F]=i.useState([]),[se,N]=i.useState(!1),R=20,m=i.useCallback(async(e=p,a=l,y=o)=>{P(!0);try{const u=await g.users({page:String(e),page_size:String(R),keyword:a||"",status:y===""?"":String(y)});H(u.items||[]),G(u.total||0),J(u.page||e),$("")}catch(u){$(u.message)}finally{P(!1)}},[p,l,o]);i.useEffect(()=>{m(1,"","")},[]);const te=()=>{f({email:"",password:"",nickname:"",is_admin:!1}),T(!0)},ae=async()=>{if(!n.email.trim()||!n.password){d.warning(s("userAddRequired"));return}B(!0);try{await g.createUser({email:n.email.trim(),password:n.password,nickname:n.nickname.trim(),lang:"zh-CN",is_admin:n.is_admin?1:0}),d.success(s("userCreated")),T(!1),m(1,l,o)}catch(e){d.error(e.message)}finally{B(!1)}},ie=e=>{v(e),k({nickname:e.nickname||"",is_admin:!!e.is_admin,password:""})},ne=async()=>{if(c){L(!0);try{const e={nickname:r.nickname.trim()};c.is_self||(e.is_admin=r.is_admin?1:0),r.password&&(e.password=r.password),await g.updateUser(c.id,e),d.success(s("userSaved")),v(null),m(p,l,o)}catch(e){d.error(e.message)}finally{L(!1)}}},re=e=>{const a=e.status===1?0:1,y=async()=>{try{await g.userStatus(e.id,a),d.success(s(a===1?"userEnabled":"userDisabled")),m(p,l,o)}catch(u){d.error(u.message)}};a===0?j.confirm({title:s("userDisableTitle"),content:`${s("userDisableConfirm")}(${e.email})`,okButtonProps:{type:"danger",theme:"solid"},onOk:y}):y()},le=e=>{j.confirm({title:s("delete"),content:`${s("userDeleteConfirm")}(${e.email})`,okButtonProps:{type:"danger",theme:"solid"},onOk:async()=>{try{await g.deleteUser(e.id),d.success(s("userDeleted")),m(p,l,o)}catch(a){d.error(a.message)}}})},M=async e=>{O(e),F([]),N(!0);try{const a=await g.userSites(e.id);F(a.items||[])}catch(a){d.error(a.message)}finally{N(!1)}},de=[{title:"ID",dataIndex:"id",width:64},{title:s("memberEmail"),dataIndex:"email",ellipsis:{showTitle:!0},render:(e,a)=>t.jsxs(h,{spacing:8,children:[t.jsx("span",{children:e}),a.is_admin?t.jsx(S,{color:"red",size:"small",children:s("roleAdmin")}):null,a.is_self?t.jsx(S,{color:"blue",size:"small",children:s("userSelf")}):null]})},{title:s("profileNickname"),dataIndex:"nickname",width:140,ellipsis:{showTitle:!0},render:e=>e||"—"},{title:s("userStatus"),dataIndex:"status",width:96,render:e=>t.jsx(S,{color:e===1?"green":"grey",size:"small",children:s(e===1?"userStatusOn":"userStatusOff")})},{title:s("userSitesCount"),dataIndex:"sites_owned",width:90,render:(e,a)=>t.jsx(x,{size:"small",theme:"borderless",type:"primary",onClick:()=>M(a),children:e||0})},{title:s("userLastLogin"),dataIndex:"last_login_at",width:150,render:e=>e?ce(e):"—"},{title:s("time"),dataIndex:"created_at",width:120,render:e=>e?U(e):"-"},{title:s("actions"),dataIndex:"op",width:260,render:(e,a)=>t.jsxs(h,{spacing:4,children:[t.jsx(x,{size:"small",theme:"borderless",onClick:()=>ie(a),children:s("edit")}),t.jsx(x,{size:"small",theme:"borderless",onClick:()=>M(a),children:s("userSites")}),a.is_self?t.jsx(t.Fragment,{children:t.jsx(b.Text,{type:"tertiary",style:{fontSize:12},children:"—"})}):t.jsxs(t.Fragment,{children:[t.jsx(x,{size:"small",theme:"borderless",type:a.status===1?"warning":"primary",onClick:()=>re(a),children:a.status===1?s("userDisable"):s("userEnable")}),t.jsx(x,{size:"small",type:"danger",theme:"borderless",onClick:()=>le(a),children:s("delete")})]})]})}];return t.jsxs("div",{className:"page",children:[t.jsxs("div",{className:"toolbar",style:{justifyContent:"space-between"},children:[t.jsx(b.Title,{heading:5,style:{margin:0},children:s("userMgmtTitle")}),t.jsxs(h,{wrap:!0,spacing:8,children:[t.jsx(w,{value:l,onChange:Q,placeholder:s("userSearchPh"),showClear:!0,style:{width:240},onEnterPress:()=>m(1,l,o)}),t.jsx(me,{value:o,style:{width:130},onChange:e=>{W(e),m(1,l,e)},optionList:[{value:"",label:s("userAllStatus")},{value:"1",label:s("userStatusOn")},{value:"0",label:s("userStatusOff")}]}),t.jsx(x,{theme:"solid",onClick:te,children:s("userAdd")})]})]}),t.jsx(E,{type:"info",description:s("userMgmtIntro"),style:{marginBottom:12}}),A&&t.jsx(E,{type:"danger",description:A,style:{marginBottom:12}}),t.jsx("div",{className:"card",style:{padding:0,overflow:"hidden"},children:z&&!_.length?t.jsx("div",{style:{padding:16},children:t.jsx(C,{active:!0,placeholder:t.jsx(C.Paragraph,{rows:5}),loading:!0})}):t.jsx(q,{columns:de,dataSource:_,rowKey:"id",size:"middle",loading:z&&!!_.length,empty:t.jsx(K,{description:s("userEmpty")}),pagination:{currentPage:p,pageSize:R,total:Z,onPageChange:e=>m(e,l,o)}})}),t.jsx(j,{title:s("userAdd"),visible:X,onCancel:()=>T(!1),onOk:ae,okText:s("save"),cancelText:s("cancel"),confirmLoading:Y,width:460,bodyStyle:{paddingBottom:8},children:t.jsxs(h,{vertical:!0,spacing:12,style:{width:"100%"},children:[t.jsx(w,{value:n.email,onChange:e=>f({...n,email:e}),placeholder:s("userEmailPh"),showClear:!0}),t.jsx(w,{mode:"password",value:n.password,onChange:e=>f({...n,password:e}),placeholder:s("userPwdPh")}),t.jsx(w,{value:n.nickname,onChange:e=>f({...n,nickname:e}),placeholder:s("profileNicknamePh"),maxlength:30,showClear:!0}),t.jsxs(h,{spacing:8,children:[t.jsx(b.Text,{children:s("userIsAdmin")}),t.jsx(V,{checked:n.is_admin,onChange:e=>f({...n,is_admin:e})})]})]})}),t.jsx(j,{title:`${s("userEdit")}${c?` · ${c.email}`:""}`,visible:!!c,onCancel:()=>v(null),onOk:ne,okText:s("save"),cancelText:s("cancel"),confirmLoading:ee,width:460,bodyStyle:{paddingBottom:8},children:t.jsxs(h,{vertical:!0,spacing:12,style:{width:"100%"},children:[t.jsx(w,{value:r.nickname,onChange:e=>k({...r,nickname:e}),placeholder:s("profileNicknamePh"),maxlength:30,showClear:!0}),t.jsx(w,{mode:"password",value:r.password,onChange:e=>k({...r,password:e}),placeholder:s("userResetPwdPh")}),t.jsxs(h,{spacing:8,children:[t.jsx(b.Text,{children:s("userIsAdmin")}),t.jsx(V,{checked:r.is_admin,disabled:c?c.is_self:!1,onChange:e=>k({...r,is_admin:e})})]}),r.password?t.jsx(E,{type:"warning",description:s("userResetPwdHint"),closeable:!1}):null]})}),t.jsx(j,{title:`${s("userSites")}${I?` · ${I.email}`:""}`,visible:!!I,onCancel:()=>O(null),footer:null,width:640,bodyStyle:{paddingBottom:16},children:se?t.jsx(C,{active:!0,placeholder:t.jsx(C.Paragraph,{rows:3}),loading:!0}):t.jsx(q,{columns:[{title:s("siteName"),dataIndex:"name",ellipsis:{showTitle:!0}},{title:s("domain"),dataIndex:"domain",width:200,ellipsis:{showTitle:!0}},{title:s("sharedRole"),dataIndex:"role",width:90,render:e=>t.jsx(S,{color:e==="owner"?"green":e==="editor"?"blue":"amber",size:"small",children:s(e==="owner"?"roleOwner":e==="editor"?"roleEditor":"roleViewer")})},{title:s("statusLabel"),dataIndex:"verified_at",width:90,render:(e,a)=>t.jsx(S,{color:a.status===0?"grey":(e||0)>0?"green":"orange",size:"small",children:a.status===0?s("userStatusOff"):(e||0)>0?s("verified"):s("unverified")})},{title:s("time"),dataIndex:"created_at",width:110,render:e=>e?U(e):"-"}],dataSource:D,rowKey:e=>`${e.id}-${e.role}`,pagination:D.length>10?{pageSize:10}:!1,size:"small",empty:t.jsx(K,{description:s("userNoSites")})})})]})}export{Te as default};