2 lines
56 KiB
JavaScript
2 lines
56 KiB
JavaScript
import{d as Ds,i as g,v as Rs,u as js,j as K,z as it,x as Ns,o as c,c as d,e as i,w as m,l as x,b as s,F as $,q as R,n as C,t as f,f as w,s as X,C as Fe,H as y,U as Fs,V as zs,$ as Es,M as ze,_ as Bs,bo as Os,A as At,k as Pt}from"./index-c678e119.js";import{_ as Hs}from"./BasicMainCard-ff1543bd.js";import{_ as Is}from"./BasicModal.vue_vue_type_style_index_0_lang-6296deb9.js";import{_ as Vs}from"./BasicInput.vue_vue_type_style_index_0_lang-06536e2e.js";import{_ as Ws}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-0d6b57d1.js";import{_ as Gs}from"./BasicTextArea.vue_vue_type_style_index_0_lang-46e82d82.js";import{_ as Ks}from"./button.vue_vue_type_style_index_0_lang-fbfa965d.js";import{d as nt}from"./updateLocale-e9df593e.js";import{g as Xs,c as Js,a as Lt,u as Mt,b as Zs,d as Qs,s as Ys,e as ea,f as Dt,h as ta,i as sa,j as aa,k as la,l as oa}from"./stepChallenge-8e687545.js";import{I as T}from"./Icon-671f08f9.js";import{_ as ia}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-fb1f156c.js";import{a as ut}from"./useDataTime-206d8d2e.js";import{g as oe,e as B,a as na}from"./convert-2ad76038.js";import{T as Rt}from"./index-88858982.js";import{T as ua}from"./dayjs-40a73cf6.js";import{S as ie}from"./index-5203b45e.js";import{M as jt}from"./index-66da2c76.js";import{_ as Nt}from"./index-01af60d8.js";import{_ as ra}from"./index-e517c667.js";import{T as ca}from"./index-05e85885.js";import{T as rt}from"./isSymbol-5130882b.js";import{U as fe}from"./index-ff90b762.js";import{_ as da}from"./_plugin-vue_export-helper-edd5ed68.js";import"./Grid-192c1e72.js";import"./index-2a1871d2.js";import"./Col-65d77001.js";import"./styleChecker-c202e4d7.js";import"./isPlainObject-2f8cd8cc.js";import"./vnode-34fe2aaf.js";import"./usePrice-bc935b83.js";import"./index-c5016c96.js";import"./adminDb-aa2cb7bf.js";import"./supabaseTableQuery-e9feb810.js";import"./shallowequal-93b92d94.js";import"./useState-fb1fd992.js";import"./useMemo-3527b8f5.js";import"./FormItemContext-53695780.js";import"./omit-30cc2465.js";import"./index-27b4bb6d.js";import"./index-ea10bb13.js";import"./useRefs-d469f03d.js";import"./_flatRest-89cece1c.js";import"./isMobile-e2e89480.js";import"./index-30b2d9cf.js";import"./DialogWrap-0297f46d.js";import"./pickAttrs-09168c62.js";import"./toArray-acd138e5.js";import"./SearchOutlined-445bfd70.js";import"./index-d80ea252.js";import"./css-aae66f86.js";import"./index-679d69b0.js";import"./index-e3658ae2.js";const _=be=>(Fs("data-v-d1222b9a"),be=be(),zs(),be),_a={class:"mgmt-page"},va={class:"mgmt-layout"},ma={class:"mgmt-chapters"},pa=_(()=>s("div",{class:"mgmt-chapters__title"},"فصلها",-1)),ga={key:0,class:"py-10 flex justify-center"},ha=["onClick"],fa={class:"mgmt-chapters__item-label"},ba={class:"mgmt-chapters__item-count"},ya={key:0,class:"text-center text-gray-500 text-sm py-8 px-2"},xa={class:"mgmt-challenges"},wa={class:"mgmt-challenges__header flex flex-wrap items-center justify-between gap-3"},ka={class:"m-0 text-base font-semibold"},Ca={key:0,class:"text-center text-gray-500 py-16"},Sa={key:1,class:"py-16 flex justify-center"},Ua={key:2,class:"mgmt-grids"},qa={class:"mgmt-grid-block__label"},$a={class:"text-gray-400 font-normal"},Ta={class:"mgmt-grid"},Aa=["onClick","onKeydown"],Pa=["onClick"],La={class:"mgmt-slot__number"},Ma=["title"],Da=["title"],Ra={class:"mgmt-slot__number"},ja=_(()=>s("span",{class:"mgmt-slot__hint"},"افزودن",-1)),Na={class:"flex justify-between items-center mb-4 gap-3 flex-wrap"},Fa=_(()=>s("div",null,[s("h2",{class:"m-0"},"فصلهای نقشه ماجراجویی"),s("p",{class:"text-sm text-gray-500 m-0 mt-1"},"هر فصل دو اسلاید ۱۵تایی دارد (گرید ۵×۳، حداکثر ۳۰ چالش).")],-1)),za={class:"flex gap-2 flex-wrap"},Ea={key:0,class:"py-16 flex justify-center"},Ba={key:1,class:"space-y-3"},Oa={class:"flex-1 min-w-0"},Ha={class:"font-semibold truncate"},Ia={class:"text-sm text-gray-500 truncate"},Va={class:"text-xs text-gray-400 mt-1"},Wa={class:"flex gap-2 shrink-0"},Ga=_(()=>s("span",null,"ویرایش",-1)),Ka=_(()=>s("span",null,"حذف",-1)),Xa={key:0,class:"text-center text-gray-500 py-12"},Ja={class:"mgmt-page progress-mgmt-page"},Za={class:"mgmt-layout"},Qa={class:"mgmt-chapters"},Ya=_(()=>s("div",{class:"mgmt-chapters__title"},"فصلها",-1)),el={key:0,class:"py-10 flex justify-center"},tl=["onClick"],sl={class:"mgmt-chapters__item-label"},al={class:"mgmt-chapters__item-count"},ll=_(()=>s("span",{class:"mgmt-chapters__item-label"},"بدون فصل",-1)),ol={class:"mgmt-chapters__item-count"},il={key:0,class:"text-center text-gray-500 text-sm py-8 px-2"},nl={class:"mgmt-challenges"},ul={class:"mgmt-challenges__header flex flex-wrap items-center justify-between gap-3"},rl={class:"m-0 text-base font-semibold"},cl={class:"flex gap-2 flex-wrap"},dl={key:0,class:"py-16 flex justify-center"},_l={key:1,class:"text-center text-gray-500 py-16"},vl={key:2,class:"mgmt-grids"},ml={class:"mgmt-grid-block__label"},pl={class:"text-gray-400 font-normal"},gl={class:"mgmt-grid"},hl=["disabled","onClick"],fl={class:"progress-slot__number"},bl=["title"],yl={class:"progress-slot__stats"},xl={class:"progress-slot__action"},wl={class:"progress-slot__number"},kl=_(()=>s("span",{class:"progress-slot__hint"},"خالی",-1)),Cl={class:"space-y-4"},Sl={class:"flex flex-wrap items-center justify-between gap-3"},Ul=_(()=>s("div",null,[s("h2",{class:"m-0 text-base font-semibold"},"چالشهای پیشنهادی کاربران"),s("p",{class:"text-sm text-gray-500 m-0 mt-1"},"پیشنهادهایی که مشترکین برای کدوبلو ارسال کردهاند.")],-1)),ql={class:"flex flex-wrap items-center gap-2"},$l={key:1,class:"suggestion-challenge-cell"},Tl={class:"suggestion-challenge-cell__title-row"},Al={class:"font-medium"},Pl=["title","onClick"],Ll={key:0,class:"suggestion-challenge-cell__steps"},Ml={class:"suggestion-challenge-cell__step-title"},Dl={class:"suggestion-challenge-cell__step-desc"},Rl=["onClick"],jl={key:0,class:"text-xs text-gray-400"},Nl={class:"max-w-2xl space-y-6"},Fl={class:"space-y-4"},zl=_(()=>s("h2",{class:"text-lg font-semibold m-0"},"قوانین چالشهای کدوبلو",-1)),El=_(()=>s("p",{class:"text-sm text-gray-600 m-0"}," ویدیوی embed آپارات که در مودال «قوانین چالش کدوبلو» به کاربر نمایش داده میشود. ",-1)),Bl=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"کد embed ویدیو قوانین",-1)),Ol={class:"space-y-3 border-t border-gray-100 pt-5"},Hl=_(()=>s("h2",{class:"text-lg font-semibold m-0"},"صفحه پایان چالش",-1)),Il=_(()=>s("p",{class:"text-sm text-gray-600 m-0"}," بخش نظرسنجی و فیدبک مستمر مخاطب در صفحه پایان چالش. ",-1)),Vl={class:"flex items-center gap-3 rounded-xl border border-gray-200 bg-gray-50 px-4 py-3"},Wl=_(()=>s("div",{class:"text-sm font-medium text-gray-800"},"نمایش کارت نظرسنجی / فیدبک",-1)),Gl={class:"text-xs text-gray-500 mt-0.5"},Kl={class:"space-y-4 relative"},Xl={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Jl=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"عنوان چالش",-1)),Zl={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Ql=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"تاریخ انتشار",-1)),Yl=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"ساعت انتشار (تهران)",-1)),eo={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},to={class:"sm:col-span-3"},so=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"فصل (نقشه ماجراجویی)",-1)),ao={class:"text-gray-400"},lo={class:"text-xs text-gray-400 mt-1"},oo={key:0},io=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت نمایش",-1)),no={class:"flex items-center gap-2 mt-2"},uo={class:"text-sm text-gray-600"},ro=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"نوع دسترسی",-1)),co=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز اولین تکمیل",-1)),_o={class:"flex justify-center pb-2"},vo=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"عکس کاراکتر (کارت لیست)",-1)),mo={key:0},po=_(()=>s("div",null,"آپلود تصویر",-1)),go={key:0,class:"mt-1"},ho={class:"h-2 rounded bg-gray-200 overflow-hidden"},fo=_(()=>s("div",{class:"section-divider"},null,-1)),bo={class:"pt-2"},yo=_(()=>s("div",{class:"mb-2 text-sm text-gray-600 font-semibold"},"مراحل چالش",-1)),xo={class:"space-y-4"},wo={class:"flex items-center justify-between gap-3"},ko={class:"font-semibold text-gray-700"},Co={key:0,class:"text-emerald-600 text-sm font-normal mr-1"},So={class:"flex items-center gap-2"},Uo=_(()=>s("span",{class:"text-sm text-gray-600"},"ماموریت پایانی",-1)),qo=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"توضیحات مرحله (اختیاری)",-1)),$o={class:"grid grid-cols-2 gap-3"},To=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"زمان لازم (دقیقه)",-1)),Ao=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"کد embed ویدیو آپارات (اختیاری)",-1)),Po={class:"space-y-2"},Lo=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"وویس کدوبلو (اختیاری)",-1)),Mo={key:0,class:"mt-1"},Do={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ro={key:1,class:"step-audio-preview"},jo={class:"flex items-center justify-between mb-2"},No=_(()=>s("div",{class:"step-audio-preview__label mb-0"},"پیشنمایش وویس کدوبلو",-1)),Fo=["src"],zo=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"عکسهای مرحله (اختیاری)",-1)),Eo={key:0},Bo=_(()=>s("div",{class:"text-xs"},"آپلود عکس",-1)),Oo=_(()=>s("div",{class:"section-divider"},null,-1)),Ho={class:"step-form-box__inner"},Io=_(()=>s("div",{class:"text-xs font-semibold text-gray-600 mb-3"},"آیتمهای بعد از «بزن بریم»",-1)),Vo={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},Wo={class:"flex items-center gap-2"},Go=_(()=>s("span",{class:"text-sm"},"فیلد بازخورد",-1)),Ko={class:"flex items-center gap-2"},Xo=_(()=>s("span",{class:"text-sm"},"بازخورد اجباری",-1)),Jo={class:"flex items-center gap-2"},Zo=_(()=>s("span",{class:"text-sm"},"بارگذاری عکس",-1)),Qo={class:"flex items-center gap-2"},Yo=_(()=>s("span",{class:"text-sm"},"عکس اجباری",-1)),ei={class:"flex items-center gap-2"},ti=_(()=>s("span",{class:"text-sm"},"ضبط و ارسال ویس",-1)),si={class:"flex items-center gap-2"},ai=_(()=>s("span",{class:"text-sm"},"ویس اجباری",-1)),li={class:"flex items-center gap-2"},oi=_(()=>s("span",{class:"text-sm"},"سوال چندگزینهای",-1)),ii={class:"flex items-center gap-2"},ni=_(()=>s("span",{class:"text-sm"},"پاسخ MCQ اجباری",-1)),ui={class:"flex items-center gap-2"},ri=_(()=>s("span",{class:"text-sm"},"بخش صوت",-1)),ci={key:0,class:"space-y-2 border rounded-lg p-3 bg-white"},di=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"عنوان فیلد بازخورد",-1)),_i=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"متن پیشفرض فیلد بازخورد",-1)),vi={key:1,class:"space-y-2 border rounded-lg p-3"},mi=["name","checked","onChange"],pi=_(()=>s("span",{class:"text-xs"},"صحیح",-1)),gi={key:2,class:"space-y-2"},hi=_(()=>s("div",{class:"mb-1 text-xs text-gray-500"},"فایل بخش صوت",-1)),fi={key:0,class:"mt-1"},bi={class:"h-2 rounded bg-gray-200 overflow-hidden"},yi={key:1,class:"step-audio-preview"},xi={class:"flex items-center justify-between mb-2"},wi=_(()=>s("div",{class:"step-audio-preview__label mb-0"},"پیشنمایش بخش صوت",-1)),ki=["src"],Ci={class:"flex justify-end pt-1"},Si=_(()=>s("span",{class:"text-[#DC2626]"},"حذف مرحله",-1)),Ui=_(()=>s("span",{class:"text-gray-500"},"+ افزودن مرحله",-1)),qi={class:"space-y-4"},$i=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"عنوان فصل",-1)),Ti=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1)),Ai={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Pi=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"تم رنگی جزیره",-1)),Li=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب",-1)),Mi={class:"flex items-center gap-2"},Di={class:"text-sm text-gray-600"},Ri=_(()=>s("div",{class:"mb-1 text-sm text-gray-600"},"تصویر فصل (اختیاری)",-1)),ji={key:0},Ni=_(()=>s("div",null,"آپلود تصویر",-1)),Fi={key:0,class:"mt-1"},zi={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ei=_(()=>s("div",{class:"text-xs text-gray-400 mt-1"},"اگر خالی باشد، تصویر تم انتخابشده استفاده میشود.",-1)),Bi={class:"text-sm text-gray-500 mb-2"},Oi={class:"whitespace-pre-wrap leading-7 text-gray-800"},Ee=30,Be=15,ct=80,Hi=Ds({__name:"index",setup(be){const Ft=Rt,ne=Rt.TabPane,Oe=Nt,j=Nt.Option;function ye(e){return e?e.replace(/-/g,"/"):""}function zt(e){return e?e.replace(/\//g,"-"):""}function ue(){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Tehran"}).format(new Date)}function re(e){const t=(e||"09:00").trim();return/^\d{2}:\d{2}$/.test(t)?t:/^\d{2}:\d{2}:\d{2}$/.test(t)?t.slice(0,5):"09:00"}function Et(e){return nt(re(e),"HH:mm")}function He(){xe.value=v.value.publish_time?Et(v.value.publish_time):nt("09:00","HH:mm")}function dt(e){if(!e.publish_date)return"";const t=ut(e.publish_date),l=re(e.publish_time);return`${t} · ${l}`}const J=g(ye(ue())),xe=g(nt("09:00","HH:mm")),Bt=Rs(),Ot=js(),V=g(Bt.query.tab==="progress"?"progress":"challenges"),ce=g(!1),Z=g(!1),Q=g(null),we=g(null),Ie=g(!1),z=g({rules_aparat_embed_code:"",show_completion_feedback:!0}),Ve=g(!1),We=g(!1),Ge=g(!1),Ke=g(!1),Xe=g(!1),ke=g(""),_t=g([]),de=g(1),_e=g(20),vt=g(0),Y=g({}),Ce=g(!1),Je=g(""),Ze=g(""),Ht=[{title:"ردیف",key:"row",width:70,align:"center"},{title:"نام",dataIndex:"user_name",key:"user_name",width:160},{title:"موبایل",dataIndex:"user_phone",key:"user_phone",width:140},{title:"چالش پیشنهادی",key:"challenge"}],It=K(()=>({current:de.value,pageSize:_e.value,total:vt.value,showSizeChanger:!0,showTotal:e=>`${e} مورد`})),Se=g(!1),O=g([]),N=g(null),A=g(null),Qe=g(!1),Ue=g([]),ee=g([]),ve=g({}),Ye=g({}),te=g({}),se=g({}),P=g(0),W=g(0),et=()=>({description:"",duration_minutes:0,aparat_embed_code:"",kodoblu_voice_url:"",step_images:[],is_final_step:!1,enable_feedback_text:!1,require_feedback_text:!1,feedback_text_title:"بازخورد این مرحله",feedback_text_placeholder:"بازخورد خود را بنویس...",enable_photo_upload:!1,require_photo_upload:!1,enable_voice_upload:!1,require_voice_upload:!1,enable_mcq:!1,require_mcq:!1,mcq_question:"",mcq_options:["",""],mcq_correct_index:0,enable_audio_section:!1,audio_section_url:"",punishment_description:"",requires_photo_upload:!1}),v=g({title:"",character_image_url:null,show:!1,access_type:"subscription",sort_order:0,completion_points:50,chapter_id:null,publish_date:ue(),publish_time:"09:00",steps:[et()]});it(J,e=>{v.value.publish_date=zt(e||"")}),it(xe,e=>{v.value.publish_time=e?e.format("HH:mm"):""});const U=g([]),me=g(!1),ae=g({}),pe=g(!1),qe=g(!1),$e=g(null),S=g({title:"",subtitle:"",theme_key:"meadow",cover_image_url:null,sort_order:0,show:!0}),H=g([]),E=g(0),mt={meadow:"خانه کدوبلو",cottage:"کافه پفی",forest:"باغ میلا",desert:"کارگاه پیتو",winter:"خانه آرامان",castle:"میدان شهر",tree:"درخت پیرین"};function pt(e){return e&&e in mt?mt[e]:e||"-"}const gt=K(()=>U.value.find(e=>e.id===A.value)||null),Vt=K(()=>{if(N.value===0)return"چالشهای بدون فصل";const e=U.value.find(t=>t.id===N.value);return e?`چالشهای ${e.title}`:"یک فصل انتخاب کنید"}),ht=K(()=>{const e={0:0};for(const t of U.value)t.id&&(e[t.id]=0);for(const t of O.value){const l=t.chapter_id??0;e[l]=(e[l]||0)+1}return e}),ft=K(()=>N.value===null?[]:N.value===0?O.value.filter(e=>e.chapter_id==null):O.value.filter(e=>e.chapter_id===N.value)),Wt=K(()=>Kt(Ue.value)),Gt=K(()=>Xt(ft.value));function Kt(e){const t=Array.from({length:Ee},()=>null),l=new Set;for(const n of e){const u=Number(n.sort_order);u>=1&&u<=Ee&&!t[u-1]&&(t[u-1]=n,l.add(n.id))}for(const n of e){if(l.has(n.id))continue;const u=t.findIndex(h=>h===null);if(u<0)break;t[u]=n,l.add(n.id)}return t.map((n,u)=>({slotNumber:u+1,challenge:n}))}function Xt(e){const t=Array.from({length:Ee},()=>null),l=new Set;for(const n of e){const u=Number(n.sort_order);u>=1&&u<=Ee&&!t[u-1]&&(t[u-1]=n,l.add(n.id))}for(const n of e){if(l.has(n.id))continue;const u=t.findIndex(h=>h===null);if(u<0)break;t[u]=n,l.add(n.id)}return t.map((n,u)=>({slotNumber:u+1,challenge:n}))}function Jt(e){const t=e*Be;return Wt.value.slice(t,t+Be)}function Zt(e){const t=e*Be;return Gt.value.slice(t,t+Be)}async function I(){var e;me.value=!0;try{const t=await Xs();U.value=t;const l={};await Promise.all(U.value.map(async n=>{n.id&&(l[n.id]=await Js(n.id))})),ae.value=l,!A.value&&U.value.length?A.value=U.value[0].id:A.value&&!U.value.some(n=>n.id===A.value)&&(A.value=((e=U.value[0])==null?void 0:e.id)??null),A.value?await tt(A.value):Ue.value=[]}catch(t){y.error(t.message||"خطا در بارگذاری فصلها")}finally{me.value=!1}}async function tt(e){Qe.value=!0;try{Ue.value=await Lt(e)}catch(t){y.error(t.message||"خطا در بارگذاری چالشهای فصل"),Ue.value=[]}finally{Qe.value=!1}}async function Qt(e){A.value=e,await tt(e)}function bt(e){if(e.challenge){fs(e.challenge);return}Yt(e.slotNumber)}function Yt(e){if(!A.value){y.warning("ابتدا یک فصل انتخاب کنید");return}Z.value=!1,Q.value=null,we.value=null,St(),v.value.chapter_id=A.value,v.value.sort_order=e,v.value.show=!0,v.value.publish_date=ue(),v.value.publish_time="09:00",J.value=ye(v.value.publish_date),He(),ce.value=!0}function yt(){S.value={title:"",subtitle:"",theme_key:"meadow",cover_image_url:null,sort_order:(U.value.length||0)+1,show:!0},H.value=[],E.value=0}function es(){qe.value=!1,$e.value=null,yt(),pe.value=!0}function ts(e){qe.value=!0,$e.value=e.id||null,S.value={title:e.title||"",subtitle:e.subtitle||"",theme_key:e.theme_key||"meadow",cover_image_url:B(e.cover_image_url)||null,sort_order:e.sort_order||0,show:e.show!==!1},e.cover_image_url?H.value=[{uid:`${Date.now()}`,name:"chapter.jpg",status:"done",url:oe(e.cover_image_url)}]:H.value=[],E.value=0,pe.value=!0}function xt(){pe.value=!1,yt()}async function ss(){if(!S.value.title.trim()){y.error("عنوان فصل الزامی است");return}try{const e={title:S.value.title.trim(),subtitle:S.value.subtitle.trim()||null,theme_key:S.value.theme_key,cover_image_url:S.value.cover_image_url||null,sort_order:Number(S.value.sort_order)||0,show:S.value.show};qe.value&&$e.value?(await Mt($e.value,e),y.success("فصل ویرایش شد")):(await Zs(e),y.success("فصل اضافه شد")),xt(),await I()}catch(e){y.error(e.message||"خطا در ذخیره فصل")}}async function as(e){e.id&&(await Mt(e.id,{show:!e.show}),y.success(e.show?"فصل مخفی شد":"فصل نمایش داده میشود"),await I())}async function ls(e){e.id&&jt.confirm({title:"حذف فصل",content:"با حذف فصل، چالشهای آن بدون فصل میمانند. ادامه میدهید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{await aa(e.id),y.success("فصل حذف شد"),await I()}})}async function os(e){e!=null&&e.id&&jt.confirm({title:"حذف چالش",content:`چالش «${e.title}» و تمام مراحل و پیشرفت کاربران آن حذف میشود. ادامه میدهید؟`,okText:"حذف",okType:"danger",cancelText:"انصراف",onOk:async()=>{try{await la(e.id),y.success("چالش حذف شد"),Q.value===e.id&<(),A.value&&await tt(A.value),await I(),O.value.length&&await he()}catch(t){throw y.error(t.message||"خطا در حذف چالش"),t}}})}function Te(e){return{width:`${Math.max(0,Math.min(100,e))}%`}}function Ae(){return Es()||localStorage.getItem("tamin_token")||localStorage.getItem("token")||""}function Pe(e){var l,n,u,h;const t=e.full_src||e.url||e.src||e.path||((l=e.data)==null?void 0:l.full_src)||((n=e.data)==null?void 0:n.url)||((u=e.data)==null?void 0:u.src)||((h=e.data)==null?void 0:h.path)||"";return B(String(t||""))}function Le(e,t,l){const n=[...v.value.steps];n[e]={...n[e],[t]:l},v.value.steps=n}function F(e,t){return`${e}:${t}`}function st(e,t){return ve.value[F(e,t)]||[]}function le(e,t){return Ye.value[F(e,t)]||0}function Me(e,t,l){Ye.value[F(e,t)]=l}function De(e){return e?e.startsWith("http://")||e.startsWith("https://")?e:na(e):""}function is(e,t){return te.value[F(e,t)]||""}function G(e,t){const l=F(e,t),n=te.value[l];n&&(URL.revokeObjectURL(n),delete te.value[l])}function ns(){Object.values(te.value).forEach(e=>URL.revokeObjectURL(e)),te.value={}}function ge(e,t,l){const n=is(e,t);if(n)return n;if(l!=null&&l.trim())return De(l);const u=st(e,t)[0];return(u==null?void 0:u.url)||""}function wt(e,t,l){return!!ge(e,t,l)}function us(){ns(),ve.value={},Ye.value={}}function rs(){se.value={}}function at(e){return se.value[e]||[]}function kt(){const e={};v.value.steps.forEach((t,l)=>{const n=(t.step_images||[]).filter(Boolean);n.length&&(e[l]=n.map((u,h)=>({uid:`step-image-${l}-${h}`,name:`image-${h+1}.jpg`,status:"done",url:oe(u),response:{path:B(u)||u}})))}),se.value=e}function Ct(){const e={};v.value.steps.forEach((t,l)=>{t.audio_section_url&&(e[F(l,"audio_section_url")]=[{uid:`audio-section-${l}`,name:"audio-section.mp3",status:"done",url:De(t.audio_section_url)}]),t.kodoblu_voice_url&&(e[F(l,"kodoblu_voice_url")]=[{uid:`kodoblu-voice-${l}`,name:"kodoblu-voice.mp3",status:"done",url:De(t.kodoblu_voice_url)}])}),ve.value=e}function Re(e,t){G(e,t),Le(e,t,""),ve.value[F(e,t)]=[]}function cs(e,t){var u,h;const l=B(((u=t.response)==null?void 0:u.path)||t.url||""),n=((h=v.value.steps[e])==null?void 0:h.step_images)||[];Le(e,"step_images",n.filter(k=>B(k)!==l)),se.value[e]=(se.value[e]||[]).filter(k=>k.uid!==t.uid)}function St(){v.value={title:"",character_image_url:null,show:!1,access_type:"subscription",sort_order:0,completion_points:50,chapter_id:null,publish_date:ue(),publish_time:"09:00",steps:[et()]},J.value=ye(v.value.publish_date),He(),ee.value=[],us(),rs()}function lt(){ce.value=!1,Z.value=!1,Q.value=null,we.value=null,St()}function ds(){v.value.steps.push(et())}function _s(e){v.value.steps.length<=1||(G(e,"kodoblu_voice_url"),G(e,"audio_section_url"),v.value.steps.splice(e,1),Ct(),kt())}async function he(){var e;Se.value=!0;try{O.value=await Qs(),N.value===null&&(N.value=((e=U.value[0])==null?void 0:e.id)??0)}catch(t){y.error(t.message||"خطا در بارگذاری پیشرفت چالشها")}finally{Se.value=!1}}function Ut(e){N.value=e}function vs(){S.value.cover_image_url=null,H.value=[]}async function ms(e){const{file:t,onSuccess:l,onError:n,onProgress:u}=e,h=new FormData;h.append("file",t);const k=`${ze}/upload/machartaa-img`;E.value=0,P.value++,await new Promise((q,M)=>{const b=new XMLHttpRequest;b.open("POST",k),b.setRequestHeader("Authorization",`Bearer ${Ae()}`),b.upload.onprogress=p=>{if(p.lengthComputable){const a=Math.round(p.loaded/p.total*100);E.value=a,u==null||u({percent:a})}},b.onload=()=>{if(E.value=100,b.status>=200&&b.status<300)try{const p=JSON.parse(b.responseText||"{}"),a=Pe(p);if(!a)throw new Error("مسیر فایل از سرور دریافت نشد");const o=oe(a);S.value.cover_image_url=a,H.value=o?[{uid:`${Date.now()}`,name:"chapter.jpg",status:"done",url:o,response:{path:a}}]:[],l==null||l(p,b),y.success("تصویر فصل آپلود شد"),q()}catch(p){n==null||n(p,b),M(p)}else{const p=new Error("خطا در آپلود تصویر فصل");n==null||n(p,b),M(p)}},b.onerror=()=>{n==null||n(new Error("خطا در آپلود تصویر فصل!"),b),M(new Error("خطا در آپلود تصویر فصل!"))},b.onloadend=()=>{P.value=Math.max(0,P.value-1),E.value=0},b.send(h)})}function ps(e){Ot.push({name:"stepChallengeFeedback",params:{challengeId:e}})}function ot(e){return e.type.startsWith("image/")?e.size/1024/1024<5?!0:(y.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(y.error("فقط فایلهای تصویری قابل آپلود هستند!"),!1)}async function gs(e){const{file:t,onSuccess:l,onError:n,onProgress:u}=e,h=new FormData;h.append("file",t);const k=`${ze}/upload/machartaa-img`;W.value=0,P.value++,await new Promise((q,M)=>{const b=new XMLHttpRequest;b.open("POST",k),b.setRequestHeader("Authorization",`Bearer ${Ae()}`),b.upload.onprogress=p=>{if(p.lengthComputable){const a=Math.round(p.loaded/p.total*100);W.value=a,u==null||u({percent:a})}},b.onload=()=>{if(W.value=100,b.status>=200&&b.status<300)try{const p=JSON.parse(b.responseText||"{}"),a=Pe(p);if(!a)throw new Error("مسیر فایل از سرور دریافت نشد");const o=oe(a);v.value.character_image_url=a,ee.value=o?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:o,response:{path:a}}]:[],l==null||l(p,b),y.success("تصویر با موفقیت آپلود شد!"),q()}catch(p){n==null||n(p,b),M(p)}else{const p=new Error("خطا در آپلود تصویر");n==null||n(p,b),M(p)}},b.onerror=()=>{n==null||n(new Error("خطا در آپلود تصویر!"),b),M(new Error("خطا در آپلود تصویر!"))},b.onloadend=()=>{P.value=Math.max(0,P.value-1),W.value=0},b.send(h)})}async function hs(e,t){const{file:l,onSuccess:n,onError:u,onProgress:h}=e,k=new FormData;k.append("file",l);const q=`${ze}/upload/machartaa-img`;P.value++,await new Promise((M,b)=>{const p=new XMLHttpRequest;p.open("POST",q),p.setRequestHeader("Authorization",`Bearer ${Ae()}`),p.upload.onprogress=a=>{a.lengthComputable&&(h==null||h({percent:Math.round(a.loaded/a.total*100)}))},p.onload=()=>{var a;if(p.status>=200&&p.status<300)try{const o=JSON.parse(p.responseText||"{}"),r=Pe(o);if(!r)throw new Error("مسیر تصویر از سرور دریافت نشد");const L=[...((a=v.value.steps[t])==null?void 0:a.step_images)||[],r];Le(t,"step_images",L);const D={uid:`${Date.now()}-${t}`,name:l.name||"image.jpg",status:"done",url:oe(r),response:{path:r}};se.value[t]=[...at(t),D],n==null||n(o,p),y.success("عکس مرحله با موفقیت آپلود شد!"),M()}catch(o){u==null||u(o,p),b(o)}else{const o=new Error("خطا در آپلود عکس مرحله");u==null||u(o,p),b(o)}},p.onerror=()=>{u==null||u(new Error("خطا در آپلود عکس مرحله!"),p),b(new Error("خطا در آپلود عکس مرحله!"))},p.onloadend=()=>{P.value=Math.max(0,P.value-1)},p.send(k)})}function qt(e){return e.type.startsWith("audio/")?e.size/1024/1024<60?!0:(y.error("حجم فایل صوتی باید کمتر از 60MB باشد!"),!1):(y.error("فقط فایلهای صوتی قابل آپلود هستند!"),!1)}async function $t(e,t,l){const{file:n,onSuccess:u,onError:h,onProgress:k}=e,q=new FormData;q.append("file",n);const M=`${ze}/upload/machartaa-audio`;G(t,l),te.value[F(t,l)]=URL.createObjectURL(n),Me(t,l,0),P.value++,await new Promise((b,p)=>{const a=new XMLHttpRequest;a.open("POST",M),a.setRequestHeader("Authorization",`Bearer ${Ae()}`),a.timeout=15*60*1e3,a.upload.onprogress=o=>{if(o.lengthComputable){const r=Math.round(o.loaded/o.total*100);Me(t,l,r),k==null||k({percent:r})}},a.onload=()=>{if(Me(t,l,100),a.status>=200&&a.status<300)try{const o=JSON.parse(a.responseText||"{}"),r=Pe(o);if(!r)throw new Error("مسیر فایل صوتی از سرور دریافت نشد");G(t,l),Le(t,l,r);const L=De(r);ve.value[F(t,l)]=L?[{uid:`${Date.now()}`,name:n.name||"audio.mp3",status:"done",url:L,response:{path:r}}]:[],u==null||u(o,a),y.success("فایل صوتی با موفقیت آپلود شد!"),b()}catch(o){h==null||h(o,a),p(o)}else{G(t,l);const o=new Error("خطا در آپلود فایل صوتی");h==null||h(o,a),p(o)}},a.onerror=()=>{G(t,l),h==null||h(new Error("خطا در آپلود فایل صوتی!"),a),p(new Error("خطا در آپلود فایل صوتی!"))},a.onloadend=()=>{P.value=Math.max(0,P.value-1),Me(t,l,0)},a.send(q)})}async function fs(e){try{const t=await oa(e.id);Z.value=!0,Q.value=e.id,we.value=t.chapter_id??null,v.value={title:t.title,character_image_url:B(t.character_image_url),show:!!t.show,access_type:t.access_type==="subscription"?"subscription":"free",sort_order:t.sort_order||0,completion_points:t.completion_points??50,chapter_id:t.chapter_id??null,publish_date:t.publish_date||ue(),publish_time:re(t.publish_time),steps:(t.steps||[]).map(l=>({id:l.id,description:l.description||"",duration_minutes:l.duration_minutes!=null?Number(l.duration_minutes):Math.round((Number(l.duration_seconds)||0)/60),aparat_embed_code:l.aparat_embed_code||"",kodoblu_voice_url:l.kodoblu_voice_url||"",step_images:Array.isArray(l.step_images)?[...l.step_images]:[],is_final_step:!!l.is_final_step,enable_feedback_text:!!l.enable_feedback_text,require_feedback_text:!!l.require_feedback_text,feedback_text_title:l.feedback_text_title||"بازخورد این مرحله",feedback_text_placeholder:l.feedback_text_placeholder||"بازخورد خود را بنویس...",enable_photo_upload:!!(l.enable_photo_upload??l.requires_photo_upload),require_photo_upload:l.require_photo_upload!=null?!!l.require_photo_upload:!l.enable_photo_upload&&!!l.requires_photo_upload,enable_voice_upload:!!l.enable_voice_upload,require_voice_upload:!!l.require_voice_upload,enable_mcq:!!l.enable_mcq,require_mcq:!!l.require_mcq,mcq_question:l.mcq_question||"",mcq_options:Array.isArray(l.mcq_options)&&l.mcq_options.length?[...l.mcq_options]:["",""],mcq_correct_index:Number(l.mcq_correct_index??0),enable_audio_section:!!l.enable_audio_section,audio_section_url:l.audio_section_url||"",punishment_description:l.punishment_description||"",requires_photo_upload:l.require_photo_upload!=null?!!l.require_photo_upload:!l.enable_photo_upload&&!!l.requires_photo_upload}))},J.value=ye(v.value.publish_date),He(),t.character_image_url&&(ee.value=[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:oe(t.character_image_url)}]),Ct(),kt(),ce.value=!0}catch(t){y.error(t.message||"خطا در بارگذاری چالش")}}async function bs(){var e;Ie.value=!0;try{await Ys({rules_aparat_embed_code:((e=z.value.rules_aparat_embed_code)==null?void 0:e.trim())||null,show_completion_feedback:z.value.show_completion_feedback!==!1}),y.success("تنظیمات ذخیره شد")}catch(t){y.error(t.message||"خطا در ذخیره تنظیمات")}finally{Ie.value=!1}}async function ys(){try{const e=await ea();z.value.rules_aparat_embed_code=(e==null?void 0:e.rules_aparat_embed_code)||"",z.value.show_completion_feedback=(e==null?void 0:e.show_completion_feedback)!==!1}catch(e){y.error(e.message||"خطا در بارگذاری تنظیمات")}}function xs(e){return(de.value-1)*_e.value+e+1}function ws(e){const t=(e||"").trim();return t.length<=ct?t:`${t.slice(0,ct)}`}function ks(e){return(e||"").trim().length>ct}function Cs(e){Y.value={...Y.value,[e]:!Y.value[e]}}function Ss(e,t){Je.value=e||"",Ze.value=t||"توضیحات کامل",Ce.value=!0}function Us(){Ce.value=!1,Je.value="",Ze.value=""}async function je(e,t,l){if(!e.length){y.warning("دادهای برای خروجی وجود ندارد");return}const n=await Bs(()=>import("./xlsx-6ed613d4.js"),[]),u=n.utils.json_to_sheet(e),h=n.utils.book_new();n.utils.book_append_sheet(h,u,t),n.writeFile(h,`${l}_${Date.now()}.xlsx`),y.success("فایل اکسل با موفقیت دانلود شد")}async function qs(){We.value=!0;try{const e=[];let t=1;for(const l of U.value){if(!l.id)continue;const n=await Lt(l.id);for(const u of n)e.push({ردیف:t++,فصل:l.title||"-","عنوان چالش":u.title||"-","شماره جایگاه":u.sort_order??"",وضعیت:u.show?"نمایش":"مخفی","نوع دسترسی":u.access_type||"-","امتیاز تکمیل":u.completion_points??0,"تاریخ انتشار":u.publish_date?ut(u.publish_date):"-","ساعت انتشار":u.publish_time?re(u.publish_time):"-"})}await je(e,"چالشها","چالش_های_مرحله_ای")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل چالشها")}finally{We.value=!1}}async function $s(){Ge.value=!0;try{const e=U.value.map((t,l)=>({ردیف:l+1,عنوان:t.title||"-",زیرعنوان:t.subtitle||"-",تم:pt(t.theme_key),ترتیب:t.sort_order??0,وضعیت:t.show?"نمایش":"مخفی","تعداد چالش":ae.value[t.id]||0}));await je(e,"فصلها","فصل_های_چالش_مرحله_ای")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل فصلها")}finally{Ge.value=!1}}async function Ts(){Ke.value=!0;try{O.value.length||await he();const e=U.value.reduce((l,n)=>(n.id&&(l[n.id]=n.title||`فصل ${n.id}`),l),{}),t=O.value.map((l,n)=>({ردیف:n+1,فصل:l.chapter_id!=null?e[l.chapter_id]||"-":"بدون فصل","عنوان چالش":l.title||"-","شماره جایگاه":l.sort_order??"","تعداد کاربران یکتا":l.unique_users_count??0,"تعداد دفعات انجام":l.times_performed??0}));await je(t,"پیشرفت","پیشرفت_کاربران_چالش_مرحله_ای")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل پیشرفت کاربران")}finally{Ke.value=!1}}async function As(){const t=[];let l=1,n=1/0;for(;t.length<n;){const{rows:u,total:h}=await Dt({page:l,pageSize:100,search:ke.value});if(n=h,t.push(...u),!u.length||u.length<100)break;l+=1}return t}async function Ps(){Xe.value=!0;try{const t=(await As()).map((l,n)=>{var u;return{ردیف:n+1,نام:l.user_name||"-",موبایل:l.user_phone||"-","عنوان چالش پیشنهادی":l.title||"-","تعداد مراحل":((u=l.steps)==null?void 0:u.length)||0,مراحل:(l.steps||[]).map(h=>`مرحله ${h.step_order}: ${h.description||""}`).join(" | "),تاریخ:l.created_at?ut(l.created_at):"-"}});await je(t,"پیشنهادها","چالش_های_پیشنهادی")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل چالشهای پیشنهادی")}finally{Xe.value=!1}}async function Ne(){Ve.value=!0;try{const{rows:e,total:t}=await Dt({page:de.value,pageSize:_e.value,search:ke.value});_t.value=e,vt.value=t}catch(e){y.error(e.message||"خطا در بارگذاری چالشهای پیشنهادی")}finally{Ve.value=!1}}function Tt(){de.value=1,Ne()}function Ls(e){de.value=(e==null?void 0:e.current)||1,_e.value=(e==null?void 0:e.pageSize)||_e.value,Ne()}it(V,e=>{e==="progress"&&(I(),O.value.length||he()),(e==="chapters"||e==="challenges")&&I(),e==="suggestions"&&Ne()}),Ns(()=>{ys(),I(),V.value==="progress"&&he(),V.value==="suggestions"&&Ne()});async function Ms(){if(!v.value.title.trim()){y.error("عنوان چالش الزامی است");return}if(!v.value.publish_date){y.error("تاریخ انتشار الزامی است");return}if(!v.value.publish_time){y.error("ساعت انتشار الزامی است");return}if(P.value>0){y.warning("لطفاً تا پایان آپلود فایلها صبر کنید");return}if(v.value.chapter_id){const e=ae.value[v.value.chapter_id]||0;if(!(Z.value&&we.value===v.value.chapter_id)&&e>=30){y.error("این فصل ظرفیت کامل دارد (حداکثر ۳۰ چالش / ۲ اسلاید)");return}}try{const e={...v.value,chapter_id:v.value.chapter_id??null,sort_order:Number(v.value.sort_order)||0,completion_points:Number(v.value.completion_points)||50,publish_date:v.value.publish_date,publish_time:re(v.value.publish_time),steps:v.value.steps.map(t=>{var l,n;return{...t,kodoblu_voice_url:B((l=t.kodoblu_voice_url)==null?void 0:l.trim())||"",audio_section_url:B((n=t.audio_section_url)==null?void 0:n.trim())||"",step_images:(t.step_images||[]).map(u=>B(u)||u).filter(Boolean)}})};Z.value&&Q.value?(await ta(Q.value,e),y.success("چالش ویرایش شد")):(await sa(e,null),y.success("چالش اضافه شد")),lt(),await I()}catch(e){y.error(e.message||"خطا در ذخیره چالش")}}return(e,t)=>{const l=Ks,n=ra,u=ca,h=Gs,k=Ws,q=Vs,M=ua,b=Is,p=Hs;return c(),d("div",{class:X(["step-challenges-page",{"step-challenges-page--mgmt":V.value==="challenges"||V.value==="progress"}])},[i(p,null,{default:m(()=>[i(x(Ft),{activeKey:V.value,"onUpdate:activeKey":t[4]||(t[4]=a=>V.value=a),class:"step-challenges-tabs"},{default:m(()=>[i(x(ne),{key:"challenges",tab:"مدیریت چالشها"},{default:m(()=>[s("div",_a,[s("div",va,[s("aside",ma,[pa,me.value?(c(),d("div",ga,[i(x(ie))])):(c(),d($,{key:1},[(c(!0),d($,null,R(U.value,(a,o)=>(c(),d("button",{key:a.id,type:"button",class:X(["mgmt-chapters__item",{"mgmt-chapters__item--active":A.value===a.id}]),onClick:r=>Qt(a.id)},[s("span",fa,f(a.title||`فصل ${o+1}`),1),s("span",ba,f(ae.value[a.id]||0)+"/۳۰",1)],10,ha))),128)),U.value.length?C("",!0):(c(),d("div",ya," هنوز فصلی تعریف نشده است. از تب «مدیریت فصلها» اضافه کنید. "))],64))]),s("section",xa,[s("div",wa,[s("h2",ka,f(gt.value?`چالشهای ${gt.value.title}`:"یک فصل انتخاب کنید"),1),i(l,{class:"excel-export-btn",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:We.value,onClick:qs},{default:m(()=>[i(T,{icon:"vuesax-linear:document-download",class:"mr-1"}),w(" خروجی اکسل ")]),_:1},8,["loading"])]),A.value?Qe.value?(c(),d("div",Sa,[i(x(ie),{size:"large"})])):(c(),d("div",Ua,[(c(),d($,null,R(2,a=>s("div",{key:a,class:"mgmt-grid-block"},[s("div",qa,[w(" اسلاید "+f(a)+" ",1),s("span",$a," (چالش "+f((a-1)*15+1)+" تا "+f(a*15)+" · ۵×۳) ",1)]),s("div",Ta,[(c(!0),d($,null,R(Jt(a-1),o=>(c(),d("div",{key:o.slotNumber,class:X(["mgmt-slot",{"mgmt-slot--filled":!!o.challenge,"mgmt-slot--empty":!o.challenge}]),role:"button",tabindex:"0",onClick:r=>bt(o),onKeydown:Os(At(r=>bt(o),["prevent"]),["enter"])},[o.challenge?(c(),d($,{key:0},[s("button",{type:"button",class:"mgmt-slot__delete",title:"حذف چالش",onClick:At(r=>os(o.challenge),["stop"])},[i(T,{icon:"vuesax-linear:trash"})],8,Pa),i(T,{icon:"vuesax-linear:edit",class:"mgmt-slot__icon"}),s("span",La,f(o.slotNumber),1),s("span",{class:"mgmt-slot__title",title:o.challenge.title},f(o.challenge.title),9,Ma),o.challenge.publish_date?(c(),d("span",{key:0,class:"mgmt-slot__publish",title:dt(o.challenge)},f(dt(o.challenge)),9,Da)):C("",!0)],64)):(c(),d($,{key:1},[i(T,{icon:"vuesax-linear:add",class:"mgmt-slot__icon"}),s("span",Ra,f(o.slotNumber),1),ja],64))],42,Aa))),128))])])),64))])):(c(),d("div",Ca," از باکس سمت راست یک فصل را انتخاب کنید. "))])])])]),_:1}),i(x(ne),{key:"chapters",tab:"مدیریت فصلها"},{default:m(()=>[s("div",Na,[Fa,s("div",za,[i(l,{class:"excel-export-btn",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Ge.value,onClick:$s},{default:m(()=>[i(T,{icon:"vuesax-linear:document-download",class:"mr-1"}),w(" خروجی اکسل ")]),_:1},8,["loading"]),i(l,{type:"primary",onClick:es},{default:m(()=>[w("افزودن فصل")]),_:1})])]),me.value?(c(),d("div",Ea,[i(x(ie),{size:"large"})])):(c(),d("div",Ba,[(c(!0),d($,null,R(U.value,a=>(c(),d("div",{key:a.id,class:"chapter-admin-card"},[s("div",Oa,[s("div",Ha,f(a.title),1),s("div",Ia,f(a.subtitle||"بدون زیرعنوان"),1),s("div",Va," تم: "+f(pt(a.theme_key))+" · ترتیب: "+f(a.sort_order??0)+" · "+f(a.show?"نمایش":"مخفی")+" · "+f(ae.value[a.id]||0)+" چالش ",1)]),s("div",Wa,[i(x(rt),{class:"cursor-pointer"},{title:m(()=>[s("span",null,f(a.show?"مخفی کردن":"نمایش"),1)]),default:m(()=>[i(T,{icon:a.show?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:a.show?"#F59E0B":"#16A34A",onClick:o=>as(a)},null,8,["icon","color","onClick"])]),_:2},1024),i(x(rt),{class:"cursor-pointer"},{title:m(()=>[Ga]),default:m(()=>[i(T,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:o=>ts(a)},null,8,["onClick"])]),_:2},1024),i(x(rt),{class:"cursor-pointer"},{title:m(()=>[Ka]),default:m(()=>[i(T,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:o=>ls(a)},null,8,["onClick"])]),_:2},1024)])]))),128)),U.value.length?C("",!0):(c(),d("div",Xa," هنوز فصلی تعریف نشده است. "))]))]),_:1}),i(x(ne),{key:"progress",tab:"پیشرفت کاربران"},{default:m(()=>[s("div",Ja,[s("div",Za,[s("aside",Qa,[Ya,me.value?(c(),d("div",el,[i(x(ie))])):(c(),d($,{key:1},[(c(!0),d($,null,R(U.value,(a,o)=>(c(),d("button",{key:a.id,type:"button",class:X(["mgmt-chapters__item",{"mgmt-chapters__item--active":N.value===a.id}]),onClick:r=>Ut(a.id)},[s("span",sl,f(a.title||`فصل ${o+1}`),1),s("span",al,f(ht.value[a.id]||0),1)],10,tl))),128)),s("button",{type:"button",class:X(["mgmt-chapters__item",{"mgmt-chapters__item--active":N.value===0}]),onClick:t[0]||(t[0]=a=>Ut(0))},[ll,s("span",ol,f(ht.value[0]||0),1)],2),U.value.length?C("",!0):(c(),d("div",il," هنوز فصلی تعریف نشده است. "))],64))]),s("section",nl,[s("div",ul,[s("h2",rl,f(Vt.value),1),s("div",cl,[i(l,{class:"excel-export-btn",size:"small",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Ke.value,onClick:Ts},{default:m(()=>[i(T,{icon:"vuesax-linear:document-download",class:"mr-1"}),w(" خروجی اکسل ")]),_:1},8,["loading"]),i(l,{type:"dashed",size:"small",loading:Se.value,onClick:he},{default:m(()=>[w(" بروزرسانی ")]),_:1},8,["loading"])])]),Se.value?(c(),d("div",dl,[i(x(ie),{size:"large"})])):ft.value.length?(c(),d("div",vl,[(c(),d($,null,R(2,a=>s("div",{key:a,class:"mgmt-grid-block"},[s("div",ml,[w(" اسلاید "+f(a)+" ",1),s("span",pl," (چالش "+f((a-1)*15+1)+" تا "+f(a*15)+" · ۵×۳) ",1)]),s("div",gl,[(c(!0),d($,null,R(Zt(a-1),o=>(c(),d("button",{key:o.slotNumber,type:"button",class:X(["progress-slot",{"progress-slot--filled":!!o.challenge,"progress-slot--empty":!o.challenge}]),disabled:!o.challenge,onClick:r=>o.challenge&&ps(o.challenge.id)},[o.challenge?(c(),d($,{key:0},[s("span",fl,f(o.slotNumber),1),s("span",{class:"progress-slot__title",title:o.challenge.title},f(o.challenge.title),9,bl),s("div",yl,[s("span",null,f(o.challenge.unique_users_count)+" کاربر",1),s("span",null,f(o.challenge.times_performed)+" بار",1)]),s("span",xl,[w(" بازخوردها "),i(T,{icon:"vuesax-linear:arrow-left"})])],64)):(c(),d($,{key:1},[s("span",wl,f(o.slotNumber),1),kl],64))],10,hl))),128))])])),64))])):(c(),d("div",_l," چالشی در این فصل وجود ندارد. "))])])])]),_:1}),i(x(ne),{key:"suggestions",tab:"چالشهای پیشنهادی"},{default:m(()=>[s("div",Cl,[s("div",Sl,[Ul,s("div",ql,[i(n,{value:ke.value,"onUpdate:value":t[1]||(t[1]=a=>ke.value=a),placeholder:"جستجو بر اساس نام، موبایل یا عنوان","allow-clear":"",class:"max-w-sm",onSearch:Tt,onPressEnter:Tt},null,8,["value"]),i(l,{class:"excel-export-btn",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Xe.value,onClick:Ps},{default:m(()=>[i(T,{icon:"vuesax-linear:document-download",class:"mr-1"}),w(" خروجی اکسل ")]),_:1},8,["loading"])])]),i(u,{columns:Ht,"data-source":_t.value,loading:Ve.value,pagination:It.value,"row-key":"id",bordered:"",size:"middle",onChange:Ls},{bodyCell:m(({column:a,record:o,index:r})=>{var L;return[a.key==="row"?(c(),d($,{key:0},[w(f(xs(r)),1)],64)):a.key==="challenge"?(c(),d("div",$l,[s("div",Tl,[s("span",Al,f(o.title),1),s("button",{type:"button",class:"suggestion-challenge-cell__toggle",title:Y.value[o.id]?"بستن مراحل":"نمایش مراحل",onClick:D=>Cs(o.id)},[i(T,{icon:Y.value[o.id]?"vuesax-linear:arrow-up-1":"vuesax-linear:arrow-downره"},null,8,["icon"])],8,Pl)]),Y.value[o.id]?(c(),d("div",Ll,[(c(!0),d($,null,R(o.steps,D=>(c(),d("div",{key:D.id,class:"suggestion-challenge-cell__step"},[s("div",Ml," مرحله "+f(D.step_order),1),s("div",Dl,[s("span",null,f(ws(D.description)),1),ks(D.description)?(c(),d("button",{key:0,type:"button",class:"suggestion-challenge-cell__more",onClick:Ii=>Ss(D.description,`مرحله ${D.step_order} — ${o.title}`)}," ... ",8,Rl)):C("",!0)])]))),128)),(L=o.steps)!=null&&L.length?C("",!0):(c(),d("div",jl," مرحلهای ثبت نشده است. "))])):C("",!0)])):C("",!0)]}),_:1},8,["data-source","loading","pagination"])])]),_:1}),i(x(ne),{key:"settings",tab:"تنظیمات صفحه"},{default:m(()=>[s("div",Nl,[s("div",Fl,[zl,El,s("div",null,[Bl,i(h,{value:z.value.rules_aparat_embed_code,"onUpdate:value":t[2]||(t[2]=a=>z.value.rules_aparat_embed_code=a),placeholder:"کد embed از آپارات",rows:4},null,8,["value"])])]),s("div",Ol,[Hl,Il,s("div",Vl,[i(k,{value:z.value.show_completion_feedback,"onUpdate:value":t[3]||(t[3]=a=>z.value.show_completion_feedback=a)},null,8,["value"]),s("div",null,[Wl,s("div",Gl,f(z.value.show_completion_feedback?"در حال نمایش به کاربر":"مخفی است"),1)])])]),i(l,{type:"primary",loading:Ie.value,onClick:bs},{default:m(()=>[w(" ذخیره تنظیمات ")]),_:1},8,["loading"])])]),_:1})]),_:1},8,["activeKey"]),i(b,{visible:ce.value,"onUpdate:visible":t[13]||(t[13]=a=>ce.value=a),title:Z.value?"ویرایش چالش":"افزودن چالش",onOk:Ms,onCancel:lt,width:"85%",confirmLoading:P.value>0},{default:m(()=>[s("div",Kl,[P.value>0?(c(),d("div",Xl,[i(x(ie),{size:"large"})])):C("",!0),s("div",null,[Jl,i(q,{value:v.value.title,"onUpdate:value":t[5]||(t[5]=a=>v.value.title=a),placeholder:"عنوان چالش"},null,8,["value"])]),s("div",Zl,[s("div",null,[Ql,i(ia,{value:J.value,"onUpdate:value":t[6]||(t[6]=a=>J.value=a)},null,8,["value"])]),s("div",null,[Yl,i(M,{value:xe.value,"onUpdate:value":t[7]||(t[7]=a=>xe.value=a),format:"HH:mm",class:"w-full",placeholder:"انتخاب ساعت","minute-step":5},null,8,["value"])])]),s("div",eo,[s("div",to,[so,i(x(Oe),{value:v.value.chapter_id,"onUpdate:value":t[8]||(t[8]=a=>v.value.chapter_id=a),class:"w-full","allow-clear":"",placeholder:"انتخاب فصل"},{default:m(()=>[(c(!0),d($,null,R(U.value,a=>(c(),Pt(x(j),{key:a.id,value:a.id},{default:m(()=>[w(f(a.title)+" ",1),s("span",ao," ("+f(ae.value[a.id]||0)+"/۳۰) ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),s("div",lo,[w(" ترتیب نمایش از جایگاه گرید (چالش ۱ تا ۳۰) مشخص میشود. "),v.value.sort_order?(c(),d("span",oo," جایگاه فعلی: چالش "+f(v.value.sort_order),1)):C("",!0)])]),s("div",null,[io,s("div",no,[i(k,{value:v.value.show,"onUpdate:value":t[9]||(t[9]=a=>v.value.show=a)},null,8,["value"]),s("span",uo,f(v.value.show?"نمایش":"مخفی"),1)])]),s("div",null,[ro,i(x(Oe),{value:v.value.access_type,"onUpdate:value":t[10]||(t[10]=a=>v.value.access_type=a),class:"w-full"},{default:m(()=>[i(x(j),{value:"free"},{default:m(()=>[w("رایگان (همه کاربران)")]),_:1}),i(x(j),{value:"subscription"},{default:m(()=>[w("اشتراکی (فقط اشتراک فعال)")]),_:1})]),_:1},8,["value"])]),s("div",null,[co,i(q,{value:v.value.completion_points,"onUpdate:value":t[11]||(t[11]=a=>v.value.completion_points=a),type:"number",min:"0",placeholder:"50"},null,8,["value"])])]),s("div",_o,[s("div",null,[vo,i(x(fe),{"file-list":ee.value,"onUpdate:fileList":t[12]||(t[12]=a=>ee.value=a),"before-upload":ot,"custom-request":gs,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(()=>[ee.value.length<1?(c(),d("div",mo,[i(T,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),po])):C("",!0)]),_:1},8,["file-list"]),W.value>0&&W.value<100?(c(),d("div",go,[s("div",ho,[s("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(W.value))},null,4)])])):C("",!0)])]),fo,s("div",bo,[yo,s("div",xo,[(c(!0),d($,null,R(v.value.steps,(a,o)=>(c(),d("div",{key:o,class:X(["step-form-box",{"step-form-box--final":a.is_final_step}])},[s("div",wo,[s("div",ko,[w(" مرحله "+f(o+1)+" ",1),a.is_final_step?(c(),d("span",Co,"(ماموریت پایانی)")):C("",!0)]),s("div",So,[i(k,{value:a.is_final_step,"onUpdate:value":r=>a.is_final_step=r},null,8,["value","onUpdate:value"]),Uo])]),s("div",null,[qo,i(h,{value:a.description,"onUpdate:value":r=>a.description=r,placeholder:"توضیحات مرحله",rows:2},null,8,["value","onUpdate:value"])]),s("div",$o,[s("div",null,[To,i(q,{value:a.duration_minutes,"onUpdate:value":r=>a.duration_minutes=r,type:"number",min:"0",placeholder:"0"},null,8,["value","onUpdate:value"])])]),s("div",null,[Ao,i(h,{value:a.aparat_embed_code,"onUpdate:value":r=>a.aparat_embed_code=r,placeholder:"کد embed",rows:2},null,8,["value","onUpdate:value"])]),s("div",Po,[Lo,i(x(fe),{"file-list":st(o,"kodoblu_voice_url"),"before-upload":qt,"custom-request":r=>$t(r,o,"kodoblu_voice_url"),accept:"audio/*","max-count":1,"show-upload-list":!1,onRemove:()=>Re(o,"kodoblu_voice_url")},{default:m(()=>[i(l,{type:"dashed"},{default:m(()=>[i(T,{icon:"vuesax-linear:voice-cricle",class:"ml-1"}),w(" آپلود وویس کدوبلو ")]),_:1})]),_:2},1032,["file-list","custom-request","onRemove"]),le(o,"kodoblu_voice_url")>0&&le(o,"kodoblu_voice_url")<100?(c(),d("div",Mo,[s("div",Do,[s("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(le(o,"kodoblu_voice_url")))},null,4)])])):C("",!0),wt(o,"kodoblu_voice_url",a.kodoblu_voice_url)?(c(),d("div",Ro,[s("div",jo,[No,i(l,{type:"text",danger:"",size:"small",onClick:r=>Re(o,"kodoblu_voice_url")},{default:m(()=>[w(" حذف فایل ")]),_:2},1032,["onClick"])]),(c(),d("audio",{key:ge(o,"kodoblu_voice_url",a.kodoblu_voice_url),src:ge(o,"kodoblu_voice_url",a.kodoblu_voice_url),controls:"",preload:"metadata",class:"w-full"},null,8,Fo))])):C("",!0),i(q,{value:a.kodoblu_voice_url,"onUpdate:value":r=>a.kodoblu_voice_url=r,placeholder:"مسیر وویس کدوبلو (پس از آپلود)"},null,8,["value","onUpdate:value"])]),s("div",null,[zo,i(x(fe),{"file-list":at(o),"list-type":"picture-card","before-upload":ot,"custom-request":r=>hs(r,o),accept:"image/jpeg,image/png,image/webp,image/gif,image/heic,image/heif,.jpg,.jpeg,.png,.webp,.gif,.heic,.heif",onRemove:r=>cs(o,r)},{default:m(()=>[at(o).length<8?(c(),d("div",Eo,[i(T,{icon:"vuesax-linear:image",class:"text-xl mb-1"}),Bo])):C("",!0)]),_:2},1032,["file-list","custom-request","onRemove"])]),Oo,s("div",Ho,[Io,s("div",Vo,[s("label",Wo,[i(k,{value:a.enable_feedback_text,"onUpdate:value":r=>a.enable_feedback_text=r},null,8,["value","onUpdate:value"]),Go]),s("label",Ko,[i(k,{value:a.require_feedback_text,"onUpdate:value":r=>a.require_feedback_text=r,disabled:!a.enable_feedback_text},null,8,["value","onUpdate:value","disabled"]),Xo]),s("label",Jo,[i(k,{value:a.enable_photo_upload,"onUpdate:value":r=>a.enable_photo_upload=r},null,8,["value","onUpdate:value"]),Zo]),s("label",Qo,[i(k,{value:a.require_photo_upload,"onUpdate:value":r=>a.require_photo_upload=r,disabled:!a.enable_photo_upload},null,8,["value","onUpdate:value","disabled"]),Yo]),s("label",ei,[i(k,{value:a.enable_voice_upload,"onUpdate:value":r=>a.enable_voice_upload=r},null,8,["value","onUpdate:value"]),ti]),s("label",si,[i(k,{value:a.require_voice_upload,"onUpdate:value":r=>a.require_voice_upload=r,disabled:!a.enable_voice_upload},null,8,["value","onUpdate:value","disabled"]),ai]),s("label",li,[i(k,{value:a.enable_mcq,"onUpdate:value":r=>a.enable_mcq=r},null,8,["value","onUpdate:value"]),oi]),s("label",ii,[i(k,{value:a.require_mcq,"onUpdate:value":r=>a.require_mcq=r,disabled:!a.enable_mcq},null,8,["value","onUpdate:value","disabled"]),ni]),s("label",ui,[i(k,{value:a.enable_audio_section,"onUpdate:value":r=>a.enable_audio_section=r},null,8,["value","onUpdate:value"]),ri])]),a.enable_feedback_text?(c(),d("div",ci,[s("div",null,[di,i(q,{value:a.feedback_text_title,"onUpdate:value":r=>a.feedback_text_title=r,placeholder:"مثلاً: بازخورد این مرحله"},null,8,["value","onUpdate:value"])]),s("div",null,[_i,i(q,{value:a.feedback_text_placeholder,"onUpdate:value":r=>a.feedback_text_placeholder=r,placeholder:"مثلاً: بازخورد خود را بنویس..."},null,8,["value","onUpdate:value"])])])):C("",!0),a.enable_mcq?(c(),d("div",vi,[i(q,{value:a.mcq_question,"onUpdate:value":r=>a.mcq_question=r,placeholder:"متن سوال"},null,8,["value","onUpdate:value"]),(c(!0),d($,null,R(a.mcq_options,(r,L)=>(c(),d("div",{key:L,class:"flex gap-2 items-center"},[i(q,{value:a.mcq_options[L],"onUpdate:value":D=>a.mcq_options[L]=D,placeholder:`گزینه ${L+1}`,class:"flex-1"},null,8,["value","onUpdate:value","placeholder"]),s("input",{type:"radio",name:`mcq-${o}`,checked:a.mcq_correct_index===L,onChange:D=>a.mcq_correct_index=L},null,40,mi),pi,a.mcq_options.length>2?(c(),Pt(l,{key:0,danger:"",onClick:D=>a.mcq_options.splice(L,1)},{default:m(()=>[w("×")]),_:2},1032,["onClick"])):C("",!0)]))),128)),i(l,{type:"dashed",onClick:r=>a.mcq_options.push("")},{default:m(()=>[w("+ گزینه")]),_:2},1032,["onClick"])])):C("",!0),a.enable_audio_section?(c(),d("div",gi,[hi,i(x(fe),{"file-list":st(o,"audio_section_url"),"before-upload":qt,"custom-request":r=>$t(r,o,"audio_section_url"),accept:"audio/*","max-count":1,"show-upload-list":!1,onRemove:()=>Re(o,"audio_section_url")},{default:m(()=>[i(l,{type:"dashed"},{default:m(()=>[i(T,{icon:"vuesax-linear:voice-cricle",class:"ml-1"}),w(" آپلود فایل صوتی ")]),_:1})]),_:2},1032,["file-list","custom-request","onRemove"]),le(o,"audio_section_url")>0&&le(o,"audio_section_url")<100?(c(),d("div",fi,[s("div",bi,[s("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(le(o,"audio_section_url")))},null,4)])])):C("",!0),wt(o,"audio_section_url",a.audio_section_url)?(c(),d("div",yi,[s("div",xi,[wi,i(l,{type:"text",danger:"",size:"small",onClick:r=>Re(o,"audio_section_url")},{default:m(()=>[w(" حذف فایل ")]),_:2},1032,["onClick"])]),(c(),d("audio",{key:ge(o,"audio_section_url",a.audio_section_url),src:ge(o,"audio_section_url",a.audio_section_url),controls:"",preload:"metadata",class:"w-full"},null,8,ki))])):C("",!0),i(q,{value:a.audio_section_url,"onUpdate:value":r=>a.audio_section_url=r,placeholder:"مسیر فایل صوتی (پس از آپلود)"},null,8,["value","onUpdate:value"])])):C("",!0)]),s("div",Ci,[i(l,{type:"text",danger:"",onClick:r=>_s(o),disabled:v.value.steps.length<=1},{default:m(()=>[i(T,{icon:"vuesax-linear:trash",color:"#DC2626"}),Si]),_:2},1032,["onClick","disabled"])])],2))),128)),i(l,{type:"dashed",onClick:ds,class:"w-full"},{default:m(()=>[Ui]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"]),i(b,{visible:pe.value,"onUpdate:visible":t[20]||(t[20]=a=>pe.value=a),title:qe.value?"ویرایش فصل":"افزودن فصل",onOk:ss,onCancel:xt,width:"560px"},{default:m(()=>[s("div",qi,[s("div",null,[$i,i(q,{value:S.value.title,"onUpdate:value":t[14]||(t[14]=a=>S.value.title=a),placeholder:"مثلاً خانه بهار"},null,8,["value"])]),s("div",null,[Ti,i(q,{value:S.value.subtitle,"onUpdate:value":t[15]||(t[15]=a=>S.value.subtitle=a),placeholder:"توضیح کوتاه روی بنر فصل"},null,8,["value"])]),s("div",Ai,[s("div",null,[Pi,i(x(Oe),{value:S.value.theme_key,"onUpdate:value":t[16]||(t[16]=a=>S.value.theme_key=a),class:"w-full"},{default:m(()=>[i(x(j),{value:"meadow"},{default:m(()=>[w("خانه کدوبلو")]),_:1}),i(x(j),{value:"cottage"},{default:m(()=>[w("کافه پفی")]),_:1}),i(x(j),{value:"forest"},{default:m(()=>[w("باغ میلا")]),_:1}),i(x(j),{value:"desert"},{default:m(()=>[w("کارگاه پیتو")]),_:1}),i(x(j),{value:"winter"},{default:m(()=>[w("خانه آرامان")]),_:1}),i(x(j),{value:"castle"},{default:m(()=>[w("میدان شهر")]),_:1}),i(x(j),{value:"tree"},{default:m(()=>[w("درخت پیرین")]),_:1})]),_:1},8,["value"])]),s("div",null,[Li,i(q,{value:S.value.sort_order,"onUpdate:value":t[17]||(t[17]=a=>S.value.sort_order=a),type:"number",placeholder:"1"},null,8,["value"])])]),s("div",Mi,[i(k,{value:S.value.show,"onUpdate:value":t[18]||(t[18]=a=>S.value.show=a)},null,8,["value"]),s("span",Di,f(S.value.show?"نمایش در نقشه":"مخفی"),1)]),s("div",null,[Ri,i(x(fe),{"file-list":H.value,"onUpdate:fileList":t[19]||(t[19]=a=>H.value=a),"before-upload":ot,"custom-request":ms,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:vs},{default:m(()=>[H.value.length<1?(c(),d("div",ji,[i(T,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ni])):C("",!0)]),_:1},8,["file-list"]),E.value>0&&E.value<100?(c(),d("div",Fi,[s("div",zi,[s("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(E.value))},null,4)])])):C("",!0),Ei])])]),_:1},8,["visible","title"]),i(b,{visible:Ce.value,"onUpdate:visible":t[21]||(t[21]=a=>Ce.value=a),title:"توضیحات کامل",footer:null,onCancel:Us,width:"560px"},{default:m(()=>[s("div",Bi,f(Ze.value),1),s("div",Oi,f(Je.value),1)]),_:1},8,["visible"])]),_:1})],2)}}});const In=da(Hi,[["__scopeId","data-v-d1222b9a"]]);export{In as default};
|