2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{_ as ve}from"./BasicModal.vue_vue_type_style_index_0_lang-aed8f5e4.js";import{_ as _e}from"./BasicInput.vue_vue_type_style_index_0_lang-e6a4e582.js";import{u as H,_ as fe}from"./useBaseTable-e7a67916.js";import{_ as he}from"./button.vue_vue_type_style_index_0_lang-f90e25b2.js";import{I as D}from"./Icon-29e38d16.js";import{t as ge}from"./useDataTime-6e234adb.js";import{g as we,a as xe,v as ye}from"./itemViews-9a58c947.js";import{_ as be,O as ke,P as ee,Q as Me,d as Ae,i as v,z as Ce,B as W,o as A,c as C,e as o,w as m,f as J,b as s,l as x,t as O,R as X,n as V,H as h,S as Q}from"./index-1ba0f9ec.js";import{g as B}from"./convert-2ad76038.js";import{g as Y}from"./index-c4537a3b.js";import{M as Ie}from"./index-ec322234.js";import{S as G}from"./index-4bff02a6.js";import{T as P}from"./isSymbol-355a1404.js";import{U as K}from"./index-f4084f09.js";import"./usePrice-bc935b83.js";import"./index-aafc0fe2.js";import"./SearchOutlined-95278fe5.js";import"./omit-f5d28cd3.js";import"./vnode-c4e67237.js";import"./FormItemContext-33ef1221.js";import"./index-8f2b7e91.js";import"./_plugin-vue_export-helper-31e07528.js";import"./isPlainObject-e945bc1f.js";import"./index-73cafb1e.js";import"./updateLocale-a8654270.js";import"./shallowequal-e0d9eafb.js";import"./useState-dcd360f8.js";import"./useMemo-ee45fb46.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-e22339b6.js";import"./styleChecker-19ce40ea.js";import"./index-876da578.js";import"./index-3f6d5caa.js";import"./LeftOutlined-93011b30.js";import"./css-aae66f86.js";import"./DialogWrap-394d7eb0.js";import"./pickAttrs-0ddf9a54.js";import"./index-e0664925.js";import"./toArray-41940180.js";import"./isMobile-e2e89480.js";import"./index-175b83cf.js";import"./supabaseTableQuery-e0472e9c.js";import"./index-83b891e2.js";import"./_flatRest-7877cdf8.js";import"./Col-f8806a10.js";import"./index-65e13d19.js";import"./useRefs-5e33302c.js";const Re=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:l=>l.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"زیرعنوان",dataIndex:"sub_title",key:"sub_title"},{title:"زمان",dataIndex:"time",key:"time",customRender:l=>{const p=l.record.time||{minutes:0,seconds:0},r=String(p.minutes??0).padStart(2,"0"),g=String(p.seconds??0).padStart(2,"0");return`${r}:${g}`}},{title:"صوت",dataIndex:"src",key:"src",customRender:l=>l.record.src?"دارد":"-"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",align:"center"},{title:"نمایش",dataIndex:"show",key:"show",align:"center",customRender:l=>l.record.show===!1?"مخفی":"نمایش"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:l=>ge(l.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],te="music_macharta_audio";async function Te(l){const p=await ke("music_macharta_audios",l);return Array.isArray(p)?p:[p]}async function Ue(l,p){const r=await ee("music_macharta_audios",l,{...p,updated_at:new Date().toISOString()});return Array.isArray(r)?r:[r]}async function Se(l,p){const r=await ee("music_macharta_audios",l,{show:p,updated_at:new Date().toISOString()});return Array.isArray(r)?r:[r]}async function De(l){await Me("music_macharta_audios",l)}function $e(l){return xe(l,te)}function Z(l,p){return we(l,p,te)}async function Le(l){const{TableEngineRequest:p}=await be(()=>import("./buildSupabaseQuery-2323f568.js"),["assets/buildSupabaseQuery-2323f568.js","assets/index-1ba0f9ec.js","assets/index-cb402307.css"]),r={...l};!r.sort&&!r.order&&(r.sort={key:"sort_order",order:"desc"});const g=await p(r,"music_macharta_audios");try{if(Array.isArray(g==null?void 0:g.rows)){const y=r.page||1,R=r.limit||20,T=(y-1)*R,I=g.rows.map((c,$)=>({...c,title:c.title??"",sub_title:c.sub_title??"",cover:c.cover??null,src:c.src??null,time:c.time??{minutes:0,seconds:0},show:c.show??!0,sort_order:c.sort_order??0,index:T+$}));return{...g,rows:I}}}catch(y){console.error("[getMusicMachartaAudiosTable]",y)}return g}const Ve={class:"h-full"},Be={class:"gap-2 flex justify-center"},Pe=s("span",null,"بازدیدها",-1),Ee=s("span",null,"حذف",-1),Oe=s("span",null,"ویرایش",-1),Fe={class:"space-y-4 relative"},ze={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Ne=s("div",{class:"mb-1 text-sm text-gray-600"},"عنوان *",-1),qe=s("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1),je=s("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),He={class:"flex gap-4"},We={class:"flex-1"},Je=s("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),Xe={key:0},Qe=s("div",null,"آپلود کاور",-1),Ye={class:"flex-1"},Ge=s("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت *",-1),Ke={key:0},Ze=s("div",null,"آپلود صوت",-1),et=s("div",{class:"mb-1 text-sm text-gray-600"},"مدت زمان (خودکار پس از آپلود)",-1),tt={class:"flex gap-4"},at={class:"flex justify-end"},st={key:0,class:"space-y-4"},it={class:"grid grid-cols-2 gap-4"},ot={class:"bg-blue-50 p-4 rounded-lg"},lt=s("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدید",-1),nt={class:"text-2xl font-bold text-blue-600"},rt={class:"bg-purple-50 p-4 rounded-lg"},ut=s("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدیدکننده",-1),ct={class:"text-2xl font-bold text-purple-600"},dt=s("div",{class:"text-sm font-semibold text-gray-700 mb-2"},"لیست بازدیدکنندهها",-1),mt={key:0},pt={key:1,class:"text-center py-8 text-gray-500"},vt={key:1,class:"flex justify-center items-center py-8"},pa=Ae({__name:"index",setup(l){const[p,r]=H(),g=v({columns:Re,api:Le,defaultPageLimit:20}),y=v(!1),R=v(!1),T=v(null),I=v(!1),c=v(null),$=v(!1),E=v(null),[ae,F]=H(),z=v({columns:ye,api:e=>Z(e,E.value),defaultPageLimit:20}),U=v([]),S=v([]),k=v(0),N=v(0);v(0);const i=v({title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},show:!0,sort_order:0});function se(){U.value=[],S.value=[],R.value=!1,T.value=null,i.value={title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},show:!0,sort_order:0},y.value=!0}function q(){y.value=!1}function ie(e){R.value=!0,T.value=e.id,i.value={title:e.title||"",sub_title:e.sub_title||"",cover:e.cover||null,src:e.src||null,time:e.time||{minutes:0,seconds:0},show:e.show!==!1,sort_order:e.sort_order??0},S.value=e.cover?[{uid:`${e.id}-cover`,name:"cover",status:"done",url:B(e.cover)}]:[],U.value=e.src?[{uid:`${e.id}-audio`,name:"audio",status:"done",url:B(e.src)}]:[],y.value=!0}function oe(e){Ie.confirm({title:"حذف صوت",content:`آیا از حذف «${e.title}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",onOk:async()=>{await De(e.id),h.success("حذف شد"),r()}})}async function le(e){await Se(e.id,e.show===!1),h.success(e.show===!1?"نمایش داده شد":"مخفی شد"),r()}function ne(e){return e.type.startsWith("audio/")?e.size/1024/1024>=61?(h.error("حجم فایل باید کمتر از 60MB باشد"),!1):!0:(h.error("فقط فایلهای صوتی مجاز است"),!1)}function re(e){const t=new Audio,d=URL.createObjectURL(e);t.addEventListener("loadedmetadata",()=>{const _=t.duration;_&&!isNaN(_)&&isFinite(_)&&(i.value.time.minutes=Math.floor(_/60),i.value.time.seconds=Math.floor(_%60)),URL.revokeObjectURL(d)}),t.src=d}async function ue(e){const{file:t,onSuccess:d,onError:_,onProgress:f}=e;re(t);const M=new FormData;M.append("file",t),k.value++,await new Promise((a,b)=>{const n=new XMLHttpRequest;n.open("POST",`${Q}/upload/machartaa-audio`),n.setRequestHeader("Authorization",`Bearer ${Y()||localStorage.getItem("tamin_token")||""}`),n.upload.onprogress=u=>{if(u.lengthComputable){const w=Math.round(u.loaded/u.total*100);N.value=w,f==null||f({percent:w})}},n.onload=()=>{if(n.status>=200&&n.status<300){const u=JSON.parse(n.responseText||"{}"),w=u.full_src||u.url||u.src||u.path||"",L=w.startsWith("http")?w.replace(/^https?:\/\/[^/]+/,""):w;i.value.src=L,U.value=[{uid:`${Date.now()}`,name:t.name,status:"done",url:B(L)}],d==null||d(u,n),h.success("صوت آپلود شد"),a()}else _==null||_(new Error("خطا در آپلود"),n),b()},n.onerror=()=>b(),n.onloadend=()=>{k.value=Math.max(0,k.value-1),N.value=0},n.send(M)})}function ce(e){return e.type.startsWith("image/")?!0:(h.error("فقط فایل تصویری مجاز است"),!1)}async function de(e){const{file:t,onSuccess:d,onError:_,onProgress:f}=e,M=new FormData;M.append("file",t),k.value++,await new Promise((a,b)=>{const n=new XMLHttpRequest;n.open("POST",`${Q}/upload/machartaa-img`),n.setRequestHeader("Authorization",`Bearer ${Y()||localStorage.getItem("tamin_token")||""}`),n.upload.onprogress=u=>{u.lengthComputable&&(f==null||f({percent:Math.round(u.loaded/u.total*100)}))},n.onload=()=>{if(n.status>=200&&n.status<300){const u=JSON.parse(n.responseText||"{}"),w=u.full_src||u.url||u.src||u.path||"",L=w.startsWith("http")?w.replace(/^https?:\/\/[^/]+/,""):w;i.value.cover=L,S.value=[{uid:`${Date.now()}`,name:t.name,status:"done",url:B(L)}],d==null||d(u,n),a()}else b()},n.onerror=()=>b(),n.onloadend=()=>{k.value=Math.max(0,k.value-1)},n.send(M)})}async function me(){var t,d;if(!((t=i.value.title)!=null&&t.trim())){h.warning("عنوان الزامی است");return}if(!i.value.src){h.warning("فایل صوتی الزامی است");return}const e={title:i.value.title.trim(),sub_title:((d=i.value.sub_title)==null?void 0:d.trim())||"",cover:i.value.cover,src:i.value.src,time:i.value.time,show:i.value.show,sort_order:Number(i.value.sort_order)||0};R.value&&T.value?(await Ue(T.value,e),h.success("ویرایش شد")):(await Te(e),h.success("افزوده شد")),q(),r()}async function pe(e){E.value=e.id,I.value=!0,$.value=!0,c.value=null;try{c.value=await $e(e.id),z.value.api=t=>Z(t,e.id)}catch(t){console.error("Error loading views:",t),h.error("خطا در بارگذاری اطلاعات بازدیدها: "+(t.message||"خطای ناشناخته"))}finally{$.value=!1}}Ce([I,c],async([e,t])=>{if(e&&t&&t.total_views>0){await W(),await W();try{await F()}catch{setTimeout(async()=>{try{await F()}catch(d){console.warn("Could not reload viewers table:",d)}},200)}}},{immediate:!1});function j(){I.value=!1,c.value=null,E.value=null}return(e,t)=>{const d=he,_=fe,f=_e,M=ve;return A(),C("div",Ve,[o(_,X(g.value,{ref:"table",onRegister:x(p)}),{extraHeader:m(()=>[o(d,{type:"primary",onClick:se},{default:m(()=>[J("افزودن صوت")]),_:1})]),action:m(({record:a})=>[s("div",Be,[o(x(P),{class:"cursor-pointer"},{title:m(()=>[Pe]),default:m(()=>[o(D,{icon:"vuesax-linear:monitor",color:"#8B5CF6",onClick:b=>pe(a)},null,8,["onClick"])]),_:2},1024),o(x(P),{class:"cursor-pointer"},{title:m(()=>[s("span",null,O((a==null?void 0:a.show)===!1?"نمایش دادن":"مخفی کردن"),1)]),default:m(()=>[o(D,{icon:(a==null?void 0:a.show)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(a==null?void 0:a.show)===!1?"#10B981":"#F59E0B",onClick:b=>le(a)},null,8,["icon","color","onClick"])]),_:2},1024),o(x(P),{class:"cursor-pointer"},{title:m(()=>[Ee]),default:m(()=>[o(D,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:b=>oe(a)},null,8,["onClick"])]),_:2},1024),o(x(P),{class:"cursor-pointer"},{title:m(()=>[Oe]),default:m(()=>[o(D,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:b=>ie(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),o(M,{visible:y.value,"onUpdate:visible":t[7]||(t[7]=a=>y.value=a),title:R.value?"ویرایش صوت":"افزودن صوت",onOk:me,onCancel:q,width:"80%",confirmLoading:k.value>0},{default:m(()=>[s("div",Fe,[k.value>0?(A(),C("div",ze,[o(x(G),{size:"large"})])):V("",!0),s("div",null,[Ne,o(f,{value:i.value.title,"onUpdate:value":t[0]||(t[0]=a=>i.value.title=a),placeholder:"عنوان"},null,8,["value"])]),s("div",null,[qe,o(f,{value:i.value.sub_title,"onUpdate:value":t[1]||(t[1]=a=>i.value.sub_title=a),placeholder:"زیرعنوان"},null,8,["value"])]),s("div",null,[je,o(f,{value:i.value.sort_order,"onUpdate:value":t[2]||(t[2]=a=>i.value.sort_order=a),type:"number",placeholder:"0"},null,8,["value"])]),s("div",He,[s("div",We,[Je,o(x(K),{"file-list":S.value,"onUpdate:fileList":t[3]||(t[3]=a=>S.value=a),"before-upload":ce,"custom-request":de,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:m(()=>[S.value.length<1?(A(),C("div",Xe,[o(D,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Qe])):V("",!0)]),_:1},8,["file-list"])]),s("div",Ye,[Ge,o(x(K),{"file-list":U.value,"onUpdate:fileList":t[4]||(t[4]=a=>U.value=a),"before-upload":ne,"custom-request":ue,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:m(()=>[U.value.length<1?(A(),C("div",Ke,[o(D,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),Ze])):V("",!0)]),_:1},8,["file-list"])])]),s("div",null,[et,s("div",tt,[o(f,{value:i.value.time.minutes,"onUpdate:value":t[5]||(t[5]=a=>i.value.time.minutes=a),type:"number",placeholder:"دقیقه",disabled:!0},null,8,["value"]),o(f,{value:i.value.time.seconds,"onUpdate:value":t[6]||(t[6]=a=>i.value.time.seconds=a),type:"number",placeholder:"ثانیه",disabled:!0},null,8,["value"])])])])]),_:1},8,["visible","title","confirmLoading"]),o(M,{visible:I.value,"onUpdate:visible":t[8]||(t[8]=a=>I.value=a),title:"اطلاعات بازدیدها",onCancel:j,width:"800px",customFooter:!0,okText:""},{footer:m(()=>[s("div",at,[o(d,{onClick:j},{default:m(()=>[J("بستن")]),_:1})])]),default:m(()=>[c.value?(A(),C("div",st,[s("div",it,[s("div",ot,[lt,s("div",nt,O(c.value.total_views),1)]),s("div",rt,[ut,s("div",ct,O(c.value.unique_viewers),1)])]),s("div",null,[dt,c.value&&c.value.total_views>0?(A(),C("div",mt,[o(_,X(z.value,{onRegister:x(ae)}),null,16,["onRegister"])])):(A(),C("div",pt," هنوز بازدیدی ثبت نشده است "))])])):$.value?(A(),C("div",vt,[o(x(G),{size:"large"})])):V("",!0)]),_:1},8,["visible"])])}}});export{pa as default};
|