1import{_ as te,u as ee}from"./B6L_5AKz.js";import{_ as ne,f as se,g as le,y as oe,o,c as a,a as e,d as m,t as i,n as v,F as x,r as B,k as u,i as G,v as ot,P as at,m as D,D as kt,C as ae,b as ie,j as it,x as de,q as b,p as w,s as re,O as X}from"./tzJnjie6.js";import{u as ce}from"./Cwj1v93E.js";import{u as ue}from"./BOyzDctL.js";import{u as ve}from"./Bl4xsHaL.js";const he={key:0,class:"fullscreen-loading"},me={key:1,class:"fullscreen-root"},ge={class:"users-top-bar"},pe={class:"users-top-left"},fe={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",style:{color:"#93c5fd","flex-shrink":"0"}},ye={class:"users-top-stat blue"},be={class:"users-top-stat green"},_e={class:"users-top-stat orange"},ke={key:0,class:"metric-menu"},xe=["onClick"],we={class:"metric-item-note"},Ce={key:0,class:"filter-menu"},$e={key:0,class:"filter-label"},Ie={class:"users-top-right"},Se={class:"search-wrap"},Te={class:"users-content"},Me={class:"table-wrap"},Ne={class:"users-table"},Ve={key:0},Ae={key:1},De=["title"],Le={class:"th-metric"},Pe=["title"],Ue={class:"th-metric"},Ee=["title"],Ke={class:"th-metric"},Fe=["title"],He={key:0},Oe={key:1},Re={class:"col-stt"},Be={class:"col-name"},Ge=["title"],je={key:0,class:"badge-admin",title:"Full admin â không thá» xoá"},qe=["onClick"],Ye={class:"col-center"},Xe={class:"col-center"},ze={key:0,class:"col-email"},We=["title"],Qe={key:1,class:"col-phone"},Je={class:"col-center"},Ze={key:0,class:"badge-on"},tn={key:1,class:"badge-off"},en={class:"col-center"},nn={class:"col-center"},sn={class:"col-center"},ln={class:"col-date"},on={class:"col-center"},an={class:"col-actions"},dn={key:0,class:"action-btns action-btns-collapsed"},rn=["onClick"],cn=["onClick"],un=["onClick"],vn={key:2,class:"collapsed-hint"},hn={key:1,class:"action-btns"},mn=["onClick"],gn={key:0,class:"sa-cell"},pn=["onClick"],fn=["title"],yn={key:0,class:"sa-badge sa-perm"},bn={key:2,class:"sa-note"},_n=["onClick"],kn={key:2,class:"sa-cell"},xn=["onClick"],wn=["title"],Cn={key:0,class:"sa-badge sa-perm"},$n={key:2,class:"sa-note"},In=["onClick"],Sn=["onClick"],Tn=["onClick"],Mn={key:5,class:"text-xs text-gray-400"},Nn={class:"bg-white rounded-2xl shadow-2xl w-full max-w-sm p-5 text-center relative"},Vn=["src","alt"],An={key:1,class:"w-[300px] h-[300px] max-w-full mx-auto mt-2 mb-3.5 rounded-xl bg-slate-100 text-gray-400 flex flex-col items-center justify-center gap-1.5"},Dn={class:"text-lg font-extrabold text-gray-800"},Ln={class:"text-sm text-gray-500 mt-0.5"},Pn={key:2,class:"text-sm text-gray-500 mt-0.5 break-all"},Un={class:"bg-white rounded-xl shadow-2xl w-full max-w-sm mx-4 overflow-hidden"},En={key:0,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"#16a34a","stroke-width":"2"},Kn={key:1,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"#ea580c","stroke-width":"2"},Fn={key:2,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"#7c3aed","stroke-width":"2"},Hn={class:"font-bold text-gray-800 text-base"},On={class:"text-sm text-gray-500 mt-0.5"},Rn={class:"px-6 py-5"},Bn={class:"bg-gray-50 rounded-lg px-4 py-3 text-sm space-y-1"},Gn={key:0,class:"sa-duration"},jn=["value"],qn={class:"sa-duration-hint"},Yn={key:1,class:"sa-duration"},Xn=["value"],zn={class:"sa-duration-hint"},Wn={class:"px-6 pb-5 flex gap-3"},Qn=["disabled"],Jn={class:"bg-white rounded-xl shadow-2xl w-full max-w-sm mx-4 overflow-hidden"},Zn={class:"px-6 py-5"},ts={class:"bg-gray-50 rounded-lg px-4 py-3 mt-3 text-sm space-y-1"},es={key:0},ns={class:"px-6 pb-5 flex gap-3"},ss=["disabled"],ls={class:"note-box"},os={class:"note-head"},as={class:"note-id"},is={class:"note-list"},ds={key:0,class:"note-empty"},rs={key:1,class:"note-empty"},cs={class:"note-date-tag"},us=["onKeydown"],vs={class:"note-row-btns"},hs=["onClick"],ms={class:"note-line"},gs={class:"note-date-tag"},ps={class:"note-text"},fs={class:"note-row-btns"},ys=["onClick"],bs=["onClick"],_s={class:"note-add"},ks={class:"note-add-row"},xs={class:"note-date-tag note-today"},ws=["onKeydown"],Cs={class:"note-add-actions"},$s=["disabled"],Is={__name:"index",setup(Ss){const dt=se(),{post:E,del:z,get:rt,put:xt}=ce(),{success:j,error:C}=ue(),{show:wt,message:Ct,fromError:$t,close:It}=ee(),{getUserToken:K,getCurrentUser:St,logoutUser:Tt}
1=de(),{can:F,fetchPermissions:Mt}=ve(),ct=b(!1),W=w(()=>F("user_email")),ut=w(()=>F("user_phone")),Nt=w(()=>F("chat_with_user")),Q=w(()=>F("set_subadmin")),J=w(()=>F("active_vip"));function Vt(){Tt(),dt.push("/login")}const At=w(()=>St()?.accountType??1),vt=w(()=>At.value===0),Dt=s=>{if(!s)return"";const t=new Date(s),c=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0"),l=t.getFullYear();return`${c}-${n}-${l}`},p=b([]),Z=b(!1),M=b(""),V=b(!1),ht=b(null);function Lt(){V.value=!V.value,V.value?re(()=>ht.value?.focus()):M.value=""}function Pt(){M.value="",V.value=!1}const I=b(new Set);async function Ut(){try{const s=await rt("/admin/notes/users-with-notes");I.value=new Set(s?.user_ids||[])}catch{}}const mt=[{key:"total",label:"Tá»ng tra",note:"Tách từ + Từ Äiá»n"},{key:"split",label:"Tách từ",note:"Chá» lượt tách từ"},{key:"dict",label:"Từ Äiá»n",note:"Chá» lượt tra từ Äiá»n"}],H=b("total"),L=b(!1),tt=b(null),A=w(()=>mt.find(s=>s.key===H.value)?.label||"Tá»ng tra");function Et(s){H.value=s,L.value=!1}function S(s,t){const c={day:s.useTime,month:s.monthlyUseTime,year:s.yearlyUseTime}[t]??0,n={day:s.dictDay,month:s.dictMonth,year:s.dictYear}[t]??0;return H.value==="split"?c:H.value==="dict"?n:c+n}const g=b(null),O=b(!1),et=b(null),Kt={online:"Online",day:"Ngà y",month:"Tháng",year:"NÄm",combo:"Online/Ngà y/Tháng/NÄm",gold:"VIP",subadmin:"Sub-Admin",admin:"Admin",note:"Có ghi chú"},Ft=w(()=>Kt[g.value]||"");function Ht(s,t){const c=s?.vip_started_at?new Date(s.vip_started_at).getTime():null,n=t?.vip_started_at?new Date(t.vip_started_at).getTime():null;return c&&n&&c!==n?n-c:c&&!n?-1:!c&&n?1:(t?.accountId||0)-(s?.accountId||0)}const nt=w(()=>{const s=p.value.filter(l=>!l.isGold);let t;switch(g.value){case"online":t=s.filter(l=>l.is_online);break;case"day":t=s.filter(l=>S(l,"day")>0);break;case"month":t=s.filter(l=>S(l,"month")>0);break;case"year":t=s.filter(l=>S(l,"year")>0);break;case"combo":t=s.filter(l=>l.is_online||S(l,"day")>0||S(l,"month")>0||S(l,"year")>0);break;case"gold":t=p.value.filter(l=>l.isGold).sort(Ht);break;case"subadmin":t=p.value.filter(l=>l.accountType===2);break;case"admin":t=p.value.filter(l=>l.accountType===0);break;case"note":t=p.value.filter(l=>I.value.has(l.accountId));break;default:t=s}const c=M.value.trim();if(!c)return t;if(/^\d+$/.test(c))return t.filter(l=>String(l.accountId)===c);const n=c.toLowerCase();return t.filter(l=>(l.fullname||"").toLowerCase().includes(n)||(l.email||"").toLowerCase().includes(n)||(l.phone||"").includes(c))});function _(s){g.value=g.value===s?null:s,O.value=!1}function gt(s){et.value&&!et.value.contains(s.target)&&(O.value=!1),tt.value&&!tt.value.contains(s.target)&&(L.value=!1)}const h=X({show:!1,loading:!1,type:"",title:"",subtitle:"",user:null,index:-1,enable:!0}),T=b(0),P=b(!1),q=b(new Set);function Ot(){P.value=!P.value,q.value=new Set}function pt(s){const t=new Set(q.value);t.has(s)?t.delete(s):t.add(s),q.value=t}const N=b(48);function st(s){const t=Number(s)||0;return t<=0?"vÄ©nh viá»
n":t%12===0?`${t/12} nÄm`:`${t} tháng`}const Rt=w(()=>{const s=N.value;if(!s||s<1)return"";const t=new Date;t.setMonth(t.getMonth()+s);const c=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0");return`${c}/${n}/${t.getFullYear()}`});function ft(s){if(!s?.vip_started_at)return"";const t=new Date(s.vip_started_at);if(isNaN(t.getTime()))return"";const c=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),r=String(t.getMonth()+1).padStart(2,"0"),k=`lúc ${c}:${n} ngà y ${l}/${r}/${t.getFullYear()}`;return s.vip_months?`Äã kÃch hoạt gói ${st(s.vip_months)} ${k}`:`Äã kÃch hoạt VIP vÄ©nh viá»
n ${k}`}const Bt=w(()=>{const s=T.value;if(!s||s<1)return"";const t=new Date;t.setMonth(t.getMonth()+s);const c=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0");return`${c}/${n}/${t.getFullYear()}`});function yt(s){if(!s?.sub_admin_started_at)return"";const t=new Date(s.sub_admin_started_at);if(isNaN(t.getTime()))return"";const c=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),r=String(t.getMonth()+1).padStart(2,"0"),k=`lúc ${c}:${n} ngà y ${l}/${r}/${t.getFullYear()}`;return s.sub_admin_months?`Äã kÃch hoạt gói ${s.sub_admin_months} tháng ${k}`:`Äặt là m Sub-Admin vÄ©nh viá»
n ${k}`}function Gt(s,t){window.open(`/admin/chat/?uid=${s}&name=${encodeURIComponent(t||"")}`,"_blank")}function R(s,t,c){const n={active:{title:"KÃch hoạt VIP",subtitle:"User sẽ ÄÆ°á»£c nâng lên tà i khoản VIP"},inactive:{title:"Tắt VIP",subtitle:"User sẽ bá» hạ xuá»ng tà i khoản thưá»ng"}};let l=n[c]?.title||"",r=n[c]?.subtitle||"",k=!0;c==="subadmin"&&(k=s.accountType!==2,l=k?"Äặt là m Sub-Admin":"Há»§y quyá»n Sub-Admin",r=k?"User sẽ có quyá»n quản lý VIP":"User sẽ trá» vá» tà i khoản thưá»ng",T.value=0),c==="active"&&(N.value=48),Object.assign(h,{type:c,title:l,subt
1itle:r,user:s,index:t,enable:k,loading:!1,show:!0})}function U(){h.show=!1,h.user=null,h.index=-1}async function jt(){const{type:s,user:t,index:c}=h;if(t){h.loading=!0;try{if(s==="active"){const n=N.value>0?N.value:0,l=await E("/active-user",{user_id:t.accountId,months:n,token:K()},!1);if(l){const r=p.value.findIndex(y=>y.accountId===t.accountId);if(r!==-1){const y=p.value[r];y.isGold=!0,y.vip_expire=l.vip_expire??null,y.vip_started_at=l.vip_started_at??null,y.vip_months=l.vip_months??null,y.vip_days_left=l.vip_days_left??null,y.vip_permanent=l.vip_permanent??n===0}const k=` (${st(n)})`;j(`Äã kÃch hoạt VIP${k} cho "${t.fullname}".`),U(),z(`/admin/users/${t.accountId}/notes`).catch(()=>{});const Y=new Set(I.value);Y.delete(t.accountId),I.value=Y}else C("KÃch hoạt VIP thất bại.")}else if(s==="inactive")if(await E("/unactive-user",{user_id:t.accountId,token:K()},!1)){const l=p.value.findIndex(r=>r.accountId===t.accountId);if(l!==-1){const r=p.value[l];r.isGold=!1,r.vip_expire=null,r.vip_started_at=null,r.vip_months=null,r.vip_days_left=null,r.vip_permanent=!1}j(`Äã tắt VIP cá»§a "${t.fullname}".`),U()}else C("Tắt VIP thất bại.");else if(s==="subadmin"){const n=t.accountType!==2,l={user_id:t.accountId,enable:n,token:K()};n&&(l.months=T.value||0);const r=await E("/set-subadmin",l,!1);if(r?.status_code===200){const k=p.value.findIndex(y=>y.accountId===t.accountId);if(k!==-1){const y=p.value[k];y.accountType=r.accountType,y.sub_admin_expire=r.sub_admin_expire??null,y.sub_admin_started_at=r.sub_admin_started_at??null,y.sub_admin_months=r.sub_admin_months??null,y.sub_admin_days_left=r.sub_admin_days_left??null,y.sub_admin_permanent=r.sub_admin_permanent??!1}const Y=n?T.value>0?` (${T.value} tháng)`:" (vÄ©nh viá»
n)":"";j(`Äã cáºp nháºt "${t.fullname}" thà nh ${n?"Sub-Admin"+Y:"tà i khoản thưá»ng"}.`),U()}else C(r?.detail||"Cáºp nháºt thất bại.")}}catch(n){await $t(n)?U():C("Có lá»i xảy ra.")}finally{h.loading=!1}}}const f=X({show:!1,loading:!1,user:null}),$=X({show:!1,user:null});function qt(s){$.user=s,$.show=!0}const d=X({show:!1,user:null,notes:[],loading:!1,editId:null,editContent:"",today:"",newContent:""});function Yt(){const s=new Date,t=String(s.getDate()).padStart(2,"0"),c=String(s.getMonth()+1).padStart(2,"0"),n=s.getFullYear();return`${t}/${c}/${n}`}async function Xt(s){d.user=s,d.notes=[],d.loading=!0,d.editId=null,d.editContent="",d.newContent="",d.today=Yt(),d.show=!0;try{const t=await rt(`/admin/users/${s.accountId}/notes`);d.notes=t?.notes||[]}catch{C("Không thá» tải ghi chú.")}finally{d.loading=!1}}async function bt(){const s=d.newContent.trim();if(!(!s||!d.user))try{const t=await E(`/admin/users/${d.user.accountId}/notes`,{note_date:d.today,content:s});d.notes.push(t),d.newContent="",I.value=new Set([...I.value,d.user.accountId])}catch{C("Không thá» thêm ghi chú.")}}function zt(s){d.editId=s.id,d.editContent=s.content}async function _t(s){const t=d.editContent.trim();if(t)try{const c=await xt(`/admin/notes/${s.id}`,{content:t}),n=d.notes.findIndex(l=>l.id===s.id);n!==-1&&(d.notes[n].content=c.content),d.editId=null}catch{C("Không thá» lưu ghi chú.")}}async function Wt(s){try{if(await z(`/admin/notes/${s}`),d.notes=d.notes.filter(t=>t.id!==s),d.notes.length===0&&d.user){const t=new Set(I.value);t.delete(d.user.accountId),I.value=t}}catch{C("Không thá» xóa ghi chú.")}}function Qt(s){Object.assign(f,{user:s,show:!0,loading:!1})}function lt(){f.show=!1,f.user=null}async function Jt(){if(f.user){f.loading=!0;try{const s=await z(`/admin/users/${f.user.accountId}`);s?.status_code===200?(p.value=p.value.filter(t=>t.accountId!==f.user.accountId),j(`Äã xóa tà i khoản "${f.user.fullname||f.user.email}".`),lt()):C(s?.detail||s?.message||"Xóa thất bại.")}catch(s){C(s?.data?.detail||"Có lá»i xảy ra khi xóa.")}finally{f.loading=!1}}}async function Zt(){Z.value=!0;try{const s=await E("/user-list",{token:K()},!1);p.value=Array.isArray(s)?s:s?.users||[]}catch{C("Không thá» tải danh sách ngưá»i dùng."),p.value=[]}finally{Z.value=!1}}return le(()=>{document.addEventListener("click",gt),setTimeout(()=>{if(!K()){dt.push("/login");return}ct.value=!0,Mt(),Zt(),Ut()},80)}),oe(()=>{document.removeEventListener("click",gt)}),(s,t)=>{const c=te;return ct.value?(o(),a("div",me,[e("header",ge,[e("div",pe,[(o(),a("svg",fe,[...t[29]||(t[29]=[e("path",{d:"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"},null,-1),e("circle",{cx:"9",cy:"7",r:"4"},null,-1),e("path",{d:"M23 21v-2a4 4 0 00-3-3.87"},null,-1),e("path",{d:"M16 3.13a4 4 0 010 7.75"},null,-1)])])),t[35]||(t[35]=e("span",{class:"users-top-title"},"Quản lý Users",-1)),t[36]||(t[36]=e("span",{class:"users-top-ver"},"v1.1.0",-1)),e("span",ye,[t[30]||(t[30]=m("Tá»ng: ",-1)),e("strong",null,i(p.value.length),1)]),e("span",be,[t[31]||(t[31]=m("VIP: ",-1)),e("strong",null,i(p.value.filter(n=>n.isGold).length),1)]),e("span",_e,[t[32]||(t[32]=m("Online: ",-1)),e("strong",null,i(p.value.filter(n=>n.is_online).length),1)]),e("div",{class:"metric-wrap",ref_key:"metricWrapRef",ref:tt},[e("button",{class:v(["metric-btn",{"metric-btn-open":L.value}]),title:"Sá» á» 3 cá»t Ngà y/Tháng/NÄm tÃnh theo mục nà o",onClick:t[0]||(t[0]=n=>L.value=!L.value)},[m(i(A.value)+" ",1),t[33]||(t[33]=e("span",{class:"metric-caret"},"â¼",-1))],2),L.value?(o(),a("div",ke,[(o(),a(x,null,B(mt,n=>e("button",{key:n.key,class:v(["metric-item",{selected:H.value===n.key}]),onClick:l=>Et(n.key)},[e("span",null,i(n.label),1),e("span",we,i(n.note),1)],10,xe)),64))])):u("",!0)],512),e("div",{class:"filter-wrap",ref_key:"filterWrapRef",ref:et},[e("button",{class:v(["filter-btn",{"filter-btn-active":g.value}]),onClick:t[1]||(t[1]=n=>O.value=!O.value)},[...t[34]||(t[34]=[m(" Lá»c ",-1),e("span",{class:"filter-triangle"},"â¼",-1)])],2),O.value?(o(),a("div",Ce,[e("button",{class:v(["filter-item",{selected:g.value==="online"}]),onClick:t[2]||(t[2]=n=>_("online"))},"Online",2),e("button",{class:v(["filter-item",{selected:g.value==="day"}]),onClick:t[3]||(t[3]=n=>_("day"))},"Ngà y",2),e("button",{class:v(["filter-item",{selected:g.value==="month"}]),onClick:t[4]||(t[4]=n=>_("month"))},"Tháng",2),e("button",{class:v(["filter-item",{selected:g.value==="year"}]),onClick:t[5]||(t[5]=n=>_("year"))},"NÄm",2),e("button",{class:v(["filter-item filter-item-combo",{selected:g.value==="combo"}
1]),onClick:t[6]||(t[6]=n=>_("combo"))},"Online/Ngà y/Tháng/NÄm",2),e("button",{class:v(["filter-item filter-item-role",{selected:g.value==="admin"}]),onClick:t[7]||(t[7]=n=>_("admin"))},"ð¡ï¸ Admin",2),e("button",{class:v(["filter-item filter-item-role",{selected:g.value==="subadmin"}]),onClick:t[8]||(t[8]=n=>_("subadmin"))},"ð¤ Sub-admin",2),e("button",{class:v(["filter-item filter-item-role",{selected:g.value==="gold"}]),onClick:t[9]||(t[9]=n=>_("gold"))},"â VIP",2),e("button",{class:v(["filter-item filter-item-note",{selected:g.value==="note"}]),onClick:t[10]||(t[10]=n=>_("note"))},"ð Có ghi chú",2)])):u("",!0)],512),g.value?(o(),a("span",$e,[m(i(Ft.value)+" ("+i(nt.value.length)+") ",1),e("button",{class:"filter-clear",onClick:t[11]||(t[11]=n=>_(null)),title:"Xóa lá»c"},"â")])):u("",!0)]),e("div",Ie,[e("div",Se,[e("button",{onClick:Lt,class:v(["search-icon-btn",{"search-active":V.value||M.value}]),title:"Tìm kiếm user"},[...t[37]||(t[37]=[e("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)])],2),V.value?G((o(),a("input",{key:0,ref_key:"searchInputRef",ref:ht,"onUpdate:modelValue":t[12]||(t[12]=n=>M.value=n),class:"search-input",placeholder:"Tên, email, SÄT, ID...",onKeydown:at(Pt,["escape"])},null,544)),[[ot,M.value]]):u("",!0),V.value&&M.value?(o(),a("button",{key:1,onClick:t[13]||(t[13]=n=>M.value=""),class:"search-clear-btn",title:"Xóa tìm kiếm"},"â")):u("",!0)]),t[38]||(t[38]=e("a",{href:"/admin",class:"users-top-btn"},"â Vá» Admin",-1)),e("button",{onClick:Vt,class:"users-top-btn users-top-logout"},"ÄÄng xuất")])]),e("div",Te,[e("div",Me,[e("table",Ne,[e("thead",null,[e("tr",null,[t[43]||(t[43]=e("th",null,"ID",-1)),t[44]||(t[44]=e("th",null,"Há» tên",-1)),t[45]||(t[45]=e("th",null,"NÄm sinh",-1)),t[46]||(t[46]=e("th",null,"Giá»i tÃnh",-1)),W.value?(o(),a("th",Ve,"Email")):u("",!0),ut.value?(o(),a("th",Ae,"SÄT")):u("",!0),e("th",{class:v(["th-filter",{"th-active":g.value==="online"}]),onClick:t[14]||(t[14]=n=>_("online")),title:"Lá»c Online"},"Online â¾",2),e("th",{class:v(["th-filter",{"th-active":g.value==="day"}]),onClick:t[15]||(t[15]=n=>_("day")),title:`Lá»c theo Ngà y â Äang tÃnh lượt ${A.value}`},[t[39]||(t[39]=m("Ngà y â¾",-1)),e("span",Le,i(A.value),1)],10,De),e("th",{class:v(["th-filter",{"th-active":g.value==="month"}]),onClick:t[16]||(t[16]=n=>_("month")),title:`Lá»c theo Tháng â Äang tÃnh lượt ${A.value}`},[t[40]||(t[40]=m("Tháng â¾",-1)),e("span",Ue,i(A.value),1)],10,Pe),e("th",{class:v(["th-filter",{"th-active":g.value==="year"}]),onClick:t[17]||(t[17]=n=>_("year")),title:`Lá»c theo NÄm â Äang tÃnh lượt ${A.value}`},[t[41]||(t[41]=m("NÄm â¾",-1)),e("span",Ke,i(A.value),1)],10,Ee),t[47]||(t[47]=e("th",null,"Ngà y tạo",-1)),e("th",{class:v(["th-filter",{"th-active":g.value==="gold"}]),onClick:t[18]||(t[18]=n=>_("gold")),title:"Lá»c VIP"},"VIP â¾",2),e("th",{class:v(["th-filter",{"th-active":g.value==="subadmin"}]),onClick:t[19]||(t[19]=n=>_("subadmin")),title:"Lá»c Sub-Admin"},[t[42]||(t[42]=m(" Actions ",-1)),e("button",{class:"th-collapse-btn",onClick:D(Ot,["stop"]),title:P.value?"Má» tất cả thao tác":"Thu gá»n thao tác cho dá»
quan sát"},i(P.value?"⸠Má»":"â¾ Thu"),9,Fe)],2)])]),e("tbody",null,[Z.value?(o(),a("tr",He,[...t[48]||(t[48]=[e("td",{colspan:"13",class:"text-center py-4"},"Äang tải...",-1)])])):nt.value.length===0?(o(),a("tr",Oe,[...t[49]||(t[49]=[e("td",{colspan:"13",class:"text-center py-4"},"Không có dữ liá»u.",-1)])])):u("",!0),(o(!0),a(x,null,B(nt.value,(n,l)=>(o(),a("tr",{key:n.accountId,class:"hover-row"},[e("td",Re,i(n.accountId),1),e("td",Be,[e("span",{class:"truncate-cell",title:n.fullname},[n.accountType===0?(o(),a("span",je,"ADMIN")):u("",!0),e("button",{class:"name-btn",onClick:r=>qt(n),title:"Xem ảnh Äại diá»n"},i(n.fullname),9,qe)],8,Ge)]),e("td",Ye,i(n.birth_year||"â"),1),e("td",Xe,i(n.gender||"â"),1),W.value?(o(),a("td",ze,[e("span",{class:"truncate-cell",title:n.email},i(n.email),9,We)])):u("",!0),ut.value?(o(),a("td",Qe,i(n.phone),1)):u("",!0),e("td",Je,[n.is_online?(o(),a("span",Ze,"ON")):(o(),a("span",tn,"â"))]),e("td",en,i(S(n,"day")),1),e("td",nn,i(S(n,"month")),1
1),e("td",sn,i(S(n,"year")),1),e("td",ln,i(Dt(n.createdAt)),1),e("td",on,[e("span",{class:v(n.isGold?"badge-vip":"badge-off")},i(n.isGold?"YES":"â"),3)]),e("td",an,[P.value&&!q.value.has(n.accountId)?(o(),a("div",dn,[e("button",{class:"btn-expand",onClick:r=>pt(n.accountId),title:"Má» rá»ng thao tác cá»§a user nà y"},"â¶",8,rn),J.value&&n.isGold?(o(),a("button",{key:0,onClick:r=>R(n,l,"inactive"),class:"btn btn-green"},"Inactive VIP",8,cn)):u("",!0),Q.value&&n.accountType===2?(o(),a("button",{key:1,onClick:r=>R(n,l,"subadmin"),class:"btn btn-purple"},"Sub-Admin â",8,un)):u("",!0),!(J.value&&n.isGold)&&!(Q.value&&n.accountType===2)?(o(),a("span",vn,"â")):u("",!0)])):(o(),a("div",hn,[P.value?(o(),a("button",{key:0,class:"btn-expand btn-expand-open",onClick:r=>pt(n.accountId),title:"Thu gá»n dòng nà y"},"â¼",8,mn)):u("",!0),J.value?(o(),a(x,{key:1},[n.isGold?(o(),a("div",gn,[e("button",{onClick:r=>R(n,l,"inactive"),class:"btn btn-green"},"Inactive VIP",8,pn),e("div",{class:"sa-meta",title:ft(n)},[n.vip_permanent||n.vip_expire==null?(o(),a("span",yn,"â¾ï¸ VÄ©nh viá»
n")):(o(),a("span",{key:1,class:v(["sa-badge",n.vip_days_left<=7?"sa-soon":"sa-days"])},"â³ Premium: còn "+i(n.vip_days_left)+" ngà y",3)),n.vip_started_at?(o(),a("span",bn,i(ft(n)),1)):u("",!0)],8,fn)])):(o(),a("button",{key:1,onClick:r=>R(n,l,"active"),class:"btn btn-gray"},"Active VIP",8,_n))],64)):u("",!0),Q.value&&n.accountType!==0?(o(),a("div",kn,[e("button",{onClick:r=>R(n,l,"subadmin"),class:v(["btn",n.accountType===2?"btn-purple":"btn-gray"])},i(n.accountType===2?"Sub-Admin â":"Sub-Admin"),11,xn),n.accountType===2?(o(),a("div",{key:0,class:"sa-meta",title:yt(n)},[n.sub_admin_permanent||n.sub_admin_expire==null?(o(),a("span",Cn,"â¾ï¸ VÄ©nh viá»
n")):(o(),a("span",{key:1,class:v(["sa-badge",n.sub_admin_days_left<=7?"sa-soon":"sa-days"])},"â³ Còn "+i(n.sub_admin_days_left)+" ngà y",3)),n.sub_admin_months?(o(),a("span",$n,i(yt(n)),1)):u("",!0)],8,wn)):u("",!0)])):u("",!0),vt.value&&n.accountType!==0?(o(),a("button",{key:3,onClick:r=>Qt(n),class:"btn btn-gray"},"Xóa",8,In)):u("",!0),e("button",{onClick:r=>Xt(n),class:v(["btn btn-note",{"note-has-content":I.value.has(n.accountId)}])},"ð Note",10,Sn),Nt.value?(o(),a("button",{key:4,onClick:r=>Gt(n.accountId,n.fullname),class:"btn btn-gray"},"ð¬ Chat",8,Tn)):u("",!0),vt.value?u("",!0):(o(),a("span",Mn,"â"))]))])]))),128))])])])]),$.show?(o(),a("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:t[21]||(t[21]=D(n=>$.show=!1,["self"]))},[e("div",Nn,[e("button",{onClick:t[20]||(t[20]=n=>$.show=!1),class:"absolute top-2.5 right-3.5 text-gray-400 hover:text-gray-700"},"â"),$.user?.avatar?(o(),a("img",{key:0,src:$.user.avatar,alt:$.user?.fullname,class:"w-[300px] h-[300px] max-w-full object-cover rounded-xl bg-slate-100 mx-auto mt-2 mb-3.5"},null,8,Vn)):(o(),a("div",An,[...t[50]||(t[50]=[e("span",{class:"text-5xl"},"ð¼ï¸",-1),e("span",{class:"text-sm"},"Chưa có ảnh Äại diá»n",-1)])])),e("div",Dn,i($.user?.fullname||"â"),1),e("div",Ln,"ID: "+i($.user?.accountId),1),W.value?(o(),a("div",Pn,i($.user?.email||"â"),1)):u("",!0)])])):u("",!0),h.show?(o(),a("div",{key:1,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:D(U,["self"])},[e("div",Un,[e("div",{class:v(["px-6 py-5 flex items-center gap-3 border-b",h.type==="active"?"bg-green-50 border-green-100":h.type==="inactive"?"bg-orange-50 border-orange-100":"bg-purple-50 border-purple-100"])},[e("div",{class:v(["w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0",h.type==="active"?"bg-green-100":h.type==="inactive"?"bg-orange-100":"bg-purple-100"])},[h.type==="active"?(o(),a("svg",En,[...t[51]||(t[51]=[e("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"},null,-1)])])):h.type==="inactive"?(o(),a("svg",Kn,[...t[52]||(t[52]=[e("circle",{cx:"12",cy:"12",r:"10"},null,-1),e("line",{x1:"8",y1:"12",x2:"16",y2:"12"},null,-1)])])):(o(),a("svg",Fn,[...t[53]||(t[53]=[e("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"},null,-1),e("circle",{cx:"9",cy:"7",r:"4"},null,-1),e("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"},null,-1),e("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"},null,-1)])]))],2),e("div",null,[e("p",Hn,i(h.title),1),e("p",On,i(h.subtitle),
11)])],2),e("div",Rn,[e("div",Bn,[e("p",null,[t[54]||(t[54]=e("span",{class:"text-gray-400"},"Há» tên:",-1)),t[55]||(t[55]=m()),e("strong",null,i(h.user?.fullname||"â"),1)]),e("p",null,[t[56]||(t[56]=e("span",{class:"text-gray-400"},"Email:",-1)),m(" "+i(h.user?.email),1)])]),h.type==="subadmin"&&h.enable?(o(),a("div",Gn,[t[59]||(t[59]=e("label",{class:"sa-duration-label"},"Thá»i hạn hiá»u lá»±c Sub-Admin",-1)),G(e("select",{"onUpdate:modelValue":t[22]||(t[22]=n=>T.value=n),class:"sa-duration-select"},[t[57]||(t[57]=e("option",{value:0},"â¾ï¸ VÄ©nh viá»
n (mặc Äá»nh)",-1)),(o(),a(x,null,B(120,n=>e("option",{key:n,value:n},i(n)+" tháng",9,jn)),64))],512),[[kt,T.value,void 0,{number:!0}]]),e("p",qn,[T.value>0?(o(),a(x,{key:0},[t[58]||(t[58]=m(" Hết hiá»u lá»±c và o ",-1)),e("strong",null,"cuá»i ngà y "+i(Bt.value),1),m(" (tÃnh từ hôm nay + "+i(T.value)+" tháng). ",1)],64)):(o(),a(x,{key:1},[m(" Không giá»i hạn thá»i gian â quyá»n Sub-Admin có hiá»u lá»±c vÄ©nh viá»
n. ")],64))])])):u("",!0),h.type==="active"?(o(),a("div",Yn,[t[63]||(t[63]=e("label",{class:"sa-duration-label"},"Thá»i hạn sá» dụng VIP",-1)),G(e("select",{"onUpdate:modelValue":t[23]||(t[23]=n=>N.value=n),class:"sa-duration-select"},[t[60]||(t[60]=e("option",{value:1},"1 tháng",-1)),(o(),a(x,null,B(10,n=>e("option",{key:n,value:n*12},i(n)+" nÄm",9,Xn)),64)),t[61]||(t[61]=e("option",{value:0},"â¾ï¸ VÄ©nh viá»
n",-1))],512),[[kt,N.value,void 0,{number:!0}]]),e("p",zn,[N.value>0?(o(),a(x,{key:0},[t[62]||(t[62]=m(" Hết hạn và o ",-1)),e("strong",null,"cuá»i ngà y "+i(Rt.value),1),m(" (tÃnh từ hôm nay + "+i(st(N.value))+"). ",1)],64)):(o(),a(x,{key:1},[m(" Không giá»i hạn thá»i gian â tà i khoản VIP có hiá»u lá»±c vÄ©nh viá»
n. ")],64))])])):u("",!0)]),e("div",Wn,[e("button",{onClick:U,class:"flex-1 py-2.5 rounded-lg border border-gray-300 text-gray-700 text-sm font-medium hover:bg-gray-50 transition"},"Không"),e("button",{onClick:jt,disabled:h.loading,class:v(["flex-1 py-2.5 rounded-lg text-white text-sm font-semibold transition disabled:opacity-60",h.type==="active"?"bg-green-500 hover:bg-green-600":h.type==="inactive"?"bg-orange-500 hover:bg-orange-600":"bg-purple-500 hover:bg-purple-600"])},i(h.loading?"Äang xá» lý...":"Äá»ng ý"),11,Qn)])])])):u("",!0),f.show?(o(),a("div",{key:2,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:D(lt,["self"])},[e("div",Jn,[t[69]||(t[69]=ae('<div class="bg-red-50 px-6 py-5 flex items-center gap-3 border-b border-red-100" data-v-b35df756><div class="w-10 h-10 rounded-full bg-red-100 flex items-center justify-center flex-shrink-0" data-v-b35df756><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#dc2626" stroke-width="2" data-v-b35df756><circle cx="12" cy="12" r="10" data-v-b35df756></circle><line x1="12" y1="8" x2="12" y2="12" data-v-b35df756></line><line x1="12" y1="16" x2="12.01" y2="16" data-v-b35df756></line></svg></div><div data-v-b35df756><p class="font-bold text-gray-800 text-base" data-v-b35df756>Xác nháºn xóa tà i khoản</p><p class="text-sm text-gray-500 mt-0.5" data-v-b35df756>Hà nh Äá»ng nà y không thá» hoà n tác</p></div></div>',1)),e("div",Zn,[t[68]||(t[68]=e("p",{class:"text-gray-700 text-sm mb-1"},"Bạn có chắc muá»n xóa tà i khoản nà y?",-1)),e("div",ts,[e("p",null,[t[64]||(t[64]=e("span",{class:"text-gray-400"},"Há» tên:",-1)),t[65]||(t[65]=m()),e("strong",null,i(f.user?.fullname||"â"),1)]),e("p",null,[t[66]||(t[66]=e("span",{class:"text-gray-400"},"Email:",-1)),m(" "+i(f.user?.email),1)]),f.user?.phone?(o(),a("p",es,[t[67]||(t[67]=e("span",{class:"text-gray-400"},"SÄT:",-1)),m(" "+i(f.user?.phone),1)])):u("",!0)])]),e("div",ns,[e("button",{onClick:lt,class:"flex-1 py-2.5 rounded-lg border border-gray-300 text-gray-700 text-sm font-medium hover:bg-gray-50 transition"},"Không xóa"),e("button",{onClick:Jt,disabled:f.loading,class:"flex-1 py-2.5 rounded-lg bg-red-500 hover:bg-red-600 disabled:opacity-60 text-white text-sm font-semibold transition"},i(f.loading?"Äang xóa...":"Äá»ng ý xóa"),9,ss)])])])):u("",!0),d.show?(o(),a("div",{key:3,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t[28]||(t[28]=D(n=>d.show=!1,["self"]))},[e("div",ls,[e("div",os,[e("span",null,[m("ð Ghi chú â "+i(d.user?.fullname||d.user?.email)+" ",1),e("span",as,"(ID: "+i(d.user?.accountId)+")",1)]),e("button",{onClick:t[24]||(t[24]=n=>d.show=!1),class:"note-close"}
1,"â")]),e("div",is,[!d.notes.length&&!d.loading?(o(),a("div",ds,"Chưa có ghi chú nà o")):u("",!0),d.loading?(o(),a("div",rs,"Äang tải...")):u("",!0),(o(!0),a(x,null,B(d.notes,n=>(o(),a("div",{key:n.id,class:"note-row"},[d.editId===n.id?(o(),a(x,{key:0},[e("span",cs,i(n.note_date),1),G(e("textarea",{"onUpdate:modelValue":t[25]||(t[25]=l=>d.editContent=l),class:"note-edit-input",rows:"2",onKeydown:at(D(l=>_t(n),["ctrl"]),["enter"])},null,40,us),[[ot,d.editContent]]),e("div",vs,[e("button",{onClick:l=>_t(n),class:"note-save-btn"},"ð¾",8,hs),e("button",{onClick:t[26]||(t[26]=l=>d.editId=null),class:"note-cancel-btn"},"â")])],64)):(o(),a(x,{key:1},[e("div",ms,[e("span",gs,i(n.note_date),1),e("span",ps,i(n.content),1)]),e("div",fs,[e("button",{onClick:l=>zt(n),class:"note-edit-btn",title:"Sá»a"},"â",8,ys),e("button",{onClick:l=>Wt(n.id),class:"note-del-btn",title:"Xóa"},"â",8,bs)])],64))]))),128))]),e("div",_s,[e("div",ks,[e("span",xs,i(d.today),1),G(e("textarea",{"onUpdate:modelValue":t[27]||(t[27]=n=>d.newContent=n),class:"note-new-input",rows:"2",placeholder:"Nháºp ghi chú...",onKeydown:at(D(bt,["ctrl"]),["enter"])},null,40,ws),[[ot,d.newContent]])]),e("div",Cs,[t[70]||(t[70]=e("span",{class:"note-hint"},"Ctrl+Enter Äá» lưu",-1)),e("button",{onClick:bt,disabled:!d.newContent.trim(),class:"note-add-btn"},"+ Thêm ghi chú",8,$s)])])])])):u("",!0),ie(c,{show:it(wt),message:it(Ct),onClose:it(It)},null,8,["show","message","onClose"])])):(o(),a("div",he,"Äang kiá»m tra ÄÄng nháºp..."))}}},Ds=ne(Is,[["__scopeId","data-v-b35df756"]]);export{Ds 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.