Files
machartaa_admin_dist/dist/assets/index-e9d58233.js
T
2026-08-23 14:52:55 +03:30

2 lines
16 KiB
JavaScript

import{_ as xe}from"./BasicMainCard-774c1aa2.js";import{_ as Ie}from"./BasicModal.vue_vue_type_style_index_0_lang-c3017354.js";import{_ as ke}from"./BasicInput.vue_vue_type_style_index_0_lang-5a31e25c.js";import{_ as we,u as Y}from"./useBaseTable-6d1e031d.js";import{_ as Ae}from"./button.vue_vue_type_style_index_0_lang-29638cb6.js";import{I as O}from"./Icon-c8a211f1.js";import{t as re}from"./useDataTime-4239bab9.js";import{_ as Re,H as Se,I as Ue,J as Te,d as Ce,i as _,j as Z,o as k,c as w,e as o,w as d,b as s,f as D,K as ee,l as g,t as te,n as C,z as Le,k as Me,E as f,L as Pe}from"./index-a28be152.js";import{g as $e}from"./member-c13593cf.js";import{p as Ne}from"./pushNotification-7da7018d.js";import{g as J}from"./convert-2ad76038.js";import{n as ae}from"./textUtils-c37780ad.js";import{g as ie}from"./index-66691ac0.js";import{_ as De,v as le,t as se}from"./AudienceSegmentPicker.vue_vue_type_script_setup_true_lang-d32f7a64.js";import{R as K,C as Be}from"./index-1e365e2e.js";import{M as je}from"./index-8cc4eae2.js";import{S as ze}from"./index-dd708aca.js";import{I as Ee}from"./index-f317ca53.js";import{T as W}from"./isSymbol-25ca88cb.js";import{U as Fe}from"./index-1018439f.js";import"./Grid-442881e7.js";import"./index-96443f0e.js";import"./_plugin-vue_export-helper-f8ecc290.js";import"./shallowequal-4c00a664.js";import"./index-4a3fe357.js";import"./vnode-4742fc96.js";import"./index-5222fc6e.js";import"./useState-277534ff.js";import"./useRefs-e22a3bf7.js";import"./_flatRest-08328244.js";import"./isMobile-e2e89480.js";import"./omit-8084e33b.js";import"./index-51b737a4.js";import"./Col-86738adb.js";import"./styleChecker-8c6ff79a.js";import"./isPlainObject-450bf3c7.js";import"./usePrice-bc935b83.js";import"./updateLocale-619fe8a7.js";import"./index-3bdda65d.js";import"./useMemo-832cfde0.js";import"./FormItemContext-e50ee5a3.js";import"./lodash-5d3e4f7d.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-1d4fd99b.js";import"./index-61ef5439.js";import"./Badge-7dd6b925.js";import"./isNumeric-3f69e2aa.js";import"./index-dbebb139.js";import"./index-2849b35f.js";import"./toArray-bdec6b87.js";import"./SearchOutlined-4a5562a8.js";import"./pickAttrs-38902005.js";import"./index-f3f71242.js";import"./index-f9c49ada.js";import"./dayjs-44263179.js";import"./index-12d303fc.js";import"./DialogWrap-617bda84.js";import"./css-aae66f86.js";import"./index-85ba3ddf.js";import"./index-6d9febfe.js";const ne=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:l=>l.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"فعال",dataIndex:"active",key:"active",align:"center",width:90,customRender:l=>l.record.active?"بله":"خیر"},{title:"مخاطب",dataIndex:"audience_label",key:"audience_label",filterable:!1,customRender:l=>l.record.audience_label||"همه کاربران"},{title:"اولویت",dataIndex:"priority",key:"priority",align:"center",width:90},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:l=>re(l.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function Ve(l){const h=await Se("app_notification_modals",l);return Array.isArray(h)?h:[h]}async function oe(l,h){const p=await Ue("app_notification_modals",l,{...h,updated_at:new Date().toISOString()});return Array.isArray(p)?p:[p]}async function Oe(l){await Te("app_notification_modals",l)}function Ke(l){var A,L;const h=l.target_mode||"all";if(h==="all")return"همه کاربران";if(h==="selected")return`${(Array.isArray(l.target_user_ids)?l.target_user_ids.length:0).toLocaleString("fa-IR")} کاربر انتخاب‌شده`;const p=Array.isArray((A=l.audience_snapshot)==null?void 0:A.segments)?l.audience_snapshot.segments.length:0,I=Array.isArray((L=l.audience_snapshot)==null?void 0:L.includeUserIds)?l.audience_snapshot.includeUserIds.length:Array.isArray(l.target_user_ids)?l.target_user_ids.length:0;return I>0?`${p.toLocaleString("fa-IR")} دسته + ${I.toLocaleString("fa-IR")} کاربر`:`${p.toLocaleString("fa-IR")} دسته مخاطب`}async function qe(l){const{TableEngineRequest:h}=await Re(()=>import("./buildSupabaseQuery-7d0fcf16.js"),["assets/buildSupabaseQuery-7d0fcf16.js","assets/index-a28be152.js","assets/index-d7456b90.css"]),p={...l};!p.sort&&!p.order&&(p.order="-priority");const I=await h(p,"app_notification_modals");try{if(Array.isArray(I==null?void 0:I.rows)){const A=p.page||1,L=p.limit||20,M=(A-1)*L,q=I.rows.map((m,H)=>({...m,title:m.title??"",body:m.body??"",image_url:m.image_url??null,cta_label:m.cta_label||"متوجه شدم",active:m.active!==!1,priority:Number(m.priority)||0,target_mode:m.target_mode||"all",target_user_ids:Array.isArray(m.target_user_ids)?m.target_user_ids:[],audience_snapshot:m.audience_snapshot&&typeof m.audience_snapshot=="object"?m.audience_snapshot:{},audience_label:Ke(m),index:M+H}));return{...I,rows:q}}}catch(A){console.error("[getNotificationModalsTable]",A)}return I}const He={class:"flex justify-between items-center mb-4"},Je=s("h2",null,"پیام مودال ورود",-1),We=["src"],Ge={key:1},Xe={class:"gap-2 flex justify-center"},Qe=s("span",null,"حذف",-1),Ye=s("span",null,"ویرایش",-1),Ze={class:"space-y-4 relative max-h-[75vh] overflow-y-auto pe-1"},et={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},tt=s("div",{class:"mb-1 text-sm text-gray-600"},"عنوان *",-1),at=s("div",{class:"mb-1 text-sm text-gray-600"},"متن پیام *",-1),it={class:"grid grid-cols-1 md:grid-cols-2 gap-3"},lt=s("div",{class:"mb-1 text-sm text-gray-600"},"متن دکمه",-1),st=s("div",{class:"mb-1 text-sm text-gray-600"},"اولویت (عدد بالاتر = زودتر نمایش)",-1),nt=s("div",{class:"mb-1 text-sm text-gray-600"},"تصویر (اختیاری)",-1),ot={key:0},rt=s("div",null,"آپلود تصویر",-1),ut={key:0,class:"mt-1"},ct={class:"h-2 rounded bg-gray-200 overflow-hidden"},dt={class:"border-t border-gray-200 pt-4 space-y-3"},mt=s("div",{class:"font-semibold text-gray-700"},"مخاطب پیام",-1),pt={key:1,class:"text-sm rounded-md bg-blue-50 border border-blue-100 px-3 py-2 text-blue-800"},vt={key:2,class:"border-t border-gray-100 pt-3"},_t={class:"mb-2 text-sm text-gray-600"},gt={key:0},Ia=Ce({__name:"index",setup(l){const{TextArea:h}=Ee,p=K.Group,I={authorization:`Bearer ${ie()||localStorage.getItem("tamin_token")||""}`},A=[{title:"نام",dataIndex:"first_name",key:"first_name",filterable:!0},{title:"نام خانوادگی",dataIndex:"last_name",key:"last_name",filterable:!0},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterable:!0},{title:"زمان ثبت‌نام",dataIndex:"created_at",key:"created_at",type:"Date",filterable:!0,customRender:t=>{var c;const e=((c=t==null?void 0:t.record)==null?void 0:c.record)??(t==null?void 0:t.record)??t;return e!=null&&e.created_at?re(e.created_at):"-"}}],[L,M]=Y(),[q]=Y(),m=_({columns:[...ne.slice(0,2),{title:"تصویر",dataIndex:"image_url",key:"image_url",slot:"image",align:"center",width:100,filterable:!1},...ne.slice(2)],api:qe,defaultPageLimit:20}),H=_({columns:A,api:$e,defaultPageLimit:10,rowKey:"id"}),y=_([]),ue=Z(()=>({selectedRowKeys:y.value,onChange:t=>{y.value=t.map(e=>String(e))},preserveSelectedRowKeys:!0})),B=_(!1),z=_(!1),E=_(null),P=_([]),$=_(0),S=_(0),x=_("all"),U=_({segments:[]}),F=_(!1),j=_(""),r=_({title:"",body:"",image_url:null,cta_label:"متوجه شدم",active:!0,priority:0}),G=Z({get:()=>String(r.value.priority??0),set:t=>{const e=Number(String(t).replace(/[^\d-]/g,""));r.value.priority=Number.isFinite(e)?e:0}});function ce(){x.value="all",U.value={segments:[]},y.value=[],j.value=""}function de(){P.value=[],z.value=!1,E.value=null,r.value={title:"",body:"",image_url:null,cta_label:"متوجه شدم",active:!0,priority:0},ce(),B.value=!0}function X(){B.value=!1}function me(t){return t.type.startsWith("image/")?t.size/1024/1024<5?!0:(f.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(f.error("فقط فایل‌های تصویری مجاز است"),!1)}async function pe(t){const{file:e,onSuccess:c,onError:u,onProgress:i}=t,b=new FormData;b.append("file",e);const T=`${Pe}/upload/machartaa-img`;S.value=0,$.value++,await new Promise((a,N)=>{const v=new XMLHttpRequest;v.open("POST",T);const he=ie()||localStorage.getItem("tamin_token")||"";v.setRequestHeader("Authorization",`Bearer ${he}`),v.upload.onprogress=n=>{if(n.lengthComputable){const R=Math.round(n.loaded/n.total*100);S.value=R,i==null||i({percent:R})}},v.onload=()=>{if(S.value=100,v.status>=200&&v.status<300)try{const n=JSON.parse(v.responseText||"{}"),R=n.full_src||n.url||n.src||n.path||n.data&&(n.data.full_src||n.data.url||n.data.src||n.data.path)||"";let V=R;R!=null&&R.startsWith("http")&&(V=R.replace(/^https?:\/\/[^\/]+/,""));const Q=J(V);r.value.image_url=V,P.value=Q?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:Q,response:{path:V}}]:[],c==null||c(n,v),f.success("تصویر با موفقیت آپلود شد!"),a()}catch(n){u==null||u(n,v),N(n)}else{const n=new Error("خطا در آپلود تصویر");u==null||u(n,v),N(n)}},v.onerror=()=>{const n=new Error("خطا در آپلود تصویر");u==null||u(n,v),N(n)},v.onloadend=()=>{$.value=Math.max(0,$.value-1),S.value=0},v.send(b)})}function ve(t){z.value=!0,E.value=t.id;let e=t.image_url||null;e&&e.startsWith("http")&&(e=e.replace(/^https?:\/\/[^\/]+/,"")),r.value={title:t.title||"",body:t.body||"",image_url:e,cta_label:t.cta_label||"متوجه شدم",active:t.active!==!1,priority:Number(t.priority)||0};const c=e?J(e):null;P.value=c?[{uid:"-1",name:"image.jpg",status:"done",url:c,response:{path:e}}]:[];const u=t.target_mode||"all";x.value=u;const i=t.audience_snapshot&&typeof t.audience_snapshot=="object"?t.audience_snapshot:{};U.value={segments:Array.isArray(i.segments)?[...i.segments]:[],registeredFrom:i.registeredFrom,registeredTo:i.registeredTo,inactiveDays:i.inactiveDays,subscriberInactiveDays:i.subscriberInactiveDays,challengeNumber:i.challengeNumber??1};const b=Array.isArray(i.includeUserIds)?i.includeUserIds:[],T=Array.isArray(t.target_user_ids)?t.target_user_ids:[];y.value=[...new Set([...b,...T].map(a=>String(a)))],j.value="",B.value=!0}function _e(t){je.confirm({title:"حذف پیام مودال",content:`آیا از حذف «${t.title}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",onOk:async()=>{await Oe(t.id),f.success("حذف شد"),M()}})}async function ge(t){const e=t.active===!1;await oe(t.id,{active:e}),f.success(e?"فعال شد":"غیرفعال شد"),M()}async function fe(){var c,u;const t={...U.value,includeUserIds:y.value},e=le(t);if(e){f.warning(e);return}F.value=!0,j.value="";try{const i=se(t),b=await Ne(i),T=Number((b==null?void 0:b.userCount)??0);j.value=`حدود ${T.toLocaleString("fa-IR")} کاربر مخاطب این پیام خواهند بود`}catch(i){f.error(((u=(c=i==null?void 0:i.response)==null?void 0:c.data)==null?void 0:u.message)||(i==null?void 0:i.message)||"خطا در پیش‌نمایش مخاطب")}finally{F.value=!1}}function ye(){if(x.value==="all")return{target_mode:"all",target_user_ids:[],audience_snapshot:{segments:[]}};if(x.value==="selected")return{target_mode:"selected",target_user_ids:[...y.value],audience_snapshot:{segments:[]}};const t=se({...U.value,includeUserIds:y.value});return{target_mode:"segment",target_user_ids:[...y.value],audience_snapshot:{...t}}}async function be(){var c,u,i;if(!((c=r.value.title)!=null&&c.trim())){f.warning("عنوان الزامی است");return}if(!ae(r.value.body)){f.warning("متن پیام الزامی است");return}if($.value>0){f.warning("لطفاً تا پایان آپلود صبر کنید");return}if(x.value==="selected"&&!y.value.length){f.warning("حداقل یک کاربر از جدول انتخاب کنید");return}if(x.value==="segment"){const b=le({...U.value,includeUserIds:y.value});if(b){f.warning(b);return}}const t=ye(),e={title:r.value.title.trim(),body:ae(r.value.body),image_url:((u=r.value.image_url)==null?void 0:u.trim())||null,cta_label:((i=r.value.cta_label)==null?void 0:i.trim())||"متوجه شدم",active:r.value.active!==!1,priority:Number(r.value.priority)||0,...t};z.value&&E.value?(await oe(E.value,e),f.success("ویرایش شد")):(await Ve(e),f.success("افزوده شد")),X(),M()}return(t,e)=>{const c=Ae,u=we,i=ke,b=Ie,T=xe;return k(),w("div",null,[o(T,null,{default:d(()=>[s("div",He,[Je,o(c,{type:"primary",onClick:de},{default:d(()=>[D("افزودن پیام")]),_:1})]),o(u,ee(m.value,{ref:"table",onRegister:g(L)}),{image:d(({record:a})=>[a.image_url?(k(),w("img",{key:0,src:g(J)(a.image_url),alt:"",class:"w-16 h-10 object-cover rounded"},null,8,We)):(k(),w("span",Ge,"-"))]),action:d(({record:a})=>[s("div",Xe,[o(g(W),{class:"cursor-pointer"},{title:d(()=>[s("span",null,te((a==null?void 0:a.active)===!1?"فعال‌سازی":"غیرفعال‌سازی"),1)]),default:d(()=>[o(O,{icon:(a==null?void 0:a.active)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(a==null?void 0:a.active)===!1?"#10B981":"#F59E0B",onClick:N=>ge(a)},null,8,["icon","color","onClick"])]),_:2},1024),o(g(W),{class:"cursor-pointer"},{title:d(()=>[Qe]),default:d(()=>[o(O,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:N=>_e(a)},null,8,["onClick"])]),_:2},1024),o(g(W),{class:"cursor-pointer"},{title:d(()=>[Ye]),default:d(()=>[o(O,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:N=>ve(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),o(b,{visible:B.value,"onUpdate:visible":e[8]||(e[8]=a=>B.value=a),title:z.value?"ویرایش پیام مودال":"افزودن پیام مودال",onOk:be,onCancel:X,width:"920px",confirmLoading:$.value>0||F.value},{default:d(()=>[s("div",Ze,[$.value>0?(k(),w("div",et,[o(g(ze),{size:"large"})])):C("",!0),s("div",null,[tt,o(i,{value:r.value.title,"onUpdate:value":e[0]||(e[0]=a=>r.value.title=a),placeholder:"عنوان پیام"},null,8,["value"])]),s("div",null,[at,o(g(h),{value:r.value.body,"onUpdate:value":e[1]||(e[1]=a=>r.value.body=a),placeholder:"متن اطلاع‌رسانی برای کاربران",rows:4},null,8,["value"])]),s("div",it,[s("div",null,[lt,o(i,{value:r.value.cta_label,"onUpdate:value":e[2]||(e[2]=a=>r.value.cta_label=a),placeholder:"متوجه شدم"},null,8,["value"])]),s("div",null,[st,o(i,{value:G.value,"onUpdate:value":e[3]||(e[3]=a=>G.value=a),placeholder:"0"},null,8,["value"])])]),s("div",null,[o(g(Be),{checked:r.value.active,"onUpdate:checked":e[4]||(e[4]=a=>r.value.active=a)},{default:d(()=>[D("فعال")]),_:1},8,["checked"])]),s("div",null,[nt,o(g(Fe),{"file-list":P.value,"onUpdate:fileList":e[5]||(e[5]=a=>P.value=a),"before-upload":me,"custom-request":pe,headers:I,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:d(()=>[P.value.length<1?(k(),w("div",ot,[o(O,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),rt])):C("",!0)]),_:1},8,["file-list"]),S.value>0&&S.value<100?(k(),w("div",ut,[s("div",ct,[s("div",{class:"h-2 bg-blue-500 transition-all",style:Le({width:`${S.value}%`})},null,4)])])):C("",!0)]),s("div",dt,[mt,o(g(p),{value:x.value,"onUpdate:value":e[6]||(e[6]=a=>x.value=a),class:"flex flex-col gap-2"},{default:d(()=>[o(g(K),{value:"all"},{default:d(()=>[D("همه کاربران")]),_:1}),o(g(K),{value:"selected"},{default:d(()=>[D("فقط کاربران انتخاب‌شده از جدول")]),_:1}),o(g(K),{value:"segment"},{default:d(()=>[D("دسته‌های مخاطب (+ کاربران انتخاب‌شده از جدول)")]),_:1})]),_:1},8,["value"]),x.value==="segment"?(k(),Me(De,{key:0,modelValue:U.value,"onUpdate:modelValue":e[7]||(e[7]=a=>U.value=a),"include-user-count":y.value.length,"show-actions":!1,"show-preview":!0,"title-text":"دسته‌های مخاطب","preview-loading":F.value,"preview-text":j.value,onPreview:fe},null,8,["modelValue","include-user-count","preview-loading","preview-text"])):C("",!0),x.value==="selected"&&y.value.length?(k(),w("div",pt,te(y.value.length.toLocaleString("fa-IR"))+" کاربر انتخاب شده است ",1)):C("",!0),x.value!=="all"?(k(),w("div",vt,[s("div",_t,[D(" کاربران را جستجو و انتخاب کنید "),x.value==="segment"?(k(),w("span",gt," (اختیاری، به دسته‌ها اضافه می‌شود)")):C("",!0)]),o(u,ee(H.value,{"row-selection":ue.value,onRegister:g(q)}),null,16,["row-selection","onRegister"])])):C("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{Ia as default};