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