Files
machartaa_admin_dist/dist/assets/index-9b51e8ed.js
T
2026-10-20 16:52:05 +03:30

2 lines
16 KiB
JavaScript

import{u as be,_ as we}from"./useBaseTable-e7a67916.js";import{_ as xe}from"./button.vue_vue_type_style_index_0_lang-f90e25b2.js";import{I as R}from"./Icon-29e38d16.js";import{U as ke,I as Ce,d as G,h as Y,z as K,H as _,o as v,k as P,w as u,b as f,e as n,l as p,i as y,f as J,c as k,q as Z,F as ee,t as $,v as Se,u as Ue,E as Me,j as L,x as $e,n as F,s as Ee,R as Ie}from"./index-1ba0f9ec.js";import{_ as te,g as Be,p as De,a as Ae}from"./adminUser-d7aabdfc.js";import{_ as se}from"./BasicInput.vue_vue_type_style_index_0_lang-e6a4e582.js";import{a as ae,u as Te,c as qe,g as Re,d as Fe}from"./member-0bd612b3.js";import{F as ne,_ as B}from"./index-83b891e2.js";import{C as Pe}from"./index-e22339b6.js";import{D as Ne}from"./index-175b83cf.js";import{t as Q}from"./useDataTime-6e234adb.js";import{b as Ve,l as Oe,c as ze}from"./userSegments-081d8da2.js";import{M as X}from"./index-ec322234.js";import{S as Le}from"./index-4bff02a6.js";import{_ as je}from"./index-e0664925.js";import{T as j}from"./isSymbol-355a1404.js";import"./updateLocale-a8654270.js";import"./index-8f2b7e91.js";import"./_plugin-vue_export-helper-31e07528.js";import"./shallowequal-e0d9eafb.js";import"./vnode-c4e67237.js";import"./useState-dcd360f8.js";import"./useMemo-ee45fb46.js";import"./FormItemContext-33ef1221.js";import"./omit-f5d28cd3.js";import"./lodash-27f814e6.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-36a1ea6e.js";import"./BasicModal.vue_vue_type_style_index_0_lang-aed8f5e4.js";import"./index-aafc0fe2.js";import"./SearchOutlined-95278fe5.js";import"./isPlainObject-e945bc1f.js";import"./index-73cafb1e.js";import"./index-c8127d4e.js";import"./Badge-8a8eeb58.js";import"./isNumeric-3f69e2aa.js";import"./index-a8579634.js";import"./usePrice-bc935b83.js";import"./_flatRest-7877cdf8.js";import"./Col-f8806a10.js";import"./styleChecker-19ce40ea.js";import"./toArray-41940180.js";import"./index-3f6d5caa.js";import"./index-876da578.js";import"./LeftOutlined-93011b30.js";import"./css-aae66f86.js";import"./DialogWrap-394d7eb0.js";import"./pickAttrs-0ddf9a54.js";import"./isMobile-e2e89480.js";const oe=async(i,l)=>{await Ce.put(`/admin/members/${i}/password`,{password:l})},He=async i=>{var a;return((a=(await ke("user_doc_value",{filters:[{field:"user_id",op:"eq",value:i}],limit:1,page:1})).rows)==null?void 0:a[0])??null},Je=async i=>{const l=await He(i);return(l==null?void 0:l.value)||null},Ge=async i=>(await oe(i.user_id,i.value),{success:!0}),Ke=async(i,l)=>(await oe(i,l),{success:!0}),Qe={class:"max-h-[500px] overflow-y-auto p-3"},We={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},Xe=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,d=>{d&&(a.isEdit&&a.data?E():o())});const E=async()=>{try{o();const d=await ae(a.data.id);t.first_name=d.first_name||"",t.last_name=d.last_name||"",t.phone=d.phone||"";try{const c=await Je(d.id);t.password="",t.repeat_password=""}catch{t.password="",t.repeat_password=""}}catch(d){console.error("Error loading data:",d),_.error("خطا در بارگذاری اطلاعات")}},D=()=>{o(),l("update:visible",!1),l("update:isEdit",!1)},I=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 d={first_name:t.first_name.trim(),last_name:t.last_name.trim(),phone:t.phone.trim()};if(a.isEdit&&a.data){const c=await Te(a.data.id,d);t.password&&t.password.trim()!==""&&await Ke(c.id,t.password),_.success("کاربر با موفقیت ویرایش شد"),l("update:isEdit",!1)}else{const c=await qe(d);t.password&&t.password.trim()!==""&&await Ge({user_id:c.id,value:t.password}),_.success("کاربر با موفقیت ایجاد شد")}o(),l("update:visible",!1),l("success")}catch(d){console.error("Error:",d),_.error((d==null?void 0:d.message)||"خطا در ثبت اطلاعات")}};return(d,c)=>{const C=se,g=te;return v(),P(g,{visible:a.visible,width:"50rem",title:`${a.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:D,onOk:I},{default:u(()=>[f("div",Qe,[n(p(ne),{model:t},{default:u(()=>[f("div",We,[n(p(B),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:u(()=>[n(C,{"place-holder":"نام",value:t.first_name,"onUpdate:value":c[0]||(c[0]=r=>t.first_name=r)},null,8,["value"])]),_:1}),n(p(B),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:u(()=>[n(C,{"place-holder":"نام خانوادگی",value:t.last_name,"onUpdate:value":c[1]||(c[1]=r=>t.last_name=r)},null,8,["value"])]),_:1}),n(p(B),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:u(()=>[n(C,{"place-holder":"تلفن همراه",value:t.phone,"onUpdate:value":c[2]||(c[2]=r=>t.phone=r)},null,8,["value"])]),_:1}),n(p(B),{label:"کلمه عبور",key:"password",rules:a.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:u(()=>[n(C,{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(B),{label:"تکرار کلمه عبور",key:"repeat_password",rules:a.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:u(()=>[n(C,{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"])}}}),Ye={class:"max-h-[560px] overflow-y-auto p-3"},Ze={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4 mb-4"},et={class:"grid grid-cols-1 md:grid-cols-2 gap-3"},tt=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=[]},D=async()=>{t.value.length||(t.value=await Be())},I=()=>{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 D(),a.data?I():E())});const d=(g,r)=>{if(r){o.permissions.includes(g)||o.permissions.push(g);return}o.permissions=o.permissions.filter(w=>w!==g)},c=()=>{l("update:visible",!1)},C=async()=>{var g,r,w;if(!((g=a.data)!=null&&g.id)){_.error("کاربر انتخاب نشده است");return}if(!o.name.trim()){_.error("نام الزامی است");return}if(!o.phone.trim()){_.error("کاربر شماره تلفن ندارد");return}try{await De(a.data.id,{name:o.name.trim(),permissions:o.permissions}),_.success("کاربر با موفقیت به مدیران اضافه شد"),l("success"),c()}catch(U){_.error(((w=(r=U==null?void 0:U.response)==null?void 0:r.data)==null?void 0:w.error)||"خطا در افزودن به مدیران")}};return(g,r)=>{const w=se,U=te;return v(),P(U,{visible:a.visible,width:"52rem",title:"افزودن به مدیران",okText:"ثبت",onCancel:c,onOk:C},{default:u(()=>[f("div",Ye,[n(p(ne),{model:o},{default:u(()=>[f("div",Ze,[n(p(B),{label:"نام"},{default:u(()=>[n(w,{"place-holder":"نام",value:o.name,"onUpdate:value":r[0]||(r[0]=b=>o.name=b)},null,8,["value"])]),_:1}),n(p(B),{label:"شماره تلفن"},{default:u(()=>[n(w,{"place-holder":"شماره تلفن",value:o.phone,"onUpdate:value":r[1]||(r[1]=b=>o.phone=b),disabled:""},null,8,["value"])]),_:1})]),n(p(Ne),null,{default:u(()=>[J("دسترسی به صفحات")]),_:1}),f("div",et,[(v(!0),k(ee,null,Z(t.value,b=>(v(),P(p(Pe),{key:b.key,checked:o.permissions.includes(b.key),onChange:T=>d(b.key,T.target.checked)},{default:u(()=>[J($(b.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",filterable:!0},{title:"نام خانوادگی",dataIndex:"last_name",key:"last_name",filterable:!0},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterable:!0},{title:" زمان ثبت نام",dataIndex:"created_at",key:"created_at",type:"Date",filterable:!0,customRender:i=>i.record.created_at?Q(i.record.created_at):"-"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],st=[...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",type:"Date",filterable:!0,customRender:i=>i.record.segment_entered_at?Q(i.record.segment_entered_at):"-"},{title:"علت عضویت",dataIndex:"segment_reason",key:"segment_reason",filterable:!0,customRender:i=>i.record.segment_reason||"-"},H[H.length-1]],at={class:"h-full"},nt={class:"m-2 md:mx-4 mb-2 flex flex-wrap items-end gap-3"},ot={class:"min-w-[260px]"},rt=f("div",{class:"mb-1 text-sm text-gray-600"},"فیلتر سگمنت",-1),it={key:0,class:"text-xs text-gray-500 pb-2"},lt={key:0},ut={key:1},dt={key:2},ct=f("span",null,"افزودن کاربر",-1),mt={class:"gap-2 flex justify-center"},pt=f("span",null,"سگمنت‌های کاربر",-1),_t=f("span",null,"ویرایش",-1),ft=f("span",null,"حذف",-1),vt={key:1,class:"text-gray-500 text-sm"},gt={key:2,class:"space-y-2"},yt={class:"font-semibold"},ht={class:"text-xs text-gray-400"},bt={class:"text-xs text-gray-500"},wt={class:"text-xs mt-1"},xt={key:0,class:"text-xs"},gs=G({__name:"index",setup(i){const l=Se(),a=Ue(),t=Me(),o=y(!1),E=y(!1),D=y(null),I=y(!1),d=y(null),c=y(new Set),C=y(new Set),g=y(null),r=y(typeof l.query.segment=="string"?l.query.segment:void 0),w=y(!1),U=y([]),b=y(!1),T=y(!1),N=y([]),[re,V]=be(),ie=L(()=>U.value.filter(e=>e.source!=="live").map(e=>({value:e.code,label:`${e.title} (${e.code})`}))),A=L(()=>U.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)),C.value=new Set(e.map(s=>{var x;return s.phone||s.username||((x=s.email)==null?void 0:x.split("@")[0])||""}).filter(Boolean))}catch(e){console.error(e)}},O=e=>{if(e!=null&&e.id&&c.value.has(String(e.id)))return!0;const s=(e==null?void 0:e.phone)||"";return!!s&&C.value.has(s)},le=e=>{O(e)||(d.value=e,I.value=!0)};async function ue(e){const s=r.value;if(!s)return Re(e);const x=Math.max(1,Number(e==null?void 0:e.page)||1),M=Math.max(1,Number(e==null?void 0:e.limit)||20),z=e!=null&&e.search?String(e.search):"",m=((e==null?void 0:e.filters)||[]).filter(h=>(h==null?void 0:h.field)&&!h.hidden),S=await Ve({code:s,page:x,pageSize:M,search:z,filters:m}),q=S.total||0,ye=(x-1)*M;return{query:{...e,page:x,limit:M,total:q,search:z||null,filters:e.filters||[]},rows:(S.rows||[]).map((h,he)=>({id:h.userId,first_name:h.firstName,last_name:h.lastName,phone:h.phone,created_at:h.createdAt,segment_code:h.segmentCode,segment_title:h.segmentTitle,segment_entered_at:h.enteredAt,segment_reason:h.reason,index:ye+he}))}}const de=L(()=>r.value?st:H),ce=L(()=>({columns:de.value,api:ue}));function me(e){r.value=e||void 0,a.replace({query:{...l.query,segment:r.value||void 0}}),V()}async function pe(){w.value=!0;try{const e=await Oe();U.value=(e==null?void 0:e.persisted)||(e==null?void 0:e.items)||[]}catch(e){console.error(e)}finally{w.value=!1}}function _e(e){if(!e)return"-";try{return Q(e)}catch{return e}}async function fe(e){var s,x;if(e!=null&&e.id){b.value=!0,T.value=!0,N.value=[];try{N.value=await ze(String(e.id))||[]}catch(M){_.error(((x=(s=M==null?void 0:M.response)==null?void 0:s.data)==null?void 0:x.error)||"خطا در دریافت سگمنت‌های کاربر")}finally{T.value=!1}}}const ve=async e=>{D.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 Fe(e.id),_.success("کاربر با موفقیت حذف شد"),await V()}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,V())}),$e(async()=>{await pe(),W()}),(e,s)=>{const x=R,M=xe,z=we;return v(),k("div",at,[f("div",nt,[f("div",ot,[rt,n(p(je),{value:r.value,"onUpdate:value":s[0]||(s[0]=m=>r.value=m),class:"w-full","allow-clear":"","show-search":"",options:ie.value,loading:w.value,placeholder:"همه کاربران","option-filter-prop":"label",onChange:me},null,8,["value","options","loading"])]),A.value?(v(),k("div",it,[f("span",null,$(A.value.description),1),A.value.memberCount!=null?(v(),k("span",lt," · "+$(A.value.memberCount.toLocaleString("fa-IR"))+" عضو ",1)):A.value.computationStatus==="never_run"?(v(),k("span",ut," · هنوز محاسبه نشده ")):F("",!0),A.value.computationStatus==="running"?(v(),k("span",dt," · در حال محاسبه ")):F("",!0)])):F("",!0)]),n(z,Ie(ce.value,{ref_key:"table",ref:g,onRegister:p(re)}),{extraHeader:u(()=>[n(M,{type:"primary",onClick:s[1]||(s[1]=m=>o.value=!0)},{default:u(()=>[ct,n(x,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:u(({column:m,record:S})=>[f("div",mt,[n(p(j),{class:"cursor-pointer"},{title:u(()=>[pt]),default:u(()=>[n(R,{icon:"vuesax-linear:category",color:"#7C3AED",onClick:q=>fe(S)},null,8,["onClick"])]),_:2},1024),p(t).isSuperAdmin?(v(),P(p(j),{key:0,class:"cursor-pointer"},{title:u(()=>[f("span",null,$(O(S)?"قبلاً مدیر است":"افزودن به مدیران"),1)]),default:u(()=>[n(R,{icon:"vuesax-linear:user-tick",color:O(S)?"#9CA3AF":"#059669",class:Ee({"opacity-40 cursor-not-allowed":O(S)}),onClick:q=>le(S)},null,8,["color","class","onClick"])]),_:2},1024)):F("",!0),n(p(j),{class:"cursor-pointer"},{title:u(()=>[_t]),default:u(()=>[n(R,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:q=>ve(S)},null,8,["onClick"])]),_:2},1024),n(p(j),{class:"cursor-pointer"},{title:u(()=>[ft]),default:u(()=>[n(R,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:q=>ge(S)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(Xe,{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:D.value,onSuccess:p(V)},null,8,["visible","is-edit","data","onSuccess"]),n(tt,{visible:I.value,"onUpdate:visible":s[4]||(s[4]=m=>I.value=m),data:d.value,onSuccess:W},null,8,["visible","data"]),n(p(X),{visible:b.value,"onUpdate:visible":s[5]||(s[5]=m=>b.value=m),title:"سگمنت‌های کاربر",footer:null,centered:"","destroy-on-close":""},{default:u(()=>[T.value?(v(),P(p(Le),{key:0})):N.value.length?(v(),k("div",gt,[(v(!0),k(ee,null,Z(N.value,m=>(v(),k("div",{key:m.segmentCode,class:"rounded border border-gray-100 p-2"},[f("div",yt,[J($(m.title)+" ",1),f("span",ht,"("+$(m.segmentCode)+")",1)]),f("div",bt,$(m.description),1),f("div",wt,"ورود: "+$(_e(m.enteredAt)),1),m.reason?(v(),k("div",xt,"علت: "+$(m.reason),1)):F("",!0)]))),128))])):(v(),k("div",vt," این کاربر در هیچ سگمنت فعالی نیست (یا هنوز محاسبه نشده). "))]),_:1},8,["visible"])])}}});export{gs as default};