PageSourceSearch

https://www.go853.com/assets/AdminUsers-bL7xCA4i.js

js go853.com collected 2026-10-08 12:47:38 UTC 28,621 bytes, 1 lines download raw bytes

1import{b as ke,aa as ze,r as n,t as A,g as o,j as e,ag as m,S as Te,R as q,a8 as D,b0 as _e,E as Pe,G as $e,K as De,$ as Ie}from"./index-5664YHSw.js";import{A as Ee}from"./AdminLayout-BIeF2nE3.js";import{I as Fe}from"./input-CrsRQwOq.js";import{B as Me}from"./badge-BI3hJXfc.js";import{S as U,a as j,b as y,c as v,d as a}from"./select-DyaeYJjd.js";import{T as Ve,a as Le,b as I,c as x,d as Be,e as i}from"./table-BJ0GAmNr.js";import{D as le,a as ce,b as de,c as oe,f as me,d as xe}from"./useComposition-CxqjajjK.js";import{T as pe}from"./trash-2-Bq0TQhbl.js";import{C as Re}from"./crown-BC9zDvRz.js";import{B as ge}from"./ban-B_ajIvf5.js";import{P as He}from"./pencil-Chsw6AC4.js";import{S as he}from"./shield-check-Dev2JQ11.js";import{L as Ke}from"./landmark-CVrL-u-0.js";import"./users-Cs5w--v_.js";import"./message-square-c4giF2Zc.js";import"./credit-card-BHk4EhYD.js";import"./scroll-text-5_Hs89s4.js";import"./brain-CoSI6ywp.js";import"./code-xml-CZiH8lx2.js";import"./link-2-gIR7vc4R.js";import"./index-LlZMsFkd.js";import"./index-BXeYU07C.js";import"./index-AqTF61-7.js";import"./usePersistFn-CDqEa8zC.js";const ue={personal:{label:"個人用戶",icon:e.jsx(Ie,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:72",size:12}),color:"bg-blue-50 text-blue-600 border-blue-200"},company:{label:"地產公司",icon:e.jsx(De,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:73",size:12}),color:"bg-amber-50 text-amber-600 border-amber-200"},developer:{label:"地產從業員",icon:e.jsx(Ke,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:74",size:12}),color:"bg-purple-50 text-purple-600 border-purple-200"},admin:{label:"管理員",icon:e.jsx(he,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:75",size:12}),color:"bg-red-50 text-red-600 border-red-200"}},J={buyer:{label:"買家/租客",color:"bg-sky-50 text-sky-600 border-sky-200"},owner:{label:"業主",color:"bg-teal-50 text-teal-600 border-teal-200"},agent:{label:"個人從業員",color:"bg-violet-50 text-violet-600 border-violet-200"},company:{label:"地產公司",color:"bg-amber-50 text-amber-600 border-amber-200"},staff:{label:"公司員工",color:"bg-indigo-50 text-indigo-600 border-indigo-200"}};function Ye(k){if(!k)return"—";const S=k.trim(),p=(S.split(/[/|]/).map(b=>b.trim())[0]??S).replace(/^\+?853[-\s]?/,"").replace(/^\+?852[-\s]?/,"").replace(/^\+?86[-\s]?/,"").replace(/[\s-]/g,"");return/^[6][0-9]{7}$/.test(p)?`+853 ${p}`:/^[2359][0-9]{7}$/.test(p)?`+852 ${p}`:/^1[3-9][0-9]{9}$/.test(p)?`+86 ${p}`:S}function hs(){const[k,S]=ke(),E=ze(),p=()=>new URLSearchParams(E).get("type")??"all",[b,l]=n.useState(1),[F,X]=n.useState(()=>p()),[M,V]=n.useState("all"),[L,be]=n.useState("all"),[B,Ae]=n.useState("all"),[R,Ue]=n.useState("all"),[H,je]=n.useState("all"),[K,ye]=n.useState("all"),[Y,Z]=n.useState(""),[ee,se]=n.useState(""),ae=s=>S(`/admin/users/${s}`);n.useEffect(()=>{X(p()),V("all"),l(1)},[k,E]);const[r,g]=n.useState(null),[u,f]=n.useState(new Set),[ve,z]=n.useState(!1),fe=s=>f(c=>{const h=new Set(c);return h.has(s)?h.delete(s):h.add(s),h}),Ne=()=>{d?.items&&(u.size===d.items.length?f(new Set):f(new Set(d.items.map(s=>s.id))))},[te,O]=n.useState(null),w=A.useUtils(),T=A.admin.users.list.useQuery({userType:F==="all"?void 0:F,identityType:M==="all"?void 0:M,isStatus:L==="all"?void 0:L==="active"?1:0,subscriptionType:B==="all"?void 0:B,billingCycle:R==="all"?void 0:R,expiryStatus:H==="all"?void 0:H,isVerifiedFilter:K==="all"?void 0:K==="verified",keyword:Y||void 0,page:b,pageSize:20}),ne=A.admin.users.deleteUser.useMutation({onSuccess:()=>{o.success("用戶已刪除"),w.admin.users.list.invalidate(),g(null),f(new Set)},onError:s=>o.error(s.message)}),_=A.admin.users.bulkDeleteUsers.useMutation({onSuccess:s=>{o.success(`已刪除 ${s.deletedCount} 個用戶`),w.admin.users.list.invalidate(),z(!1),f(new Set)},onError:s=>o.error(s.message)}),Q=A.admin.users.setStatus.useMutation({onSuccess:(s,c)=>{o.success(c.isStatus===0?"已封禁用戶":"已解封用戶"),w.admin.users.list.invalidate(),g(null)},onError:s=>o.error(s.message)}),Se=A.admin.users.impersonate.useMutation({onSuccess:s=>{O(null),o.success(`已代入 ${s.user.name??s.user.mobile??`#${s.user.id}`} 的身份,正在跳轉前台...`),setTimeout(()=>window.open("/","_blank"),800)},onError:s=>{O(null),o.error(s.message)}}),ie=A.admin.users.promoteToAdmin.useMutation({onSuccess:()=>
1{o.success("已升級為管理員"),w.admin.users.list.invalidate(),g(null)},onError:s=>o.error(s.message)}),re=()=>{Z(ee),l(1)},we=()=>{if(!r)return;const{type:s,userId:c}=r;s==="ban"?Q.mutate({userId:c,isStatus:0}):s==="unban"?Q.mutate({userId:c,isStatus:1}):s==="promote"?ie.mutate({userId:c}):s==="delete"&&ne.mutate({userId:c})},G=Q.isPending||ie.isPending||ne.isPending,d=T.data,P=d?Math.ceil(d.total/20):0;return e.jsxs(Ee,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:803",title:"會員用戶管理",children:[e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:804",className:"space-y-4",children:[e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:806",className:"bg-white rounded-xl border border-gray-200 p-4",children:[e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:807",className:"flex flex-wrap gap-3",children:[e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:808",className:"flex gap-2 flex-1 min-w-48",children:[e.jsx(Fe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:809",placeholder:"搜索用戶名、手機、郵箱...",value:ee,onChange:s=>se(s.target.value),onKeyDown:s=>s.key==="Enter"&&re(),className:"flex-1"}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:816",onClick:re,size:"icon",variant:"outline",children:e.jsx(Te,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:817",size:16})})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:821",value:F,onValueChange:s=>{X(s),V("all"),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:822",className:"w-36",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:823",placeholder:"用戶類型"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:825",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:826",value:"all",children:"全部類型"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:827",value:"personal",children:"個人用戶"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:828",value:"company",children:"地產公司"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:829",value:"developer",children:"地產從業員"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:833",value:M,onValueChange:s=>{V(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:834",className:"w-36",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:835",placeholder:"身份類型"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:837",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:838",value:"all",children:"全部身份"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:839",value:"buyer",children:"è²·å®¶/租客"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:840",value:"owner",children:"業主"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:841",value:"agent",children:"個人從業員"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:842",value:"company",children:"地產公司"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:843",value:"staff",children:"公司員工"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:847",value:L,onValueChange:s=>{be(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:848",className:"w-32",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:849",placeholder:"帳號狀態"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:851",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:852",value:"all",children:"全部狀態"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:853",value:"active",children:"正常"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:854",value:"banned",children:"已封禁"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:858",value:B,onValueChange:s=>{Ae(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:859",className:"w-36",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:860",placeholder:"套é
1¤é¡žåž‹"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:862",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:863",value:"all",children:"全部套餐"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:864",value:"free",children:"免費版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:865",value:"agent_basic",children:"從業員基本版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:866",value:"agent_pro",children:"從業員專業版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:867",value:"enterprise_std",children:"企業標準版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:868",value:"enterprise_adv",children:"企業進階版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:869",value:"enterprise_custom",children:"企業定制版"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:870",value:"annual",children:"年付會員"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:874",value:R,onValueChange:s=>{Ue(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:875",className:"w-28",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:876",placeholder:"計費週期"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:878",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:879",value:"all",children:"全部週期"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:880",value:"monthly",children:"月付"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:881",value:"annual",children:"年付"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:885",value:H,onValueChange:s=>{je(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:886",className:"w-32",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:887",placeholder:"到期狀態"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:889",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:890",value:"all",children:"全部到期"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:891",value:"expiring_soon",children:"即將到期(30天)"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:892",value:"expired",children:"已到期"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:893",value:"active",children:"未到期"})]})]}),e.jsxs(U,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:897",value:K,onValueChange:s=>{ye(s),l(1)},children:[e.jsx(j,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:898",className:"w-28",children:e.jsx(y,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:899",placeholder:"認證狀態"})}),e.jsxs(v,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:901",children:[e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:902",value:"all",children:"全部認證"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:903",value:"verified",children:"已認證"}),e.jsx(a,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:904",value:"unverified",children:"未認證"})]})]}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:908",variant:"outline",size:"icon",onClick:()=>{w.admin.users.list.invalidate()},disabled:T.isFetching,children:e.jsx(q,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:914",size:16,className:T.isFetching?"animate-spin":""})})]}),e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:918",className:"flex items-center gap-4 mt-3 pt-3 border-t border-gray-100",children:[e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:919",className:"text-sm text-gray-500",children:["共 ",e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:920",className:"font-semibold text-gray-800",children:d?.total??"—"})," 名用戶"]}),Y&&e.jsxs(Me,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:923",variant:"secondary",className:"text-xs",children:["搜索:",Y,e.
1jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:925",onClick:()=>{Z(""),se("")},className:"ml-1 hover:text-red-500",children:"×"})]}),u.size>0&&e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:929",className:"ml-auto flex items-center gap-2",children:[e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:930",className:"text-sm text-amber-600 font-medium",children:["已選 ",u.size," 個用戶"]}),e.jsxs(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:931",size:"sm",variant:"destructive",className:"h-7 text-xs gap-1",onClick:()=>z(!0),children:[e.jsx(pe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:937",size:12}),"批量刪除"]}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:940",size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>f(new Set),children:"取消選擇"})]})]})]}),e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:947",className:"bg-white rounded-xl border border-gray-200 overflow-hidden",children:[e.jsxs(Ve,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:948",children:[e.jsx(Le,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:949",children:e.jsxs(I,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:950",className:"bg-gray-50",children:[e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:951",className:"w-10 text-center",children:e.jsx("input",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:952",type:"checkbox",className:"rounded border-gray-300",checked:!!d?.items.length&&u.size===d.items.length,onChange:Ne})}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:959",className:"w-12 text-center",children:"#"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:960",children:"用戶信息"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:961",className:"w-28",children:"用戶類型"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:962",className:"w-28",children:"身份標簽"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:963",className:"w-28",children:"套餐方案"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:964",className:"w-24",children:"帳號狀態"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:965",className:"w-32",children:"到期日期"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:966",className:"w-32",children:"最近登入"}),e.jsx(x,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:967",className:"w-40 text-center",children:"操作"})]})}),e.jsx(Be,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:970",children:T.isLoading?e.jsx(I,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:972",children:e.jsxs(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:973",colSpan:9,className:"text-center py-12 text-gray-400",children:[e.jsx(q,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:974",size:20,className:"animate-spin mx-auto mb-2"}),"載入中..."]})}):d?.items.length?d.items.map((s,c)=>{const h=ue[s.userType??"personal"]??ue.personal,$=s.isStatus===1;return e.jsxs(I,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:989",className:`hover:bg-gray-50 cursor-pointer ${u.has(s.id)?"bg-amber-50":""}`,onClick:()=>ae(s.id),children:[e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:994",onClick:t=>t.stopPropagation(),className:"text-center",children:e.jsx("input",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:995",type:"checkbox",className:"rounded border-gray-300",checked:u.has(s.id),onChange:()=>fe(s.id)})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1002",className:"text-center text-gray-400 text-sm",children:(b-1)*20+c+1}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1005",children:e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1006",children:[e.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1007",className:"text-sm font-medium text-gray-900",children:s.name||"(未設置)"}),e.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1008",className:"text-xs text-gray-400",children:s.mobile?Ye(s.mobile):s.email??"—"})]})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1011",children:e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1012",className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs border ${h.color}`,children:[h.icon,h.label]})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1017",children:s.identityType&&J[s.identityType]?e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1019",className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs border ${J[s.identityType].color}`,children:J[s.identityType].label}):e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1023",className:"text-xs text-gray-400",children:"未設定"})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1026",children:(()=>{const t=s.subscriptionType??"free",C={free:"bg-gray-50 text-gray-500 border-gray-200",agent_basic:"bg-blue-50 text-blue-600 border-blue-200",agent_pro:"bg-indigo-50 text-indigo-600 border-indigo-200",enterprise_std:"bg-amber-50 text-amber-600 border-amber-200",enterprise_adv:"bg-orange-50 text-orange-600 border-orange-200",enterprise_custom:"bg-red-50 text-red-600 border-red-200",personal_basic:"bg-blue-50 text-blue-600 border-blue-200",personal_pro:"bg-indigo-50 text-indigo-600 border-indigo-200",company_
1standard:"bg-amber-50 text-amber-600 border-amber-200",company_advanced:"bg-orange-50 text-orange-600 border-orange-200",company_custom:"bg-red-50 text-red-600 border-red-200",annual:"bg-green-50 text-green-600 border-green-200"},W={free:"免費版",agent_basic:"從業員基本版",agent_pro:"從業員專業版",enterprise_std:"企業標準版",enterprise_adv:"企業進階版",enterprise_custom:"企業定制版",personal_basic:"個人基本版",personal_pro:"個人專業版",company_standard:"企業標準版",company_advanced:"企業進階版",company_custom:"定制企業版",annual:"年付會員"};return e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1062",className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs border ${C[t]??C.free}`,children:[e.jsx(Re,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1063",size:10}),W[t]??t]})})()}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1069",children:e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1070",className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs border ${$?"bg-orange-50 text-orange-600 border-orange-200":"bg-red-50 text-red-600 border-red-200"}`,children:[$?e.jsx(D,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1075",size:11}):e.jsx(ge,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1075",size:11}),$?"正常":"已封禁"]})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1079",className:"text-center",children:e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1080",className:"flex flex-col items-center gap-1",children:[e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1081",className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded-full text-xs border ${s.phoneVerified?"bg-green-50 text-green-600 border-green-200":s.mobile?"bg-yellow-50 text-yellow-600 border-yellow-200":"bg-gray-50 text-gray-400 border-gray-200"}`,children:[s.phoneVerified?e.jsx(D,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1088",size:10}):e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1088",className:"w-2.5 h-2.5 rounded-full bg-current opacity-50 inline-block"}),"手機"]}),e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1091",className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded-full text-xs border ${s.emailVerified?"bg-green-50 text-green-600 border-green-200":s.email?"bg-yellow-50 text-yellow-600 border-yellow-200":"bg-gray-50 text-gray-400 border-gray-200"}`,children:[s.emailVerified?e.jsx(D,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1098",size:10}):e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1098",className:"w-2.5 h-2.5 rounded-full bg-current opacity-50 inline-block"}),"電郵"]})]})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1103",children:(()=>{const t=s.subscriptionExpiry;if(!t)return e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1106",className:"text-xs text-gray-400",children:"—"});const C=new Date(t),W=new Date,N=Math.ceil((C.getTime()-W.getTime())/864e5),Ce=N<0?"text-red-500":N<=30?"text-amber-500":"text-gray-500";return e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1111",className:`text-xs ${Ce}`,children:[C.toLocaleDateString("zh-HK"),N<=30&&N>=0?` (剩${N}天)`:"",N<0?" (已到期)":""]})})()}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1114",children:e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1115",className:"text-xs text-gray-400",children:s.lastSignedIn?new Date(s.lastSignedIn).toLocaleDateString("zh-HK"):"—"})}),e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1119",onClick:t=>t.stopPropagation(),children:e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1120",className:"flex items-center justify-center gap-1",children:[e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1121",onClick:t=>{t.stopPropagation(),ae(s.id)},className:"p-1.5 rounded hover:bg-orange-50 text-gray-400 hover:text-orange-500 transition-colors",title:"編輯用戶資料",children:e.jsx(He,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1126",size:14})}),$?e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1129",onClick:t=>{t.stopPropagation(),g({type:"ban",userId:s.id,userName:s.name??`#${s.id}`})},className:"p-1.5 rounded hover:bg-red-50 text-gray-400 hover:text-red-500 transition-colors",title:"封禁用戶",children:e.jsx(ge,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1134",size:14})}):e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1137",onClick:t=>{t.stopPropagation(),g({type:"unban",userId:s.id,userName:s.name??`#${s.id}`})},className:"p-1.5 rounded hover:bg-orange-50 text-gray-400 hover:text-orange-600 transition-colors",title:"è
1§£å°ç”¨æˆ¶",children:e.jsx(D,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1142",size:14})}),e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1145",onClick:t=>{t.stopPropagation(),g({type:"promote",userId:s.id,userName:s.name??`#${s.id}`})},className:"p-1.5 rounded hover:bg-amber-50 text-gray-400 hover:text-amber-600 transition-colors",title:"升級為管理員",children:e.jsx(he,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1150",size:14})}),e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1152",onClick:t=>{t.stopPropagation(),O(s.id),Se.mutate({userId:s.id})},disabled:te===s.id,className:"p-1.5 rounded hover:bg-blue-50 text-gray-400 hover:text-blue-600 transition-colors disabled:opacity-50",title:"前台登錄(代入該用戶身份)",children:te===s.id?e.jsx(q,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1159",size:14,className:"animate-spin"}):e.jsx(_e,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1160",size:14})}),e.jsx("button",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1162",onClick:t=>{t.stopPropagation(),g({type:"delete",userId:s.id,userName:s.name??`#${s.id}`})},className:"p-1.5 rounded hover:bg-red-50 text-gray-300 hover:text-red-500 transition-colors",title:"刪除用戶(不可還原)",children:e.jsx(pe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1167",size:14})})]})})]},s.id)}):e.jsx(I,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:979",children:e.jsx(i,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:980",colSpan:9,className:"text-center py-12 text-gray-400",children:"暫無用戶記錄"})})})]}),P>1&&e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1179",className:"flex items-center justify-between px-4 py-3 border-t border-gray-100",children:[e.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1180",className:"text-sm text-gray-500",children:["第 ",b," / ",P," 頁"]}),e.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1181",className:"flex gap-2",children:[e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1182",variant:"outline",size:"sm",onClick:()=>l(s=>Math.max(1,s-1)),disabled:b===1,children:e.jsx(Pe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1183",size:16})}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1185",variant:"outline",size:"sm",onClick:()=>l(s=>Math.min(P,s+1)),disabled:b===P,children:e.jsx($e,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1186",size:16})})]})]})]})]}),r&&e.jsx(le,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1198",open:!!r,onOpenChange:()=>g(null),children:e.jsxs(ce,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1199",className:"max-w-sm",children:[e.jsxs(de,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1200",children:[e.jsx(oe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1201",children:r.type==="ban"?"封禁用戶":r.type==="unban"?"解封用戶":r.type==="delete"?"刪除用戶":"升級為管理員"}),e.jsxs(me,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1206",children:["確認對用戶「",r.userName,"」執行此操作?",r.type==="promote"&&" 升級後該用戶將擁有管理員權限。",r.type==="delete"&&e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1210",className:"block mt-1 text-red-500 font-medium",children:"⚠️ 此操作不可還原,用戶資料將永久刪除。"})]})]}),e.jsxs(xe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1214",children:[e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1215",variant:"outline",onClick:()=>g(null),disabled:G,children:"取消"}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1216",variant:r.type==="ban"||r.type==="delete"?"destructive":"default",onClick:we,disabled:G,children:G?"處理中...":"確認"})]})]})}),e.jsx(le,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1229",open:ve,onOpenChange:z,children:e.jsxs(ce,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1230",className:"max-w-sm",children:[e.jsxs(de,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1231",children:[e.jsx(oe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1232",children:"批量刪除用戶"}),e.jsxs(me,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1233",children:["確定要刪除已選的 ",e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1234",className:"font-semibold text-red-500",children:u.size})," 個用戶嗎?",e.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1235",className:"block mt-1 text-red-500 font-medium",children:"⚠️ 此操作不可還原,所有選中用戶資料將永久刪除。"})]})]}),e.jsxs(xe,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1238",children:[e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1239",variant:"outline",onClick:()=>z(!1),disabled:_.isPending,children:"取消"}),e.jsx(m,{"data-loc":"client\\src\\pages\\admin\\AdminUsers.tsx:1240",variant:"destructive",onClick:()=>_.mutate({userIds:Array.from(u)}),disabled:_.isPending,children:_.isPending?"刪除中...":`確認刪除 ${u.size} 個用戶`})]})]})})]})}export{hs as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.