import{b as F,a as W,r as q,s as Z,c as G,d as H,e as J}from"./users-DVl5a2To.js";import{p as P}from"./datetime-CpkTDmvr.js";import{_ as K,r as I,o as O,c as b,a as d,b as i,w as n,d as f,i as Q,e as X,g as r,h as l,j as Y,k as y,l as u,t as k,F as ee,E as g,m as v}from"./index-CCJGmygT.js";function U($){const c=String($||"");if(!c)return{ok:!1,message:"密码不能为空"};if(c.length<8)return{ok:!1,message:"密码长度不能少于8个字符"};if(c.length>128)return{ok:!1,message:"密码长度不能超过128个字符"};const w=/[a-zA-Z]/.test(c),x=/\d/.test(c);return!w||!x?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}const te={class:"page-stack"},ae={class:"app-page-title"},ne={class:"table-wrap"},se={class:"user-block"},ie={class:"user-main"},le={key:0,class:"app-muted user-sub"},oe={key:1,class:"vip-sub"},re={key:0,class:"app-muted"},ce={class:"actions"},ue={__name:"UsersPage",setup($){const c=Q("refreshStats",null),w=I(!1),x=I([]);function m(a){const e=a?.vip_expire_time;if(!e)return!1;if(String(e).startsWith("2099-12-31"))return!0;const s=P(e);return s?s.getTime()>Date.now():!1}function B(a){const e=a?.vip_expire_time;if(!e||!m(a))return"";if(String(e).startsWith("2099-12-31"))return"永久VIP";const s=P(e);if(!s)return`到期: ${e}`;const o=Math.ceil((s.getTime()-Date.now())/(1e3*60*60*24));return`到期: ${e}(剩${o}天)`}function T(a){return a==="approved"?{label:"已通过",type:"success"}:a==="rejected"?{label:"已拒绝",type:"danger"}:{label:"待审核",type:"warning"}}async function _(){w.value=!0;try{x.value=await F()}catch{x.value=[]}finally{w.value=!1}}async function D(a){try{await g.confirm(`确定通过用户「${a.username}」的注册申请吗?`,"审核通过",{confirmButtonText:"通过",cancelButtonText:"取消",type:"success"})}catch{return}try{await W(a.id),v.success("用户审核通过"),await _(),await c?.()}catch{}}async function S(a){try{await g.confirm(`确定拒绝用户「${a.username}」的注册申请吗?`,"拒绝申请",{confirmButtonText:"拒绝",cancelButtonText:"取消",type:"warning"})}catch{return}try{await q(a.id),v.success("已拒绝用户"),await _(),await c?.()}catch{}}async function z(a){try{await g.confirm(`确定删除用户「${a.username}」吗?此操作将删除该用户的所有数据,不可恢复!`,"删除用户",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await J(a.id),v.success("用户已删除"),await _(),await c?.()}catch{}}async function C(a,e){const s={7:"一周",30:"一个月",365:"一年",999999:"永久"}[e]||`${e}天`;try{await g.confirm(`确定为用户「${a.username}」开通 ${s} VIP 吗?`,"设置VIP",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const o=await Z(a.id,e);v.success(o?.message||"VIP设置成功"),await _(),await c?.()}catch{}}async function M(a){try{await g.confirm(`确定移除用户「${a.username}」的 VIP 吗?`,"移除VIP",{confirmButtonText:"移除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await G(a.id);v.success(e?.message||"VIP已移除"),await _(),await c?.()}catch{}}async function j(a){let e;try{e=(await g.prompt("请输入新密码(至少8位且包含字母和数字)","重置密码",{confirmButtonText:"提交",cancelButtonText:"取消",inputType:"password",inputPlaceholder:"新密码",inputValidator:V=>U(V).ok,inputErrorMessage:"密码至少8位且包含字母和数字"})).value}catch{return}const s=U(e);if(!s.ok){v.error(s.message);return}try{await g.confirm(`确定将用户「${a.username}」的密码重置为该新密码吗?`,"二次确认",{confirmButtonText:"确认重置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const o=await H(a.id,e);v.success(o?.message||"密码重置成功")}catch{}}return O(_),(a,e)=>{const s=f("el-button"),o=f("el-table-column"),V=f("el-tag"),h=f("el-dropdown-item"),E=f("el-dropdown-menu"),N=f("el-dropdown"),R=f("el-table"),A=f("el-card"),L=X("loading");return r(),b("div",te,[d("div",ae,[e[1]||(e[1]=d("h2",null,"用户",-1)),d("div",null,[i(s,{onClick:_},{default:n(()=>[...e[0]||(e[0]=[l("刷新",-1)])]),_:1})])]),i(A,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[d("div",ne,[Y((r(),y(R,{data:x.value,style:{width:"100%"}},{default:n(()=>[i(o,{prop:"id",label:"ID",width:"80"}),i(o,{label:"用户","min-width":"240"},{default:n(({row:t})=>[d("div",se,[d("div",ie,[d("strong",null,k(t.username),1),m(t)?(r(),y(V,{key:0,type:"warning",effect:"light",size:"small"},{default:n(()=>[...e[2]||(e[2]=[l("VIP",-1)])]),_:1})):u("",!0)]),t.email?(r(),b("div",le,k(t.email),1)):u("",!0),B(t)?(r(),b("div",oe,k(B(t)),1)):u("",!0)])]),_:1}),i(o,{label:"状态",width:"120"},{default:n(({row:t})=>[i(V,{type:T(t.status).type,effect:"light"},{default:n(()=>[l(k(T(t.status).label),1)]),_:2},1032,["type"])]),_:1}),i(o,{label:"时间","min-width":"220"},{default:n(({row:t})=>[d("div",null,k(t.created_at),1),t.approved_at?(r(),b("div",re,"审核: "+k(t.approved_at),1)):u("",!0)]),_:1}),i(o,{label:"操作",width:"280",fixed:"right"},{default:n(({row:t})=>[d("div",ce,[t.status==="pending"?(r(),b(ee,{key:0},[i(s,{type:"success",size:"small",onClick:p=>D(t)},{default:n(()=>[...e[3]||(e[3]=[l("通过",-1)])]),_:1},8,["onClick"]),i(s,{type:"warning",size:"small",onClick:p=>S(t)},{default:n(()=>[...e[4]||(e[4]=[l("拒绝",-1)])]),_:1},8,["onClick"])],64)):u("",!0),i(N,{trigger:"click"},{dropdown:n(()=>[i(E,null,{default:n(()=>[m(t)?u("",!0):(r(),y(h,{key:0,onClick:p=>C(t,7)},{default:n(()=>[...e[6]||(e[6]=[l("开通一周",-1)])]),_:1},8,["onClick"])),m(t)?u("",!0):(r(),y(h,{key:1,onClick:p=>C(t,30)},{default:n(()=>[...e[7]||(e[7]=[l("开通一月",-1)])]),_:1},8,["onClick"])),m(t)?u("",!0):(r(),y(h,{key:2,onClick:p=>C(t,365)},{default:n(()=>[...e[8]||(e[8]=[l("开通一年",-1)])]),_:1},8,["onClick"])),m(t)?u("",!0):(r(),y(h,{key:3,onClick:p=>C(t,999999)},{default:n(()=>[...e[9]||(e[9]=[l("永久VIP",-1)])]),_:1},8,["onClick"])),m(t)?(r(),y(h,{key:4,onClick:p=>M(t)},{default:n(()=>[...e[10]||(e[10]=[l("移除VIP",-1)])]),_:1},8,["onClick"])):u("",!0)]),_:2},1024)]),default:n(()=>[i(s,{size:"small"},{default:n(()=>[...e[5]||(e[5]=[l("VIP",-1)])]),_:1})]),_:2},1024),i(s,{size:"small",onClick:p=>j(t)},{default:n(()=>[...e[11]||(e[11]=[l("重置密码",-1)])]),_:1},8,["onClick"]),i(s,{type:"danger",size:"small",onClick:p=>z(t)},{default:n(()=>[...e[12]||(e[12]=[l("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[L,w.value]])])]),_:1})])}}},me=K(ue,[["__scopeId","data-v-e62c5723"]]);export{me as default};