mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-09-03 16:19:22 +00:00
8 lines
36 KiB
JavaScript
8 lines
36 KiB
JavaScript
import{g as Z,p as K,N as Ae,ac as Qe,J as Be,aF as Ee,aG as $e,aa as et,u as tt,c as Q,aH as st,d as i,i as h,O as lt,a5 as at,aI as rt,E as B,v as j,f as it,aJ as ot,ad as nt,m as Ne,ae as dt,ag as ut,h as ct,M as mt,S as fe,W as J,aK as ft,aL as Re,aM as he,$ as Me,U as Ie,K as L,aN as ve,Y as O,X as ht,Z as yt,F as D,e as We,aO as bt,aP as pt,y as W,n as gt,aQ as vt,aR as kt,aS as Tt,aT as xt,aU as Vt,aV as wt,L as Ct,aW as Dt,aX as St,_ as Pt,j as P,o as c,w as o,l as H,q as ue,t as u,ap as jt,z as te,B as V,A as v,C as k,D as At,G as M,aY as Bt,av as Et,x as Nt}from"./index-DmGr2YjE.js";import{a as ke,V as G}from"./VRow-2V1J5F3c.js";import{V as X}from"./VAlert-BGPbp463.js";import{V as ze,a as Rt,b as Mt,c as Te,d as ce}from"./VTabsWindowItem-CevZz8wf.js";import{V as z,a as xe,m as It,b as Wt}from"./VChip-Cb9zLh7n.js";import{V as me}from"./VTooltip-CQ-iFGD1.js";import{V as zt}from"./VTextarea-GxradEKI.js";import{u as Le,a as le,m as Fe,b as Ve,c as Lt,d as Ft,V as _t}from"./VTextField-C4kOar5O.js";import{V as we}from"./VSwitch-Cqv0EiRW.js";import{V as Ut}from"./VSkeletonLoader-CuMOQJqJ.js";import{V as Ot,a as Yt}from"./VDataTable-DAMkWB1R.js";import{V as Ce,m as Ht}from"./VCheckboxBtn-vttsGEHT.js";import{V as Gt}from"./VContainer-D6AyJkGG.js";import"./VMenu-BNxvK6X3.js";const Jt=K({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,floating:Boolean,icon:mt,inline:Boolean,label:{type:String,default:"$vuetify.badge"},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...ct(),...ut({location:"top end"}),...dt(),...Ne(),...nt(),...ot({transition:"scale-rotate-transition"}),...it()},"VBadge"),De=Z()({name:"VBadge",inheritAttrs:!1,props:Jt(),setup(t,e){const{backgroundColorClasses:n,backgroundColorStyles:a}=Ae(()=>t.color),{roundedClasses:s}=Qe(t),{t:r}=Be(),{textColorClasses:l,textColorStyles:d}=Ee(()=>t.textColor),{themeClasses:m}=$e(),{locationStyles:y}=et(t,!0,b=>(t.floating?t.dot?2:4:t.dot?8:12)+(["top","bottom"].includes(b)?Number(t.offsetY??0):["left","right"].includes(b)?Number(t.offsetX??0):0)),{dimensionStyles:T}=tt(t);return Q(()=>{const b=Number(t.content),p=!t.max||isNaN(b)?t.content:b<=Number(t.max)?b:`${t.max}+`,[g,x]=st(e.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return i(t.tag,B({class:["v-badge",{"v-badge--bordered":t.bordered,"v-badge--dot":t.dot,"v-badge--floating":t.floating,"v-badge--inline":t.inline},t.class]},x,{style:t.style}),{default:()=>{var S,E;return[h("div",{class:"v-badge__wrapper"},[(E=(S=e.slots).default)==null?void 0:E.call(S),i(lt,{transition:t.transition},{default:()=>{var C,A;return[at(h("span",B({class:["v-badge__badge",m.value,n.value,s.value,l.value],style:[a.value,d.value,T.value,t.inline?{}:y.value],"aria-atomic":"true","aria-label":r(t.label,b),"aria-live":"polite",role:"status"},g),[t.dot?void 0:e.slots.badge?(A=(C=e.slots).badge)==null?void 0:A.call(C):t.icon?i(j,{icon:t.icon},null):p]),[[rt,t.modelValue]])]}})])]}})}),{}}}),qt=K({...Fe(),...Me(Ht(),["inline"])},"VCheckbox"),Xt=Z()({name:"VCheckbox",inheritAttrs:!1,props:qt(),emits:{"update:modelValue":t=>!0,"update:focused":t=>!0},setup(t,e){let{attrs:n,slots:a}=e;const s=fe(t,"modelValue"),{isFocused:r,focus:l,blur:d}=Le(t),m=J(),y=ft();return Q(()=>{const[T,b]=Re(n),p=le.filterProps(t),g=Ce.filterProps(t);return i(le,B({ref:m,class:["v-checkbox",t.class]},T,p,{modelValue:s.value,"onUpdate:modelValue":x=>s.value=x,id:t.id||`checkbox-${y}`,focused:r.value,style:t.style}),{...a,default:x=>{let{id:S,messagesId:E,isDisabled:C,isReadonly:A,isValid:N}=x;return i(Ce,B(g,{id:S.value,"aria-describedby":E.value,disabled:C.value,readonly:A.value},b,{error:N.value===!1,modelValue:s.value,"onUpdate:modelValue":R=>s.value=R,onFocus:l,onBlur:d}),a)}})}),he({},m)}});function Zt(){function t(n){var s,r;return[...((s=n.dataTransfer)==null?void 0:s.items)??[]].filter(l=>l.kind==="file").map(l=>l.webkitGetAsEntry()).filter(Boolean).length>0||[...((r=n.dataTransfer)==null?void 0:r.files)??[]].length>0}async function e(n){var r,l;const a=[],s=[...((r=n.dataTransfer)==null?void 0:r.items)??[]].filter(d=>d.kind==="file").map(d=>d.webkitGetAsEntry()).filter(Boolean);if(s.length)for(const d of s){const m=await _e(d,Ue(".",d));a.push(...m.map(y=>y.file))}else a.push(...((l=n.dataTransfer)==null?void 0:l.files)??[]);return a}return{handleDrop:e,hasFilesOrFolders:t}}function _e(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return new Promise((n,a)=>{t.isFile?t.file(r=>n([{file:r,path:e}]),a):t.isDirectory&&t.createReader().readEntries(async r=>{const l=[];for(const d of r)l.push(...await _e(d,Ue(e,d)));n(l)})})}function Ue(t,e){return e.isDirectory?`${t}/${e.name}`:t}const Kt=K({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:t=>typeof t=="boolean"||[1e3,1024].includes(Number(t))},...Fe({prependIcon:"$file"}),modelValue:{type:[Array,Object],default:t=>t.multiple?[]:null,validator:t=>Ie(t).every(e=>e!=null&&typeof e=="object")},...Ft({clearable:!0})},"VFileInput"),Qt=Z()({name:"VFileInput",inheritAttrs:!1,props:Kt(),emits:{"click:control":t=>!0,"mousedown:control":t=>!0,"update:focused":t=>!0,"update:modelValue":t=>!0},setup(t,e){let{attrs:n,emit:a,slots:s}=e;const{t:r}=Be(),l=fe(t,"modelValue",t.modelValue,f=>Ie(f),f=>!t.multiple&&Array.isArray(f)?f[0]:f),{isFocused:d,focus:m,blur:y}=Le(t),T=L(()=>typeof t.showSize!="boolean"?t.showSize:void 0),b=L(()=>(l.value??[]).reduce((f,w)=>{let{size:U=0}=w;return f+U},0)),p=L(()=>ve(b.value,T.value)),g=L(()=>(l.value??[]).map(f=>{const{name:w="",size:U=0}=f;return t.showSize?`${w} (${ve(U,T.value)})`:w})),x=L(()=>{var w;const f=((w=l.value)==null?void 0:w.length)??0;return t.showSize?r(t.counterSizeString,f,p.value):r(t.counterString,f)}),S=J(),E=J(),C=J(),A=O(()=>d.value||t.active),N=L(()=>["plain","underlined"].includes(t.variant)),R=ht(!1),{handleDrop:Y,hasFilesOrFolders:$}=Zt();function I(){var f;C.value!==document.activeElement&&((f=C.value)==null||f.focus()),d.value||m()}function ae(f){var w;(w=C.value)==null||w.click()}function re(f){a("mousedown:control",f)}function F(f){var w;(w=C.value)==null||w.click(),a("click:control",f)}function ie(f){f.stopPropagation(),I(),bt(()=>{l.value=[],pt(t["onClick:clear"],f)})}function ye(f){f.preventDefault(),f.stopImmediatePropagation(),R.value=!0}function oe(f){f.preventDefault(),R.value=!1}async function ne(f){if(f.preventDefault(),f.stopImmediatePropagation(),R.value=!1,!C.value||!$(f))return;const w=new DataTransfer;for(const U of await Y(f))w.items.add(U);C.value.files=w.files,C.value.dispatchEvent(new Event("change",{bubbles:!0}))}return yt(l,f=>{(!Array.isArray(f)||!f.length)&&C.value&&(C.value.value="")}),Q(()=>{const f=!!(s.counter||t.counter),w=!!(f||s.details),[U,Oe]=Re(n),{modelValue:gs,...Ye}=le.filterProps(t),He={...Ve.filterProps(t),"onClick:clear":ie};return i(le,B({ref:S,modelValue:t.multiple?l.value:l.value[0],class:["v-file-input",{"v-file-input--chips":!!t.chips,"v-file-input--dragging":R.value,"v-file-input--hide":t.hideInput,"v-input--plain-underlined":N.value},t.class],style:t.style,"onClick:prepend":ae},U,Ye,{centerAffix:!N.value,focused:d.value}),{...s,default:de=>{let{id:ee,isDisabled:q,isDirty:be,isReadonly:pe,isValid:Ge,hasDetails:Je}=de;return i(Ve,B({ref:E,prependIcon:t.prependIcon,onMousedown:re,onClick:F,"onClick:prependInner":t["onClick:prependInner"],"onClick:appendInner":t["onClick:appendInner"]},He,{id:ee.value,active:A.value||be.value,dirty:be.value||t.dirty,disabled:q.value,focused:d.value,details:Je.value,error:Ge.value===!1,onDragover:ye,onDrop:ne}),{...s,default:qe=>{var ge;let{props:{class:Xe,...Ze}}=qe;return h(D,null,[h("input",B({ref:C,type:"file",readonly:pe.value,disabled:q.value,multiple:t.multiple,name:t.name,onClick:_=>{_.stopPropagation(),pe.value&&_.preventDefault(),I()},onChange:_=>{if(!_.target)return;const Ke=_.target;l.value=[...Ke.files??[]]},onDragleave:oe,onFocus:I,onBlur:y},Ze,Oe),null),h("div",{class:We(Xe)},[!!((ge=l.value)!=null&&ge.length)&&!t.hideInput&&(s.selection?s.selection({fileNames:g.value,totalBytes:b.value,totalBytesReadable:p.value}):t.chips?g.value.map(_=>i(z,{key:_,size:"small",text:_},null)):g.value.join(", "))])])}})},details:w?de=>{var ee,q;return h(D,null,[(ee=s.details)==null?void 0:ee.call(s,de),f&&h(D,null,[h("span",null,null),i(Lt,{active:!!((q=l.value)!=null&&q.length),value:x.value,disabled:t.disabled},s.counter)])])}:void 0})}),he({},S,E,C)}}),$t=K({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...Me(vt({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),se=Z()({name:"VTab",props:$t(),setup(t,e){let{slots:n,attrs:a}=e;const{textColorClasses:s,textColorStyles:r}=Ee(()=>t.sliderColor),l=J(),d=J(),m=L(()=>t.direction==="horizontal"),y=L(()=>{var b,p;return((p=(b=l.value)==null?void 0:b.group)==null?void 0:p.isSelected.value)??!1});function T(b){var g,x;let{value:p}=b;if(p){const S=(x=(g=l.value)==null?void 0:g.$el.parentElement)==null?void 0:x.querySelector(".v-tab--selected .v-tab__slider"),E=d.value;if(!S||!E)return;const C=getComputedStyle(S).color,A=S.getBoundingClientRect(),N=E.getBoundingClientRect(),R=m.value?"x":"y",Y=m.value?"X":"Y",$=m.value?"right":"bottom",I=m.value?"width":"height",ae=A[R],re=N[R],F=ae>re?A[$]-N[$]:A[R]-N[R],ie=Math.sign(F)>0?m.value?"right":"bottom":Math.sign(F)<0?m.value?"left":"top":"center",oe=(Math.abs(F)+(Math.sign(F)<0?A[I]:N[I]))/Math.max(A[I],N[I])||0,ne=A[I]/N[I]||0,f=1.5;kt(E,{backgroundColor:[C,"currentcolor"],transform:[`translate${Y}(${F}px) scale${Y}(${ne})`,`translate${Y}(${F/f}px) scale${Y}(${(oe-1)/f+1})`,"none"],transformOrigin:Array(3).fill(ie)},{duration:225,easing:Tt})}}return Q(()=>{const b=W.filterProps(t);return i(W,B({symbol:ze,ref:l,class:["v-tab",t.class],style:t.style,tabindex:y.value?0:-1,role:"tab","aria-selected":String(y.value),active:!1},b,a,{block:t.fixed,maxWidth:t.fixed?300:void 0,"onGroup:selected":T}),{...n,default:()=>{var p;return h(D,null,[((p=n.default)==null?void 0:p.call(n))??t.text,!t.hideSlider&&h("div",{ref:d,class:We(["v-tab__slider",s.value]),style:gt(r.value)},null)])}})}),he({},l)}});function es(t){return t?t.map(e=>St(e)?e:{text:e,value:e}):[]}const ts=K({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,...It({mandatory:"force",selectedClass:"v-tab-item--selected"}),...Dt(),...Ne()},"VTabs"),Se=Z()({name:"VTabs",props:ts(),emits:{"update:modelValue":t=>!0},setup(t,e){let{attrs:n,slots:a}=e;const s=fe(t,"modelValue"),r=L(()=>es(t.items)),{densityClasses:l}=xt(t),{backgroundColorClasses:d,backgroundColorStyles:m}=Ae(()=>t.bgColor),{scopeId:y}=Vt();return wt({VTab:{color:O(()=>t.color),direction:O(()=>t.direction),stacked:O(()=>t.stacked),fixed:O(()=>t.fixedTabs),sliderColor:O(()=>t.sliderColor),hideSlider:O(()=>t.hideSlider)}}),Q(()=>{const T=xe.filterProps(t),b=!!(a.window||t.items.length>0);return h(D,null,[i(xe,B(T,{modelValue:s.value,"onUpdate:modelValue":p=>s.value=p,class:["v-tabs",`v-tabs--${t.direction}`,`v-tabs--align-tabs-${t.alignTabs}`,{"v-tabs--fixed-tabs":t.fixedTabs,"v-tabs--grow":t.grow,"v-tabs--stacked":t.stacked},l.value,d.value,t.class],style:[{"--v-tabs-height":Ct(t.height)},m.value,t.style],role:"tablist",symbol:ze},y,n),{default:()=>{var p;return[((p=a.default)==null?void 0:p.call(a))??r.value.map(g=>{var x;return((x=a.tab)==null?void 0:x.call(a,{item:g}))??i(se,B(g,{key:g.text,value:g.value}),{default:a[`tab.${g.value}`]?()=>{var S;return(S=a[`tab.${g.value}`])==null?void 0:S.call(a,{item:g})}:void 0})})]}}),b&&i(Mt,B({modelValue:s.value,"onUpdate:modelValue":p=>s.value=p,key:"tabs-window"},y),{default:()=>{var p;return[r.value.map(g=>{var x;return((x=a.item)==null?void 0:x.call(a,{item:g}))??i(Rt,{value:g.value},{default:()=>{var S;return(S=a[`item.${g.value}`])==null?void 0:S.call(a,{item:g})}})}),(p=a.window)==null?void 0:p.call(a)]}})])}),{}}}),Pe=()=>new Promise((t,e)=>{if(typeof window.jsyaml<"u")return t(window.jsyaml);const n=document.createElement("script");n.src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js",n.async=!0,n.onload=()=>t(window.jsyaml),n.onerror=()=>e(new Error("无法加载YAML解析库")),document.head.appendChild(n)});class je{constructor(e){this.data=e,this.version=null,this.subjects=[],this.schedules=[],this._parseData()}_parseData(){if(!this.data)return;this.version=this.data.version||1;const e=this.data.subjects||[];for(const a of e)this.subjects.push({name:a.name,simplified_name:a.simplified_name||null,teacher:a.teacher||null,room:a.room||null});const n=this.data.schedules||[];for(const a of n){const s=[];for(const r of a.classes||[])s.push({subject:r.subject,start_time:r.start_time,end_time:r.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(e){const n=this.schedules.find(a=>a.enable_day===e);return n?n.classes:[]}toCsesData(){return{version:this.version,subjects:this.subjects,schedules:this.schedules}}}const ss={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 t=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),n={};return e.sort((a,s)=>a.period-s.period).forEach((a,s)=>{n[a.period]=s+1}),e.forEach(a=>{for(let s=1;s<=7;s++){if(!this.selectedDays.includes(s))continue;const r=a[s];if(r)if(Array.isArray(r))r.forEach(l=>{!l||!l.name||t.push({originalPeriod:a.period,period:n[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(!r.name)continue;t.push({originalPeriod:a.period,period:n[a.period],subject:r.name,day:this.dayNames[s],startTime:r.startTime,endTime:r.endTime,teacher:this.settings.hideTeacherName?"":r.teacher||"",room:this.settings.hideRoom?"":r.room||"",weeks:r.weekType?`1-${this.settings.totalWeeks}${r.weekType}`:`1-${this.settings.totalWeeks}`})}}}),t.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const r={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return r[a.day]-r[s.day]})},hasExportData(){return this.processedData&&this.exportPeriods.length>0},totalClassHours(){return this.timeTableData.length},daysWithSchedule(){const t=[];for(let e=1;e<=7;e++)this.selectedDays.includes(e)&&this.getDaySchedule(e).length>0&&t.push(e);return t}},methods:{async handleFileChange(){if(this.resetData(),!this.file)return;const t=this.file.name.toLowerCase();if(t.endsWith(".json")||t.endsWith(".js"))this.formatMode="json";else if((t.endsWith(".yml")||t.endsWith(".yaml"))&&(this.formatMode="yaml",!this.yamlLibLoaded))try{await Pe(),this.yamlLibLoaded=!0}catch(e){this.error=`无法加载YAML解析库: ${e.message}`;return}try{const e=new FileReader;e.onload=async n=>{try{this.jsonText=n.target.result,await this.processInput()}catch(a){this.error=`文件读取失败: ${a.message}`}},e.onerror=()=>{this.error="文件读取失败"},e.readAsText(this.file)}catch(e){this.error=`文件处理失败: ${e.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 t;try{if(this.formatMode==="yaml"||this.formatMode==="auto"&&this.isYaml(this.jsonText)){const n=this.parseYaml(this.jsonText);t=new je(n).toCsesData()}else t=JSON.parse(this.jsonText)}catch(n){throw new Error(`格式解析错误: ${n.message}`)}if(!this.validateCsesFormat(t))throw new Error("不是有效的CSES格式数据");const e=this.processCsesData(t);this.processedData=e,this.selectedDays=[1,2,3,4,5],this.success="数据处理成功!",e.tableData&&e.tableData.length>0&&(this.selectedRows=[...e.tableData],this.exportPeriods=e.tableData.map(n=>n.period))}catch(t){this.error="数据处理失败:"+t.message,console.error(t)}finally{this.loading=!1}},validateCsesFormat(t){return t instanceof je?t.version===1&&Array.isArray(t.subjects)&&Array.isArray(t.schedules):!(!t||typeof t!="object"||t.version!==1||!Array.isArray(t.subjects)||!Array.isArray(t.schedules))},processCsesData(t){const{schedules:e,subjects:n}=t,a=Object.fromEntries(n.map(l=>[l.name,l])),s=[];let r=0;e.forEach(l=>{l.classes&&l.classes.length>r&&(r=l.classes.length)});for(let l=1;l<=r;l++)s.push({period:l,1:null,2:null,3:null,4:null,5:null,6:null,7:null});return e.forEach(l=>{const d=l.enable_day;if(!d||d<1||d>7)return;let m="";l.weeks==="odd"?m="单":l.weeks==="even"&&(m="双"),l.classes.forEach((y,T)=>{if(!y.subject)return;const b=T+1;if(b>r)return;const p=a[y.subject]||{},g={name:y.subject,teacher:p.teacher||"",room:p.room||"",period:b,startTime:y.start_time,endTime:y.end_time,day:d,weekType:m},x=s[b-1][d];x?m&&x.weekType&&m!==x.weekType?(Array.isArray(s[b-1][d])||(s[b-1][d]=[x]),s[b-1][d].push(g)):m===x.weekType?s[b-1][d]=g:m||(s[b-1][d]=g):s[b-1][d]=g})}),{tableData:s,originalData:t}},updateSelectedPeriods(t){this.exportPeriods=[],t&&t.length>0&&(this.exportPeriods=[...new Set(t.filter(e=>e&&typeof e.period=="number").map(e=>e.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 t=`课程名称,星期,开始节数,结束节数,老师,地点,周数
|
|
`;for(const r of this.daysWithSchedule){const l=this.groupByPeriod(this.getDaySchedule(r));for(const d of l)for(const m of d.items){const y={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7}[m.day],T=this.settings.hideTeacherName?"":m.teacher||"",b=this.settings.hideRoom?"":m.room||"";t+=`${m.subject},${y},${m.period},${m.period},${T},${b},${m.weeks}
|
|
`}}const e="\uFEFF",n=new Blob([e+t],{type:"text/csv;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(n),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 t=this.timeTableData.slice(0,5).map(e=>`${e.subject} (${e.day} 第${e.period}节)`).join(`
|
|
`);this.timeTableData.length>5?this.success=`导出预览 (共${this.totalClassHours}课时):
|
|
${t}
|
|
...等${this.totalClassHours-5}节课程`:this.success=`导出预览 (共${this.totalClassHours}课时):
|
|
${t}`,this.$nextTick(()=>{this.daysWithSchedule.length>0&&!this.activeDay&&(this.activeDay=this.daysWithSchedule[0])})},isYaml(t){const e=t.trim();if(e.startsWith("{")||e.startsWith("["))try{return JSON.parse(e),!1}catch{}return/^\s*[a-zA-Z0-9_-]+\s*:/.test(e)||/\n\s*[a-zA-Z0-9_-]+\s*:/.test(e)},parseYaml(t){try{if(typeof window.jsyaml<"u")return window.jsyaml.load(t);throw new Error("YAML解析器未加载")}catch(e){throw new Error(`YAML解析错误: ${e.message}`)}},getDaySchedule(t){return this.timeTableData?this.getUnfilteredTimeTableData().filter(n=>({周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7})[n.day]===t):[]},getUnfilteredTimeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const t=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),n={};return e.sort((a,s)=>a.period-s.period).forEach((a,s)=>{n[a.period]=s+1}),e.forEach(a=>{for(let s=1;s<=7;s++){const r=a[s];if(r)if(Array.isArray(r))r.forEach(l=>{!l||!l.name||t.push({originalPeriod:a.period,period:n[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(!r.name)continue;t.push({originalPeriod:a.period,period:n[a.period],subject:r.name,day:this.dayNames[s],startTime:r.startTime,endTime:r.endTime,teacher:this.settings.hideTeacherName?"":r.teacher||"",room:this.settings.hideRoom?"":r.room||"",weeks:r.weekType?`1-${this.settings.totalWeeks}${r.weekType}`:`1-${this.settings.totalWeeks}`})}}}),t.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const r={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return r[a.day]-r[s.day]})},groupByPeriod(t){const e={};return t.forEach(n=>{e[n.period]||(e[n.period]={period:n.period,originalPeriod:n.originalPeriod,items:[],timeSlots:[]}),e[n.period].items.push(n),e[n.period].timeSlots.push({startTime:n.startTime,endTime:n.endTime})}),Object.values(e).forEach(n=>{n.uniqueTimeSlots=[],n.timeSlots.forEach(a=>{n.uniqueTimeSlots.some(s=>s.startTime===a.startTime&&s.endTime===a.endTime)||n.uniqueTimeSlots.push(a)}),n.uniqueTimeSlots.sort((a,s)=>a.startTime.localeCompare(s.startTime))}),Object.values(e).sort((n,a)=>n.period-a.period)},formatTime(t){return t?t.substring(0,5):""},getSubjectColor(t){return this.subjectColors[t]||"grey"},selectAllDays(){this.selectedDays=[1,2,3,4,5,6,7]},clearSelectedDays(){this.selectedDays=[]}},async mounted(){try{await Pe(),this.yamlLibLoaded=!0}catch(t){this.error=t.message}this.$watch("daysWithSchedule",t=>{t.length>0&&!this.activeDay&&(this.activeDay=t[0])})}},ls={class:"d-flex align-center"},as={class:"d-flex align-center"},rs={key:2,class:"text-caption mb-2"},is={class:"d-flex align-center mb-2"},os={class:"d-flex align-center mb-3"},ns={class:"d-flex align-center mb-3"},ds={key:0,class:"course-cell"},us={key:0},cs={key:1},ms={key:2,class:"week-type"},fs={key:0},hs={key:1},ys={key:2,class:"week-type"},bs={class:"text-center font-weight-bold"};function ps(t,e,n,a,s,r){return c(),P(Gt,{class:"fill-height"},{default:o(()=>[i(ke,null,{default:o(()=>[i(G,{cols:"12"},{default:o(()=>[i(H,{class:"elevation-12",border:""},{default:o(()=>[i(ue,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:o(()=>[i(j,{color:"white",class:"mr-2"},{default:o(()=>[...e[15]||(e[15]=[u("mdi-swap-horizontal",-1)])]),_:1}),e[16]||(e[16]=u(" 课程表转换工具 ",-1))]),_:1}),i(jt,null,{default:o(()=>[...e[17]||(e[17]=[u(" 将CSES格式的JSON或YAML文本转换为WakeUp软件使用的课程表 ",-1)])]),_:1}),i(te,null,{default:o(()=>[s.error?(c(),P(X,{key:0,type:"error",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[0]||(e[0]=l=>s.error="")},{default:o(()=>[h("div",ls,[i(j,{class:"mr-2"},{default:o(()=>[...e[18]||(e[18]=[u("mdi-alert-circle",-1)])]),_:1}),u(" "+k(s.error),1)])]),_:1})):V("",!0),s.success?(c(),P(X,{key:1,type:"success",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[1]||(e[1]=l=>s.success="")},{default:o(()=>[h("div",as,[i(j,{class:"mr-2"},{default:o(()=>[...e[19]||(e[19]=[u("mdi-check-circle",-1)])]),_:1}),u(" "+k(s.success),1)])]),_:1})):V("",!0),i(Se,{modelValue:s.activeTab,"onUpdate:modelValue":e[2]||(e[2]=l=>s.activeTab=l),class:"mb-4 mx-2",color:"primary",rounded:""},{default:o(()=>[i(se,{value:"text",class:"px-5"},{default:o(()=>[i(j,{start:""},{default:o(()=>[...e[20]||(e[20]=[u("mdi-text-box",-1)])]),_:1}),e[21]||(e[21]=u(" 文本粘贴",-1))]),_:1}),i(se,{value:"file",class:"px-5"},{default:o(()=>[i(j,{start:""},{default:o(()=>[...e[22]||(e[22]=[u("mdi-file-upload",-1)])]),_:1}),e[23]||(e[23]=u(" 文件上传",-1))]),_:1})]),_:1},8,["modelValue"]),i(At,{modelValue:s.formatMode,"onUpdate:modelValue":e[3]||(e[3]=l=>s.formatMode=l),color:"primary",class:"mb-4 mx-2",mandatory:"",density:"comfortable",border:"",rounded:""},{default:o(()=>[i(W,{value:"auto"},{default:o(()=>[...e[24]||(e[24]=[u("自动检测",-1)])]),_:1}),i(W,{value:"json"},{default:o(()=>[...e[25]||(e[25]=[u("JSON",-1)])]),_:1}),i(W,{value:"yaml",disabled:!s.yamlLibLoaded},{default:o(()=>[e[26]||(e[26]=u(" YAML ",-1)),i(me,{activator:"parent",location:"bottom"},{default:o(()=>[u(k(s.yamlLibLoaded?"YAML解析库已加载":"正在加载YAML解析库..."),1)]),_:1})]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),s.jsonText&&s.formatMode==="auto"?(c(),v("div",rs," 检测到的格式: "+k(r.isYaml(s.jsonText)?"YAML":"JSON"),1)):V("",!0),i(Te,{modelValue:s.activeTab,"onUpdate:modelValue":e[6]||(e[6]=l=>s.activeTab=l)},{default:o(()=>[i(ce,{value:"text"},{default:o(()=>[h("div",is,[i(zt,{modelValue:s.jsonText,"onUpdate:modelValue":e[4]||(e[4]=l=>s.jsonText=l),label:"粘贴JSON或YAML文本",loading:s.loading,disabled:s.loading,"row-height":"25",rows:"6",placeholder:"请在此粘贴CSES格式的数据...",onInput:r.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])])]),_:1}),i(ce,{value:"file"},{default:o(()=>[i(Qt,{modelValue:s.file,"onUpdate:modelValue":e[5]||(e[5]=l=>s.file=l),accept:".js,.json,.yml,.yaml",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:s.loading,disabled:s.loading,onChange:r.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"?(c(),P(X,{key:0,type:"info",class:"mb-4",variant:"tonal",density:"compact"},{default:o(()=>[...e[27]||(e[27]=[u(" 将根据文件扩展名自动检测格式 ",-1)])]),_:1})):V("",!0)]),_:1})]),_:1},8,["modelValue"]),i(G,{cols:"12"},{default:o(()=>[i(H,{flat:"",class:"pa-4 rounded-lg",border:""},{default:o(()=>[h("div",os,[i(j,{color:"primary",class:"mr-2"},{default:o(()=>[...e[28]||(e[28]=[u("mdi-calendar-multiselect",-1)])]),_:1}),e[33]||(e[33]=h("h3",{class:"text-subtitle-1 font-weight-medium mr-auto"},"选择导出天数",-1)),i(W,{variant:"text",color:"primary",class:"ml-2",onClick:r.selectAllDays},{default:o(()=>[i(j,{start:"",size:"small"},{default:o(()=>[...e[29]||(e[29]=[u("mdi-checkbox-multiple-marked",-1)])]),_:1}),e[30]||(e[30]=u(" 全选 ",-1))]),_:1},8,["onClick"]),i(W,{variant:"text",color:"error",class:"ml-2",onClick:r.clearSelectedDays},{default:o(()=>[i(j,{start:"",size:"small"},{default:o(()=>[...e[31]||(e[31]=[u("mdi-checkbox-multiple-blank-outline",-1)])]),_:1}),e[32]||(e[32]=u(" 清除 ",-1))]),_:1},8,["onClick"])]),i(Wt,{modelValue:s.selectedDays,"onUpdate:modelValue":e[7]||(e[7]=l=>s.selectedDays=l),multiple:"",class:"mb-2",color:"primary"},{default:o(()=>[(c(),v(D,null,M(7,l=>i(z,{key:l,value:l,filter:"",variant:"tonal",class:"filter-chip",label:""},{default:o(()=>[u(k(s.dayNames[l])+" ",1),r.getDaySchedule(l).length>0?(c(),P(De,{key:0,content:r.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])):V("",!0)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),i(G,{cols:"12"},{default:o(()=>[i(H,{flat:"",class:"pa-4 rounded-lg",border:""},{default:o(()=>[h("div",ns,[i(j,{color:"primary",class:"mr-2"},{default:o(()=>[...e[34]||(e[34]=[u("mdi-cog",-1)])]),_:1}),e[35]||(e[35]=h("h3",{class:"text-subtitle-1 font-weight-medium"},"显示配置",-1))]),i(ke,null,{default:o(()=>[i(G,{cols:"12",sm:"6"},{default:o(()=>[i(we,{modelValue:s.settings.hideTeacherName,"onUpdate:modelValue":e[8]||(e[8]=l=>s.settings.hideTeacherName=l),label:"不显示教师姓名",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),i(G,{cols:"12",sm:"6"},{default:o(()=>[i(we,{modelValue:s.settings.hideRoom,"onUpdate:modelValue":e[9]||(e[9]=l=>s.settings.hideRoom=l),label:"不显示教室信息",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),i(G,{cols:"12",sm:"6"},{default:o(()=>[i(_t,{modelValue:s.settings.totalWeeks,"onUpdate:modelValue":e[10]||(e[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?(c(),P(H,{key:3,class:"my-4",outlined:""},{default:o(()=>[i(te,null,{default:o(()=>[i(Ut,{type:"table",class:"mx-auto"})]),_:1})]),_:1})):V("",!0),s.processedData?(c(),P(z,{key:4,color:"primary",class:"ml-2","prepend-icon":"mdi-book-open-variant"},{default:o(()=>[u(k(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})):V("",!0),s.processedData&&s.exportPeriods.length===0?(c(),P(X,{key:5,type:"warning",class:"mb-4",closable:""},{default:o(()=>[...e[36]||(e[36]=[u(" 请选择要导出的节次 ",-1)])]),_:1})):V("",!0),s.processedData?(c(),P(H,{key:6,class:"my-4",elevation:"1"},{default:o(()=>[i(ue,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:o(()=>[i(j,{color:"primary",class:"mr-2"},{default:o(()=>[...e[37]||(e[37]=[u("mdi-table",-1)])]),_:1}),e[39]||(e[39]=h("span",{class:"font-weight-bold"},"课程表",-1)),i(z,{color:"primary",class:"ml-3",size:"small",pill:""},{default:o(()=>[i(j,{start:"",size:"x-small"},{default:o(()=>[...e[38]||(e[38]=[u("mdi-book-open-variant",-1)])]),_:1}),u(" "+k(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})]),_:1}),i(te,{class:"pa-0"},{default:o(()=>[i(Ot,{"items-selected":s.selectedRows,"onUpdate:itemsSelected":[e[12]||(e[12]=l=>s.selectedRows=l),r.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":""},Bt({"item.data-table-select":o(({item:l})=>[i(Xt,{modelValue:s.exportPeriods,"onUpdate:modelValue":e[11]||(e[11]=d=>s.exportPeriods=d),value:l.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),_:2},[M(7,l=>({name:`item.${l}`,fn:o(({item:d})=>[d[l]?(c(),v("div",ds,[Array.isArray(d[l])?(c(!0),v(D,{key:0},M(d[l],(m,y)=>(c(),v("div",{key:y,class:"course-item"},[u(k(m.name)+" ",1),!s.settings.hideTeacherName&&m.teacher?(c(),v("span",us,[e[40]||(e[40]=h("br",null,null,-1)),u(k(m.teacher),1)])):V("",!0),!s.settings.hideRoom&&m.room?(c(),v("span",cs,[e[41]||(e[41]=h("br",null,null,-1)),u(k(m.room),1)])):V("",!0),m.weekType?(c(),v("span",ms,k(m.weekType)+"周 ",1)):V("",!0)]))),128)):(c(),v(D,{key:1},[u(k(d[l].name)+" ",1),!s.settings.hideTeacherName&&d[l].teacher?(c(),v("span",fs,[e[42]||(e[42]=h("br",null,null,-1)),u(k(d[l].teacher),1)])):V("",!0),!s.settings.hideRoom&&d[l].room?(c(),v("span",hs,[e[43]||(e[43]=h("br",null,null,-1)),u(k(d[l].room),1)])):V("",!0),d[l].weekType?(c(),v("span",ys,k(d[l].weekType)+"周 ",1)):V("",!0)],64))])):V("",!0)])}))]),1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):V("",!0),r.hasExportData?(c(),P(H,{key:7,class:"my-4",elevation:"1"},{default:o(()=>[i(ue,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:o(()=>[i(j,{color:"primary",class:"mr-2"},{default:o(()=>[...e[44]||(e[44]=[u("mdi-timetable",-1)])]),_:1}),e[48]||(e[48]=h("span",{class:"font-weight-bold"},"每日课程时间表",-1)),i(z,{class:"ml-3",size:"small",color:"primary",pill:""},{default:o(()=>[i(j,{start:"",size:"x-small"},{default:o(()=>[...e[45]||(e[45]=[u("mdi-clock-outline",-1)])]),_:1}),u(" "+k(r.totalClassHours)+" 课时 ",1)]),_:1}),s.exportPeriods.length>0?(c(),P(me,{key:0},{activator:o(({props:l})=>[i(z,B({class:"ml-2",size:"small",color:"info"},l,{pill:""}),{default:o(()=>[i(j,{start:"",size:"x-small"},{default:o(()=>[...e[46]||(e[46]=[u("mdi-information-outline",-1)])]),_:1}),e[47]||(e[47]=u(" 节次已重排 ",-1))]),_:2},1040)]),default:o(()=>[h("span",null,"已将选中的节次 "+k(s.exportPeriods.join(", "))+" 重新排序为连续的 1-"+k(s.exportPeriods.length),1)]),_:1})):V("",!0)]),_:1}),i(te,null,{default:o(()=>[r.daysWithSchedule.length>0?(c(),P(Se,{key:0,modelValue:s.activeDay,"onUpdate:modelValue":e[13]||(e[13]=l=>s.activeDay=l),class:"mb-4",color:"primary",grow:"","align-tabs":"center"},{default:o(()=>[(c(!0),v(D,null,M(r.daysWithSchedule,l=>(c(),P(se,{key:l,value:l,class:"px-2 font-weight-medium"},{default:o(()=>[u(k(s.dayNames[l])+" ",1),i(De,{content:r.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):V("",!0),i(Te,{modelValue:s.activeDay,"onUpdate:modelValue":e[14]||(e[14]=l=>s.activeDay=l)},{default:o(()=>[(c(!0),v(D,null,M(r.daysWithSchedule,l=>(c(),P(ce,{key:l,value:l},{default:o(()=>[i(Yt,{density:"compact",class:"rounded","headers-length":6,"disable-sort":""},{default:o(()=>[e[50]||(e[50]=h("thead",null,[h("tr",null,[h("th",{class:"text-center"},"节次"),h("th",null,"课程"),h("th",null,"时间"),h("th",null,"教师"),h("th",null,"教室"),h("th",null,"周次")])],-1)),h("tbody",null,[(c(!0),v(D,null,M(r.groupByPeriod(r.getDaySchedule(l)),(d,m)=>(c(),v("tr",{key:m},[h("td",bs,[u(k(d.period)+" ",1),d.originalPeriod!==d.period?(c(),P(me,{key:0},{activator:o(({props:y})=>[i(j,B({size:"x-small"},{ref_for:!0},y,{color:"info",class:"ml-1"}),{default:o(()=>[...e[49]||(e[49]=[u("mdi-sync",-1)])]),_:2},1040)]),default:o(()=>[u(" 原节次: "+k(d.originalPeriod),1)]),_:2},1024)):V("",!0)]),h("td",null,[(c(!0),v(D,null,M(d.items,(y,T)=>(c(),v("div",{key:T,class:"mb-1"},[i(z,{size:"small",color:r.getSubjectColor(y.subject),label:"","text-color":"white",class:"mr-1"},{default:o(()=>[u(k(y.subject),1)]),_:2},1032,["color"]),d.items.length>1?(c(),P(z,{key:0,size:"x-small",class:"ml-1",color:y.weekType==="单"?"warning":"success"},{default:o(()=>[u(k(y.weekType)+"周 ",1)]),_:2},1032,["color"])):V("",!0)]))),128))]),h("td",null,[(c(!0),v(D,null,M(d.uniqueTimeSlots,(y,T)=>(c(),v("div",{key:T,class:"mb-1"},[i(z,{size:"x-small",class:"time-chip"},{default:o(()=>[u(k(r.formatTime(y.startTime))+" - "+k(r.formatTime(y.endTime)),1)]),_:2},1024)]))),128))]),h("td",null,[s.settings.hideTeacherName?(c(),v(D,{key:1},[u("-")],64)):(c(!0),v(D,{key:0},M(d.items,(y,T)=>(c(),v("div",{key:T,class:"mb-1"},k(y.teacher||"-"),1))),128))]),h("td",null,[s.settings.hideRoom?(c(),v(D,{key:1},[u("-")],64)):(c(!0),v(D,{key:0},M(d.items,(y,T)=>(c(),v("div",{key:T,class:"mb-1"},k(y.room||"-"),1))),128))]),h("td",null,[(c(!0),v(D,null,M(d.items,(y,T)=>(c(),v("div",{key:T,class:"mb-1"},k(y.weeks),1))),128))])]))),128))])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),r.hasExportData&&r.daysWithSchedule.length===0?(c(),P(X,{key:1,type:"info",class:"mt-3"},{default:o(()=>[...e[51]||(e[51]=[u(" 没有找到任何课程数据 ",-1)])]),_:1})):V("",!0)]),_:1})]),_:1})):V("",!0)]),_:1}),i(Et,{class:""},{default:o(()=>[i(Nt),i(W,{color:"primary",variant:"outlined",loading:s.loading,disabled:!s.jsonText&&!s.file||s.loading,onClick:r.processInput,"prepend-icon":"mdi-cog-refresh"},{default:o(()=>[...e[52]||(e[52]=[u(" 处理数据 ",-1)])]),_:1},8,["loading","disabled","onClick"]),i(W,{color:"info",disabled:!r.hasExportData,onClick:r.showExportPreview,class:"ml-2","prepend-icon":"mdi-eye",border:""},{default:o(()=>[...e[53]||(e[53]=[u(" 刷新 ",-1)])]),_:1},8,["disabled","onClick"]),i(W,{color:"success",variant:"outlined",disabled:!r.hasExportData,onClick:r.downloadCSV,class:"ml-2","prepend-icon":"mdi-download",border:""},{default:o(()=>[...e[54]||(e[54]=[u(" 下载CSV ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ns=Pt(ss,[["render",ps],["__scopeId","data-v-d6c2f846"]]);export{Ns as default};
|