Files
machartaa_admin_dist/dist/assets/index-60f153e9.js
T

2 lines
15 KiB
JavaScript

import{a3 as V,a5 as F,d as ut,r as g,i as ct,o as I,c as N,b as v,w,a,e as dt,a2 as mt,L as S,K as vt,N as P,X as j,O as K,a0 as k,a4 as R}from"./index-a9671513.js";import{_ as _t}from"./BasicMainCard-ddae39ab.js";import{M as pt,_ as ft}from"./BasicModal.vue_vue_type_style_index_0_lang-5afc1014.js";import{_ as bt}from"./BasicInput.vue_vue_type_style_index_0_lang-86bcfe9c.js";import{_ as ht}from"./index-9454089e.js";import{_ as kt}from"./button.vue_vue_type_style_index_0_lang-241a9705.js";import{I as O}from"./Icon-967ca316.js";import{_ as G}from"./BasicSelect.vue_vue_type_style_index_0_lang-e0a7c5e1.js";import{u as gt}from"./useBaseTable-3aeb2499.js";import{t as yt}from"./useDataTime-56db82be.js";import{getBooks as xt}from"./books-68b5883a.js";import{S as wt}from"./index-d4552ccf.js";import{T as E}from"./styleChecker-8312d0ee.js";import{U as Q}from"./index-0d82943c.js";import"./_plugin-vue_export-helper-d21b9c52.js";import"./index-470b960b.js";import"./useState-4aa9b7fe.js";import"./vnode-e4b7f976.js";import"./Col-ca1a058e.js";import"./index-837b6155.js";import"./usePrice-7afab779.js";import"./index-b5eb525c.js";const $t=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:u=>u.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"زیرعنوان",dataIndex:"sub_title",key:"sub_title"},{title:"کتاب مرتبط",dataIndex:"book_id",key:"book_id",align:"center",customRender:u=>{const d=u.record.book_title,f=u.record.book_id;return d||(f?`کتاب #${f}`:"-")}},{title:"زمان",dataIndex:"time",key:"time",customRender:u=>{const d=u.record.time||{minutes:0,seconds:0},f=Number(d.minutes||0),y=Number(d.seconds||0),b=M=>String(M).padStart(2,"0");return`${b(f)}:${b(y)}`}},{title:"صوت",dataIndex:"src",key:"src",customRender:u=>u.record.src?"دارد":"-"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:u=>yt(u.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function Mt(u){const{data:d,error:f}=await F.from("storys").insert([{title:u.title,sub_title:u.sub_title,cover:u.cover,src:u.src,time:u.time,book_id:u.book_id||null}]).select();if(f)throw f;return d}async function Y(u,d){const{data:f,error:y}=await F.from("storys").update({title:d.title,sub_title:d.sub_title,cover:d.cover,src:d.src,time:d.time,book_id:d.book_id||null}).eq("id",u).select();if(y)throw y;return f}async function Bt(u){const{error:d}=await F.from("storys").delete().eq("id",u);if(d)throw d}async function Ct(u){const{TableEngineRequest:d}=await V(()=>import("./buildSupabaseQuery-895aec07.js"),["assets/buildSupabaseQuery-895aec07.js","assets/index-a9671513.js","assets/index-6c22dd25.css"]),{getBooks:f}=await V(()=>import("./books-68b5883a.js"),["assets/books-68b5883a.js","assets/index-a9671513.js","assets/index-6c22dd25.css"]),y={...u};!y.sort&&!y.order&&(y.order="-id");const b=await d(y,"storys");try{if(Array.isArray(b==null?void 0:b.rows)){let M=new Map;try{const r=await f();Array.isArray(r)&&r.forEach(h=>{h.id&&h.title&&M.set(h.id,h.title)})}catch(r){console.log("[getStorysTable] Error loading books:",r)}const T=y.page||1,L=y.limit||200,U=(T-1)*L,B=b.rows.map((r,h)=>({id:r.id,title:r.title??"",sub_title:r.sub_title??"",cover:r.cover??null,src:r.src??null,time:r.time??{minutes:0,seconds:0},book_id:r.book_id??null,book_title:r.book_id&&M.get(r.book_id)||null,created_at:r.created_at??"",index:U+h,...r}));return{...b,rows:B}}}catch(M){console.log("[getStorysTable] normalize error:",M)}return b}const Lt={class:"flex justify-between items-center mb-4"},Ut=a("h2",null,"قصه ها",-1),It={class:"gap-2 flex justify-center"},St=a("span",null,"حذف",-1),Tt=a("span",null,"ویرایش",-1),Nt=a("span",null,"مرتبط کردن کتاب",-1),Pt={class:"space-y-4 relative"},Rt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Dt=a("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),At=a("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1),Wt=a("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),Ot={class:"flex gap-4"},qt={class:"flex-1"},zt=a("div",{class:"mb-1 text-sm text-gray-600"},"زمان",-1),Et={class:"space-y-2"},Vt=a("div",{class:"mb-1 text-xs text-gray-500"},"دقیقه",-1),Ft=a("div",{class:"mb-1 text-xs text-gray-500"},"ثانیه",-1),Ht={class:"flex-1 flex justify-center gap-4"},Jt=a("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),Xt={key:0},jt=a("div",null,"آپلود کاور",-1),Kt={key:0,class:"mt-1"},Gt={class:"h-2 rounded bg-gray-200 overflow-hidden"},Qt={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Yt=a("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت (src)",-1),Zt={key:0},te=a("div",null,"آپلود صوت",-1),ee={key:0,class:"text-xs text-gray-500 mt-1 text-center"},se={class:"h-2 rounded bg-gray-200 overflow-hidden"},oe={class:"text-xs text-gray-700 font-semibold text-center mt-1"},ae={class:"space-y-4"},le=a("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),Le=ut({__name:"index",setup(u){const[d,f]=gt(),y=g({columns:$t,api:Ct,defaultPageLimit:20}),b=g(!1),M=g(!1),T=g(null),L=g([]),U=g([]),B=g(0),r=g(0),h=g(0),z=g([]),q=g(!1),D=g(null),m=g({title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null}),A=g({book_id:null});function Z(){L.value=[],U.value=[],M.value=!1,T.value=null,m.value={title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null},b.value=!0}function H(){b.value=!1}function tt(s){return s.type.startsWith("audio/")?s.size/1024/1024<61?!0:(k.error("حجم فایل باید کمتر از 60MB باشد"),!1):(k.error("فقط فایل‌های صوتی مجاز است"),!1)}async function et(s){const{file:e,onSuccess:n,onError:o,onProgress:c}=s,x=new FormData;x.append("file",e);const C=`${R}/upload/machartaa-audio`;r.value=0,B.value++,await new Promise((i,$)=>{const l=new XMLHttpRequest;l.open("POST",C),l.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("tamin_token")||""}`),l.timeout=15*60*1e3,l.upload.onprogress=t=>{if(t.lengthComputable){const _=Math.round(t.loaded/t.total*100);r.value=_,c==null||c({percent:_})}},l.onload=()=>{if(r.value=100,l.status>=200&&l.status<300)try{const t=JSON.parse(l.responseText||"{}"),_=t.full_src||t.url||t.src||t.path||t.data&&(t.data.full_src||t.data.url||t.data.src||t.data.path)||"";let p=_;_!=null&&_.startsWith("http")&&(p=_.replace(/^https?:\/\/[^\/]+/,""));const W=p.startsWith("http")?p:`${R}${p}`;m.value.src=p,L.value=W?[{uid:`${Date.now()}`,name:"audio.mp3",status:"done",url:W,response:{path:p}}]:[],n==null||n(t,l),k.success("صوت با موفقیت آپلود شد!"),i()}catch(t){o==null||o(t,l),$(t)}else if(l.status===413){const t=new Error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید.");k.error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید."),o==null||o(t,l),$(t)}else{let t="خطا در آپلود فایل";try{const p=JSON.parse(l.responseText||"{}");p.message?t=p.message:p.error&&(t=p.error)}catch{}const _=new Error(t);k.error(t),o==null||o(_,l),$(_)}},l.onerror=()=>{const t=new Error("خطا در آپلود صوت");o==null||o(t,l),$(t)},l.ontimeout=()=>{const t=new Error("آپلود timeout شد - فایل خیلی بزرگ است");o==null||o(t,l),$(t)},l.onloadend=()=>{B.value=Math.max(0,B.value-1),r.value=0},l.send(x)})}function J(s){return{width:`${Math.max(0,Math.min(100,s))}%`}}function st(s){return s.type.startsWith("image/")?s.size/1024/1024<5?!0:(k.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(k.error("فقط فایل‌های تصویری مجاز است"),!1)}async function ot(s){const{file:e,onSuccess:n,onError:o,onProgress:c}=s,x=new FormData;x.append("file",e);const C=`${R}/upload/machartaa-img`;h.value=0,B.value++,await new Promise((i,$)=>{const l=new XMLHttpRequest;l.open("POST",C),l.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("token")||""}`),l.upload.onprogress=t=>{if(t.lengthComputable){const _=Math.round(t.loaded/t.total*100);h.value=_,c==null||c({percent:_})}},l.onload=()=>{if(h.value=100,l.status>=200&&l.status<300)try{const t=JSON.parse(l.responseText||"{}"),_=t.full_src||t.url||t.src||t.path||t.data&&(t.data.full_src||t.data.url||t.data.src||t.data.path)||"";let p=_;_!=null&&_.startsWith("http")&&(p=_.replace(/^https?:\/\/[^\/]+/,""));const W=p.startsWith("http")?p:`${R}${p}`;m.value.cover=p,U.value=W?[{uid:`${Date.now()}`,name:"cover.jpg",status:"done",url:W,response:{path:p}}]:[],n==null||n(t,l),k.success("کاور با موفقیت آپلود شد!"),i()}catch(t){o==null||o(t,l),$(t)}else{const t=new Error("خطا در آپلود تصویر");o==null||o(t,l),$(t)}},l.onerror=()=>{const t=new Error("خطا در آپلود کاور");o==null||o(t,l),$(t)},l.onloadend=()=>{B.value=Math.max(0,B.value-1),h.value=0},l.send(x)})}async function at(){var e,n,o,c,x,C;if(!((e=m.value.title)!=null&&e.trim()))return;if(B.value>0){k.warning("لطفاً تا پایان آپلود صبر کنید");return}const s={title:m.value.title.trim(),sub_title:((n=m.value.sub_title)==null?void 0:n.trim())||"",cover:((o=m.value.cover)==null?void 0:o.trim())||null,src:((c=m.value.src)==null?void 0:c.trim())||null,time:{minutes:Number((x=m.value.time)==null?void 0:x.minutes)||0,seconds:Number((C=m.value.time)==null?void 0:C.seconds)||0},book_id:m.value.book_id||null};try{M.value&&T.value?(await Y(T.value,s),k.success("قصه با موفقیت ویرایش شد")):(await Mt(s),k.success("قصه با موفقیت افزوده شد")),H(),await f()}catch(i){console.error("Error saving story:",i),k.error("خطا در ذخیره قصه: "+(i.message||"خطای ناشناخته"))}}function lt(s){M.value=!0,T.value=s.id;let e=s.cover||null;e&&e.startsWith("http")&&(e=e.replace(/^https?:\/\/[^\/]+/,""));let n=s.src||null;n&&n.startsWith("http")&&(n=n.replace(/^https?:\/\/[^\/]+/,"")),m.value={title:s.title||"",sub_title:s.sub_title||"",cover:e,src:n,time:s.time&&typeof s.time=="object"?{minutes:Number(s.time.minutes)||0,seconds:Number(s.time.seconds)||0}:{minutes:0,seconds:0},book_id:s.book_id||null};const o=n?n.startsWith("http")?n:`${R}${n}`:null,c=e?e.startsWith("http")?e:`${R}${e}`:null;L.value=o?[{uid:"-1",name:"audio.mp3",status:"done",url:o,response:{path:n}}]:[],U.value=c?[{uid:"-2",name:"cover.jpg",status:"done",url:c,response:{path:e}}]:[],b.value=!0}function it(s){D.value=s.id,A.value={book_id:s.book_id||null},q.value=!0}function X(){q.value=!1,D.value=null,A.value={book_id:null}}async function nt(){if(D.value)try{const{supabase:s}=await V(()=>import("./index-a9671513.js").then(C=>C.cW),["assets/index-a9671513.js","assets/index-6c22dd25.css"]),{data:e,error:n}=await s.from("storys").select("*").eq("id",D.value).single();if(n||!e){k.error("قصه یافت نشد");return}let o=e.cover||null;o&&o.startsWith("http")&&(o=o.replace(/^https?:\/\/[^\/]+/,""));let c=e.src||null;c&&c.startsWith("http")&&(c=c.replace(/^https?:\/\/[^\/]+/,""));const x={title:e.title||"",sub_title:e.sub_title||"",cover:o,src:c,time:e.time&&typeof e.time=="object"?{minutes:Number(e.time.minutes)||0,seconds:Number(e.time.seconds)||0}:{minutes:0,seconds:0},book_id:A.value.book_id||null};await Y(D.value,x),k.success("کتاب با موفقیت مرتبط شد"),X(),await f()}catch(s){console.error("Error linking book:",s),k.error("خطا در مرتبط کردن کتاب: "+(s.message||"خطای ناشناخته"))}}ct(async()=>{try{const s=await xt();z.value=s||[]}catch(s){console.error("Error loading books:",s)}});function rt(s){pt.confirm({title:"حذف قصه",content:`آیا مطمئن هستید که می‌خواهید قصه "${s.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{await Bt(s.id),await f()}})}return(s,e)=>{const n=kt,o=ht,c=bt,x=ft,C=_t;return I(),N("div",null,[v(C,null,{default:w(()=>[a("div",Lt,[Ut,v(n,{type:"primary",onClick:Z},{default:w(()=>[dt("افزودن قصه")]),_:1})]),v(o,mt(y.value,{ref:"table",onRegister:S(d)}),{action:w(({record:i})=>[a("div",It,[v(S(E),{class:"cursor-pointer"},{title:w(()=>[St]),default:w(()=>[v(O,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:$=>rt(i)},null,8,["onClick"])]),_:2},1024),v(S(E),{class:"cursor-pointer"},{title:w(()=>[Tt]),default:w(()=>[v(O,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:$=>lt(i)},null,8,["onClick"])]),_:2},1024),i!=null&&i.book_id?P("",!0):(I(),vt(S(E),{key:0,class:"cursor-pointer"},{title:w(()=>[Nt]),default:w(()=>[v(O,{icon:"vuesax-linear:book",color:"#217346",onClick:$=>it(i)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]),v(x,{visible:b.value,"onUpdate:visible":e[7]||(e[7]=i=>b.value=i),title:M.value?"ویرایش قصه":"افزودن قصه",onOk:at,onCancel:H,width:"80%",confirmLoading:B.value>0},{default:w(()=>[a("div",Pt,[B.value>0?(I(),N("div",Rt,[v(S(wt),{size:"large"})])):P("",!0),a("div",null,[Dt,v(c,{value:m.value.title,"onUpdate:value":e[0]||(e[0]=i=>m.value.title=i),placeholder:"عنوان"},null,8,["value"])]),a("div",null,[At,v(c,{value:m.value.sub_title,"onUpdate:value":e[1]||(e[1]=i=>m.value.sub_title=i),placeholder:"زیرعنوان"},null,8,["value"])]),a("div",null,[Wt,v(G,{value:m.value.book_id??void 0,"onUpdate:value":e[2]||(e[2]=i=>m.value.book_id=i??null),items:z.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])]),a("div",Ot,[a("div",qt,[zt,a("div",Et,[a("div",null,[Vt,v(c,{value:m.value.time.minutes,"onUpdate:value":e[3]||(e[3]=i=>m.value.time.minutes=i),type:"number",placeholder:"0"},null,8,["value"])]),a("div",null,[Ft,v(c,{value:m.value.time.seconds,"onUpdate:value":e[4]||(e[4]=i=>m.value.time.seconds=i),type:"number",placeholder:"0"},null,8,["value"])])])]),a("div",Ht,[a("div",null,[Jt,v(S(Q),{"file-list":U.value,"onUpdate:fileList":e[5]||(e[5]=i=>U.value=i),"before-upload":st,"custom-request":ot,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:w(()=>[U.value.length<1?(I(),N("div",Xt,[v(O,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),jt])):P("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(I(),N("div",Kt,[a("div",Gt,[a("div",{class:"h-2 bg-blue-500 transition-all",style:j(J(h.value))},null,4)]),a("div",Qt,K(h.value)+"%",1)])):P("",!0)]),a("div",null,[Yt,v(S(Q),{"file-list":L.value,"onUpdate:fileList":e[6]||(e[6]=i=>L.value=i),"before-upload":tt,"custom-request":et,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:w(()=>[L.value.length<1?(I(),N("div",Zt,[v(O,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),te])):P("",!0)]),_:1},8,["file-list"]),r.value>0&&r.value<100?(I(),N("div",ee,[a("div",se,[a("div",{class:"h-2 bg-blue-500 transition-all",style:j(J(r.value))},null,4)]),a("div",oe,K(r.value)+"%",1)])):P("",!0)])])])])]),_:1},8,["visible","title","confirmLoading"]),v(x,{visible:q.value,"onUpdate:visible":e[9]||(e[9]=i=>q.value=i),title:"مرتبط کردن کتاب",onOk:nt,onCancel:X,width:"500px"},{default:w(()=>[a("div",ae,[a("div",null,[le,v(G,{value:A.value.book_id??void 0,"onUpdate:value":e[8]||(e[8]=i=>A.value.book_id=i??null),items:z.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])])])]),_:1},8,["visible"])]),_:1})])}}});export{Le as default};