2 lines
55 KiB
JavaScript
2 lines
55 KiB
JavaScript
import{d as Ds,i as g,v as Rs,u as js,j as K,y as it,x as Ns,o as c,c as d,e as i,w as m,l as x,b as a,F as $,q as D,n as S,t as f,f as w,s as V,B as Fe,G as y,T as Fs,U as zs,bK as Es,L as ze,_ as Bs,bn as Os,A as At,k as Pt}from"./index-6d0cd65e.js";import{_ as Hs}from"./BasicMainCard-8291a0be.js";import{_ as Is}from"./BasicModal.vue_vue_type_style_index_0_lang-9330561a.js";import{_ as Ws}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-8a3278c2.js";import{_ as Gs}from"./BasicInput.vue_vue_type_style_index_0_lang-672b5a8b.js";import{_ as Ks}from"./BasicTextArea.vue_vue_type_style_index_0_lang-affe47ca.js";import{_ as Vs}from"./button.vue_vue_type_style_index_0_lang-bd7de123.js";import{d as nt}from"./updateLocale-cd480df1.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-69328295.js";import{I as T}from"./Icon-26941971.js";import{_ as ia}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-f9838435.js";import{a as ut}from"./useDataTime-af597da2.js";import{g as le,e as E,a as na}from"./convert-2ad76038.js";import{T as Rt}from"./index-ae4857ed.js";import{T as ua}from"./dayjs-2702d85b.js";import{S as oe}from"./index-1d24a383.js";import{M as jt}from"./index-1fdbf8ec.js";import{_ as Nt}from"./index-b2a6c339.js";import{_ as ra}from"./index-0a3c8350.js";import{T as ca}from"./index-19225493.js";import{T as rt}from"./isSymbol-94624ad1.js";import{U as he}from"./index-207fac00.js";import{_ as da}from"./_plugin-vue_export-helper-057121dd.js";import"./Grid-849ebb25.js";import"./index-a30aaa52.js";import"./Col-27d7ac55.js";import"./styleChecker-0273aaa3.js";import"./isPlainObject-d2ad9b1e.js";import"./vnode-272c72c0.js";import"./usePrice-bc935b83.js";import"./index-eddc2482.js";import"./adminDb-abd320b8.js";import"./supabaseTableQuery-2e54cfd8.js";import"./shallowequal-969229a1.js";import"./useState-6a654be9.js";import"./useMemo-fb6ccae7.js";import"./FormItemContext-b6ebc5a2.js";import"./omit-0042b203.js";import"./index-0e770d03.js";import"./index-8d45f2c0.js";import"./useRefs-b0f30c2d.js";import"./_flatRest-2e1bd5be.js";import"./isMobile-e2e89480.js";import"./index-d1b0a2ea.js";import"./DialogWrap-b6637bda.js";import"./pickAttrs-ae9bd1c0.js";import"./toArray-5fe0a9e6.js";import"./SearchOutlined-f7ba34a1.js";import"./index-cbd32094.js";import"./css-aae66f86.js";import"./index-17510b5d.js";import"./index-373d7dab.js";const _=fe=>(Fs("data-v-8b8076e3"),fe=fe(),zs(),fe),_a={class:"mgmt-page"},va={class:"mgmt-layout"},ma={class:"mgmt-chapters"},pa=_(()=>a("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=_(()=>a("span",{class:"mgmt-slot__hint"},"افزودن",-1)),Na={class:"flex justify-between items-center mb-4 gap-3 flex-wrap"},Fa=_(()=>a("div",null,[a("h2",{class:"m-0"},"فصلهای نقشه ماجراجویی"),a("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"},Wa={class:"text-xs text-gray-400 mt-1"},Ga={class:"flex gap-2 shrink-0"},Ka=_(()=>a("span",null,"ویرایش",-1)),Va=_(()=>a("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=_(()=>a("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=_(()=>a("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=_(()=>a("span",{class:"progress-slot__hint"},"خالی",-1)),Cl={class:"space-y-4"},Sl={class:"flex flex-wrap items-center justify-between gap-3"},Ul=_(()=>a("div",null,[a("h2",{class:"m-0 text-base font-semibold"},"چالشهای پیشنهادی کاربران"),a("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-4"},Fl=_(()=>a("h2",{class:"text-lg font-semibold"},"قوانین چالشهای کدوبلو",-1)),zl=_(()=>a("p",{class:"text-sm text-gray-600"}," ویدیوی embed آپارات که در مودال «قوانین چالش کدوبلو» به کاربر نمایش داده میشود. ",-1)),El=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"کد embed ویدیو قوانین",-1)),Bl={class:"space-y-4 relative"},Ol={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Hl=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"عنوان چالش",-1)),Il={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Wl=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"تاریخ انتشار",-1)),Gl=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"ساعت انتشار (تهران)",-1)),Kl={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Vl={class:"sm:col-span-3"},Xl=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"فصل (نقشه ماجراجویی)",-1)),Jl={class:"text-gray-400"},Zl={class:"text-xs text-gray-400 mt-1"},Ql={key:0},Yl=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت نمایش",-1)),eo={class:"flex items-center gap-2 mt-2"},to={class:"text-sm text-gray-600"},so=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"نوع دسترسی",-1)),ao=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز اولین تکمیل",-1)),lo={class:"flex justify-center pb-2"},oo=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"عکس کاراکتر (کارت لیست)",-1)),io={key:0},no=_(()=>a("div",null,"آپلود تصویر",-1)),uo={key:0,class:"mt-1"},ro={class:"h-2 rounded bg-gray-200 overflow-hidden"},co=_(()=>a("div",{class:"section-divider"},null,-1)),_o={class:"pt-2"},vo=_(()=>a("div",{class:"mb-2 text-sm text-gray-600 font-semibold"},"مراحل چالش",-1)),mo={class:"space-y-4"},po={class:"flex items-center justify-between gap-3"},go={class:"font-semibold text-gray-700"},ho={key:0,class:"text-emerald-600 text-sm font-normal mr-1"},fo={class:"flex items-center gap-2"},bo=_(()=>a("span",{class:"text-sm text-gray-600"},"ماموریت پایانی",-1)),yo=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"توضیحات مرحله (اختیاری)",-1)),xo={class:"grid grid-cols-2 gap-3"},wo=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"زمان لازم (دقیقه)",-1)),ko=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"کد embed ویدیو آپارات (اختیاری)",-1)),Co={class:"space-y-2"},So=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"وویس کدوبلو (اختیاری)",-1)),Uo={key:0,class:"mt-1"},qo={class:"h-2 rounded bg-gray-200 overflow-hidden"},$o={key:1,class:"step-audio-preview"},To={class:"flex items-center justify-between mb-2"},Ao=_(()=>a("div",{class:"step-audio-preview__label mb-0"},"پیشنمایش وویس کدوبلو",-1)),Po=["src"],Lo=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"عکسهای مرحله (اختیاری)",-1)),Mo={key:0},Do=_(()=>a("div",{class:"text-xs"},"آپلود عکس",-1)),Ro=_(()=>a("div",{class:"section-divider"},null,-1)),jo={class:"step-form-box__inner"},No=_(()=>a("div",{class:"text-xs font-semibold text-gray-600 mb-3"},"آیتمهای بعد از «بزن بریم»",-1)),Fo={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},zo={class:"flex items-center gap-2"},Eo=_(()=>a("span",{class:"text-sm"},"فیلد بازخورد",-1)),Bo={class:"flex items-center gap-2"},Oo=_(()=>a("span",{class:"text-sm"},"بازخورد اجباری",-1)),Ho={class:"flex items-center gap-2"},Io=_(()=>a("span",{class:"text-sm"},"بارگذاری عکس",-1)),Wo={class:"flex items-center gap-2"},Go=_(()=>a("span",{class:"text-sm"},"عکس اجباری",-1)),Ko={class:"flex items-center gap-2"},Vo=_(()=>a("span",{class:"text-sm"},"ضبط و ارسال ویس",-1)),Xo={class:"flex items-center gap-2"},Jo=_(()=>a("span",{class:"text-sm"},"ویس اجباری",-1)),Zo={class:"flex items-center gap-2"},Qo=_(()=>a("span",{class:"text-sm"},"سوال چندگزینهای",-1)),Yo={class:"flex items-center gap-2"},ei=_(()=>a("span",{class:"text-sm"},"پاسخ MCQ اجباری",-1)),ti={class:"flex items-center gap-2"},si=_(()=>a("span",{class:"text-sm"},"بخش صوت",-1)),ai={key:0,class:"space-y-2 border rounded-lg p-3 bg-white"},li=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"عنوان فیلد بازخورد",-1)),oi=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"متن پیشفرض فیلد بازخورد",-1)),ii={key:1,class:"space-y-2 border rounded-lg p-3"},ni=["name","checked","onChange"],ui=_(()=>a("span",{class:"text-xs"},"صحیح",-1)),ri={key:2,class:"space-y-2"},ci=_(()=>a("div",{class:"mb-1 text-xs text-gray-500"},"فایل بخش صوت",-1)),di={key:0,class:"mt-1"},_i={class:"h-2 rounded bg-gray-200 overflow-hidden"},vi={key:1,class:"step-audio-preview"},mi={class:"flex items-center justify-between mb-2"},pi=_(()=>a("div",{class:"step-audio-preview__label mb-0"},"پیشنمایش بخش صوت",-1)),gi=["src"],hi={class:"flex justify-end pt-1"},fi=_(()=>a("span",{class:"text-[#DC2626]"},"حذف مرحله",-1)),bi=_(()=>a("span",{class:"text-gray-500"},"+ افزودن مرحله",-1)),yi={class:"space-y-4"},xi=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"عنوان فصل",-1)),wi=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1)),ki={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Ci=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"تم رنگی جزیره",-1)),Si=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب",-1)),Ui={class:"flex items-center gap-2"},qi={class:"text-sm text-gray-600"},$i=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"تصویر فصل (اختیاری)",-1)),Ti={key:0},Ai=_(()=>a("div",null,"آپلود تصویر",-1)),Pi={key:0,class:"mt-1"},Li={class:"h-2 rounded bg-gray-200 overflow-hidden"},Mi=_(()=>a("div",{class:"text-xs text-gray-400 mt-1"},"اگر خالی باشد، تصویر تم انتخابشده استفاده میشود.",-1)),Di={class:"text-sm text-gray-500 mb-2"},Ri={class:"whitespace-pre-wrap leading-7 text-gray-800"},Ee=30,Be=15,ct=80,ji=Ds({__name:"index",setup(fe){const Ft=Rt,ie=Rt.TabPane,Oe=Nt,R=Nt.Option;function be(e){return e?e.replace(/-/g,"/"):""}function zt(e){return e?e.replace(/\//g,"-"):""}function ne(){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Tehran"}).format(new Date)}function ue(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(ue(e),"HH:mm")}function He(){ye.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=ue(e.publish_time);return`${t} · ${l}`}const X=g(be(ne())),ye=g(nt("09:00","HH:mm")),Bt=Rs(),Ot=js(),I=g(Bt.query.tab==="progress"?"progress":"challenges"),re=g(!1),J=g(!1),Z=g(null),xe=g(null),Ie=g(!1),we=g({rules_aparat_embed_code:""}),We=g(!1),Ge=g(!1),Ke=g(!1),Ve=g(!1),Xe=g(!1),ke=g(""),_t=g([]),ce=g(1),de=g(20),vt=g(0),Q=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:ce.value,pageSize:de.value,total:vt.value,showSizeChanger:!0,showTotal:e=>`${e} مورد`})),Se=g(!1),B=g([]),j=g(null),A=g(null),Qe=g(!1),Ue=g([]),Y=g([]),_e=g({}),Ye=g({}),ee=g({}),te=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:ne(),publish_time:"09:00",steps:[et()]});it(X,e=>{v.value.publish_date=zt(e||"")}),it(ye,e=>{v.value.publish_time=e?e.format("HH:mm"):""});const q=g([]),ve=g(!1),se=g({}),me=g(!1),qe=g(!1),$e=g(null),U=g({title:"",subtitle:"",theme_key:"meadow",cover_image_url:null,sort_order:0,show:!0}),O=g([]),z=g(0),mt={meadow:"خانه کدوبلو",cottage:"کافه پفی",forest:"باغ میلا",desert:"کارگاه پیتو",winter:"خانه آرامان",castle:"میدان شهر",tree:"درخت پیرین"};function pt(e){return e&&e in mt?mt[e]:e||"-"}const gt=K(()=>q.value.find(e=>e.id===A.value)||null),Wt=K(()=>{if(j.value===0)return"چالشهای بدون فصل";const e=q.value.find(t=>t.id===j.value);return e?`چالشهای ${e.title}`:"یک فصل انتخاب کنید"}),ht=K(()=>{const e={0:0};for(const t of q.value)t.id&&(e[t.id]=0);for(const t of B.value){const l=t.chapter_id??0;e[l]=(e[l]||0)+1}return e}),ft=K(()=>j.value===null?[]:j.value===0?B.value.filter(e=>e.chapter_id==null):B.value.filter(e=>e.chapter_id===j.value)),Gt=K(()=>Vt(Ue.value)),Kt=K(()=>Xt(ft.value));function Vt(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 Gt.value.slice(t,t+Be)}function Zt(e){const t=e*Be;return Kt.value.slice(t,t+Be)}async function H(){var e;ve.value=!0;try{const t=await Xs();q.value=t;const l={};await Promise.all(q.value.map(async n=>{n.id&&(l[n.id]=await Js(n.id))})),se.value=l,!A.value&&q.value.length?A.value=q.value[0].id:A.value&&!q.value.some(n=>n.id===A.value)&&(A.value=((e=q.value[0])==null?void 0:e.id)??null),A.value?await tt(A.value):Ue.value=[]}catch(t){y.error(t.message||"خطا در بارگذاری فصلها")}finally{ve.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}J.value=!1,Z.value=null,xe.value=null,St(),v.value.chapter_id=A.value,v.value.sort_order=e,v.value.show=!0,v.value.publish_date=ne(),v.value.publish_time="09:00",X.value=be(v.value.publish_date),He(),re.value=!0}function yt(){U.value={title:"",subtitle:"",theme_key:"meadow",cover_image_url:null,sort_order:(q.value.length||0)+1,show:!0},O.value=[],z.value=0}function es(){qe.value=!1,$e.value=null,yt(),me.value=!0}function ts(e){qe.value=!0,$e.value=e.id||null,U.value={title:e.title||"",subtitle:e.subtitle||"",theme_key:e.theme_key||"meadow",cover_image_url:E(e.cover_image_url)||null,sort_order:e.sort_order||0,show:e.show!==!1},e.cover_image_url?O.value=[{uid:`${Date.now()}`,name:"chapter.jpg",status:"done",url:le(e.cover_image_url)}]:O.value=[],z.value=0,me.value=!0}function xt(){me.value=!1,yt()}async function ss(){if(!U.value.title.trim()){y.error("عنوان فصل الزامی است");return}try{const e={title:U.value.title.trim(),subtitle:U.value.subtitle.trim()||null,theme_key:U.value.theme_key,cover_image_url:U.value.cover_image_url||null,sort_order:Number(U.value.sort_order)||0,show:U.value.show};qe.value&&$e.value?(await Mt($e.value,e),y.success("فصل ویرایش شد")):(await Zs(e),y.success("فصل اضافه شد")),xt(),await H()}catch(e){y.error(e.message||"خطا در ذخیره فصل")}}async function as(e){e.id&&(await Mt(e.id,{show:!e.show}),y.success(e.show?"فصل مخفی شد":"فصل نمایش داده میشود"),await H())}async function ls(e){e.id&&jt.confirm({title:"حذف فصل",content:"با حذف فصل، چالشهای آن بدون فصل میمانند. ادامه میدهید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{await aa(e.id),y.success("فصل حذف شد"),await H()}})}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("چالش حذف شد"),Z.value===e.id&<(),A.value&&await tt(A.value),await H(),B.value.length&&await ge()}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 E(String(t||""))}function Le(e,t,l){const n=[...v.value.steps];n[e]={...n[e],[t]:l},v.value.steps=n}function N(e,t){return`${e}:${t}`}function st(e,t){return _e.value[N(e,t)]||[]}function ae(e,t){return Ye.value[N(e,t)]||0}function Me(e,t,l){Ye.value[N(e,t)]=l}function De(e){return e?e.startsWith("http://")||e.startsWith("https://")?e:na(e):""}function is(e,t){return ee.value[N(e,t)]||""}function G(e,t){const l=N(e,t),n=ee.value[l];n&&(URL.revokeObjectURL(n),delete ee.value[l])}function ns(){Object.values(ee.value).forEach(e=>URL.revokeObjectURL(e)),ee.value={}}function pe(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!!pe(e,t,l)}function us(){ns(),_e.value={},Ye.value={}}function rs(){te.value={}}function at(e){return te.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:le(u),response:{path:E(u)||u}})))}),te.value=e}function Ct(){const e={};v.value.steps.forEach((t,l)=>{t.audio_section_url&&(e[N(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[N(l,"kodoblu_voice_url")]=[{uid:`kodoblu-voice-${l}`,name:"kodoblu-voice.mp3",status:"done",url:De(t.kodoblu_voice_url)}])}),_e.value=e}function Re(e,t){G(e,t),Le(e,t,""),_e.value[N(e,t)]=[]}function cs(e,t){var u,h;const l=E(((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=>E(k)!==l)),te.value[e]=(te.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:ne(),publish_time:"09:00",steps:[et()]},X.value=be(v.value.publish_date),He(),Y.value=[],us(),rs()}function lt(){re.value=!1,J.value=!1,Z.value=null,xe.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 ge(){var e;Se.value=!0;try{B.value=await Qs(),j.value===null&&(j.value=((e=q.value[0])==null?void 0:e.id)??0)}catch(t){y.error(t.message||"خطا در بارگذاری پیشرفت چالشها")}finally{Se.value=!1}}function Ut(e){j.value=e}function vs(){U.value.cover_image_url=null,O.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`;z.value=0,P.value++,await new Promise((F,C)=>{const b=new XMLHttpRequest;b.open("POST",k),b.setRequestHeader("Authorization",`Bearer ${Ae()}`),b.upload.onprogress=p=>{if(p.lengthComputable){const s=Math.round(p.loaded/p.total*100);z.value=s,u==null||u({percent:s})}},b.onload=()=>{if(z.value=100,b.status>=200&&b.status<300)try{const p=JSON.parse(b.responseText||"{}"),s=Pe(p);if(!s)throw new Error("مسیر فایل از سرور دریافت نشد");const o=le(s);U.value.cover_image_url=s,O.value=o?[{uid:`${Date.now()}`,name:"chapter.jpg",status:"done",url:o,response:{path:s}}]:[],l==null||l(p,b),y.success("تصویر فصل آپلود شد"),F()}catch(p){n==null||n(p,b),C(p)}else{const p=new Error("خطا در آپلود تصویر فصل");n==null||n(p,b),C(p)}},b.onerror=()=>{n==null||n(new Error("خطا در آپلود تصویر فصل!"),b),C(new Error("خطا در آپلود تصویر فصل!"))},b.onloadend=()=>{P.value=Math.max(0,P.value-1),z.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((F,C)=>{const b=new XMLHttpRequest;b.open("POST",k),b.setRequestHeader("Authorization",`Bearer ${Ae()}`),b.upload.onprogress=p=>{if(p.lengthComputable){const s=Math.round(p.loaded/p.total*100);W.value=s,u==null||u({percent:s})}},b.onload=()=>{if(W.value=100,b.status>=200&&b.status<300)try{const p=JSON.parse(b.responseText||"{}"),s=Pe(p);if(!s)throw new Error("مسیر فایل از سرور دریافت نشد");const o=le(s);v.value.character_image_url=s,Y.value=o?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:o,response:{path:s}}]:[],l==null||l(p,b),y.success("تصویر با موفقیت آپلود شد!"),F()}catch(p){n==null||n(p,b),C(p)}else{const p=new Error("خطا در آپلود تصویر");n==null||n(p,b),C(p)}},b.onerror=()=>{n==null||n(new Error("خطا در آپلود تصویر!"),b),C(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 F=`${ze}/upload/machartaa-img`;P.value++,await new Promise((C,b)=>{const p=new XMLHttpRequest;p.open("POST",F),p.setRequestHeader("Authorization",`Bearer ${Ae()}`),p.upload.onprogress=s=>{s.lengthComputable&&(h==null||h({percent:Math.round(s.loaded/s.total*100)}))},p.onload=()=>{var s;if(p.status>=200&&p.status<300)try{const o=JSON.parse(p.responseText||"{}"),r=Pe(o);if(!r)throw new Error("مسیر تصویر از سرور دریافت نشد");const L=[...((s=v.value.steps[t])==null?void 0:s.step_images)||[],r];Le(t,"step_images",L);const M={uid:`${Date.now()}-${t}`,name:l.name||"image.jpg",status:"done",url:le(r),response:{path:r}};te.value[t]=[...at(t),M],n==null||n(o,p),y.success("عکس مرحله با موفقیت آپلود شد!"),C()}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,F=new FormData;F.append("file",n);const C=`${ze}/upload/machartaa-audio`;G(t,l),ee.value[N(t,l)]=URL.createObjectURL(n),Me(t,l,0),P.value++,await new Promise((b,p)=>{const s=new XMLHttpRequest;s.open("POST",C),s.setRequestHeader("Authorization",`Bearer ${Ae()}`),s.timeout=15*60*1e3,s.upload.onprogress=o=>{if(o.lengthComputable){const r=Math.round(o.loaded/o.total*100);Me(t,l,r),k==null||k({percent:r})}},s.onload=()=>{if(Me(t,l,100),s.status>=200&&s.status<300)try{const o=JSON.parse(s.responseText||"{}"),r=Pe(o);if(!r)throw new Error("مسیر فایل صوتی از سرور دریافت نشد");G(t,l),Le(t,l,r);const L=De(r);_e.value[N(t,l)]=L?[{uid:`${Date.now()}`,name:n.name||"audio.mp3",status:"done",url:L,response:{path:r}}]:[],u==null||u(o,s),y.success("فایل صوتی با موفقیت آپلود شد!"),b()}catch(o){h==null||h(o,s),p(o)}else{G(t,l);const o=new Error("خطا در آپلود فایل صوتی");h==null||h(o,s),p(o)}},s.onerror=()=>{G(t,l),h==null||h(new Error("خطا در آپلود فایل صوتی!"),s),p(new Error("خطا در آپلود فایل صوتی!"))},s.onloadend=()=>{P.value=Math.max(0,P.value-1),Me(t,l,0)},s.send(F)})}async function fs(e){try{const t=await oa(e.id);J.value=!0,Z.value=e.id,xe.value=t.chapter_id??null,v.value={title:t.title,character_image_url:E(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||ne(),publish_time:ue(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}))},X.value=be(v.value.publish_date),He(),t.character_image_url&&(Y.value=[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:le(t.character_image_url)}]),Ct(),kt(),re.value=!0}catch(t){y.error(t.message||"خطا در بارگذاری چالش")}}async function bs(){var e;Ie.value=!0;try{await Ys({rules_aparat_embed_code:((e=we.value.rules_aparat_embed_code)==null?void 0:e.trim())||null}),y.success("تنظیمات ذخیره شد")}catch(t){y.error(t.message||"خطا در ذخیره تنظیمات")}finally{Ie.value=!1}}async function ys(){try{const e=await ea();we.value.rules_aparat_embed_code=(e==null?void 0:e.rules_aparat_embed_code)||""}catch(e){y.error(e.message||"خطا در بارگذاری تنظیمات")}}function xs(e){return(ce.value-1)*de.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){Q.value={...Q.value,[e]:!Q.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(){Ge.value=!0;try{const e=[];let t=1;for(const l of q.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?ue(u.publish_time):"-"})}await je(e,"چالشها","چالش_های_مرحله_ای")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل چالشها")}finally{Ge.value=!1}}async function $s(){Ke.value=!0;try{const e=q.value.map((t,l)=>({ردیف:l+1,عنوان:t.title||"-",زیرعنوان:t.subtitle||"-",تم:pt(t.theme_key),ترتیب:t.sort_order??0,وضعیت:t.show?"نمایش":"مخفی","تعداد چالش":se.value[t.id]||0}));await je(e,"فصلها","فصل_های_چالش_مرحله_ای")}catch(e){console.error(e),y.error(e.message||"خطا در خروجی اکسل فصلها")}finally{Ke.value=!1}}async function Ts(){Ve.value=!0;try{B.value.length||await ge();const e=q.value.reduce((l,n)=>(n.id&&(l[n.id]=n.title||`فصل ${n.id}`),l),{}),t=B.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{Ve.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(){We.value=!0;try{const{rows:e,total:t}=await Dt({page:ce.value,pageSize:de.value,search:ke.value});_t.value=e,vt.value=t}catch(e){y.error(e.message||"خطا در بارگذاری چالشهای پیشنهادی")}finally{We.value=!1}}function Tt(){ce.value=1,Ne()}function Ls(e){ce.value=(e==null?void 0:e.current)||1,de.value=(e==null?void 0:e.pageSize)||de.value,Ne()}it(I,e=>{e==="progress"&&(H(),B.value.length||ge()),(e==="chapters"||e==="challenges")&&H(),e==="suggestions"&&Ne()}),Ns(()=>{ys(),H(),I.value==="progress"&&ge(),I.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=se.value[v.value.chapter_id]||0;if(!(J.value&&xe.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:ue(v.value.publish_time),steps:v.value.steps.map(t=>{var l,n;return{...t,kodoblu_voice_url:E((l=t.kodoblu_voice_url)==null?void 0:l.trim())||"",audio_section_url:E((n=t.audio_section_url)==null?void 0:n.trim())||"",step_images:(t.step_images||[]).map(u=>E(u)||u).filter(Boolean)}})};J.value&&Z.value?(await ta(Z.value,e),y.success("چالش ویرایش شد")):(await sa(e,null),y.success("چالش اضافه شد")),lt(),await H()}catch(e){y.error(e.message||"خطا در ذخیره چالش")}}return(e,t)=>{const l=Vs,n=ra,u=ca,h=Ks,k=Gs,F=ua,C=Ws,b=Is,p=Hs;return c(),d("div",{class:V(["step-challenges-page",{"step-challenges-page--mgmt":I.value==="challenges"||I.value==="progress"}])},[i(p,null,{default:m(()=>[i(x(Ft),{activeKey:I.value,"onUpdate:activeKey":t[3]||(t[3]=s=>I.value=s),class:"step-challenges-tabs"},{default:m(()=>[i(x(ie),{key:"challenges",tab:"مدیریت چالشها"},{default:m(()=>[a("div",_a,[a("div",va,[a("aside",ma,[pa,ve.value?(c(),d("div",ga,[i(x(oe))])):(c(),d($,{key:1},[(c(!0),d($,null,D(q.value,(s,o)=>(c(),d("button",{key:s.id,type:"button",class:V(["mgmt-chapters__item",{"mgmt-chapters__item--active":A.value===s.id}]),onClick:r=>Qt(s.id)},[a("span",fa,f(s.title||`فصل ${o+1}`),1),a("span",ba,f(se.value[s.id]||0)+"/۳۰",1)],10,ha))),128)),q.value.length?S("",!0):(c(),d("div",ya," هنوز فصلی تعریف نشده است. از تب «مدیریت فصلها» اضافه کنید. "))],64))]),a("section",xa,[a("div",wa,[a("h2",ka,f(gt.value?`چالشهای ${gt.value.title}`:"یک فصل انتخاب کنید"),1),i(l,{class:"excel-export-btn",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Ge.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(oe),{size:"large"})])):(c(),d("div",Ua,[(c(),d($,null,D(2,s=>a("div",{key:s,class:"mgmt-grid-block"},[a("div",qa,[w(" اسلاید "+f(s)+" ",1),a("span",$a," (چالش "+f((s-1)*15+1)+" تا "+f(s*15)+" · ۵×۳) ",1)]),a("div",Ta,[(c(!0),d($,null,D(Jt(s-1),o=>(c(),d("div",{key:o.slotNumber,class:V(["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},[a("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"}),a("span",La,f(o.slotNumber),1),a("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)):S("",!0)],64)):(c(),d($,{key:1},[i(T,{icon:"vuesax-linear:add",class:"mgmt-slot__icon"}),a("span",Ra,f(o.slotNumber),1),ja],64))],42,Aa))),128))])])),64))])):(c(),d("div",Ca," از باکس سمت راست یک فصل را انتخاب کنید. "))])])])]),_:1}),i(x(ie),{key:"chapters",tab:"مدیریت فصلها"},{default:m(()=>[a("div",Na,[Fa,a("div",za,[i(l,{class:"excel-export-btn",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Ke.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})])]),ve.value?(c(),d("div",Ea,[i(x(oe),{size:"large"})])):(c(),d("div",Ba,[(c(!0),d($,null,D(q.value,s=>(c(),d("div",{key:s.id,class:"chapter-admin-card"},[a("div",Oa,[a("div",Ha,f(s.title),1),a("div",Ia,f(s.subtitle||"بدون زیرعنوان"),1),a("div",Wa," تم: "+f(pt(s.theme_key))+" · ترتیب: "+f(s.sort_order??0)+" · "+f(s.show?"نمایش":"مخفی")+" · "+f(se.value[s.id]||0)+" چالش ",1)]),a("div",Ga,[i(x(rt),{class:"cursor-pointer"},{title:m(()=>[a("span",null,f(s.show?"مخفی کردن":"نمایش"),1)]),default:m(()=>[i(T,{icon:s.show?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:s.show?"#F59E0B":"#16A34A",onClick:o=>as(s)},null,8,["icon","color","onClick"])]),_:2},1024),i(x(rt),{class:"cursor-pointer"},{title:m(()=>[Ka]),default:m(()=>[i(T,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:o=>ts(s)},null,8,["onClick"])]),_:2},1024),i(x(rt),{class:"cursor-pointer"},{title:m(()=>[Va]),default:m(()=>[i(T,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:o=>ls(s)},null,8,["onClick"])]),_:2},1024)])]))),128)),q.value.length?S("",!0):(c(),d("div",Xa," هنوز فصلی تعریف نشده است. "))]))]),_:1}),i(x(ie),{key:"progress",tab:"پیشرفت کاربران"},{default:m(()=>[a("div",Ja,[a("div",Za,[a("aside",Qa,[Ya,ve.value?(c(),d("div",el,[i(x(oe))])):(c(),d($,{key:1},[(c(!0),d($,null,D(q.value,(s,o)=>(c(),d("button",{key:s.id,type:"button",class:V(["mgmt-chapters__item",{"mgmt-chapters__item--active":j.value===s.id}]),onClick:r=>Ut(s.id)},[a("span",sl,f(s.title||`فصل ${o+1}`),1),a("span",al,f(ht.value[s.id]||0),1)],10,tl))),128)),a("button",{type:"button",class:V(["mgmt-chapters__item",{"mgmt-chapters__item--active":j.value===0}]),onClick:t[0]||(t[0]=s=>Ut(0))},[ll,a("span",ol,f(ht.value[0]||0),1)],2),q.value.length?S("",!0):(c(),d("div",il," هنوز فصلی تعریف نشده است. "))],64))]),a("section",nl,[a("div",ul,[a("h2",rl,f(Wt.value),1),a("div",cl,[i(l,{class:"excel-export-btn",size:"small",style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff"},loading:Ve.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:ge},{default:m(()=>[w(" بروزرسانی ")]),_:1},8,["loading"])])]),Se.value?(c(),d("div",dl,[i(x(oe),{size:"large"})])):ft.value.length?(c(),d("div",vl,[(c(),d($,null,D(2,s=>a("div",{key:s,class:"mgmt-grid-block"},[a("div",ml,[w(" اسلاید "+f(s)+" ",1),a("span",pl," (چالش "+f((s-1)*15+1)+" تا "+f(s*15)+" · ۵×۳) ",1)]),a("div",gl,[(c(!0),d($,null,D(Zt(s-1),o=>(c(),d("button",{key:o.slotNumber,type:"button",class:V(["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},[a("span",fl,f(o.slotNumber),1),a("span",{class:"progress-slot__title",title:o.challenge.title},f(o.challenge.title),9,bl),a("div",yl,[a("span",null,f(o.challenge.unique_users_count)+" کاربر",1),a("span",null,f(o.challenge.times_performed)+" بار",1)]),a("span",xl,[w(" بازخوردها "),i(T,{icon:"vuesax-linear:arrow-left"})])],64)):(c(),d($,{key:1},[a("span",wl,f(o.slotNumber),1),kl],64))],10,hl))),128))])])),64))])):(c(),d("div",_l," چالشی در این فصل وجود ندارد. "))])])])]),_:1}),i(x(ie),{key:"suggestions",tab:"چالشهای پیشنهادی"},{default:m(()=>[a("div",Cl,[a("div",Sl,[Ul,a("div",ql,[i(n,{value:ke.value,"onUpdate:value":t[1]||(t[1]=s=>ke.value=s),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:We.value,pagination:It.value,"row-key":"id",bordered:"",size:"middle",onChange:Ls},{bodyCell:m(({column:s,record:o,index:r})=>{var L;return[s.key==="row"?(c(),d($,{key:0},[w(f(xs(r)),1)],64)):s.key==="challenge"?(c(),d("div",$l,[a("div",Tl,[a("span",Al,f(o.title),1),a("button",{type:"button",class:"suggestion-challenge-cell__toggle",title:Q.value[o.id]?"بستن مراحل":"نمایش مراحل",onClick:M=>Cs(o.id)},[i(T,{icon:Q.value[o.id]?"vuesax-linear:arrow-up-1":"vuesax-linear:arrow-downره"},null,8,["icon"])],8,Pl)]),Q.value[o.id]?(c(),d("div",Ll,[(c(!0),d($,null,D(o.steps,M=>(c(),d("div",{key:M.id,class:"suggestion-challenge-cell__step"},[a("div",Ml," مرحله "+f(M.step_order),1),a("div",Dl,[a("span",null,f(ws(M.description)),1),ks(M.description)?(c(),d("button",{key:0,type:"button",class:"suggestion-challenge-cell__more",onClick:Ni=>Ss(M.description,`مرحله ${M.step_order} — ${o.title}`)}," ... ",8,Rl)):S("",!0)])]))),128)),(L=o.steps)!=null&&L.length?S("",!0):(c(),d("div",jl," مرحلهای ثبت نشده است. "))])):S("",!0)])):S("",!0)]}),_:1},8,["data-source","loading","pagination"])])]),_:1}),i(x(ie),{key:"settings",tab:"تنظیمات صفحه"},{default:m(()=>[a("div",Nl,[Fl,zl,a("div",null,[El,i(h,{value:we.value.rules_aparat_embed_code,"onUpdate:value":t[2]||(t[2]=s=>we.value.rules_aparat_embed_code=s),placeholder:"کد embed از آپارات",rows:4},null,8,["value"])]),i(l,{type:"primary",loading:Ie.value,onClick:bs},{default:m(()=>[w(" ذخیره تنظیمات ")]),_:1},8,["loading"])])]),_:1})]),_:1},8,["activeKey"]),i(b,{visible:re.value,"onUpdate:visible":t[12]||(t[12]=s=>re.value=s),title:J.value?"ویرایش چالش":"افزودن چالش",onOk:Ms,onCancel:lt,width:"85%",confirmLoading:P.value>0},{default:m(()=>[a("div",Bl,[P.value>0?(c(),d("div",Ol,[i(x(oe),{size:"large"})])):S("",!0),a("div",null,[Hl,i(k,{value:v.value.title,"onUpdate:value":t[4]||(t[4]=s=>v.value.title=s),placeholder:"عنوان چالش"},null,8,["value"])]),a("div",Il,[a("div",null,[Wl,i(ia,{value:X.value,"onUpdate:value":t[5]||(t[5]=s=>X.value=s)},null,8,["value"])]),a("div",null,[Gl,i(F,{value:ye.value,"onUpdate:value":t[6]||(t[6]=s=>ye.value=s),format:"HH:mm",class:"w-full",placeholder:"انتخاب ساعت","minute-step":5},null,8,["value"])])]),a("div",Kl,[a("div",Vl,[Xl,i(x(Oe),{value:v.value.chapter_id,"onUpdate:value":t[7]||(t[7]=s=>v.value.chapter_id=s),class:"w-full","allow-clear":"",placeholder:"انتخاب فصل"},{default:m(()=>[(c(!0),d($,null,D(q.value,s=>(c(),Pt(x(R),{key:s.id,value:s.id},{default:m(()=>[w(f(s.title)+" ",1),a("span",Jl," ("+f(se.value[s.id]||0)+"/۳۰) ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a("div",Zl,[w(" ترتیب نمایش از جایگاه گرید (چالش ۱ تا ۳۰) مشخص میشود. "),v.value.sort_order?(c(),d("span",Ql," جایگاه فعلی: چالش "+f(v.value.sort_order),1)):S("",!0)])]),a("div",null,[Yl,a("div",eo,[i(C,{value:v.value.show,"onUpdate:value":t[8]||(t[8]=s=>v.value.show=s)},null,8,["value"]),a("span",to,f(v.value.show?"نمایش":"مخفی"),1)])]),a("div",null,[so,i(x(Oe),{value:v.value.access_type,"onUpdate:value":t[9]||(t[9]=s=>v.value.access_type=s),class:"w-full"},{default:m(()=>[i(x(R),{value:"free"},{default:m(()=>[w("رایگان (همه کاربران)")]),_:1}),i(x(R),{value:"subscription"},{default:m(()=>[w("اشتراکی (فقط اشتراک فعال)")]),_:1})]),_:1},8,["value"])]),a("div",null,[ao,i(k,{value:v.value.completion_points,"onUpdate:value":t[10]||(t[10]=s=>v.value.completion_points=s),type:"number",min:"0",placeholder:"50"},null,8,["value"])])]),a("div",lo,[a("div",null,[oo,i(x(he),{"file-list":Y.value,"onUpdate:fileList":t[11]||(t[11]=s=>Y.value=s),"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(()=>[Y.value.length<1?(c(),d("div",io,[i(T,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),no])):S("",!0)]),_:1},8,["file-list"]),W.value>0&&W.value<100?(c(),d("div",uo,[a("div",ro,[a("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(W.value))},null,4)])])):S("",!0)])]),co,a("div",_o,[vo,a("div",mo,[(c(!0),d($,null,D(v.value.steps,(s,o)=>(c(),d("div",{key:o,class:V(["step-form-box",{"step-form-box--final":s.is_final_step}])},[a("div",po,[a("div",go,[w(" مرحله "+f(o+1)+" ",1),s.is_final_step?(c(),d("span",ho,"(ماموریت پایانی)")):S("",!0)]),a("div",fo,[i(C,{value:s.is_final_step,"onUpdate:value":r=>s.is_final_step=r},null,8,["value","onUpdate:value"]),bo])]),a("div",null,[yo,i(h,{value:s.description,"onUpdate:value":r=>s.description=r,placeholder:"توضیحات مرحله",rows:2},null,8,["value","onUpdate:value"])]),a("div",xo,[a("div",null,[wo,i(k,{value:s.duration_minutes,"onUpdate:value":r=>s.duration_minutes=r,type:"number",min:"0",placeholder:"0"},null,8,["value","onUpdate:value"])])]),a("div",null,[ko,i(h,{value:s.aparat_embed_code,"onUpdate:value":r=>s.aparat_embed_code=r,placeholder:"کد embed",rows:2},null,8,["value","onUpdate:value"])]),a("div",Co,[So,i(x(he),{"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"]),ae(o,"kodoblu_voice_url")>0&&ae(o,"kodoblu_voice_url")<100?(c(),d("div",Uo,[a("div",qo,[a("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(ae(o,"kodoblu_voice_url")))},null,4)])])):S("",!0),wt(o,"kodoblu_voice_url",s.kodoblu_voice_url)?(c(),d("div",$o,[a("div",To,[Ao,i(l,{type:"text",danger:"",size:"small",onClick:r=>Re(o,"kodoblu_voice_url")},{default:m(()=>[w(" حذف فایل ")]),_:2},1032,["onClick"])]),(c(),d("audio",{key:pe(o,"kodoblu_voice_url",s.kodoblu_voice_url),src:pe(o,"kodoblu_voice_url",s.kodoblu_voice_url),controls:"",preload:"metadata",class:"w-full"},null,8,Po))])):S("",!0),i(k,{value:s.kodoblu_voice_url,"onUpdate:value":r=>s.kodoblu_voice_url=r,placeholder:"مسیر وویس کدوبلو (پس از آپلود)"},null,8,["value","onUpdate:value"])]),a("div",null,[Lo,i(x(he),{"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",Mo,[i(T,{icon:"vuesax-linear:image",class:"text-xl mb-1"}),Do])):S("",!0)]),_:2},1032,["file-list","custom-request","onRemove"])]),Ro,a("div",jo,[No,a("div",Fo,[a("label",zo,[i(C,{value:s.enable_feedback_text,"onUpdate:value":r=>s.enable_feedback_text=r},null,8,["value","onUpdate:value"]),Eo]),a("label",Bo,[i(C,{value:s.require_feedback_text,"onUpdate:value":r=>s.require_feedback_text=r,disabled:!s.enable_feedback_text},null,8,["value","onUpdate:value","disabled"]),Oo]),a("label",Ho,[i(C,{value:s.enable_photo_upload,"onUpdate:value":r=>s.enable_photo_upload=r},null,8,["value","onUpdate:value"]),Io]),a("label",Wo,[i(C,{value:s.require_photo_upload,"onUpdate:value":r=>s.require_photo_upload=r,disabled:!s.enable_photo_upload},null,8,["value","onUpdate:value","disabled"]),Go]),a("label",Ko,[i(C,{value:s.enable_voice_upload,"onUpdate:value":r=>s.enable_voice_upload=r},null,8,["value","onUpdate:value"]),Vo]),a("label",Xo,[i(C,{value:s.require_voice_upload,"onUpdate:value":r=>s.require_voice_upload=r,disabled:!s.enable_voice_upload},null,8,["value","onUpdate:value","disabled"]),Jo]),a("label",Zo,[i(C,{value:s.enable_mcq,"onUpdate:value":r=>s.enable_mcq=r},null,8,["value","onUpdate:value"]),Qo]),a("label",Yo,[i(C,{value:s.require_mcq,"onUpdate:value":r=>s.require_mcq=r,disabled:!s.enable_mcq},null,8,["value","onUpdate:value","disabled"]),ei]),a("label",ti,[i(C,{value:s.enable_audio_section,"onUpdate:value":r=>s.enable_audio_section=r},null,8,["value","onUpdate:value"]),si])]),s.enable_feedback_text?(c(),d("div",ai,[a("div",null,[li,i(k,{value:s.feedback_text_title,"onUpdate:value":r=>s.feedback_text_title=r,placeholder:"مثلاً: بازخورد این مرحله"},null,8,["value","onUpdate:value"])]),a("div",null,[oi,i(k,{value:s.feedback_text_placeholder,"onUpdate:value":r=>s.feedback_text_placeholder=r,placeholder:"مثلاً: بازخورد خود را بنویس..."},null,8,["value","onUpdate:value"])])])):S("",!0),s.enable_mcq?(c(),d("div",ii,[i(k,{value:s.mcq_question,"onUpdate:value":r=>s.mcq_question=r,placeholder:"متن سوال"},null,8,["value","onUpdate:value"]),(c(!0),d($,null,D(s.mcq_options,(r,L)=>(c(),d("div",{key:L,class:"flex gap-2 items-center"},[i(k,{value:s.mcq_options[L],"onUpdate:value":M=>s.mcq_options[L]=M,placeholder:`گزینه ${L+1}`,class:"flex-1"},null,8,["value","onUpdate:value","placeholder"]),a("input",{type:"radio",name:`mcq-${o}`,checked:s.mcq_correct_index===L,onChange:M=>s.mcq_correct_index=L},null,40,ni),ui,s.mcq_options.length>2?(c(),Pt(l,{key:0,danger:"",onClick:M=>s.mcq_options.splice(L,1)},{default:m(()=>[w("×")]),_:2},1032,["onClick"])):S("",!0)]))),128)),i(l,{type:"dashed",onClick:r=>s.mcq_options.push("")},{default:m(()=>[w("+ گزینه")]),_:2},1032,["onClick"])])):S("",!0),s.enable_audio_section?(c(),d("div",ri,[ci,i(x(he),{"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"]),ae(o,"audio_section_url")>0&&ae(o,"audio_section_url")<100?(c(),d("div",di,[a("div",_i,[a("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(ae(o,"audio_section_url")))},null,4)])])):S("",!0),wt(o,"audio_section_url",s.audio_section_url)?(c(),d("div",vi,[a("div",mi,[pi,i(l,{type:"text",danger:"",size:"small",onClick:r=>Re(o,"audio_section_url")},{default:m(()=>[w(" حذف فایل ")]),_:2},1032,["onClick"])]),(c(),d("audio",{key:pe(o,"audio_section_url",s.audio_section_url),src:pe(o,"audio_section_url",s.audio_section_url),controls:"",preload:"metadata",class:"w-full"},null,8,gi))])):S("",!0),i(k,{value:s.audio_section_url,"onUpdate:value":r=>s.audio_section_url=r,placeholder:"مسیر فایل صوتی (پس از آپلود)"},null,8,["value","onUpdate:value"])])):S("",!0)]),a("div",hi,[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"}),fi]),_:2},1032,["onClick","disabled"])])],2))),128)),i(l,{type:"dashed",onClick:ds,class:"w-full"},{default:m(()=>[bi]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"]),i(b,{visible:me.value,"onUpdate:visible":t[19]||(t[19]=s=>me.value=s),title:qe.value?"ویرایش فصل":"افزودن فصل",onOk:ss,onCancel:xt,width:"560px"},{default:m(()=>[a("div",yi,[a("div",null,[xi,i(k,{value:U.value.title,"onUpdate:value":t[13]||(t[13]=s=>U.value.title=s),placeholder:"مثلاً خانه بهار"},null,8,["value"])]),a("div",null,[wi,i(k,{value:U.value.subtitle,"onUpdate:value":t[14]||(t[14]=s=>U.value.subtitle=s),placeholder:"توضیح کوتاه روی بنر فصل"},null,8,["value"])]),a("div",ki,[a("div",null,[Ci,i(x(Oe),{value:U.value.theme_key,"onUpdate:value":t[15]||(t[15]=s=>U.value.theme_key=s),class:"w-full"},{default:m(()=>[i(x(R),{value:"meadow"},{default:m(()=>[w("خانه کدوبلو")]),_:1}),i(x(R),{value:"cottage"},{default:m(()=>[w("کافه پفی")]),_:1}),i(x(R),{value:"forest"},{default:m(()=>[w("باغ میلا")]),_:1}),i(x(R),{value:"desert"},{default:m(()=>[w("کارگاه پیتو")]),_:1}),i(x(R),{value:"winter"},{default:m(()=>[w("خانه آرامان")]),_:1}),i(x(R),{value:"castle"},{default:m(()=>[w("میدان شهر")]),_:1}),i(x(R),{value:"tree"},{default:m(()=>[w("درخت پیرین")]),_:1})]),_:1},8,["value"])]),a("div",null,[Si,i(k,{value:U.value.sort_order,"onUpdate:value":t[16]||(t[16]=s=>U.value.sort_order=s),type:"number",placeholder:"1"},null,8,["value"])])]),a("div",Ui,[i(C,{value:U.value.show,"onUpdate:value":t[17]||(t[17]=s=>U.value.show=s)},null,8,["value"]),a("span",qi,f(U.value.show?"نمایش در نقشه":"مخفی"),1)]),a("div",null,[$i,i(x(he),{"file-list":O.value,"onUpdate:fileList":t[18]||(t[18]=s=>O.value=s),"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(()=>[O.value.length<1?(c(),d("div",Ti,[i(T,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ai])):S("",!0)]),_:1},8,["file-list"]),z.value>0&&z.value<100?(c(),d("div",Pi,[a("div",Li,[a("div",{class:"h-2 bg-blue-500 transition-all",style:Fe(Te(z.value))},null,4)])])):S("",!0),Mi])])]),_:1},8,["visible","title"]),i(b,{visible:Ce.value,"onUpdate:visible":t[20]||(t[20]=s=>Ce.value=s),title:"توضیحات کامل",footer:null,onCancel:Us,width:"560px"},{default:m(()=>[a("div",Di,f(Ze.value),1),a("div",Ri,f(Je.value),1)]),_:1},8,["visible"])]),_:1})],2)}}});const Nn=da(ji,[["__scopeId","data-v-8b8076e3"]]);export{Nn as default};
|