1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-09-03 16:19:22 +00:00
Classworks/assets/index-CxzoX4Xk.js

12 lines
79 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as ve,k as x,s as ce,j as P,o as f,w as r,d as l,l as R,q as G,t as h,v as Y,x as ee,y as k,z as I,i as c,A as p,B as F,C as b,D as ht,F as A,E as U,T as xe,G as N,e as q,H as me,I as ft,g as J,p as K,J as Pe,K as T,c as X,L as _e,M as ye,N as Le,O as qe,P as Ae,n as he,Q as vt,R as ge,S as W,U as be,W as gt,X as pe,Y as Ce,Z as We,$ as fe,a0 as kt,a1 as Ke,a2 as Ge,a3 as Fe,a4 as yt,a5 as $,a6 as bt,a7 as pt,a8 as St,u as wt,a9 as Dt,aa as xt,ab as Ct,ac as Vt,ad as Pt,m as _t,ae as Lt,af as At,ag as Mt,ah as Tt,f as Ft,h as Nt,ai as Bt,aj as jt,ak as Et,al as Se,am as ne,an as Rt,ao as ue,ap as zt,r as It,aq as Ne,ar as Be,as as Ot,at as Yt,au as Ut,av as we,aw as Ht,ax as qt,ay as Wt,az as de,aA as Kt,aB as je}from"./index-DmGr2YjE.js";import{V as Ve}from"./VTextField-C4kOar5O.js";import{V as Je}from"./VTooltip-CQ-iFGD1.js";import{V as z}from"./VChip-Cb9zLh7n.js";import{V as Gt}from"./VMenu-BNxvK6X3.js";import{_ as Xe,a as Ze,p as Ee}from"./index-WOogkXEw.js";import{V as Jt}from"./VTextarea-GxradEKI.js";import{V as Xt,a as Zt}from"./VAppBarTitle-caQbgffg.js";import{V as Qt}from"./VContainer-D6AyJkGG.js";import{V as ke,a as De}from"./VRow-2V1J5F3c.js";const $t={name:"RandomPicker",props:{studentList:{type:Array,required:!0},attendance:{type:Object,required:!0,default:()=>({absent:[],late:[],exclude:[]})}},data(){return{dialog:!1,count:x("randomPicker.defaultCount"),isPickingStarted:!1,isAnimating:!1,pickedStudents:[],animationStudents:[],highlightedIndices:[],animationTimer:null,getSetting:x,tempFilters:{excludeAbsent:x("randomPicker.excludeAbsent"),excludeLate:x("randomPicker.excludeLate"),excludeExcluded:x("randomPicker.excludeExcluded")},pickerMode:x("randomPicker.mode"),minNumber:x("randomPicker.minNumber"),maxNumber:x("randomPicker.maxNumber")}},computed:{absentCount(){return this.attendance.absent?this.attendance.absent.length:0},lateCount(){return this.attendance.late?this.attendance.late.length:0},excludedCount(){return this.attendance.exclude?this.attendance.exclude.length:0},numberModeStudents(){if(this.pickerMode!=="number")return[];const t=[];for(let e=this.minNumber;e<=this.maxNumber;e++)t.push(e.toString().padStart(2,"0")+"号");return t},filteredStudents(){return this.pickerMode==="number"?this.numberModeStudents:!this.studentList||!this.studentList.length?[]:this.studentList.filter(t=>!(this.tempFilters.excludeAbsent&&this.attendance.absent.includes(t)||this.tempFilters.excludeLate&&this.attendance.late.includes(t)||this.tempFilters.excludeExcluded&&this.attendance.exclude.includes(t)))},availableStudents(){return this.filteredStudents},maxAllowedCount(){return Math.min(10,this.filteredStudents.length)},remainingStudents(){return this.filteredStudents.filter(t=>!this.pickedStudents.includes(t))}},watch:{dialog(t){t?(this.count=x("randomPicker.defaultCount"),this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.tempFilters={excludeAbsent:x("randomPicker.excludeAbsent"),excludeLate:x("randomPicker.excludeLate"),excludeExcluded:x("randomPicker.excludeExcluded")}):this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},tempFilters:{handler(){this.count>this.maxAllowedCount&&(this.count=Math.max(1,this.maxAllowedCount))},deep:!0},pickerMode:{handler(t){ce("randomPicker.mode",t)}},minNumber:{handler(t){t>this.maxNumber&&(this.minNumber=this.maxNumber),t<1&&(this.minNumber=1),ce("randomPicker.minNumber",this.minNumber)}},maxNumber:{handler(t){t<this.minNumber&&(this.maxNumber=this.minNumber),t>100&&(this.maxNumber=100),ce("randomPicker.maxNumber",this.maxNumber)}}},methods:{open(){this.dialog=!0},incrementCount(){this.count<this.maxAllowedCount&&this.count++},decrementCount(){this.count>1&&this.count--},startPicking(){this.filteredStudents.length!==0&&(this.isPickingStarted=!0,x("randomPicker.animation")?this.startAnimation():this.finishPicking())},startAnimation(){this.isAnimating=!0,this.animationStudents=this.filteredStudents.map((t,e)=>({id:`student-${e}`,name:t})),this.animateHighlight()},animateHighlight(){let e=0;const n=50,i=()=>{this.highlightedIndices=[];const a=[];for(let m=0;m<this.count;m++){let o;do o=Math.floor(Math.random()*this.animationStudents.length);while(a.includes(o));a.push(o)}this.highlightedIndices=a,e++;const s=n+e*20;e<5?this.animationTimer=setTimeout(i,s):setTimeout(()=>{this.finishPicking()},500)};i()},finishPicking(){this.isAnimating=!1;const t=[...this.filteredStudents].sort(()=>.5-Math.random());this.pickedStudents=t.slice(0,this.count)},resetPicker(){this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},refreshSingleStudent(t){if(this.remainingStudents.length===0)return;const e=Math.floor(Math.random()*this.remainingStudents.length),n=this.remainingStudents[e];this.pickedStudents[t]=n;const i=document.querySelectorAll(".result-card");i[t]&&(i[t].classList.add("refresh-animation"),setTimeout(()=>{i[t].classList.remove("refresh-animation")},500))}}},ea={class:"d-flex justify-center align-center counter-container"},ta={class:"count-display mx-8"},aa={class:"text-h2 font-weight-bold"},na={class:"mode-switch-container mt-6"},sa={key:0,class:"number-range-container mt-4"},la={class:"d-flex justify-center align-center gap-4"},ia={class:"mt-4"},ra={key:1,class:"mt-4 text-error"},oa={class:"mt-4 text-caption"},da={class:"pa-2"},ua={key:0},ca={key:1},ma={key:2},ha={key:1,class:"d-flex flex-wrap justify-center gap-2 mt-4"},fa={key:0,class:"animation-container"},va={class:"animation-wrapper"},ga={key:1,class:"result-container"},ka={class:"mt-8 d-flex justify-center"};function ya(t,e,n,i,a,s){return f(),P(me,{modelValue:a.dialog,"onUpdate:modelValue":e[8]||(e[8]=m=>a.dialog=m),"max-width":"600","fullscreen-breakpoint":"sm",persistent:""},{default:r(()=>[l(R,{class:"random-picker-card",rounded:"xl",border:""},{default:r(()=>[l(G,{class:"text-h5 d-flex align-center"},{default:r(()=>[l(Y,{icon:"mdi-account-question",class:"mr-2"}),e[9]||(e[9]=h(" 随机点名 ",-1)),l(ee),l(k,{icon:"mdi-close",variant:"text",onClick:e[0]||(e[0]=m=>a.dialog=!1)})]),_:1}),a.isPickingStarted?(f(),P(I,{key:1,class:"text-center py-6"},{default:r(()=>[a.isAnimating?(f(),p("div",fa,[c("div",va,[l(xe,{name:"shuffle",tag:"div",class:"shuffle-container"},{default:r(()=>[(f(!0),p(A,null,N(a.animationStudents,(m,o)=>(f(),p("div",{key:m.id,class:q(["student-item",{highlighted:a.highlightedIndices.includes(o)}])},b(m.name),3))),128))]),_:1})])])):(f(),p("div",ga,[e[19]||(e[19]=c("div",{class:"text-h6 mb-4"},"抽取结果",-1)),(f(!0),p(A,null,N(a.pickedStudents,(m,o)=>(f(),P(R,{key:o,variant:"outlined",color:"primary",class:"mb-2 result-card"},{default:r(()=>[l(I,{class:"text-h4 text-center py-4 d-flex align-center justify-center"},{default:r(()=>[h(b(m)+" ",1),l(k,{icon:"mdi-refresh",variant:"text",size:"small",class:"ml-2 refresh-btn",onClick:u=>s.refreshSingleStudent(o),disabled:s.remainingStudents.length===0,title:s.remainingStudents.length===0?"没有更多可用学生":"重新抽取此学生"},null,8,["onClick","disabled","title"])]),_:2},1024)]),_:2},1024))),128)),c("div",ka,[l(k,{color:"primary","prepend-icon":"mdi-refresh",onClick:s.resetPicker,size:"large",class:"mx-2"},{default:r(()=>[...e[17]||(e[17]=[h(" 重新抽取 ",-1)])]),_:1},8,["onClick"]),l(k,{color:"grey",variant:"outlined",onClick:e[7]||(e[7]=m=>a.dialog=!1),size:"large",class:"mx-2"},{default:r(()=>[...e[18]||(e[18]=[h(" 关闭 ",-1)])]),_:1})])]))]),_:1})):(f(),P(I,{key:0,class:"text-center py-6"},{default:r(()=>[e[16]||(e[16]=c("div",{class:"text-h6 mb-4"},"请选择抽取人数",-1)),c("div",ea,[l(k,{size:"x-large",icon:"mdi-minus",variant:"tonal",color:"primary",disabled:a.count<=1,onClick:s.decrementCount,class:"counter-btn"},null,8,["disabled","onClick"]),c("div",ta,[c("span",aa,b(a.count),1),e[10]||(e[10]=c("span",{class:"text-subtitle-1 ml-2"},"人",-1))]),l(k,{size:"x-large",icon:"mdi-plus",variant:"tonal",color:"primary",disabled:a.count>=s.maxAllowedCount,onClick:s.incrementCount,class:"counter-btn"},null,8,["disabled","onClick"])]),c("div",na,[l(ht,{modelValue:a.pickerMode,"onUpdate:modelValue":e[1]||(e[1]=m=>a.pickerMode=m),color:"primary",rounded:"pill",mandatory:"",class:"mode-toggle"},{default:r(()=>[l(k,{value:"name","prepend-icon":"mdi-account"},{default:r(()=>[...e[11]||(e[11]=[h("姓名模式",-1)])]),_:1}),l(k,{value:"number","prepend-icon":"mdi-numeric"},{default:r(()=>[...e[12]||(e[12]=[h("学号模式",-1)])]),_:1})]),_:1},8,["modelValue"])]),a.pickerMode==="number"?(f(),p("div",sa,[e[14]||(e[14]=c("div",{class:"text-subtitle-1 mb-2"},"学号范围设置",-1)),c("div",la,[l(Ve,{modelValue:a.minNumber,"onUpdate:modelValue":e[2]||(e[2]=m=>a.minNumber=m),modelModifiers:{number:!0},label:"最小值",type:"number",min:"1",max:"100","hide-details":"",class:"number-input",density:"compact"},null,8,["modelValue"]),e[13]||(e[13]=c("span",{class:"mx-2"},"至",-1)),l(Ve,{modelValue:a.maxNumber,"onUpdate:modelValue":e[3]||(e[3]=m=>a.maxNumber=m),modelModifiers:{number:!0},label:"最大值",type:"number",min:"1",max:"100","hide-details":"",class:"number-input",density:"compact"},null,8,["modelValue"])])])):F("",!0),c("div",ia,[l(k,{size:"x-large",color:"primary","prepend-icon":"mdi-dice-multiple",onClick:s.startPicking,disabled:s.filteredStudents.length===0,class:"start-btn"},{default:r(()=>[...e[15]||(e[15]=[h(" 开始抽取 ",-1)])]),_:1},8,["onClick","disabled"])]),s.filteredStudents.length===0?(f(),p("div",ra,[a.pickerMode==="name"?(f(),p(A,{key:0},[h(" 没有可抽取的学生,请调整过滤选项 ")],64)):(f(),p(A,{key:1},[h(" 请设置有效的学号范围 ")],64))])):F("",!0),c("div",oa,[h(" 当前可抽取学生: "+b(s.filteredStudents.length)+"人 ",1),a.pickerMode==="name"?(f(),P(Je,{key:0,location:"bottom"},{activator:r(({props:m})=>[l(Y,U(m,{icon:"mdi-information-outline",size:"small",class:"ml-1"}),null,16)]),default:r(()=>[c("div",da,[a.tempFilters.excludeAbsent?(f(),p("div",ua," • 已排除请假学生 ("+b(s.absentCount)+"人) ",1)):F("",!0),a.tempFilters.excludeLate?(f(),p("div",ca," • 已排除迟到学生 ("+b(s.lateCount)+"人) ",1)):F("",!0),a.tempFilters.excludeExcluded?(f(),p("div",ma," • 已排除不参与学生 ("+b(s.excludedCount)+"人) ",1)):F("",!0)])]),_:1})):F("",!0),a.pickerMode==="name"?(f(),p("div",ha,[l(z,{color:a.tempFilters.excludeLate?"warning":"default",variant:a.tempFilters.excludeLate?"elevated":"text",onClick:e[4]||(e[4]=m=>a.tempFilters.excludeLate=!a.tempFilters.excludeLate),"prepend-icon":"mdi-clock-alert",class:"filter-chip"},{default:r(()=>[h(b(a.tempFilters.excludeLate?"排除":"包含")+"迟到学生 ",1)]),_:1},8,["color","variant"]),l(z,{color:a.tempFilters.excludeAbsent?"error":"default",variant:a.tempFilters.excludeAbsent?"elevated":"text",onClick:e[5]||(e[5]=m=>a.tempFilters.excludeAbsent=!a.tempFilters.excludeAbsent),"prepend-icon":"mdi-account-off",class:"filter-chip"},{default:r(()=>[h(b(a.tempFilters.excludeAbsent?"排除":"包含")+"请假学生 ",1)]),_:1},8,["color","variant"]),l(z,{color:a.tempFilters.excludeExcluded?"grey":"default",variant:a.tempFilters.excludeExcluded?"elevated":"text",onClick:e[6]||(e[6]=m=>a.tempFilters.excludeExcluded=!a.tempFilters.excludeExcluded),"prepend-icon":"mdi-account-cancel",class:"filter-chip"},{default:r(()=>[h(b(a.tempFilters.excludeExcluded?"排除":"包含")+"不参与学生 ",1)]),_:1},8,["color","variant"])])):F("",!0)])]),_:1}))]),_:1})]),_:1},8,["modelValue"])}const Qe=ve($t,[["render",ya],["__scopeId","data-v-fd7ac224"]]),ba={name:"FloatingICP",data(){return{isHovered:!1}}};function pa(t,e,n,i,a,s){return f(),P(ft,null,{default:r(()=>[l(R,{class:"floating-icp",elevation:"2",rounded:"pill",variant:"tonal",color:"surface-variant",onMouseenter:e[0]||(e[0]=m=>a.isHovered=!0),onMouseleave:e[1]||(e[1]=m=>a.isHovered=!1)},{default:r(()=>[l(k,{variant:"text",class:"icp-button",href:"https://beian.miit.gov.cn/",target:"_blank",rel:"noopener noreferrer"},{default:r(()=>[l(Y,{icon:"mdi-shield-check",size:"small",class:q([{"rotate-icon":a.isHovered},"mr-1"])},null,8,["class"]),e[2]||(e[2]=c("span",{class:"text-caption"},"浙ICP备2024068645号",-1))]),_:1})]),_:1})]),_:1})}const $e=ve(ba,[["render",pa],["__scopeId","data-v-890f3fb8"]]),et=K({active:{type:[String,Array],default:void 0},controlHeight:[Number,String],disabled:{type:[Boolean,String,Array],default:null},nextIcon:{type:ye,default:"$next"},prevIcon:{type:ye,default:"$prev"},modeIcon:{type:ye,default:"$subgroup"},text:String,viewMode:{type:String,default:"month"}},"VDatePickerControls"),Re=J()({name:"VDatePickerControls",props:et(),emits:{"click:year":()=>!0,"click:month":()=>!0,"click:prev":()=>!0,"click:next":()=>!0,"click:text":()=>!0},setup(t,e){let{emit:n}=e;const{t:i}=Pe(),a=T(()=>Array.isArray(t.disabled)?t.disabled.includes("text"):!!t.disabled),s=T(()=>Array.isArray(t.disabled)?t.disabled.includes("mode"):!!t.disabled),m=T(()=>Array.isArray(t.disabled)?t.disabled.includes("prev"):!!t.disabled),o=T(()=>Array.isArray(t.disabled)?t.disabled.includes("next"):!!t.disabled);function u(){n("click:prev")}function y(){n("click:next")}function g(){n("click:year")}function D(){n("click:month")}return X(()=>c("div",{class:q(["v-date-picker-controls"]),style:{"--v-date-picker-controls-height":_e(t.controlHeight)}},[l(k,{class:"v-date-picker-controls__month-btn","data-testid":"month-btn",disabled:a.value,text:t.text,variant:"text",rounded:!0,onClick:D},null),l(k,{class:"v-date-picker-controls__mode-btn","data-testid":"year-btn",disabled:s.value,density:"comfortable",icon:t.modeIcon,variant:"text","aria-label":i("$vuetify.datePicker.ariaLabel.selectYear"),onClick:g},null),l(ee,null,null),c("div",{class:"v-date-picker-controls__month"},[l(k,{"data-testid":"prev-month",disabled:m.value,density:"comfortable",icon:t.prevIcon,variant:"text","aria-label":i("$vuetify.datePicker.ariaLabel.previousMonth"),onClick:u},null),l(k,{"data-testid":"next-month",disabled:o.value,icon:t.nextIcon,density:"comfortable",variant:"text","aria-label":i("$vuetify.datePicker.ariaLabel.nextMonth"),onClick:y},null)])])),{}}}),Sa=K({appendIcon:ye,color:String,header:String,transition:String,onClick:vt()},"VDatePickerHeader"),ze=J()({name:"VDatePickerHeader",props:Sa(),emits:{click:()=>!0,"click:append":()=>!0},setup(t,e){let{emit:n,slots:i}=e;const{backgroundColorClasses:a,backgroundColorStyles:s}=Le(()=>t.color);function m(){n("click")}function o(){n("click:append")}return X(()=>{const u=!!(i.default||t.header),y=!!(i.append||t.appendIcon);return c("div",{class:q(["v-date-picker-header",{"v-date-picker-header--clickable":!!t.onClick},a.value]),style:he(s.value),onClick:m},[i.prepend&&c("div",{key:"prepend",class:"v-date-picker-header__prepend"},[i.prepend()]),u&&l(qe,{key:"content",name:t.transition},{default:()=>{var g;return[c("div",{key:t.header,class:"v-date-picker-header__content"},[((g=i.default)==null?void 0:g.call(i))??t.header])]}}),y&&c("div",{class:"v-date-picker-header__append"},[i.append?l(Ae,{key:"append-defaults",disabled:!t.appendIcon,defaults:{VBtn:{icon:t.appendIcon,variant:"text"}}},{default:()=>{var g;return[(g=i.append)==null?void 0:g.call(i)]}}):l(k,{key:"append-btn",icon:t.appendIcon,variant:"text",onClick:o},null)])])}),{}}}),wa=K({allowedDates:[Array,Function],disabled:{type:Boolean,default:null},displayValue:null,modelValue:Array,month:[Number,String],max:null,min:null,showAdjacentMonths:Boolean,year:[Number,String],weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},weeksInMonth:{type:String,default:"dynamic"},firstDayOfWeek:{type:[Number,String],default:void 0},weekdayFormat:String},"calendar");function Da(t){const e=ge(),n=W(t,"modelValue",[],d=>be(d).map(v=>e.date(v))),i=T(()=>t.displayValue?e.date(t.displayValue):n.value.length>0?e.date(n.value[0]):t.min?e.date(t.min):Array.isArray(t.allowedDates)?e.date(t.allowedDates[0]):e.date()),a=W(t,"year",void 0,d=>{const v=d!=null?Number(d):e.getYear(i.value);return e.startOfYear(e.setYear(e.date(),v))},d=>e.getYear(d)),s=W(t,"month",void 0,d=>{const v=d!=null?Number(d):e.getMonth(i.value),C=e.setYear(e.startOfMonth(e.date()),e.getYear(a.value));return e.setMonth(C,v)},d=>e.getMonth(d)),m=T(()=>{const d=e.toJsDate(e.startOfWeek(e.date(),t.firstDayOfWeek)).getDay();return e.getWeekdays(t.firstDayOfWeek,t.weekdayFormat).filter((v,C)=>t.weekdays.includes((C+d)%7))}),o=T(()=>{const d=e.getWeekArray(s.value,t.firstDayOfWeek),v=d.flat(),C=6*7;if(t.weeksInMonth==="static"&&v.length<C){const M=v[v.length-1];let H=[];for(let O=1;O<=C-v.length;O++)H.push(e.addDays(M,O)),O%7===0&&(d.push(H),H=[])}return d});function u(d,v){return d.filter(C=>t.weekdays.includes(e.toJsDate(C).getDay())).map((C,M)=>{const H=e.toISO(C),O=!e.isSameMonth(C,s.value),se=e.isSameDay(C,e.startOfMonth(s.value)),L=e.isSameDay(C,e.endOfMonth(s.value)),w=e.isSameDay(C,s.value),E=t.weekdays.length;return{date:C,formatted:e.format(C,"keyboardDate"),isAdjacent:O,isDisabled:_(C),isEnd:L,isHidden:O&&!t.showAdjacentMonths,isSame:w,isSelected:n.value.some(te=>e.isSameDay(C,te)),isStart:se,isToday:e.isSameDay(C,v),isWeekEnd:M%E===E-1,isWeekStart:M%E===0,isoDate:H,localized:e.format(C,"dayOfMonth"),month:e.getMonth(C),year:e.getYear(C)}})}const y=T(()=>{const d=e.startOfWeek(i.value,t.firstDayOfWeek),v=[];for(let M=0;M<=6;M++)v.push(e.addDays(d,M));const C=e.date();return u(v,C)}),g=T(()=>{const d=o.value.flat(),v=e.date();return u(d,v)}),D=T(()=>o.value.map(d=>d.length?e.getWeek(d[0],t.firstDayOfWeek):null));function _(d){if(t.disabled)return!0;const v=e.date(d);return t.min&&e.isBefore(e.endOfDay(v),e.date(t.min))||t.max&&e.isAfter(v,e.date(t.max))?!0:Array.isArray(t.allowedDates)&&t.allowedDates.length>0?!t.allowedDates.some(C=>e.isSameDay(e.date(C),v)):typeof t.allowedDates=="function"?!t.allowedDates(v):!1}return{displayValue:i,daysInMonth:g,daysInWeek:y,genDays:u,model:n,weeksInMonth:o,weekdayLabels:m,weekNumbers:D}}const tt=K({color:String,hideWeekdays:Boolean,multiple:[Boolean,Number,String],showWeek:Boolean,transition:{type:String,default:"picker-transition"},reverseTransition:{type:String,default:"picker-reverse-transition"},...fe(wa(),["displayValue"])},"VDatePickerMonth"),Ie=J()({name:"VDatePickerMonth",props:tt(),emits:{"update:modelValue":t=>!0,"update:month":t=>!0,"update:year":t=>!0},setup(t,e){let{emit:n,slots:i}=e;const a=gt(),{t:s}=Pe(),{daysInMonth:m,model:o,weekNumbers:u,weekdayLabels:y}=Da(t),g=ge(),D=pe(),_=pe(),d=pe(!1),v=Ce(()=>d.value?t.reverseTransition:t.transition);t.multiple==="range"&&o.value.length>0&&(D.value=o.value[0],o.value.length>1&&(_.value=o.value[o.value.length-1]));const C=T(()=>{const L=["number","string"].includes(typeof t.multiple)?Number(t.multiple):1/0;return o.value.length>=L});We(m,(L,w)=>{w&&(d.value=g.isBefore(L[0].date,w[0].date))});function M(L){const w=g.startOfDay(L);if(o.value.length===0?D.value=void 0:o.value.length===1&&(D.value=o.value[0],_.value=void 0),!D.value)D.value=w,o.value=[D.value];else if(_.value)D.value=L,_.value=void 0,o.value=[D.value];else{if(g.isSameDay(w,D.value)){D.value=void 0,o.value=[];return}else g.isBefore(w,D.value)?(_.value=g.endOfDay(D.value),D.value=w):_.value=g.endOfDay(w);o.value=kt(g,D.value,_.value)}}function H(L){const w=g.format(L.date,"fullDateWithWeekday"),E=L.isToday?"currentDate":"selectDate";return s(`$vuetify.datePicker.ariaLabel.${E}`,w)}function O(L){const w=o.value.findIndex(E=>g.isSameDay(E,L));if(w===-1)o.value=[...o.value,L];else{const E=[...o.value];E.splice(w,1),o.value=E}}function se(L){t.multiple==="range"?M(L):t.multiple?O(L):o.value=[L]}X(()=>c("div",{class:"v-date-picker-month",style:{"--v-date-picker-days-in-week":t.weekdays.length}},[t.showWeek&&c("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!t.hideWeekdays&&c("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[h(" ")]),u.value.map(L=>c("div",{class:q(["v-date-picker-month__day","v-date-picker-month__day--adjacent"])},[L]))]),l(qe,{name:v.value},{default:()=>{var L;return[c("div",{ref:a,key:(L=m.value[0].date)==null?void 0:L.toString(),class:"v-date-picker-month__days"},[!t.hideWeekdays&&y.value.map(w=>c("div",{class:q(["v-date-picker-month__day","v-date-picker-month__weekday"])},[w])),m.value.map((w,E)=>{var le;const te={props:{class:"v-date-picker-month__day-btn",color:w.isSelected||w.isToday?t.color:void 0,disabled:w.isDisabled,icon:!0,ripple:!1,text:w.localized,variant:w.isSelected?"flat":w.isToday?"outlined":"text","aria-label":H(w),"aria-current":w.isToday?"date":void 0,onClick:()=>se(w.date)},item:w,i:E};return C.value&&!w.isSelected&&(w.isDisabled=!0),c("div",{class:q(["v-date-picker-month__day",{"v-date-picker-month__day--adjacent":w.isAdjacent,"v-date-picker-month__day--hide-adjacent":w.isHidden,"v-date-picker-month__day--selected":w.isSelected,"v-date-picker-month__day--week-end":w.isWeekEnd,"v-date-picker-month__day--week-start":w.isWeekStart}]),"data-v-date":w.isDisabled?void 0:w.isoDate},[(t.showAdjacentMonths||!w.isAdjacent)&&(((le=i.day)==null?void 0:le.call(i,te))??l(k,te.props,null))])})])]}})]))}}),at=K({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number,allowedMonths:[Array,Function]},"VDatePickerMonths"),Oe=J()({name:"VDatePickerMonths",props:at(),emits:{"update:modelValue":t=>!0},setup(t,e){let{emit:n,slots:i}=e;const a=ge(),s=W(t,"modelValue"),m=T(()=>{let u=a.startOfYear(a.date());return t.year&&(u=a.setYear(u,t.year)),Ke(12).map(y=>{const g=a.format(u,"monthShort"),D=a.format(u,"month"),_=!!(!o(y)||t.min&&a.isAfter(a.startOfMonth(a.date(t.min)),u)||t.max&&a.isAfter(u,a.startOfMonth(a.date(t.max))));return u=a.getNextMonth(u),{isDisabled:_,text:g,label:D,value:y}})});Ge(()=>{s.value=s.value??a.getMonth(a.date())});function o(u){return Array.isArray(t.allowedMonths)&&t.allowedMonths.length?t.allowedMonths.includes(u):typeof t.allowedMonths=="function"?t.allowedMonths(u):!0}return X(()=>c("div",{class:"v-date-picker-months",style:{height:_e(t.height)}},[c("div",{class:"v-date-picker-months__content"},[m.value.map((u,y)=>{var _;const g={active:s.value===y,ariaLabel:u.label,color:s.value===y?t.color:void 0,disabled:u.isDisabled,rounded:!0,text:u.text,variant:s.value===u.value?"flat":"text",onClick:()=>D(y)};function D(d){if(s.value===d){n("update:modelValue",s.value);return}s.value=d}return((_=i.month)==null?void 0:_.call(i,{month:u,i:y,props:g}))??l(k,U({key:"month"},g),null)})])])),{}}}),nt=K({color:String,height:[String,Number],min:null,max:null,modelValue:Number,allowedYears:[Array,Function]},"VDatePickerYears"),Ye=J()({name:"VDatePickerYears",props:nt(),directives:{vIntersect:Fe},emits:{"update:modelValue":t=>!0},setup(t,e){let{emit:n,slots:i}=e;const a=ge(),s=W(t,"modelValue"),m=T(()=>{const g=a.getYear(a.date());let D=g-100,_=g+52;t.min&&(D=a.getYear(a.date(t.min))),t.max&&(_=a.getYear(a.date(t.max)));let d=a.startOfYear(a.date());return d=a.setYear(d,D),Ke(_-D+1,D).map(v=>{const C=a.format(d,"year");return d=a.setYear(d,a.getYear(d)+1),{text:C,value:v,isDisabled:!y(v)}})});Ge(()=>{s.value=s.value??a.getYear(a.date())});const o=yt();function u(){var g,D;(g=o.el)==null||g.focus(),(D=o.el)==null||D.scrollIntoView({block:"center"})}function y(g){return Array.isArray(t.allowedYears)&&t.allowedYears.length?t.allowedYears.includes(g):typeof t.allowedYears=="function"?t.allowedYears(g):!0}return X(()=>$(c("div",{class:"v-date-picker-years",style:{height:_e(t.height)}},[c("div",{class:"v-date-picker-years__content"},[m.value.map((g,D)=>{var d;const _={ref:s.value===g.value?o:void 0,active:s.value===g.value,color:s.value===g.value?t.color:void 0,rounded:!0,text:g.text,disabled:g.isDisabled,variant:s.value===g.value?"flat":"text",onClick:()=>{if(s.value===g.value){n("update:modelValue",s.value);return}s.value=g.value}};return((d=i.year)==null?void 0:d.call(i,{year:g,i:D,props:_}))??l(k,U({key:"month"},_),null)})])]),[[Fe,{handler:u},null,{once:!0}]])),{}}}),xa=bt("v-picker-title"),st=K({color:String,...Bt(),...Nt(),...Ft(),...Tt(),...Mt(),...At(),...Lt(),..._t(),...Pt()},"VSheet"),Ue=J()({name:"VSheet",props:st(),setup(t,e){let{slots:n}=e;const{themeClasses:i}=pt(t),{backgroundColorClasses:a,backgroundColorStyles:s}=Le(()=>t.color),{borderClasses:m}=St(t),{dimensionStyles:o}=wt(t),{elevationClasses:u}=Dt(t),{locationStyles:y}=xt(t),{positionClasses:g}=Ct(t),{roundedClasses:D}=Vt(t);return X(()=>l(t.tag,{class:q(["v-sheet",i.value,a.value,m.value,u.value,g.value,D.value,t.class]),style:he([s.value,o.value,y.value,t.style])},n)),{}}}),lt=K({bgColor:String,divided:Boolean,landscape:Boolean,title:String,hideHeader:Boolean,...st()},"VPicker"),He=J()({name:"VPicker",props:lt(),setup(t,e){let{slots:n}=e;const{backgroundColorClasses:i,backgroundColorStyles:a}=Le(()=>t.color);return X(()=>{const s=Ue.filterProps(t),m=!!(t.title||n.title);return l(Ue,U(s,{color:t.bgColor,class:["v-picker",{"v-picker--divided":t.divided,"v-picker--landscape":t.landscape,"v-picker--with-actions":!!n.actions},t.class],style:t.style}),{default:()=>{var o;return[!t.hideHeader&&c("div",{key:"header",class:q([i.value]),style:he([a.value])},[m&&l(xa,{key:"picker-title"},{default:()=>{var u;return[((u=n.title)==null?void 0:u.call(n))??t.title]}}),n.header&&c("div",{class:"v-picker__header"},[n.header()])]),c("div",{class:"v-picker__body"},[(o=n.default)==null?void 0:o.call(n)]),n.actions&&l(Ae,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[c("div",{class:"v-picker__actions"},[n.actions()])]})]}})}),{}}}),Ca=K({header:{type:String,default:"$vuetify.datePicker.header"},headerColor:String,...et(),...tt({weeksInMonth:"static"}),...fe(at(),["modelValue"]),...fe(nt(),["modelValue"]),...lt({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),Va=J()({name:"VDatePicker",props:Ca(),emits:{"update:modelValue":t=>!0,"update:month":t=>!0,"update:year":t=>!0,"update:viewMode":t=>!0},setup(t,e){let{emit:n,slots:i}=e;const a=ge(),{t:s}=Pe(),{rtlClasses:m}=jt(),o=W(t,"modelValue",void 0,S=>be(S).map(V=>a.date(V)),S=>t.multiple?S:S[0]),u=W(t,"viewMode"),y=T(()=>{const S=a.date(t.min);return t.min&&a.isValid(S)?S:null}),g=T(()=>{const S=a.date(t.max);return t.max&&a.isValid(S)?S:null}),D=T(()=>{var j;const S=a.date();let V=S;return(j=o.value)!=null&&j[0]?V=a.date(o.value[0]):y.value&&a.isBefore(S,y.value)?V=y.value:g.value&&a.isAfter(S,g.value)&&(V=g.value),V&&a.isValid(V)?V:S}),_=Ce(()=>t.headerColor??t.color),d=W(t,"month"),v=T({get:()=>Number(d.value??a.getMonth(a.startOfMonth(D.value))),set:S=>d.value=S}),C=W(t,"year"),M=T({get:()=>Number(C.value??a.getYear(a.startOfYear(a.setMonth(D.value,v.value)))),set:S=>C.value=S}),H=pe(!1),O=T(()=>t.multiple&&o.value.length>1?s("$vuetify.datePicker.itemsSelected",o.value.length):o.value[0]&&a.isValid(o.value[0])?a.format(a.date(o.value[0]),"normalDateWithWeekday"):s(t.header)),se=T(()=>{let S=a.date();return S=a.setDate(S,1),S=a.setMonth(S,v.value),S=a.setYear(S,M.value),a.format(S,"monthAndYear")}),L=Ce(()=>`date-picker-header${H.value?"-reverse":""}-transition`),w=T(()=>{if(t.disabled)return!0;const S=[];if(u.value!=="month")S.push("prev","next");else{let V=a.date();if(V=a.startOfMonth(V),V=a.setMonth(V,v.value),V=a.setYear(V,M.value),y.value){const j=a.addDays(a.startOfMonth(V),-1);a.isAfter(y.value,j)&&S.push("prev")}if(g.value){const j=a.addDays(a.endOfMonth(V),1);a.isAfter(j,g.value)&&S.push("next")}}return S}),E=T(()=>t.allowedYears||ot),te=T(()=>t.allowedMonths||dt);function le(S,V){const j=t.allowedDates;if(typeof j!="function")return!0;const Z=a.getDiff(V,S,"days");for(let Q=0;Q<Z;Q++)if(j(a.addDays(S,Q)))return!0;return!1}function ot(S){if(typeof t.allowedDates=="function"){const V=a.parseISO(`${S}-01-01`);return le(V,a.endOfYear(V))}if(Array.isArray(t.allowedDates)&&t.allowedDates.length){for(const V of t.allowedDates)if(a.getYear(a.date(V))===S)return!0;return!1}return!0}function dt(S){if(typeof t.allowedDates=="function"){const V=String(S+1).padStart(2,"0"),j=a.parseISO(`${M.value}-${V}-01`);return le(j,a.endOfMonth(j))}if(Array.isArray(t.allowedDates)&&t.allowedDates.length){for(const V of t.allowedDates)if(a.getYear(a.date(V))===M.value&&a.getMonth(a.date(V))===S)return!0;return!1}return!0}function ut(){v.value<11?v.value++:(M.value++,v.value=0,re()),ie()}function ct(){v.value>0?v.value--:(M.value--,v.value=11,re()),ie()}function mt(){u.value="month"}function Me(){u.value=u.value==="months"?"month":"months"}function Te(){u.value=u.value==="year"?"month":"year"}function ie(){u.value==="months"&&Me()}function re(){u.value==="year"&&Te()}return We(o,(S,V)=>{const j=be(V),Z=be(S);if(!Z.length)return;const Q=a.date(j[j.length-1]),oe=a.date(Z[Z.length-1]),ae=a.getMonth(oe),B=a.getYear(oe);ae!==v.value&&(v.value=ae,ie()),B!==M.value&&(M.value=B,re()),H.value=a.isBefore(Q,oe)}),X(()=>{const S=He.filterProps(t),V=Re.filterProps(t),j=ze.filterProps(t),Z=Ie.filterProps(t),Q=fe(Oe.filterProps(t),["modelValue"]),oe=fe(Ye.filterProps(t),["modelValue"]),ae={color:_.value,header:O.value,transition:L.value};return l(He,U(S,{color:_.value,class:["v-date-picker",`v-date-picker--${u.value}`,{"v-date-picker--show-week":t.showWeek},m.value,t.class],style:t.style}),{title:()=>{var B;return((B=i.title)==null?void 0:B.call(i))??c("div",{class:"v-date-picker__title"},[s(t.title)])},header:()=>i.header?l(Ae,{defaults:{VDatePickerHeader:{...ae}}},{default:()=>{var B;return[(B=i.header)==null?void 0:B.call(i,ae)]}}):l(ze,U({key:"header"},j,ae,{onClick:u.value!=="month"?mt:void 0}),{prepend:i.prepend,append:i.append}),default:()=>c(A,null,[l(Re,U(V,{disabled:w.value,text:se.value,"onClick:next":ut,"onClick:prev":ct,"onClick:month":Me,"onClick:year":Te}),null),l(Et,{hideOnLeave:!0},{default:()=>[u.value==="months"?l(Oe,U({key:"date-picker-months"},Q,{modelValue:v.value,"onUpdate:modelValue":[B=>v.value=B,ie],min:y.value,max:g.value,year:M.value,allowedMonths:te.value}),{month:i.month}):u.value==="year"?l(Ye,U({key:"date-picker-years"},oe,{modelValue:M.value,"onUpdate:modelValue":[B=>M.value=B,re],min:y.value,max:g.value,allowedYears:E.value}),{year:i.year}):l(Ie,U({key:"date-picker-month"},Z,{modelValue:o.value,"onUpdate:modelValue":B=>o.value=B,month:v.value,"onUpdate:month":[B=>v.value=B,ie],year:M.value,"onUpdate:year":[B=>M.value=B,re],min:y.value,max:g.value}),{day:i.day})]})]),actions:i.actions})}),{}}}),Pa={name:"FloatingToolbar",props:{loading:{type:Boolean,default:!1},unreadCount:{type:Number,default:0},selectedDate:{type:[String,Date],required:!0},isToday:{type:Boolean,required:!0}},data(){return{isExpanded:!1}},methods:{handleDateSelect(t){this.$emit("date-select",t)}}};function _a(t,e,n,i,a,s){return f(),P(Rt,null,{default:r(()=>[l(R,{class:q(["floating-toolbar",{"toolbar-expanded":a.isExpanded}]),elevation:"4",rounded:"xl"},{default:r(()=>[l(Se,{variant:"text",class:"toolbar-buttons"},{default:r(()=>[$(l(k,{icon:"mdi-chevron-left",variant:"text",onClick:e[0]||(e[0]=m=>t.$emit("prev-day")),title:"查看昨天",class:"toolbar-btn"},null,512),[[ne]]),$(l(k,{icon:"mdi-format-font-size-decrease",variant:"text",onClick:e[1]||(e[1]=m=>t.$emit("zoom","out")),title:"缩小字体",class:"toolbar-btn"},null,512),[[ne]]),$(l(k,{icon:"mdi-format-font-size-increase",variant:"text",onClick:e[2]||(e[2]=m=>t.$emit("zoom","up")),title:"放大字体",class:"toolbar-btn"},null,512),[[ne]]),l(Gt,{location:"top","close-on-content-click":!1},{activator:r(({props:m})=>[$(l(k,U({icon:"mdi-calendar",variant:"text"},m,{title:"选择日期",class:"toolbar-btn"}),null,16),[[ne]])]),default:r(()=>[l(R,{border:"",class:"date-picker-card"},{default:r(()=>[l(Va,{"model-value":n.selectedDate,color:"primary","onUpdate:modelValue":s.handleDateSelect},null,8,["model-value","onUpdate:modelValue"])]),_:1})]),_:1}),$(l(k,{icon:"mdi-refresh",variant:"text",loading:n.loading,onClick:e[3]||(e[3]=m=>t.$emit("refresh")),title:"刷新数据",class:"toolbar-btn"},null,8,["loading"]),[[ne]]),n.isToday?F("",!0):$((f(),P(k,{key:0,icon:"mdi-chevron-right",variant:"text",onClick:e[4]||(e[4]=m=>t.$emit("next-day")),title:"查看明天",class:"toolbar-btn"},null,512)),[[ne]])]),_:1})]),_:1},8,["class"])]),_:1})}const it=ve(Pa,[["render",_a],["__scopeId","data-v-4c0541bf"]]),La={name:"HomeworkEditDialog",props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},initialContent:{type:String,default:""},autoSave:{type:Boolean,default:!1}},emits:["update:modelValue","save"],data(){return{content:"",templateData:null,currentLine:"",currentLineStart:0,currentLineEnd:0,quickTexts:["课","题","T","P"]}},computed:{dialogVisible:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},subject(){return this.title},hasTemplates(){var t,e;return!!((e=(t=this.templateData)==null?void 0:t.actions)!=null&&e.length||this.subjectBooks||this.commonBooks)},subjectBooks(){var t,e,n;return!this.subject||!((n=(e=(t=this.templateData)==null?void 0:t.subjects)==null?void 0:e[this.subject])!=null&&n.books)?null:this.templateData.subjects[this.subject].books},commonBooks(){var t,e;return(e=(t=this.templateData)==null?void 0:t.commonSubject)!=null&&e.books?this.templateData.commonSubject.books:null}},watch:{async modelValue(t){if(t){this.content=this.initialContent;try{this.templateData=await ue.loadData("classworks-config-homework-template")}catch(e){console.error("Failed to load homework templates:",e),this.templateData=null}this.$nextTick(()=>{this.$refs.inputRef&&(this.$refs.inputRef.focus(),this.updateCurrentLine())})}}},methods:{handleClose(){const t=this.content.trim();t!==this.initialContent.trim()&&this.$emit("save",t),this.dialogVisible=!1},updateCurrentLine(){const e=this.$refs.inputRef.$el.querySelector("textarea").selectionStart,n=this.content;let i=0;const a=n.split(`
`);for(let s=0;s<a.length;s++){const m=a[s].length,o=i+m;if(e<=o||s===a.length-1){this.currentLine=a[s],this.currentLineStart=i,this.currentLineEnd=o;break}i=o+1}this.currentLine||(this.currentLine="",this.currentLineStart=n.length,this.currentLineEnd=n.length)},isBookSelected(t){return this.currentLine.includes(t)},isPageSelected(t,e){return this.currentLine.includes(e)},handleBookClick(t){if(this.isBookSelected(t)){const e=this.content.split(`
`),n=e.findIndex(i=>i.includes(t));n!==-1&&(e.splice(n,1),this.content=e.join(`
`))}else{const e=this.content.trim().length>0;this.content=(e?this.content.trim()+`
`:"")+t}this.$nextTick(()=>{const e=this.$refs.inputRef.$el.querySelector("textarea");if(e.focus(),!this.isBookSelected(t)){const n=this.content.split(`
`);let i=0;for(let a=0;a<n.length;a++){if(n[a].includes(t)){i+=n[a].length;break}i+=n[a].length+1}e.setSelectionRange(i,i)}this.updateCurrentLine()})},handlePageClick(t,e){if(this.isPageSelected(t,e)){const n=this.currentLineStart,i=this.currentLineEnd,a=this.content.slice(n,i),s=a.lastIndexOf(e);if(s!==-1){const m=a.slice(0,s)+a.slice(s+e.length);this.content=this.content.slice(0,n)+m.trim()+this.content.slice(i)}}else{const n=this.currentLineStart,i=this.currentLineEnd,a=this.content.slice(n,i);this.content=this.content.slice(0,n)+a.trim()+(a.trim().length>0?" ":"")+e+this.content.slice(i)}this.$nextTick(()=>{const n=this.$refs.inputRef.$el.querySelector("textarea");n.focus();const i=this.content.split(`
`);let a=0;for(let s=0;s<i.length&&(a+=i[s].length,!(a>this.currentLineStart));s++)a+=1;n.setSelectionRange(a,a),this.updateCurrentLine()})},insertTemplate(t){const e=this.$refs.inputRef.$el.querySelector("textarea"),n=e.selectionStart,i=e.selectionEnd,a=n>0&&this.content[n-1]!==" "&&this.content[n-1]!==`
`;this.content=this.content.slice(0,n)+(a?" ":"")+t+this.content.slice(i),this.$nextTick(()=>{e.focus();const s=n+t.length+(a?1:0);e.setSelectionRange(s,s),this.updateCurrentLine()})},insertAtCursor(t){if(!t)return;const e=this.$refs.inputRef.$el.querySelector("textarea"),n=e.selectionStart,i=e.selectionEnd;this.content=this.content.slice(0,n)+t+this.content.slice(i),this.$nextTick(()=>{e.focus();const a=n+t.length;e.setSelectionRange(a,a),this.updateCurrentLine()})},deleteLastChar(){const t=this.$refs.inputRef.$el.querySelector("textarea"),e=t.selectionStart,n=t.selectionEnd;e===n?e>0&&(this.content=this.content.slice(0,e-1)+this.content.slice(e),this.$nextTick(()=>{t.focus(),t.setSelectionRange(e-1,e-1),this.updateCurrentLine()})):(this.content=this.content.slice(0,e)+this.content.slice(n),this.$nextTick(()=>{t.focus(),t.setSelectionRange(e,e),this.updateCurrentLine()}))}}},Aa={class:"d-flex"},Ma={class:"flex-grow-1"},Ta={key:0,class:"mt-4"},Fa={key:0,class:"template-buttons"},Na={key:0,class:"pages-container mt-2"},Ba={key:0,class:"pages-container mt-2"},ja={key:2,class:"button-group"},Ea={key:1,class:"text-center text-body-2 text-disabled mt-2"},Ra={class:"quick-tools ml-4",style:{"min-width":"180px"}},za={class:"numeric-keypad mb-4"},Ia={class:"keypad-row"},Oa={class:"keypad-row"},Ya={class:"keypad-row"},Ua={class:"keypad-row"},Ha={class:"keypad-row"},qa={class:"d-flex flex-wrap gap-1"};function Wa(t,e,n,i,a,s){return f(),P(me,{modelValue:s.dialogVisible,"onUpdate:modelValue":e[5]||(e[5]=m=>s.dialogVisible=m),width:"auto","max-width":"900","onClick:outside":s.handleClose},{default:r(()=>[l(R,{border:""},{default:r(()=>[l(G,null,{default:r(()=>[h(b(n.title),1)]),_:1}),l(zt,null,{default:r(()=>[h(b(n.autoSave?"喵?喵呜!":"写完后点击上传谢谢喵"),1)]),_:1}),l(I,null,{default:r(()=>{var m;return[c("div",Aa,[c("div",Ma,[l(Jt,{ref:"inputRef",modelValue:a.content,"onUpdate:modelValue":e[0]||(e[0]=o=>a.content=o),"auto-grow":"",placeholder:"使用换行表示分条",rows:"5",onClick:s.updateCurrentLine,onKeyup:s.updateCurrentLine,width:"480"},null,8,["modelValue","onClick","onKeyup"]),a.templateData?(f(),p("div",Ta,[s.hasTemplates?(f(),p("div",Fa,[s.subjectBooks?(f(!0),p(A,{key:0},N(s.subjectBooks,(o,u)=>(f(),p("div",{key:u,class:"button-group"},[l(z,{class:"ma-1 book-chip",color:s.isBookSelected(u)?"success":"default",variant:s.isBookSelected(u)?"elevated":"flat",onClick:y=>s.handleBookClick(u)},{default:r(()=>[h(b(u),1)]),_:2},1032,["color","variant","onClick"]),s.isBookSelected(u)?(f(),p("div",Na,[(f(!0),p(A,null,N(o,y=>(f(),P(z,{key:y,class:"ma-1",color:s.isPageSelected(u,y)?"info":"default",variant:s.isPageSelected(u,y)?"elevated":"flat",onClick:g=>s.handlePageClick(u,y)},{default:r(()=>[h(b(y),1)]),_:2},1032,["color","variant","onClick"]))),128))])):F("",!0)]))),128)):F("",!0),s.commonBooks?(f(!0),p(A,{key:1},N(s.commonBooks,(o,u)=>(f(),p("div",{key:u,class:"button-group"},[l(z,{class:"ma-1 book-chip",color:s.isBookSelected(u)?"success":"default",variant:s.isBookSelected(u)?"elevated":"flat",onClick:y=>s.handleBookClick(u)},{default:r(()=>[h(b(u),1)]),_:2},1032,["color","variant","onClick"]),s.isBookSelected(u)?(f(),p("div",Ba,[(f(!0),p(A,null,N(o,y=>(f(),P(z,{key:y,class:"ma-1",color:s.isPageSelected(u,y)?"info":"default",variant:s.isPageSelected(u,y)?"elevated":"flat",onClick:g=>s.handlePageClick(u,y)},{default:r(()=>[h(b(y),1)]),_:2},1032,["color","variant","onClick"]))),128))])):F("",!0)]))),128)):F("",!0),(m=a.templateData.actions)!=null&&m.length?(f(),p("div",ja,[(f(!0),p(A,null,N(a.templateData.actions,o=>(f(),P(z,{key:o,class:"ma-1",color:"primary",variant:"flat",onClick:u=>s.insertTemplate(o)},{default:r(()=>[h(b(o),1)]),_:2},1032,["onClick"]))),128))])):F("",!0)])):(f(),p("div",Ea," 暂无可用的模板 "))])):F("",!0)]),c("div",Ra,[c("div",za,[c("div",Ia,[(f(),p(A,null,N(3,o=>l(k,{key:o,size:"small",variant:"tonal",class:"keypad-btn",onClick:u=>s.insertAtCursor(String(o))},{default:r(()=>[h(b(o),1)]),_:2},1032,["onClick"])),64))]),c("div",Oa,[(f(),p(A,null,N(3,o=>l(k,{key:o,size:"small",variant:"tonal",class:"keypad-btn",onClick:u=>s.insertAtCursor(String(o+3))},{default:r(()=>[h(b(o+3),1)]),_:2},1032,["onClick"])),64))]),c("div",Ya,[(f(),p(A,null,N(3,o=>l(k,{key:o,size:"small",variant:"tonal",class:"keypad-btn",onClick:u=>s.insertAtCursor(String(o+6))},{default:r(()=>[h(b(o+6),1)]),_:2},1032,["onClick"])),64))]),c("div",Ua,[l(k,{size:"small",variant:"tonal",class:"keypad-btn",onClick:e[1]||(e[1]=o=>s.insertAtCursor("-"))},{default:r(()=>[...e[6]||(e[6]=[h(" - ",-1)])]),_:1}),l(k,{size:"small",variant:"tonal",class:"keypad-btn",onClick:e[2]||(e[2]=o=>s.insertAtCursor("0"))},{default:r(()=>[...e[7]||(e[7]=[h(" 0 ",-1)])]),_:1}),l(k,{size:"small",variant:"tonal",class:"keypad-btn",color:"error",onClick:s.deleteLastChar},{default:r(()=>[...e[8]||(e[8]=[h(" ← ",-1)])]),_:1},8,["onClick"])]),c("div",Ha,[l(k,{size:"small",variant:"tonal",class:"keypad-btn space-btn",onClick:e[3]||(e[3]=o=>s.insertAtCursor(" "))},{default:r(()=>[...e[9]||(e[9]=[h(" 空格 ",-1)])]),_:1}),l(k,{size:"small",variant:"tonal",class:"keypad-btn space-btn",onClick:e[4]||(e[4]=o=>s.insertAtCursor(`
`))},{default:r(()=>[...e[10]||(e[10]=[h(" 换行 ",-1)])]),_:1})])]),c("div",qa,[(f(!0),p(A,null,N(a.quickTexts,o=>(f(),P(k,{key:o,size:"small",variant:"flat",onClick:u=>s.insertAtCursor(o)},{default:r(()=>[h(b(o),1)]),_:2},1032,["onClick"]))),128))])])])]}),_:1})]),_:1})]),_:1},8,["modelValue","onClick:outside"])}const rt=ve(La,[["render",Wa],["__scopeId","data-v-632e8bbf"]]);function Ka(t,e){let n=null;return function(...i){n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,i)},e)}}function Ga(t,e){let n=null,i=0;return function(...a){const s=Date.now();s-i<e?(n&&clearTimeout(n),n=setTimeout(()=>{i=s,t.apply(this,a)},e)):(i=s,t.apply(this,a))}}const Ja={name:"Classworks 作业板",components:{MessageLog:Ze,RandomPicker:Qe,NamespaceAccess:Xe,FloatingToolbar:it,FloatingICP:$e,HomeworkEditDialog:rt},data(){const t=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8},{name:"其他",order:9}];return{dataKey:"",provider:"",useDisplay:je,state:{classNumber:"",studentList:[],boardData:{homework:{},attendance:{absent:[],late:[],exclude:[]}},dialogVisible:!1,dialogTitle:"",textarea:"",dateString:"",synced:!1,attendDialogVisible:!1,contentStyle:{"font-size":`${x("font.size")}px`},uploadLoading:!1,downloadLoading:!1,snackbar:!1,snackbarText:"",fontSize:x("font.size"),datePickerDialog:!1,selectedDate:new Date().toISOString().split("T")[0].replace(/-/g,""),selectedDateObj:new Date,refreshInterval:null,showNoDataMessage:!1,noDataMessage:"",isToday:!1,attendanceDialog:!1,availableSubjects:t,isFullscreen:!1},loading:{download:!1,upload:!1,students:!1},debouncedUpload:null,throttledReflow:null,sortedItemsCache:{key:"",value:[]},confirmDialog:{show:!1,resolve:null,reject:null},attendanceSearch:"",attendanceFilter:[],urlConfigDialog:{show:!1,config:null,changes:[],validSettings:{},confirmHandler:null,cancelHandler:null,icons:{}}}},computed:{isMobile(){return je().mobile.value},titleText(){const t=this.getToday(),e=new Date(t);e.setDate(e.getDate()-1);const n=this.state.dateString,i=this.formatDate(t),a=this.formatDate(e);return n===i?"今天的作业":n===a?"昨天的作业":`${n}的作业`},sortedItems(){const t=`${JSON.stringify(this.state.boardData.homework)}_${this.subjectOrder.join()}_${this.dynamicSort}`;if(this.sortedItemsCache.key===t)return this.sortedItemsCache.value;const e=Object.entries(this.state.boardData.homework).filter(([,i])=>{var a;return(a=i.content)==null?void 0:a.trim()}).map(([i,a])=>{var s;return{key:i,name:((s=this.state.availableSubjects.find(m=>m.name===i))==null?void 0:s.name)||i,content:a.content,order:this.subjectOrder.indexOf(i),rowSpan:Math.ceil((a.content.split(`
`).filter(m=>m.trim()).length+1)*.8)}}),n=this.dynamicSort?this.optimizeGridLayout(e):e.sort((i,a)=>i.order-a.order);return this.updateSortedItemsCache(t,n),n},unusedSubjects(){const t=Object.keys(this.state.boardData.homework).filter(e=>{var n;return(n=this.state.boardData.homework[e].content)==null?void 0:n.trim()});return this.state.availableSubjects.filter(e=>!t.includes(e.name)).sort((e,n)=>e.order-n.order)},emptySubjects(){return this.emptySubjectDisplay!=="button"?[]:this.unusedSubjects},autoSave(){return x("edit.autoSave")},blockNonTodayAutoSave(){return x("edit.blockNonTodayAutoSave")},isToday(){const t=(()=>{const e=new Date,n=e.getFullYear(),i=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${n}${i}${a}`})();return this.state.dateString===t},canAutoSave(){return this.autoSave&&(!this.blockNonTodayAutoSave||this.isToday)},needConfirmSave(){return!this.isToday&&this.confirmNonTodaySave},shouldShowBlockedMessage(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},refreshBeforeEdit(){return x("edit.refreshBeforeEdit")},emptySubjectDisplay(){return x("display.emptySubjectDisplay")},dynamicSort(){return x("display.dynamicSort")},isEditingDisabled(){return this.state.uploadLoading||this.state.downloadLoading},unreadCount(){var t;return((t=this.$refs.messageLog)==null?void 0:t.unreadCount)||0},showRandomPickerButton(){return x("randomPicker.enabled")},showListCardButton(){return x("display.showListCard")},confirmNonTodaySave(){return x("edit.confirmNonTodaySave")},shouldShowSaveConfirm(){return!this.isToday&&this.confirmNonTodaySave},shouldBlockAutoSave(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},showFullscreenButton(){return x("display.showFullscreenButton")},showAntiScreenBurnCard(){return x("display.showAntiScreenBurnCard")},filteredStudents(){let t=[...this.state.studentList];if(this.attendanceSearch){const e=this.attendanceSearch.toLowerCase();t=t.filter(n=>n.toLowerCase().includes(e))}return this.attendanceFilter&&this.attendanceFilter.length>0&&(t=t.filter(e=>{const n=this.state.studentList.indexOf(e);return!!(this.attendanceFilter.includes("present")&&this.isPresent(n)||this.attendanceFilter.includes("absent")&&this.isAbsent(n)||this.attendanceFilter.includes("late")&&this.isLate(n)||this.attendanceFilter.includes("exclude")&&this.isExclude(n))})),t},extractedSurnames(){if(!this.state.studentList||this.state.studentList.length===0)return[];const t=new Map;return this.state.studentList.forEach(e=>{if(e&&e.length>0){const n=e.charAt(0);t.has(n)?t.set(n,t.get(n)+1):t.set(n,1)}}),Array.from(t.entries()).map(([e,n])=>({name:e,count:n})).sort((e,n)=>{const i=Ee(e.name,{toneType:"none",mode:"surname"}),a=Ee(n.name,{toneType:"none",mode:"surname"});return i.localeCompare(a)})},subjectOrder(){return[...this.state.availableSubjects].sort((t,e)=>t.order-e.order).map(t=>t.name)}},watch:{homeworkData:{handler(){this.$nextTick(()=>{this.$refs.waterfall&&this.$refs.waterfall.reflow()})},deep:!0},"$vuetify.display.width":{handler(){this.throttledReflow()},deep:!0}},created(){this.debouncedUpload=Ka(this.uploadData,2e3),this.throttledReflow=Ga(()=>{this.$refs.gridContainer&&this.optimizeGridLayout(this.sortedItems)},200)},async mounted(){try{this.updateBackendUrl(),await this.initializeData(),this.setupAutoRefresh(),this.unwatchSettings=Kt(()=>{this.updateSettings()}),document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("MSFullscreenChange",this.fullscreenChangeHandler),this.checkHashForRandomPicker(),window.addEventListener("hashchange",this.checkHashForRandomPicker)}catch(t){console.error("初始化失败:",t),this.showError("初始化失败,请刷新页面重试")}},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings(),this.state.refreshInterval&&clearInterval(this.state.refreshInterval),document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("MSFullscreenChange",this.fullscreenChangeHandler),window.removeEventListener("hashchange",this.checkHashForRandomPicker)},methods:{ensureDate(t){if(t instanceof Date)return t;if(typeof t=="string"){const e=new Date(t);if(!isNaN(e.getTime()))return e}return new Date},formatDate(t){const e=this.ensureDate(t),n=e.getFullYear(),i=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${n}${i}${a}`},getToday(){return new Date},async initializeData(){const t=await this.parseUrlConfig(),n=new URLSearchParams(window.location.search).get("date"),i=this.getToday();let a=i;if(n){if(/^\d{8}$/.test(n)){const s=n.substring(0,4),m=n.substring(4,6),o=n.substring(6,8);a=new Date(`${s}-${m}-${o}`)}else a=new Date(n);isNaN(a.getTime())&&(a=i)}if(this.state.dateString=this.formatDate(a),this.state.selectedDate=this.state.dateString,this.state.selectedDateObj=a,this.state.isToday=this.formatDate(a)===this.formatDate(i),!t){this.provider=x("server.provider");const s=x("server.classNumber");this.state.classNumber=s}await Promise.all([this.downloadData(),this.loadConfig()])},async downloadData(){var t,e,n;if(!this.loading.download)try{this.loading.download=!0;const i=await ue.loadData("classworks-data-"+this.state.dateString);if(i.success==!1)if(i.error.code==="NOT_FOUND")this.state.showNoDataMessage=!0,this.state.noDataMessage=i.error.message,this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}};else throw new Error(i.error.message);else this.state.boardData={homework:i.homework||{},attendance:{absent:((t=i.attendance)==null?void 0:t.absent)||[],late:((e=i.attendance)==null?void 0:e.late)||[],exclude:((n=i.attendance)==null?void 0:n.exclude)||[]}},this.state.synced=!0,this.state.showNoDataMessage=!1,this.$message.success("下载成功","数据已更新")}catch(i){this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}},this.$message.error("下载失败",i.message)}finally{this.loading.download=!1}},async trySave(t=!1){if(t&&!this.canAutoSave)return this.shouldShowBlockedMessage&&this.showMessage("需要手动保存","已禁止自动保存非当天数据","warning"),!1;if(!t&&this.needConfirmSave)try{await this.showConfirmDialog()}catch{return!1}try{return await this.uploadData(),!0}catch(e){return this.$message.error("保存失败",e.message||"请重试"),!1}},async handleClose(){var n;if(!this.currentEditSubject)return;const t=this.state.textarea.trim(),e=((n=this.state.boardData.homework[this.currentEditSubject])==null?void 0:n.content)||"";t!==e.trim()&&(this.state.boardData.homework[this.currentEditSubject]={content:t},this.state.synced=!1,this.autoSave&&await this.trySave(!0)),this.state.dialogVisible=!1},async uploadData(){if(!this.loading.upload)try{this.loading.upload=!0;const t=await ue.saveData("classworks-data-"+this.state.dateString,this.state.boardData);if(t.success==!1)throw new Error(t.error.message);this.state.synced=!0,this.$message.success(t.message||"保存成功")}finally{this.loading.upload=!1}},async loadConfig(){try{try{const t=await ue.loadData("classworks-list-main");t.success!=!1&&Array.isArray(t)&&(this.state.studentList=t.map(e=>e.name))}catch(t){console.warn("Failed to load student list from dedicated key, falling back to config",t)}await this.loadSubjects()}catch(t){console.error("加载配置失败:",t),this.$message.error("加载配置失败",t.message)}},async loadSubjects(){try{const t=await ue.loadData("classworks-config-subject");t&&Array.isArray(t)&&(this.state.availableSubjects=t)}catch(t){console.warn("Failed to load subject configuration:",t)}},showSyncMessage(){this.$message.success("数据已同步","数据已完成与服务器同步")},async openDialog(t){var e;if(this.refreshBeforeEdit)try{await this.downloadData()}catch(n){console.error("刷新数据失败:",n),this.$message.error("刷新数据失败,可能显示的不是最新数据")}this.currentEditSubject=t,this.state.boardData.homework[t]||(this.state.boardData.homework[t]={content:""}),this.state.dialogTitle=((e=this.state.availableSubjects.find(n=>n.name===t))==null?void 0:e.name)||t,this.state.textarea=this.state.boardData.homework[t].content,this.state.dialogVisible=!0},async handleHomeworkSave(t){this.currentEditSubject&&(this.state.boardData.homework[this.currentEditSubject]={content:t},this.state.synced=!1,this.autoSave&&await this.trySave(!0))},splitPoint(t){return t.split(`
`).filter(e=>e.trim())},setAttendanceArea(){this.state.attendanceDialog=!0},toggleStudentStatus(t){const e=this.state.studentList[t];this.state.boardData.attendance.absent.includes(e)?(this.state.boardData.attendance.absent=this.state.boardData.attendance.absent.filter(n=>n!==e),this.state.boardData.attendance.late.push(e)):this.state.boardData.attendance.late.includes(e)?(this.state.boardData.attendance.late=this.state.boardData.attendance.late.filter(n=>n!==e),this.state.boardData.attendance.exclude.push(e)):this.state.boardData.attendance.exclude.includes(e)?this.state.boardData.attendance.exclude=this.state.boardData.attendance.exclude.filter(n=>n!==e):this.state.boardData.attendance.absent.push(e),this.state.synced=!1,this.canAutoSave&&this.uploadData()},cleanstudentslist(){this.state.boardData.attendance.absent=[],this.state.boardData.attendance.late=[],this.state.boardData.attendance.exclude=[],this.state.synced=!1,this.canAutoSave&&this.uploadData()},zoom(t){t==="up"&&this.state.fontSize<100?this.state.fontSize+=2:t==="out"&&this.state.fontSize>16&&(this.state.fontSize-=2),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},ce("font.size",this.state.fontSize)},updateBackendUrl(){const t=x("server.provider"),e=x("server.classNumber");this.provider=t,this.state.classNumber=e},setupAutoRefresh(){const t=x("refresh.auto"),e=x("refresh.interval");this.state.refreshInterval&&clearInterval(this.state.refreshInterval),t&&(this.state.refreshInterval=setInterval(()=>{this.shouldSkipRefresh()||this.downloadData()},e*1e3))},shouldSkipRefresh(){return!!(this.state.dialogVisible||this.state.attendanceDialog||this.confirmDialog.show||this.state.datePickerDialog||this.loading.upload||this.loading.download||!this.state.synced)},updateSettings(){this.state.fontSize=x("font.size"),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},this.setupAutoRefresh(),this.updateBackendUrl()},async handleDateSelect(t){if(t)try{const e=this.ensureDate(t),n=this.formatDate(e);this.state.dateString!==n&&(this.state.dateString=n,this.state.selectedDate=n,this.state.selectedDateObj=e,this.state.isToday=n===this.formatDate(this.getToday()),this.$router.replace({query:{date:n}}).catch(()=>{}),await Promise.all([this.downloadData(),this.loadSubjects()]))}catch(e){console.error("Date processing error:",e),this.$message.error("日期处理错误","请重新选择日期")}},optimizeGridLayout(t){const e=Math.min(3,Math.floor(window.innerWidth/300));if(e<=1)return t;const n=Array.from({length:e},()=>({height:0,items:[]}));return t.forEach(i=>{const a=n.reduce((s,m,o)=>m.height<n[s].height?o:s,0);n[a].items.push(i),n[a].height+=i.rowSpan}),n.flatMap(i=>i.items).map((i,a)=>({...i,order:a}))},setAllPresent(){this.state.boardData.attendance={absent:[],late:[],exclude:[]},this.state.synced=!1},setAllAbsent(){this.state.boardData.attendance.absent=[...this.state.studentList],this.state.boardData.attendance.late=[],this.state.boardData.attendance.exclude=[],this.state.synced=!1},setAllLate(){this.state.boardData.attendance.absent=[],this.state.boardData.attendance.late=[...this.state.studentList],this.state.boardData.attendance.exclude=[],this.state.synced=!1},setAllExclude(){this.state.boardData.attendance.absent=[],this.state.boardData.attendance.late=[],this.state.boardData.attendance.exclude=[...this.state.studentList],this.state.synced=!1},isPresent(t){const e=this.state.studentList[t],{absent:n,late:i,exclude:a}=this.state.boardData.attendance;return!n.includes(e)&&!i.includes(e)&&!a.includes(e)},isAbsent(t){return this.state.boardData.attendance.absent.includes(this.state.studentList[t])},isLate(t){return this.state.boardData.attendance.late.includes(this.state.studentList[t])},isExclude(t){return this.state.boardData.attendance.exclude.includes(this.state.studentList[t])},setPresent(t){const e=this.state.studentList[t];this.state.boardData.attendance.absent=this.state.boardData.attendance.absent.filter(n=>n!==e),this.state.boardData.attendance.late=this.state.boardData.attendance.late.filter(n=>n!==e),this.state.boardData.attendance.exclude=this.state.boardData.attendance.exclude.filter(n=>n!==e),this.state.synced=!1},setAbsent(t){const e=this.state.studentList[t];this.setPresent(t),this.state.boardData.attendance.absent.push(e),this.state.synced=!1},setLate(t){const e=this.state.studentList[t];this.setPresent(t),this.state.boardData.attendance.late.push(e),this.state.synced=!1},setExclude(t){const e=this.state.studentList[t];this.setPresent(t),this.state.boardData.attendance.exclude.push(e),this.state.synced=!1},async saveAttendance(){try{await this.trySave(!0),this.state.attendanceDialog=!1}catch(t){console.error("保存出勤状态失败:",t),this.$message.error("保存失败","请重试")}},showMessage(t,e="",n="success"){this.$message[n](t,e)},updateSortedItemsCache(t,e){this._sortedItemsCache={key:t,value:e}},handleMouseMove(t){const e=t.currentTarget,n=e.getBoundingClientRect(),i=(t.clientX-n.left)/n.width*100,a=(t.clientY-n.top)/n.height*100;e.style.setProperty("--x",`${i}%`),e.style.setProperty("--y",`${a}%`)},handleTouchMove(t){if(t.touches.length===1){const e=t.touches[0],n=t.currentTarget,i=n.getBoundingClientRect(),a=(e.clientX-i.left)/i.width*100,s=(e.clientY-i.top)/i.height*100;n.style.setProperty("--x",`${a}%`),n.style.setProperty("--y",`${s}%`)}},showConfirmDialog(){return new Promise((t,e)=>{this.confirmDialog={show:!0,resolve:()=>{this.confirmDialog.show=!1,t()},reject:()=>{this.confirmDialog.show=!1,e(new Error("用户取消保存"))}}})},confirmSave(){this.confirmDialog.show=!1,this.confirmDialog.resolve&&this.confirmDialog.resolve(!0)},cancelSave(){this.confirmDialog.show=!1,this.confirmDialog.reject&&this.confirmDialog.reject(new Error("用户取消保存"))},async manualUpload(){return this.trySave(!1)},async handleAttendanceDialogClose(t){!t&&!this.state.synced&&await this.trySave(!0)},toggleFullscreen(){this.state.isFullscreen?this.exitFullscreen():this.enterFullscreen()},enterFullscreen(){const t=document.documentElement;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullScreen?t.webkitRequestFullScreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()},fullscreenChangeHandler(){this.state.isFullscreen=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)},getStudentStatusColor(t){const e=this.state.studentList[t];return this.state.boardData.attendance.absent.includes(e)?"error":this.state.boardData.attendance.late.includes(e)?"warning":this.state.boardData.attendance.exclude.includes(e)?"grey":"success"},getStudentStatusVariant(t){const e=this.state.studentList[t];return this.state.boardData.attendance.absent.includes(e)||this.state.boardData.attendance.late.includes(e)||this.state.boardData.attendance.exclude.includes(e)?"tonal":"outlined"},getStudentStatusIcon(t){const e=this.state.studentList[t];return this.state.boardData.attendance.absent.includes(e)?"mdi-account-off":this.state.boardData.attendance.late.includes(e)?"mdi-clock-alert":this.state.boardData.attendance.exclude.includes(e)?"mdi-account-cancel":"mdi-account-check"},getStudentStatusText(t){const e=this.state.studentList[t];return this.state.boardData.attendance.absent.includes(e)?"请假":this.state.boardData.attendance.late.includes(e)?"迟到":this.state.boardData.attendance.exclude.includes(e)?"不参与":"到课"},toggleFilter(t){const e=this.attendanceFilter.indexOf(t);e===-1?this.attendanceFilter.push(t):this.attendanceFilter.splice(e,1)},openRandomPicker(){this.$refs.randomPicker&&this.$refs.randomPicker.open()},checkHashForRandomPicker(){window.location.hash==="#random-picker"&&this.$nextTick(()=>{console.log("打开随机点名"),window.location.hash="",this.openRandomPicker()})},parseUrlConfig(){try{const e=new URLSearchParams(window.location.search).get("config");if(!e)return!1;try{const n=atob(e),i=Uint8Array.from(n,y=>y.charCodeAt(0)),a=new TextDecoder().decode(i),s=JSON.parse(a);console.log("从URL读取配置:",s);const m=[],o={},u={};return this.processSpecialSettings(s,m,o),this.processStandardSettings(s,m,o,u),Object.keys(o).length===0?(console.log("URL配置与当前配置相同无需应用"),!1):new Promise(y=>{this.urlConfigDialog={show:!0,config:s,changes:m,validSettings:o,icons:u,confirmHandler:()=>{this.urlConfigDialog.show=!1,this.applyUrlConfig(o),y(!0)},cancelHandler:()=>{this.urlConfigDialog.show=!1,y(!1)}}})}catch(n){return console.error("解析URL配置错误:",n),this.$message.error("URL配置错误","无法解析配置数据"),!1}}catch(t){return console.error("处理URL配置错误:",t),!1}},processSpecialSettings(t,e,n){var i,a;if(t.classNumber!==void 0){const s=x("server.classNumber");t.classNumber!==s&&(e.push({key:"server.classNumber",name:"班级",oldValue:s,newValue:t.classNumber,description:((i=de["server.classNumber"])==null?void 0:i.description)||"班级编号",icon:((a=de["server.classNumber"])==null?void 0:a.icon)||"mdi-account-group"}),n["server.classNumber"]=t.classNumber)}t.date!==void 0&&t.date!==this.state.dateString&&(e.push({key:"date",name:"日期",oldValue:this.state.dateString,newValue:t.date,description:"查看的日期",icon:"mdi-calendar"}),n.date=t.date),t.subjects&&Array.isArray(t.subjects)&&(e.push({key:"subjects",name:"科目列表",oldValue:`${this.state.availableSubjects.length}个科目`,newValue:`${t.subjects.length}个科目`,description:"可用科目列表",icon:"mdi-notebook"}),n.subjects=t.subjects)},processStandardSettings(t,e,n,i){Object.entries(t).forEach(([a,s])=>{if(["classNumber","date","subjects"].includes(a))return;let m=a,o=de[a];if(!o&&!a.includes(".")){const u=["server.","display.","theme.","edit.","refresh.","font.","randomPicker."];for(const y of u){const g=`${y}${a}`;if(de[g]){m=g,o=de[g];break}}}if(o){let u=this.convertValueToCorrectType(s,o.type);if(o.validate&&!o.validate(u)){console.warn(`URL配置项 ${m} 的值无效: ${s}`);return}const y=x(m);u!==y&&(e.push({key:m,name:this.getSettingDisplayName(m),oldValue:this.formatSettingValue(y),newValue:this.formatSettingValue(u),description:o.description||m,icon:o.icon||"mdi-cog"}),n[m]=u,i[m]=o.icon||"mdi-cog")}else e.push({key:a,name:this.getSettingDisplayName(a),oldValue:"未知",newValue:this.formatSettingValue(s),description:"自定义配置项",icon:"mdi-cog-outline"}),n[a]=s,i[a]="mdi-cog-outline"})},convertValueToCorrectType(t,e){return e==="boolean"?!!t:e==="number"?Number(t):String(t)},formatSettingValue(t){return typeof t=="boolean"?t?"开启":"关闭":t===""||t===null||t===void 0?"空":t.toString()},getSettingDisplayName(t){const e=t.split("."),n=e[e.length-1];return{provider:"数据提供方",domain:"服务器域名",classNumber:"班级编号",emptySubjectDisplay:"空科目显示方式",dynamicSort:"动态排序",showRandomButton:"随机按钮",showFullscreenButton:"全屏按钮",cardHoverEffect:"卡片悬浮效果",enhancedTouchMode:"增强触摸模式",showAntiScreenBurnCard:"防烧屏卡片",mode:"主题模式",size:"字体大小",autoSave:"自动保存",blockNonTodayAutoSave:"禁止自动保存非当日",refreshBeforeEdit:"编辑前刷新",confirmNonTodaySave:"非当日保存确认",auto:"自动刷新",interval:"刷新间隔"}[n]||n},safeBase64Decode(t){try{return Wt.decode(t)}catch(e){throw console.error("Base64解码错误:",e),new Error("无法解码配置数据")}},applyUrlConfig(t){for(const[e,n]of Object.entries(t)){if(e==="date"){this.handleDateSelect(n);continue}if(e==="subjects"){this.state.availableSubjects=n;continue}ce(e,n),e==="server.classNumber"&&(this.state.classNumber=n)}return this.updateBackendUrl(),this.$message.success("URL配置已应用","已从URL加载配置"),!0},navigateDay(t){const e=new Date(this.state.selectedDateObj);e.setDate(e.getDate()+t),this.handleDateSelect(e)}}},Xa={class:"d-flex"},Za={ref:"gridContainer",class:"grid-masonry"},Qa={class:"empty-subjects mt-4"},$a={key:1,class:"empty-subjects-grid"},en={key:0},tn={style:{"white-space":"nowrap"}},an={key:0},nn={style:{"white-space":"nowrap"}},sn={key:0},ln={style:{"white-space":"nowrap"}},rn={class:"d-flex flex-wrap mt-2 gap-1"},on={class:"d-flex flex-wrap mb-4 gap-2"},dn={class:"flex-grow-1"},un={class:"d-flex align-center"},cn={class:"text-subtitle-1"},mn={class:"attendance-actions"},hn={class:"text-subtitle-1"},fn={class:"text-grey-darken-1"},vn={class:"text-primary font-weight-medium"};function gn(t,e,n,i,a,s){const m=Xe,o=It("snap"),u=rt,y=Ze,g=it,D=$e,_=Qe;return f(),p(A,null,[l(Zt,{class:"no-select"},{append:r(()=>[l(m),e[18]||(e[18]=h()),l(k,{icon:"mdi-bell",variant:"text",badge:s.unreadCount||void 0,"badge-color":s.unreadCount?"error":void 0,onClick:e[0]||(e[0]=d=>t.$refs.messageLog.drawer=!0)},null,8,["badge","badge-color"]),l(k,{icon:"mdi-cog",variant:"text",onClick:e[1]||(e[1]=d=>t.$router.push("/settings"))})]),default:r(()=>[l(Xt,null,{default:r(()=>[h(b(a.state.classNumber)+" - "+b(s.titleText),1)]),_:1}),l(ee)]),_:1}),c("div",Xa,[l(Qt,{class:"main-window flex-grow-1 no-select",fluid:""},{default:r(()=>[c("div",Za,[l(xe,{name:"grid"},{default:r(()=>[(f(!0),p(A,null,N(s.sortedItems,d=>(f(),p("div",{key:d.key,class:"grid-item",style:he({"grid-row-end":`span ${d.rowSpan}`,order:d.order})},[l(R,{border:"",height:"100%",class:"glow-track",onClick:v=>!s.isEditingDisabled&&s.openDialog(d.key),onMousemove:s.handleMouseMove,onTouchmove:s.handleTouchMove},{default:r(()=>[l(G,null,{default:r(()=>[h(b(d.name),1)]),_:2},1024),l(I,{style:he(a.state.contentStyle)},{default:r(()=>[l(Ne,null,{default:r(()=>[(f(!0),p(A,null,N(s.splitPoint(d.content),v=>(f(),P(Be,{key:v},{default:r(()=>[h(b(v),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,["style"])]),_:2},1032,["onClick","onMousemove","onTouchmove"])],4))),128))]),_:1})],512),c("div",Qa,[s.emptySubjectDisplay==="button"?(f(),P(Se,{key:0,divided:"",variant:"outlined"},{default:r(()=>[(f(!0),p(A,null,N(s.unusedSubjects,d=>(f(),P(k,{key:d.name,disabled:s.isEditingDisabled,onClick:v=>s.openDialog(d.name)},{default:r(()=>[l(Y,{start:""},{default:r(()=>[...e[19]||(e[19]=[h(" mdi-plus ",-1)])]),_:1}),h(" "+b(d.name),1)]),_:2},1032,["disabled","onClick"]))),128))]),_:1})):(f(),p("div",$a,[l(xe,{name:"v-list"},{default:r(()=>[(f(!0),p(A,null,N(s.unusedSubjects,d=>(f(),P(R,{key:d.name,border:"",class:"empty-subject-card",disabled:s.isEditingDisabled,onClick:v=>s.openDialog(d.name)},{default:r(()=>[l(G,{class:"text-subtitle-1"},{default:r(()=>[h(b(d.name),1)]),_:2},1024),l(I,{class:"text-center"},{default:r(()=>[l(Y,{size:"small",color:"grey"},{default:r(()=>[...e[20]||(e[20]=[h(" mdi-plus ",-1)])]),_:1}),e[21]||(e[21]=c("div",{class:"text-caption text-grey"},"点击添加作业",-1))]),_:1})]),_:2},1032,["disabled","onClick"]))),128))]),_:1})]))]),a.state.synced?(f(),P(k,{key:1,color:"success",size:"large",onClick:s.showSyncMessage},{default:r(()=>[...e[23]||(e[23]=[h(" 同步完成 ",-1)])]),_:1},8,["onClick"])):(f(),P(k,{key:0,color:"error",size:"large",loading:a.loading.upload,class:"ml-2",onClick:s.manualUpload},{default:r(()=>[...e[22]||(e[22]=[h(" 上传 ",-1)])]),_:1},8,["loading","onClick"])),s.showRandomPickerButton?(f(),P(k,{key:2,color:"amber","prepend-icon":"mdi-account-question","append-icon":"mdi-dice-multiple",size:"large",class:"ml-2",onClick:s.openRandomPicker},{default:r(()=>[...e[24]||(e[24]=[h(" 随机点名 ",-1)])]),_:1},8,["onClick"])):F("",!0),s.showListCardButton?(f(),P(k,{key:3,color:"primary-darken-1","prepend-icon":"mdi-list-box",size:"large",class:"ml-2",onClick:e[2]||(e[2]=d=>t.$router.push("/list"))},{default:r(()=>[...e[25]||(e[25]=[h(" 列表 ",-1)])]),_:1})):F("",!0),s.showFullscreenButton?(f(),P(k,{key:4,color:a.state.isFullscreen?"blue-grey":"blue","prepend-icon":a.state.isFullscreen?"mdi-fullscreen-exit":"mdi-fullscreen",size:"large",class:"ml-2",onClick:s.toggleFullscreen},{default:r(()=>[h(b(a.state.isFullscreen?"退出全屏":"全屏显示"),1)]),_:1},8,["color","prepend-icon","onClick"])):F("",!0),s.showAntiScreenBurnCard?(f(),P(R,{key:5,border:"",class:"mt-4 anti-burn-card",color:"primary",variant:"tonal"},{default:r(()=>[l(G,{class:"text-subtitle-1"},{default:r(()=>[l(Y,{start:"",icon:"mdi-shield-check",size:"small"}),e[26]||(e[26]=h(" 屏幕保护技术已启用 ",-1))]),_:1}),l(I,{class:"text-body-2"},{default:r(()=>[...e[27]||(e[27]=[c("p",null," 本应用采用独立自研的动态像素偏移技术(DPO™)有效防止LCD屏幕烧屏现象。 ",-1),c("p",{class:"text-caption text-grey"},[h(" *研究显示动态像素偏移技术可以修复屏幕坏点,起到保护屏幕的作用,数据来自实验室。"),c("a",{href:"https://patentscope.wipo.int/search/zh/detail.jsf?docId=CN232281523&_cid=P20-M8L0YX-67061-1",target:"_blank"},"专利号CN108648692 ")],-1),c("p",{class:"text-caption text-grey"}," *技术已自动适配您的设备,无需手动调整 ",-1)])]),_:1})]),_:1})):F("",!0)]),_:1}),a.state.studentList&&a.state.studentList.length?(f(),P(ke,{key:0,class:"attendance-area no-select",cols:"1",onClick:e[3]||(e[3]=d=>s.setAttendanceArea())},{default:r(()=>[e[38]||(e[38]=c("h1",null,"出勤",-1)),c("h2",null,[l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[...e[28]||(e[28]=[h(" 应到 ",-1)])]),_:1}),e[29]||(e[29]=h(": ",-1)),l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[h(b(a.state.studentList.length-a.state.boardData.attendance.exclude.length)+"人 ",1)]),_:1})]),c("h2",null,[l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[...e[30]||(e[30]=[h(" 实到 ",-1)])]),_:1}),e[31]||(e[31]=h(": ",-1)),l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[h(b(a.state.studentList.length-a.state.boardData.attendance.absent.length-a.state.boardData.attendance.late.length-a.state.boardData.attendance.exclude.length)+"人 ",1)]),_:1})]),c("h2",null,[l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[...e[32]||(e[32]=[h(" 请假 ",-1)])]),_:1}),e[33]||(e[33]=h(": ",-1)),l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[h(b(a.state.boardData.attendance.absent.length)+"人 ",1)]),_:1})]),(f(!0),p(A,null,N(a.state.boardData.attendance.absent,(d,v)=>(f(),p("h3",{class:"gray-text",key:"absent-"+v},[a.useDisplay().lgAndUp.value?(f(),p("span",en,b(`${v+1}. `),1)):F("",!0),c("span",tn,b(d),1)]))),128)),c("h2",null,[l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[...e[34]||(e[34]=[h("迟到",-1)])]),_:1}),e[35]||(e[35]=h(": ",-1)),l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[h(b(a.state.boardData.attendance.late.length)+"人 ",1)]),_:1})]),(f(!0),p(A,null,N(a.state.boardData.attendance.late,(d,v)=>(f(),p("h3",{class:"gray-text",key:"late-"+v},[a.useDisplay().lgAndUp.value?(f(),p("span",an,b(`${v+1}. `),1)):F("",!0),c("span",nn,b(d),1)]))),128)),c("h2",null,[l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[...e[36]||(e[36]=[h("不参与",-1)])]),_:1}),e[37]||(e[37]=h(": ",-1)),l(o,{style:{"white-space":"nowrap"}},{default:r(()=>[h(b(a.state.boardData.attendance.exclude.length)+"人 ",1)]),_:1})]),(f(!0),p(A,null,N(a.state.boardData.attendance.exclude,(d,v)=>(f(),p("h3",{class:"gray-text",key:"exclude-"+v},[a.useDisplay().lgAndUp.value?(f(),p("span",sn,b(`${v+1}. `),1)):F("",!0),c("span",ln,b(d),1)]))),128))]),_:1})):F("",!0)]),l(u,{modelValue:a.state.dialogVisible,"onUpdate:modelValue":e[4]||(e[4]=d=>a.state.dialogVisible=d),title:a.state.dialogTitle,"initial-content":a.state.textarea,"auto-save":s.autoSave,onSave:s.handleHomeworkSave},null,8,["modelValue","title","initial-content","auto-save","onSave"]),l(Ot,{modelValue:a.state.snackbar,"onUpdate:modelValue":e[5]||(e[5]=d=>a.state.snackbar=d),timeout:2e3},{default:r(()=>[h(b(a.state.snackbarText),1)]),_:1},8,["modelValue"]),l(me,{modelValue:a.state.attendanceDialog,"onUpdate:modelValue":[e[11]||(e[11]=d=>a.state.attendanceDialog=d),s.handleAttendanceDialogClose],"max-width":"900","fullscreen-breakpoint":"sm"},{default:r(()=>[l(R,null,{default:r(()=>[l(G,{class:"d-flex align-center"},{default:r(()=>[l(Y,{icon:"mdi-account-group",class:"mr-2"}),e[39]||(e[39]=h(" 出勤状态管理 ",-1)),l(ee),l(z,{color:"primary",size:"small",class:"ml-2"},{default:r(()=>[h(b(a.state.dateString),1)]),_:1})]),_:1}),l(I,null,{default:r(()=>[l(De,{class:"mb-4"},{default:r(()=>[l(ke,{cols:"12",md:"12"},{default:r(()=>[l(Ve,{modelValue:a.attendanceSearch,"onUpdate:modelValue":[e[6]||(e[6]=d=>a.attendanceSearch=d),t.handleSearchChange],"prepend-inner-icon":"mdi-magnify",label:"搜索学生",hint:"支持筛选姓氏,如输入'孙'可筛选所有姓孙的学生",variant:"outlined",clearable:""},null,8,["modelValue","onUpdate:modelValue"]),c("div",rn,[(f(!0),p(A,null,N(s.extractedSurnames,d=>(f(),P(k,{key:d.name,variant:a.attendanceSearch===d.name?"elevated":"text",color:a.attendanceSearch===d.name?"primary":"",onClick:v=>a.attendanceSearch=a.attendanceSearch===d.name?"":d.name},{default:r(()=>[h(b(d.name)+" ("+b(d.count)+") ",1)]),_:2},1032,["variant","color","onClick"]))),128))])]),_:1})]),_:1}),c("div",on,[c("div",null,[l(z,{value:"present",color:a.attendanceFilter.includes("present")?"success":"",variant:a.attendanceFilter.includes("present")?"elevated":"tonal",class:"px-2 filter-chip",onClick:e[7]||(e[7]=d=>s.toggleFilter("present")),"prepend-icon":"mdi-account-check","append-icon":a.attendanceFilter.includes("present")?"mdi-check":""},{default:r(()=>[...e[40]||(e[40]=[h(" 到课 ",-1)])]),_:1},8,["color","variant","append-icon"]),l(z,{value:"absent",color:a.attendanceFilter.includes("absent")?"error":"",variant:a.attendanceFilter.includes("absent")?"elevated":"tonal",class:"px-2 filter-chip",onClick:e[8]||(e[8]=d=>s.toggleFilter("absent")),"prepend-icon":"mdi-account-off","append-icon":a.attendanceFilter.includes("absent")?"mdi-check":""},{default:r(()=>[...e[41]||(e[41]=[h(" 请假 ",-1)])]),_:1},8,["color","variant","append-icon"]),l(z,{value:"late",color:a.attendanceFilter.includes("late")?"warning":"",variant:a.attendanceFilter.includes("late")?"elevated":"tonal",class:"px-2 filter-chip",onClick:e[9]||(e[9]=d=>s.toggleFilter("late")),"prepend-icon":"mdi-clock-alert","append-icon":a.attendanceFilter.includes("late")?"mdi-check":""},{default:r(()=>[...e[42]||(e[42]=[h(" 迟到 ",-1)])]),_:1},8,["color","variant","append-icon"]),l(z,{value:"exclude",color:a.attendanceFilter.includes("exclude")?"grey":"",variant:a.attendanceFilter.includes("exclude")?"elevated":"tonal",class:"px-2 filter-chip",onClick:e[10]||(e[10]=d=>s.toggleFilter("exclude")),"prepend-icon":"mdi-account-cancel","append-icon":a.attendanceFilter.includes("exclude")?"mdi-check":""},{default:r(()=>[...e[43]||(e[43]=[h(" 不参与 ",-1)])]),_:1},8,["color","variant","append-icon"])])]),l(De,null,{default:r(()=>[(f(!0),p(A,null,N(s.filteredStudents,d=>(f(),P(ke,{key:d,cols:"12",sm:"6",md:"6",lg:"4"},{default:r(()=>[l(R,{class:"student-card",border:""},{default:r(()=>[l(I,{class:"d-flex align-center pa-2"},{default:r(()=>[c("div",dn,[c("div",un,[l(Yt,{color:s.getStudentStatusColor(a.state.studentList.indexOf(d)),size:"24",class:"mr-2"},{default:r(()=>[l(Y,{size:"small"},{default:r(()=>[h(b(s.getStudentStatusIcon(a.state.studentList.indexOf(d))),1)]),_:2},1024)]),_:2},1032,["color"]),c("div",cn,b(d),1)])]),c("div",mn,[l(k,{color:s.isPresent(a.state.studentList.indexOf(d))?"success":"",icon:"mdi-account-check",size:"small",variant:"text",onClick:v=>s.setPresent(a.state.studentList.indexOf(d)),title:"设为到课"},null,8,["color","onClick"]),l(k,{color:s.isAbsent(a.state.studentList.indexOf(d))?"error":"",icon:"mdi-account-off",size:"small",variant:"text",onClick:v=>s.setAbsent(a.state.studentList.indexOf(d)),title:"设为请假"},null,8,["color","onClick"]),l(k,{color:s.isLate(a.state.studentList.indexOf(d))?"warning":"",icon:"mdi-clock-alert",size:"small",variant:"text",onClick:v=>s.setLate(a.state.studentList.indexOf(d)),title:"设为迟到"},null,8,["color","onClick"]),l(k,{color:s.isExclude(a.state.studentList.indexOf(d))?"grey":"",icon:"mdi-account-cancel",size:"small",variant:"text",onClick:v=>s.setExclude(a.state.studentList.indexOf(d)),title:"设为不参与"},null,8,["color","onClick"])])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),l(De,null,{default:r(()=>[l(ke,{cols:"12",md:"12"},{default:r(()=>[l(R,{variant:"tonal",color:"primary",class:"mb-4"},{default:r(()=>[l(I,null,{default:r(()=>[e[48]||(e[48]=c("div",{class:"text-subtitle-2 mb-2"},"批量操作",-1)),l(Se,null,{default:r(()=>[l(k,{color:"success","prepend-icon":"mdi-account-check",onClick:s.setAllPresent},{default:r(()=>[...e[44]||(e[44]=[h(" 全部到齐 ",-1)])]),_:1},8,["onClick"]),l(k,{color:"error","prepend-icon":"mdi-account-off",onClick:s.setAllAbsent},{default:r(()=>[...e[45]||(e[45]=[h(" 全部请假 ",-1)])]),_:1},8,["onClick"])]),_:1}),l(Se,null,{default:r(()=>[l(k,{color:"warning","prepend-icon":"mdi-clock-alert",onClick:s.setAllLate},{default:r(()=>[...e[46]||(e[46]=[h(" 全部迟到 ",-1)])]),_:1},8,["onClick"]),l(k,{color:"grey","prepend-icon":"mdi-account-cancel",onClick:s.setAllExclude},{default:r(()=>[...e[47]||(e[47]=[h(" 全部不参与 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),l(Ut),l(we,null,{default:r(()=>[l(ee),l(k,{color:"primary",onClick:s.saveAttendance},{default:r(()=>[l(Y,{start:""},{default:r(()=>[...e[49]||(e[49]=[h("mdi-content-save",-1)])]),_:1}),e[50]||(e[50]=h(" 保存 ",-1))]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"]),l(y,{ref:"messageLog"},null,512),l(g,{loading:a.loading.download,"unread-count":s.unreadCount,"selected-date":a.state.selectedDateObj,"is-today":s.isToday,onZoom:s.zoom,onRefresh:s.downloadData,onOpenMessages:e[12]||(e[12]=d=>t.$refs.messageLog.drawer=!0),onOpenSettings:e[13]||(e[13]=d=>t.$router.push("/settings")),onDateSelect:s.handleDateSelect,onPrevDay:e[14]||(e[14]=d=>s.navigateDay(-1)),onNextDay:e[15]||(e[15]=d=>s.navigateDay(1))},null,8,["loading","unread-count","selected-date","is-today","onZoom","onRefresh","onDateSelect"]),l(D),l(me,{modelValue:a.confirmDialog.show,"onUpdate:modelValue":e[16]||(e[16]=d=>a.confirmDialog.show=d),"max-width":"400"},{default:r(()=>[l(R,null,{default:r(()=>[l(G,{class:"text-h6"},{default:r(()=>[...e[51]||(e[51]=[h(" 确认保存 ",-1)])]),_:1}),l(I,null,{default:r(()=>[h(" 您正在修改 "+b(a.state.dateString)+" 的数据,确定要保存吗? ",1)]),_:1}),l(we,null,{default:r(()=>[l(ee),l(k,{color:"grey",variant:"text",onClick:a.confirmDialog.reject},{default:r(()=>[...e[52]||(e[52]=[h(" 取消 ",-1)])]),_:1},8,["onClick"]),l(k,{color:"primary",onClick:a.confirmDialog.resolve},{default:r(()=>[...e[53]||(e[53]=[h(" 确认保存 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),l(_,{ref:"randomPicker","student-list":a.state.studentList,attendance:a.state.boardData.attendance},null,8,["student-list","attendance"]),l(me,{modelValue:a.urlConfigDialog.show,"onUpdate:modelValue":e[17]||(e[17]=d=>a.urlConfigDialog.show=d),"max-width":"500"},{default:r(()=>[l(R,null,{default:r(()=>[l(G,{class:"text-h6"},{default:r(()=>[...e[54]||(e[54]=[h(" 确认应用URL配置 ",-1)])]),_:1}),l(I,null,{default:r(()=>[e[55]||(e[55]=c("p",null,"以下配置将应用于当前班级:",-1)),l(Ne,{density:"compact"},{default:r(()=>[(f(!0),p(A,null,N(a.urlConfigDialog.changes,d=>(f(),P(Be,{key:d.key},{prepend:r(()=>[l(Y,{icon:d.icon,size:"small",class:"mr-2"},null,8,["icon"])]),default:r(()=>[l(Ht,{class:"d-flex align-center"},{default:r(()=>[c("span",hn,b(d.name),1),l(Je,{activator:"parent",location:"top"},{default:r(()=>[h(b(d.description||d.key),1)]),_:2},1024)]),_:2},1024),l(qt,null,{default:r(()=>[c("span",fn,b(d.oldValue),1),l(Y,{icon:"mdi-arrow-right",size:"small",class:"mx-1"}),c("span",vn,b(d.newValue),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),l(we,null,{default:r(()=>[l(ee),l(k,{color:"grey",variant:"text",onClick:a.urlConfigDialog.cancelHandler},{default:r(()=>[...e[56]||(e[56]=[h(" 取消 ",-1)])]),_:1},8,["onClick"]),l(k,{color:"primary",onClick:a.urlConfigDialog.confirmHandler},{default:r(()=>[...e[57]||(e[57]=[h(" 确认应用 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),e[58]||(e[58]=c("br",null,null,-1)),e[59]||(e[59]=c("br",null,null,-1)),e[60]||(e[60]=c("br",null,null,-1)),e[61]||(e[61]=c("br",null,null,-1)),e[62]||(e[62]=c("br",null,null,-1)),e[63]||(e[63]=c("br",null,null,-1))],64)}const Pn=ve(Ja,[["render",gn]]);export{Pn as default};