2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{_ as de}from"./BasicMainCard-ff1543bd.js";import{_ as me}from"./BasicModal.vue_vue_type_style_index_0_lang-6296deb9.js";import{_ as _e}from"./BasicTextArea.vue_vue_type_style_index_0_lang-46e82d82.js";import{_ as pe}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-0d6b57d1.js";import{_ as ge}from"./BasicInput.vue_vue_type_style_index_0_lang-06536e2e.js";import{_ as ve,u as he}from"./useBaseTable-e18d3b32.js";import{_ as fe}from"./button.vue_vue_type_style_index_0_lang-fbfa965d.js";import{_ as xe,Y as we,Z as V,I as Q,J as ee,K as N,d as ye,i as k,o as $,c as D,e as s,w as f,b as e,f as be,L as ke,l as T,t as P,n as F,F as Ce,q as Ie,H as x,$ as Ue,M as qe}from"./index-c678e119.js";import{t as Te}from"./useDataTime-206d8d2e.js";import{I as S}from"./Icon-671f08f9.js";import{e as R,g as O}from"./convert-2ad76038.js";import{M as Z}from"./index-66da2c76.js";import{S as $e}from"./index-5203b45e.js";import{T as z}from"./isSymbol-5130882b.js";import{U as De}from"./index-ff90b762.js";import"./Grid-192c1e72.js";import"./index-88858982.js";import"./_plugin-vue_export-helper-edd5ed68.js";import"./shallowequal-93b92d94.js";import"./index-27b4bb6d.js";import"./vnode-34fe2aaf.js";import"./index-ea10bb13.js";import"./useState-fb1fd992.js";import"./useRefs-d469f03d.js";import"./_flatRest-89cece1c.js";import"./isMobile-e2e89480.js";import"./omit-30cc2465.js";import"./index-2a1871d2.js";import"./Col-65d77001.js";import"./styleChecker-c202e4d7.js";import"./isPlainObject-2f8cd8cc.js";import"./index-e517c667.js";import"./SearchOutlined-445bfd70.js";import"./FormItemContext-53695780.js";import"./index-c5016c96.js";import"./usePrice-bc935b83.js";import"./updateLocale-e9df593e.js";import"./useMemo-3527b8f5.js";import"./lodash-2343a0ae.js";import"./index-064013c2.js";import"./Badge-b566fed9.js";import"./isNumeric-3f69e2aa.js";import"./index-d768dcac.js";import"./index-05e85885.js";import"./index-d80ea252.js";import"./DialogWrap-0297f46d.js";import"./pickAttrs-09168c62.js";import"./css-aae66f86.js";import"./index-01af60d8.js";import"./toArray-acd138e5.js";import"./index-31ed7972.js";import"./index-679d69b0.js";import"./index-e3658ae2.js";async function Se(l){const{TableEngineRequest:g}=await xe(()=>import("./buildSupabaseQuery-72aac971.js"),["assets/buildSupabaseQuery-72aac971.js","assets/index-c678e119.js","assets/index-0d7ad6b5.css"]),r={...l};!r.sort&&!r.order&&(r.order="sort_order");const c=await g(r,"iran_tourism_challenges");try{if(Array.isArray(c==null?void 0:c.rows)){const v=r.page||1,y=r.limit||200,C=(v-1)*y,A=c.rows.map((U,q)=>({...U,index:C+q}));return{...c,rows:A}}}catch(v){console.log("[getIranTourismChallengeTable] normalize error:",v)}return c}async function Ae(l){const g=await we("iran_tourism_challenges",l),r=await V("iran_tourism_challenge_questions",{challenge_id:l});return{...g,questions:Array.isArray(r)?r:[]}}async function Be(l){const g=await Q("iran_tourism_challenges",{...l.challenge,updated_at:new Date().toISOString()});for(let r=0;r<l.questions.length;r++){const c=l.questions[r];await Q("iran_tourism_challenge_questions",{challenge_id:g.id,question:c.question,options:c.options,correct_answer:c.correct_answer||null,sort_order:c.sort_order??r})}return g}async function Le(l,g){await ee("iran_tourism_challenges",l,{...g.challenge,updated_at:new Date().toISOString()});const r=await V("iran_tourism_challenge_questions",{challenge_id:l});for(const c of Array.isArray(r)?r:[])await N("iran_tourism_challenge_questions",c.id);for(let c=0;c<g.questions.length;c++){const v=g.questions[c];await Q("iran_tourism_challenge_questions",{challenge_id:l,question:v.question,options:v.options,correct_answer:v.correct_answer||null,sort_order:v.sort_order??c})}return{id:l}}async function Re(l,g){const r=await ee("iran_tourism_challenges",l,{...g,updated_at:new Date().toISOString()});return Array.isArray(r)?r:[r]}async function Me(l){const g=await V("iran_tourism_challenge_questions",{challenge_id:l});for(const r of Array.isArray(g)?g:[])await N("iran_tourism_challenge_questions",r.id);await N("iran_tourism_challenges",l)}const je=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:l=>l.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",width:80,align:"center"},{title:"وضعیت نمایش",dataIndex:"show",key:"show",type:"Boolean",filterable:!0,align:"center",customRender:l=>l.record.show?"نمایش":"مخفی"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:l=>Te(l.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],Pe={class:"flex justify-between items-center mb-4"},Fe=e("h2",null,"چالش ایرانگردی",-1),Oe={class:"gap-2 flex justify-center"},ze=e("span",null,"ویرایش",-1),Qe=e("span",null,"حذف",-1),Ne={class:"space-y-4 relative"},Ve={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Ee=e("div",{class:"mb-1 text-sm text-gray-600"},"عنوان چالش",-1),We={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},He=e("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),Je=e("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت نمایش",-1),Ge={class:"flex items-center gap-2 h-10"},Ke={class:"text-sm text-gray-600"},Xe={class:"flex flex-wrap justify-center gap-10 pb-2"},Ye=e("div",{class:"mb-1 text-sm text-gray-600 text-center"},"عکس چالش (صفحه لیست)",-1),Ze={key:0},et=e("div",null,"آپلود تصویر",-1),tt=e("div",{class:"mb-1 text-sm text-gray-600 text-center"},"عکس تبریک",-1),at={key:0},ot=e("div",null,"آپلود تصویر",-1),st=e("div",{class:"mb-1 text-sm text-gray-600"},"متن تبریک",-1),nt=e("div",{class:"section-divider"},null,-1),it={class:"pt-2"},lt=e("div",{class:"mb-2 text-sm text-gray-600 font-medium"},"سوالات چالش (چهارگزینهای)",-1),rt={class:"space-y-3"},ut={class:"mb-1 text-xs text-gray-500"},ct={class:"grid grid-cols-2 gap-3"},dt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۱",-1),mt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۲",-1),_t=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۳",-1),pt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۴",-1),gt=e("div",{class:"mb-1 text-xs text-gray-500"},"جواب صحیح (اختیاری — همه کاربران برنده میشوند)",-1),vt={class:"flex justify-end"},ht=e("span",{class:"text-[#DC2626]"},"حذف سوال",-1),ft=e("span",{class:"text-gray-500"},"+ افزودن سوال",-1),fa=ye({__name:"index",setup(l){const g=De,[r,c]=he(),v=k([]),y=k([]),C=k(0),A=k(!1),U=k(!1),q=k(!1),B=k(null),M=()=>({id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}),n=k({title:"",image_url:null,congrats_image_url:null,congrats_text:"",show:!0,sort_order:0,questions:[M()]}),te=k({columns:je,api:Se,defaultPageLimit:20});function E(_){return _.type.startsWith("image/")?_.size/1024/1024<5?!0:(x.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(x.error("فقط فایلهای تصویری قابل آپلود هستند!"),!1)}async function W(_,o){const{file:i,onSuccess:d,onError:u,onProgress:w}=_,p=new FormData;p.append("file",i);const I=`${qe}/upload/machartaa-img`;C.value++,await new Promise((L,t)=>{const m=new XMLHttpRequest;m.open("POST",I);const h=Ue()||localStorage.getItem("tamin_token")||localStorage.getItem("token")||"";m.setRequestHeader("Authorization",`Bearer ${h}`),m.upload.onprogress=b=>{b.lengthComputable&&(w==null||w({percent:Math.round(b.loaded/b.total*100)}))},m.onload=()=>{var b,J,G,K;if(m.status>=200&&m.status<300)try{const a=JSON.parse(m.responseText||"{}"),ce=(a==null?void 0:a.full_src)||(a==null?void 0:a.url)||(a==null?void 0:a.src)||(a==null?void 0:a.path)||((b=a==null?void 0:a.data)==null?void 0:b.full_src)||((J=a==null?void 0:a.data)==null?void 0:J.url)||((G=a==null?void 0:a.data)==null?void 0:G.src)||((K=a==null?void 0:a.data)==null?void 0:K.path)||"",j=R(ce),X=O(j),Y=X?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:X,response:{path:j}}]:[];o==="image"?(n.value.image_url=j||null,v.value=Y):(n.value.congrats_image_url=j||null,y.value=Y),d==null||d(a,m),x.success("تصویر با موفقیت آپلود شد!"),L()}catch(a){u==null||u(a,m),t(a)}else{const a=new Error("خطا در آپلود تصویر");u==null||u(a,m),t(a)}},m.onerror=()=>{const b=new Error("خطا در آپلود تصویر!");u==null||u(b,m),t(b)},m.onloadend=()=>{C.value=Math.max(0,C.value-1)},m.send(p)})}function ae(){n.value={title:"",image_url:null,congrats_image_url:null,congrats_text:"",show:!0,sort_order:0,questions:[M()]},v.value=[],y.value=[]}function oe(){ae(),q.value=!1,B.value=null,U.value=!0}function H(){U.value=!1,q.value=!1,B.value=null}function se(){n.value.questions.push({...M(),id:n.value.questions.length+1})}function ne(_){n.value.questions.length<=1||n.value.questions.splice(_,1)}async function ie(){var i,d,u,w;if(!((i=n.value.title)!=null&&i.trim())){x.warning("عنوان چالش را وارد کنید");return}if(C.value>0){x.warning("لطفاً تا پایان آپلود تصاویر صبر کنید.");return}const _=n.value.questions.map((p,I)=>({question:p.question.trim(),options:[p.option1,p.option2,p.option3,p.option4].map(L=>L.trim()).filter(Boolean),correct_answer:p.correct_answer?String(p.correct_answer).trim():"",sort_order:I})).filter(p=>p.question&&p.options.length>=2);if(!_.length){x.warning("حداقل یک سوال با دو گزینه وارد کنید");return}const o={challenge:{title:n.value.title.trim(),image_url:((d=n.value.image_url)==null?void 0:d.trim())||null,congrats_image_url:((u=n.value.congrats_image_url)==null?void 0:u.trim())||null,congrats_text:((w=n.value.congrats_text)==null?void 0:w.trim())||null,show:n.value.show??!0,sort_order:Number(n.value.sort_order)||0},questions:_};A.value=!0;try{q.value&&B.value?(await Le(B.value,o),x.success("چالش با موفقیت ویرایش شد!")):(await Be(o),x.success("چالش با موفقیت ایجاد شد!")),H(),await c()}catch(p){console.error(p),x.error("خطا در ذخیره چالش!")}finally{A.value=!1}}async function le(_){var o;try{const i=await Ae(_.id);if(i.image_url){const d=R(i.image_url);v.value=[{uid:`image-${Date.now()}`,name:"image.jpg",status:"done",url:O(d),response:{path:d}}]}else v.value=[];if(i.congrats_image_url){const d=R(i.congrats_image_url);y.value=[{uid:`congrats-${Date.now()}`,name:"congrats.jpg",status:"done",url:O(d),response:{path:d}}]}else y.value=[];n.value={title:i.title||"",image_url:R(i.image_url)||null,congrats_image_url:R(i.congrats_image_url)||null,congrats_text:i.congrats_text||"",show:i.show??!0,sort_order:i.sort_order??0,questions:((o=i.questions)==null?void 0:o.length)>0?i.questions.map(d=>{var u,w,p,I;return{id:d.id,question:d.question||"",option1:((u=d.options)==null?void 0:u[0])||"",option2:((w=d.options)==null?void 0:w[1])||"",option3:((p=d.options)==null?void 0:p[2])||"",option4:((I=d.options)==null?void 0:I[3])||"",correct_answer:d.correct_answer||""}}):[M()]},q.value=!0,B.value=_.id,U.value=!0}catch(i){console.error(i),x.error("خطا در بارگذاری اطلاعات چالش!")}}function re(_){const o=!_.show;Z.confirm({title:"تغییر وضعیت نمایش",content:o?`آیا مطمئن هستید که میخواهید چالش "${_.title}" را نمایش دهید؟`:`آیا مطمئن هستید که میخواهید چالش "${_.title}" را مخفی کنید؟`,okText:"بله",cancelText:"خیر",onOk:async()=>{try{await Re(_.id,{show:o}),x.success(o?"چالش نمایش داده شد!":"چالش مخفی شد!"),await c()}catch(i){console.error(i),x.error("خطا در تغییر وضعیت نمایش!")}}})}function ue(_){Z.confirm({title:"حذف چالش",content:`آیا مطمئن هستید که میخواهید چالش "${_.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await Me(_.id),x.success("چالش با موفقیت حذف شد!"),await c()}catch(o){console.error(o),x.error("خطا در حذف چالش!")}}})}return(_,o)=>{const i=fe,d=ve,u=ge,w=pe,p=_e,I=me,L=de;return $(),D("div",null,[s(L,null,{default:f(()=>[e("div",Pe,[Fe,s(i,{type:"primary",onClick:oe},{default:f(()=>[be("افزودن چالش")]),_:1})]),s(d,ke(te.value,{ref:"table",onRegister:T(r)}),{action:f(({record:t})=>[e("div",Oe,[s(T(z),{class:"cursor-pointer"},{title:f(()=>[e("span",null,P(t.show?"مخفی کردن":"نمایش"),1)]),default:f(()=>[s(S,{icon:t.show?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:t.show?"#F59E0B":"#16A34A",onClick:m=>re(t)},null,8,["icon","color","onClick"])]),_:2},1024),s(T(z),{class:"cursor-pointer"},{title:f(()=>[ze]),default:f(()=>[s(S,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:m=>le(t)},null,8,["onClick"])]),_:2},1024),s(T(z),{class:"cursor-pointer"},{title:f(()=>[Qe]),default:f(()=>[s(S,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:m=>ue(t)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),s(I,{visible:U.value,"onUpdate:visible":o[6]||(o[6]=t=>U.value=t),title:q.value?"ویرایش چالش":"افزودن چالش",onOk:ie,onCancel:H,width:"80%",confirmLoading:A.value||C.value>0},{default:f(()=>[e("div",Ne,[C.value>0?($(),D("div",Ve,[s(T($e),{size:"large"})])):F("",!0),e("div",null,[Ee,s(u,{value:n.value.title,"onUpdate:value":o[0]||(o[0]=t=>n.value.title=t),placeholder:"عنوان چالش"},null,8,["value"])]),e("div",We,[e("div",null,[He,s(u,{value:n.value.sort_order,"onUpdate:value":o[1]||(o[1]=t=>n.value.sort_order=t),type:"number",placeholder:"0"},null,8,["value"])]),e("div",null,[Je,e("div",Ge,[s(w,{value:n.value.show,"onUpdate:value":o[2]||(o[2]=t=>n.value.show=t)},null,8,["value"]),e("span",Ke,P(n.value.show?"نمایش":"مخفی"),1)])])]),e("div",Xe,[e("div",null,[Ye,s(T(g),{"file-list":v.value,"onUpdate:fileList":o[3]||(o[3]=t=>v.value=t),"before-upload":E,"custom-request":t=>W(t,"image"),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:f(()=>[v.value.length<1?($(),D("div",Ze,[s(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),et])):F("",!0)]),_:1},8,["file-list","custom-request"])]),e("div",null,[tt,s(T(g),{"file-list":y.value,"onUpdate:fileList":o[4]||(o[4]=t=>y.value=t),"before-upload":E,"custom-request":t=>W(t,"congrats"),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:f(()=>[y.value.length<1?($(),D("div",at,[s(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),ot])):F("",!0)]),_:1},8,["file-list","custom-request"])])]),e("div",null,[st,s(p,{value:n.value.congrats_text,"onUpdate:value":o[5]||(o[5]=t=>n.value.congrats_text=t),placeholder:"متن پیام تبریک این چالش",rows:4},null,8,["value"])]),nt,e("div",it,[lt,e("div",rt,[($(!0),D(Ce,null,Ie(n.value.questions,(t,m)=>($(),D("div",{key:m,class:"border rounded-lg p-3 space-y-3"},[e("div",null,[e("div",ut,"سوال "+P(m+1),1),s(u,{value:t.question,"onUpdate:value":h=>t.question=h,placeholder:`سوال ${m+1}`},null,8,["value","onUpdate:value","placeholder"])]),e("div",ct,[e("div",null,[dt,s(u,{value:t.option1,"onUpdate:value":h=>t.option1=h,placeholder:"گزینه ۱"},null,8,["value","onUpdate:value"])]),e("div",null,[mt,s(u,{value:t.option2,"onUpdate:value":h=>t.option2=h,placeholder:"گزینه ۲"},null,8,["value","onUpdate:value"])]),e("div",null,[_t,s(u,{value:t.option3,"onUpdate:value":h=>t.option3=h,placeholder:"گزینه ۳"},null,8,["value","onUpdate:value"])]),e("div",null,[pt,s(u,{value:t.option4,"onUpdate:value":h=>t.option4=h,placeholder:"گزینه ۴"},null,8,["value","onUpdate:value"])])]),e("div",null,[gt,s(u,{value:t.correct_answer,"onUpdate:value":h=>t.correct_answer=h,placeholder:"۱، ۲، ۳ یا ۴",type:"number",min:"1",max:"4"},null,8,["value","onUpdate:value"])]),e("div",vt,[s(i,{type:"text",danger:"",onClick:h=>ne(m),disabled:n.value.questions.length<=1},{default:f(()=>[s(S,{icon:"vuesax-linear:trash",color:"#DC2626"}),ht]),_:2},1032,["onClick","disabled"])])]))),128)),s(i,{type:"dashed",class:"w-full",onClick:se},{default:f(()=>[ft]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{fa as default};
|