2 lines
26 KiB
JavaScript
2 lines
26 KiB
JavaScript
import{_ as Re}from"./BasicMainCard-774c1aa2.js";import{_ as fe}from"./BasicModal.vue_vue_type_style_index_0_lang-c3017354.js";import{_ as ze}from"./BasicTextArea.vue_vue_type_style_index_0_lang-c717c744.js";import{_ as ge}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-1d4fd99b.js";import{_ as ye}from"./BasicInput.vue_vue_type_style_index_0_lang-5a31e25c.js";import{_ as Be,u as oe}from"./useBaseTable-6d1e031d.js";import{_ as xe}from"./button.vue_vue_type_style_index_0_lang-29638cb6.js";import{g as Le,a as Ne,b as Me,c as De,d as Ae,e as Oe,u as je,f as Ee,h as qe,t as Ge,i as Ve,j as Ke,k as He}from"./subscription-da673552.js";import{t as se}from"./useDataTime-4239bab9.js";import{I as A}from"./Icon-c8a211f1.js";import{O as be,d as ne,i as x,j as U,x as he,E as d,o as S,c as O,F as Je,b as t,e as s,t as J,s as We,w as c,f as E,h as Xe,G as Ze,k as Q,l as v,n as q,bI as Qe,K as re,L as Ye}from"./index-a28be152.js";import{g as et}from"./index-66691ac0.js";import{e as ue,g as de}from"./convert-2ad76038.js";import{F as ce}from"./index-85ba3ddf.js";import{a as tt}from"./index-2849b35f.js";import{I as at}from"./index-f9c49ada.js";import{T as pe}from"./index-96443f0e.js";import{M as Y}from"./index-8cc4eae2.js";import{S as st}from"./index-dd708aca.js";import{T as j}from"./isSymbol-25ca88cb.js";import{U as nt}from"./index-1018439f.js";import"./Grid-442881e7.js";import"./index-51b737a4.js";import"./Col-86738adb.js";import"./styleChecker-8c6ff79a.js";import"./isPlainObject-450bf3c7.js";import"./vnode-4742fc96.js";import"./_plugin-vue_export-helper-f8ecc290.js";import"./index-f317ca53.js";import"./SearchOutlined-4a5562a8.js";import"./omit-8084e33b.js";import"./FormItemContext-e50ee5a3.js";import"./index-3bdda65d.js";import"./index-5222fc6e.js";import"./usePrice-bc935b83.js";import"./updateLocale-619fe8a7.js";import"./shallowequal-4c00a664.js";import"./useState-277534ff.js";import"./useMemo-832cfde0.js";import"./lodash-5d3e4f7d.js";import"./index-61ef5439.js";import"./Badge-7dd6b925.js";import"./isNumeric-3f69e2aa.js";import"./index-dbebb139.js";import"./index-1e365e2e.js";import"./index-12d303fc.js";import"./index-4a3fe357.js";import"./DialogWrap-617bda84.js";import"./pickAttrs-38902005.js";import"./css-aae66f86.js";import"./toArray-bdec6b87.js";import"./index-f3f71242.js";import"./supabaseTableQuery-e3d032a9.js";import"./_flatRest-08328244.js";import"./isMobile-e2e89480.js";import"./useRefs-e22a3bf7.js";import"./index-6d9febfe.js";function me(r){return Number(r||0).toLocaleString("fa-IR")}const lt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:r=>(r.record.index??0)+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"مدت (روز)",dataIndex:"duration_days",key:"duration_days",width:100,align:"center"},{title:"قیمت (ریال)",dataIndex:"price",key:"price",customRender:r=>me(r.record.price)},{title:"تخفیف %",dataIndex:"discount_percent",key:"discount_percent",width:90,align:"center"},{title:"قیمت نهایی",dataIndex:"final_price",key:"final_price",customRender:r=>me(r.record.final_price)},{title:"فعال",dataIndex:"is_active",key:"is_active",customRender:r=>r.record.is_active?"بله":"خیر"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",width:80,align:"center"},{title:"ایجاد",dataIndex:"created_at",key:"created_at",customRender:r=>se(r.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];function it(r){return Number(r||0).toLocaleString("fa-IR")}const _e={pending:"در انتظار",paid:"پرداخت شده",failed:"ناموفق",cancelled:"لغو شده"},ve={pending:"در انتظار",active:"فعال",expired:"منقضی",cancelled:"لغو شده"},ot=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,sortable:!1,width:70,align:"center",customRender:r=>(r.record.index??0)+1},{title:"کاربر",dataIndex:"user_name",key:"user_name",filterField:"user_name",sortField:"user_name"},{title:"موبایل",dataIndex:"user_phone",key:"user_phone",filterField:"user_phone",sortField:"user_phone"},{title:"پلن",dataIndex:"plan_title",key:"plan_title",sortField:"plan_title"},{title:"مبلغ",dataIndex:"final_price",key:"final_price",type:"Number",sortField:"final_price",customRender:r=>it(r.record.final_price)},{title:"پرداخت",dataIndex:"payment_status",key:"payment_status",type:"Select",filterField:"payment_status",sortField:"payment_status",filterComponentProps:{options:Object.entries(_e).map(([r,k])=>({label:k,value:r})),allowClear:!0,placeholder:"انتخاب وضعیت پرداخت"},customRender:r=>_e[r.record.payment_status]||r.record.payment_status},{title:"وضعیت",dataIndex:"status",key:"status",type:"Select",filterField:"status",sortField:"status",filterComponentProps:{options:Object.entries(ve).map(([r,k])=>({label:k,value:r})),allowClear:!0,placeholder:"انتخاب وضعیت"},customRender:r=>ve[r.record.status]||r.record.status},{title:"انقضا",dataIndex:"expires_at",key:"expires_at",type:"DateTime",sortField:"expires_at",customRender:r=>r.record.expires_at?se(r.record.expires_at):"-"},{title:"تاریخ خرید",dataIndex:"created_at",key:"created_at",type:"DateTime",sortField:"created_at",customRender:r=>se(r.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",filterable:!1,sortable:!1,width:140,align:"center"}];async function ke(){return await be.get("/admin/subscription/payment-gateway")}async function rt(r){return(await be.put("/admin/subscription/payment-gateway",r)).settings??await ke()}const ut={class:"max-w-2xl space-y-4"},dt=t("p",{class:"text-sm text-gray-600 mb-4"}," کد مرچنت و آدرس بازگشت از درگاه در اینجا تنظیم میشود. اپ کاربر از همین تنظیمات برای اتصال به زرینپال استفاده میکند. ",-1),ct={key:0,class:"py-8 text-center"},pt=t("div",{class:"mb-1 text-sm text-gray-600"},"کد مرچنت زرینپال (Merchant ID)",-1),mt=t("div",{class:"mb-1 text-sm text-gray-600"},"آدرس بازگشت از درگاه (URL اپ کاربر)",-1),_t=t("div",{class:"text-xs text-gray-500 mt-1"},[E(" مسیر callback بهصورت خودکار اضافه میشود: "),t("code",null,"/subscriptions/callback")],-1),vt={class:"flex items-center gap-3"},ft=t("span",{class:"text-sm"},"فعال بودن درگاه زرینپال",-1),gt={class:"flex items-center gap-3"},yt=t("span",{class:"text-sm"},"حالت تست (Sandbox)",-1),xt=ne({__name:"PaymentGatewaySettings",setup(r){const k=x(!0),f=x(!1),_=x({zarinpal_merchant_id:"",zarinpal_sandbox:!1,zarinpal_enabled:!0,subscription_app_callback_url:"https://macharta.ir"}),F=U(()=>{var g;return _.value.zarinpal_enabled?_.value.zarinpal_sandbox?!0:!!((g=_.value.zarinpal_merchant_id)!=null&&g.trim()):!1}),R=U(()=>{var g;return _.value.zarinpal_enabled?_.value.zarinpal_sandbox?"حالت تست فعال است — پرداخت از sandbox زرینپال انجام میشود.":(g=_.value.zarinpal_merchant_id)!=null&&g.trim()?"درگاه برای پرداخت واقعی آماده است.":"کد مرچنت وارد نشده — درگاه آماده پرداخت واقعی نیست.":"درگاه غیرفعال است — کاربران نمیتوانند پرداخت کنند."}),$=U(()=>F.value?"bg-green-50 border-green-200 text-green-800":"bg-amber-50 border-amber-200 text-amber-800");he(async()=>{try{_.value=await ke()}catch(g){d.error((g==null?void 0:g.message)||"خطا در بارگذاری تنظیمات")}finally{k.value=!1}});async function B(){var g,y;if(!((g=_.value.subscription_app_callback_url)!=null&&g.trim())){d.warning("آدرس بازگشت از درگاه الزامی است");return}if(_.value.zarinpal_enabled&&!_.value.zarinpal_sandbox&&!((y=_.value.zarinpal_merchant_id)!=null&&y.trim())){d.warning("برای پرداخت واقعی، کد مرچنت الزامی است");return}f.value=!0;try{_.value=await rt(_.value),d.success("تنظیمات درگاه ذخیره شد")}catch(o){d.error((o==null?void 0:o.message)||"خطا در ذخیره")}finally{f.value=!1}}return(g,y)=>{const o=ye,T=ge,L=xe;return S(),O("div",ut,[dt,k.value?(S(),O("div",ct,"در حال بارگذاری...")):(S(),O(Je,{key:1},[t("div",null,[pt,s(o,{value:_.value.zarinpal_merchant_id,"onUpdate:value":y[0]||(y[0]=w=>_.value.zarinpal_merchant_id=w),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},null,8,["value"])]),t("div",null,[mt,s(o,{value:_.value.subscription_app_callback_url,"onUpdate:value":y[1]||(y[1]=w=>_.value.subscription_app_callback_url=w),placeholder:"https://macharta.ir"},null,8,["value"]),_t]),t("div",vt,[s(T,{value:_.value.zarinpal_enabled,"onUpdate:value":y[2]||(y[2]=w=>_.value.zarinpal_enabled=w)},null,8,["value"]),ft]),t("div",gt,[s(T,{value:_.value.zarinpal_sandbox,"onUpdate:value":y[3]||(y[3]=w=>_.value.zarinpal_sandbox=w)},null,8,["value"]),yt]),t("div",{class:We(["rounded-lg border p-3 text-sm",$.value])},J(R.value),3),s(L,{type:"primary",loading:f.value,onClick:B},{default:c(()=>[E(" ذخیره تنظیمات درگاه ")]),_:1},8,["loading"])],64))])}}}),bt={key:3,class:"text-sm text-gray-500"},ht=ne({__name:"AdminUserSubscriptionModal",props:{visible:{type:Boolean},mode:{},purchaseId:{},lockedUserId:{}},emits:["update:visible","success"],setup(r,{emit:k}){const f=r,_=tt,F=at,R=ce,$=ce.Item,B=x(!1),g=x([]),y=x([]),o=Xe({user_id:void 0,plan_id:void 0,duration_days:null}),T=U({get:()=>f.visible,set:n=>k("update:visible",n)}),L=U(()=>f.mode==="grant"?"ایجاد اشتراک برای کاربر":"تمدید اشتراک"),w=U(()=>f.mode==="grant"?"ایجاد اشتراک":"تمدید"),G=U(()=>g.value.map(n=>{const u=n.name||`${n.first_name||""} ${n.last_name||""}`.trim()||"بدون نام",b=n.phone||"";return{value:n.id,label:b?`${u} — ${b}`:u,searchText:`${u} ${b}`.toLowerCase()}})),N=U(()=>y.value.map(n=>({value:n.id,label:`${n.title} (${n.duration_days} روز)${n.is_active?"":" — غیرفعال"}`,searchText:String(n.title||"").toLowerCase()}))),C=U(()=>y.value.find(n=>n.id===o.plan_id)||null);function z(n,u){return String((u==null?void 0:u.searchText)||(u==null?void 0:u.label)||"").toLowerCase().includes(n.toLowerCase())}function V(n,u){return String((u==null?void 0:u.searchText)||(u==null?void 0:u.label)||"").toLowerCase().includes(n.toLowerCase())}function p(){f.mode==="grant"&&C.value&&!o.duration_days&&(o.duration_days=Number(C.value.duration_days)||null)}function ee(){o.user_id=f.lockedUserId||void 0,o.plan_id=void 0,o.duration_days=f.mode==="extend"?30:null}function W(){k("update:visible",!1)}async function X(){try{const[n,u]=await Promise.all([Qe(),Le()]);g.value=n||[],y.value=u||[]}catch(n){d.error((n==null?void 0:n.message)||"خطا در بارگذاری اطلاعات")}}async function Z(){var n,u;if(f.mode==="grant"){if(!o.user_id){d.warning("کاربر را انتخاب کنید");return}if(!o.plan_id){d.warning("پلن را انتخاب کنید");return}}if(f.mode==="extend"){if(!f.purchaseId&&!o.user_id){d.warning("کاربر را انتخاب کنید");return}if(!o.duration_days||o.duration_days<1){d.warning("مدت تمدید را وارد کنید");return}}B.value=!0;try{if(f.mode==="grant"){const b={user_id:o.user_id,plan_id:o.plan_id};o.duration_days&&o.duration_days>0&&(b.duration_days=Number(o.duration_days)),await Ne(b),d.success("اشتراک ایجاد شد")}else await Me({purchase_id:f.purchaseId||void 0,user_id:f.purchaseId?void 0:o.user_id,plan_id:o.plan_id||void 0,duration_days:Number(o.duration_days)}),d.success("اشتراک تمدید شد");k("success"),W()}catch(b){d.error(((u=(n=b==null?void 0:b.response)==null?void 0:n.data)==null?void 0:u.message)||(b==null?void 0:b.message)||"خطا در ذخیره")}finally{B.value=!1}}return Ze(()=>f.visible,n=>{n&&(ee(),(!g.value.length||!y.value.length)&&X())}),he(()=>{X()}),(n,u)=>{const b=fe;return S(),Q(b,{visible:T.value,"onUpdate:visible":u[4]||(u[4]=P=>T.value=P),title:L.value,"ok-text":w.value,"cancel-text":"انصراف","confirm-loading":B.value,width:"560px",onOk:Z,onCancel:W},{default:c(()=>[s(v(R),{layout:"vertical"},{default:c(()=>[n.mode==="grant"||n.mode==="extend"&&!n.purchaseId?(S(),Q(v($),{key:0,label:"کاربر",required:""},{default:c(()=>[s(v(_),{value:o.user_id,"onUpdate:value":u[0]||(u[0]=P=>o.user_id=P),"show-search":"",placeholder:"جستجو با نام یا موبایل",options:G.value,"filter-option":z,disabled:!!n.lockedUserId},null,8,["value","options","disabled"])]),_:1})):q("",!0),n.mode==="grant"?(S(),Q(v($),{key:1,label:"پلن اشتراک",required:""},{default:c(()=>[s(v(_),{value:o.plan_id,"onUpdate:value":u[1]||(u[1]=P=>o.plan_id=P),"show-search":"",placeholder:"انتخاب پلن",options:N.value,"filter-option":V,onChange:p},null,8,["value","options"])]),_:1})):q("",!0),n.mode==="extend"&&!n.purchaseId?(S(),Q(v($),{key:2,label:"پلن (اختیاری)"},{default:c(()=>[s(v(_),{value:o.plan_id,"onUpdate:value":u[2]||(u[2]=P=>o.plan_id=P),"show-search":"","allow-clear":"",placeholder:"در صورت خالی بودن از پلن فعال کاربر استفاده میشود",options:N.value,"filter-option":V},null,8,["value","options"])]),_:1})):q("",!0),s(v($),{label:n.mode==="grant"?"مدت (روز) — اختیاری برای جایگزینی مدت پلن":"مدت تمدید (روز)",required:n.mode==="extend"},{default:c(()=>[s(v(F),{value:o.duration_days,"onUpdate:value":u[3]||(u[3]=P=>o.duration_days=P),min:1,class:"w-full",placeholder:n.mode==="grant"?"خالی = مدت پیشفرض پلن":"مثلاً ۳۰"},null,8,["value","placeholder"])]),_:1},8,["label","required"]),n.mode==="grant"&&C.value?(S(),O("div",bt," مدت پیشفرض پلن: "+J(C.value.duration_days)+" روز ",1)):q("",!0)]),_:1})]),_:1},8,["visible","title","ok-text","confirm-loading"])}}}),kt={class:"flex justify-between items-center mb-4"},wt=t("h2",null,"لیست خرید اشتراک",-1),It={class:"flex gap-2"},$t={class:"gap-2 flex justify-center"},Ct=t("span",null,"تمدید",-1),Pt=t("span",null,"لغو اشتراک",-1),St=t("span",null,"حذف",-1),Tt={class:"flex justify-between items-center mb-4"},Ut=t("h2",null,"مدیریت اشتراکها",-1),Ft={class:"gap-2 flex justify-center"},Rt=t("span",null,"حذف",-1),zt=t("span",null,"ویرایش",-1),Bt=t("div",{class:"mb-4"},[t("h2",null,"تنظیمات درگاه پرداخت")],-1),Lt={class:"space-y-4 relative"},Nt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Mt={class:"grid grid-cols-2 gap-4"},Dt=t("div",{class:"mb-1 text-sm text-gray-600"},"عنوان اشتراک",-1),At=t("div",{class:"mb-1 text-sm text-gray-600"},"مدت اشتراک (روز)",-1),Ot={class:"grid grid-cols-3 gap-4"},jt=t("div",{class:"mb-1 text-sm text-gray-600"},"مبلغ (ریال)",-1),Et=t("div",{class:"mb-1 text-sm text-gray-600"},"تخفیف (درصد)",-1),qt=t("div",{class:"mb-1 text-sm text-gray-600"},"قیمت نهایی (ریال)",-1),Gt={class:"mt-2 font-semibold text-green-700"},Vt={class:"grid grid-cols-2 gap-4"},Kt=t("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),Ht=t("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت",-1),Jt={class:"flex items-center gap-2 mt-2"},Wt={class:"text-sm text-gray-600"},Xt=t("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات",-1),Zt={class:"flex justify-center"},Qt=t("div",{class:"mb-1 text-sm text-gray-600"},"تصویر اشتراک",-1),Yt={key:0},ea=t("div",null,"آپلود تصویر",-1),ns=ne({__name:"index",setup(r){const k=pe,f=pe.TabPane,_=x("purchases"),F=x(!1),R=x(!1),$=x(null),[B,g]=oe(),[y,o]=oe(),T=x(!1),L=x("grant"),w=x(null),G=x(null),N=x(!1),C=x([]),z=x(0),V=()=>({title:"",description:"",image_url:null,price:0,discount_percent:0,duration_days:30,is_active:!0,sort_order:0}),p=x(V()),ee=U(()=>De(Number(p.value.price),Number(p.value.discount_percent)).toLocaleString("fa-IR")),W={columns:lt,api:Ae,defaultPageLimit:20},X={columns:ot,api:Oe,defaultPageLimit:20};function Z(){p.value=V(),C.value=[]}function n(){R.value=!1,$.value=null,Z(),F.value=!0}function u(){F.value=!1,Z()}function b(l){return l.type.startsWith("image/")?l.size/1024/1024>=5?(d.error("حجم تصویر باید کمتر از 5MB باشد"),!1):!0:(d.error("فقط فایل تصویری مجاز است"),!1)}async function P(l){const{file:e,onSuccess:m,onError:i,onProgress:I}=l,M=new FormData;M.append("file",e);const K=`${Ye}/upload/machartaa-img`;z.value++,await new Promise((te,H)=>{const a=new XMLHttpRequest;a.open("POST",K);const D=et()||localStorage.getItem("tamin_token")||"";a.setRequestHeader("Authorization",`Bearer ${D}`),a.upload.onprogress=h=>{h.lengthComputable&&(I==null||I({percent:Math.round(h.loaded/h.total*100)}))},a.onload=()=>{if(a.status>=200&&a.status<300)try{const h=JSON.parse(a.responseText||"{}"),Fe=h.full_src||h.url||h.src||h.path||h.data&&(h.data.full_src||h.data.url||h.data.src||h.data.path)||"",ae=ue(Fe),ie=de(ae);p.value.image_url=ae,C.value=ie?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:ie,response:{path:ae}}]:[],m==null||m(h,a),d.success("تصویر با موفقیت آپلود شد!"),te()}catch(h){i==null||i(h,a),H(h)}else i==null||i(new Error("خطا در آپلود تصویر"),a),H(new Error("خطا در آپلود تصویر"))},a.onerror=()=>{i==null||i(new Error("خطا در آپلود تصویر"),a),H(new Error("خطا در آپلود تصویر"))},a.onloadend=()=>{z.value=Math.max(0,z.value-1)},a.send(M)})}async function we(){var l;if(z.value>0){d.warning("لطفاً تا پایان آپلود صبر کنید");return}if(!((l=p.value.title)!=null&&l.trim())){d.warning("عنوان الزامی است");return}if(!p.value.duration_days||Number(p.value.duration_days)<1){d.warning("مدت اشتراک باید حداقل ۱ روز باشد");return}try{const e={...p.value,price:Number(p.value.price)||0,discount_percent:Number(p.value.discount_percent)||0,duration_days:Number(p.value.duration_days),sort_order:Number(p.value.sort_order)||0};R.value&&$.value?(await je($.value,e),d.success("اشتراک ویرایش شد")):(await Ee(e),d.success("اشتراک افزوده شد")),u(),await g()}catch(e){d.error((e==null?void 0:e.message)||"خطا در ذخیره")}}function Ie(l){R.value=!0,$.value=l.id;const e=ue(l.image_url)||null;p.value={title:l.title||"",description:l.description||"",image_url:e,price:l.price||0,discount_percent:l.discount_percent||0,duration_days:l.duration_days||30,is_active:l.is_active??!0,sort_order:l.sort_order??0};const m=e?de(e):null;C.value=m?[{uid:"-1",name:"image.jpg",status:"done",url:m,response:{path:e}}]:[],F.value=!0}function $e(l){Y.confirm({title:"حذف اشتراک",content:`آیا از حذف «${l.title}» مطمئن هستید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await qe(l.id),d.success("حذف شد"),await g()}catch(e){d.error((e==null?void 0:e.message)||"خطا در حذف")}}})}async function Ce(l){try{await Ge(l.id,!l.is_active),d.success("وضعیت بهروز شد"),await g()}catch(e){d.error((e==null?void 0:e.message)||"خطا")}}function Pe(){L.value="grant",w.value=null,G.value=null,T.value=!0}async function Se(){N.value||Y.confirm({title:"همگامسازی پرداختهای زرینپال",content:"لیست تراکنشهای موفقِ اعتبارسنجینشده از زرینپال گرفته میشود، با توکن تراکنشهای اشتراک تطبیق داده میشود و در صورت تطبیق، اشتراک کاربر فعال میشود. ادامه میدهید؟",okText:"همگامسازی",cancelText:"انصراف",centered:!0,onOk:async()=>{var l,e;N.value=!0;try{const m=await Ve(),i=(m==null?void 0:m.data)??m,I=Number((i==null?void 0:i.reconciled_count)||0),M=Number((i==null?void 0:i.total_zarinpal)||0),K=Number((i==null?void 0:i.matched_count)||0);I>0?d.success((i==null?void 0:i.message)||`${I} اشتراک فعال شد.`):d.info((i==null?void 0:i.message)||(M>0?`از ${M} تراکنش زرینپال، ${K} مورد با اشتراک محلی تطبیق خورد ولی فعالسازی انجام نشد.`:"تراکنش موفقِ اعتبارسنجینشدهای در زرینپال یافت نشد.")),await o()}catch(m){d.error(((e=(l=m==null?void 0:m.response)==null?void 0:l.data)==null?void 0:e.message)||(m==null?void 0:m.message)||"خطا در همگامسازی پرداختها")}finally{N.value=!1}}})}function le(l){L.value="extend",w.value=(l==null?void 0:l.id)??null,G.value=(l==null?void 0:l.user_id)??null,T.value=!0}function Te(l){Y.confirm({title:"لغو اشتراک",content:`اشتراک «${l.plan_title}» برای ${l.user_name||"کاربر"} لغو شود؟ اعتبار کاربر قطع میشود.`,okText:"بله، لغو کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var e,m;try{await Ke(l.id),d.success("اشتراک لغو شد"),await o()}catch(i){d.error(((m=(e=i==null?void 0:i.response)==null?void 0:e.data)==null?void 0:m.message)||(i==null?void 0:i.message)||"خطا در لغو")}}})}function Ue(l){Y.confirm({title:"حذف کامل",content:`رکورد خرید «${l.plan_title}» برای ${l.user_name||"کاربر"} کامل حذف شود؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var e,m;try{await He(l.id),d.success("حذف شد"),await o()}catch(i){d.error(((m=(e=i==null?void 0:i.response)==null?void 0:e.data)==null?void 0:m.message)||(i==null?void 0:i.message)||"خطا در حذف")}}})}return(l,e)=>{const m=xe,i=Be,I=ye,M=ge,K=ze,te=fe,H=Re;return S(),O("div",null,[s(H,null,{default:c(()=>[s(v(k),{activeKey:_.value,"onUpdate:activeKey":e[2]||(e[2]=a=>_.value=a)},{default:c(()=>[s(v(f),{key:"purchases",tab:"خریدهای کاربران"},{default:c(()=>[t("div",kt,[wt,t("div",It,[s(m,{loading:N.value,onClick:Se},{default:c(()=>[E(" همگامسازی پرداختهای زرینپال ")]),_:1},8,["loading"]),s(m,{onClick:e[0]||(e[0]=a=>le())},{default:c(()=>[E("تمدید اشتراک")]),_:1}),s(m,{type:"primary",onClick:e[1]||(e[1]=a=>Pe())},{default:c(()=>[E("ایجاد اشتراک برای کاربر")]),_:1})])]),s(i,re(X,{onRegister:v(y)}),{action:c(({record:a})=>[t("div",$t,[s(v(j),{class:"cursor-pointer"},{title:c(()=>[Ct]),default:c(()=>[s(A,{icon:"vuesax-linear:add-circle",color:"#059669",onClick:D=>le(a)},null,8,["onClick"])]),_:2},1024),s(v(j),{class:"cursor-pointer"},{title:c(()=>[Pt]),default:c(()=>[s(A,{icon:"vuesax-linear:close-circle",color:"#F59E0B",onClick:D=>Te(a)},null,8,["onClick"])]),_:2},1024),s(v(j),{class:"cursor-pointer"},{title:c(()=>[St]),default:c(()=>[s(A,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:D=>Ue(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),s(v(f),{key:"plans",tab:"پلنهای اشتراک"},{default:c(()=>[t("div",Tt,[Ut,s(m,{type:"primary",onClick:n},{default:c(()=>[E("افزودن اشتراک")]),_:1})]),s(i,re(W,{ref:"table",onRegister:v(B)}),{action:c(({record:a})=>[t("div",Ft,[s(v(j),{class:"cursor-pointer"},{title:c(()=>[t("span",null,J(a.is_active?"غیرفعال کردن":"فعال کردن"),1)]),default:c(()=>[s(A,{icon:a.is_active?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:a.is_active?"#F59E0B":"#16A34A",onClick:D=>Ce(a)},null,8,["icon","color","onClick"])]),_:2},1024),s(v(j),{class:"cursor-pointer"},{title:c(()=>[Rt]),default:c(()=>[s(A,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:D=>$e(a)},null,8,["onClick"])]),_:2},1024),s(v(j),{class:"cursor-pointer"},{title:c(()=>[zt]),default:c(()=>[s(A,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:D=>Ie(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),s(v(f),{key:"gateway",tab:"تنظیمات درگاه (زرینپال)"},{default:c(()=>[Bt,s(xt)]),_:1})]),_:1},8,["activeKey"]),s(te,{visible:F.value,"onUpdate:visible":e[11]||(e[11]=a=>F.value=a),title:R.value?"ویرایش اشتراک":"افزودن اشتراک",onOk:we,onCancel:u,width:"70%",confirmLoading:z.value>0},{default:c(()=>[t("div",Lt,[z.value>0?(S(),O("div",Nt,[s(v(st),{size:"large"})])):q("",!0),t("div",Mt,[t("div",null,[Dt,s(I,{value:p.value.title,"onUpdate:value":e[3]||(e[3]=a=>p.value.title=a),placeholder:"مثلاً اشتراک یک ماهه"},null,8,["value"])]),t("div",null,[At,s(I,{value:p.value.duration_days,"onUpdate:value":e[4]||(e[4]=a=>p.value.duration_days=a),type:"number",min:"1",placeholder:"30"},null,8,["value"])])]),t("div",Ot,[t("div",null,[jt,s(I,{value:p.value.price,"onUpdate:value":e[5]||(e[5]=a=>p.value.price=a),type:"number",min:"0",placeholder:"100000"},null,8,["value"])]),t("div",null,[Et,s(I,{value:p.value.discount_percent,"onUpdate:value":e[6]||(e[6]=a=>p.value.discount_percent=a),type:"number",min:"0",max:"100",placeholder:"0"},null,8,["value"])]),t("div",null,[qt,t("div",Gt,J(ee.value),1)])]),t("div",Vt,[t("div",null,[Kt,s(I,{value:p.value.sort_order,"onUpdate:value":e[7]||(e[7]=a=>p.value.sort_order=a),type:"number",placeholder:"0"},null,8,["value"])]),t("div",null,[Ht,t("div",Jt,[s(M,{value:p.value.is_active,"onUpdate:value":e[8]||(e[8]=a=>p.value.is_active=a)},null,8,["value"]),t("span",Wt,J(p.value.is_active?"فعال":"غیرفعال"),1)])])]),t("div",null,[Xt,s(K,{value:p.value.description,"onUpdate:value":e[9]||(e[9]=a=>p.value.description=a),placeholder:"توضیحات اشتراک",rows:4},null,8,["value"])]),t("div",Zt,[t("div",null,[Qt,s(v(nt),{"file-list":C.value,"onUpdate:fileList":e[10]||(e[10]=a=>C.value=a),"before-upload":b,"custom-request":P,accept:"image/jpeg,image/png,image/webp,image/gif,image/heic,image/heif,.jpg,.jpeg,.png,.webp,.gif,.heic,.heif","max-count":1,"list-type":"picture-card"},{default:c(()=>[C.value.length<1?(S(),O("div",Yt,[s(A,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),ea])):q("",!0)]),_:1},8,["file-list"])])])])]),_:1},8,["visible","title","confirmLoading"]),s(ht,{visible:T.value,"onUpdate:visible":e[12]||(e[12]=a=>T.value=a),mode:L.value,"purchase-id":w.value,"locked-user-id":G.value,onSuccess:v(o)},null,8,["visible","mode","purchase-id","locked-user-id","onSuccess"])]),_:1})])}}});export{ns as default};
|