mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-07-02 17:29:23 +00:00
8 lines
41 KiB
JavaScript
8 lines
41 KiB
JavaScript
import{g as H,p as U,u as Re,t as F,d as it,ad as ye,am as _e,an as rt,a9 as ut,j as O,ao as dt,k as n,Y as Ne,ap as be,aq as Me,S as I,V as E,ar as ct,m as Le,n as ge,o as mt,ac as ft,x as ke,X as ht,a1 as ne,as as vt,f as C,at as ze,a4 as pe,a2 as Ye,au as Ce,r as q,a3 as Fe,H as j,av as He,a8 as Ue,aw as yt,R as M,W as bt,ax as gt,ay as kt,az as Oe,a as pt,ae as Tt,aA as xt,s as he,aB as wt,aC as Vt,aD as Xe,aE as Ct,aF as St,aG as Dt,aH as Pt,l as ve,aI as jt,aJ as Bt,aK as At,aL as Et,aM as It,_ as Wt,A,D as f,E as r,J as c,B as V,F as T,G as p,K as x,aN as Rt,I as z,aO as _t}from"./index-_78wSJdY.js";import{g as Se,e as K,V as Z,a as me,f as Nt,b as se,i as Mt,d as Lt}from"./VRow-BncxIBtM.js";import{V as $}from"./VAlert-Yv2C4GI_.js";import{u as zt}from"./ssrBoot-DjnkwrOQ.js";import{a as Y,h as De,m as Yt,i as Ft,V as Ht}from"./VList-B5sUDAOz.js";import{V as fe}from"./VTooltip-hKNBLSTv.js";import{u as Ge,c as ae,m as Je,d as Pe,e as Ut,f as Ot,a as Xt,b as Gt}from"./VTextarea-Cj-BNHQC.js";import{V as je,m as Jt,a as Be,b as qt,c as Kt}from"./VSwitch-DZdZYRfp.js";import{V as Zt}from"./VSkeletonLoader-isEILCpQ.js";const Qt=U({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,floating:Boolean,icon:ht,inline:Boolean,label:{type:String,default:"$vuetify.badge"},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...ke(),...ft({location:"top end"}),...mt(),...ge(),...Le(),...ct({transition:"scale-rotate-transition"})},"VBadge"),Ae=H()({name:"VBadge",inheritAttrs:!1,props:Qt(),setup(e,t){const{backgroundColorClasses:o,backgroundColorStyles:a}=Re(F(e,"color")),{roundedClasses:s}=it(e),{t:i}=ye(),{textColorClasses:l,textColorStyles:u}=_e(F(e,"textColor")),{themeClasses:d}=rt(),{locationStyles:m}=ut(e,!0,y=>(e.floating?e.dot?2:4:e.dot?8:12)+(["top","bottom"].includes(y)?Number(e.offsetY??0):["left","right"].includes(y)?Number(e.offsetX??0):0));return O(()=>{const y=Number(e.content),g=!e.max||isNaN(y)?e.content:y<=Number(e.max)?y:`${e.max}+`,[k,b]=dt(t.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return n(e.tag,I({class:["v-badge",{"v-badge--bordered":e.bordered,"v-badge--dot":e.dot,"v-badge--floating":e.floating,"v-badge--inline":e.inline},e.class]},b,{style:e.style}),{default:()=>{var h,S;return[n("div",{class:"v-badge__wrapper"},[(S=(h=t.slots).default)==null?void 0:S.call(h),n(Ne,{transition:e.transition},{default:()=>{var W,P;return[be(n("span",I({class:["v-badge__badge",d.value,o.value,s.value,l.value],style:[a.value,u.value,e.inline?{}:m.value],"aria-atomic":"true","aria-label":i(e.label,y),"aria-live":"polite",role:"status"},k),[e.dot?void 0:t.slots.badge?(P=(W=t.slots).badge)==null?void 0:P.call(W):e.icon?n(E,{icon:e.icon},null):g]),[[Me,e.modelValue]])]}})])]}})}),{}}}),$t=U({...Je(),...pe(Jt(),["inline"])},"VCheckbox"),es=H()({name:"VCheckbox",inheritAttrs:!1,props:$t(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=ne(e,"modelValue"),{isFocused:i,focus:l,blur:u}=Ge(e),d=vt(),m=C(()=>e.id||`checkbox-${d}`);return O(()=>{const[y,g]=ze(o),k=ae.filterProps(e),b=je.filterProps(e);return n(ae,I({class:["v-checkbox",e.class]},y,k,{modelValue:s.value,"onUpdate:modelValue":h=>s.value=h,id:m.value,focused:i.value,style:e.style}),{...a,default:h=>{let{id:S,messagesId:W,isDisabled:P,isReadonly:N,isValid:_}=h;return n(je,I(b,{id:S.value,"aria-describedby":W.value,disabled:P.value,readonly:N.value},g,{error:_.value===!1,modelValue:s.value,"onUpdate:modelValue":w=>s.value=w,onFocus:l,onBlur:u}),a)}})}),{}}}),ts=U({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))},...Je({prependIcon:"$file"}),modelValue:{type:[Array,Object],default:e=>e.multiple?[]:null,validator:e=>Ye(e).every(t=>t!=null&&typeof t=="object")},...Ot({clearable:!0})},"VFileInput"),ss=H()({name:"VFileInput",inheritAttrs:!1,props:ts(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:s}=t;const{t:i}=ye(),l=ne(e,"modelValue",e.modelValue,v=>Ye(v),v=>!e.multiple&&Array.isArray(v)?v[0]:v),{isFocused:u,focus:d,blur:m}=Ge(e),y=C(()=>typeof e.showSize!="boolean"?e.showSize:void 0),g=C(()=>(l.value??[]).reduce((v,B)=>{let{size:J=0}=B;return v+J},0)),k=C(()=>Ce(g.value,y.value)),b=C(()=>(l.value??[]).map(v=>{const{name:B="",size:J=0}=v;return e.showSize?`${B} (${Ce(J,y.value)})`:B})),h=C(()=>{var B;const v=((B=l.value)==null?void 0:B.length)??0;return e.showSize?i(e.counterSizeString,v,k.value):i(e.counterString,v)}),S=q(),W=q(),P=q(),N=C(()=>u.value||e.active),_=C(()=>["plain","underlined"].includes(e.variant));function w(){var v;P.value!==document.activeElement&&((v=P.value)==null||v.focus()),u.value||d()}function D(v){var B;(B=P.value)==null||B.click()}function R(v){a("mousedown:control",v)}function L(v){var B;(B=P.value)==null||B.click(),a("click:control",v)}function ie(v){v.stopPropagation(),w(),Ue(()=>{l.value=[],yt(e["onClick:clear"],v)})}function re(v){v.preventDefault()}function X(v){v.preventDefault(),v.dataTransfer&&(l.value=[...v.dataTransfer.files??[]])}return Fe(l,v=>{(!Array.isArray(v)||!v.length)&&P.value&&(P.value.value="")}),O(()=>{const v=!!(s.counter||e.counter),B=!!(v||s.details),[J,ue]=ze(o),{modelValue:de,...et}=ae.filterProps(e),tt=Pe.filterProps(e);return n(ae,I({ref:S,modelValue:e.multiple?l.value:l.value[0],class:["v-file-input",{"v-file-input--chips":!!e.chips,"v-file-input--hide":e.hideInput,"v-input--plain-underlined":_.value},e.class],style:e.style,"onClick:prepend":D},J,et,{centerAffix:!_.value,focused:u.value}),{...s,default:ce=>{let{id:te,isDisabled:Q,isDirty:xe,isReadonly:we,isValid:st}=ce;return n(Pe,I({ref:W,"prepend-icon":e.prependIcon,onMousedown:R,onClick:L,"onClick:clear":ie,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},tt,{id:te.value,active:N.value||xe.value,dirty:xe.value||e.dirty,disabled:Q.value,focused:u.value,error:st.value===!1,onDragover:re,onDrop:X}),{...s,default:lt=>{var Ve;let{props:{class:at,...ot}}=lt;return n(j,null,[n("input",I({ref:P,type:"file",readonly:we.value,disabled:Q.value,multiple:e.multiple,name:e.name,onClick:G=>{G.stopPropagation(),we.value&&G.preventDefault(),w()},onChange:G=>{if(!G.target)return;const nt=G.target;l.value=[...nt.files??[]]},onFocus:w,onBlur:m},ot,ue),null),n("div",{class:at},[!!((Ve=l.value)!=null&&Ve.length)&&!e.hideInput&&(s.selection?s.selection({fileNames:b.value,totalBytes:g.value,totalBytesReadable:k.value}):e.chips?b.value.map(G=>n(Y,{key:G,size:"small",text:G},null)):b.value.join(", "))])])}})},details:B?ce=>{var te,Q;return n(j,null,[(te=s.details)==null?void 0:te.call(s,ce),v&&n(j,null,[n("span",null,null),n(Ut,{active:!!((Q=l.value)!=null&&Q.length),value:h.value,disabled:e.disabled},s.counter)])])}:void 0})}),He({},S,W,P)}}),Te=Symbol.for("vuetify:v-tabs"),ls=U({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...pe(bt({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),le=H()({name:"VTab",props:ls(),setup(e,t){let{slots:o,attrs:a}=t;const{textColorClasses:s,textColorStyles:i}=_e(e,"sliderColor"),l=q(),u=q(),d=C(()=>e.direction==="horizontal"),m=C(()=>{var g,k;return((k=(g=l.value)==null?void 0:g.group)==null?void 0:k.isSelected.value)??!1});function y(g){var b,h;let{value:k}=g;if(k){const S=(h=(b=l.value)==null?void 0:b.$el.parentElement)==null?void 0:h.querySelector(".v-tab--selected .v-tab__slider"),W=u.value;if(!S||!W)return;const P=getComputedStyle(S).color,N=S.getBoundingClientRect(),_=W.getBoundingClientRect(),w=d.value?"x":"y",D=d.value?"X":"Y",R=d.value?"right":"bottom",L=d.value?"width":"height",ie=N[w],re=_[w],X=ie>re?N[R]-_[R]:N[w]-_[w],v=Math.sign(X)>0?d.value?"right":"bottom":Math.sign(X)<0?d.value?"left":"top":"center",J=(Math.abs(X)+(Math.sign(X)<0?N[L]:_[L]))/Math.max(N[L],_[L])||0,ue=N[L]/_[L]||0,de=1.5;gt(W,{backgroundColor:[P,"currentcolor"],transform:[`translate${D}(${X}px) scale${D}(${ue})`,`translate${D}(${X/de}px) scale${D}(${(J-1)/de+1})`,"none"],transformOrigin:Array(3).fill(v)},{duration:225,easing:kt})}}return O(()=>{const g=M.filterProps(e);return n(M,I({symbol:Te,ref:l,class:["v-tab",e.class],style:e.style,tabindex:m.value?0:-1,role:"tab","aria-selected":String(m.value),active:!1},g,a,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":y}),{...o,default:()=>{var k;return n(j,null,[((k=o.default)==null?void 0:k.call(o))??e.text,!e.hideSlider&&n("div",{ref:u,class:["v-tab__slider",s.value],style:i.value},null)])}})}),He({},l)}}),as=e=>{const{touchstartX:t,touchendX:o,touchstartY:a,touchendY:s}=e,i=.5,l=16;e.offsetX=o-t,e.offsetY=s-a,Math.abs(e.offsetY)<i*Math.abs(e.offsetX)&&(e.left&&o<t-l&&e.left(e),e.right&&o>t+l&&e.right(e)),Math.abs(e.offsetX)<i*Math.abs(e.offsetY)&&(e.up&&s<a-l&&e.up(e),e.down&&s>a+l&&e.down(e))};function os(e,t){var a;const o=e.changedTouches[0];t.touchstartX=o.clientX,t.touchstartY=o.clientY,(a=t.start)==null||a.call(t,{originalEvent:e,...t})}function ns(e,t){var a;const o=e.changedTouches[0];t.touchendX=o.clientX,t.touchendY=o.clientY,(a=t.end)==null||a.call(t,{originalEvent:e,...t}),as(t)}function is(e,t){var a;const o=e.changedTouches[0];t.touchmoveX=o.clientX,t.touchmoveY=o.clientY,(a=t.move)==null||a.call(t,{originalEvent:e,...t})}function rs(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t={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:o=>os(o,t),touchend:o=>ns(o,t),touchmove:o=>is(o,t)}}function us(e,t){var u;const o=t.value,a=o!=null&&o.parent?e.parentElement:e,s=(o==null?void 0:o.options)??{passive:!0},i=(u=t.instance)==null?void 0:u.$.uid;if(!a||!i)return;const l=rs(t.value);a._touchHandlers=a._touchHandlers??Object.create(null),a._touchHandlers[i]=l,Oe(l).forEach(d=>{a.addEventListener(d,l[d],s)})}function ds(e,t){var i,l;const o=(i=t.value)!=null&&i.parent?e.parentElement:e,a=(l=t.instance)==null?void 0:l.$.uid;if(!(o!=null&&o._touchHandlers)||!a)return;const s=o._touchHandlers[a];Oe(s).forEach(u=>{o.removeEventListener(u,s[u])}),delete o._touchHandlers[a]}const qe={mounted:us,unmounted:ds},Ke=Symbol.for("vuetify:v-window"),Ze=Symbol.for("vuetify:v-window-group"),Qe=U({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"},...ke(),...ge(),...Le()},"VWindow"),oe=H()({name:"VWindow",directives:{Touch:qe},props:Qe(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:o}=t;const{themeClasses:a}=pt(e),{isRtl:s}=Tt(),{t:i}=ye(),l=xt(e,Ze),u=q(),d=C(()=>s.value?!e.reverse:e.reverse),m=he(!1),y=C(()=>{const w=e.direction==="vertical"?"y":"x",R=(d.value?!m.value:m.value)?"-reverse":"";return`v-window-${w}${R}-transition`}),g=he(0),k=q(void 0),b=C(()=>l.items.value.findIndex(w=>l.selected.value.includes(w.id)));Fe(b,(w,D)=>{const R=l.items.value.length,L=R-1;R<=2?m.value=w<D:w===L&&D===0?m.value=!0:w===0&&D===L?m.value=!1:m.value=w<D}),Vt(Ke,{transition:y,isReversed:m,transitionCount:g,transitionHeight:k,rootRef:u});const h=C(()=>e.continuous||b.value!==0),S=C(()=>e.continuous||b.value!==l.items.value.length-1);function W(){h.value&&l.prev()}function P(){S.value&&l.next()}const N=C(()=>{const w=[],D={icon:s.value?e.nextIcon:e.prevIcon,class:`v-window__${d.value?"right":"left"}`,onClick:l.prev,"aria-label":i("$vuetify.carousel.prev")};w.push(h.value?o.prev?o.prev({props:D}):n(M,D,null):n("div",null,null));const R={icon:s.value?e.prevIcon:e.nextIcon,class:`v-window__${d.value?"left":"right"}`,onClick:l.next,"aria-label":i("$vuetify.carousel.next")};return w.push(S.value?o.next?o.next({props:R}):n(M,R,null):n("div",null,null)),w}),_=C(()=>e.touch===!1?e.touch:{...{left:()=>{d.value?W():P()},right:()=>{d.value?P():W()},start:D=>{let{originalEvent:R}=D;R.stopPropagation()}},...e.touch===!0?{}:e.touch});return O(()=>be(n(e.tag,{ref:u,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},a.value,e.class],style:e.style},{default:()=>{var w,D;return[n("div",{class:"v-window__container",style:{height:k.value}},[(w=o.default)==null?void 0:w.call(o,{group:l}),e.showArrows!==!1&&n("div",{class:"v-window__controls"},[N.value])]),(D=o.additional)==null?void 0:D.call(o,{group:l})]}}),[[wt("touch"),_.value]])),{group:l}}}),cs=U({...pe(Qe(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),ms=H()({name:"VTabsWindow",props:cs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:o}=t;const a=Xe(Te,null),s=ne(e,"modelValue"),i=C({get(){var l;return s.value!=null||!a?s.value:(l=a.items.value.find(u=>a.selected.value.includes(u.id)))==null?void 0:l.value},set(l){s.value=l}});return O(()=>{const l=oe.filterProps(e);return n(oe,I({_as:"VTabsWindow"},l,{modelValue:i.value,"onUpdate:modelValue":u=>i.value=u,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),o)}),{}}}),$e=U({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...ke(),...Pt(),...Dt()},"VWindowItem"),ee=H()({name:"VWindowItem",directives:{Touch:qe},props:$e(),emits:{"group:selected":e=>!0},setup(e,t){let{slots:o}=t;const a=Xe(Ke),s=Ct(e,Ze),{isBooted:i}=zt();if(!a||!s)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const l=he(!1),u=C(()=>i.value&&(a.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function d(){!l.value||!a||(l.value=!1,a.transitionCount.value>0&&(a.transitionCount.value-=1,a.transitionCount.value===0&&(a.transitionHeight.value=void 0)))}function m(){var h;l.value||!a||(l.value=!0,a.transitionCount.value===0&&(a.transitionHeight.value=ve((h=a.rootRef.value)==null?void 0:h.clientHeight)),a.transitionCount.value+=1)}function y(){d()}function g(h){l.value&&Ue(()=>{!u.value||!l.value||!a||(a.transitionHeight.value=ve(h.clientHeight))})}const k=C(()=>{const h=a.isReversed.value?e.reverseTransition:e.transition;return u.value?{name:typeof h!="string"?a.transition.value:h,onBeforeEnter:m,onAfterEnter:d,onEnterCancelled:y,onBeforeLeave:m,onAfterLeave:d,onLeaveCancelled:y,onEnter:g}:!1}),{hasContent:b}=St(e,s.isSelected);return O(()=>n(Ne,{transition:k.value,disabled:!i.value},{default:()=>{var h;return[be(n("div",{class:["v-window-item",s.selectedClass.value,e.class],style:e.style},[b.value&&((h=o.default)==null?void 0:h.call(o))]),[[Me,s.isSelected.value]])]}})),{groupItem:s}}}),fs=U({...$e()},"VTabsWindowItem"),hs=H()({name:"VTabsWindowItem",props:fs(),setup(e,t){let{slots:o}=t;return O(()=>{const a=ee.filterProps(e);return n(ee,I({_as:"VTabsWindowItem"},a,{class:["v-tabs-window-item",e.class],style:e.style}),o)}),{}}});function vs(e){return e?e.map(t=>It(t)?t:{text:t,value:t}):[]}const ys=U({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,...Yt({mandatory:"force",selectedClass:"v-tab-item--selected"}),...Et(),...ge()},"VTabs"),Ee=H()({name:"VTabs",props:ys(),emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=ne(e,"modelValue"),i=C(()=>vs(e.items)),{densityClasses:l}=jt(e),{backgroundColorClasses:u,backgroundColorStyles:d}=Re(F(e,"bgColor")),{scopeId:m}=Bt();return At({VTab:{color:F(e,"color"),direction:F(e,"direction"),stacked:F(e,"stacked"),fixed:F(e,"fixedTabs"),sliderColor:F(e,"sliderColor"),hideSlider:F(e,"hideSlider")}}),O(()=>{const y=De.filterProps(e),g=!!(a.window||e.items.length>0);return n(j,null,[n(De,I(y,{modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,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},l.value,u.value,e.class],style:[{"--v-tabs-height":ve(e.height)},d.value,e.style],role:"tablist",symbol:Te},m,o),{default:()=>{var k;return[((k=a.default)==null?void 0:k.call(a))??i.value.map(b=>{var h;return((h=a.tab)==null?void 0:h.call(a,{item:b}))??n(le,I(b,{key:b.text,value:b.value}),{default:a[`tab.${b.value}`]?()=>{var S;return(S=a[`tab.${b.value}`])==null?void 0:S.call(a,{item:b})}:void 0})})]}}),g&&n(ms,I({modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,key:"tabs-window"},m),{default:()=>{var k;return[i.value.map(b=>{var h;return((h=a.item)==null?void 0:h.call(a,{item:b}))??n(hs,{value:b.value},{default:()=>{var S;return(S=a[`item.${b.value}`])==null?void 0:S.call(a,{item:b})}})}),(k=a.window)==null?void 0:k.call(a)]}})])}),{}}}),Ie=()=>new Promise((e,t)=>{if(typeof window.jsyaml<"u")return e(window.jsyaml);const o=document.createElement("script");o.src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js",o.async=!0,o.onload=()=>e(window.jsyaml),o.onerror=()=>t(new Error("无法加载YAML解析库")),document.head.appendChild(o)});class We{constructor(t){this.data=t,this.version=null,this.subjects=[],this.schedules=[],this._parseData()}_parseData(){if(!this.data)return;this.version=this.data.version||1;const t=this.data.subjects||[];for(const a of t)this.subjects.push({name:a.name,simplified_name:a.simplified_name||null,teacher:a.teacher||null,room:a.room||null});const o=this.data.schedules||[];for(const a of o){const s=[];for(const i of a.classes||[])s.push({subject:i.subject,start_time:i.start_time,end_time:i.end_time});this.schedules.push({name:a.name,enable_day:a.enable_day,weeks:a.weeks||"all",classes:s})}}getSubjects(){return this.subjects}getSchedules(){return this.schedules}getScheduleByDay(t){const o=this.schedules.find(a=>a.enable_day===t);return o?o.classes:[]}toCsesData(){return{version:this.version,subjects:this.subjects,schedules:this.schedules}}}const bs={name:"Cses2Wakeup",data(){return{activeTab:"text",file:null,jsonText:"",loading:!1,error:"",success:"",processedData:null,selectedRows:[],exportPeriods:[],selectedDays:[1,2,3,4,5,6,7],formatMode:"auto",yamlLibLoaded:!1,activeDay:null,subjectColors:{数学:"blue",语文:"red",英语:"green",物理:"purple",化学:"orange",生物:"teal",历史:"brown",地理:"indigo",政治:"pink",体育:"cyan",自习:"grey",早读:"amber",班会:"deep-purple",听力:"light-blue",信息技术:"light-green"},settings:{hideTeacherName:!1,hideRoom:!1,totalWeeks:30},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"}],timeTableHeaders:[{title:"节次",key:"period"},{title:"课程",key:"subject"},{title:"星期",key:"day"},{title:"开始时间",key:"startTime"},{title:"结束时间",key:"endTime"},{title:"教师",key:"teacher"},{title:"教室",key:"room"},{title:"周次",key:"weeks"}],dayNames:{1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"}}},computed:{timeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const e=[],t=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),o={};return t.sort((a,s)=>a.period-s.period).forEach((a,s)=>{o[a.period]=s+1}),t.forEach(a=>{for(let s=1;s<=7;s++){if(!this.selectedDays.includes(s))continue;const i=a[s];if(i)if(Array.isArray(i))i.forEach(l=>{!l||!l.name||e.push({originalPeriod:a.period,period:o[a.period],subject:l.name,day:this.dayNames[s],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!i.name)continue;e.push({originalPeriod:a.period,period:o[a.period],subject:i.name,day:this.dayNames[s],startTime:i.startTime,endTime:i.endTime,teacher:this.settings.hideTeacherName?"":i.teacher||"",room:this.settings.hideRoom?"":i.room||"",weeks:i.weekType?`1-${this.settings.totalWeeks}${i.weekType}`:`1-${this.settings.totalWeeks}`})}}}),e.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const i={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return i[a.day]-i[s.day]})},hasExportData(){return this.processedData&&this.exportPeriods.length>0},totalClassHours(){return this.timeTableData.length},daysWithSchedule(){const e=[];for(let t=1;t<=7;t++)this.selectedDays.includes(t)&&this.getDaySchedule(t).length>0&&e.push(t);return e}},methods:{async handleFileChange(){if(this.resetData(),!this.file)return;const e=this.file.name.toLowerCase();if(e.endsWith(".json")||e.endsWith(".js"))this.formatMode="json";else if((e.endsWith(".yml")||e.endsWith(".yaml"))&&(this.formatMode="yaml",!this.yamlLibLoaded))try{await Ie(),this.yamlLibLoaded=!0}catch(t){this.error=`无法加载YAML解析库: ${t.message}`;return}try{const t=new FileReader;t.onload=async o=>{try{this.jsonText=o.target.result,await this.processInput()}catch(a){this.error=`文件读取失败: ${a.message}`}},t.onerror=()=>{this.error="文件读取失败"},t.readAsText(this.file)}catch(t){this.error=`文件处理失败: ${t.message}`}},handleTextChange(){this.resetData()},resetData(){this.error="",this.success="",this.processedData=null,this.selectedRows=[],this.exportPeriods=[]},async processInput(){if(!this.jsonText&&!this.file){this.error="请粘贴文本或上传文件";return}this.loading=!0,this.error="",this.success="";try{await this.$nextTick();let e;try{if(this.formatMode==="yaml"||this.formatMode==="auto"&&this.isYaml(this.jsonText)){const o=this.parseYaml(this.jsonText);e=new We(o).toCsesData()}else e=JSON.parse(this.jsonText)}catch(o){throw new Error(`格式解析错误: ${o.message}`)}if(!this.validateCsesFormat(e))throw new Error("不是有效的CSES格式数据");const t=this.processCsesData(e);this.processedData=t,this.selectedDays=[1,2,3,4,5],this.success="数据处理成功!",t.tableData&&t.tableData.length>0&&(this.selectedRows=[...t.tableData],this.exportPeriods=t.tableData.map(o=>o.period))}catch(e){this.error="数据处理失败:"+e.message,console.error(e)}finally{this.loading=!1}},validateCsesFormat(e){return e instanceof We?e.version===1&&Array.isArray(e.subjects)&&Array.isArray(e.schedules):!(!e||typeof e!="object"||e.version!==1||!Array.isArray(e.subjects)||!Array.isArray(e.schedules))},processCsesData(e){const{schedules:t,subjects:o}=e,a=Object.fromEntries(o.map(l=>[l.name,l])),s=[];let i=0;t.forEach(l=>{l.classes&&l.classes.length>i&&(i=l.classes.length)});for(let l=1;l<=i;l++)s.push({period:l,1:null,2:null,3:null,4:null,5:null,6:null,7:null});return t.forEach(l=>{const u=l.enable_day;if(!u||u<1||u>7)return;let d="";l.weeks==="odd"?d="单":l.weeks==="even"&&(d="双"),l.classes.forEach((m,y)=>{if(!m.subject)return;const g=y+1;if(g>i)return;const k=a[m.subject]||{},b={name:m.subject,teacher:k.teacher||"",room:k.room||"",period:g,startTime:m.start_time,endTime:m.end_time,day:u,weekType:d},h=s[g-1][u];h?d&&h.weekType&&d!==h.weekType?(Array.isArray(s[g-1][u])||(s[g-1][u]=[h]),s[g-1][u].push(b)):d===h.weekType?s[g-1][u]=b:d||(s[g-1][u]=b):s[g-1][u]=b})}),{tableData:s,originalData:e}},updateSelectedPeriods(e){this.exportPeriods=[],e&&e.length>0&&(this.exportPeriods=[...new Set(e.filter(t=>t&&typeof t.period=="number").map(t=>t.period))])},getTimeTableData(){return this.timeTableData},downloadCSV(){var s;if(!((s=this.processedData)!=null&&s.tableData)){this.error="没有可下载的数据";return}if(this.exportPeriods.length===0){this.error="请至少选择一节要导出的课";return}if(this.daysWithSchedule.length===0||this.totalClassHours===0){this.error="没有课程数据可导出";return}let e=`课程名称,星期,开始节数,结束节数,老师,地点,周数
|
|
`;for(const i of this.daysWithSchedule){const l=this.groupByPeriod(this.getDaySchedule(i));for(const u of l)for(const d of u.items){const m={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7}[d.day],y=this.settings.hideTeacherName?"":d.teacher||"",g=this.settings.hideRoom?"":d.room||"";e+=`${d.subject},${m},${d.period},${d.period},${y},${g},${d.weeks}
|
|
`}}const t="\uFEFF",o=new Blob([t+e],{type:"text/csv;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(o),a.download=`course_schedule_${this.totalClassHours}课时.csv`,a.click(),URL.revokeObjectURL(a.href),this.success=`导出成功!共计 ${this.totalClassHours} 课时`},showExportPreview(){if(!this.hasExportData){this.error="请先选择要导出的节次";return}const e=this.timeTableData.slice(0,5).map(t=>`${t.subject} (${t.day} 第${t.period}节)`).join(`
|
|
`);this.timeTableData.length>5?this.success=`导出预览 (共${this.totalClassHours}课时):
|
|
${e}
|
|
...等${this.totalClassHours-5}节课程`:this.success=`导出预览 (共${this.totalClassHours}课时):
|
|
${e}`,this.$nextTick(()=>{this.daysWithSchedule.length>0&&!this.activeDay&&(this.activeDay=this.daysWithSchedule[0])})},isYaml(e){const t=e.trim();if(t.startsWith("{")||t.startsWith("["))try{return JSON.parse(t),!1}catch{}return/^\s*[a-zA-Z0-9_-]+\s*:/.test(t)||/\n\s*[a-zA-Z0-9_-]+\s*:/.test(t)},parseYaml(e){try{if(typeof window.jsyaml<"u")return window.jsyaml.load(e);throw new Error("YAML解析器未加载")}catch(t){throw new Error(`YAML解析错误: ${t.message}`)}},getDaySchedule(e){return this.timeTableData?this.getUnfilteredTimeTableData().filter(o=>({周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7})[o.day]===e):[]},getUnfilteredTimeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const e=[],t=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),o={};return t.sort((a,s)=>a.period-s.period).forEach((a,s)=>{o[a.period]=s+1}),t.forEach(a=>{for(let s=1;s<=7;s++){const i=a[s];if(i)if(Array.isArray(i))i.forEach(l=>{!l||!l.name||e.push({originalPeriod:a.period,period:o[a.period],subject:l.name,day:this.dayNames[s],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!i.name)continue;e.push({originalPeriod:a.period,period:o[a.period],subject:i.name,day:this.dayNames[s],startTime:i.startTime,endTime:i.endTime,teacher:this.settings.hideTeacherName?"":i.teacher||"",room:this.settings.hideRoom?"":i.room||"",weeks:i.weekType?`1-${this.settings.totalWeeks}${i.weekType}`:`1-${this.settings.totalWeeks}`})}}}),e.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const i={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return i[a.day]-i[s.day]})},groupByPeriod(e){const t={};return e.forEach(o=>{t[o.period]||(t[o.period]={period:o.period,originalPeriod:o.originalPeriod,items:[],timeSlots:[]}),t[o.period].items.push(o),t[o.period].timeSlots.push({startTime:o.startTime,endTime:o.endTime})}),Object.values(t).forEach(o=>{o.uniqueTimeSlots=[],o.timeSlots.forEach(a=>{o.uniqueTimeSlots.some(s=>s.startTime===a.startTime&&s.endTime===a.endTime)||o.uniqueTimeSlots.push(a)}),o.uniqueTimeSlots.sort((a,s)=>a.startTime.localeCompare(s.startTime))}),Object.values(t).sort((o,a)=>o.period-a.period)},formatTime(e){return e?e.substring(0,5):""},getSubjectColor(e){return this.subjectColors[e]||"grey"},selectAllDays(){this.selectedDays=[1,2,3,4,5,6,7]},clearSelectedDays(){this.selectedDays=[]}},async mounted(){try{await Ie(),this.yamlLibLoaded=!0}catch(e){this.error=e.message}this.$watch("daysWithSchedule",e=>{e.length>0&&!this.activeDay&&(this.activeDay=e[0])})}},gs={class:"d-flex align-center"},ks={class:"d-flex align-center"},ps={key:2,class:"text-caption mb-2"},Ts={class:"d-flex align-center mb-2"},xs={class:"d-flex align-center mb-3"},ws={class:"d-flex align-center mb-3"},Vs={key:0,class:"course-cell"},Cs={key:0},Ss={key:1},Ds={key:2,class:"week-type"},Ps={key:0},js={key:1},Bs={key:2,class:"week-type"},As={class:"text-center font-weight-bold"};function Es(e,t,o,a,s,i){return f(),A(Lt,{class:"fill-height"},{default:r(()=>[n(Se,null,{default:r(()=>[n(K,{cols:"12"},{default:r(()=>[n(Z,{class:"elevation-12",border:""},{default:r(()=>[n(me,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:r(()=>[n(E,{color:"white",class:"mr-2"},{default:r(()=>t[15]||(t[15]=[c("mdi-swap-horizontal")])),_:1}),t[16]||(t[16]=c(" 课程表转换工具 "))]),_:1}),n(Nt,null,{default:r(()=>t[17]||(t[17]=[c(" 将CSES格式的JSON或YAML文本转换为WakeUp软件使用的课程表 ")])),_:1}),n(se,null,{default:r(()=>[s.error?(f(),A($,{key:0,type:"error",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":t[0]||(t[0]=l=>s.error="")},{default:r(()=>[p("div",gs,[n(E,{class:"mr-2"},{default:r(()=>t[18]||(t[18]=[c("mdi-alert-circle")])),_:1}),c(" "+x(s.error),1)])]),_:1})):V("",!0),s.success?(f(),A($,{key:1,type:"success",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":t[1]||(t[1]=l=>s.success="")},{default:r(()=>[p("div",ks,[n(E,{class:"mr-2"},{default:r(()=>t[19]||(t[19]=[c("mdi-check-circle")])),_:1}),c(" "+x(s.success),1)])]),_:1})):V("",!0),n(Ee,{modelValue:s.activeTab,"onUpdate:modelValue":t[2]||(t[2]=l=>s.activeTab=l),class:"mb-4 mx-2",color:"primary",rounded:""},{default:r(()=>[n(le,{value:"text",class:"px-5"},{default:r(()=>[n(E,{start:""},{default:r(()=>t[20]||(t[20]=[c("mdi-text-box")])),_:1}),t[21]||(t[21]=c(" 文本粘贴"))]),_:1}),n(le,{value:"file",class:"px-5"},{default:r(()=>[n(E,{start:""},{default:r(()=>t[22]||(t[22]=[c("mdi-file-upload")])),_:1}),t[23]||(t[23]=c(" 文件上传"))]),_:1})]),_:1},8,["modelValue"]),n(Rt,{modelValue:s.formatMode,"onUpdate:modelValue":t[3]||(t[3]=l=>s.formatMode=l),color:"primary",class:"mb-4 mx-2",mandatory:"",density:"comfortable",border:"",rounded:""},{default:r(()=>[n(M,{value:"auto"},{default:r(()=>t[24]||(t[24]=[c("自动检测")])),_:1}),n(M,{value:"json"},{default:r(()=>t[25]||(t[25]=[c("JSON")])),_:1}),n(M,{value:"yaml",disabled:!s.yamlLibLoaded},{default:r(()=>[t[26]||(t[26]=c(" YAML ")),n(fe,{activator:"parent",location:"bottom"},{default:r(()=>[c(x(s.yamlLibLoaded?"YAML解析库已加载":"正在加载YAML解析库..."),1)]),_:1})]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),s.jsonText&&s.formatMode==="auto"?(f(),T("div",ps," 检测到的格式: "+x(i.isYaml(s.jsonText)?"YAML":"JSON"),1)):V("",!0),n(oe,{modelValue:s.activeTab,"onUpdate:modelValue":t[6]||(t[6]=l=>s.activeTab=l)},{default:r(()=>[n(ee,{value:"text"},{default:r(()=>[p("div",Ts,[n(Xt,{modelValue:s.jsonText,"onUpdate:modelValue":t[4]||(t[4]=l=>s.jsonText=l),label:"粘贴JSON或YAML文本",loading:s.loading,disabled:s.loading,"row-height":"25",rows:"6",placeholder:"请在此粘贴CSES格式的数据...",onInput:i.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])])]),_:1}),n(ee,{value:"file"},{default:r(()=>[n(ss,{modelValue:s.file,"onUpdate:modelValue":t[5]||(t[5]=l=>s.file=l),accept:".js,.json,.yml,.yaml",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:s.loading,disabled:s.loading,onChange:i.handleFileChange,hint:"支持JSON、YAML格式文件","persistent-hint":"",rules:[l=>!l||l.size<2e6||"文件大小不能超过 2 MB"]},null,8,["modelValue","loading","disabled","onChange","rules"]),s.file&&s.formatMode==="auto"?(f(),A($,{key:0,type:"info",class:"mb-4",variant:"tonal",density:"compact"},{default:r(()=>t[27]||(t[27]=[c(" 将根据文件扩展名自动检测格式 ")])),_:1})):V("",!0)]),_:1})]),_:1},8,["modelValue"]),n(K,{cols:"12"},{default:r(()=>[n(Z,{flat:"",class:"pa-4 rounded-lg",border:""},{default:r(()=>[p("div",xs,[n(E,{color:"primary",class:"mr-2"},{default:r(()=>t[28]||(t[28]=[c("mdi-calendar-multiselect")])),_:1}),t[33]||(t[33]=p("h3",{class:"text-subtitle-1 font-weight-medium mr-auto"},"选择导出天数",-1)),n(M,{variant:"text",color:"primary",class:"ml-2",onClick:i.selectAllDays},{default:r(()=>[n(E,{start:"",size:"small"},{default:r(()=>t[29]||(t[29]=[c("mdi-checkbox-multiple-marked")])),_:1}),t[30]||(t[30]=c(" 全选 "))]),_:1},8,["onClick"]),n(M,{variant:"text",color:"error",class:"ml-2",onClick:i.clearSelectedDays},{default:r(()=>[n(E,{start:"",size:"small"},{default:r(()=>t[31]||(t[31]=[c("mdi-checkbox-multiple-blank-outline")])),_:1}),t[32]||(t[32]=c(" 清除 "))]),_:1},8,["onClick"])]),n(Ft,{modelValue:s.selectedDays,"onUpdate:modelValue":t[7]||(t[7]=l=>s.selectedDays=l),multiple:"",class:"mb-2",color:"primary"},{default:r(()=>[(f(),T(j,null,z(7,l=>n(Y,{key:l,value:l,filter:"",variant:"tonal",class:"filter-chip",label:""},{default:r(()=>[c(x(s.dayNames[l])+" ",1),i.getDaySchedule(l).length>0?(f(),A(Ae,{key:0,content:i.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])):V("",!0)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),n(K,{cols:"12"},{default:r(()=>[n(Z,{flat:"",class:"pa-4 rounded-lg",border:""},{default:r(()=>[p("div",ws,[n(E,{color:"primary",class:"mr-2"},{default:r(()=>t[34]||(t[34]=[c("mdi-cog")])),_:1}),t[35]||(t[35]=p("h3",{class:"text-subtitle-1 font-weight-medium"},"显示配置",-1))]),n(Se,null,{default:r(()=>[n(K,{cols:"12",sm:"6"},{default:r(()=>[n(Be,{modelValue:s.settings.hideTeacherName,"onUpdate:modelValue":t[8]||(t[8]=l=>s.settings.hideTeacherName=l),label:"不显示教师姓名",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),n(K,{cols:"12",sm:"6"},{default:r(()=>[n(Be,{modelValue:s.settings.hideRoom,"onUpdate:modelValue":t[9]||(t[9]=l=>s.settings.hideRoom=l),label:"不显示教室信息",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),n(K,{cols:"12",sm:"6"},{default:r(()=>[n(Gt,{modelValue:s.settings.totalWeeks,"onUpdate:modelValue":t[10]||(t[10]=l=>s.settings.totalWeeks=l),modelModifiers:{number:!0},label:"总周数",type:"number",min:"1",max:"30",rules:[l=>l>0||"周数必须大于0"],density:"comfortable",variant:"outlined","prepend-inner-icon":"mdi-calendar-week",class:"mt-3"},null,8,["modelValue","rules"])]),_:1})]),_:1})]),_:1})]),_:1}),s.loading?(f(),A(Z,{key:3,class:"my-4",outlined:""},{default:r(()=>[n(se,null,{default:r(()=>[n(Zt,{type:"table",class:"mx-auto"})]),_:1})]),_:1})):V("",!0),s.processedData?(f(),A(Y,{key:4,color:"primary",class:"ml-2","prepend-icon":"mdi-book-open-variant"},{default:r(()=>[c(x(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})):V("",!0),s.processedData&&s.exportPeriods.length===0?(f(),A($,{key:5,type:"warning",class:"mb-4",closable:""},{default:r(()=>t[36]||(t[36]=[c(" 请选择要导出的节次 ")])),_:1})):V("",!0),s.processedData?(f(),A(Z,{key:6,class:"my-4",elevation:"1"},{default:r(()=>[n(me,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:r(()=>[n(E,{color:"primary",class:"mr-2"},{default:r(()=>t[37]||(t[37]=[c("mdi-table")])),_:1}),t[39]||(t[39]=p("span",{class:"font-weight-bold"},"课程表",-1)),n(Y,{color:"primary",class:"ml-3",size:"small",pill:""},{default:r(()=>[n(E,{start:"",size:"x-small"},{default:r(()=>t[38]||(t[38]=[c("mdi-book-open-variant")])),_:1}),c(" "+x(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})]),_:1}),n(se,{class:"pa-0"},{default:r(()=>[n(qt,{"items-selected":s.selectedRows,"onUpdate:itemsSelected":[t[12]||(t[12]=l=>s.selectedRows=l),i.updateSelectedPeriods],headers:s.tableHeaders,items:s.processedData.tableData,"hide-default-footer":"",class:"elevation-1","items-per-page":-1,"item-value":"period","show-select":"","select-strategy":"single-independent","sort-by":[],"disable-sort":""},_t({"item.data-table-select":r(({item:l})=>[n(es,{modelValue:s.exportPeriods,"onUpdate:modelValue":t[11]||(t[11]=u=>s.exportPeriods=u),value:l.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),_:2},[z(7,l=>({name:`item.${l}`,fn:r(({item:u})=>[u[l]?(f(),T("div",Vs,[Array.isArray(u[l])?(f(!0),T(j,{key:0},z(u[l],(d,m)=>(f(),T("div",{key:m,class:"course-item"},[c(x(d.name)+" ",1),!s.settings.hideTeacherName&&d.teacher?(f(),T("span",Cs,[t[40]||(t[40]=p("br",null,null,-1)),c(x(d.teacher),1)])):V("",!0),!s.settings.hideRoom&&d.room?(f(),T("span",Ss,[t[41]||(t[41]=p("br",null,null,-1)),c(x(d.room),1)])):V("",!0),d.weekType?(f(),T("span",Ds,x(d.weekType)+"周 ",1)):V("",!0)]))),128)):(f(),T(j,{key:1},[c(x(u[l].name)+" ",1),!s.settings.hideTeacherName&&u[l].teacher?(f(),T("span",Ps,[t[42]||(t[42]=p("br",null,null,-1)),c(x(u[l].teacher),1)])):V("",!0),!s.settings.hideRoom&&u[l].room?(f(),T("span",js,[t[43]||(t[43]=p("br",null,null,-1)),c(x(u[l].room),1)])):V("",!0),u[l].weekType?(f(),T("span",Bs,x(u[l].weekType)+"周 ",1)):V("",!0)],64))])):V("",!0)])}))]),1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):V("",!0),i.hasExportData?(f(),A(Z,{key:7,class:"my-4",elevation:"1"},{default:r(()=>[n(me,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:r(()=>[n(E,{color:"primary",class:"mr-2"},{default:r(()=>t[44]||(t[44]=[c("mdi-timetable")])),_:1}),t[48]||(t[48]=p("span",{class:"font-weight-bold"},"每日课程时间表",-1)),n(Y,{class:"ml-3",size:"small",color:"primary",pill:""},{default:r(()=>[n(E,{start:"",size:"x-small"},{default:r(()=>t[45]||(t[45]=[c("mdi-clock-outline")])),_:1}),c(" "+x(i.totalClassHours)+" 课时 ",1)]),_:1}),s.exportPeriods.length>0?(f(),A(fe,{key:0},{activator:r(({props:l})=>[n(Y,I({class:"ml-2",size:"small",color:"info"},l,{pill:""}),{default:r(()=>[n(E,{start:"",size:"x-small"},{default:r(()=>t[46]||(t[46]=[c("mdi-information-outline")])),_:1}),t[47]||(t[47]=c(" 节次已重排 "))]),_:2},1040)]),default:r(()=>[p("span",null,"已将选中的节次 "+x(s.exportPeriods.join(", "))+" 重新排序为连续的 1-"+x(s.exportPeriods.length),1)]),_:1})):V("",!0)]),_:1}),n(se,null,{default:r(()=>[i.daysWithSchedule.length>0?(f(),A(Ee,{key:0,modelValue:s.activeDay,"onUpdate:modelValue":t[13]||(t[13]=l=>s.activeDay=l),class:"mb-4",color:"primary",grow:"","align-tabs":"center"},{default:r(()=>[(f(!0),T(j,null,z(i.daysWithSchedule,l=>(f(),A(le,{key:l,value:l,class:"px-2 font-weight-medium"},{default:r(()=>[c(x(s.dayNames[l])+" ",1),n(Ae,{content:i.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):V("",!0),n(oe,{modelValue:s.activeDay,"onUpdate:modelValue":t[14]||(t[14]=l=>s.activeDay=l)},{default:r(()=>[(f(!0),T(j,null,z(i.daysWithSchedule,l=>(f(),A(ee,{key:l,value:l},{default:r(()=>[n(Kt,{density:"compact",class:"rounded","headers-length":6,"disable-sort":""},{default:r(()=>[t[50]||(t[50]=p("thead",null,[p("tr",null,[p("th",{class:"text-center"},"节次"),p("th",null,"课程"),p("th",null,"时间"),p("th",null,"教师"),p("th",null,"教室"),p("th",null,"周次")])],-1)),p("tbody",null,[(f(!0),T(j,null,z(i.groupByPeriod(i.getDaySchedule(l)),(u,d)=>(f(),T("tr",{key:d},[p("td",As,[c(x(u.period)+" ",1),u.originalPeriod!==u.period?(f(),A(fe,{key:0},{activator:r(({props:m})=>[n(E,I({size:"x-small",ref_for:!0},m,{color:"info",class:"ml-1"}),{default:r(()=>t[49]||(t[49]=[c("mdi-sync")])),_:2},1040)]),default:r(()=>[c(" 原节次: "+x(u.originalPeriod),1)]),_:2},1024)):V("",!0)]),p("td",null,[(f(!0),T(j,null,z(u.items,(m,y)=>(f(),T("div",{key:y,class:"mb-1"},[n(Y,{size:"small",color:i.getSubjectColor(m.subject),label:"","text-color":"white",class:"mr-1"},{default:r(()=>[c(x(m.subject),1)]),_:2},1032,["color"]),u.items.length>1?(f(),A(Y,{key:0,size:"x-small",class:"ml-1",color:m.weekType==="单"?"warning":"success"},{default:r(()=>[c(x(m.weekType)+"周 ",1)]),_:2},1032,["color"])):V("",!0)]))),128))]),p("td",null,[(f(!0),T(j,null,z(u.uniqueTimeSlots,(m,y)=>(f(),T("div",{key:y,class:"mb-1"},[n(Y,{size:"x-small",class:"time-chip"},{default:r(()=>[c(x(i.formatTime(m.startTime))+" - "+x(i.formatTime(m.endTime)),1)]),_:2},1024)]))),128))]),p("td",null,[s.settings.hideTeacherName?(f(),T(j,{key:1},[c("-")],64)):(f(!0),T(j,{key:0},z(u.items,(m,y)=>(f(),T("div",{key:y,class:"mb-1"},x(m.teacher||"-"),1))),128))]),p("td",null,[s.settings.hideRoom?(f(),T(j,{key:1},[c("-")],64)):(f(!0),T(j,{key:0},z(u.items,(m,y)=>(f(),T("div",{key:y,class:"mb-1"},x(m.room||"-"),1))),128))]),p("td",null,[(f(!0),T(j,null,z(u.items,(m,y)=>(f(),T("div",{key:y,class:"mb-1"},x(m.weeks),1))),128))])]))),128))])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),i.hasExportData&&i.daysWithSchedule.length===0?(f(),A($,{key:1,type:"info",class:"mt-3"},{default:r(()=>t[51]||(t[51]=[c(" 没有找到任何课程数据 ")])),_:1})):V("",!0)]),_:1})]),_:1})):V("",!0)]),_:1}),n(Mt,{class:""},{default:r(()=>[n(Ht),n(M,{color:"primary",variant:"outlined",loading:s.loading,disabled:!s.jsonText&&!s.file||s.loading,onClick:i.processInput,"prepend-icon":"mdi-cog-refresh"},{default:r(()=>t[52]||(t[52]=[c(" 处理数据 ")])),_:1},8,["loading","disabled","onClick"]),n(M,{color:"info",disabled:!i.hasExportData,onClick:i.showExportPreview,class:"ml-2","prepend-icon":"mdi-eye",border:""},{default:r(()=>t[53]||(t[53]=[c(" 刷新 ")])),_:1},8,["disabled","onClick"]),n(M,{color:"success",variant:"outlined",disabled:!i.hasExportData,onClick:i.downloadCSV,class:"ml-2","prepend-icon":"mdi-download",border:""},{default:r(()=>t[54]||(t[54]=[c(" 下载CSV ")])),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Fs=Wt(bs,[["render",Es],["__scopeId","data-v-d6c2f846"]]);export{Fs as default};
|