2 lines
8.9 KiB
JavaScript
2 lines
8.9 KiB
JavaScript
import{t as y,f as M}from"./farsi-number-stB7JMN0.js";import{d as ne,l as se,c as p,a as d,b as a,w as n,n as x,r as l,h as v,g as V,o as c,e as u,S as oe,f as h,t as g,x as z,G as le,M as ie,H as ue,s as re,F as de,y as ce,i as pe,J as me,z as b,_ as _e}from"./index-C4s_T2hP.js";import{P as ge}from"./PlusCircleOutlined-DvvDmI1x.js";import{U as fe}from"./UnlockOutlined-bEPE7jAH.js";import{L as ye}from"./LockOutlined-C2VUSHin.js";const ke={class:"user-list-page"},ve={class:"table-header"},be={class:"filters"},Ce=["onClick"],we={key:1,class:"user-name"},xe={key:2,class:"date-cell"},he={key:3,class:"date-cell"},Le={key:4,class:"num-cell"},Ie={key:5,class:"num-cell"},Be={class:"dropdown-action-item"},Se={class:"dropdown-action-item"},Ae={key:0,class:"dropdown-action-item text-success"},Oe={key:1,class:"dropdown-action-item text-danger"},ze=ne({__name:"UserListView",setup(De){const D=pe(),L=v(!1),U=v([]),$=v(0),r=V({page:1,pageSize:10,search:"",status:void 0}),C=v(!1),I=v(!1),B=v([]),s=V({userId:"",userMobile:"",campaignId:"",amount:1,reason:""});async function F(){var o;try{const e=await x.get("/admin/campaigns",{params:{pageSize:100}});B.value=Array.isArray(e.data)?e.data:((o=e.data)==null?void 0:o.data)||[]}catch{}}async function k(){var o,e,m,f;L.value=!0;try{const _=await x.get("/admin/users",{params:{page:r.page,pageSize:r.pageSize,search:r.search||void 0,status:r.status||void 0}}),w=Array.isArray(_.data)?_.data:((o=_.data)==null?void 0:o.data)||[];U.value=w,$.value=((e=_.meta)==null?void 0:e.total)||((f=(m=_.data)==null?void 0:m.meta)==null?void 0:f.total)||w.length}finally{L.value=!1}}async function N(o){const m=!(o.status==="BLOCKED");try{await x.patch(`/admin/users/${o.id}/block`,{blocked:m,reason:m?"مسدودسازی توسط مدیر":"رفع مسدودی توسط مدیر"}),b.success(m?"کاربر با موفقیت مسدود شد.":"مسدودی کاربر رفع شد."),k()}catch{}}function j(o){const e=o.status==="BLOCKED";me.confirm({title:e?"رفع مسدودی کاربر":"مسدودسازی کاربر",content:e?`آیا از رفع مسدودی کاربر ${y(o.mobile)} اطمینان دارید؟`:`آیا از مسدود کردن کاربر ${y(o.mobile)} اطمینان دارید؟ دسترسی کاربر به چرخش گردونه قطع خواهد شد.`,okText:e?"تأیید رفع مسدودی":"مسدود کن",okType:e?"primary":"danger",cancelText:"انصراف",onOk:()=>N(o)})}function q(o){var e;s.userId=o.id,s.userMobile=o.mobile,s.campaignId=((e=B.value[0])==null?void 0:e.id)||"",s.amount=1,s.reason="اهدای شانس تشویقی توسط مدیر",C.value=!0}async function P(){if(!s.campaignId){b.error("لطفاً کمپین مورد نظر را انتخاب کنید.");return}if(!s.amount||s.amount===0){b.error("مقدار شانس باید غیر صفر باشد.");return}if(!s.reason){b.error("دلیل تغییر شانس الزامی است.");return}I.value=!0;try{await x.post("/admin/chances/adjust",{userId:s.userId,campaignId:s.campaignId,amount:s.amount,reason:s.reason}),b.success("شانس کاربر با موفقیت تغییر یافت."),C.value=!1,k()}finally{I.value=!1}}const R=[{title:"شماره موبایل",dataIndex:"mobile",key:"mobile"},{title:"نام کاربر",dataIndex:"name",key:"name"},{title:"تاریخ ثبتنام",dataIndex:"createdAt",key:"createdAt"},{title:"آخرین ورود",dataIndex:"lastLoginAt",key:"lastLoginAt"},{title:"تعداد اسپین",dataIndex:["_count","spins"],key:"spinsCount",align:"center"},{title:"تعداد جوایز برنده",key:"prizesCount",align:"center"},{title:"وضعیت حساب",dataIndex:"status",key:"status",align:"center"},{title:"عملیات",key:"actions",width:70,align:"center"}];return se(()=>{F(),k()}),(o,e)=>{const m=l("a-input-search"),f=l("a-select-option"),_=l("a-select"),w=l("a-tag"),G=l("a-button"),S=l("a-menu-item"),H=l("a-menu-divider"),J=l("a-menu"),Q=l("a-dropdown"),W=l("a-table"),X=l("a-alert"),A=l("a-form-item"),Y=l("a-input-number"),Z=l("a-input"),ee=l("a-form"),te=l("a-modal"),ae=l("a-card");return c(),p("div",ke,[e[14]||(e[14]=d("div",{class:"page-header-title"},[d("div",null,[d("h1",{class:"title"},"مدیریت کاربران"),d("p",{class:"subtitle"},"مشاهده لیست کاربران، وضعیت حساب و تنظیم دستی شانسها")])],-1)),a(ae,{bordered:!1,class:"main-card"},{default:n(()=>[d("div",ve,[d("div",be,[a(m,{value:r.search,"onUpdate:value":e[0]||(e[0]=t=>r.search=t),placeholder:"جستجوی موبایل یا نام...",style:{width:"270px"},allowClear:"",onSearch:e[1]||(e[1]=()=>{r.page=1,k()})},{prefix:n(()=>[a(u(oe),{style:{color:"#94a3b8","margin-left":"4px"}})]),_:1},8,["value"]),a(_,{value:r.status,"onUpdate:value":e[2]||(e[2]=t=>r.status=t),placeholder:"وضعیت حساب",allowClear:"",style:{width:"150px"},onChange:e[3]||(e[3]=()=>{r.page=1,k()})},{default:n(()=>[a(f,{value:"ACTIVE"},{default:n(()=>[...e[8]||(e[8]=[h("فعال",-1)])]),_:1}),a(f,{value:"BLOCKED"},{default:n(()=>[...e[9]||(e[9]=[h("مسدود",-1)])]),_:1})]),_:1},8,["value"])])]),a(W,{dataSource:U.value,columns:R,loading:L.value,rowKey:"id",size:"middle",pagination:{current:r.page,pageSize:r.pageSize,total:$.value,showTotal:t=>`مجموع: ${u(y)(t)} کاربر`,onChange:t=>{r.page=t,k()}}},{bodyCell:n(({column:t,record:i})=>{var E,T,K;return[t.key==="mobile"?(c(),p("span",{key:0,class:"user-mobile-link",onClick:O=>u(D).push(`/users/${i.id}`)},g(u(y)(i.mobile)),9,Ce)):t.key==="name"?(c(),p("span",we,g(i.name||"—"),1)):t.key==="createdAt"?(c(),p("span",xe,g(u(y)(new Date(i.createdAt).toLocaleDateString("fa-IR"))),1)):t.key==="lastLoginAt"?(c(),p("span",he,g(i.lastLoginAt?u(y)(new Date(i.lastLoginAt).toLocaleDateString("fa-IR")):"—"),1)):t.key==="spinsCount"?(c(),p("span",Le,g(u(M)(((E=i._count)==null?void 0:E.spins)??0)),1)):t.key==="prizesCount"?(c(),p("span",Ie,g(u(M)(((T=i._count)==null?void 0:T.userPrizes)??((K=i._count)==null?void 0:K.prizes)??0)),1)):t.key==="status"?(c(),z(w,{key:6,color:i.status==="BLOCKED"?"red":"green",class:"status-tag"},{default:n(()=>[d("span",{class:"status-dot",style:le({backgroundColor:i.status==="BLOCKED"?"#ef4444":"#10b981"})},null,4),h(" "+g(i.status==="BLOCKED"?"مسدود":"فعال"),1)]),_:2},1032,["color"])):t.key==="actions"?(c(),z(Q,{key:7,trigger:["click"],placement:"bottomLeft"},{overlay:n(()=>[a(J,{class:"action-dropdown-menu"},{default:n(()=>[a(S,{key:"profile",onClick:O=>u(D).push(`/users/${i.id}`)},{default:n(()=>[d("div",Be,[a(u(ue),{class:"dropdown-item-icon"}),e[10]||(e[10]=d("span",null,"مشاهده پروفایل و جزییات",-1))])]),_:1},8,["onClick"]),a(S,{key:"chance",onClick:O=>q(i)},{default:n(()=>[d("div",Se,[a(u(ge),{class:"dropdown-item-icon"}),e[11]||(e[11]=d("span",null,"تنظیم دستی شانس",-1))])]),_:1},8,["onClick"]),a(H),a(S,{key:"block",onClick:O=>j(i)},{default:n(()=>[i.status==="BLOCKED"?(c(),p("div",Ae,[a(u(fe),{class:"dropdown-item-icon"}),e[12]||(e[12]=d("span",null,"رفع مسدودی حساب",-1))])):(c(),p("div",Oe,[a(u(ye),{class:"dropdown-item-icon"}),e[13]||(e[13]=d("span",null,"مسدودسازی کاربر",-1))]))]),_:2},1032,["onClick"])]),_:2},1024)]),default:n(()=>[a(G,{type:"text",shape:"circle",class:"action-more-btn",title:"عملیات"},{default:n(()=>[a(u(ie),{style:{"font-size":"18px"}})]),_:1})]),_:2},1024)):re("",!0)]}),_:1},8,["dataSource","loading","pagination"]),a(te,{open:C.value,"onUpdate:open":e[7]||(e[7]=t=>C.value=t),title:"افزایش / کاهش شانس کاربر",confirmLoading:I.value,okText:"ثبت تغییر شانس",cancelText:"انصراف",onOk:P},{default:n(()=>[a(ee,{layout:"vertical"},{default:n(()=>[a(X,{message:`کاربر: ${u(y)(s.userMobile)}`,description:"تغییر شانس مستقیماً در دفترکل تراکنشهای شانس (Ledger) و اسنپشات کاربر با لاگ بازرسی ثبت میگردد.",type:"info","show-icon":"",style:{"margin-bottom":"16px","border-radius":"8px"}},null,8,["message"]),a(A,{label:"کمپین مورد نظر",required:""},{default:n(()=>[a(_,{value:s.campaignId,"onUpdate:value":e[4]||(e[4]=t=>s.campaignId=t),placeholder:"انتخاب کمپین"},{default:n(()=>[(c(!0),p(de,null,ce(B.value,t=>(c(),z(f,{key:t.id,value:t.id},{default:n(()=>[h(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(A,{label:"مقدار تغییر (+ برای افزایش، - برای کسر)",required:"",tooltip:"مثال: ۱ برای اهدای یک شانس، ۲- برای کسر دو شانس"},{default:n(()=>[a(Y,{value:s.amount,"onUpdate:value":e[5]||(e[5]=t=>s.amount=t),style:{width:"100%"}},null,8,["value"])]),_:1}),a(A,{label:"دلیل / بابت",required:""},{default:n(()=>[a(Z,{value:s.reason,"onUpdate:value":e[6]||(e[6]=t=>s.reason=t),placeholder:"مثال: خرید از فروشگاه / هدیه پشتیبانی"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirmLoading"])]),_:1})])}}}),Me=_e(ze,[["__scopeId","data-v-fd1c9633"]]);export{Me as default};
|