Files
machartaa_admin_dist/dist/assets/index-73373978.js
T
2025-12-05 00:54:14 +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{_ as F}from"./BaseTable.vue_vue_type_style_index_0_lang-1f6ecc5d.js";import{_ as R}from"./button.vue_vue_type_style_index_0_lang-55d2b252.js";import{I as U,u as O}from"./Icon-8d3280fe.js";import{M as S}from"./BasicModal.vue_vue_type_style_index_0_lang-6383d729.js";import{d as D,g as V,o as v,K as q,w as p,a as y,bj as $,N as T,c as x,O as I,b as c,a2 as M,L as h,aJ as j,a3 as z,a4 as w,t as L,h as G,a0 as f,r as C}from"./index-d2d57467.js";import{_ as H}from"./BasicInput.vue_vue_type_style_index_0_lang-63c96304.js";import{b as J,F as B}from"./index-2621c75f.js";import{u as Q}from"./useBaseTable-3aeb2499.js";import{T as N}from"./styleChecker-f8db9dd1.js";import"./_plugin-vue_export-helper-d0931117.js";import"./vnode-78cb12ff.js";import"./useState-b367b6d6.js";import"./index-6a84bb1d.js";import"./index-95f4305d.js";import"./usePrice-7afab779.js";import"./Col-e6f89ff6.js";const W={class:"flex items-center justify-between"},X={key:1},Y={key:2},Z={class:"flex items-center gap-2"},K={class:"flex text-gray-400 items-center gap-2"},ee={key:0,class:"flex items-center gap-2"},te={key:0},se={key:0},ae=D({__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(r){const t=r,{prefixCls:s}=O("base-model"),{emit:e}=j(),a=V(()=>`${s} ${t.wrapClassName}`);function _(o){e("cancel",o),e("update:visible",!1)}function l(o){e("ok",o)}return(o,n)=>{const i=R,u=S;return v(),q(u,{centered:t.centered,wrapClassName:h(a),"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,I(t.title),1)):(v(),x("span",Y," "))]),y("div",Z,[y("div",K,[c(U,{icon:"vuesax-linear:add",class:"rotate-45 cursor-pointer",onClick:_})])])])]),footer:p(()=>[o.$slots.footer?T("",!0):(v(),x("div",ee,[t.showOk?(v(),q(i,M({key:0,type:t.okType},o.okButtonProps,{onClick:l}),{default:p(()=>[o.$slots.okText?$(o.$slots,"okText",{key:1}):(v(),x("span",te,I(t.okText),1))]),_:3},16,["type"])):T("",!0),t.showCancel?(v(),q(i,M({key:1},o.cancelButtonProps,{onClick:_}),{default:p(()=>[o.$slots.cancelText?$(o.$slots,"cancelText",{key:1}):(v(),x("span",se,I(t.cancelText),1))]),_:3},16)):T("",!0)])),$(o.$slots,"footer")]),default:p(()=>[$(o.$slots,"default")]),_:3},8,["centered","wrapClassName","mask-closable"])}}});const re=async r=>{const{TableEngineRequest:t}=await z(()=>import("./buildSupabaseQuery-68dfd2a3.js"),["assets/buildSupabaseQuery-68dfd2a3.js","assets/index-d2d57467.js","assets/index-7f144acc.css"]),s=await t(r,"users");try{if(Array.isArray(s==null?void 0:s.rows)){const e=s.rows.map(a=>({id:a.id??null,first_name:a.first_name||"",last_name:a.last_name||"",phone:a.phone||"",fname:a.first_name||"",lname:a.last_name||"",mobile:a.phone||"",...a}));return{...s,rows:e}}}catch(e){console.log("[getMembersTable] normalize error:",e)}return s},A=async r=>{const{data:t,error:s}=await w.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}},oe=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 w.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 _=s.find(m=>m.id===m.user_id);_?a=_.id:a=s[0].id,t.user_id=a;let l=null,o=null,n=0;const i=10,u=new Set;for(u.add(a);n<i;){const m=await w.from("users").insert([t]).select().single();if(o=m.error,l=m.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:d,error:P}=await w.from("users").select("id, user_id").order("created_at",{ascending:!1}).limit(100);if(!P&&d&&d.length>0){const b=d.find(k=>!u.has(k.id));if(b){a=b.id,u.add(a),t.user_id=a;continue}const g=d.find(k=>k.id===k.user_id&&!u.has(k.id));if(g){a=g.id,u.add(a),t.user_id=a;continue}const E=d.find(k=>k.id!==a);if(E){a=E.id,t.user_id=a;continue}}throw new Error("خطا در ایجاد کاربر: لطفاً چند لحظه صبر کنید و دوباره تلاش کنید.")}else throw o}if(o)throw o;if(l&&l.id&&l.user_id!==l.id){const{data:m,error:d}=await w.from("users").update({user_id:l.id}).eq("id",l.id).select().single();if(!d&&m)return m;if(d)throw d}return l},ne=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 w.from("users").update(s).eq("id",r).select().single();if(a)throw a;return e},ie=async r=>{const{error:t}=await w.from("users").delete().eq("id",r);if(t)throw t;return{success:!0}},le=async r=>{const{data:t,error:s}=await w.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},de=async r=>{const{data:t,error:s}=await w.from("user_doc_value").insert([r]).select();if(s)throw s;return t},ue=async(r,t,s="password")=>{const{data:e,error:a}=await w.from("user_doc_value").select("*").eq("user_id",r).eq("doc_key",s);if(a)throw a;if(e&&e.length>0){const{data:_,error:l}=await w.from("user_doc_value").update({doc_value:t}).eq("user_id",r).eq("doc_key",s).select();if(l)throw l;return _}else{const{data:_,error:l}=await w.from("user_doc_value").insert([{user_id:r,doc_key:s,doc_value:t}]).select();if(l)throw l;return _}},ce={class:"max-h-[500px] overflow-y-auto p-3"},me={class:"grid grid-cols-1 md:grid-cols-2 md:gap-4"},pe=D({__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=L({first_name:"",last_name:"",phone:"",password:"",repeat_password:""}),a=()=>{e.first_name="",e.last_name="",e.phone="",e.password="",e.repeat_password=""};G(()=>s.visible,n=>{n&&(s.isEdit&&s.data?_():a())});const _=async()=>{try{a();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 le(n.id);e.password="",e.repeat_password=""}catch{e.password="",e.repeat_password=""}}catch(n){console.error("Error loading data:",n),f.error("خطا در بارگذاری اطلاعات")}},l=()=>{a(),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 ne(s.data.id,n);e.password&&e.password.trim()!==""&&await ue(i.id,e.password,"password"),f.success("کاربر با موفقیت ویرایش شد"),t("update:isEdit",!1)}else{const i=await oe(n);e.password&&e.password.trim()!==""&&await de({user_id:i.id,doc_key:"password",doc_value:e.password}),f.success("کاربر با موفقیت ایجاد شد")}a(),t("update:visible",!1),t("success")}catch(n){console.error("Error:",n),f.error((n==null?void 0:n.message)||"خطا در ثبت اطلاعات")}};return(n,i)=>{const u=H,m=ae;return v(),q(m,{visible:s.visible,width:"50rem",title:`${s.isEdit?"ویرایش":"افزودن"} کاربر`,okText:"ثبت",onCancel:l,onOk:o},{default:p(()=>[y("div",ce,[c(h(J),{model:e},{default:p(()=>[y("div",me,[c(h(B),{label:"نام",key:"first_name",rules:[{required:!0,message:"نام الزامی است"}]},{default:p(()=>[c(u,{"place-holder":"نام",value:e.first_name,"onUpdate:value":i[0]||(i[0]=d=>e.first_name=d)},null,8,["value"])]),_:1}),c(h(B),{label:"نام خانوادگی",key:"last_name",rules:[{required:!0,message:"نام خانوادگی الزامی است"}]},{default:p(()=>[c(u,{"place-holder":"نام خانوادگی",value:e.last_name,"onUpdate:value":i[1]||(i[1]=d=>e.last_name=d)},null,8,["value"])]),_:1}),c(h(B),{label:"تلفن همراه",key:"phone",rules:[{required:!0,message:"تلفن همراه الزامی است"}]},{default:p(()=>[c(u,{"place-holder":"تلفن همراه",value:e.phone,"onUpdate:value":i[2]||(i[2]=d=>e.phone=d)},null,8,["value"])]),_:1}),c(h(B),{label:"کلمه عبور",key:"password",rules:s.isEdit?[]:[{required:!0,message:"کلمه عبور الزامی است"}]},{default:p(()=>[c(u,{type:"password","place-holder":"کلمه عبور",value:e.password,"onUpdate:value":i[3]||(i[3]=d=>e.password=d)},null,8,["value"])]),_:1},8,["rules"]),c(h(B),{label:"تکرار کلمه عبور",key:"repeat_password",rules:s.isEdit?[]:[{required:!0,message:"تکرار کلمه عبور الزامی است"}]},{default:p(()=>[c(u,{type:"password","place-holder":"تکرار کلمه عبور",value:e.repeat_password,"onUpdate:value":i[4]||(i[4]=d=>e.repeat_password=d)},null,8,["value"])]),_:1},8,["rules"])])]),_:1},8,["model"])])]),_:1},8,["visible","title"])}}}),_e=[{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:"action",key:"action",slot:"action",filterable:!1}],fe={class:"h-full"},we=y("span",null,"افزودن کاربر",-1),he={class:"gap-2 flex justify-center"},ve=y("span",null,"ویرایش",-1),ye=y("span",null,"حذف",-1),Re=D({__name:"index",setup(r){const t=C(!1),s=C(!1),e=C(null),a=C(null),[_,l]=Q(),o=C({columns:_e,api:re}),n=async u=>{e.value=await A(u.id),s.value=!0,t.value=!0},i=async u=>{S.confirm({title:"حذف کاربر",content:`آیا مطمئن هستید که می‌خواهید کاربر "${u.first_name||""} ${u.last_name||""}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await ie(u.id),f.success("کاربر با موفقیت حذف شد"),await l()}catch(m){console.error("Error deleting user:",m),f.error("خطا در حذف کاربر")}}})};return(u,m)=>{const d=U,P=R,b=F;return v(),x("div",fe,[c(b,M(o.value,{ref_key:"table",ref:a,onRegister:h(_)}),{extraHeader:p(()=>[c(P,{type:"primary",onClick:m[0]||(m[0]=g=>t.value=!0)},{default:p(()=>[we,c(d,{icon:"vuesax-linear:user",size:"17"})]),_:1})]),action:p(({column:g,record:E})=>[y("div",he,[c(h(N),{class:"cursor-pointer"},{title:p(()=>[ve]),default:p(()=>[c(U,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:k=>n(E)},null,8,["onClick"])]),_:2},1024),c(h(N),{class:"cursor-pointer"},{title:p(()=>[ye]),default:p(()=>[c(U,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:k=>i(E)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),c(pe,{visible:t.value,"onUpdate:visible":m[1]||(m[1]=g=>t.value=g),"is-edit":s.value,"onUpdate:isEdit":m[2]||(m[2]=g=>s.value=g),data:e.value,onSuccess:h(l)},null,8,["visible","is-edit","data","onSuccess"])])}}});export{Re as default};