2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{_ as ae}from"./BasicMainCard-235c6a8e.js";import{_ as ie}from"./BasicModal.vue_vue_type_style_index_0_lang-6b846ddc.js";import{_ as le}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-d33f0812.js";import{_ as se}from"./BasicTextArea.vue_vue_type_style_index_0_lang-0c6fb77f.js";import{_ as ne}from"./BasicInput.vue_vue_type_style_index_0_lang-c6922e3c.js";import{_ as re,u as ue}from"./useBaseTable-af0ac405.js";import{_ as ce}from"./button.vue_vue_type_style_index_0_lang-2b2ee941.js";import{g as de,u as pe,a as me,b as ve,c as _e,d as he}from"./competition-7e179a1a.js";import{t as ge}from"./useDataTime-45198684.js";import{I}from"./Icon-b552f0cb.js";import{d as fe,i as h,D as xe,x as ye,o as b,c as k,e as s,w as m,b as e,f as we,K as be,l as S,t as L,n as R,B as ke,F as Ue,q as Ce,G as _,L as Me}from"./index-ab3b0b84.js";import{e as A,g as Q}from"./convert-2ad76038.js";import{_ as $e}from"./TextPreview.vue_vue_type_script_setup_true_lang-6e277daa.js";import{M as z}from"./index-34ee3839.js";import{S as Be}from"./index-cbd716ee.js";import{U as Ie}from"./index-732bfe67.js";import{T as j}from"./isSymbol-5cc45ff5.js";import"./Grid-0eb1a61b.js";import"./index-b305a6df.js";import"./_plugin-vue_export-helper-6c5748cb.js";import"./shallowequal-39bf2166.js";import"./index-b2118e3c.js";import"./vnode-602d90c4.js";import"./index-d5e11315.js";import"./useState-7883cedd.js";import"./useRefs-3f675f69.js";import"./_flatRest-289ae805.js";import"./isMobile-e2e89480.js";import"./omit-837670e8.js";import"./index-fd8a1334.js";import"./Col-48c01651.js";import"./styleChecker-558deef9.js";import"./isPlainObject-d617fbb5.js";import"./index-adf5fd7f.js";import"./SearchOutlined-a36e5cce.js";import"./FormItemContext-548f4b58.js";import"./index-086ff91e.js";import"./usePrice-bc935b83.js";import"./updateLocale-958574f8.js";import"./useMemo-1af73168.js";import"./lodash-a8d94941.js";import"./index-b5f9a27e.js";import"./Badge-fca8f233.js";import"./isNumeric-3f69e2aa.js";import"./index-18e93846.js";import"./index-0e84975e.js";import"./index-323711b8.js";import"./DialogWrap-421034e2.js";import"./pickAttrs-1e1939a5.js";import"./css-aae66f86.js";import"./index-9bb4e5d4.js";import"./toArray-78940ccb.js";import"./index-257982d0.js";import"./textUtils-c37780ad.js";import"./index-993bd9f9.js";import"./index-75515977.js";const Se=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:f=>f.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"شرح",dataIndex:"description",key:"description",slot:"description"},{title:"سوالات",dataIndex:"questions",key:"questions",customRender:f=>"سوالات مسابقه"},{title:"وضعیت نمایش",dataIndex:"show",key:"show",type:"Boolean",filterable:!0,align:"center",customRender:f=>f.record.show?"نمایش":"مخفی"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:f=>ge(f.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],Te={class:"flex justify-between items-center mb-4"},De=e("h2",null,"مسابقات",-1),Le={class:"gap-2 flex justify-center"},Re=e("span",null,"حذف",-1),Ae=e("span",null,"ویرایش",-1),je={class:"space-y-4 relative"},Pe={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),Fe=e("div",{class:"mb-1 text-sm text-gray-600"},"شرح مسابقه",-1),Qe=e("div",{class:"mb-1 text-sm text-gray-600"},"عنوان ویدئو قرعه کشی",-1),ze=e("div",{class:"mb-1 text-sm text-gray-600"},"حداقل امتیاز شرکت در قرعه کشی",-1),Ne=e("div",{class:"mb-1 text-sm text-gray-600"},"آدرس ویدئو",-1),Oe=e("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت نمایش",-1),Ve={class:"flex items-center gap-2"},We={class:"text-sm text-gray-600"},qe={class:"flex justify-center gap-10 pb-4"},He=e("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Je={key:0},Ge=e("div",null,"آپلود تصویر",-1),Ke={key:0,class:"text-xs text-gray-500 mt-1 text-center"},Xe={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ye={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Ze=e("div",{class:"section-divider"},null,-1),et={class:"pt-4"},tt=e("div",{class:"mb-1 text-sm text-gray-600"},"سوالات مسابقه",-1),ot={class:"space-y-3"},at={class:"space-y-3"},it=e("div",{class:"mb-1 text-xs text-gray-500"},"سوال",-1),lt={class:"grid grid-cols-2 gap-3"},st=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 1",-1),nt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 2",-1),rt=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 3",-1),ut=e("div",{class:"mb-1 text-xs text-gray-500"},"گزینه 4",-1),ct=e("div",{class:"mb-1 text-xs text-gray-500"},"جواب صحیح (شماره گزینه)",-1),dt={class:"flex justify-end"},pt=e("span",{class:"text-[#DC2626]"},"حذف سوال",-1),mt=e("span",{class:"text-gray-500"},"+ افزودن سوال",-1),go=fe({__name:"index",setup(f){h([]),h(!1);const N=h(null),[O,T]=ue();xe();const x=h([]),w=h(0),g=h(0);function V(n){return n.type.startsWith("image/")?n.size/1024/1024<5?!0:(_.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(_.error("فقط فایلهای تصویری قابل آپلود هستند!"),!1)}async function W(n){const{file:t,onSuccess:i,onError:d,onProgress:r}=n,y=new FormData;y.append("file",t);const p=`${Me}/upload/machartaa-img`;g.value=0,w.value++,await new Promise(($,B)=>{const u=new XMLHttpRequest;u.open("POST",p),u.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("token")||""}`),u.upload.onprogress=o=>{if(o.lengthComputable){const v=Math.round(o.loaded/o.total*100);g.value=v,r==null||r({percent:v})}},u.onload=()=>{var o,v,c,E;if(g.value=100,u.status>=200&&u.status<300)try{const l=JSON.parse(u.responseText||"{}"),oe=(l==null?void 0:l.full_src)||(l==null?void 0:l.url)||(l==null?void 0:l.src)||(l==null?void 0:l.path)||((o=l==null?void 0:l.data)==null?void 0:o.full_src)||((v=l==null?void 0:l.data)==null?void 0:v.url)||((c=l==null?void 0:l.data)==null?void 0:c.src)||((E=l==null?void 0:l.data)==null?void 0:E.path)||"",D=A(oe),F=Q(D);a.value.image_url=D||null,x.value=F?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:F,response:{path:D}}]:[],i==null||i(l,u),_.success("تصویر با موفقیت آپلود شد!"),$()}catch(l){d==null||d(l,u),B(l)}else{const l=new Error("خطا در آپلود تصویر");d==null||d(l,u),B(l)}},u.onerror=()=>{const o=new Error("خطا در آپلود تصویر!");d==null||d(o,u),B(o)},u.onloadend=()=>{w.value=Math.max(0,w.value-1),g.value=0},u.send(y)})}function q(n){return{width:`${Math.max(0,Math.min(100,n))}%`}}const H=h({columns:Se,api:de,defaultPageLimit:20}),U=h(!1),C=h(!1),M=h(null),a=h({title:"",description:"",image_url:null,video_url:null,title_video_result:null,minimum_score:null,show:!0,questions:[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]});async function J(){}async function G(){x.value=[],a.value={title:"",description:"",image_url:null,video_url:null,title_video_result:null,minimum_score:null,show:!0,questions:[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]},C.value=!1,M.value=null,U.value=!0}function P(){U.value=!1,C.value=!1,M.value=null}async function K(){var i,d,r,y;if(!((i=a.value.title)!=null&&i.trim()))return;const n=a.value.questions.map(p=>({question:p.question,options:[p.option1,p.option2,p.option3,p.option4].filter($=>$.trim()),correct_answer:p.correct_answer})),t={match:{title:a.value.title.trim(),description:((d=a.value.description)==null?void 0:d.trim())||"",image_url:((r=a.value.image_url)==null?void 0:r.trim())||null,video_url:((y=a.value.video_url)==null?void 0:y.trim())||null,title_video_result:a.value.title_video_result?String(a.value.title_video_result).trim():null,minimum_score:a.value.minimum_score?String(a.value.minimum_score).trim():null,show:a.value.show??!0},questions:n.filter(p=>p.question.trim())};if(w.value>0){_.warning("لطفاً تا پایان آپلود ویدئوها صبر کنید.");return}try{C.value&&M.value?(await pe(M.value,t),_.success("مسابقه با موفقیت ویرایش شد!")):(await me(t),_.success("مسابقه با موفقیت ایجاد شد!")),P(),await T()}catch(p){console.error("Error saving match:",p),_.error("خطا در ذخیره مسابقه!")}}async function X(n){try{const t=await ve(n.id);if(t.image_url){const i=A(t.image_url);x.value=[{uid:`image-${Date.now()}`,name:"image.jpg",status:"done",url:Q(i),response:{path:i}}]}else x.value=[];a.value={title:t.title||"",description:t.description||"",image_url:A(t.image_url)||null,video_url:t.video_url||null,title_video_result:t.title_video_result?String(t.title_video_result):null,minimum_score:t.minimum_score?String(t.minimum_score):null,show:t.show??!0,questions:t.questions&&t.questions.length>0?t.questions.map(i=>({id:i.id,question:i.question||"",option1:i.options&&i.options[0]?i.options[0]:"",option2:i.options&&i.options[1]?i.options[1]:"",option3:i.options&&i.options[2]?i.options[2]:"",option4:i.options&&i.options[3]?i.options[3]:"",correct_answer:i.correct_answer||""})):[{id:1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""}]},C.value=!0,M.value=n.id,U.value=!0}catch(t){console.error("Error loading match data:",t),_.error("خطا در بارگذاری اطلاعات مسابقه!")}}async function Y(n){const t=!n.show;z.confirm({title:"تغییر وضعیت نمایش",content:t?`آیا مطمئن هستید که میخواهید مسابقه "${n.title}" را نمایش دهید؟`:`آیا مطمئن هستید که میخواهید مسابقه "${n.title}" را مخفی کنید؟`,okText:"بله",cancelText:"خیر",onOk:async()=>{try{await _e(n.id,{show:t}),_.success(t?"مسابقه با موفقیت نمایش داده شد!":"مسابقه با موفقیت مخفی شد!"),await T()}catch(i){console.error("Error toggling show:",i),_.error("خطا در تغییر وضعیت نمایش!")}}})}function Z(n){z.confirm({title:"حذف مسابقه",content:`آیا مطمئن هستید که میخواهید مسابقه "${n.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await he(n.id),_.success("مسابقه با موفقیت حذف شد!"),await T()}catch(t){console.error("Error deleting match:",t),_.error("خطا در حذف مسابقه!")}}})}function ee(){a.value.questions.push({id:a.value.questions.length+1,question:"",option1:"",option2:"",option3:"",option4:"",correct_answer:""})}function te(n){a.value.questions.length>1&&(a.value.questions.splice(n,1),a.value.questions.forEach((t,i)=>{t.id=i+1}))}return ye(J),(n,t)=>{const i=ce,d=re,r=ne,y=se,p=le,$=Ie,B=ie,u=ae;return b(),k("div",null,[s(u,null,{default:m(()=>[e("div",Te,[De,s(i,{type:"primary",onClick:G},{default:m(()=>[we("افزودن مسابقه")]),_:1})]),s(d,be(H.value,{ref_key:"table",ref:N,onRegister:S(O)}),{description:m(({record:o})=>[s($e,{text:o.description},null,8,["text"])]),action:m(({record:o})=>[e("div",Le,[s(S(j),{class:"cursor-pointer"},{title:m(()=>[e("span",null,L(o.show?"مخفی کردن":"نمایش"),1)]),default:m(()=>[s(I,{icon:o.show?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:o.show?"#F59E0B":"#16A34A",onClick:v=>Y(o)},null,8,["icon","color","onClick"])]),_:2},1024),s(S(j),{class:"cursor-pointer"},{title:m(()=>[Re]),default:m(()=>[s(I,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:v=>Z(o)},null,8,["onClick"])]),_:2},1024),s(S(j),{class:"cursor-pointer"},{title:m(()=>[Ae]),default:m(()=>[s(I,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:v=>X(o)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),s(B,{visible:U.value,"onUpdate:visible":t[7]||(t[7]=o=>U.value=o),title:C.value?"ویرایش مسابقه":"افزودن مسابقه",onOk:K,onCancel:P,width:"80%",confirmLoading:w.value>0},{default:m(()=>[e("div",je,[w.value>0?(b(),k("div",Pe,[s(S(Be),{size:"large"})])):R("",!0),e("div",null,[Ee,s(r,{value:a.value.title,"onUpdate:value":t[0]||(t[0]=o=>a.value.title=o),placeholder:"عنوان مسابقه"},null,8,["value"])]),e("div",null,[Fe,s(y,{value:a.value.description,"onUpdate:value":t[1]||(t[1]=o=>a.value.description=o),placeholder:"شرح مسابقه"},null,8,["value"])]),e("div",null,[Qe,s(r,{value:a.value.title_video_result,"onUpdate:value":t[2]||(t[2]=o=>a.value.title_video_result=o),placeholder:"عنوان ویدئو قرعه کشی"},null,8,["value"])]),e("div",null,[ze,s(r,{value:a.value.minimum_score,"onUpdate:value":t[3]||(t[3]=o=>a.value.minimum_score=o),placeholder:"حداقل امتیاز شرکت در قرعه کشی"},null,8,["value"])]),e("div",null,[Ne,s(r,{value:a.value.video_url,"onUpdate:value":t[4]||(t[4]=o=>a.value.video_url=o),placeholder:"آدرس URL ویدئو"},null,8,["value"])]),e("div",null,[Oe,e("div",Ve,[s(p,{value:a.value.show,"onUpdate:value":t[5]||(t[5]=o=>a.value.show=o)},null,8,["value"]),e("span",We,L(a.value.show?"نمایش":"مخفی"),1)])]),e("div",qe,[e("div",null,[He,s($,{"file-list":x.value,"onUpdate:fileList":t[6]||(t[6]=o=>x.value=o),"before-upload":V,"custom-request":W,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(()=>[x.value.length<1?(b(),k("div",Je,[s(I,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ge])):R("",!0)]),_:1},8,["file-list"]),g.value>0&&g.value<100?(b(),k("div",Ke,[e("div",Xe,[e("div",{class:"h-2 bg-blue-500 transition-all",style:ke(q(g.value))},null,4)]),e("div",Ye,L(g.value)+"%",1)])):R("",!0)])]),Ze,e("div",et,[tt,e("div",ot,[(b(!0),k(Ue,null,Ce(a.value.questions,(o,v)=>(b(),k("div",{key:v,class:"border rounded-lg p-3 space-y-3"},[e("div",at,[e("div",null,[it,s(r,{value:o.question,"onUpdate:value":c=>o.question=c,placeholder:`سوال ${v+1}`},null,8,["value","onUpdate:value","placeholder"])]),e("div",lt,[e("div",null,[st,s(r,{value:o.option1,"onUpdate:value":c=>o.option1=c,placeholder:"گزینه 1"},null,8,["value","onUpdate:value"])]),e("div",null,[nt,s(r,{value:o.option2,"onUpdate:value":c=>o.option2=c,placeholder:"گزینه 2"},null,8,["value","onUpdate:value"])]),e("div",null,[rt,s(r,{value:o.option3,"onUpdate:value":c=>o.option3=c,placeholder:"گزینه 3"},null,8,["value","onUpdate:value"])]),e("div",null,[ut,s(r,{value:o.option4,"onUpdate:value":c=>o.option4=c,placeholder:"گزینه 4"},null,8,["value","onUpdate:value"])])]),e("div",null,[ct,s(r,{value:o.correct_answer,"onUpdate:value":c=>o.correct_answer=c,placeholder:"1، 2، 3 یا 4",type:"number",min:"1",max:"4"},null,8,["value","onUpdate:value"])])]),e("div",dt,[s(i,{type:"text",danger:"",onClick:c=>te(v),disabled:a.value.questions.length<=1},{default:m(()=>[s(I,{icon:"vuesax-linear:trash",color:"#DC2626"}),pt]),_:2},1032,["onClick","disabled"])])]))),128)),s(i,{type:"dashed",onClick:ee,class:"w-full"},{default:m(()=>[mt]),_:1})])])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{go as default};
|