Files
machartaa_admin_dist/dist/assets/index-0ce2e732.js
T
2026-06-18 20:24:23 +03:30

2 lines
30 KiB
JavaScript

import{af as De,ag as Me,I as Q,d as je,g as Y,E as de,v as Fe,_ as me,L as fe,o as j,c as W,b as D,w as q,a as i,e as oe,G as ve,j as A,t as ee,i as Ee,k as X,y as he,D as z,H as _e}from"./index-fe7e9f3a.js";import{_ as We}from"./BasicMainCard-9d8af607.js";import{_ as Ze}from"./BasicModal.vue_vue_type_style_index_0_lang-2c965652.js";import{_ as Je}from"./BasicInput.vue_vue_type_style_index_0_lang-96e71e2f.js";import{u as pe,_ as Ge,l as Xe}from"./useBaseTable-e8654654.js";import{_ as Ke}from"./button.vue_vue_type_style_index_0_lang-61c18c46.js";import{d as Z}from"./fa_IR-23a1f71d.js";import{I as K}from"./Icon-b952e603.js";import{_ as ge}from"./BasicSelect.vue_vue_type_style_index_0_lang-9860556f.js";import{t as ie,m as Qe}from"./useDataTime-6319c12a.js";import{g as ae}from"./convert-67c23be8.js";import{g as be}from"./index-9a272e1e.js";import{M as ye}from"./index-4bebce71.js";import{S as ke}from"./index-c3b05d68.js";import{D as et}from"./dayjs-19b5fb05.js";import{T as te}from"./shallowequal-84daf276.js";import{U as we}from"./index-207b9df5.js";import"./index-a0d96113.js";import"./index-66219801.js";import"./_plugin-vue_export-helper-84433aaa.js";import"./Col-4a3e6527.js";import"./vnode-4e2eb49f.js";import"./useState-fbb2e402.js";import"./useRefs-f56804c8.js";import"./index-265527df.js";import"./isPlainObject-8df7c091.js";import"./usePrice-bc935b83.js";import"./index-6e5ff446.js";import"./FormItemContext-b538849a.js";import"./lodash-7b4e0250.js";import"./index-63f18912.js";import"./pickAttrs-c6e9cc38.js";import"./toArray-1e9f5cfb.js";import"./index-9caf69a4.js";var Se={exports:{}};(function(r,o){(function(g,x){r.exports=x()})(Me,function(){var g="minute",x=/[+-]\d\d(?::?\d\d)?/g,U=/([+-]|\d\d)/g;return function(H,k,u){var m=k.prototype;u.utc=function(e){var t={date:e,utc:!0,args:arguments};return new k(t)},m.utc=function(e){var t=u(this.toDate(),{locale:this.$L,utc:!0});return e?t.add(this.utcOffset(),g):t},m.local=function(){return u(this.toDate(),{locale:this.$L,utc:!1})};var c=m.parse;m.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),c.call(this,e)};var L=m.init;m.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else L.call(this)};var h=m.utcOffset;m.utcOffset=function(e,t){var S=this.$utils().u;if(S(e))return this.$u?0:S(this.$offset)?h.call(this):this.$offset;if(typeof e=="string"&&(e=function(B){B===void 0&&(B="");var F=B.match(x);if(!F)return null;var P=(""+F[0]).match(U)||["-",0,0],b=P[0],R=60*+P[1]+ +P[2];return R===0?0:b==="+"?R:-R}(e),e===null))return this;var d=Math.abs(e)<=16?60*e:e,v=this;if(t)return v.$offset=d,v.$u=e===0,v;if(e!==0){var O=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(v=this.local().add(d+O,g)).$offset=d,v.$x.$localOffset=O}else v=this.utc();return v};var f=m.format;m.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return f.call(this,t)},m.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},m.isUTC=function(){return!!this.$u},m.toISOString=function(){return this.toDate().toISOString()},m.toString=function(){return this.toDate().toUTCString()};var M=m.toDate;m.toDate=function(e){return e==="s"&&this.$offset?u(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():M.call(this)};var T=m.diff;m.diff=function(e,t,S){if(e&&this.$u===e.$u)return T.call(this,e,t,S);var d=this.local(),v=u(e).local();return T.call(d,v,t,S)}}})})(Se);var tt=Se.exports;const st=De(tt);var Te={exports:{}};(function(r,o){(function(g,x){r.exports=x()})(Me,function(){var g={year:0,month:1,day:2,hour:3,minute:4,second:5},x={};return function(U,H,k){var u,m=function(f,M,T){T===void 0&&(T={});var e=new Date(f),t=function(S,d){d===void 0&&(d={});var v=d.timeZoneName||"short",O=S+"|"+v,B=x[O];return B||(B=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:S,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:v}),x[O]=B),B}(M,T);return t.formatToParts(e)},c=function(f,M){for(var T=m(f,M),e=[],t=0;t<T.length;t+=1){var S=T[t],d=S.type,v=S.value,O=g[d];O>=0&&(e[O]=parseInt(v,10))}var B=e[3],F=B===24?0:B,P=e[0]+"-"+e[1]+"-"+e[2]+" "+F+":"+e[4]+":"+e[5]+":000",b=+f;return(k.utc(P).valueOf()-(b-=b%1e3))/6e4},L=H.prototype;L.tz=function(f,M){f===void 0&&(f=u);var T=this.utcOffset(),e=this.toDate(),t=e.toLocaleString("en-US",{timeZone:f}),S=Math.round((e-new Date(t))/1e3/60),d=k(t).$set("millisecond",this.$ms).utcOffset(15*-Math.round(e.getTimezoneOffset()/15)-S,!0);if(M){var v=d.utcOffset();d=d.add(T-v,"minute")}return d.$x.$timezone=f,d},L.offsetName=function(f){var M=this.$x.$timezone||k.tz.guess(),T=m(this.valueOf(),M,{timeZoneName:f}).find(function(e){return e.type.toLowerCase()==="timezonename"});return T&&T.value};var h=L.startOf;L.startOf=function(f,M){if(!this.$x||!this.$x.$timezone)return h.call(this,f,M);var T=k(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return h.call(T,f,M).tz(this.$x.$timezone,!0)},k.tz=function(f,M,T){var e=T&&M,t=T||M||u,S=c(+k(),t);if(typeof f!="string")return k(f).tz(t);var d=function(F,P,b){var R=F-60*P*1e3,C=c(R,b);if(P===C)return[R,P];var J=c(R-=60*(C-P)*1e3,b);return C===J?[R,C]:[F-60*Math.min(C,J)*1e3,Math.max(C,J)]}(k.utc(f,e).valueOf(),S,t),v=d[0],O=d[1],B=k(v).utcOffset(O);return B.$x.$timezone=t,B},k.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},k.tz.setDefault=function(f){u=f}}})})(Te);var at=Te.exports;const ot=De(at),it=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:r=>r.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:r=>{const o=r.record.book_title,g=r.record.book_id;return o||(g?`کتاب #${g}`:"-")}},{title:"زمان",dataIndex:"time",key:"time",customRender:r=>{const o=r.record.time||{minutes:0,seconds:0},g=Number(o.minutes||0),x=Number(o.seconds||0),U=H=>String(H).padStart(2,"0");return`${U(g)}:${U(x)}`}},{title:"صوت",dataIndex:"src",key:"src",customRender:r=>r.record.src?"دارد":"-"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:r=>ie(r.record.created_at)},{title:"زمان انتشار",dataIndex:"time_show",key:"time_show",align:"center",width:180,customRender:r=>{const o=r.record.time_show;if(!o)return"-";try{return Qe.utc(o).add(3,"hours").add(30,"minutes").format("jYYYY/jMM/jDD HH:mm:ss")}catch{try{return ie(o,"jYYYY/jMM/jDD HH:mm:ss")}catch{return o}}}},{title:"وضعیت نمایش",dataIndex:"show",key:"show",align:"center",width:120,customRender:r=>r.record.show===!1?"مخفی":"نمایش"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],nt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:r=>r.record.index+1},{title:"نام کاربر",dataIndex:"user_name",key:"user_name",filterable:!0,filterField:"user_name"},{title:"شماره همراه",dataIndex:"user_phone",key:"user_phone",filterable:!0,filterField:"user_phone"},{title:"تاریخ بازدید",dataIndex:"viewed_at",key:"viewed_at",filterable:!0,filterField:"viewed_at",customRender:r=>ie(r.record.viewed_at)}];async function lt(r){const{data:o,error:g}=await Q.from("storys").insert([{title:r.title,sub_title:r.sub_title,cover:r.cover,src:r.src,time:r.time,book_id:r.book_id||null,time_show:r.time_show||null}]).select();if(g)throw g;return o}async function xe(r,o){const{data:g,error:x}=await Q.from("storys").update({title:o.title,sub_title:o.sub_title,cover:o.cover,src:o.src,time:o.time,book_id:o.book_id||null,time_show:o.time_show||null}).eq("id",r).select();if(x)throw x;return g}async function rt(r,o){const{data:g,error:x}=await Q.from("storys").update({show:o}).eq("id",r).select();if(x)throw x;return g}async function ut(r){const{error:o}=await Q.from("storys").delete().eq("id",r);if(o)throw o}async function ct(r){try{const{limit:o,filters:g,page:x,sort:U,order:H,search:k}=r;let u=Q.from("storys").select("*, books!book_id(id, title, sub_title, cover)",{count:"exact"});if(k&&k.trim()){const e=`%${k.trim()}%`;u=u.or(`title.ilike.${e},sub_title.ilike.${e}`)}if(g&&Array.isArray(g)&&g.forEach(e=>{const{field:t,op:S,value:d,hidden:v}=e;if(!v)switch(S){case"eq":u=u.eq(t,d);break;case"neq":u=u.neq(t,d);break;case"gt":u=u.gt(t,d);break;case"lt":u=u.lt(t,d);break;case"gte":u=u.gte(t,d);break;case"lte":u=u.lte(t,d);break;case"has":u=u.ilike(t,`%${d}%`);break;case"like":u=u.like(t,`%${d}%`);break}}),U&&U.key){const e=U.order==="asc";u=u.order(U.key,{ascending:e})}else if(H){const e=!H.startsWith("-"),t=H.replace(/^[-+]/,"");u=u.order(t,{ascending:e})}else u=u.order("id",{ascending:!1});if(o&&x){const e=(x-1)*o,t=e+o-1;u=u.range(e,t)}const{data:m,error:c,count:L}=await u;if(c)return console.error("[getStorysTable] Supabase query error:",c),{query:{...r,limit:o||10,page:x||1,total:0},rows:[]};if(!m||m.length===0)return{query:{...r,limit:o||10,page:x||1,total:0},rows:[]};const h=x||1,f=o||20,M=(h-1)*f,T=m.map((e,t)=>{const d=(Array.isArray(e.books)?e.books[0]:e.books)||{};return{...e,id:e.id,title:e.title??"",sub_title:e.sub_title??"",cover:e.cover??null,src:e.src??null,time:e.time??{minutes:0,seconds:0},book_id:e.book_id??null,book_title:d.title||null,book_sub_title:d.sub_title||null,book_cover:d.cover||null,created_at:e.created_at??"",time_show:e.time_show??null,show:e.show!==void 0?e.show:!0,index:M+t}});return{query:{...r,limit:f,page:h,total:L||0},rows:T}}catch(o){throw console.error("[getStorysTable] Error:",o),o}}async function dt(r){try{const{data:o,error:g}=await Q.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)").eq("item_id",r).order("viewed_at",{ascending:!1});if(g)throw console.error("[getStoryViews] Error fetching views:",g),g;const x=(o==null?void 0:o.length)||0,H=new Set((o==null?void 0:o.map(m=>m.user_id).filter(Boolean))||[]).size,k=new Map;(o||[]).forEach(m=>{const c=m.user_id;if(c&&!k.has(c)){const h=(Array.isArray(m.users)?m.users[0]:m.users)||{};let f="نامشخص";h&&Object.keys(h).length>0&&(h.name?f=h.name:h.first_name||h.last_name?f=`${h.first_name||""} ${h.last_name||""}`.trim():h.phone?f=h.phone:h.email?f=h.email:h.username&&(f=h.username)),k.set(c,{id:m.id,user_id:m.user_id,user_name:f,user_phone:(h==null?void 0:h.phone)||"",user_email:(h==null?void 0:h.email)||"",viewed_at:m.viewed_at||""})}});const u=Array.from(k.values());return{total_views:x,unique_viewers:H,viewers:u}}catch(o){throw console.error("[getStoryViews] Error:",o),o}}async function $e(r,o){const{limit:g=20,page:x=1,search:U,filters:H,sort:k,order:u}=r,m=["id","user_id","item_id","viewed_at"];let c=Q.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)",{count:"exact"}).eq("item_id",o);if(U!=null&&U.trim()){const t=`%${U.trim()}%`;c=c.or(`users.name.ilike.${t},users.phone.ilike.${t},users.first_name.ilike.${t},users.last_name.ilike.${t},users.email.ilike.${t}`)}if(H!=null&&H.length&&H.forEach(t=>{if(!(!t.field||t.hidden)){if(t.field==="user_name"||t.field==="user_phone"){const S=`%${t.value}%`;if(["eq","has","like"].includes(t.op)){const d=t.field==="user_phone"?"users.phone":"users.name";c=c.ilike(d,S)}return}if(m.includes(t.field))switch(t.op){case"eq":c=c.eq(t.field,t.value);break;case"neq":c=c.neq(t.field,t.value);break;case"gt":c=c.gt(t.field,t.value);break;case"lt":c=c.lt(t.field,t.value);break;case"gte":c=c.gte(t.field,t.value);break;case"lte":c=c.lte(t.field,t.value);break;case"has":case"like":c=c.ilike(t.field,`%${t.value}%`);break}}}),k!=null&&k.key&&m.includes(k.key))c=c.order(k.key,{ascending:k.order==="asc"});else if(u){const t=u.replace(/^[-+]/,"");m.includes(t)&&(c=c.order(t,{ascending:!u.startsWith("-")}))}else c=c.order("viewed_at",{ascending:!1});const L=(x-1)*g;c=c.range(L,L+g-1);const{data:h,error:f,count:M}=await c;if(f)return console.error("[getStoryViewersTable] Supabase query error:",f),{query:{...r,limit:g,page:x,total:0},rows:[]};const T=(x-1)*g,e=(h||[]).map((t,S)=>{const v=(Array.isArray(t.users)?t.users[0]:t.users)||{};let O="نامشخص";return v.name?O=v.name:v.first_name||v.last_name?O=`${v.first_name||""} ${v.last_name||""}`.trim():v.phone?O=v.phone:v.email?O=v.email:v.username&&(O=v.username),{...t,id:t.id,user_id:t.user_id,user_name:O,user_phone:(v==null?void 0:v.phone)||"",user_email:(v==null?void 0:v.email)||"",viewed_at:t.viewed_at??"",index:T+S}});return{query:{...r,limit:g,page:x,total:M??0},rows:e}}const mt={class:"flex justify-between items-center mb-4"},ft=i("h2",null,"قصه ها",-1),vt={class:"gap-2 flex justify-center"},ht=i("span",null,"بازدیدها",-1),_t=i("span",null,"حذف",-1),pt=i("span",null,"ویرایش",-1),gt=i("span",null,"مرتبط کردن کتاب",-1),bt={class:"space-y-4 relative"},yt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},kt=i("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),wt=i("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1),xt=i("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),$t=i("div",{class:"mb-1 text-sm text-gray-600"},[oe(" زمان انتشار "),i("span",{class:"text-xs text-gray-500"},"(در صورت خالی گذاشتن این فیلد زمان حال ثبت می شود)")],-1),Dt={class:"flex gap-4"},Mt={class:"flex-1 flex justify-center gap-4"},St=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),Tt={key:0},Ct=i("div",null,"آپلود کاور",-1),Ut={key:0,class:"mt-1"},Ot={class:"h-2 rounded bg-gray-200 overflow-hidden"},Yt={class:"text-xs text-gray-700 font-semibold text-center mt-1"},It=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت (src)",-1),qt={key:0},Lt=i("div",null,"آپلود صوت",-1),zt={key:0,class:"text-xs text-gray-500 mt-1 text-center"},Nt={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ht={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Vt={class:"flex-1"},Bt=i("div",{class:"mb-1 text-sm text-gray-600"},[oe("زمان "),i("span",{class:"text-xs text-gray-500"},"(بعد از آپلود صوت قصه زمان آن به صورت خودکار وارد می شود)")],-1),Rt={class:"space-y-2"},Pt=i("div",{class:"mb-1 text-xs text-gray-500"},"دقیقه",-1),At=i("div",{class:"mb-1 text-xs text-gray-500"},"ثانیه",-1),jt={class:"space-y-4"},Ft=i("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),Et={class:"flex justify-end"},Wt={key:0,class:"space-y-4"},Zt={class:"grid grid-cols-2 gap-4"},Jt={class:"bg-blue-50 p-4 rounded-lg"},Gt=i("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدید",-1),Xt={class:"text-2xl font-bold text-blue-600"},Kt={class:"bg-purple-50 p-4 rounded-lg"},Qt=i("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدیدکننده",-1),es={class:"text-2xl font-bold text-purple-600"},ts=i("div",{class:"text-sm font-semibold text-gray-700 mb-2"},"لیست بازدیدکننده‌ها",-1),ss={key:0},as={key:1,class:"text-center py-8 text-gray-500"},os={key:1,class:"flex justify-center items-center py-8"},Vs=je({__name:"index",setup(r){Z.extend(st),Z.extend(ot);const o=et,g={authorization:`Bearer ${be()||localStorage.getItem("tamin_token")||""}`},[x,U]=pe(),H=Y({columns:it,api:ct,defaultPageLimit:20}),k=Y(!1),u=Y(!1),m=Y(null),c=Y([]),L=Y([]),h=Y(0),f=Y(0),M=Y(0),T=Y([]),e=Y(!1),t=Y(null),S=Y(!1),d=Y(null),v=Y(!1),O=Y(null),[B,F]=pe(),P=Y({columns:nt,api:s=>$e(s,O.value),defaultPageLimit:20}),b=Y({title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null,time_show:null}),R=Y({book_id:null}),C=Y(null),J=Y(!1);let se=!1;de(()=>b.value.time_show,s=>{if(se){se=!1;return}if(s)try{const a=Z(s);(!C.value||!a.isSame(C.value))&&(C.value=a)}catch{C.value=null}else C.value&&(C.value=null)},{immediate:!0});function Ce(s,a){s?C.value=s:C.value=null}function Ue(s){if(s){se=!0;const n=s.calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");b.value.time_show=n,C.value=s}else se=!0,b.value.time_show=null,C.value=null;J.value=!1}function Oe(){c.value=[],L.value=[],u.value=!1,m.value=null,b.value={title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null,time_show:null},C.value=null,k.value=!0}function ne(){k.value=!1}function Ye(s){return s.type.startsWith("audio/")?s.size/1024/1024<61?!0:(z.error("حجم فایل باید کمتر از 60MB باشد"),!1):(z.error("فقط فایل‌های صوتی مجاز است"),!1)}function Ie(s){const a=new Audio,_=URL.createObjectURL(s);a.addEventListener("loadedmetadata",()=>{const n=a.duration;if(n&&!isNaN(n)&&isFinite(n)){const $=Math.floor(n/60),V=Math.floor(n%60);b.value.time.minutes=$,b.value.time.seconds=V,z.info(`مدت زمان فایل صوتی: ${$} دقیقه و ${V} ثانیه`)}URL.revokeObjectURL(_)}),a.addEventListener("error",()=>{URL.revokeObjectURL(_),console.warn("Could not determine audio duration from file")}),a.src=_}async function qe(s){const{file:a,onSuccess:_,onError:n,onProgress:$}=s;Ie(a);const V=new FormData;V.append("file",a);const E=`${_e}/upload/machartaa-audio`;f.value=0,h.value++,await new Promise((l,I)=>{const p=new XMLHttpRequest;p.open("POST",E),p.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("tamin_token")||""}`),p.timeout=15*60*1e3,p.upload.onprogress=w=>{if(w.lengthComputable){const y=Math.round(w.loaded/w.total*100);f.value=y,$==null||$({percent:y})}},p.onload=()=>{if(f.value=100,p.status>=200&&p.status<300)try{const w=JSON.parse(p.responseText||"{}"),y=w.full_src||w.url||w.src||w.path||w.data&&(w.data.full_src||w.data.url||w.data.src||w.data.path)||"";let N=y;y!=null&&y.startsWith("http")&&(N=y.replace(/^https?:\/\/[^\/]+/,""));const G=ae(N);b.value.src=N,c.value=G?[{uid:`${Date.now()}`,name:"audio.mp3",status:"done",url:G,response:{path:N}}]:[],_==null||_(w,p),z.success("صوت با موفقیت آپلود شد!"),l()}catch(w){n==null||n(w,p),I(w)}else if(p.status===413){const w=new Error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید.");z.error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید."),n==null||n(w,p),I(w)}else{let w="خطا در آپلود فایل";try{const N=JSON.parse(p.responseText||"{}");N.message?w=N.message:N.error&&(w=N.error)}catch{}const y=new Error(w);z.error(w),n==null||n(y,p),I(y)}},p.onerror=()=>{const w=new Error("خطا در آپلود صوت");n==null||n(w,p),I(w)},p.ontimeout=()=>{const w=new Error("آپلود timeout شد - فایل خیلی بزرگ است");n==null||n(w,p),I(w)},p.onloadend=()=>{h.value=Math.max(0,h.value-1),f.value=0},p.send(V)})}function le(s){return{width:`${Math.max(0,Math.min(100,s))}%`}}function Le(s){return s.type.startsWith("image/")?s.size/1024/1024<5?!0:(z.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(z.error("فقط فایل‌های تصویری مجاز است"),!1)}async function ze(s){const{file:a,onSuccess:_,onError:n,onProgress:$}=s,V=new FormData;V.append("file",a);const E=`${_e}/upload/machartaa-img`;M.value=0,h.value++,await new Promise((l,I)=>{const p=new XMLHttpRequest;p.open("POST",E);const w=be()||localStorage.getItem("tamin_token")||"";p.setRequestHeader("Authorization",`Bearer ${w}`),p.upload.onprogress=y=>{if(y.lengthComputable){const N=Math.round(y.loaded/y.total*100);M.value=N,$==null||$({percent:N})}},p.onload=()=>{if(M.value=100,p.status>=200&&p.status<300)try{const y=JSON.parse(p.responseText||"{}"),N=y.full_src||y.url||y.src||y.path||y.data&&(y.data.full_src||y.data.url||y.data.src||y.data.path)||"";let G=N;N!=null&&N.startsWith("http")&&(G=N.replace(/^https?:\/\/[^\/]+/,""));const ce=ae(G);b.value.cover=G,L.value=ce?[{uid:`${Date.now()}`,name:"cover.jpg",status:"done",url:ce,response:{path:G}}]:[],_==null||_(y,p),z.success("کاور با موفقیت آپلود شد!"),l()}catch(y){n==null||n(y,p),I(y)}else{const y=new Error("خطا در آپلود تصویر");n==null||n(y,p),I(y)}},p.onerror=()=>{const y=new Error("خطا در آپلود کاور");n==null||n(y,p),I(y)},p.onloadend=()=>{h.value=Math.max(0,h.value-1),M.value=0},p.send(V)})}async function Ne(){var _,n,$,V,E,l;if(!((_=b.value.title)!=null&&_.trim()))return;if(h.value>0){z.warning("لطفاً تا پایان آپلود صبر کنید");return}let s=b.value.time_show;if(!s||s.trim()==="")s=Z().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");else try{Z(s).isValid()||(s=Z(s).locale("fa").calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss"))}catch{s=Z().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss")}const a={title:b.value.title.trim(),sub_title:((n=b.value.sub_title)==null?void 0:n.trim())||"",cover:(($=b.value.cover)==null?void 0:$.trim())||null,src:((V=b.value.src)==null?void 0:V.trim())||null,time:{minutes:Number((E=b.value.time)==null?void 0:E.minutes)||0,seconds:Number((l=b.value.time)==null?void 0:l.seconds)||0},book_id:b.value.book_id||null,time_show:s};try{u.value&&m.value?(await xe(m.value,a),z.success("قصه با موفقیت ویرایش شد")):(await lt(a),z.success("قصه با موفقیت افزوده شد")),ne(),await U()}catch(I){console.error("Error saving story:",I),z.error("خطا در ذخیره قصه: "+(I.message||"خطای ناشناخته"))}}function He(s){u.value=!0,m.value=s.id;let a=s.cover||null;a&&a.startsWith("http")&&(a=a.replace(/^https?:\/\/[^\/]+/,""));let _=s.src||null;_&&_.startsWith("http")&&(_=_.replace(/^https?:\/\/[^\/]+/,"")),b.value={title:s.title||"",sub_title:s.sub_title||"",cover:a,src:_,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,time_show:s.time_show||null},s.time_show?C.value=Z(s.time_show):C.value=null;const n=_?ae(_):null,$=a?ae(a):null;c.value=n?[{uid:"-1",name:"audio.mp3",status:"done",url:n,response:{path:_}}]:[],L.value=$?[{uid:"-2",name:"cover.jpg",status:"done",url:$,response:{path:a}}]:[],k.value=!0}function Ve(s){t.value=s.id,R.value={book_id:s.book_id||null},e.value=!0}function re(){e.value=!1,t.value=null,R.value={book_id:null}}async function Be(){if(t.value)try{const{supabase:s}=await me(()=>import("./index-fe7e9f3a.js").then(E=>E.bO),["assets/index-fe7e9f3a.js","assets/index-457f5e42.css"]),{data:a,error:_}=await s.from("storys").select("*").eq("id",t.value).single();if(_||!a){z.error("قصه یافت نشد");return}let n=a.cover||null;n&&n.startsWith("http")&&(n=n.replace(/^https?:\/\/[^\/]+/,""));let $=a.src||null;$&&$.startsWith("http")&&($=$.replace(/^https?:\/\/[^\/]+/,""));const V={title:a.title||"",sub_title:a.sub_title||"",cover:n,src:$,time:a.time&&typeof a.time=="object"?{minutes:Number(a.time.minutes)||0,seconds:Number(a.time.seconds)||0}:{minutes:0,seconds:0},book_id:R.value.book_id||null};await xe(t.value,V),z.success("کتاب با موفقیت مرتبط شد"),re(),await U()}catch(s){console.error("Error linking book:",s),z.error("خطا در مرتبط کردن کتاب: "+(s.message||"خطای ناشناخته"))}}Fe(async()=>{try{const{getBooks:s}=await me(()=>import("./books-f6349727.js"),["assets/books-f6349727.js","assets/index-fe7e9f3a.js","assets/index-457f5e42.css"]),a=await s();T.value=a||[]}catch(s){console.error("Error loading books:",s)}});async function Re(s){const _=(s==null?void 0:s.show)===!1,n=!!_;ye.confirm({title:_?"نمایش دادن قصه":"مخفی کردن قصه",content:_?`آیا مطمئن هستید که می‌خواهید قصه "${s.title}" را نمایش دهید؟`:`آیا مطمئن هستید که می‌خواهید قصه "${s.title}" را مخفی کنید؟`,okText:_?"بله، نمایش بده":"بله، مخفی کن",cancelText:"انصراف",okType:"default",centered:!0,onOk:async()=>{try{await rt(s.id,n),z.success(_?"قصه با موفقیت نمایش داده شد":"قصه با موفقیت مخفی شد"),await U()}catch($){console.error("Error toggling show:",$),z.error("خطا در تغییر وضعیت قصه: "+($.message||"خطای ناشناخته"))}}})}function Pe(s){ye.confirm({title:"حذف قصه",content:`آیا مطمئن هستید که می‌خواهید قصه "${s.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{await ut(s.id),await U()}})}async function Ae(s){O.value=s.id,S.value=!0,v.value=!0,d.value=null;try{const a=await dt(s.id);d.value=a,P.value.api=_=>$e(_,s.id)}catch(a){console.error("Error loading views:",a),z.error("خطا در بارگذاری اطلاعات بازدیدها: "+(a.message||"خطای ناشناخته"))}finally{v.value=!1}}de([S,d],async([s,a])=>{if(s&&a&&a.total_views>0){await fe(),await fe();try{await F()}catch{setTimeout(async()=>{try{await F()}catch(n){console.warn("Could not reload viewers table:",n)}},200)}}},{immediate:!1});function ue(){S.value=!1,d.value=null,O.value=null}return(s,a)=>{const _=Ke,n=Ge,$=Je,V=Ze,E=We;return j(),W("div",null,[D(E,null,{default:q(()=>[i("div",mt,[ft,D(_,{type:"primary",onClick:Oe},{default:q(()=>[oe("افزودن قصه")]),_:1})]),D(n,ve(H.value,{ref:"table",onRegister:A(x)}),{action:q(({record:l})=>[i("div",vt,[D(A(te),{class:"cursor-pointer"},{title:q(()=>[ht]),default:q(()=>[D(K,{icon:"vuesax-linear:monitor",color:"#8B5CF6",onClick:I=>Ae(l)},null,8,["onClick"])]),_:2},1024),D(A(te),{class:"cursor-pointer"},{title:q(()=>[i("span",null,ee((l==null?void 0:l.show)===!1?"نمایش دادن":"مخفی کردن"),1)]),default:q(()=>[D(K,{icon:(l==null?void 0:l.show)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(l==null?void 0:l.show)===!1?"#10B981":"#F59E0B",onClick:I=>Re(l)},null,8,["icon","color","onClick"])]),_:2},1024),D(A(te),{class:"cursor-pointer"},{title:q(()=>[_t]),default:q(()=>[D(K,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:I=>Pe(l)},null,8,["onClick"])]),_:2},1024),D(A(te),{class:"cursor-pointer"},{title:q(()=>[pt]),default:q(()=>[D(K,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:I=>He(l)},null,8,["onClick"])]),_:2},1024),l!=null&&l.book_id?X("",!0):(j(),Ee(A(te),{key:0,class:"cursor-pointer"},{title:q(()=>[gt]),default:q(()=>[D(K,{icon:"vuesax-linear:book",color:"#217346",onClick:I=>Ve(l)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]),D(V,{visible:k.value,"onUpdate:visible":a[9]||(a[9]=l=>k.value=l),title:u.value?"ویرایش قصه":"افزودن قصه",onOk:Ne,onCancel:ne,width:"80%",confirmLoading:h.value>0},{default:q(()=>[i("div",bt,[h.value>0?(j(),W("div",yt,[D(A(ke),{size:"large"})])):X("",!0),i("div",null,[kt,D($,{value:b.value.title,"onUpdate:value":a[0]||(a[0]=l=>b.value.title=l),placeholder:"عنوان"},null,8,["value"])]),i("div",null,[wt,D($,{value:b.value.sub_title,"onUpdate:value":a[1]||(a[1]=l=>b.value.sub_title=l),placeholder:"زیرعنوان"},null,8,["value"])]),i("div",null,[xt,D(ge,{value:b.value.book_id??void 0,"onUpdate:value":a[2]||(a[2]=l=>b.value.book_id=l??null),items:T.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])]),i("div",null,[$t,D(A(o),{value:C.value,"onUpdate:value":a[3]||(a[3]=l=>C.value=l),open:J.value,"onUpdate:open":a[4]||(a[4]=l=>J.value=l),locale:A(Xe),"show-time":{format:"HH:mm:ss"},format:"YYYY-MM-DD HH:mm:ss",placeholder:"انتخاب تاریخ و زمان انتشار",class:"w-full",onChange:Ce,onOk:Ue},null,8,["value","open","locale"])]),i("div",Dt,[i("div",Mt,[i("div",null,[St,D(A(we),{"file-list":L.value,"onUpdate:fileList":a[5]||(a[5]=l=>L.value=l),"before-upload":Le,"custom-request":ze,headers:g,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:q(()=>[L.value.length<1?(j(),W("div",Tt,[D(K,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ct])):X("",!0)]),_:1},8,["file-list"]),M.value>0&&M.value<100?(j(),W("div",Ut,[i("div",Ot,[i("div",{class:"h-2 bg-blue-500 transition-all",style:he(le(M.value))},null,4)]),i("div",Yt,ee(M.value)+"%",1)])):X("",!0)]),i("div",null,[It,D(A(we),{"file-list":c.value,"onUpdate:fileList":a[6]||(a[6]=l=>c.value=l),"before-upload":Ye,"custom-request":qe,headers:g,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:q(()=>[c.value.length<1?(j(),W("div",qt,[D(K,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),Lt])):X("",!0)]),_:1},8,["file-list"]),f.value>0&&f.value<100?(j(),W("div",zt,[i("div",Nt,[i("div",{class:"h-2 bg-blue-500 transition-all",style:he(le(f.value))},null,4)]),i("div",Ht,ee(f.value)+"%",1)])):X("",!0)])]),i("div",Vt,[Bt,i("div",Rt,[i("div",null,[Pt,D($,{value:b.value.time.minutes,"onUpdate:value":a[7]||(a[7]=l=>b.value.time.minutes=l),type:"number",placeholder:"0",disabled:!0},null,8,["value"])]),i("div",null,[At,D($,{value:b.value.time.seconds,"onUpdate:value":a[8]||(a[8]=l=>b.value.time.seconds=l),type:"number",placeholder:"0",disabled:!0},null,8,["value"])])])])])])]),_:1},8,["visible","title","confirmLoading"]),D(V,{visible:e.value,"onUpdate:visible":a[11]||(a[11]=l=>e.value=l),title:"مرتبط کردن کتاب",onOk:Be,onCancel:re,width:"500px"},{default:q(()=>[i("div",jt,[i("div",null,[Ft,D(ge,{value:R.value.book_id??void 0,"onUpdate:value":a[10]||(a[10]=l=>R.value.book_id=l??null),items:T.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])])])]),_:1},8,["visible"]),D(V,{visible:S.value,"onUpdate:visible":a[12]||(a[12]=l=>S.value=l),title:"اطلاعات بازدیدها",onCancel:ue,width:"800px",customFooter:!0,okText:""},{footer:q(()=>[i("div",Et,[D(_,{onClick:ue},{default:q(()=>[oe("بستن")]),_:1})])]),default:q(()=>[d.value?(j(),W("div",Wt,[i("div",Zt,[i("div",Jt,[Gt,i("div",Xt,ee(d.value.total_views),1)]),i("div",Kt,[Qt,i("div",es,ee(d.value.unique_viewers),1)])]),i("div",null,[ts,d.value&&d.value.total_views>0?(j(),W("div",ss,[D(n,ve(P.value,{onRegister:A(B)}),null,16,["onRegister"])])):(j(),W("div",as," هنوز بازدیدی ثبت نشده است "))])])):v.value?(j(),W("div",os,[D(A(ke),{size:"large"})])):X("",!0)]),_:1},8,["visible"])]),_:1})])}}});export{Vs as default};