Files
machartaa_admin_dist/dist/assets/index-6efd721f.js
T

2 lines
13 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as A,u as F}from"./useBaseTable-13b436e1.js";import{_ as S}from"./button.vue_vue_type_style_index_0_lang-851afdd8.js";import{I as U,u as O}from"./Icon-04c02c0b.js";import{M as N}from"./index-5dc3a2fa.js";import{d as I,h as V,o as v,i as q,w as _,a as y,J as $,k as T,c as x,t as P,b as m,G as M,j as h,aa as Y,_ as z,I as w,r as H,P as G,D as f,g as C}from"./index-82b07f49.js";import{_ as J}from"./BasicInput.vue_vue_type_style_index_0_lang-5aefde0f.js";import{F as L,_ as B}from"./index-2a5d6560.js";import{m as Q}from"./index-7e5faec0.js";import{T as R}from"./shallowequal-17b27246.js";import"./_plugin-vue_export-helper-f81f33f1.js";import"./vnode-007df887.js";import"./useState-e0a5bff5.js";import"./FormItemContext-f4f190fd.js";import"./BasicModal.vue_vue_type_style_index_0_lang-a547157a.js";import"./index-1f61ecf5.js";import"./Col-5d52aed9.js";import"./index-c6d6dccd.js";import"./isPlainObject-f3a46277.js";import"./index-d634ff29.js";import"./pickAttrs-b9acd388.js";import"./toArray-e3bbd719.js";import"./usePrice-7afab779.js";const W={class:"flex items-center justify-between"},X={key:1},Z={key:2},K={class:"flex items-center gap-2"},ee={class:"flex text-gray-400 items-center gap-2"},te={key:0,class:"flex items-center gap-2"},se={key:0},ae={key:0},re=I({__name:"Modal",props:{centered:{type:Boolean,default:!0},wrapClassName:{default:""},cancelText:{default:"انصراف"},okText:{default:"بستن"},okButtonProps:{default:{}},cancelButtonProps:{default:{}},okType:{default:"primary"},showCancel:{type:Boolean,default:!0},showOk:{type:Boolean,default:!0},title:{default:""},maskClosable:{type:Boolean,default:!1}},setup(a){const t=a,{prefixCls:s}=O("base-model"),{emit:e}=Y(),r=V(()=>`${s} ${t.wrapClassName}`);function l(o){e("cancel",o),e("update:visible",!1)}function d(o){e("ok",o)}return(o,n)=>{const i=S,c=N;return v(),q(c,{centered:t.centered,wrapClassName:h(r),"mask-closable":t.maskClosable},{title:_(()=>[y("div",W,[y("div",null,[o.$slots.title?$(o.$slots,"title",{key:0}):T("",!0),t.title?(v(),x("span",X,P(t.title),1)):(v(),x("span",Z," "))]),y("div",K,[y("div",ee,[m(U,{icon:"vuesax-linear:add",class:"rotate-45 cursor-pointer",onClick:l})])])])]),footer:_(()=>[o.$slots.footer?T("",!0):(v(),x("div",te,[t.showOk?(v(),q(i,M({key:0,type:t.okType},o.okButtonProps,{onClick:d}),{default:_(()=>[o.$slots.okText?$(o.$slots,"okText",{key:1}):(v(),x("span",se,P(t.okText),1))]),_:3},16,["type"])):T("",!0),t.showCancel?(v(),q(i,M({key:1},o.cancelButtonProps,{onClick:l}),{default:_(()=>[o.$slots.cancelText?$(o.$slots,"cancelText",{key:1}):(v(),x("span",ae,P(t.cancelText),1))]),_:3},16)):T("",!0)])),$(o.$slots,"footer")]),default:_(()=>[$(o.$slots,"default")]),_:3},8,["centered","wrapClassName","mask-closable"])}}});const oe=async a=>{const{TableEngineRequest:t}=await z(()=>import("./buildSupabaseQuery-4056c4b8.js"),["assets/buildSupabaseQuery-4056c4b8.js","assets/index-82b07f49.js","assets/index-f86b861c.css"]),s={...a};!s.sort&&!s.order&&(s.order="-created_at");const e=await t(s,"users");try{if(Array.isArray(e==null?void 0:e.rows)){const r=e.rows.map(l=>({id:l.id??null,first_name:l.first_name||"",last_name:l.last_name||"",phone:l.phone||"",fname:l.first_name||"",lname:l.last_name||"",mobile:l.phone||"",...l}));return{...e,rows:r}}}catch(r){console.log("[getMembersTable] normalize error:",r)}return e},j=async a=>{const{data:t,error:s}=await w.from("users").select("*").eq("id",a).single();if(s)throw s;return{id:t.id??null,first_name:t.first_name||"",last_name:t.last_name||"",phone:t.phone||"",fname:t.first_name||"",lname:t.last_name||"",mobile:t.phone||"",...t}},ne=async a=>{const t={};a.first_name&&a.first_name.trim()!==""&&(t.first_name=a.first_name.trim()),a.last_name&&a.last_name.trim()!==""&&(t.last_name=a.last_name.trim()),a.phone&&a.phone.trim()!==""&&(t.phone=a.phone.trim());const{data:s,error:e}=await w.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(e||!s||s.length===0)throw new Error("برای ایجاد کاربر جدید، حداقل یک کاربر باید در سیستم وجود داشته باشد");let r=null;const l=s.find(p=>p.id===p.user_id);l?r=l.id:r=s[0].id,t.user_id=r;let d=null,o=null,n=0;const i=10,c=new Set;for(c.add(r);n<i;){const p=await w.from("users").insert([t]).select().single();if(o=p.error,d=p.data,!o)break;if(o.code==="23505"&&o.message.includes("user_id")){if(n++,n>=i)throw new Error("خطا در ایجاد کاربر: user_id باید منحصر به فرد باشد. لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.");await new Promise(b=>setTimeout(b,300*n));const{data:u,error:D}=await w.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(!D&&u&&u.length>0){const b=u.find(k=>!c.has(k.id));if(b){r=b.id,c.add(r),t.user_id=r;continue}const g=u.find(k=>k.id===k.user_id&&!c.has(k.id));if(g){r=g.id,c.add(r),t.user_id=r;continue}const E=u.find(k=>k.id!==r);if(E){r=E.id,t.user_id=r;continue}}throw new Error("خطا در ایجاد کاربر: لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.")}else throw o}if(o)throw o;if(d&&d.id&&d.user_id!==d.id){const{data:p,error:u}=await w.from("users").update({user_id:d.id}).eq("id",d.id).select().single();if(!u&&p)return p;if(u)throw u}return d},ie=async(a,t)=>{const s={};t.first_name!==void 0&&(s.first_name=t.first_name.trim()||null),t.last_name!==void 0&&(s.last_name=t.last_name.trim()||null),t.phone!==void 0&&(s.phone=t.phone.trim()||null);const{data:e,error:r}=await w.from("users").update(s).eq("id",a).select().single();if(r)throw r;return e},le=async a=>{const{error:t}=await w.from("users").delete().eq("id",a);if(t)throw t;return{success:!0}},de=async a=>{const{data:t,error:s}=await w.from("user_doc_value").select("doc_value").eq("user_id",a).eq("doc_key","password").single();if(s&&s.code!=="PGRST116")throw s;return(t==null?void 0:t.doc_value)||null},ue=async a=>{const{data:t,error:s}=await w.from("user_doc_value").insert([a]).select();if(s)throw s;return t},ce=async(a,t,s="password")=>{const{data:e,error:r}=await w.from("user_doc_value").select("*").eq("user_id",a).eq("doc_key",s);if(r)throw r;if(e&&e.length>0){const{data:l,error:d}=await w.from("user_doc_value").update({doc_value:t}).eq("user_id",a).eq("doc_key",s).select();if(d)throw d;return l}else{const{data:l,error:d}=await w.from("user_doc_value").insert([{user_id:a,doc_key:s,doc_value:t}]).select();if(d)throw d;return l}},me={class:"max-h-[500px] overflow-y-auto p-3"},pe={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},_e=I({__name:"AddEditForm",props:{visible:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1},data:{}},emits:["update:visible","update:isEdit","success"],setup(a,{emit:t}){const s=a,e=H({first_name:"",last_name:"",phone:"",password:"",repeat_password:""}),r=()=>{e.first_name="",e.last_name="",e.phone="",e.password="",e.repeat_password=""};G(()=>s.visible,n=>{n&&(s.isEdit&&s.data?l():r())});const l=async()=>{try{r();const n=await j(s.data.id);e.first_name=n.first_name||"",e.last_name=n.last_name||"",e.phone=n.phone||"";try{const i=await de(n.id);e.password="",e.repeat_password=""}catch{e.password="",e.repeat_password=""}}catch(n){console.error("Error loading data:",n),f.error("خطا در بارگذاری اطلاعات")}},d=()=>{r(),t("update:visible",!1),t("update:isEdit",!1)},o=async()=>{try{if(!e.first_name||e.first_name.trim()===""){f.warning("نام الزامی است");return}if(!e.last_name||e.last_name.trim()===""){f.warning("نام خانوادگی الزامی است");return}if(!e.phone||e.phone.trim()===""){f.warning("تلفن همراه الزامی است");return}if(s.isEdit){if(e.password&&e.password.trim()!==""){if(!e.repeat_password||e.repeat_password.trim()===""){f.warning("تکرار کلمه عبور الزامی است");return}if(e.password!==e.repeat_password){f.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}}else{if(!e.password||e.password.trim()===""){f.warning("کلمه عبور الزامی است");return}if(e.password!==e.repeat_password){f.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}const n={first_name:e.first_name.trim(),last_name:e.last_name.trim(),phone:e.phone.trim()};if(s.isEdit&&s.data){const i=await ie(s.data.id,n);e.password&&e.password.trim()!==""&&await ce(i.id,e.password,"password"),f.success("کاربر با موفقیت ویرایش شد"),t("update:isEdit",!1)}else{const i=await ne(n);e.password&&e.password.trim()!==""&&await ue({user_id:i.id,doc_key:"password",doc_value:e.password}),f.success("کاربر با موفقیت ایجاد شد")}r(),t("update:visible",!1),t("success")}catch(n){console.error("Error:",n),f.error((n==null?void 0:n.message)||"خطا در ثبت اطلاعات")}};return(n,i)=>{const c=J,p=re;return v(),q(p,{visible:s.visible,width:"50rem",title:`${s.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:d,onOk:o},{default:_(()=>[y("div",me,[m(h(L),{model:e},{default:_(()=>[y("div",pe,[m(h(B),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:_(()=>[m(c,{"place-holder":"نام",value:e.first_name,"onUpdate:value":i[0]||(i[0]=u=>e.first_name=u)},null,8,["value"])]),_:1}),m(h(B),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:_(()=>[m(c,{"place-holder":"نام خانوادگی",value:e.last_name,"onUpdate:value":i[1]||(i[1]=u=>e.last_name=u)},null,8,["value"])]),_:1}),m(h(B),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:_(()=>[m(c,{"place-holder":"تلفن همراه",value:e.phone,"onUpdate:value":i[2]||(i[2]=u=>e.phone=u)},null,8,["value"])]),_:1}),m(h(B),{label:"کلمه عبور",key:"password",rules:s.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:_(()=>[m(c,{type:"password","place-holder":"کلمه عبور",value:e.password,"onUpdate:value":i[3]||(i[3]=u=>e.password=u)},null,8,["value"])]),_:1},8,["rules"]),m(h(B),{label:"تکرار کلمه عبور",key:"repeat_password",rules:s.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:_(()=>[m(c,{type:"password","place-holder":"تکرار کلمه عبور",value:e.repeat_password,"onUpdate:value":i[4]||(i[4]=u=>e.repeat_password=u)},null,8,["value"])]),_:1},8,["rules"])])]),_:1},8,["model"])])]),_:1},8,["visible","title"])}}}),fe=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,customRender:a=>a.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:a=>a.record.created_at?Q(a.record.created_at).add(3,"hours").add(30,"minutes").format("jYYYY/jMM/jDD-HH:mm:ss"):"-"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1}],we={class:"h-full"},he=y("span",null,"افزودن کاربر",-1),ve={class:"gap-2 flex justify-center"},ye=y("span",null,"ویرایش",-1),ke=y("span",null,"حذف",-1),Ye=I({__name:"index",setup(a){const t=C(!1),s=C(!1),e=C(null),r=C(null),[l,d]=F(),o=C({columns:fe,api:oe}),n=async c=>{e.value=await j(c.id),s.value=!0,t.value=!0},i=async c=>{N.confirm({title:"حذف کاربر",content:`آیا مطمئن هستید که می‌خواهید کاربر "${c.first_name||""} ${c.last_name||""}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await le(c.id),f.success("کاربر با موفقیت حذف شد"),await d()}catch(p){console.error("Error deleting user:",p),f.error("خطا در حذف کاربر")}}})};return(c,p)=>{const u=U,D=S,b=A;return v(),x("div",we,[m(b,M(o.value,{ref_key:"table",ref:r,onRegister:h(l)}),{extraHeader:_(()=>[m(D,{type:"primary",onClick:p[0]||(p[0]=g=>t.value=!0)},{default:_(()=>[he,m(u,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:_(({column:g,record:E})=>[y("div",ve,[m(h(R),{class:"cursor-pointer"},{title:_(()=>[ye]),default:_(()=>[m(U,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:k=>n(E)},null,8,["onClick"])]),_:2},1024),m(h(R),{class:"cursor-pointer"},{title:_(()=>[ke]),default:_(()=>[m(U,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:k=>i(E)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),m(_e,{visible:t.value,"onUpdate:visible":p[1]||(p[1]=g=>t.value=g),"is-edit":s.value,"onUpdate:isEdit":p[2]||(p[2]=g=>s.value=g),data:e.value,onSuccess:h(d)},null,8,["visible","is-edit","data","onSuccess"])])}}});export{Ye as default};