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

2 lines
15 KiB
JavaScript

import{_ as we}from"./BasicModal.vue_vue_type_style_index_0_lang-aed8f5e4.js";import{_ as ye,u as xe}from"./useBaseTable-e7a67916.js";import{_ as ke}from"./BasicMainCard-33e38576.js";import{_ as Te}from"./BasicInput.vue_vue_type_style_index_0_lang-e6a4e582.js";import{_ as Ie}from"./button.vue_vue_type_style_index_0_lang-f90e25b2.js";import{I as S}from"./Icon-29e38d16.js";import{t as Ue}from"./useDataTime-6e234adb.js";import{_ as Re,O as ne,P as ie,Q as Ce,U as oe,d as Be,i as f,x as Se,o as x,c as k,e as s,w as d,b as n,f as N,R as Ae,l as h,t as Ee,n as A,C as X,H as _,S as Le}from"./index-1ba0f9ec.js";import{g as E}from"./convert-2ad76038.js";import{n as Y}from"./textUtils-c37780ad.js";import{g as Z}from"./index-c4537a3b.js";import{M as Me}from"./index-ec322234.js";import{S as $e}from"./index-4bff02a6.js";import{C as je}from"./index-e22339b6.js";import{I as De}from"./index-aafc0fe2.js";import{T as F}from"./isSymbol-355a1404.js";import{U as ee}from"./index-f4084f09.js";import"./updateLocale-a8654270.js";import"./index-8f2b7e91.js";import"./_plugin-vue_export-helper-31e07528.js";import"./shallowequal-e0d9eafb.js";import"./vnode-c4e67237.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"./Grid-660f1a55.js";import"./index-f22a4554.js";import"./useRefs-5e33302c.js";import"./_flatRest-7877cdf8.js";import"./index-c136a321.js";import"./Col-f8806a10.js";import"./styleChecker-19ce40ea.js";import"./isPlainObject-e945bc1f.js";import"./usePrice-bc935b83.js";import"./DialogWrap-394d7eb0.js";import"./index-876da578.js";import"./LeftOutlined-93011b30.js";import"./css-aae66f86.js";import"./index-83b891e2.js";import"./index-65e13d19.js";const te=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:o=>o.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"عنوان ویدیو",dataIndex:"video_title",key:"video_title",customRender:o=>o.record.video_title||"-"},{title:"اسلایدر خانه",dataIndex:"show_on_home",key:"show_on_home",align:"center",width:120,customRender:o=>o.record.show_on_home?"بله":"خیر"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:o=>Ue(o.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function Oe(o){const c=await ne("announcements",o);return Array.isArray(c)?c:[c]}async function ae(o,c){const u=await ie("announcements",o,{...c,updated_at:new Date().toISOString()});return Array.isArray(u)?u:[u]}async function ze(o){await Ce("announcements",o)}async function Ge(o){const{TableEngineRequest:c}=await Re(()=>import("./buildSupabaseQuery-2323f568.js"),["assets/buildSupabaseQuery-2323f568.js","assets/index-1ba0f9ec.js","assets/index-cb402307.css"]),u={...o};!u.sort&&!u.order&&(u.order="-id");const m=await c(u,"announcements");try{if(Array.isArray(m==null?void 0:m.rows)){const w=u.page||1,O=u.limit||20,z=(w-1)*O,G=m.rows.map((v,H)=>({...v,title:v.title??"",description:v.description??"",video_title:v.video_title??"",thumbnail:v.thumbnail??null,banner:v.banner??null,aparat_embed_code:v.aparat_embed_code??"",show_on_home:v.show_on_home!==!1,index:z+H}));return{...m,rows:G}}}catch(w){console.error("[getAnnouncementsTable]",w)}return m}const le="home_greeting_subtitle",V="امروز هم یه ماجراجویی تازه داریم!";async function He(o,c){var m,w;const u=await oe("configs",{filters:[{field:"key",op:"eq",value:o}],limit:1,page:1});if((w=(m=u.rows)==null?void 0:m[0])!=null&&w.id){await ie("configs",u.rows[0].id,{value:c});return}await ne("configs",{key:o,value:c})}async function Pe(){var u,m;const o=await oe("configs",{filters:[{field:"key",op:"eq",value:le}],limit:1,page:1});return String(((m=(u=o.rows)==null?void 0:u[0])==null?void 0:m.value)??"").trim()||V}async function qe(o){const c=o.trim()||V;return await He(le,c),c}const Ne={class:"flex flex-wrap items-start justify-between gap-3 mb-3"},Fe=n("div",null,[n("h2",{class:"m-0 text-base font-bold"},"متن خوش‌آمد صفحه خانه"),n("p",{class:"m-0 mt-1 text-sm text-gray-500"}," این متن کوچک زیر نام کاربر در سربرگ اپ نمایش داده می‌شود. ")],-1),Ve=n("div",{class:"mb-1 text-sm text-gray-600"},"متن زیر عنوان خوش‌آمد",-1),Je={class:"flex flex-wrap justify-between items-start gap-3 mb-4"},We=n("div",null,[n("h2",{class:"m-0"},"اطلاع‌رسانی ویدیویی"),n("p",{class:"m-0 mt-1 text-sm text-gray-500"}," ویدیوهای اطلاع‌رسانی. برای نمایش در اسلایدشو خانه، «بنر اطلاع‌رسانی» آپلود کنید. ")],-1),Ke=["src"],Qe={key:1},Xe=["src"],Ye={key:1},Ze={class:"gap-2 flex justify-center"},et=n("span",null,"حذف",-1),tt=n("span",null,"ویرایش",-1),at={class:"space-y-4 relative"},nt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},it=n("div",{class:"mb-1 text-sm text-gray-600"},"عنوان *",-1),ot={class:"rounded-xl border-2 border-dashed border-emerald-400 bg-emerald-50 p-4 space-y-3"},lt=n("div",null,[n("div",{class:"text-sm font-bold text-emerald-800"},"بنر اطلاع‌رسانی"),n("p",{class:"m-0 mt-1 text-xs text-gray-600 leading-5"}," تصویر عریض برای اسلایدشو خانه (کنار اسلایدر جدا). با کلیک، کاربر به همین اطلاع‌رسانی می‌رود. ")],-1),st={key:0},rt=n("div",null,"آپلود بنر",-1),ut={key:0,class:"mt-1"},mt={class:"h-2 rounded bg-gray-200 overflow-hidden"},ct=n("div",{class:"mb-1 text-sm text-gray-600"},"عنوان ویدیو",-1),dt=n("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات *",-1),pt=n("div",{class:"mb-1 text-sm text-gray-600"},"کد embed آپارات *",-1),_t=n("div",{class:"mb-1 text-sm text-gray-600"},"تامنیل لیست",-1),vt={key:0},ft=n("div",null,"آپلود تامنیل",-1),ht={key:0,class:"mt-1"},gt={class:"h-2 rounded bg-gray-200 overflow-hidden"},wa=Be({__name:"index",setup(o){const{TextArea:c}=De,u={authorization:`Bearer ${Z()||localStorage.getItem("tamin_token")||""}`},m=f(V),w=f(!1);async function O(){try{m.value=await Pe()}catch(t){_.error((t==null?void 0:t.message)||"خطا در بارگذاری متن خوش‌آمد")}}async function z(){w.value=!0;try{m.value=await qe(m.value),_.success("متن خوش‌آمد ذخیره شد")}catch(t){_.error((t==null?void 0:t.message)||"خطا در ذخیره متن خوش‌آمد")}finally{w.value=!1}}Se(()=>{O()});const[G,v]=xe(),H=f({columns:[...te.slice(0,2),{title:"بنر اطلاع‌رسانی",dataIndex:"banner",key:"banner",slot:"banner",align:"center",width:130,filterable:!1},{title:"تامنیل",dataIndex:"thumbnail",key:"thumbnail",slot:"thumbnail",align:"center",width:100,filterable:!1},...te.slice(2)],api:Ge,defaultPageLimit:20}),C=f(!1),L=f(!1),M=f(null),I=f([]),U=f([]),R=f(0),$=f(0),j=f(0),i=f({title:"",description:"",video_title:"",thumbnail:null,banner:null,aparat_embed_code:"",show_on_home:!0});function se(){I.value=[],U.value=[],L.value=!1,M.value=null,i.value={title:"",description:"",video_title:"",thumbnail:null,banner:null,aparat_embed_code:"",show_on_home:!0},C.value=!0}function J(){C.value=!1}function W(t){return t.type.startsWith("image/")?t.size/1024/1024<5?!0:(_.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(_.error("فقط فایل‌های تصویری مجاز است"),!1)}function P(t){return t?t.startsWith("http")?t.replace(/^https?:\/\/[^\/]+/,""):t:null}async function K(t,e,r,g){const{file:y,onSuccess:T,onError:b,onProgress:a}=t,B=new FormData;B.append("file",y);const fe=`${Le}/upload/machartaa-img`;r(0),R.value++,await new Promise((he,q)=>{const p=new XMLHttpRequest;p.open("POST",fe);const ge=Z()||localStorage.getItem("tamin_token")||"";p.setRequestHeader("Authorization",`Bearer ${ge}`),p.upload.onprogress=l=>{if(l.lengthComputable){const D=Math.round(l.loaded/l.total*100);r(D),a==null||a({percent:D})}},p.onload=()=>{if(r(100),p.status>=200&&p.status<300)try{const l=JSON.parse(p.responseText||"{}"),D=l.full_src||l.url||l.src||l.path||l.data&&(l.data.full_src||l.data.url||l.data.src||l.data.path)||"",Q=P(D)||"",be=E(Q);e(Q,be),T==null||T(l,p),_.success(g),he()}catch(l){b==null||b(l,p),q(l)}else{const l=new Error("خطا در آپلود تصویر");b==null||b(l,p),q(l)}},p.onerror=()=>{const l=new Error("خطا در آپلود تصویر");b==null||b(l,p),q(l)},p.onloadend=()=>{R.value=Math.max(0,R.value-1),r(0)},p.send(B)})}async function re(t){await K(t,(e,r)=>{i.value.thumbnail=e,I.value=r?[{uid:`${Date.now()}`,name:"thumbnail.jpg",status:"done",url:r,response:{path:e}}]:[]},e=>{$.value=e},"تامنیل با موفقیت آپلود شد!")}async function ue(t){await K(t,(e,r)=>{i.value.banner=e,U.value=r?[{uid:`${Date.now()}`,name:"banner.jpg",status:"done",url:r,response:{path:e}}]:[]},e=>{j.value=e},"بنر اطلاع‌رسانی با موفقیت آپلود شد!")}function me(){i.value.banner=null,U.value=[]}function ce(){i.value.thumbnail=null,I.value=[]}function de(t){L.value=!0,M.value=t.id;const e=P(t.thumbnail||null),r=P(t.banner||null);i.value={title:t.title||"",description:t.description||"",video_title:t.video_title||"",thumbnail:e,banner:r,aparat_embed_code:t.aparat_embed_code||"",show_on_home:t.show_on_home!==!1};const g=e?E(e):null,y=r?E(r):null;I.value=g?[{uid:"-1",name:"thumbnail.jpg",status:"done",url:g,response:{path:e}}]:[],U.value=y?[{uid:"-banner",name:"banner.jpg",status:"done",url:y,response:{path:r}}]:[],C.value=!0}async function pe(t){const e=t.show_on_home===!1;await ae(t.id,{show_on_home:e}),_.success(e?"در اسلایدر خانه نمایش داده می‌شود":"از اسلایدر خانه حذف شد"),v()}function _e(t){Me.confirm({title:"حذف اطلاع‌رسانی",content:`آیا از حذف «${t.title}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",onOk:async()=>{await ze(t.id),_.success("حذف شد"),v()}})}async function ve(){var e,r,g,y,T;if(!((e=i.value.title)!=null&&e.trim())){_.warning("عنوان الزامی است");return}if(!Y(i.value.description)){_.warning("توضیحات الزامی است");return}if(!((r=i.value.aparat_embed_code)!=null&&r.trim())){_.warning("کد embed آپارات الزامی است");return}if(R.value>0){_.warning("لطفاً تا پایان آپلود صبر کنید");return}const t={title:i.value.title.trim(),description:Y(i.value.description),video_title:((g=i.value.video_title)==null?void 0:g.trim())||"",thumbnail:((y=i.value.thumbnail)==null?void 0:y.trim())||null,banner:((T=i.value.banner)==null?void 0:T.trim())||null,aparat_embed_code:i.value.aparat_embed_code.trim(),show_on_home:i.value.show_on_home!==!1};L.value&&M.value?(await ae(M.value,t),_.success("ویرایش شد")):(await Oe(t),_.success("افزوده شد")),J(),v()}return(t,e)=>{const r=Ie,g=Te,y=ke,T=ye,b=we;return x(),k("div",null,[s(y,{class:"mb-4"},{default:d(()=>[n("div",Ne,[Fe,s(r,{type:"primary",loading:w.value,onClick:z},{default:d(()=>[N(" ذخیره متن ")]),_:1},8,["loading"])]),n("div",null,[Ve,s(g,{value:m.value,"onUpdate:value":e[0]||(e[0]=a=>m.value=a),placeholder:"مثلاً: امروز هم یه ماجراجویی تازه داریم!"},null,8,["value"])])]),_:1}),s(y,null,{default:d(()=>[n("div",Je,[We,s(r,{type:"primary",onClick:se},{default:d(()=>[N("افزودن اطلاع‌رسانی")]),_:1})]),s(T,Ae(H.value,{ref:"table",onRegister:h(G)}),{banner:d(({record:a})=>[a.banner?(x(),k("img",{key:0,src:h(E)(a.banner),alt:"",class:"w-20 h-10 object-cover rounded"},null,8,Ke)):(x(),k("span",Qe,"-"))]),thumbnail:d(({record:a})=>[a.thumbnail?(x(),k("img",{key:0,src:h(E)(a.thumbnail),alt:"",class:"w-16 h-10 object-cover rounded"},null,8,Xe)):(x(),k("span",Ye,"-"))]),action:d(({record:a})=>[n("div",Ze,[s(h(F),{class:"cursor-pointer"},{title:d(()=>[n("span",null,Ee((a==null?void 0:a.show_on_home)===!1?"نمایش در اسلایدر خانه":"حذف از اسلایدر خانه"),1)]),default:d(()=>[s(S,{icon:(a==null?void 0:a.show_on_home)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(a==null?void 0:a.show_on_home)===!1?"#10B981":"#F59E0B",onClick:B=>pe(a)},null,8,["icon","color","onClick"])]),_:2},1024),s(h(F),{class:"cursor-pointer"},{title:d(()=>[et]),default:d(()=>[s(S,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:B=>_e(a)},null,8,["onClick"])]),_:2},1024),s(h(F),{class:"cursor-pointer"},{title:d(()=>[tt]),default:d(()=>[s(S,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:B=>de(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),s(b,{visible:C.value,"onUpdate:visible":e[8]||(e[8]=a=>C.value=a),title:L.value?"ویرایش اطلاع‌رسانی":"افزودن اطلاع‌رسانی",onOk:ve,onCancel:J,width:"80%",confirmLoading:R.value>0},{default:d(()=>[n("div",at,[R.value>0?(x(),k("div",nt,[s(h($e),{size:"large"})])):A("",!0),n("div",null,[it,s(g,{value:i.value.title,"onUpdate:value":e[1]||(e[1]=a=>i.value.title=a),placeholder:"عنوان اطلاع‌رسانی"},null,8,["value"])]),n("div",ot,[lt,s(h(je),{checked:i.value.show_on_home,"onUpdate:checked":e[2]||(e[2]=a=>i.value.show_on_home=a)},{default:d(()=>[N("نمایش در اسلایدر صفحه اصلی")]),_:1},8,["checked"]),s(h(ee),{"file-list":U.value,"onUpdate:fileList":e[3]||(e[3]=a=>U.value=a),"before-upload":W,"custom-request":ue,headers:u,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",onRemove:me},{default:d(()=>[U.value.length<1?(x(),k("div",st,[s(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),rt])):A("",!0)]),_:1},8,["file-list"]),j.value>0&&j.value<100?(x(),k("div",ut,[n("div",mt,[n("div",{class:"h-2 bg-emerald-500 transition-all",style:X({width:`${j.value}%`})},null,4)])])):A("",!0)]),n("div",null,[ct,s(g,{value:i.value.video_title,"onUpdate:value":e[4]||(e[4]=a=>i.value.video_title=a),placeholder:"عنوان ویدیو"},null,8,["value"])]),n("div",null,[dt,s(h(c),{value:i.value.description,"onUpdate:value":e[5]||(e[5]=a=>i.value.description=a),placeholder:"متن توضیحات",rows:5},null,8,["value"])]),n("div",null,[pt,s(h(c),{value:i.value.aparat_embed_code,"onUpdate:value":e[6]||(e[6]=a=>i.value.aparat_embed_code=a),placeholder:"کد embed از آپارات",rows:4},null,8,["value"])]),n("div",null,[_t,s(h(ee),{"file-list":I.value,"onUpdate:fileList":e[7]||(e[7]=a=>I.value=a),"before-upload":W,"custom-request":re,headers:u,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",onRemove:ce},{default:d(()=>[I.value.length<1?(x(),k("div",vt,[s(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),ft])):A("",!0)]),_:1},8,["file-list"]),$.value>0&&$.value<100?(x(),k("div",ht,[n("div",gt,[n("div",{class:"h-2 bg-blue-500 transition-all",style:X({width:`${$.value}%`})},null,4)])])):A("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{wa as default};