Files
machartaa_admin_dist/dist/assets/index-93e6641c.js
T
2026-10-04 13:31:09 +03:30

2 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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};