Files
machartaa_admin_dist/dist/assets/index-50b391a8.js
T
2026-10-05 18:40:49 +03:30

2 lines
17 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 me}from"./BasicMainCard-e8fae2e0.js";import{_ as _e}from"./BasicModal.vue_vue_type_style_index_0_lang-f76fec1b.js";import{_ as pe}from"./BasicTextArea.vue_vue_type_style_index_0_lang-6d7ecc0e.js";import{_ as ge}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-6e462f47.js";import{_ as ve}from"./BasicInput.vue_vue_type_style_index_0_lang-644caa39.js";import{_ as he,u as fe}from"./useBaseTable-45427402.js";import{_ as xe}from"./button.vue_vue_type_style_index_0_lang-e7cef717.js";import{_ as we,Y as ye,Z as N,I as Q,J as ee,K as V,d as be,i as k,o as $,c as D,e as i,w as f,b as e,f as ke,L as Ce,l as T,t as P,n as F,F as Ie,q as Ue,H as x,$ as qe,M as Te}from"./index-166b4ef1.js";import{t as $e}from"./useDataTime-7db5a46b.js";import{I as S}from"./Icon-b8613529.js";import{e as R,g as O}from"./convert-2ad76038.js";import{M as Z}from"./index-58b86fb2.js";import{S as De}from"./index-de862045.js";import{T as z}from"./isSymbol-c953ccc2.js";import{U as Se}from"./index-6c7cbb7d.js";import"./Grid-47180f92.js";import"./index-366f722a.js";import"./_plugin-vue_export-helper-e5be29c6.js";import"./shallowequal-78a96afc.js";import"./index-7f046693.js";import"./vnode-c85f1a09.js";import"./index-011e0893.js";import"./useState-43a565ec.js";import"./useRefs-ca4d56b6.js";import"./_flatRest-ae97161b.js";import"./isMobile-e2e89480.js";import"./omit-55909a9d.js";import"./index-b6f0378e.js";import"./Col-6dc2da7a.js";import"./styleChecker-2eddf97d.js";import"./isPlainObject-ed4c9976.js";import"./index-7005b758.js";import"./SearchOutlined-3d6399d7.js";import"./FormItemContext-0e89b3aa.js";import"./index-08810a1f.js";import"./usePrice-bc935b83.js";import"./updateLocale-6eb93789.js";import"./useMemo-99a24173.js";import"./lodash-593efeb6.js";import"./index-8bcb6210.js";import"./Badge-a3c7a3a7.js";import"./isNumeric-3f69e2aa.js";import"./index-ad625a72.js";import"./index-1465c5c8.js";import"./index-75be736e.js";import"./DialogWrap-88ddfe3e.js";import"./pickAttrs-5cd7ef1f.js";import"./css-aae66f86.js";import"./index-3ad11dd3.js";import"./toArray-cf38ce67.js";import"./index-991e4e35.js";import"./index-f98d2511.js";import"./index-dfddf43f.js";async function Ae(r){const{TableEngineRequest:g}=await we(()=>import("./buildSupabaseQuery-ef077dbd.js"),["assets/buildSupabaseQuery-ef077dbd.js","assets/index-166b4ef1.js","assets/index-0643191e.css"]),l={...r};!l.sort&&!l.order&&(l.order="sort_order");const d=await g(l,"iran_tourism_challenges");try{if(Array.isArray(d==null?void 0:d.rows)){const v=l.page||1,y=l.limit||200,C=(v-1)*y,A=d.rows.map((U,q)=>({...U,index:C+q}));return{...d,rows:A}}}catch(v){console.log("[getIranTourismChallengeTable] normalize error:",v)}return d}async function Be(r){const g=await ye("iran_tourism_challenges",r),l=await N("iran_tourism_challenge_questions",{challenge_id:r});return{...g,questions:Array.isArray(l)?l:[]}}async function Le(r){const g=await Q("iran_tourism_challenges",{...r.challenge,updated_at:new Date().toISOString()});for(let l=0;l<r.questions.length;l++){const d=r.questions[l];await Q("iran_tourism_challenge_questions",{challenge_id:g.id,question:d.question,options:d.options,correct_answer:d.correct_answer||null,sort_order:d.sort_order??l})}return g}async function Re(r,g){await ee("iran_tourism_challenges",r,{...g.challenge,updated_at:new Date().toISOString()});const l=await N("iran_tourism_challenge_questions",{challenge_id:r});for(const d of Array.isArray(l)?l:[])await V("iran_tourism_challenge_questions",d.id);for(let d=0;d<g.questions.length;d++){const v=g.questions[d];await Q("iran_tourism_challenge_questions",{challenge_id:r,question:v.question,options:v.options,correct_answer:v.correct_answer||null,sort_order:v.sort_order??d})}return{id:r}}async function Me(r,g){const l=await ee("iran_tourism_challenges",r,{...g,updated_at:new Date().toISOString()});return Array.isArray(l)?l:[l]}async function je(r){const g=await N("iran_tourism_challenge_questions",{challenge_id:r});for(const l of Array.isArray(g)?g:[])await V("iran_tourism_challenge_questions",l.id);await V("iran_tourism_challenges",r)}const Pe=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:r=>r.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:r=>r.record.show?"نمایش":"مخفی"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:r=>$e(r.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],Fe={class:"flex justify-between items-center mb-4"},Oe=e("h2",null,"چالش ایرانگردی",-1),ze={class:"gap-2 flex justify-center"},Qe=e("span",null,"ویرایش",-1),Ve=e("span",null,"حذف",-1),Ne={class:"space-y-4 relative"},Ee={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},We=e("div",{class:"mb-1 text-sm text-gray-600"},"عنوان چالش",-1),He={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Je=e("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),Ge=e("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت نمایش",-1),Ke={class:"flex items-center gap-2 h-10"},Xe={class:"text-sm text-gray-600"},Ye={class:"flex flex-wrap justify-center gap-10 pb-2"},Ze=e("div",{class:"mb-1 text-sm text-gray-600 text-center"},"عکس چالش (صفحه لیست)",-1),et={key:0},tt=e("div",null,"آپلود تصویر",-1),at=e("div",{class:"mb-1 text-sm text-gray-600 text-center"},"عکس تبریک",-1),ot={key:0},st=e("div",null,"آپلود تصویر",-1),nt=e("div",{class:"mb-1 text-sm text-gray-600"},"متن تبریک",-1),it={class:"mt-2 flex flex-wrap items-center gap-2 text-xs text-gray-500"},rt=e("span",null,"متغیر قابل استفاده:",-1),lt=e("span",null,"تعداد افرادی که این چالش را کامل کرده‌اند",-1),ut=e("div",{class:"section-divider"},null,-1),ct={class:"pt-2"},dt=e("div",{class:"mb-2 text-sm text-gray-600 font-medium"},"سوالات چالش (چهارگزینه‌ای)",-1),mt={class:"space-y-3"},_t={class:"mb-1 text-xs text-gray-500"},pt={class:"grid grid-cols-2 gap-3"},gt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۱",-1),vt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۲",-1),ht=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۳",-1),ft=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه ۴",-1),xt=e("div",{class:"mb-1 text-xs text-gray-500"},"جواب صحیح (اختیاری — همه کاربران برنده می‌شوند)",-1),wt={class:"flex justify-end"},yt=e("span",{class:"text-[#DC2626]"},"حذف سوال",-1),bt=e("span",{class:"text-gray-500"},"+ افزودن سوال",-1),ba=be({__name:"index",setup(r){const g=Se,[l,d]=fe(),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:""}),s=k({title:"",image_url:null,congrats_image_url:null,congrats_text:"",show:!0,sort_order:0,questions:[M()]}),te=k({columns:Pe,api:Ae,defaultPageLimit:20});function E(c){return c.type.startsWith("image/")?c.size/1024/1024<5?!0:(x.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(x.error("فقط فایل‌های تصویری قابل آپلود هستند!"),!1)}async function W(c,a){const{file:n,onSuccess:m,onError:u,onProgress:w}=c,p=new FormData;p.append("file",n);const I=`${Te}/upload/machartaa-img`;C.value++,await new Promise((L,t)=>{const _=new XMLHttpRequest;_.open("POST",I);const h=qe()||localStorage.getItem("tamin_token")||localStorage.getItem("token")||"";_.setRequestHeader("Authorization",`Bearer ${h}`),_.upload.onprogress=b=>{b.lengthComputable&&(w==null||w({percent:Math.round(b.loaded/b.total*100)}))},_.onload=()=>{var b,J,G,K;if(_.status>=200&&_.status<300)try{const o=JSON.parse(_.responseText||"{}"),de=(o==null?void 0:o.full_src)||(o==null?void 0:o.url)||(o==null?void 0:o.src)||(o==null?void 0:o.path)||((b=o==null?void 0:o.data)==null?void 0:b.full_src)||((J=o==null?void 0:o.data)==null?void 0:J.url)||((G=o==null?void 0:o.data)==null?void 0:G.src)||((K=o==null?void 0:o.data)==null?void 0:K.path)||"",j=R(de),X=O(j),Y=X?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:X,response:{path:j}}]:[];a==="image"?(s.value.image_url=j||null,v.value=Y):(s.value.congrats_image_url=j||null,y.value=Y),m==null||m(o,_),x.success("تصویر با موفقیت آپلود شد!"),L()}catch(o){u==null||u(o,_),t(o)}else{const o=new Error("خطا در آپلود تصویر");u==null||u(o,_),t(o)}},_.onerror=()=>{const b=new Error("خطا در آپلود تصویر!");u==null||u(b,_),t(b)},_.onloadend=()=>{C.value=Math.max(0,C.value-1)},_.send(p)})}function ae(){s.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(){s.value.questions.push({...M(),id:s.value.questions.length+1})}function ne(c){s.value.questions.length<=1||s.value.questions.splice(c,1)}function ie(c){const a=s.value.congrats_text||"",n=a&&!/\s$/.test(a)?" ":"";s.value.congrats_text=`${a}${n}${c}`}async function re(){var n,m,u,w;if(!((n=s.value.title)!=null&&n.trim())){x.warning("عنوان چالش را وارد کنید");return}if(C.value>0){x.warning("لطفاً تا پایان آپلود تصاویر صبر کنید.");return}const c=s.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(!c.length){x.warning("حداقل یک سوال با دو گزینه وارد کنید");return}const a={challenge:{title:s.value.title.trim(),image_url:((m=s.value.image_url)==null?void 0:m.trim())||null,congrats_image_url:((u=s.value.congrats_image_url)==null?void 0:u.trim())||null,congrats_text:((w=s.value.congrats_text)==null?void 0:w.trim())||null,show:s.value.show??!0,sort_order:Number(s.value.sort_order)||0},questions:c};A.value=!0;try{q.value&&B.value?(await Re(B.value,a),x.success("چالش با موفقیت ویرایش شد!")):(await Le(a),x.success("چالش با موفقیت ایجاد شد!")),H(),await d()}catch(p){console.error(p),x.error("خطا در ذخیره چالش!")}finally{A.value=!1}}async function le(c){var a;try{const n=await Be(c.id);if(n.image_url){const m=R(n.image_url);v.value=[{uid:`image-${Date.now()}`,name:"image.jpg",status:"done",url:O(m),response:{path:m}}]}else v.value=[];if(n.congrats_image_url){const m=R(n.congrats_image_url);y.value=[{uid:`congrats-${Date.now()}`,name:"congrats.jpg",status:"done",url:O(m),response:{path:m}}]}else y.value=[];s.value={title:n.title||"",image_url:R(n.image_url)||null,congrats_image_url:R(n.congrats_image_url)||null,congrats_text:n.congrats_text||"",show:n.show??!0,sort_order:n.sort_order??0,questions:((a=n.questions)==null?void 0:a.length)>0?n.questions.map(m=>{var u,w,p,I;return{id:m.id,question:m.question||"",option1:((u=m.options)==null?void 0:u[0])||"",option2:((w=m.options)==null?void 0:w[1])||"",option3:((p=m.options)==null?void 0:p[2])||"",option4:((I=m.options)==null?void 0:I[3])||"",correct_answer:m.correct_answer||""}}):[M()]},q.value=!0,B.value=c.id,U.value=!0}catch(n){console.error(n),x.error("خطا در بارگذاری اطلاعات چالش!")}}function ue(c){const a=!c.show;Z.confirm({title:"تغییر وضعیت نمایش",content:a?`آیا مطمئن هستید که می‌خواهید چالش "${c.title}" را نمایش دهید؟`:`آیا مطمئن هستید که می‌خواهید چالش "${c.title}" را مخفی کنید؟`,okText:"بله",cancelText:"خیر",onOk:async()=>{try{await Me(c.id,{show:a}),x.success(a?"چالش نمایش داده شد!":"چالش مخفی شد!"),await d()}catch(n){console.error(n),x.error("خطا در تغییر وضعیت نمایش!")}}})}function ce(c){Z.confirm({title:"حذف چالش",content:`آیا مطمئن هستید که می‌خواهید چالش "${c.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await je(c.id),x.success("چالش با موفقیت حذف شد!"),await d()}catch(a){console.error(a),x.error("خطا در حذف چالش!")}}})}return(c,a)=>{const n=xe,m=he,u=ve,w=ge,p=pe,I=_e,L=me;return $(),D("div",null,[i(L,null,{default:f(()=>[e("div",Fe,[Oe,i(n,{type:"primary",onClick:oe},{default:f(()=>[ke("افزودن چالش")]),_:1})]),i(m,Ce(te.value,{ref:"table",onRegister:T(l)}),{action:f(({record:t})=>[e("div",ze,[i(T(z),{class:"cursor-pointer"},{title:f(()=>[e("span",null,P(t.show?"مخفی کردن":"نمایش"),1)]),default:f(()=>[i(S,{icon:t.show?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:t.show?"#F59E0B":"#16A34A",onClick:_=>ue(t)},null,8,["icon","color","onClick"])]),_:2},1024),i(T(z),{class:"cursor-pointer"},{title:f(()=>[Qe]),default:f(()=>[i(S,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:_=>le(t)},null,8,["onClick"])]),_:2},1024),i(T(z),{class:"cursor-pointer"},{title:f(()=>[Ve]),default:f(()=>[i(S,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:_=>ce(t)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),i(I,{visible:U.value,"onUpdate:visible":a[7]||(a[7]=t=>U.value=t),title:q.value?"ویرایش چالش":"افزودن چالش",onOk:re,onCancel:H,width:"80%",confirmLoading:A.value||C.value>0},{default:f(()=>[e("div",Ne,[C.value>0?($(),D("div",Ee,[i(T(De),{size:"large"})])):F("",!0),e("div",null,[We,i(u,{value:s.value.title,"onUpdate:value":a[0]||(a[0]=t=>s.value.title=t),placeholder:"عنوان چالش"},null,8,["value"])]),e("div",He,[e("div",null,[Je,i(u,{value:s.value.sort_order,"onUpdate:value":a[1]||(a[1]=t=>s.value.sort_order=t),type:"number",placeholder:"0"},null,8,["value"])]),e("div",null,[Ge,e("div",Ke,[i(w,{value:s.value.show,"onUpdate:value":a[2]||(a[2]=t=>s.value.show=t)},null,8,["value"]),e("span",Xe,P(s.value.show?"نمایش":"مخفی"),1)])])]),e("div",Ye,[e("div",null,[Ze,i(T(g),{"file-list":v.value,"onUpdate:fileList":a[3]||(a[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",et,[i(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),tt])):F("",!0)]),_:1},8,["file-list","custom-request"])]),e("div",null,[at,i(T(g),{"file-list":y.value,"onUpdate:fileList":a[4]||(a[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",ot,[i(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),st])):F("",!0)]),_:1},8,["file-list","custom-request"])])]),e("div",null,[nt,i(p,{value:s.value.congrats_text,"onUpdate:value":a[5]||(a[5]=t=>s.value.congrats_text=t),placeholder:"متن پیام تبریک این چالش — مثلاً: تا الان {completers_count} نفر این چالش را کامل کرده‌اند",rows:4},null,8,["value"]),e("div",it,[rt,e("button",{type:"button",class:"px-2 py-1 rounded border border-dashed border-gray-400 bg-gray-50 hover:bg-gray-100 font-mono text-[11px] text-gray-700",title:"کلیک برای درج در متن",onClick:a[6]||(a[6]=t=>ie("{completers_count}"))},P("{completers_count}")),lt])]),ut,e("div",ct,[dt,e("div",mt,[($(!0),D(Ie,null,Ue(s.value.questions,(t,_)=>($(),D("div",{key:_,class:"border rounded-lg p-3 space-y-3"},[e("div",null,[e("div",_t,"سوال "+P(_+1),1),i(u,{value:t.question,"onUpdate:value":h=>t.question=h,placeholder:`سوال ${_+1}`},null,8,["value","onUpdate:value","placeholder"])]),e("div",pt,[e("div",null,[gt,i(u,{value:t.option1,"onUpdate:value":h=>t.option1=h,placeholder:"گزینه ۱"},null,8,["value","onUpdate:value"])]),e("div",null,[vt,i(u,{value:t.option2,"onUpdate:value":h=>t.option2=h,placeholder:"گزینه ۲"},null,8,["value","onUpdate:value"])]),e("div",null,[ht,i(u,{value:t.option3,"onUpdate:value":h=>t.option3=h,placeholder:"گزینه ۳"},null,8,["value","onUpdate:value"])]),e("div",null,[ft,i(u,{value:t.option4,"onUpdate:value":h=>t.option4=h,placeholder:"گزینه ۴"},null,8,["value","onUpdate:value"])])]),e("div",null,[xt,i(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",wt,[i(n,{type:"text",danger:"",onClick:h=>ne(_),disabled:s.value.questions.length<=1},{default:f(()=>[i(S,{icon:"vuesax-linear:trash",color:"#DC2626"}),yt]),_:2},1032,["onClick","disabled"])])]))),128)),i(n,{type:"dashed",class:"w-full",onClick:se},{default:f(()=>[bt]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{ba as default};