Files
machartaa_admin_dist/dist/assets/index-33fd9705.js
T

2 lines
11 KiB
JavaScript

import{_ as D,u as I}from"./useBaseTable-0a9ca5c6.js";import{_ as M}from"./button.vue_vue_type_style_index_0_lang-c248f06f.js";import{I as q}from"./Icon-08f00b08.js";import{_ as P}from"./Modal.vue_vue_type_style_index_0_lang-f4f00f7d.js";import{_ as R}from"./BasicInput.vue_vue_type_style_index_0_lang-d31a14b4.js";import{_ as S,H as f,d as T,r as A,K as F,C as p,o as $,i as V,w as _,a as y,b as c,j as v,g as E,c as z,E as O}from"./index-65856697.js";import{F as j,_ as x}from"./index-93c72e99.js";import{t as H}from"./useDataTime-b5b0c094.js";import{M as N}from"./index-2debd256.js";import{T as B}from"./shallowequal-e2999554.js";import"./fa_IR-9a5561fa.js";import"./toArray-c0948cf7.js";import"./vnode-9598f8b5.js";import"./FormItemContext-75d7b3a2.js";import"./pickAttrs-5f523685.js";import"./useState-74c053ae.js";import"./_plugin-vue_export-helper-d18c65cd.js";import"./lodash-1b6d5368.js";import"./BasicModal.vue_vue_type_style_index_0_lang-b202ccf4.js";import"./index-3eb1fc79.js";import"./Col-9bf281e5.js";import"./index-5b62301e.js";import"./isPlainObject-77557052.js";import"./index-c60120a9.js";import"./usePrice-7afab779.js";const G=async r=>{const{TableEngineRequest:t}=await S(()=>import("./buildSupabaseQuery-dbcbc796.js"),["assets/buildSupabaseQuery-dbcbc796.js","assets/index-65856697.js","assets/index-26d6f44b.css"]),s={...r};!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 a=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:a}}}catch(a){console.log("[getMembersTable] normalize error:",a)}return e},C=async r=>{const{data:t,error:s}=await f.from("users").select("*").eq("id",r).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}},J=async r=>{const t={};r.first_name&&r.first_name.trim()!==""&&(t.first_name=r.first_name.trim()),r.last_name&&r.last_name.trim()!==""&&(t.last_name=r.last_name.trim()),r.phone&&r.phone.trim()!==""&&(t.phone=r.phone.trim());const{data:s,error:e}=await f.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(e||!s||s.length===0)throw new Error("برای ایجاد کاربر جدید، حداقل یک کاربر باید در سیستم وجود داشته باشد");let a=null;const l=s.find(u=>u.id===u.user_id);l?a=l.id:a=s[0].id,t.user_id=a;let d=null,w=null,i=0;const n=10,m=new Set;for(m.add(a);i<n;){const u=await f.from("users").insert([t]).select().single();if(w=u.error,d=u.data,!w)break;if(w.code==="23505"&&w.message.includes("user_id")){if(i++,i>=n)throw new Error("خطا در ایجاد کاربر: user_id باید منحصر به فرد باشد. لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.");await new Promise(b=>setTimeout(b,300*i));const{data:o,error:U}=await f.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(!U&&o&&o.length>0){const b=o.find(h=>!m.has(h.id));if(b){a=b.id,m.add(a),t.user_id=a;continue}const g=o.find(h=>h.id===h.user_id&&!m.has(h.id));if(g){a=g.id,m.add(a),t.user_id=a;continue}const k=o.find(h=>h.id!==a);if(k){a=k.id,t.user_id=a;continue}}throw new Error("خطا در ایجاد کاربر: لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.")}else throw w}if(w)throw w;if(d&&d.id&&d.user_id!==d.id){const{data:u,error:o}=await f.from("users").update({user_id:d.id}).eq("id",d.id).select().single();if(!o&&u)return u;if(o)throw o}return d},L=async(r,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:a}=await f.from("users").update(s).eq("id",r).select().single();if(a)throw a;return e},Q=async r=>{const{error:t}=await f.from("users").delete().eq("id",r);if(t)throw t;return{success:!0}},W=async r=>{const{data:t,error:s}=await f.from("user_doc_value").select("doc_value").eq("user_id",r).eq("doc_key","password").single();if(s&&s.code!=="PGRST116")throw s;return(t==null?void 0:t.doc_value)||null},X=async r=>{const{data:t,error:s}=await f.from("user_doc_value").insert([r]).select();if(s)throw s;return t},Y=async(r,t,s="password")=>{const{data:e,error:a}=await f.from("user_doc_value").select("*").eq("user_id",r).eq("doc_key",s);if(a)throw a;if(e&&e.length>0){const{data:l,error:d}=await f.from("user_doc_value").update({doc_value:t}).eq("user_id",r).eq("doc_key",s).select();if(d)throw d;return l}else{const{data:l,error:d}=await f.from("user_doc_value").insert([{user_id:r,doc_key:s,doc_value:t}]).select();if(d)throw d;return l}},Z={class:"max-h-[500px] overflow-y-auto p-3"},K={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},ee=T({__name:"AddEditForm",props:{visible:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1},data:{}},emits:["update:visible","update:isEdit","success"],setup(r,{emit:t}){const s=r,e=A({first_name:"",last_name:"",phone:"",password:"",repeat_password:""}),a=()=>{e.first_name="",e.last_name="",e.phone="",e.password="",e.repeat_password=""};F(()=>s.visible,i=>{i&&(s.isEdit&&s.data?l():a())});const l=async()=>{try{a();const i=await C(s.data.id);e.first_name=i.first_name||"",e.last_name=i.last_name||"",e.phone=i.phone||"";try{const n=await W(i.id);e.password="",e.repeat_password=""}catch{e.password="",e.repeat_password=""}}catch(i){console.error("Error loading data:",i),p.error("خطا در بارگذاری اطلاعات")}},d=()=>{a(),t("update:visible",!1),t("update:isEdit",!1)},w=async()=>{try{if(!e.first_name||e.first_name.trim()===""){p.warning("نام الزامی است");return}if(!e.last_name||e.last_name.trim()===""){p.warning("نام خانوادگی الزامی است");return}if(!e.phone||e.phone.trim()===""){p.warning("تلفن همراه الزامی است");return}if(s.isEdit){if(e.password&&e.password.trim()!==""){if(!e.repeat_password||e.repeat_password.trim()===""){p.warning("تکرار کلمه عبور الزامی است");return}if(e.password!==e.repeat_password){p.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}}else{if(!e.password||e.password.trim()===""){p.warning("کلمه عبور الزامی است");return}if(e.password!==e.repeat_password){p.warning("کلمه عبور و تکرار آن باید یکسان باشند");return}}const i={first_name:e.first_name.trim(),last_name:e.last_name.trim(),phone:e.phone.trim()};if(s.isEdit&&s.data){const n=await L(s.data.id,i);e.password&&e.password.trim()!==""&&await Y(n.id,e.password,"password"),p.success("کاربر با موفقیت ویرایش شد"),t("update:isEdit",!1)}else{const n=await J(i);e.password&&e.password.trim()!==""&&await X({user_id:n.id,doc_key:"password",doc_value:e.password}),p.success("کاربر با موفقیت ایجاد شد")}a(),t("update:visible",!1),t("success")}catch(i){console.error("Error:",i),p.error((i==null?void 0:i.message)||"خطا در ثبت اطلاعات")}};return(i,n)=>{const m=R,u=P;return $(),V(u,{visible:s.visible,width:"50rem",title:`${s.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:d,onOk:w},{default:_(()=>[y("div",Z,[c(v(j),{model:e},{default:_(()=>[y("div",K,[c(v(x),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:_(()=>[c(m,{"place-holder":"نام",value:e.first_name,"onUpdate:value":n[0]||(n[0]=o=>e.first_name=o)},null,8,["value"])]),_:1}),c(v(x),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:_(()=>[c(m,{"place-holder":"نام خانوادگی",value:e.last_name,"onUpdate:value":n[1]||(n[1]=o=>e.last_name=o)},null,8,["value"])]),_:1}),c(v(x),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:_(()=>[c(m,{"place-holder":"تلفن همراه",value:e.phone,"onUpdate:value":n[2]||(n[2]=o=>e.phone=o)},null,8,["value"])]),_:1}),c(v(x),{label:"کلمه عبور",key:"password",rules:s.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:_(()=>[c(m,{type:"password","place-holder":"کلمه عبور",value:e.password,"onUpdate:value":n[3]||(n[3]=o=>e.password=o)},null,8,["value"])]),_:1},8,["rules"]),c(v(x),{label:"تکرار کلمه عبور",key:"repeat_password",rules:s.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:_(()=>[c(m,{type:"password","place-holder":"تکرار کلمه عبور",value:e.repeat_password,"onUpdate:value":n[4]||(n[4]=o=>e.repeat_password=o)},null,8,["value"])]),_:1},8,["rules"])])]),_:1},8,["model"])])]),_:1},8,["visible","title"])}}}),te=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,customRender:r=>r.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:r=>r.record.created_at?H(r.record.created_at):"-"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],se={class:"h-full"},re=y("span",null,"افزودن کاربر",-1),ae={class:"gap-2 flex justify-center"},ie=y("span",null,"ویرایش",-1),ne=y("span",null,"حذف",-1),Ie=T({__name:"index",setup(r){const t=E(!1),s=E(!1),e=E(null),a=E(null),[l,d]=I(),w=E({columns:te,api:G}),i=async m=>{e.value=await C(m.id),s.value=!0,t.value=!0},n=async m=>{N.confirm({title:"حذف کاربر",content:`آیا مطمئن هستید که می‌خواهید کاربر "${m.first_name||""} ${m.last_name||""}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await Q(m.id),p.success("کاربر با موفقیت حذف شد"),await d()}catch(u){console.error("Error deleting user:",u),p.error("خطا در حذف کاربر")}}})};return(m,u)=>{const o=q,U=M,b=D;return $(),z("div",se,[c(b,O(w.value,{ref_key:"table",ref:a,onRegister:v(l)}),{extraHeader:_(()=>[c(U,{type:"primary",onClick:u[0]||(u[0]=g=>t.value=!0)},{default:_(()=>[re,c(o,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:_(({column:g,record:k})=>[y("div",ae,[c(v(B),{class:"cursor-pointer"},{title:_(()=>[ie]),default:_(()=>[c(q,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:h=>i(k)},null,8,["onClick"])]),_:2},1024),c(v(B),{class:"cursor-pointer"},{title:_(()=>[ne]),default:_(()=>[c(q,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:h=>n(k)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),c(ee,{visible:t.value,"onUpdate:visible":u[1]||(u[1]=g=>t.value=g),"is-edit":s.value,"onUpdate:isEdit":u[2]||(u[2]=g=>s.value=g),data:e.value,onSuccess:v(d)},null,8,["visible","is-edit","data","onSuccess"])])}}});export{Ie as default};