Files
machartaa_admin_dist/dist/assets/index-db370dfc.js
T
2025-11-06 18:53:57 +03:30

2 lines
11 KiB
JavaScript

import{_ as C}from"./BaseTable.vue_vue_type_style_index_0_lang-dc289015.js";import{_ as D}from"./button.vue_vue_type_style_index_0_lang-91e4b242.js";import{I as q}from"./Icon-a74909b8.js";import{_ as M}from"./Modal.vue_vue_type_style_index_0_lang-1396235b.js";import{_ as P}from"./BasicInput.vue_vue_type_style_index_0_lang-0ea8cc4e.js";import{a3 as R,a4 as _,d as T,t as F,h as A,a0 as p,o as $,K as S,w as c,a as y,b as u,L as v,r as E,c as V,a2 as z}from"./index-dc16a447.js";import{b as O,F as x}from"./index-86eb3b1f.js";import{u as L}from"./useBaseTable-3aeb2499.js";import{M as N}from"./index-1fdea3e3.js";import{T as B}from"./index-d6d429b9.js";import"./usePrefix-697ee667.js";import"./index-35519014.js";import"./raf-ec71f8db.js";import"./index-107e76c0.js";import"./colors-3781f3bd.js";import"./vnode-38db88ef.js";import"./useState-9008c07f.js";import"./index-db28d471.js";import"./debounce-4882126f.js";import"./styleChecker-7756749a.js";import"./SearchOutlined-2411817f.js";import"./pickAttrs-783961e6.js";import"./CheckOutlined-00877c2c.js";import"./FormItemContext-0b3cf77f.js";import"./objectDestructuringEmpty-24e23e90.js";import"./eagerComputed-2078e774.js";import"./index-63c0e239.js";import"./BasicModal.vue_vue_type_style_index_0_lang-a3ebe9dc.js";import"./index-bd1e6805.js";import"./index-fd71cf7c.js";import"./EyeOutlined-8828addc.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./usePrice-7afab779.js";import"./Col-f1d21b91.js";const j=async a=>{const{TableEngineRequest:t}=await R(()=>import("./buildSupabaseQuery-2cc8eb19.js"),["assets/buildSupabaseQuery-2cc8eb19.js","assets/index-dc16a447.js","assets/index-6be15433.css"]),s=await t(a,"users");try{if(Array.isArray(s==null?void 0:s.rows)){const e=s.rows.map(r=>({id:r.id??null,first_name:r.first_name||"",last_name:r.last_name||"",phone:r.phone||"",fname:r.first_name||"",lname:r.last_name||"",mobile:r.phone||"",...r}));return{...s,rows:e}}}catch(e){console.log("[getMembersTable] normalize error:",e)}return s},I=async a=>{const{data:t,error:s}=await _.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}},G=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 _.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 w=s.find(d=>d.id===d.user_id);w?r=w.id:r=s[0].id,t.user_id=r;let l=null,f=null,i=0;const o=10,m=new Set;for(m.add(r);i<o;){const d=await _.from("users").insert([t]).select().single();if(f=d.error,l=d.data,!f)break;if(f.code==="23505"&&f.message.includes("user_id")){if(i++,i>=o)throw new Error("خطا در ایجاد کاربر: user_id باید منحصر به فرد باشد. لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.");await new Promise(b=>setTimeout(b,300*i));const{data:n,error:U}=await _.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(!U&&n&&n.length>0){const b=n.find(h=>!m.has(h.id));if(b){r=b.id,m.add(r),t.user_id=r;continue}const g=n.find(h=>h.id===h.user_id&&!m.has(h.id));if(g){r=g.id,m.add(r),t.user_id=r;continue}const k=n.find(h=>h.id!==r);if(k){r=k.id,t.user_id=r;continue}}throw new Error("خطا در ایجاد کاربر: لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.")}else throw f}if(f)throw f;if(l&&l.id&&l.user_id!==l.id){const{data:d,error:n}=await _.from("users").update({user_id:l.id}).eq("id",l.id).select().single();if(!n&&d)return d;if(n)throw n}return l},H=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 _.from("users").update(s).eq("id",a).select().single();if(r)throw r;return e},J=async a=>{const{error:t}=await _.from("users").delete().eq("id",a);if(t)throw t;return{success:!0}},Q=async a=>{const{data:t,error:s}=await _.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},W=async a=>{const{data:t,error:s}=await _.from("user_doc_value").insert([a]).select();if(s)throw s;return t},X=async(a,t,s="password")=>{const{data:e,error:r}=await _.from("user_doc_value").select("*").eq("user_id",a).eq("doc_key",s);if(r)throw r;if(e&&e.length>0){const{data:w,error:l}=await _.from("user_doc_value").update({doc_value:t}).eq("user_id",a).eq("doc_key",s).select();if(l)throw l;return w}else{const{data:w,error:l}=await _.from("user_doc_value").insert([{user_id:a,doc_key:s,doc_value:t}]).select();if(l)throw l;return w}},Y={class:"max-h-[500px] overflow-y-auto p-3"},Z={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},K=T({__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=F({first_name:"",last_name:"",phone:"",password:"",repeat_password:""}),r=()=>{e.first_name="",e.last_name="",e.phone="",e.password="",e.repeat_password=""};A(()=>s.visible,i=>{i&&(s.isEdit&&s.data?w():r())});const w=async()=>{try{r();const i=await I(s.data.id);e.first_name=i.first_name||"",e.last_name=i.last_name||"",e.phone=i.phone||"";try{const o=await Q(i.id);e.password="",e.repeat_password=""}catch{e.password="",e.repeat_password=""}}catch(i){console.error("Error loading data:",i),p.error("خطا در بارگذاری اطلاعات")}},l=()=>{r(),t("update:visible",!1),t("update:isEdit",!1)},f=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 o=await H(s.data.id,i);e.password&&e.password.trim()!==""&&await X(o.id,e.password,"password"),p.success("کاربر با موفقیت ویرایش شد"),t("update:isEdit",!1)}else{const o=await G(i);e.password&&e.password.trim()!==""&&await W({user_id:o.id,doc_key:"password",doc_value:e.password}),p.success("کاربر با موفقیت ایجاد شد")}r(),t("update:visible",!1),t("success")}catch(i){console.error("Error:",i),p.error((i==null?void 0:i.message)||"خطا در ثبت اطلاعات")}};return(i,o)=>{const m=P,d=M;return $(),S(d,{visible:s.visible,width:"50rem",title:`${s.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:l,onOk:f},{default:c(()=>[y("div",Y,[u(v(O),{model:e},{default:c(()=>[y("div",Z,[u(v(x),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:c(()=>[u(m,{"place-holder":"نام",value:e.first_name,"onUpdate:value":o[0]||(o[0]=n=>e.first_name=n)},null,8,["value"])]),_:1}),u(v(x),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:c(()=>[u(m,{"place-holder":"نام خانوادگی",value:e.last_name,"onUpdate:value":o[1]||(o[1]=n=>e.last_name=n)},null,8,["value"])]),_:1}),u(v(x),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:c(()=>[u(m,{"place-holder":"تلفن همراه",value:e.phone,"onUpdate:value":o[2]||(o[2]=n=>e.phone=n)},null,8,["value"])]),_:1}),u(v(x),{label:"کلمه عبور",key:"password",rules:s.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:c(()=>[u(m,{type:"password","place-holder":"کلمه عبور",value:e.password,"onUpdate:value":o[3]||(o[3]=n=>e.password=n)},null,8,["value"])]),_:1},8,["rules"]),u(v(x),{label:"تکرار کلمه عبور",key:"repeat_password",rules:s.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:c(()=>[u(m,{type:"password","place-holder":"تکرار کلمه عبور",value:e.repeat_password,"onUpdate:value":o[4]||(o[4]=n=>e.repeat_password=n)},null,8,["value"])]),_:1},8,["rules"])])]),_:1},8,["model"])])]),_:1},8,["visible","title"])}}}),ee=[{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:"action",key:"action",slot:"action",filterable:!1}],te={class:"h-full"},se=y("span",null,"افزودن کاربر",-1),re={class:"gap-2 flex justify-center"},ae=y("span",null,"ویرایش",-1),ie=y("span",null,"حذف",-1),ze=T({__name:"index",setup(a){const t=E(!1),s=E(!1),e=E(null),r=E(null),[w,l]=L(),f=E({columns:ee,api:j}),i=async m=>{e.value=await I(m.id),s.value=!0,t.value=!0},o=async m=>{N.confirm({title:"حذف کاربر",content:`آیا مطمئن هستید که می‌خواهید کاربر "${m.first_name||""} ${m.last_name||""}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await J(m.id),p.success("کاربر با موفقیت حذف شد"),await l()}catch(d){console.error("Error deleting user:",d),p.error("خطا در حذف کاربر")}}})};return(m,d)=>{const n=q,U=D,b=C;return $(),V("div",te,[u(b,z(f.value,{ref_key:"table",ref:r,onRegister:v(w)}),{extraHeader:c(()=>[u(U,{type:"primary",onClick:d[0]||(d[0]=g=>t.value=!0)},{default:c(()=>[se,u(n,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:c(({column:g,record:k})=>[y("div",re,[u(v(B),{class:"cursor-pointer"},{title:c(()=>[ae]),default:c(()=>[u(q,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:h=>i(k)},null,8,["onClick"])]),_:2},1024),u(v(B),{class:"cursor-pointer"},{title:c(()=>[ie]),default:c(()=>[u(q,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:h=>o(k)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),u(K,{visible:t.value,"onUpdate:visible":d[1]||(d[1]=g=>t.value=g),"is-edit":s.value,"onUpdate:isEdit":d[2]||(d[2]=g=>s.value=g),data:e.value,onSuccess:v(l)},null,8,["visible","is-edit","data","onSuccess"])])}}});export{ze as default};