2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{_ as Y}from"./BasicModal.vue_vue_type_style_index_0_lang-234112c9.js";import{_ as K,u as Q}from"./useBaseTable-e60ec4b8.js";import{_ as X}from"./button.vue_vue_type_style_index_0_lang-d41fbf64.js";import{I as E}from"./Icon-78d04a1c.js";import{_ as R}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-afa5f2fe.js";import{t as U}from"./useDataTime-0f66fcd9.js";import{_ as ee}from"./CustomTag.vue_vue_type_script_setup_true_lang-74871e1a.js";import{u as te}from"./usePrice-bc935b83.js";import{b as n,_ as ae,Y as b,d as ie,g as p,r as ne,o as S,c as B,a as y,w as u,e as q,j as D,H as oe,i as le,D as f}from"./index-c3a83709.js";import{M as se,_ as ue}from"./index-3cee424d.js";import{I as re}from"./index-588aa217.js";import{R as ce,a as de}from"./index-4987f49a.js";import{_ as me,F as _e}from"./index-42c94377.js";import{I as fe}from"./index-8d50ceef.js";import{T as P}from"./isSymbol-933af901.js";import"./index-55899d99.js";import"./vnode-13aafe4d.js";import"./_plugin-vue_export-helper-9424d566.js";import"./updateLocale-ff27ed8b.js";import"./useState-edde538a.js";import"./index-ce887100.js";import"./toArray-fdd672d9.js";import"./FormItemContext-89798113.js";import"./pickAttrs-948566e5.js";import"./lodash-35a3e948.js";import"./index-795d795f.js";import"./isNumeric-3f69e2aa.js";import"./index-1b40f734.js";import"./DialogWrap-99990cc9.js";import"./styleChecker-5d75eaf5.js";import"./isPlainObject-e4dd5edb.js";import"./index-c0c82e0d.js";import"./css-aae66f86.js";import"./_flatRest-09ea8109.js";import"./Col-f98af73f.js";const pe=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"کد",dataIndex:"code",key:"code",width:120},{title:"مقدار تخفیف",dataIndex:"amount",key:"amount",width:130,customRender:e=>{const a=e.record;return a.is_percent?`${a.amount}٪`:`${te(a.amount,!0,"")} تومان`}},{title:"استفاده",dataIndex:"usage_count",key:"usage_count",width:110,customRender:e=>{const a=e.record,l=a.usage_count??0,r=a.usage_limit;return r!=null?`${l} / ${r}`:`${l}`}},{title:"شروع",dataIndex:"start_date",key:"start_date",width:120,customRender:e=>U(e.record.start_date)},{title:"پایان",dataIndex:"end_date",key:"end_date",width:120,customRender:e=>U(e.record.end_date)},{title:"وضعیت",dataIndex:"active",key:"active",width:100,customRender:e=>n("div",{class:"flex justify-center"},[n(ee,{class:"px-3 font-bold py-1",textColor:e!=null&&e.record.active?"#65a30d":"#dc2626",bgColor:e!=null&&e.record.active?"#ecfccb":"#fee2e2"},{default:()=>[e!=null&&e.record.active?"فعال":"غیرفعال"]})])},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];function ve(e){if(!e)return new Date().toISOString();const a=e.replace(/\//g,"-");return new Date(`${a}T00:00:00.000Z`).toISOString()}function ge(e){if(!e)return new Date().toISOString();const a=e.replace(/\//g,"-");return new Date(`${a}T23:59:59.999Z`).toISOString()}function we(e){return e?e.slice(0,10).replace(/-/g,"/"):""}function x(e,a,l,r=!0){var d;const o={title:((d=e.title)==null?void 0:d.trim())??"",code:(e.code??"").trim().toUpperCase(),amount:Number(e.amount??0),is_percent:e.is_percent??!0,active:e.active??!0,use_code:!0,type:"code",start_date:ve(a),end_date:ge(l)};return r&&(o.usage_limit=e.usage_limit==null?null:Number(e.usage_limit),o.user_usage_limit=e.user_usage_limit==null?null:Number(e.user_usage_limit)),o}function O(e){var a;return(e==null?void 0:e.code)==="PGRST204"||(((a=e==null?void 0:e.message)==null?void 0:a.includes("schema cache"))??!1)}async function V(e,a){let l=b.from("discounts").select("id").eq("code",e).eq("use_code",!0);a!=null&&(l=l.neq("id",a));const{data:r,error:o}=await l.maybeSingle();if(o)throw o;if(r!=null&&r.id)throw new Error("این کد تخفیف قبلاً ثبت شده است")}async function be(e){const{TableEngineShopRequest:a}=await ae(()=>import("./buildSupabaseQuery-693418f9.js"),["assets/buildSupabaseQuery-693418f9.js","assets/index-c3a83709.js","assets/index-6a736606.css","assets/supabaseTableQuery-9069679c.js"]),l={...e,order:e.order??"-id",filters:[...e.filters??[],{field:"use_code",op:"eq",value:!0,hidden:!0}]};return a(l,"discounts")}async function he(e){const{data:a,error:l}=await b.from("discounts").select("*").eq("id",e).single();if(l)throw l;return a}async function ye(e,a,l){const r=x(e,a,l);if(!r.code||!r.title)throw new Error("عنوان و کد تخفیف الزامی است");if(Number(r.amount)<=0)throw new Error("مقدار تخفیف باید بیشتر از صفر باشد");await V(String(r.code));let o={...r,usage_count:0},{data:d,error:c}=await b.from("discounts").insert(o).select("*").single();if(O(c)&&(o=x(e,a,l,!1),{data:d,error:c}=await b.from("discounts").insert(o).select("*").single()),c)throw c;return d}async function ke(e,a,l,r){let o=x(a,l,r);if(!o.code||!o.title)throw new Error("عنوان و کد تخفیف الزامی است");if(Number(o.amount)<=0)throw new Error("مقدار تخفیف باید بیشتر از صفر باشد");await V(String(o.code),e);let{data:d,error:c}=await b.from("discounts").update(o).eq("id",e).select("*").single();if(O(c)&&(o=x(a,l,r,!1),{data:d,error:c}=await b.from("discounts").update(o).eq("id",e).select("*").single()),c)throw c;return d}async function xe(e){const{error:a}=await b.from("discounts").delete().eq("id",e).eq("use_code",!0);if(a)throw a}function N(e){return we(e)}const Ie={class:"flex justify-between items-center mb-4"},Se=y("h2",null,"کدهای تخفیف",-1),qe={class:"gap-2 flex justify-center"},De=y("span",null,"حذف",-1),Te=y("span",null,"ویرایش",-1),$e={key:0,class:"min-h-[280px]"},dt=ie({__name:"index",setup(e){const[a,l]=Q(),r=p({columns:pe,api:be,defaultPageLimit:20}),o=p(!1),d=p(!1),c=p(null),v=p(!1),k=p(!1),g=p(""),w=p(""),i=ne({title:"",code:"",amount:10,is_percent:!0,active:!0,usage_limit:null,user_usage_limit:1});function T(){Object.assign(i,{title:"",code:"",amount:10,is_percent:!0,active:!0,usage_limit:null,user_usage_limit:1}),g.value="",w.value=""}function j(){T(),d.value=!1,c.value=null,v.value=!1,o.value=!0}function M(){o.value=!1,v.value=!1,k.value=!1}async function F(){var m,t;if(!(v.value||k.value)){if(!((m=i.title)!=null&&m.trim())||!((t=i.code)!=null&&t.trim())){f.warning("عنوان و کد تخفیف الزامی است");return}if(!g.value||!w.value){f.warning("تاریخ شروع و پایان را وارد کنید");return}if(!i.amount||i.amount<=0){f.warning("مقدار تخفیف باید بیشتر از صفر باشد");return}k.value=!0;try{d.value&&c.value!=null?(await ke(c.value,i,g.value,w.value),f.success("کد تخفیف با موفقیت ویرایش شد")):(await ye(i,g.value,w.value),f.success("کد تخفیف با موفقیت ایجاد شد")),o.value=!1,await l()}catch(h){f.error((h==null?void 0:h.message)||"خطا در ذخیره کد تخفیف")}finally{k.value=!1}}}async function L(m){if(m.id){T(),d.value=!0,c.value=m.id,o.value=!0,v.value=!0;try{const t=await he(m.id);i.title=t.title,i.code=t.code,i.amount=t.amount,i.is_percent=t.is_percent,i.active=t.active,i.usage_limit=t.usage_limit,i.user_usage_limit=t.user_usage_limit,g.value=N(t.start_date),w.value=N(t.end_date)}catch(t){o.value=!1,f.error((t==null?void 0:t.message)||"خطا در بارگذاری کد تخفیف")}finally{v.value=!1}}}function Z(m){se.confirm({title:"حذف کد تخفیف",content:`آیا از حذف کد «${m.code}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",okButtonProps:{danger:!0},async onOk(){try{await xe(m.id),f.success("کد تخفیف حذف شد"),await l()}catch(t){f.error((t==null?void 0:t.message)||"خطا در حذف کد تخفیف")}}})}return(m,t)=>{const h=X,z=K,$=re,_=me,C=ce,A=de,I=fe,G=ue,H=_e,J=Y;return S(),B("div",null,[y("div",Ie,[Se,n(h,{type:"primary",onClick:j},{default:u(()=>[q("افزودن کد تخفیف")]),_:1})]),n(z,oe(r.value,{ref:"table",onRegister:D(a)}),{action:u(({record:s})=>[y("div",qe,[n(D(P),{class:"cursor-pointer"},{title:u(()=>[De]),default:u(()=>[n(E,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:W=>Z(s)},null,8,["onClick"])]),_:2},1024),n(D(P),{class:"cursor-pointer"},{title:u(()=>[Te]),default:u(()=>[n(E,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:W=>L(s)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(J,{visible:o.value,"onUpdate:visible":t[9]||(t[9]=s=>o.value=s),title:d.value?"ویرایش کد تخفیف":"افزودن کد تخفیف",loading:v.value,"destroy-on-close":"",onOk:F,onClose:M,width:"720px"},{default:u(()=>[v.value?(S(),B("div",$e)):(S(),le(H,{key:1,layout:"vertical",class:"grid grid-cols-1 md:grid-cols-2 gap-3"},{default:u(()=>[n(_,{label:"عنوان",required:"",class:"md:col-span-2"},{default:u(()=>[n($,{value:i.title,"onUpdate:value":t[0]||(t[0]=s=>i.title=s),placeholder:"مثال: تخفیف نوروز"},null,8,["value"])]),_:1}),n(_,{label:"کد تخفیف",required:""},{default:u(()=>[n($,{value:i.code,"onUpdate:value":t[1]||(t[1]=s=>i.code=s),placeholder:"مثال: NOWRUZ1405",style:{"text-transform":"uppercase"}},null,8,["value"])]),_:1}),n(_,{label:"نوع تخفیف"},{default:u(()=>[n(A,{value:i.is_percent,"onUpdate:value":t[2]||(t[2]=s=>i.is_percent=s)},{default:u(()=>[n(C,{value:!0},{default:u(()=>[q("درصدی")]),_:1}),n(C,{value:!1},{default:u(()=>[q("مبلغی (تومان)")]),_:1})]),_:1},8,["value"])]),_:1}),n(_,{label:i.is_percent?"درصد تخفیف":"مبلغ تخفیف (تومان)",required:""},{default:u(()=>[n(I,{value:i.amount,"onUpdate:value":t[3]||(t[3]=s=>i.amount=s),style:{width:"100%"},min:1,max:i.is_percent?100:void 0,placeholder:"مقدار تخفیف"},null,8,["value","max"])]),_:1},8,["label"]),n(_,{label:"تاریخ شروع",required:""},{default:u(()=>[n(R,{value:g.value,"onUpdate:value":t[4]||(t[4]=s=>g.value=s)},null,8,["value"])]),_:1}),n(_,{label:"تاریخ پایان",required:""},{default:u(()=>[n(R,{value:w.value,"onUpdate:value":t[5]||(t[5]=s=>w.value=s)},null,8,["value"])]),_:1}),n(_,{label:"محدودیت کل استفاده"},{default:u(()=>[n(I,{value:i.usage_limit,"onUpdate:value":t[6]||(t[6]=s=>i.usage_limit=s),style:{width:"100%"},min:1,placeholder:"خالی = نامحدود"},null,8,["value"])]),_:1}),n(_,{label:"محدودیت استفاده هر کاربر"},{default:u(()=>[n(I,{value:i.user_usage_limit,"onUpdate:value":t[7]||(t[7]=s=>i.user_usage_limit=s),style:{width:"100%"},min:1,placeholder:"خالی = نامحدود"},null,8,["value"])]),_:1}),n(_,{label:"فعال"},{default:u(()=>[n(G,{checked:i.active,"onUpdate:checked":t[8]||(t[8]=s=>i.active=s)},null,8,["checked"])]),_:1})]),_:1}))]),_:1},8,["visible","title","loading"])])}}});export{dt as default};
|