Files
machartaa_admin_dist/dist/assets/index-1dd6883b.js
T
2025-10-29 17:45:27 +03:30

2 lines
14 KiB
JavaScript

import{_ as O}from"./BasicMainCard-d501e407.js";import{_ as J}from"./BasicModal.vue_vue_type_style_index_0_lang-b92d1e4c.js";import{_ as Y}from"./BasicTextArea.vue_vue_type_style_index_0_lang-0454583f.js";import{_ as G}from"./BasicInput.vue_vue_type_style_index_0_lang-e909762d.js";import{_ as H}from"./BaseTable.vue_vue_type_style_index_0_lang-caaa35ca.js";import{_ as K}from"./button.vue_vue_type_style_index_0_lang-0e3a478f.js";import{a2 as X,a3 as y,d as Z,r as x,Y as ee,i as te,o as T,c as $,b as n,w as h,a as t,e as oe,a4 as ae,L as B,N as A,F as ie,S as se,a0 as g}from"./index-7312ca78.js";import{t as ne}from"./useDataTime-685454fc.js";import{I as S}from"./Icon-341017aa.js";import{u as le}from"./useBaseTable-3aeb2499.js";import{M as re}from"./index-714e1c13.js";import{S as ce}from"./index-4b522017.js";import{U as ue}from"./index-4a22df0c.js";import{T as Q}from"./index-5c48e774.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-85e1e9c5.js";import"./index-c49b31ad.js";import"./raf-cfaf51fa.js";import"./colors-27cdf508.js";import"./index-62876483.js";import"./styleChecker-07a76e62.js";import"./useState-481d8721.js";import"./Col-d713445e.js";import"./index-f1caf030.js";import"./debounce-c95867ee.js";import"./usePrefix-2a411a81.js";import"./index-ab7510c4.js";import"./SearchOutlined-2fb2431c.js";import"./EyeOutlined-c61ca85a.js";import"./usePrice-7afab779.js";import"./index-9152d0fd.js";import"./index-13fcb69c.js";import"./pickAttrs-17295ed3.js";import"./CheckOutlined-3960663d.js";import"./objectDestructuringEmpty-24e23e90.js";import"./eagerComputed-9ec39160.js";import"./index-5202258e.js";async function de(r){const{data:p,error:c}=await y.from("matchs").select("*").eq("id",r).single();if(c)throw c;const{data:u,error:l}=await y.from("questions").select("*").eq("match_id",r);if(l)throw l;return{...p,questions:u||[]}}async function me(r){console.log("addMatchWithQuestions payload:",r);const{data:p,error:c}=await y.from("matchs").insert([r.match]).select().single();if(console.log("Match insert result:",{matchData:p,matchError:c}),c)throw console.error("Match insert error:",c),c;for(const u of r.questions){const{data:l,error:f}=await y.from("questions").insert([{match_id:p.id,question:u.question,options:u.options,correct_answer:u.correct_answer}]).select().single();if(f)throw f;console.log("Question created:",l)}return p}async function pe(r,p){const{error:c}=await y.from("matchs").update(p.match).eq("id",r);if(c)throw c;const{data:u}=await y.from("questions").select("id").eq("match_id",r);if(u)for(const l of u)await y.from("questions").delete().eq("id",l.id);for(const l of p.questions){const{data:f,error:M}=await y.from("questions").insert([{match_id:r,question:l.question,options:l.options,correct_answer:l.correct_answer}]).select().single();if(M)throw M;console.log("Question updated:",f)}return{id:r}}async function _e(r){await y.from("questions").delete().eq("match_id",r);const{error:p}=await y.from("matchs").delete().eq("id",r);if(p)throw p}async function ve(r){const{TableEngineRequest:p}=await X(()=>import("./buildSupabaseQuery-fc64a104.js"),["assets/buildSupabaseQuery-fc64a104.js","assets/index-7312ca78.js","assets/index-d933e911.css"]),c={...r};!c.sort&&!c.order&&(c.order="-id");const u=await p(c,"matchs");try{if(Array.isArray(u==null?void 0:u.rows)){const l=c.page||1,f=c.limit||200,M=(l-1)*f,L=u.rows.map((w,b)=>({id:w.id,title:w.title??"",description:w.description??"",created_at:w.created_at??"",index:M+b,...w}));return{...u,rows:L}}}catch(l){console.log("[getMatchTable] normalize error:",l)}return u}const fe=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",fixed:"left",customRender:r=>r.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"شرح",dataIndex:"description",key:"description"},{title:"سوالات",dataIndex:"questions",key:"questions",customRender:r=>"سوالات مسابقه"},{title:"تاریخ ایجاد",dataIndex:"created_at",key:"created_at",customRender:r=>ne(r.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],he={class:"flex justify-between items-center mb-4"},ge=t("h2",null,"مسابقات",-1),xe={class:"gap-2 flex justify-center"},ye=t("span",null,"حذف",-1),we=t("span",null,"ویرایش",-1),be={class:"space-y-4 relative"},qe={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Ue=t("div",{class:"mb-1 text-sm text-gray-600"},"عنوان مسابقه",-1),ke=t("div",{class:"mb-1 text-sm text-gray-600"},"شرح مسابقه",-1),Me=t("div",{class:"mb-1 text-sm text-gray-600"},"عنوان ویدئو قرعه کشی",-1),Ee=t("div",{class:"mb-1 text-sm text-gray-600"},"حداقل امتیاز شرکت در قرعه کشی",-1),Ce={class:"flex justify-center gap-10 pb-4"},De=t("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Ie={key:0},Te=t("div",null,"آپلود تصویر",-1),$e=t("div",{class:"mb-1 text-sm text-gray-600"},"آدرس ویدئو",-1),Be=t("div",{class:"section-divider"},null,-1),Se={class:"pt-4"},Le=t("div",{class:"mb-1 text-sm text-gray-600"},"سوالات مسابقه",-1),Re={class:"space-y-3"},Ae={class:"space-y-3"},Qe=t("div",{class:"mb-1 text-xs text-gray-500"},"سوال",-1),je={class:"grid grid-cols-2 gap-3"},ze=t("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 1",-1),Pe=t("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 2",-1),We=t("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 3",-1),Ne=t("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 4",-1),Fe=t("div",{class:"mb-1 text-xs text-gray-500"},"جواب صحیح (شماره گزینه)",-1),Ve={class:"flex justify-end"},Oe=t("span",{class:"text-[#DC2626]"},"حذف سوال",-1),Je=t("span",{class:"text-gray-500"},"+ افزودن سوال",-1),Tt=Z({__name:"index",setup(r){x([]),x(!1);const p=x(null),[c,u]=le();ee();const l=x([]),f=x(0);function M(_){return _.type.startsWith("image/")?_.size/1024/1024<5?!0:(g.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(g.error("فقط فایل‌های تصویری قابل آپلود هستند!"),!1)}async function L(_){var m,U,v,E;const{file:e,onSuccess:s,onError:q}=_;try{f.value++;const k=new FormData;k.append("file",e);const o=await fetch("https://node.machartaa.ir/upload/machartaa-img",{method:"POST",body:k,headers:{Authorization:`Bearer ${localStorage.getItem("token")||""}`}});if(!o.ok)throw new Error("خطا در آپلود تصویر");const a=await o.json();console.log("Image upload result:",a);const d=(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)||((m=a==null?void 0:a.data)==null?void 0:m.full_src)||((U=a==null?void 0:a.data)==null?void 0:U.url)||((v=a==null?void 0:a.data)==null?void 0:v.src)||((E=a==null?void 0:a.data)==null?void 0:E.path)||"";console.log("Extracted path:",d);const I=d.startsWith("http")?d:`https://node.machartaa.ir${d}`;console.log("Full image URL:",I),i.value.image_url=I,l.value=I?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:I,response:{path:I}}]:[],s(a),g.success("تصویر با موفقیت آپلود شد!")}catch(k){console.error("خطا در آپلود تصویر:",k),q(k),g.error("خطا در آپلود تصویر!")}finally{f.value=Math.max(0,f.value-1)}}const w=x({columns:fe,api:ve,defaultPageLimit:20}),b=x(!1),C=x(!1),D=x(null),i=x({title:"",description:"",image_url:null,video_url:null,title_video_result:null,minimum_score:null,questions:[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]});async function j(){}async function z(){l.value=[],i.value={title:"",description:"",image_url:null,video_url:null,title_video_result:null,minimum_score:null,questions:[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]},C.value=!1,D.value=null,b.value=!0}function R(){b.value=!1,C.value=!1,D.value=null}async function P(){var s,q,m,U;if(!((s=i.value.title)!=null&&s.trim()))return;const _=i.value.questions.map(v=>({question:v.question,options:[v.option1,v.option2,v.option3,v.option4].filter(E=>E.trim()),correct_answer:v.correct_answer})),e={match:{title:i.value.title.trim(),description:((q=i.value.description)==null?void 0:q.trim())||"",image_url:((m=i.value.image_url)==null?void 0:m.trim())||null,video_url:((U=i.value.video_url)==null?void 0:U.trim())||null,title_video_result:i.value.title_video_result?String(i.value.title_video_result).trim():null,minimum_score:i.value.minimum_score?String(i.value.minimum_score).trim():null},questions:_.filter(v=>v.question.trim())};if(f.value>0){g.warning("لطفاً تا پایان آپلود ویدئوها صبر کنید.");return}console.log("Match payload:",e);try{C.value&&D.value?(await pe(D.value,e),g.success("مسابقه با موفقیت ویرایش شد!")):(await me(e),g.success("مسابقه با موفقیت ایجاد شد!")),R(),await u()}catch(v){console.error("Error saving match:",v),g.error("خطا در ذخیره مسابقه!")}}async function W(_){try{const e=await de(_.id);console.log("Match data loaded:",e),e.image_url?(l.value=[{uid:`image-${Date.now()}`,name:"image.jpg",status:"done",url:e.image_url,response:{path:e.image_url}}],console.log("Image file list set:",l.value)):l.value=[],i.value={title:e.title||"",description:e.description||"",image_url:e.image_url||null,video_url:e.video_url||null,title_video_result:e.title_video_result?String(e.title_video_result):null,minimum_score:e.minimum_score?String(e.minimum_score):null,questions:e.questions&&e.questions.length>0?e.questions.map((s,q)=>({id:s.id,question:s.question||"",option1:s.options&&s.options[0]?s.options[0]:"",option2:s.options&&s.options[1]?s.options[1]:"",option3:s.options&&s.options[2]?s.options[2]:"",option4:s.options&&s.options[3]?s.options[3]:"",correct_answer:s.correct_answer||""})):[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]},C.value=!0,D.value=_.id,b.value=!0}catch(e){console.error("Error loading match data:",e),g.error("خطا در بارگذاری اطلاعات مسابقه!")}}function N(_){re.confirm({title:"حذف مسابقه",content:`آیا مطمئن هستید که می‌خواهید مسابقه "${_.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await _e(_.id),g.success("مسابقه با موفقیت حذف شد!"),await u()}catch(e){console.error("Error deleting match:",e),g.error("خطا در حذف مسابقه!")}}})}function F(){i.value.questions.push({id:i.value.questions.length+1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""})}function V(_){i.value.questions.length>1&&(i.value.questions.splice(_,1),i.value.questions.forEach((e,s)=>{e.id=s+1}))}return te(j),(_,e)=>{const s=K,q=H,m=G,U=Y,v=ue,E=J,k=O;return T(),$("div",null,[n(k,null,{default:h(()=>[t("div",he,[ge,n(s,{type:"primary",onClick:z},{default:h(()=>[oe("افزودن مسابقه")]),_:1})]),n(q,ae(w.value,{ref_key:"table",ref:p,onRegister:B(c)}),{action:h(({record:o})=>[t("div",xe,[n(B(Q),{class:"cursor-pointer"},{title:h(()=>[ye]),default:h(()=>[n(S,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:a=>N(o)},null,8,["onClick"])]),_:2},1024),n(B(Q),{class:"cursor-pointer"},{title:h(()=>[we]),default:h(()=>[n(S,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:a=>W(o)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(E,{visible:b.value,"onUpdate:visible":e[6]||(e[6]=o=>b.value=o),title:C.value?"ویرایش مسابقه":"افزودن مسابقه",onOk:P,onCancel:R,width:"80%",confirmLoading:f.value>0},{default:h(()=>[t("div",be,[f.value>0?(T(),$("div",qe,[n(B(ce),{size:"large"})])):A("",!0),t("div",null,[Ue,n(m,{value:i.value.title,"onUpdate:value":e[0]||(e[0]=o=>i.value.title=o),placeholder:"عنوان مسابقه"},null,8,["value"])]),t("div",null,[ke,n(U,{value:i.value.description,"onUpdate:value":e[1]||(e[1]=o=>i.value.description=o),placeholder:"شرح مسابقه"},null,8,["value"])]),t("div",null,[Me,n(m,{value:i.value.title_video_result,"onUpdate:value":e[2]||(e[2]=o=>i.value.title_video_result=o),placeholder:"عنوان ویدئو قرعه کشی"},null,8,["value"])]),t("div",null,[Ee,n(m,{value:i.value.minimum_score,"onUpdate:value":e[3]||(e[3]=o=>i.value.minimum_score=o),placeholder:"حداقل امتیاز شرکت در قرعه کشی"},null,8,["value"])]),t("div",Ce,[t("div",null,[De,n(v,{"file-list":l.value,"onUpdate:fileList":e[4]||(e[4]=o=>l.value=o),"before-upload":M,"custom-request":L,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:h(()=>[l.value.length<1?(T(),$("div",Ie,[n(S,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Te])):A("",!0)]),_:1},8,["file-list"])])]),t("div",null,[$e,n(m,{value:i.value.video_url,"onUpdate:value":e[5]||(e[5]=o=>i.value.video_url=o),placeholder:"آدرس URL ویدئو"},null,8,["value"])]),Be,t("div",Se,[Le,t("div",Re,[(T(!0),$(ie,null,se(i.value.questions,(o,a)=>(T(),$("div",{key:a,class:"border rounded-lg p-3 space-y-3"},[t("div",Ae,[t("div",null,[Qe,n(m,{value:o.question,"onUpdate:value":d=>o.question=d,placeholder:`سوال ${a+1}`},null,8,["value","onUpdate:value","placeholder"])]),t("div",je,[t("div",null,[ze,n(m,{value:o.option1,"onUpdate:value":d=>o.option1=d,placeholder:"گزینه 1"},null,8,["value","onUpdate:value"])]),t("div",null,[Pe,n(m,{value:o.option2,"onUpdate:value":d=>o.option2=d,placeholder:"گزینه 2"},null,8,["value","onUpdate:value"])]),t("div",null,[We,n(m,{value:o.option3,"onUpdate:value":d=>o.option3=d,placeholder:"گزینه 3"},null,8,["value","onUpdate:value"])]),t("div",null,[Ne,n(m,{value:o.option4,"onUpdate:value":d=>o.option4=d,placeholder:"گزینه 4"},null,8,["value","onUpdate:value"])])]),t("div",null,[Fe,n(m,{value:o.correct_answer,"onUpdate:value":d=>o.correct_answer=d,placeholder:"1، 2، 3 یا 4",type:"number",min:"1",max:"4"},null,8,["value","onUpdate:value"])])]),t("div",Ve,[n(s,{type:"text",danger:"",onClick:d=>V(a),disabled:i.value.questions.length<=1},{default:h(()=>[n(S,{icon:"vuesax-linear:trash",color:"#DC2626"}),Oe]),_:2},1032,["onClick","disabled"])])]))),128)),n(s,{type:"dashed",onClick:F,class:"w-full"},{default:h(()=>[Je]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{Tt as default};