Files
machartaa_admin_dist/dist/assets/index-2f7facd1.js
T
2026-07-13 14:17:44 +03:30

2 lines
13 KiB
JavaScript

import{_ as pe}from"./BasicModal.vue_vue_type_style_index_0_lang-d3e2b6d9.js";import{_ as _e}from"./BasicInput.vue_vue_type_style_index_0_lang-f566c603.js";import{u as W,_ as fe}from"./useBaseTable-2c12f999.js";import{_ as he}from"./button.vue_vue_type_style_index_0_lang-0f677bfc.js";import{I as D}from"./Icon-01a88edc.js";import{t as ge}from"./useDataTime-2e34f996.js";import{v as we}from"./viewersColumns-8537dfaa.js";import{_ as xe,G as P,d as be,g as _,E as ye,O as J,o as I,c as C,b as i,w as v,e as X,a as s,j as x,t as q,H as G,k as V,D as g,I as Y}from"./index-25cd5b63.js";import{g as ke,a as Me}from"./itemViews-3ad3fb1e.js";import{g as B}from"./convert-2ad76038.js";import{g as K}from"./index-41d6370d.js";import{M as Ie}from"./index-b02fc407.js";import{S as Q}from"./index-517534fa.js";import{T as E}from"./isSymbol-77c00ba0.js";import{U as Z}from"./index-fa98773a.js";import"./usePrice-bc935b83.js";import"./index-27d91bcb.js";import"./FormItemContext-98c099ed.js";import"./vnode-f0cfc776.js";import"./isPlainObject-8b65ef77.js";import"./_plugin-vue_export-helper-8d8742f4.js";import"./updateLocale-0fa6d737.js";import"./toArray-0e67c9de.js";import"./pickAttrs-e75df291.js";import"./useState-d0b157bd.js";import"./lodash-6b23de74.js";import"./css-19df7134.js";import"./DialogWrap-5bf5c8bc.js";import"./index-e45ca121.js";import"./styleChecker-8ac93962.js";import"./index-a77b6e96.js";import"./_flatRest-93154856.js";import"./Col-cf6eff58.js";import"./useRefs-50f31a64.js";const Ce=[{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 m=l.record.time||{minutes:0,seconds:0},r=String(m.minutes??0).padStart(2,"0"),p=String(m.seconds??0).padStart(2,"0");return`${r}:${p}`}},{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{data:m,error:r}=await P.from("music_macharta_audios").insert([l]).select();if(r)throw r;return m}async function Ue(l,m){const{data:r,error:p}=await P.from("music_macharta_audios").update({...m,updated_at:new Date().toISOString()}).eq("id",l).select();if(p)throw p;return r}async function Ae(l,m){const{data:r,error:p}=await P.from("music_macharta_audios").update({show:m,updated_at:new Date().toISOString()}).eq("id",l).select();if(p)throw p;return r}async function Re(l){const{error:m}=await P.from("music_macharta_audios").delete().eq("id",l);if(m)throw m}function Se(l){return Me(l,te)}function ee(l,m){return ke(l,m,te)}async function De(l){const{TableEngineRequest:m}=await xe(()=>import("./buildSupabaseQuery-5c162ca9.js"),["assets/buildSupabaseQuery-5c162ca9.js","assets/index-25cd5b63.js","assets/index-2b0c085a.css","assets/supabaseTableQuery-95762ff3.js"]),r={...l};!r.sort&&!r.order&&(r.sort={key:"sort_order",order:"desc"});const p=await m(r,"music_macharta_audios");try{if(Array.isArray(p==null?void 0:p.rows)){const b=r.page||1,U=r.limit||20,A=(b-1)*U,T=p.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:A+$}));return{...p,rows:T}}}catch(b){console.error("[getMusicMachartaAudiosTable]",b)}return p}const $e={class:"h-full"},Le={class:"gap-2 flex justify-center"},Ve=s("span",null,"بازدیدها",-1),Be=s("span",null,"حذف",-1),Ee=s("span",null,"ویرایش",-1),Pe={class:"space-y-4 relative"},Oe={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},qe=s("div",{class:"mb-1 text-sm text-gray-600"},"عنوان *",-1),Fe=s("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1),Ne=s("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),ze={class:"flex gap-4"},He={class:"flex-1"},je=s("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),We={key:0},Je=s("div",null,"آپلود کاور",-1),Xe={class:"flex-1"},Ge=s("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت *",-1),Ye={key:0},Ke=s("div",null,"آپلود صوت",-1),Qe=s("div",{class:"mb-1 text-sm text-gray-600"},"مدت زمان (خودکار پس از آپلود)",-1),Ze={class:"flex gap-4"},et={class:"flex justify-end"},tt={key:0,class:"space-y-4"},at={class:"grid grid-cols-2 gap-4"},st={class:"bg-blue-50 p-4 rounded-lg"},ot=s("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدید",-1),it={class:"text-2xl font-bold text-blue-600"},lt={class:"bg-purple-50 p-4 rounded-lg"},nt=s("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدیدکننده",-1),rt={class:"text-2xl font-bold text-purple-600"},ut=s("div",{class:"text-sm font-semibold text-gray-700 mb-2"},"لیست بازدیدکننده‌ها",-1),ct={key:0},dt={key:1,class:"text-center py-8 text-gray-500"},mt={key:1,class:"flex justify-center items-center py-8"},Jt=be({__name:"index",setup(l){const[m,r]=W(),p=_({columns:Ce,api:De,defaultPageLimit:20}),b=_(!1),U=_(!1),A=_(null),T=_(!1),c=_(null),$=_(!1),O=_(null),[ae,F]=W(),N=_({columns:we,api:e=>ee(e,O.value),defaultPageLimit:20}),R=_([]),S=_([]),k=_(0),z=_(0);_(0);const o=_({title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},show:!0,sort_order:0});function se(){R.value=[],S.value=[],U.value=!1,A.value=null,o.value={title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},show:!0,sort_order:0},b.value=!0}function H(){b.value=!1}function oe(e){U.value=!0,A.value=e.id,o.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)}]:[],R.value=e.src?[{uid:`${e.id}-audio`,name:"audio",status:"done",url:B(e.src)}]:[],b.value=!0}function ie(e){Ie.confirm({title:"حذف صوت",content:`آیا از حذف «${e.title}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",onOk:async()=>{await Re(e.id),g.success("حذف شد"),r()}})}async function le(e){await Ae(e.id,e.show===!1),g.success(e.show===!1?"نمایش داده شد":"مخفی شد"),r()}function ne(e){return e.type.startsWith("audio/")?e.size/1024/1024>=61?(g.error("حجم فایل باید کمتر از 60MB باشد"),!1):!0:(g.error("فقط فایل‌های صوتی مجاز است"),!1)}function re(e){const t=new Audio,d=URL.createObjectURL(e);t.addEventListener("loadedmetadata",()=>{const f=t.duration;f&&!isNaN(f)&&isFinite(f)&&(o.value.time.minutes=Math.floor(f/60),o.value.time.seconds=Math.floor(f%60)),URL.revokeObjectURL(d)}),t.src=d}async function ue(e){const{file:t,onSuccess:d,onError:f,onProgress:h}=e;re(t);const M=new FormData;M.append("file",t),k.value++,await new Promise((a,y)=>{const n=new XMLHttpRequest;n.open("POST",`${Y}/upload/machartaa-audio`),n.setRequestHeader("Authorization",`Bearer ${K()||localStorage.getItem("tamin_token")||""}`),n.upload.onprogress=u=>{if(u.lengthComputable){const w=Math.round(u.loaded/u.total*100);z.value=w,h==null||h({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;o.value.src=L,R.value=[{uid:`${Date.now()}`,name:t.name,status:"done",url:B(L)}],d==null||d(u,n),g.success("صوت آپلود شد"),a()}else f==null||f(new Error("خطا در آپلود"),n),y()},n.onerror=()=>y(),n.onloadend=()=>{k.value=Math.max(0,k.value-1),z.value=0},n.send(M)})}function ce(e){return e.type.startsWith("image/")?!0:(g.error("فقط فایل تصویری مجاز است"),!1)}async function de(e){const{file:t,onSuccess:d,onError:f,onProgress:h}=e,M=new FormData;M.append("file",t),k.value++,await new Promise((a,y)=>{const n=new XMLHttpRequest;n.open("POST",`${Y}/upload/machartaa-img`),n.setRequestHeader("Authorization",`Bearer ${K()||localStorage.getItem("tamin_token")||""}`),n.upload.onprogress=u=>{u.lengthComputable&&(h==null||h({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;o.value.cover=L,S.value=[{uid:`${Date.now()}`,name:t.name,status:"done",url:B(L)}],d==null||d(u,n),a()}else y()},n.onerror=()=>y(),n.onloadend=()=>{k.value=Math.max(0,k.value-1)},n.send(M)})}async function me(){var t,d;if(!((t=o.value.title)!=null&&t.trim())){g.warning("عنوان الزامی است");return}if(!o.value.src){g.warning("فایل صوتی الزامی است");return}const e={title:o.value.title.trim(),sub_title:((d=o.value.sub_title)==null?void 0:d.trim())||"",cover:o.value.cover,src:o.value.src,time:o.value.time,show:o.value.show,sort_order:Number(o.value.sort_order)||0};U.value&&A.value?(await Ue(A.value,e),g.success("ویرایش شد")):(await Te(e),g.success("افزوده شد")),H(),r()}async function ve(e){O.value=e.id,T.value=!0,$.value=!0,c.value=null;try{c.value=await Se(e.id),N.value.api=t=>ee(t,e.id)}catch(t){console.error("Error loading views:",t),g.error("خطا در بارگذاری اطلاعات بازدیدها: "+(t.message||"خطای ناشناخته"))}finally{$.value=!1}}ye([T,c],async([e,t])=>{if(e&&t&&t.total_views>0){await J(),await J();try{await F()}catch{setTimeout(async()=>{try{await F()}catch(d){console.warn("Could not reload viewers table:",d)}},200)}}},{immediate:!1});function j(){T.value=!1,c.value=null,O.value=null}return(e,t)=>{const d=he,f=fe,h=_e,M=pe;return I(),C("div",$e,[i(f,G(p.value,{ref:"table",onRegister:x(m)}),{extraHeader:v(()=>[i(d,{type:"primary",onClick:se},{default:v(()=>[X("افزودن صوت")]),_:1})]),action:v(({record:a})=>[s("div",Le,[i(x(E),{class:"cursor-pointer"},{title:v(()=>[Ve]),default:v(()=>[i(D,{icon:"vuesax-linear:monitor",color:"#8B5CF6",onClick:y=>ve(a)},null,8,["onClick"])]),_:2},1024),i(x(E),{class:"cursor-pointer"},{title:v(()=>[s("span",null,q((a==null?void 0:a.show)===!1?"نمایش دادن":"مخفی کردن"),1)]),default:v(()=>[i(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:y=>le(a)},null,8,["icon","color","onClick"])]),_:2},1024),i(x(E),{class:"cursor-pointer"},{title:v(()=>[Be]),default:v(()=>[i(D,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:y=>ie(a)},null,8,["onClick"])]),_:2},1024),i(x(E),{class:"cursor-pointer"},{title:v(()=>[Ee]),default:v(()=>[i(D,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:y=>oe(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),i(M,{visible:b.value,"onUpdate:visible":t[7]||(t[7]=a=>b.value=a),title:U.value?"ویرایش صوت":"افزودن صوت",onOk:me,onCancel:H,width:"80%",confirmLoading:k.value>0},{default:v(()=>[s("div",Pe,[k.value>0?(I(),C("div",Oe,[i(x(Q),{size:"large"})])):V("",!0),s("div",null,[qe,i(h,{value:o.value.title,"onUpdate:value":t[0]||(t[0]=a=>o.value.title=a),placeholder:"عنوان"},null,8,["value"])]),s("div",null,[Fe,i(h,{value:o.value.sub_title,"onUpdate:value":t[1]||(t[1]=a=>o.value.sub_title=a),placeholder:"زیرعنوان"},null,8,["value"])]),s("div",null,[Ne,i(h,{value:o.value.sort_order,"onUpdate:value":t[2]||(t[2]=a=>o.value.sort_order=a),type:"number",placeholder:"0"},null,8,["value"])]),s("div",ze,[s("div",He,[je,i(x(Z),{"file-list":S.value,"onUpdate:fileList":t[3]||(t[3]=a=>S.value=a),"before-upload":ce,"custom-request":de,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:v(()=>[S.value.length<1?(I(),C("div",We,[i(D,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Je])):V("",!0)]),_:1},8,["file-list"])]),s("div",Xe,[Ge,i(x(Z),{"file-list":R.value,"onUpdate:fileList":t[4]||(t[4]=a=>R.value=a),"before-upload":ne,"custom-request":ue,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:v(()=>[R.value.length<1?(I(),C("div",Ye,[i(D,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),Ke])):V("",!0)]),_:1},8,["file-list"])])]),s("div",null,[Qe,s("div",Ze,[i(h,{value:o.value.time.minutes,"onUpdate:value":t[5]||(t[5]=a=>o.value.time.minutes=a),type:"number",placeholder:"دقیقه",disabled:!0},null,8,["value"]),i(h,{value:o.value.time.seconds,"onUpdate:value":t[6]||(t[6]=a=>o.value.time.seconds=a),type:"number",placeholder:"ثانیه",disabled:!0},null,8,["value"])])])])]),_:1},8,["visible","title","confirmLoading"]),i(M,{visible:T.value,"onUpdate:visible":t[8]||(t[8]=a=>T.value=a),title:"اطلاعات بازدیدها",onCancel:j,width:"800px",customFooter:!0,okText:""},{footer:v(()=>[s("div",et,[i(d,{onClick:j},{default:v(()=>[X("بستن")]),_:1})])]),default:v(()=>[c.value?(I(),C("div",tt,[s("div",at,[s("div",st,[ot,s("div",it,q(c.value.total_views),1)]),s("div",lt,[nt,s("div",rt,q(c.value.unique_viewers),1)])]),s("div",null,[ut,c.value&&c.value.total_views>0?(I(),C("div",ct,[i(f,G(N.value,{onRegister:x(ae)}),null,16,["onRegister"])])):(I(),C("div",dt," هنوز بازدیدی ثبت نشده است "))])])):$.value?(I(),C("div",mt,[i(x(Q),{size:"large"})])):V("",!0)]),_:1},8,["visible"])])}}});export{Jt as default};