Files
2026-10-20 16:52:05 +03:30

2 lines
11 KiB
JavaScript

import{_ as X}from"./BasicModal.vue_vue_type_style_index_0_lang-aed8f5e4.js";import{_ as Y,u as ee}from"./useBaseTable-e7a67916.js";import{_ as te}from"./button.vue_vue_type_style_index_0_lang-f90e25b2.js";import{I as C}from"./Icon-29e38d16.js";import{_ as $}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-d179374c.js";import{t as E}from"./useDataTime-6e234adb.js";import{_ as ae}from"./CustomTag.vue_vue_type_script_setup_true_lang-9cafeb14.js";import{u as ie}from"./usePrice-bc935b83.js";import{e as i,_ as ne,Z as oe,O as P,P as B,Q as le,U as se,d as ue,i as p,h as re,o as I,c as q,b,w as r,f as R,l as S,R as ce,k as de,H as _}from"./index-1ba0f9ec.js";import{M as me,_ as _e}from"./index-ec322234.js";import{I as pe}from"./index-aafc0fe2.js";import{R as fe,b as ve}from"./index-e22339b6.js";import{_ as ge,F as we}from"./index-83b891e2.js";import{I as be}from"./index-f847a367.js";import{T as N}from"./isSymbol-355a1404.js";import"./index-4bff02a6.js";import"./vnode-c4e67237.js";import"./_plugin-vue_export-helper-31e07528.js";import"./updateLocale-a8654270.js";import"./index-8f2b7e91.js";import"./shallowequal-e0d9eafb.js";import"./useState-dcd360f8.js";import"./useMemo-ee45fb46.js";import"./FormItemContext-33ef1221.js";import"./omit-f5d28cd3.js";import"./lodash-27f814e6.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-36a1ea6e.js";import"./index-c8127d4e.js";import"./Badge-8a8eeb58.js";import"./isNumeric-3f69e2aa.js";import"./index-a8579634.js";import"./index-73cafb1e.js";import"./index-e0664925.js";import"./toArray-41940180.js";import"./SearchOutlined-95278fe5.js";import"./pickAttrs-0ddf9a54.js";import"./index-3f6d5caa.js";import"./isMobile-e2e89480.js";import"./index-175b83cf.js";import"./DialogWrap-394d7eb0.js";import"./styleChecker-19ce40ea.js";import"./isPlainObject-e945bc1f.js";import"./index-876da578.js";import"./LeftOutlined-93011b30.js";import"./css-aae66f86.js";import"./_flatRest-7877cdf8.js";import"./Col-f8806a10.js";const he=[{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 n=e.record;return n.is_percent?`${n.amount}٪`:`${ie(n.amount,!0,"")} تومان`}},{title:"استفاده",dataIndex:"usage_count",key:"usage_count",width:110,customRender:e=>{const n=e.record,u=n.usage_count??0,l=n.usage_limit;return l!=null?`${u} / ${l}`:`${u}`}},{title:"شروع",dataIndex:"start_date",key:"start_date",width:120,customRender:e=>E(e.record.start_date)},{title:"پایان",dataIndex:"end_date",key:"end_date",width:120,customRender:e=>E(e.record.end_date)},{title:"وضعیت",dataIndex:"active",key:"active",width:100,customRender:e=>i("div",{class:"flex justify-center"},[i(ae,{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 ye(e){if(!e)return new Date().toISOString();const n=e.replace(/\//g,"-");return new Date(`${n}T00:00:00.000Z`).toISOString()}function ke(e){if(!e)return new Date().toISOString();const n=e.replace(/\//g,"-");return new Date(`${n}T23:59:59.999Z`).toISOString()}function xe(e){return e?e.slice(0,10).replace(/-/g,"/"):""}function k(e,n,u,l=!0){var c;const o={title:((c=e.title)==null?void 0:c.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:ye(n),end_date:ke(u)};return l&&(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 V(e){var u,l;const n=String((e==null?void 0:e.message)||((l=(u=e==null?void 0:e.response)==null?void 0:u.data)==null?void 0:l.message)||"");return n.includes("schema cache")||n.includes("PGRST204")}function F(e){const{usage_limit:n,user_usage_limit:u,usage_count:l,...o}=e;return o}async function M(e,n){const l=((await se("discounts",{filters:[{field:"code",op:"eq",value:e},{field:"use_code",op:"eq",value:!0}],limit:5,page:1})).rows||[]).find(o=>o.id!==n);if(l!=null&&l.id)throw new Error("این کد تخفیف قبلاً ثبت شده است")}async function Ie(e){const{TableEngineShopRequest:n}=await ne(()=>import("./buildSupabaseQuery-2323f568.js"),["assets/buildSupabaseQuery-2323f568.js","assets/index-1ba0f9ec.js","assets/index-cb402307.css"]),u={...e,order:e.order??"-id",filters:[...e.filters??[],{field:"use_code",op:"eq",value:!0,hidden:!0}]};return n(u,"discounts")}async function Re(e){return await oe("discounts",e)}async function Se(e,n,u){const l=k(e,n,u);if(!l.code||!l.title)throw new Error("عنوان و کد تخفیف الزامی است");if(Number(l.amount)<=0)throw new Error("مقدار تخفیف باید بیشتر از صفر باشد");await M(String(l.code));try{return await P("discounts",{...l,usage_count:0})}catch(o){if(!V(o))throw o;return await P("discounts",F(k(e,n,u,!1)))}}async function Te(e,n,u,l){let o=k(n,u,l);if(!o.code||!o.title)throw new Error("عنوان و کد تخفیف الزامی است");if(Number(o.amount)<=0)throw new Error("مقدار تخفیف باید بیشتر از صفر باشد");await M(String(o.code),e);try{return await B("discounts",e,o)}catch(c){if(!V(c))throw c;return o=F(k(n,u,l,!1)),await B("discounts",e,o)}}async function De(e){await le("discounts",e)}function O(e){return xe(e)}const Ue={class:"flex justify-between items-center mb-4"},Ce=b("h2",null,"کدهای تخفیف",-1),$e={class:"gap-2 flex justify-center"},Ee=b("span",null,"حذف",-1),Pe=b("span",null,"ویرایش",-1),Be={key:0,class:"min-h-[280px]"},Dt=ue({__name:"index",setup(e){const[n,u]=ee(),l=p({columns:he,api:Ie,defaultPageLimit:20}),o=p(!1),c=p(!1),h=p(null),f=p(!1),y=p(!1),v=p(""),g=p(""),a=re({title:"",code:"",amount:10,is_percent:!0,active:!0,usage_limit:null,user_usage_limit:1});function T(){Object.assign(a,{title:"",code:"",amount:10,is_percent:!0,active:!0,usage_limit:null,user_usage_limit:1}),v.value="",g.value=""}function j(){T(),c.value=!1,h.value=null,f.value=!1,o.value=!0}function Z(){o.value=!1,f.value=!1,y.value=!1}async function L(){var d,t;if(!(f.value||y.value)){if(!((d=a.title)!=null&&d.trim())||!((t=a.code)!=null&&t.trim())){_.warning("عنوان و کد تخفیف الزامی است");return}if(!v.value||!g.value){_.warning("تاریخ شروع و پایان را وارد کنید");return}if(!a.amount||a.amount<=0){_.warning("مقدار تخفیف باید بیشتر از صفر باشد");return}y.value=!0;try{c.value&&h.value!=null?(await Te(h.value,a,v.value,g.value),_.success("کد تخفیف با موفقیت ویرایش شد")):(await Se(a,v.value,g.value),_.success("کد تخفیف با موفقیت ایجاد شد")),o.value=!1,await u()}catch(w){_.error((w==null?void 0:w.message)||"خطا در ذخیره کد تخفیف")}finally{y.value=!1}}}async function z(d){if(d.id){T(),c.value=!0,h.value=d.id,o.value=!0,f.value=!0;try{const t=await Re(d.id);a.title=t.title,a.code=t.code,a.amount=t.amount,a.is_percent=t.is_percent,a.active=t.active,a.usage_limit=t.usage_limit,a.user_usage_limit=t.user_usage_limit,v.value=O(t.start_date),g.value=O(t.end_date)}catch(t){o.value=!1,_.error((t==null?void 0:t.message)||"خطا در بارگذاری کد تخفیف")}finally{f.value=!1}}}function A(d){me.confirm({title:"حذف کد تخفیف",content:`آیا از حذف کد «${d.code}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",okButtonProps:{danger:!0},async onOk(){try{await De(d.id),_.success("کد تخفیف حذف شد"),await u()}catch(t){_.error((t==null?void 0:t.message)||"خطا در حذف کد تخفیف")}}})}return(d,t)=>{const w=te,G=Y,D=pe,m=ge,U=fe,H=ve,x=be,J=_e,Q=we,W=X;return I(),q("div",null,[b("div",Ue,[Ce,i(w,{type:"primary",onClick:j},{default:r(()=>[R("افزودن کد تخفیف")]),_:1})]),i(G,ce(l.value,{ref:"table",onRegister:S(n)}),{action:r(({record:s})=>[b("div",$e,[i(S(N),{class:"cursor-pointer"},{title:r(()=>[Ee]),default:r(()=>[i(C,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:K=>A(s)},null,8,["onClick"])]),_:2},1024),i(S(N),{class:"cursor-pointer"},{title:r(()=>[Pe]),default:r(()=>[i(C,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:K=>z(s)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),i(W,{visible:o.value,"onUpdate:visible":t[9]||(t[9]=s=>o.value=s),title:c.value?"ویرایش کد تخفیف":"افزودن کد تخفیف",loading:f.value,"destroy-on-close":"",onOk:L,onClose:Z,width:"720px"},{default:r(()=>[f.value?(I(),q("div",Be)):(I(),de(Q,{key:1,layout:"vertical",class:"grid grid-cols-1 md:grid-cols-2 gap-3"},{default:r(()=>[i(m,{label:"عنوان",required:"",class:"md:col-span-2"},{default:r(()=>[i(D,{value:a.title,"onUpdate:value":t[0]||(t[0]=s=>a.title=s),placeholder:"مثال: تخفیف نوروز"},null,8,["value"])]),_:1}),i(m,{label:"کد تخفیف",required:""},{default:r(()=>[i(D,{value:a.code,"onUpdate:value":t[1]||(t[1]=s=>a.code=s),placeholder:"مثال: NOWRUZ1405",style:{"text-transform":"uppercase"}},null,8,["value"])]),_:1}),i(m,{label:"نوع تخفیف"},{default:r(()=>[i(H,{value:a.is_percent,"onUpdate:value":t[2]||(t[2]=s=>a.is_percent=s)},{default:r(()=>[i(U,{value:!0},{default:r(()=>[R("درصدی")]),_:1}),i(U,{value:!1},{default:r(()=>[R("مبلغی (تومان)")]),_:1})]),_:1},8,["value"])]),_:1}),i(m,{label:a.is_percent?"درصد تخفیف":"مبلغ تخفیف (تومان)",required:""},{default:r(()=>[i(x,{value:a.amount,"onUpdate:value":t[3]||(t[3]=s=>a.amount=s),style:{width:"100%"},min:1,max:a.is_percent?100:void 0,placeholder:"مقدار تخفیف"},null,8,["value","max"])]),_:1},8,["label"]),i(m,{label:"تاریخ شروع",required:""},{default:r(()=>[i($,{value:v.value,"onUpdate:value":t[4]||(t[4]=s=>v.value=s)},null,8,["value"])]),_:1}),i(m,{label:"تاریخ پایان",required:""},{default:r(()=>[i($,{value:g.value,"onUpdate:value":t[5]||(t[5]=s=>g.value=s)},null,8,["value"])]),_:1}),i(m,{label:"محدودیت کل استفاده"},{default:r(()=>[i(x,{value:a.usage_limit,"onUpdate:value":t[6]||(t[6]=s=>a.usage_limit=s),style:{width:"100%"},min:1,placeholder:"خالی = نامحدود"},null,8,["value"])]),_:1}),i(m,{label:"محدودیت استفاده هر کاربر"},{default:r(()=>[i(x,{value:a.user_usage_limit,"onUpdate:value":t[7]||(t[7]=s=>a.user_usage_limit=s),style:{width:"100%"},min:1,placeholder:"خالی = نامحدود"},null,8,["value"])]),_:1}),i(m,{label:"فعال"},{default:r(()=>[i(J,{checked:a.active,"onUpdate:checked":t[8]||(t[8]=s=>a.active=s)},null,8,["checked"])]),_:1})]),_:1}))]),_:1},8,["visible","title","loading"])])}}});export{Dt as default};