import{g as M,p as O,Q as Z,S as Ke,f as x,j as U,aq as Ce,k as u,T as N,X as he,ai as xe,a8 as Se,ar as pe,r as X,a9 as _e,H as _,W as Pe,ad as Ie,as as $e,at as Qe,$ as Y,a2 as Ze,au as et,av as tt,aw as De,a as st,aj as nt,ax as lt,s as ue,ay as Ae,az as ot,m as at,n as Be,x as Ee,aA as it,aB as Re,aC as rt,aD as ut,aE as dt,a4 as ct,aF as ft,aG as ht,l as de,aH as vt,u as yt,t as H,R as mt,aI as kt,aJ as pt,aK as bt,_ as gt,A as J,D as r,E as b,J as g,B as p,K as h,F as d,G as I,I as L}from"./index-Pb2Eku_S.js";import{g as oe,e as q,V as ae,a as ie,f as wt,b as re,i as Tt,d as Vt}from"./VRow-BZ6tyGl5.js";import{V as be}from"./VAlert-Cb6lf2eB.js";import{u as Ct}from"./ssrBoot-rqF4uojT.js";import{a as We,h as ge,m as xt,V as St}from"./VList-DsFWkkr2.js";import{u as Ne,c as $,m as Fe,d as we,e as _t,f as Pt,a as It,b as Dt}from"./VTextarea-B5Q6BRmm.js";import{V as Te,m as At,a as Ve,b as Bt}from"./VSwitch-DiJ-q12v.js";const Et=O({...Fe(),...he(At(),["inline"])},"VCheckbox"),Rt=M()({name:"VCheckbox",inheritAttrs:!1,props:Et(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,s){let{attrs:a,slots:o}=s;const n=Z(e,"modelValue"),{isFocused:c,focus:t,blur:l}=Ne(e),i=Ke(),v=x(()=>e.id||`checkbox-${i}`);return U(()=>{const[T,f]=Ce(a),y=$.filterProps(e),m=Te.filterProps(e);return u($,N({class:["v-checkbox",e.class]},T,y,{modelValue:n.value,"onUpdate:modelValue":k=>n.value=k,id:v.value,focused:c.value,style:e.style}),{...o,default:k=>{let{id:C,messagesId:D,isDisabled:P,isReadonly:B,isValid:R}=k;return u(Te,N(m,{id:C.value,"aria-describedby":D.value,disabled:P.value,readonly:B.value},f,{error:R.value===!1,modelValue:n.value,"onUpdate:modelValue":V=>n.value=V,onFocus:t,onBlur:l}),o)}})}),{}}}),Wt=O({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:e=>typeof e=="boolean"||[1e3,1024].includes(Number(e))},...Fe({prependIcon:"$file"}),modelValue:{type:[Array,Object],default:e=>e.multiple?[]:null,validator:e=>Se(e).every(s=>s!=null&&typeof s=="object")},...Pt({clearable:!0})},"VFileInput"),Nt=M()({name:"VFileInput",inheritAttrs:!1,props:Wt(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,s){let{attrs:a,emit:o,slots:n}=s;const{t:c}=xe(),t=Z(e,"modelValue",e.modelValue,w=>Se(w),w=>!e.multiple&&Array.isArray(w)?w[0]:w),{isFocused:l,focus:i,blur:v}=Ne(e),T=x(()=>typeof e.showSize!="boolean"?e.showSize:void 0),f=x(()=>(t.value??[]).reduce((w,A)=>{let{size:z=0}=A;return w+z},0)),y=x(()=>pe(f.value,T.value)),m=x(()=>(t.value??[]).map(w=>{const{name:A="",size:z=0}=w;return e.showSize?`${A} (${pe(z,T.value)})`:A})),k=x(()=>{var A;const w=((A=t.value)==null?void 0:A.length)??0;return e.showSize?c(e.counterSizeString,w,y.value):c(e.counterString,w)}),C=X(),D=X(),P=X(),B=x(()=>l.value||e.active),R=x(()=>["plain","underlined"].includes(e.variant));function V(){var w;P.value!==document.activeElement&&((w=P.value)==null||w.focus()),l.value||i()}function S(w){var A;(A=P.value)==null||A.click()}function E(w){o("mousedown:control",w)}function W(w){var A;(A=P.value)==null||A.click(),o("click:control",w)}function ee(w){w.stopPropagation(),V(),Ie(()=>{t.value=[],$e(e["onClick:clear"],w)})}function te(w){w.preventDefault()}function F(w){w.preventDefault(),w.dataTransfer&&(t.value=[...w.dataTransfer.files??[]])}return _e(t,w=>{(!Array.isArray(w)||!w.length)&&P.value&&(P.value.value="")}),U(()=>{const w=!!(n.counter||e.counter),A=!!(w||n.details),[z,se]=Ce(a),{modelValue:ne,...ze}=$.filterProps(e),He=we.filterProps(e);return u($,N({ref:C,modelValue:e.multiple?t.value:t.value[0],class:["v-file-input",{"v-file-input--chips":!!e.chips,"v-file-input--hide":e.hideInput,"v-input--plain-underlined":R.value},e.class],style:e.style,"onClick:prepend":S},z,ze,{centerAffix:!R.value,focused:l.value}),{...n,default:le=>{let{id:K,isDisabled:G,isDirty:ye,isReadonly:me,isValid:Xe}=le;return u(we,N({ref:D,"prepend-icon":e.prependIcon,onMousedown:E,onClick:W,"onClick:clear":ee,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},He,{id:K.value,active:B.value||ye.value,dirty:ye.value||e.dirty,disabled:G.value,focused:l.value,error:Xe.value===!1,onDragover:te,onDrop:F}),{...n,default:Ye=>{var ke;let{props:{class:Ge,...Je}}=Ye;return u(_,null,[u("input",N({ref:P,type:"file",readonly:me.value,disabled:G.value,multiple:e.multiple,name:e.name,onClick:j=>{j.stopPropagation(),me.value&&j.preventDefault(),V()},onChange:j=>{if(!j.target)return;const qe=j.target;t.value=[...qe.files??[]]},onFocus:V,onBlur:v},Je,se),null),u("div",{class:Ge},[!!((ke=t.value)!=null&&ke.length)&&!e.hideInput&&(n.selection?n.selection({fileNames:m.value,totalBytes:f.value,totalBytesReadable:y.value}):e.chips?m.value.map(j=>u(We,{key:j,size:"small",text:j},null)):m.value.join(", "))])])}})},details:A?le=>{var K,G;return u(_,null,[(K=n.details)==null?void 0:K.call(n,le),w&&u(_,null,[u("span",null,null),u(_t,{active:!!((G=t.value)!=null&&G.length),value:k.value,disabled:e.disabled},n.counter)])])}:void 0})}),Pe({},C,D,P)}}),ve=Symbol.for("vuetify:v-tabs"),Ft=O({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...he(Ze({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),ce=M()({name:"VTab",props:Ft(),setup(e,s){let{slots:a,attrs:o}=s;const{textColorClasses:n,textColorStyles:c}=Qe(e,"sliderColor"),t=X(),l=X(),i=x(()=>e.direction==="horizontal"),v=x(()=>{var f,y;return((y=(f=t.value)==null?void 0:f.group)==null?void 0:y.isSelected.value)??!1});function T(f){var m,k;let{value:y}=f;if(y){const C=(k=(m=t.value)==null?void 0:m.$el.parentElement)==null?void 0:k.querySelector(".v-tab--selected .v-tab__slider"),D=l.value;if(!C||!D)return;const P=getComputedStyle(C).color,B=C.getBoundingClientRect(),R=D.getBoundingClientRect(),V=i.value?"x":"y",S=i.value?"X":"Y",E=i.value?"right":"bottom",W=i.value?"width":"height",ee=B[V],te=R[V],F=ee>te?B[E]-R[E]:B[V]-R[V],w=Math.sign(F)>0?i.value?"right":"bottom":Math.sign(F)<0?i.value?"left":"top":"center",z=(Math.abs(F)+(Math.sign(F)<0?B[W]:R[W]))/Math.max(B[W],R[W])||0,se=B[W]/R[W]||0,ne=1.5;et(D,{backgroundColor:[P,"currentcolor"],transform:[`translate${S}(${F}px) scale${S}(${se})`,`translate${S}(${F/ne}px) scale${S}(${(z-1)/ne+1})`,"none"],transformOrigin:Array(3).fill(w)},{duration:225,easing:tt})}}return U(()=>{const f=Y.filterProps(e);return u(Y,N({symbol:ve,ref:t,class:["v-tab",e.class],style:e.style,tabindex:v.value?0:-1,role:"tab","aria-selected":String(v.value),active:!1},f,o,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":T}),{...a,default:()=>{var y;return u(_,null,[((y=a.default)==null?void 0:y.call(a))??e.text,!e.hideSlider&&u("div",{ref:l,class:["v-tab__slider",n.value],style:c.value},null)])}})}),Pe({},t)}}),jt=e=>{const{touchstartX:s,touchendX:a,touchstartY:o,touchendY:n}=e,c=.5,t=16;e.offsetX=a-s,e.offsetY=n-o,Math.abs(e.offsetY)s+t&&e.right(e)),Math.abs(e.offsetX)o+t&&e.down(e))};function Lt(e,s){var o;const a=e.changedTouches[0];s.touchstartX=a.clientX,s.touchstartY=a.clientY,(o=s.start)==null||o.call(s,{originalEvent:e,...s})}function Mt(e,s){var o;const a=e.changedTouches[0];s.touchendX=a.clientX,s.touchendY=a.clientY,(o=s.end)==null||o.call(s,{originalEvent:e,...s}),jt(s)}function Ot(e,s){var o;const a=e.changedTouches[0];s.touchmoveX=a.clientX,s.touchmoveY=a.clientY,(o=s.move)==null||o.call(s,{originalEvent:e,...s})}function Ut(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const s={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:a=>Lt(a,s),touchend:a=>Mt(a,s),touchmove:a=>Ot(a,s)}}function zt(e,s){var l;const a=s.value,o=a!=null&&a.parent?e.parentElement:e,n=(a==null?void 0:a.options)??{passive:!0},c=(l=s.instance)==null?void 0:l.$.uid;if(!o||!c)return;const t=Ut(s.value);o._touchHandlers=o._touchHandlers??Object.create(null),o._touchHandlers[c]=t,De(t).forEach(i=>{o.addEventListener(i,t[i],n)})}function Ht(e,s){var c,t;const a=(c=s.value)!=null&&c.parent?e.parentElement:e,o=(t=s.instance)==null?void 0:t.$.uid;if(!(a!=null&&a._touchHandlers)||!o)return;const n=a._touchHandlers[o];De(n).forEach(l=>{a.removeEventListener(l,n[l])}),delete a._touchHandlers[o]}const je={mounted:zt,unmounted:Ht},Le=Symbol.for("vuetify:v-window"),Me=Symbol.for("vuetify:v-window-group"),Oe=O({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},...Ee(),...Be(),...at()},"VWindow"),fe=M()({name:"VWindow",directives:{Touch:je},props:Oe(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:a}=s;const{themeClasses:o}=st(e),{isRtl:n}=nt(),{t:c}=xe(),t=lt(e,Me),l=X(),i=x(()=>n.value?!e.reverse:e.reverse),v=ue(!1),T=x(()=>{const V=e.direction==="vertical"?"y":"x",E=(i.value?!v.value:v.value)?"-reverse":"";return`v-window-${V}${E}-transition`}),f=ue(0),y=X(void 0),m=x(()=>t.items.value.findIndex(V=>t.selected.value.includes(V.id)));_e(m,(V,S)=>{const E=t.items.value.length,W=E-1;E<=2?v.value=Ve.continuous||m.value!==0),C=x(()=>e.continuous||m.value!==t.items.value.length-1);function D(){k.value&&t.prev()}function P(){C.value&&t.next()}const B=x(()=>{const V=[],S={icon:n.value?e.nextIcon:e.prevIcon,class:`v-window__${i.value?"right":"left"}`,onClick:t.prev,"aria-label":c("$vuetify.carousel.prev")};V.push(k.value?a.prev?a.prev({props:S}):u(Y,S,null):u("div",null,null));const E={icon:n.value?e.prevIcon:e.nextIcon,class:`v-window__${i.value?"left":"right"}`,onClick:t.next,"aria-label":c("$vuetify.carousel.next")};return V.push(C.value?a.next?a.next({props:E}):u(Y,E,null):u("div",null,null)),V}),R=x(()=>e.touch===!1?e.touch:{...{left:()=>{i.value?D():P()},right:()=>{i.value?P():D()},start:S=>{let{originalEvent:E}=S;E.stopPropagation()}},...e.touch===!0?{}:e.touch});return U(()=>Ae(u(e.tag,{ref:l,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},o.value,e.class],style:e.style},{default:()=>{var V,S;return[u("div",{class:"v-window__container",style:{height:y.value}},[(V=a.default)==null?void 0:V.call(a,{group:t}),e.showArrows!==!1&&u("div",{class:"v-window__controls"},[B.value])]),(S=a.additional)==null?void 0:S.call(a,{group:t})]}}),[[ot("touch"),R.value]])),{group:t}}}),Xt=O({...he(Oe(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),Yt=M()({name:"VTabsWindow",props:Xt(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:a}=s;const o=Re(ve,null),n=Z(e,"modelValue"),c=x({get(){var t;return n.value!=null||!o?n.value:(t=o.items.value.find(l=>o.selected.value.includes(l.id)))==null?void 0:t.value},set(t){n.value=t}});return U(()=>{const t=fe.filterProps(e);return u(fe,N({_as:"VTabsWindow"},t,{modelValue:c.value,"onUpdate:modelValue":l=>c.value=l,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),a)}),{}}}),Ue=O({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...Ee(),...ht(),...ft()},"VWindowItem"),Q=M()({name:"VWindowItem",directives:{Touch:je},props:Ue(),emits:{"group:selected":e=>!0},setup(e,s){let{slots:a}=s;const o=Re(Le),n=rt(e,Me),{isBooted:c}=Ct();if(!o||!n)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const t=ue(!1),l=x(()=>c.value&&(o.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function i(){!t.value||!o||(t.value=!1,o.transitionCount.value>0&&(o.transitionCount.value-=1,o.transitionCount.value===0&&(o.transitionHeight.value=void 0)))}function v(){var k;t.value||!o||(t.value=!0,o.transitionCount.value===0&&(o.transitionHeight.value=de((k=o.rootRef.value)==null?void 0:k.clientHeight)),o.transitionCount.value+=1)}function T(){i()}function f(k){t.value&&Ie(()=>{!l.value||!t.value||!o||(o.transitionHeight.value=de(k.clientHeight))})}const y=x(()=>{const k=o.isReversed.value?e.reverseTransition:e.transition;return l.value?{name:typeof k!="string"?o.transition.value:k,onBeforeEnter:v,onAfterEnter:i,onEnterCancelled:T,onBeforeLeave:v,onAfterLeave:i,onLeaveCancelled:T,onEnter:f}:!1}),{hasContent:m}=ut(e,n.isSelected);return U(()=>u(ct,{transition:y.value,disabled:!c.value},{default:()=>{var k;return[Ae(u("div",{class:["v-window-item",n.selectedClass.value,e.class],style:e.style},[m.value&&((k=a.default)==null?void 0:k.call(a))]),[[dt,n.isSelected.value]])]}})),{groupItem:n}}}),Gt=O({...Ue()},"VTabsWindowItem"),Jt=M()({name:"VTabsWindowItem",props:Gt(),setup(e,s){let{slots:a}=s;return U(()=>{const o=Q.filterProps(e);return u(Q,N({_as:"VTabsWindowItem"},o,{class:["v-tabs-window-item",e.class],style:e.style}),a)}),{}}});function qt(e){return e?e.map(s=>bt(s)?s:{text:s,value:s}):[]}const Kt=O({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...xt({mandatory:"force",selectedClass:"v-tab-item--selected"}),...pt(),...Be()},"VTabs"),$t=M()({name:"VTabs",props:Kt(),emits:{"update:modelValue":e=>!0},setup(e,s){let{attrs:a,slots:o}=s;const n=Z(e,"modelValue"),c=x(()=>qt(e.items)),{densityClasses:t}=vt(e),{backgroundColorClasses:l,backgroundColorStyles:i}=yt(H(e,"bgColor")),{scopeId:v}=mt();return kt({VTab:{color:H(e,"color"),direction:H(e,"direction"),stacked:H(e,"stacked"),fixed:H(e,"fixedTabs"),sliderColor:H(e,"sliderColor"),hideSlider:H(e,"hideSlider")}}),U(()=>{const T=ge.filterProps(e),f=!!(o.window||e.items.length>0);return u(_,null,[u(ge,N(T,{modelValue:n.value,"onUpdate:modelValue":y=>n.value=y,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},t.value,l.value,e.class],style:[{"--v-tabs-height":de(e.height)},i.value,e.style],role:"tablist",symbol:ve},v,a),{default:()=>{var y;return[((y=o.default)==null?void 0:y.call(o))??c.value.map(m=>{var k;return((k=o.tab)==null?void 0:k.call(o,{item:m}))??u(ce,N(m,{key:m.text,value:m.value}),{default:o[`tab.${m.value}`]?()=>{var C;return(C=o[`tab.${m.value}`])==null?void 0:C.call(o,{item:m})}:void 0})})]}}),f&&u(Yt,N({modelValue:n.value,"onUpdate:modelValue":y=>n.value=y,key:"tabs-window"},v),{default:()=>{var y;return[c.value.map(m=>{var k;return((k=o.item)==null?void 0:k.call(o,{item:m}))??u(Jt,{value:m.value},{default:()=>{var C;return(C=o[`item.${m.value}`])==null?void 0:C.call(o,{item:m})}})}),(y=o.window)==null?void 0:y.call(o)]}})])}),{}}}),Qt={name:"Cses2Wakeup",data(){return{activeTab:"text",file:null,jsonText:"",loading:!1,error:"",success:"",processedData:null,selectedRows:[],selectedPeriodIds:[],exportPeriods:[],selectedSchedules:{},settings:{hideIndoorLocation:!1,hideTeacherName:!1,totalWeeks:30},courseColors:{语文:"red",数学:"blue",英语:"green",物理:"purple",化学:"orange",生物:"teal",历史:"brown",地理:"indigo",政治:"pink",体育:"cyan",自习:"grey",早读:"amber",班会:"deep-purple",听力:"light-blue",答疑:"lime",信息技术:"light-green"},tableHeaders:[{title:"",key:"data-table-select"},{title:"节次",key:"period"},{title:"周一",key:"1"},{title:"周二",key:"2"},{title:"周三",key:"3"},{title:"周四",key:"4"},{title:"周五",key:"5"},{title:"周六",key:"6"},{title:"周日",key:"7"}]}},methods:{handleFileChange(){this.error="",this.success="",this.processedData=null,this.jsonText="",this.selectedRows=[],this.selectedPeriodIds=[],this.exportPeriods=[],this.selectedSchedules={}},handleTextChange(){this.error="",this.success="",this.processedData=null,this.file=null,this.selectedRows=[],this.selectedPeriodIds=[],this.exportPeriods=[],this.selectedSchedules={}},async processInput(){if(!this.file&&!this.jsonText){this.error="请选择文件或粘贴JSON文本";return}this.loading=!0,this.error="",this.success="";try{let e;if(this.activeTab==="file"){const a=await this.file.text();e=new Function("return "+a)().default.data}else try{e=JSON.parse(this.jsonText)}catch{throw new Error("JSON格式不正确,请检查输入")}e.schedules&&(e.schedules=this.assignUniqueIds(e.schedules)),this.selectedSchedules={},e.schedules&&e.schedules.forEach(a=>{this.selectedSchedules[a.uuid]=!1});const s=this.processScheduleData(e);this.processedData={...this.processedData,tableData:s.tableData,schedules:e.schedules,processedData:e},this.success="数据处理成功!"}catch(e){this.error="数据处理失败:"+e.message,console.error(e)}finally{this.loading=!1}},downloadCSV(){var t;if(!((t=this.processedData)!=null&&t.tableData)){this.error="没有可下载的数据";return}let e=`课程名称,星期,开始节数,结束节数,老师,地点,周数 `;if(this.exportPeriods.length===0){this.error="请至少选择一节要导出的课";return}const s=this.processedData.tableData.filter(l=>this.exportPeriods.includes(l.period));s.sort((l,i)=>l.period-i.period);let a=0;s.forEach((l,i)=>{for(let v=1;v<=7;v++){const T=l[v];if(Array.isArray(T))T.forEach(f=>{if(f&&f.name){a++;const y=this.settings.hideIndoorLocation&&f.location==="教室"?"":f.location||"",m=this.settings.hideTeacherName?"":f.teacher||"",k=f.weekType?`1-${this.settings.totalWeeks}${f.weekType}`:`1-${this.settings.totalWeeks}`;e+=`${f.name},${v},${l.period},${l.period},${m},${y},${k} `}});else if(T&&T.name){a++;const f=this.settings.hideIndoorLocation&&T.location==="教室"?"":T.location||"",y=this.settings.hideTeacherName?"":T.teacher||"",m=T.weekType?`1-${this.settings.totalWeeks}${T.weekType}`:`1-${this.settings.totalWeeks}`;e+=`${T.name},${v},${l.period},${l.period},${y},${f},${m} `}}});const o="\uFEFF",n=new Blob([o+e],{type:"text/csv;charset=utf-8"}),c=document.createElement("a");c.href=URL.createObjectURL(n),c.download=`course_schedule_${a}课时.csv`,c.click(),URL.revokeObjectURL(c.href),this.success=`导出成功!共计 ${a} 课时`},getCourseColor(e){return this.courseColors[e]||"grey"},updateProcessedData(){if(!this.processedData)return;const e=this.processedData.processedData,s=this.processScheduleData(e);this.processedData={...this.processedData,tableData:s.tableData}},updateSelectedPeriods(e){this.selectedPeriodIds=[],e&&e.length>0&&(this.selectedPeriodIds=[...new Set(e.filter(s=>s&&typeof s.period=="number").map(s=>s.period))]),this.exportPeriods=[...this.selectedPeriodIds]},toggleExportPeriod(e){const s=this.exportPeriods.indexOf(e);s===-1?this.exportPeriods.push(e):this.exportPeriods.splice(s,1)},isExportPeriod(e){return this.exportPeriods.includes(e)},processScheduleData(e){if(e.schedules&&Array.isArray(e.schedules))return this.processNewFormatData(e);if(e.Subjects&&e.TimeLayouts)return this.processOldFormatData(e);throw new Error("数据格式不正确")},processNewFormatData(e){const{schedules:s,subjects:a}=e,o=[];let n=12;s.forEach(t=>{t.classes&&t.classes.length>n&&(n=t.classes.length)});for(let t=1;t<=n;t++)o.push({period:t,1:null,2:null,3:null,4:null,5:null,6:null,7:null});this.selectedRows=[...o],this.selectedPeriodIds=o.map(t=>t.period),this.exportPeriods=[...this.selectedPeriodIds];const c=s.filter(t=>this.selectedSchedules[t.uuid]===!0);return c.length===0?{tableData:o,processedData:e}:(c.forEach(t=>{const l=String(t.enable_day);if(!l||l<1||l>7)return;let i="";t.weeks==="odd"?i="单":t.weeks==="even"&&(i="双"),t.classes.forEach((v,T)=>{if(!v.subject)return;const f=T+1;if(f>n)return;let y="";if(a&&Array.isArray(a)){const C=a.find(D=>D.name===v.subject);C&&(y=C.teacher||"")}const m={name:v.subject,teacher:y,location:"",period:f,startTime:v.start_time,endTime:v.end_time,weekday:t.name,weekType:i},k=o[f-1][l];k?i&&k.weekType&&i!==k.weekType&&(Array.isArray(o[f-1][l])||(o[f-1][l]=[k]),o[f-1][l].push(m)):o[f-1][l]=m})}),{tableData:o,processedData:e})},processOldFormatData(e){if(!e||!e.Subjects||!e.TimeLayouts)throw new Error("数据格式不正确");const s=e.Subjects,a=e.TimeLayouts,o=e.ClassPlans||{},n=[];let c=100;for(const l in a){const i=a[l];let v=0;i.Layouts.forEach(T=>{T.TimeType===0&&v++}),c=Math.max(c,v)}for(let l=1;l<=c;l++)n.push({period:l,1:null,2:null,3:null,4:null,5:null,6:null,7:null});this.selectedRows=[...n],this.selectedPeriodIds=n.map(l=>l.period),this.exportPeriods=[...this.selectedPeriodIds];const t={};for(const l in o){const i=o[l];i.TimeLayoutId&&(t[i.TimeLayoutId]=i)}for(const l in a){const i=a[l];let v=i.Name,T="",f="";const y=t[l];if(v.startsWith("Odd_")?(T="单",v=v.replace("Odd_","")):v.startsWith("Even_")&&(T="双",v=v.replace("Even_","")),y&&y.TimeRule){const k=y.TimeRule.WeekDay;f=k===0?"7":String(k),y.TimeRule.WeekCountDiv&&y.TimeRule.WeekCountDivTotal&&(y.TimeRule.WeekCountDiv===1&&y.TimeRule.WeekCountDivTotal===2?T="单":y.TimeRule.WeekCountDiv===2&&y.TimeRule.WeekCountDivTotal===2&&(T="双"))}else if(f=this.weekdayMap[v],!f)continue;let m=0;i.Layouts.forEach(k=>{const C=k.DefaultClassId;if(s[C]&&k.TimeType===0){const D=s[C];m++;const P={name:D.Name,teacher:D.TeacherName||"",location:D.IsOutDoor?"户外":"教室",period:m,startTime:k.StartSecond.substr(11,5),endTime:k.EndSecond.substr(11,5),weekday:v,weekType:T};if(m<=c&&f){const B=n[m-1][f];B&&T?B.weekType!==T&&(Array.isArray(n[m-1][f])||(n[m-1][f]=[B]),n[m-1][f].push(P)):n[m-1][f]=P}}})}return{tableData:n,processedData:e}},getCourseByDayAndPeriod(e,s){var a,o;return(a=this.processedData)!=null&&a.periodCourses&&((o=this.processedData.periodCourses[s])==null?void 0:o[e])||null},toggleScheduleSelection(e){var c;if(!e||!e.uuid)return;const s=!!this.selectedSchedules[e.uuid],a={...this.selectedSchedules};if(s){a[e.uuid]=!1,this.selectedSchedules=a,this.updateProcessedData();return}const o=e.enable_day,n=e.weeks;(c=this.processedData)!=null&&c.schedules&&this.processedData.schedules.forEach(t=>{if(t.uuid===e.uuid||t.enable_day!==o)return;const l=t.weeks;let i=!1;n==="odd"&&l==="even"||n==="even"&&l==="odd"?i=!1:(n==="all"||l==="all"||n===l)&&(i=!0),i&&a[t.uuid]&&(a[t.uuid]=!1)}),a[e.uuid]=!0,this.selectedSchedules=a,this.updateProcessedData()},assignUniqueIds(e){if(!e||!Array.isArray(e))return e;const s={};e.forEach(o=>{const n=o.enable_day,c=o.weeks||"all",t=`${n}_${c}`;s[t]||(s[t]=[]),s[t].push(o)});const a=[];return Object.values(s).forEach(o=>{o.forEach((n,c)=>{const t={...n},l=n.enable_day,i=n.weeks||"all";t.uuid=`schedule_${l}_${i}_${c}_${Date.now()}`,a.push(t)})}),a}},computed:{weekdayMap(){return{周一:"1",周二:"2",周三:"3",周四:"4",周五:"5",周六:"6",周日:"7",Monday:"1",Tuesday:"2",Wednesday:"3",Thursday:"4",Friday:"5",Saturday:"6",Sunday:"7"}},maxPeriods(){if(!this.processedData)return[];let e=0;for(const s in this.processedData.statistics){const a=this.processedData.statistics[s].courses;a.length>0&&(e=Math.max(e,...a.map(o=>o.period)))}return Array.from({length:e},(s,a)=>a+1)}}},Zt={key:0},es={key:0},ts={class:"d-flex flex-wrap"},ss={key:0,class:"ml-1"},ns={key:0,class:"course-cell"},ls={key:0},os={key:1,class:"week-type"},as={key:0},is={key:1,class:"week-type"},rs={key:0,class:"course-cell"},us={key:0},ds={key:1,class:"week-type"},cs={key:0},fs={key:1,class:"week-type"},hs={key:0,class:"course-cell"},vs={key:0},ys={key:1,class:"week-type"},ms={key:0},ks={key:1,class:"week-type"},ps={key:0,class:"course-cell"},bs={key:0},gs={key:1,class:"week-type"},ws={key:0},Ts={key:1,class:"week-type"},Vs={key:0,class:"course-cell"},Cs={key:0},xs={key:1,class:"week-type"},Ss={key:0},_s={key:1,class:"week-type"},Ps={key:0,class:"course-cell"},Is={key:0},Ds={key:1,class:"week-type"},As={key:0},Bs={key:1,class:"week-type"},Es={key:0,class:"course-cell"},Rs={key:0},Ws={key:1,class:"week-type"},Ns={key:0},Fs={key:1,class:"week-type"};function js(e,s,a,o,n,c){return r(),J(Vt,{class:"fill-height"},{default:b(()=>[u(oe,null,{default:b(()=>[u(q,{cols:"12"},{default:b(()=>[u(ae,{class:"elevation-12",border:""},{default:b(()=>[u(ie,null,{default:b(()=>s[11]||(s[11]=[g(" 课程表转换工具 ")])),_:1}),u(wt,null,{default:b(()=>s[12]||(s[12]=[g(" 请在CSES中将数据格式改为“通用CSES(JSON)” ")])),_:1}),u(re,null,{default:b(()=>[n.error?(r(),J(be,{key:0,type:"error",class:"mb-4",closable:"","onClick:close":s[0]||(s[0]=t=>n.error="")},{default:b(()=>[g(h(n.error),1)]),_:1})):p("",!0),n.success?(r(),J(be,{key:1,type:"success",class:"mb-4",closable:"","onClick:close":s[1]||(s[1]=t=>n.success="")},{default:b(()=>[g(h(n.success),1)]),_:1})):p("",!0),u($t,{modelValue:n.activeTab,"onUpdate:modelValue":s[2]||(s[2]=t=>n.activeTab=t),class:"mb-4"},{default:b(()=>[u(ce,{value:"text"},{default:b(()=>s[13]||(s[13]=[g("文本粘贴")])),_:1}),u(ce,{value:"file",disabled:""},{default:b(()=>s[14]||(s[14]=[g("文件上传")])),_:1})]),_:1},8,["modelValue"]),u(fe,{modelValue:n.activeTab,"onUpdate:modelValue":s[5]||(s[5]=t=>n.activeTab=t)},{default:b(()=>[u(Q,{value:"text"},{default:b(()=>[u(It,{modelValue:n.jsonText,"onUpdate:modelValue":s[3]||(s[3]=t=>n.jsonText=t),label:"粘贴JSON文本",loading:n.loading,disabled:n.loading,"row-height":"25",rows:"3",placeholder:"请在此粘贴JSON格式的课程表数据...",onInput:c.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])]),_:1}),u(Q,{value:"file"},{default:b(()=>[u(Nt,{modelValue:n.file,"onUpdate:modelValue":s[4]||(s[4]=t=>n.file=t),accept:".js,.json",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:n.loading,disabled:n.loading,onChange:c.handleFileChange,rules:[t=>!t||t.size<2e6||"文件大小不能超过 2 MB"]},null,8,["modelValue","loading","disabled","onChange","rules"])]),_:1})]),_:1},8,["modelValue"]),u(ae,{class:"mb-4",outlined:""},{default:b(()=>[u(ie,{class:"text-subtitle-1"},{default:b(()=>s[15]||(s[15]=[g(" 课程设置 ")])),_:1}),u(re,null,{default:b(()=>[n.processedData?(r(),d("div",Zt,[s[17]||(s[17]=I("div",{class:"text-subtitle-2 mb-2"},"导出设置",-1)),u(oe,null,{default:b(()=>[u(q,{cols:"12",sm:"6"},{default:b(()=>[u(Ve,{modelValue:n.settings.hideIndoorLocation,"onUpdate:modelValue":s[6]||(s[6]=t=>n.settings.hideIndoorLocation=t),label:"室内课程不显示地点",color:"primary"},null,8,["modelValue"])]),_:1}),u(q,{cols:"12",sm:"6"},{default:b(()=>[u(Ve,{modelValue:n.settings.hideTeacherName,"onUpdate:modelValue":s[7]||(s[7]=t=>n.settings.hideTeacherName=t),label:"不显示教师姓名",color:"primary"},null,8,["modelValue"])]),_:1}),u(q,{cols:"12",sm:"6"},{default:b(()=>[u(Dt,{modelValue:n.settings.totalWeeks,"onUpdate:modelValue":s[8]||(s[8]=t=>n.settings.totalWeeks=t),modelModifiers:{number:!0},label:"总周数",type:"number",min:"1",max:"30",rules:[t=>t>0||"周数必须大于0"],dense:""},null,8,["modelValue","rules"])]),_:1})]),_:1}),n.processedData.schedules&&n.processedData.schedules.length>0?(r(),d("div",es,[s[16]||(s[16]=I("div",{class:"text-subtitle-2 mb-2"},"课表选择",-1)),u(oe,null,{default:b(()=>[u(q,{cols:"12"},{default:b(()=>[I("div",ts,[(r(!0),d(_,null,L(n.processedData.schedules,t=>(r(),J(We,{key:t.uuid,color:n.selectedSchedules[t.uuid]?"primary":"grey",outlined:!n.selectedSchedules[t.uuid],"input-value":n.selectedSchedules[t.uuid],"prepend-icon":n.selectedSchedules[t.uuid]?"mdi-check":"",class:"ma-1",onClick:l=>c.toggleScheduleSelection(t),filter:""},{default:b(()=>[g(h(t.name)+" ",1),t.weeks==="odd"||t.weeks==="even"?(r(),d("span",ss," ("+h(t.weeks==="odd"?"单":"双")+"周) ",1)):p("",!0)]),_:2},1032,["color","outlined","input-value","prepend-icon","onClick"]))),128))])]),_:1})]),_:1})])):p("",!0)])):p("",!0)]),_:1})]),_:1}),n.processedData?(r(),J(ae,{key:2,class:"mt-4",outlined:""},{default:b(()=>[u(ie,{class:"text-subtitle-1"},{default:b(()=>s[18]||(s[18]=[g(" 处理结果预览 ")])),_:1}),u(re,null,{default:b(()=>[s[33]||(s[33]=I("div",{class:"text-subtitle-2 mb-2"},"每周课程表",-1)),u(Bt,{"items-selected":n.selectedRows,"onUpdate:itemsSelected":[s[10]||(s[10]=t=>n.selectedRows=t),c.updateSelectedPeriods],headers:n.tableHeaders,items:n.processedData.tableData,"hide-default-footer":"",class:"elevation-1","items-per-page":-1,"item-value":"period","show-select":"","select-strategy":"single-independent"},{"item.data-table-select":b(({item:t})=>[u(Rt,{modelValue:n.exportPeriods,"onUpdate:modelValue":s[9]||(s[9]=l=>n.exportPeriods=l),value:t.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),"item.1":b(({item:t})=>[t[1]?(r(),d("div",ns,[Array.isArray(t[1])?(r(!0),d(_,{key:0},L(t[1],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",ls,[s[19]||(s[19]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",os,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[1].name)+" ",1),!n.settings.hideTeacherName&&t[1].teacher?(r(),d("span",as,[s[20]||(s[20]=I("br",null,null,-1)),g(h(t[1].teacher),1)])):p("",!0),t[1].weekType?(r(),d("span",is,h(t[1].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.2":b(({item:t})=>[t[2]?(r(),d("div",rs,[Array.isArray(t[2])?(r(!0),d(_,{key:0},L(t[2],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",us,[s[21]||(s[21]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",ds,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[2].name)+" ",1),!n.settings.hideTeacherName&&t[2].teacher?(r(),d("span",cs,[s[22]||(s[22]=I("br",null,null,-1)),g(h(t[2].teacher),1)])):p("",!0),t[2].weekType?(r(),d("span",fs,h(t[2].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.3":b(({item:t})=>[t[3]?(r(),d("div",hs,[Array.isArray(t[3])?(r(!0),d(_,{key:0},L(t[3],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",vs,[s[23]||(s[23]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",ys,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[3].name)+" ",1),!n.settings.hideTeacherName&&t[3].teacher?(r(),d("span",ms,[s[24]||(s[24]=I("br",null,null,-1)),g(h(t[3].teacher),1)])):p("",!0),t[3].weekType?(r(),d("span",ks,h(t[3].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.4":b(({item:t})=>[t[4]?(r(),d("div",ps,[Array.isArray(t[4])?(r(!0),d(_,{key:0},L(t[4],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",bs,[s[25]||(s[25]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",gs,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[4].name)+" ",1),!n.settings.hideTeacherName&&t[4].teacher?(r(),d("span",ws,[s[26]||(s[26]=I("br",null,null,-1)),g(h(t[4].teacher),1)])):p("",!0),t[4].weekType?(r(),d("span",Ts,h(t[4].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.5":b(({item:t})=>[t[5]?(r(),d("div",Vs,[Array.isArray(t[5])?(r(!0),d(_,{key:0},L(t[5],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",Cs,[s[27]||(s[27]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",xs,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[5].name)+" ",1),!n.settings.hideTeacherName&&t[5].teacher?(r(),d("span",Ss,[s[28]||(s[28]=I("br",null,null,-1)),g(h(t[5].teacher),1)])):p("",!0),t[5].weekType?(r(),d("span",_s,h(t[5].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.6":b(({item:t})=>[t[6]?(r(),d("div",Ps,[Array.isArray(t[6])?(r(!0),d(_,{key:0},L(t[6],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",Is,[s[29]||(s[29]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",Ds,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[6].name)+" ",1),!n.settings.hideTeacherName&&t[6].teacher?(r(),d("span",As,[s[30]||(s[30]=I("br",null,null,-1)),g(h(t[6].teacher),1)])):p("",!0),t[6].weekType?(r(),d("span",Bs,h(t[6].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),"item.7":b(({item:t})=>[t[7]?(r(),d("div",Es,[Array.isArray(t[7])?(r(!0),d(_,{key:0},L(t[7],(l,i)=>(r(),d("div",{key:i,class:"course-item"},[g(h(l.name)+" ",1),!n.settings.hideTeacherName&&l.teacher?(r(),d("span",Rs,[s[31]||(s[31]=I("br",null,null,-1)),g(h(l.teacher),1)])):p("",!0),l.weekType?(r(),d("span",Ws,h(l.weekType)+"周 ",1)):p("",!0)]))),128)):(r(),d(_,{key:1},[g(h(t[7].name)+" ",1),!n.settings.hideTeacherName&&t[7].teacher?(r(),d("span",Ns,[s[32]||(s[32]=I("br",null,null,-1)),g(h(t[7].teacher),1)])):p("",!0),t[7].weekType?(r(),d("span",Fs,h(t[7].weekType)+"周 ",1)):p("",!0)],64))])):p("",!0)]),_:2},1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):p("",!0)]),_:1}),u(Tt,{class:"pa-4"},{default:b(()=>[u(St),u(Y,{color:"primary",loading:n.loading,disabled:!n.file&&!n.jsonText||n.loading,onClick:c.processInput},{default:b(()=>s[34]||(s[34]=[g(" 处理数据 ")])),_:1},8,["loading","disabled","onClick"]),u(Y,{color:"success",disabled:!n.processedData,onClick:c.downloadCSV},{default:b(()=>s[35]||(s[35]=[g(" 下载CSV ")])),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ys=gt(Qt,[["render",js],["__scopeId","data-v-e1373d7d"]]);export{Ys as default};