Files
machartaa_admin_dist/dist/assets/index-9a8433a8.js
T
2026-10-14 16:25:33 +03:30

2 lines
16 KiB
JavaScript

import{u as he,_ as be}from"./useBaseTable-dfbf3762.js";import{_ as we}from"./button.vue_vue_type_style_index_0_lang-5dd5fad9.js";import{I as R}from"./Icon-0c593d03.js";import{O as xe,R as ke,d as G,h as Y,z as K,H as _,o as v,k as F,w as d,b as f,e as n,l as p,i as y,f as J,c as x,q as Z,F as ee,t as $,v as Ce,u as Se,E as Ue,j as L,x as Me,n as z,s as $e,L as Ee}from"./index-a94f140f.js";import{_ as te,g as Be,p as Ie,a as Ae}from"./adminUser-b44031bb.js";import{_ as se}from"./BasicInput.vue_vue_type_style_index_0_lang-eec084de.js";import{a as ae,u as De,c as Te,g as qe,d as Re}from"./member-e7496edf.js";import{F as ne,_ as I}from"./index-12b232e8.js";import{C as Fe}from"./index-02db9106.js";import{D as Pe}from"./index-f9445381.js";import{t as Q}from"./useDataTime-9987a66e.js";import{a as Ne,l as Ve,b as Oe}from"./userSegments-16cccd73.js";import{M as X}from"./index-cadfe89f.js";import{S as Le}from"./index-a08f6658.js";import{_ as ze}from"./index-1e5db048.js";import{T as j}from"./isSymbol-0faad147.js";import"./updateLocale-63da7352.js";import"./index-da3c4531.js";import"./_plugin-vue_export-helper-3751a4c9.js";import"./shallowequal-311bf7d9.js";import"./vnode-d8d89b8b.js";import"./useState-75e49d81.js";import"./useMemo-e6667500.js";import"./FormItemContext-d446a85f.js";import"./omit-09913e6a.js";import"./lodash-b667f7ec.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-988f9693.js";import"./BasicModal.vue_vue_type_style_index_0_lang-c75cb8ba.js";import"./index-9bf19e54.js";import"./SearchOutlined-2c05f948.js";import"./isPlainObject-fa7524bd.js";import"./index-d139af20.js";import"./index-94f097c0.js";import"./Badge-64556311.js";import"./isNumeric-3f69e2aa.js";import"./index-a10a5cee.js";import"./usePrice-bc935b83.js";import"./_flatRest-38d88d03.js";import"./Col-098f825e.js";import"./styleChecker-cbf8a3c6.js";import"./toArray-3323d384.js";import"./index-fa5a0887.js";import"./index-6838bdc5.js";import"./DialogWrap-1f925fe5.js";import"./pickAttrs-d12003ac.js";import"./css-aae66f86.js";import"./isMobile-e2e89480.js";const oe=async(i,l)=>{await ke.put(`/admin/members/${i}/password`,{password:l})},je=async i=>{var a;return((a=(await xe("user_doc_value",{filters:[{field:"user_id",op:"eq",value:i}],limit:1,page:1})).rows)==null?void 0:a[0])??null},He=async i=>{const l=await je(i);return(l==null?void 0:l.value)||null},Je=async i=>(await oe(i.user_id,i.value),{success:!0}),Ge=async(i,l)=>(await oe(i,l),{success:!0}),Ke={class:"max-h-[500px] overflow-y-auto p-3"},Qe={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},We=G({__name:"AddEditForm",props:{visible:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1},data:{}},emits:["update:visible","update:isEdit","success"],setup(i,{emit:l}){const a=i,t=Y({first_name:"",last_name:"",phone:"",password:"",repeat_password:""}),o=()=>{t.first_name="",t.last_name="",t.phone="",t.password="",t.repeat_password=""};K(()=>a.visible,u=>{u&&(a.isEdit&&a.data?E():o())});const E=async()=>{try{o();const u=await ae(a.data.id);t.first_name=u.first_name||"",t.last_name=u.last_name||"",t.phone=u.phone||"";try{const c=await He(u.id);t.password="",t.repeat_password=""}catch{t.password="",t.repeat_password=""}}catch(u){console.error("Error loading data:",u),_.error("خطا در بارگذاری اطلاعات")}},A=()=>{o(),l("update:visible",!1),l("update:isEdit",!1)},B=async()=>{try{if(!t.first_name||t.first_name.trim()===""){_.warning("نام الزامی است");return}if(!t.last_name||t.last_name.trim()===""){_.warning("نام خانوادگی الزامی است");return}if(!t.phone||t.phone.trim()===""){_.warning("تلفن همراه الزامی است");return}if(a.isEdit){if(t.password&&t.password.trim()!==""){if(!t.repeat_password||t.repeat_password.trim()===""){_.warning("تکرار کلمه عبور الزامی است");return}if(t.password!==t.repeat_password){_.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}}else{if(!t.password||t.password.trim()===""){_.warning("کلمه عبور الزامی است");return}if(t.password!==t.repeat_password){_.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}const u={first_name:t.first_name.trim(),last_name:t.last_name.trim(),phone:t.phone.trim()};if(a.isEdit&&a.data){const c=await De(a.data.id,u);t.password&&t.password.trim()!==""&&await Ge(c.id,t.password),_.success("کاربر با موفقیت ویرایش شد"),l("update:isEdit",!1)}else{const c=await Te(u);t.password&&t.password.trim()!==""&&await Je({user_id:c.id,value:t.password}),_.success("کاربر با موفقیت ایجاد شد")}o(),l("update:visible",!1),l("success")}catch(u){console.error("Error:",u),_.error((u==null?void 0:u.message)||"خطا در ثبت اطلاعات")}};return(u,c)=>{const k=se,g=te;return v(),F(g,{visible:a.visible,width:"50rem",title:`${a.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:A,onOk:B},{default:d(()=>[f("div",Ke,[n(p(ne),{model:t},{default:d(()=>[f("div",Qe,[n(p(I),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:d(()=>[n(k,{"place-holder":"نام",value:t.first_name,"onUpdate:value":c[0]||(c[0]=r=>t.first_name=r)},null,8,["value"])]),_:1}),n(p(I),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:d(()=>[n(k,{"place-holder":"نام خانوادگی",value:t.last_name,"onUpdate:value":c[1]||(c[1]=r=>t.last_name=r)},null,8,["value"])]),_:1}),n(p(I),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:d(()=>[n(k,{"place-holder":"تلفن همراه",value:t.phone,"onUpdate:value":c[2]||(c[2]=r=>t.phone=r)},null,8,["value"])]),_:1}),n(p(I),{label:"کلمه عبور",key:"password",rules:a.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:d(()=>[n(k,{type:"password","place-holder":"کلمه عبور",value:t.password,"onUpdate:value":c[3]||(c[3]=r=>t.password=r)},null,8,["value"])]),_:1},8,["rules"]),n(p(I),{label:"تکرار کلمه عبور",key:"repeat_password",rules:a.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:d(()=>[n(k,{type:"password","place-holder":"تکرار کلمه عبور",value:t.repeat_password,"onUpdate:value":c[4]||(c[4]=r=>t.repeat_password=r)},null,8,["value"])]),_:1},8,["rules"])])]),_:1},8,["model"])])]),_:1},8,["visible","title"])}}}),Xe={class:"max-h-[560px] overflow-y-auto p-3"},Ye={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4 mb-4"},Ze={class:"grid grid-cols-1 md:grid-cols-2 gap-3"},et=G({__name:"PromoteToAdminForm",props:{visible:{type:Boolean,default:!1},data:{default:null}},emits:["update:visible","success"],setup(i,{emit:l}){const a=i,t=y([]),o=Y({name:"",phone:"",permissions:[]}),E=()=>{o.name="",o.phone="",o.permissions=[]},A=async()=>{t.value.length||(t.value=await Be())},B=()=>{if(!a.data)return;const g=[a.data.first_name,a.data.last_name].filter(Boolean).join(" ").trim();o.name=g||a.data.phone||"",o.phone=a.data.phone||"",o.permissions=[]};K(()=>a.visible,async g=>{g&&(await A(),a.data?B():E())});const u=(g,r)=>{if(r){o.permissions.includes(g)||o.permissions.push(g);return}o.permissions=o.permissions.filter(b=>b!==g)},c=()=>{l("update:visible",!1)},k=async()=>{var g,r,b;if(!((g=a.data)!=null&&g.id)){_.error("کاربر انتخاب نشده است");return}if(!o.name.trim()){_.error("نام الزامی است");return}if(!o.phone.trim()){_.error("کاربر شماره تلفن ندارد");return}try{await Ie(a.data.id,{name:o.name.trim(),permissions:o.permissions}),_.success("کاربر با موفقیت به مدیران اضافه شد"),l("success"),c()}catch(C){_.error(((b=(r=C==null?void 0:C.response)==null?void 0:r.data)==null?void 0:b.error)||"خطا در افزودن به مدیران")}};return(g,r)=>{const b=se,C=te;return v(),F(C,{visible:a.visible,width:"52rem",title:"افزودن به مدیران",okText:"ثبت",onCancel:c,onOk:k},{default:d(()=>[f("div",Xe,[n(p(ne),{model:o},{default:d(()=>[f("div",Ye,[n(p(I),{label:"نام"},{default:d(()=>[n(b,{"place-holder":"نام",value:o.name,"onUpdate:value":r[0]||(r[0]=h=>o.name=h)},null,8,["value"])]),_:1}),n(p(I),{label:"شماره تلفن"},{default:d(()=>[n(b,{"place-holder":"شماره تلفن",value:o.phone,"onUpdate:value":r[1]||(r[1]=h=>o.phone=h),disabled:""},null,8,["value"])]),_:1})]),n(p(Pe),null,{default:d(()=>[J("دسترسی به صفحات")]),_:1}),f("div",Ze,[(v(!0),x(ee,null,Z(t.value,h=>(v(),F(p(Fe),{key:h.key,checked:o.permissions.includes(h.key),onChange:T=>u(h.key,T.target.checked)},{default:d(()=>[J($(h.label),1)]),_:2},1032,["checked","onChange"]))),128))])]),_:1},8,["model"])])]),_:1},8,["visible"])}}}),H=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,customRender:i=>i.index+1},{title:"نام",dataIndex:"first_name",key:"first_name"},{title:"نام خانوادگی",dataIndex:"last_name",key:"last_name"},{title:"شماره همراه",dataIndex:"phone",key:"phone"},{title:" زمان ثبت نام",dataIndex:"created_at",key:"created_at",customRender:i=>i.record.created_at?Q(i.record.created_at):"-"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],tt=[...H.slice(0,-1),{title:"سگمنت",dataIndex:"segment_title",key:"segment_title",filterable:!1,customRender:i=>{const l=i.record.segment_title||"-",a=i.record.segment_code;return a?`${l} (${a})`:l}},{title:"ورود به سگمنت",dataIndex:"segment_entered_at",key:"segment_entered_at",filterable:!1,customRender:i=>i.record.segment_entered_at?Q(i.record.segment_entered_at):"-"},{title:"علت عضویت",dataIndex:"segment_reason",key:"segment_reason",filterable:!1,customRender:i=>i.record.segment_reason||"-"},H[H.length-1]],st={class:"h-full"},at={class:"m-2 md:mx-4 mb-2 flex flex-wrap items-end gap-3"},nt={class:"min-w-[260px]"},ot=f("div",{class:"mb-1 text-sm text-gray-600"},"فیلتر سگمنت",-1),rt={key:0,class:"text-xs text-gray-500 pb-2"},it={key:0},lt={key:1},dt={key:2},ut=f("span",null,"افزودن کاربر",-1),ct={class:"gap-2 flex justify-center"},mt=f("span",null,"سگمنت‌های کاربر",-1),pt=f("span",null,"ویرایش",-1),_t=f("span",null,"حذف",-1),ft={key:1,class:"text-gray-500 text-sm"},vt={key:2,class:"space-y-2"},gt={class:"font-semibold"},yt={class:"text-xs text-gray-400"},ht={class:"text-xs text-gray-500"},bt={class:"text-xs mt-1"},wt={key:0,class:"text-xs"},fs=G({__name:"index",setup(i){const l=Ce(),a=Se(),t=Ue(),o=y(!1),E=y(!1),A=y(null),B=y(!1),u=y(null),c=y(new Set),k=y(new Set),g=y(null),r=y(typeof l.query.segment=="string"?l.query.segment:void 0),b=y(!1),C=y([]),h=y(!1),T=y(!1),P=y([]),[re,N]=he(),ie=L(()=>C.value.filter(e=>e.source!=="live").map(e=>({value:e.code,label:`${e.title} (${e.code})`}))),D=L(()=>C.value.find(e=>e.code===r.value)),W=async()=>{if(t.isSuperAdmin)try{const e=await Ae();c.value=new Set(e.map(s=>s.auth_user_id).filter(s=>!!s).map(String)),k.value=new Set(e.map(s=>{var w;return s.phone||s.username||((w=s.email)==null?void 0:w.split("@")[0])||""}).filter(Boolean))}catch(e){console.error(e)}},V=e=>{if(e!=null&&e.id&&c.value.has(String(e.id)))return!0;const s=(e==null?void 0:e.phone)||"";return!!s&&k.value.has(s)},le=e=>{V(e)||(u.value=e,B.value=!0)};async function de(e){const s=r.value;if(!s)return qe(e);const w=Math.max(1,Number(e==null?void 0:e.page)||1),S=Math.max(1,Number(e==null?void 0:e.limit)||20),O=e!=null&&e.search?String(e.search):"",m=await Ne({code:s,page:w,pageSize:S,search:O}),U=m.total||0,q=(w-1)*S;return{query:{...e,page:w,limit:S,total:U,search:O||null,filters:e.filters||[]},rows:(m.rows||[]).map((M,ye)=>({id:M.userId,first_name:M.firstName,last_name:M.lastName,phone:M.phone,created_at:M.createdAt,segment_code:M.segmentCode,segment_title:M.segmentTitle,segment_entered_at:M.enteredAt,segment_reason:M.reason,index:q+ye}))}}const ue=L(()=>r.value?tt:H),ce=L(()=>({columns:ue.value,api:de}));function me(e){r.value=e||void 0,a.replace({query:{...l.query,segment:r.value||void 0}}),N()}async function pe(){b.value=!0;try{const e=await Ve();C.value=(e==null?void 0:e.persisted)||(e==null?void 0:e.items)||[]}catch(e){console.error(e)}finally{b.value=!1}}function _e(e){if(!e)return"-";try{return Q(e)}catch{return e}}async function fe(e){var s,w;if(e!=null&&e.id){h.value=!0,T.value=!0,P.value=[];try{P.value=await Oe(String(e.id))||[]}catch(S){_.error(((w=(s=S==null?void 0:S.response)==null?void 0:s.data)==null?void 0:w.error)||"خطا در دریافت سگمنت‌های کاربر")}finally{T.value=!1}}}const ve=async e=>{A.value=await ae(e.id),E.value=!0,o.value=!0},ge=async e=>{X.confirm({title:"حذف کاربر",content:`آیا مطمئن هستید که می‌خواهید کاربر "${e.first_name||""} ${e.last_name||""}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await Re(e.id),_.success("کاربر با موفقیت حذف شد"),await N()}catch(s){console.error("Error deleting user:",s),_.error("خطا در حذف کاربر")}}})};return K(()=>l.query.segment,e=>{const s=typeof e=="string"?e:void 0;s!==r.value&&(r.value=s,N())}),Me(async()=>{await pe(),W()}),(e,s)=>{const w=R,S=we,O=be;return v(),x("div",st,[f("div",at,[f("div",nt,[ot,n(p(ze),{value:r.value,"onUpdate:value":s[0]||(s[0]=m=>r.value=m),class:"w-full","allow-clear":"","show-search":"",options:ie.value,loading:b.value,placeholder:"همه کاربران","option-filter-prop":"label",onChange:me},null,8,["value","options","loading"])]),D.value?(v(),x("div",rt,[f("span",null,$(D.value.description),1),D.value.memberCount!=null?(v(),x("span",it," · "+$(D.value.memberCount.toLocaleString("fa-IR"))+" عضو ",1)):D.value.computationStatus==="never_run"?(v(),x("span",lt," · هنوز محاسبه نشده ")):D.value.computationStatus==="running"?(v(),x("span",dt," · در حال محاسبه ")):z("",!0)])):z("",!0)]),n(O,Ee(ce.value,{ref_key:"table",ref:g,onRegister:p(re)}),{extraHeader:d(()=>[n(S,{type:"primary",onClick:s[1]||(s[1]=m=>o.value=!0)},{default:d(()=>[ut,n(w,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:d(({column:m,record:U})=>[f("div",ct,[n(p(j),{class:"cursor-pointer"},{title:d(()=>[mt]),default:d(()=>[n(R,{icon:"vuesax-linear:category",color:"#7C3AED",onClick:q=>fe(U)},null,8,["onClick"])]),_:2},1024),p(t).isSuperAdmin?(v(),F(p(j),{key:0,class:"cursor-pointer"},{title:d(()=>[f("span",null,$(V(U)?"قبلاً مدیر است":"افزودن به مدیران"),1)]),default:d(()=>[n(R,{icon:"vuesax-linear:user-tick",color:V(U)?"#9CA3AF":"#059669",class:$e({"opacity-40 cursor-not-allowed":V(U)}),onClick:q=>le(U)},null,8,["color","class","onClick"])]),_:2},1024)):z("",!0),n(p(j),{class:"cursor-pointer"},{title:d(()=>[pt]),default:d(()=>[n(R,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:q=>ve(U)},null,8,["onClick"])]),_:2},1024),n(p(j),{class:"cursor-pointer"},{title:d(()=>[_t]),default:d(()=>[n(R,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:q=>ge(U)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(We,{visible:o.value,"onUpdate:visible":s[2]||(s[2]=m=>o.value=m),"is-edit":E.value,"onUpdate:isEdit":s[3]||(s[3]=m=>E.value=m),data:A.value,onSuccess:p(N)},null,8,["visible","is-edit","data","onSuccess"]),n(et,{visible:B.value,"onUpdate:visible":s[4]||(s[4]=m=>B.value=m),data:u.value,onSuccess:W},null,8,["visible","data"]),n(p(X),{visible:h.value,"onUpdate:visible":s[5]||(s[5]=m=>h.value=m),title:"سگمنت‌های کاربر",footer:null,centered:"","destroy-on-close":""},{default:d(()=>[T.value?(v(),F(p(Le),{key:0})):P.value.length?(v(),x("div",vt,[(v(!0),x(ee,null,Z(P.value,m=>(v(),x("div",{key:m.segmentCode,class:"rounded border border-gray-100 p-2"},[f("div",gt,[J($(m.title)+" ",1),f("span",yt,"("+$(m.segmentCode)+")",1)]),f("div",ht,$(m.description),1),f("div",bt,"ورود: "+$(_e(m.enteredAt)),1),m.reason?(v(),x("div",wt,"علت: "+$(m.reason),1)):z("",!0)]))),128))])):(v(),x("div",ft," این کاربر در هیچ سگمنت فعالی نیست (یا هنوز محاسبه نشده). "))]),_:1},8,["visible"])])}}});export{fs as default};