Files
machartaa_admin_dist/dist/assets/index-08d3ba93.js
T
2025-12-30 19:54:17 +03:30

2 lines
12 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{m as F,_ as O}from"./index-e3363e71.js";import{_ as R}from"./button.vue_vue_type_style_index_0_lang-4a27af23.js";import{I as U,u as j}from"./Icon-521be6d5.js";import{M as S}from"./BasicModal.vue_vue_type_style_index_0_lang-b8f611c9.js";import{d as I,g as V,o as v,K as q,w as p,a as y,a6 as $,N as T,c as x,O as M,b as m,a2 as P,L as h,ah as Y,a3 as z,a5 as w,t as H,h as L,a0 as f,r as C}from"./index-f88494bd.js";import{_ as G}from"./BasicInput.vue_vue_type_style_index_0_lang-125d2adf.js";import{b as J,F as B}from"./index-518b6476.js";import{u as Q}from"./useBaseTable-3aeb2499.js";import{T as N}from"./styleChecker-82cb676b.js";import"./_plugin-vue_export-helper-197f9e2b.js";import"./vnode-a7883726.js";import"./useState-63c0655b.js";import"./index-cb8a0c0b.js";import"./index-b33f7a92.js";import"./usePrice-7afab779.js";import"./Col-222f359d.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}=j("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=R,c=S;return v(),q(c,{centered:t.centered,wrapClassName:h(r),"mask-closable":t.maskClosable},{title:p(()=>[y("div",W,[y("div",null,[o.$slots.title?$(o.$slots,"title",{key:0}):T("",!0),t.title?(v(),x("span",X,M(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:p(()=>[o.$slots.footer?T("",!0):(v(),x("div",te,[t.showOk?(v(),q(i,P({key:0,type:t.okType},o.okButtonProps,{onClick:d}),{default:p(()=>[o.$slots.okText?$(o.$slots,"okText",{key:1}):(v(),x("span",se,M(t.okText),1))]),_:3},16,["type"])):T("",!0),t.showCancel?(v(),q(i,P({key:1},o.cancelButtonProps,{onClick:l}),{default:p(()=>[o.$slots.cancelText?$(o.$slots,"cancelText",{key:1}):(v(),x("span",ae,M(t.cancelText),1))]),_:3},16)):T("",!0)])),$(o.$slots,"footer")]),default:p(()=>[$(o.$slots,"default")]),_:3},8,["centered","wrapClassName","mask-closable"])}}});const oe=async a=>{const{TableEngineRequest:t}=await z(()=>import("./buildSupabaseQuery-aadb09f5.js"),["assets/buildSupabaseQuery-aadb09f5.js","assets/index-f88494bd.js","assets/index-9eba4347.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},A=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(_=>_.id===_.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 _=await w.from("users").insert([t]).select().single();if(o=_.error,d=_.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:_,error:u}=await w.from("users").update({user_id:d.id}).eq("id",d.id).select().single();if(!u&&_)return _;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"},_e={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},pe=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=""};L(()=>s.visible,n=>{n&&(s.isEdit&&s.data?l():r())});const l=async()=>{try{r();const n=await A(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=G,_=re;return v(),q(_,{visible:s.visible,width:"50rem",title:`${s.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:d,onOk:o},{default:p(()=>[y("div",me,[m(h(J),{model:e},{default:p(()=>[y("div",_e,[m(h(B),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:p(()=>[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:p(()=>[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:p(()=>[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:p(()=>[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:p(()=>[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?F(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),Se=I({__name:"index",setup(a){const t=C(!1),s=C(!1),e=C(null),r=C(null),[l,d]=Q(),o=C({columns:fe,api:oe}),n=async c=>{e.value=await A(c.id),s.value=!0,t.value=!0},i=async c=>{S.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(_){console.error("Error deleting user:",_),f.error("خطا در حذف کاربر")}}})};return(c,_)=>{const u=U,D=R,b=O;return v(),x("div",we,[m(b,P(o.value,{ref_key:"table",ref:r,onRegister:h(l)}),{extraHeader:p(()=>[m(D,{type:"primary",onClick:_[0]||(_[0]=g=>t.value=!0)},{default:p(()=>[he,m(u,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:p(({column:g,record:E})=>[y("div",ve,[m(h(N),{class:"cursor-pointer"},{title:p(()=>[ye]),default:p(()=>[m(U,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:k=>n(E)},null,8,["onClick"])]),_:2},1024),m(h(N),{class:"cursor-pointer"},{title:p(()=>[ke]),default:p(()=>[m(U,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:k=>i(E)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),m(pe,{visible:t.value,"onUpdate:visible":_[1]||(_[1]=g=>t.value=g),"is-edit":s.value,"onUpdate:isEdit":_[2]||(_[2]=g=>s.value=g),data:e.value,onSuccess:h(d)},null,8,["visible","is-edit","data","onSuccess"])])}}});export{Se as default};