2 lines
7.3 KiB
JavaScript
2 lines
7.3 KiB
JavaScript
import{d as e,r as a,n as s,m as l,Z as t,b as o,e as u,w as n,q as c,g as i,h as d,y as r,z as m,v,a0 as f,Q as p,a7 as k,G as y,j as g,k as _,l as b,aq as w,a6 as h,_ as D}from"./index-f6e54d8f.js";import{_ as M}from"./uni-icons.7467b650.js";import{_ as j}from"./uni-popup.1c525271.js";import{d as x}from"./dayjs.min.1cfb48de.js";import{w as $,i as W}from"./isoWeek.2f7c0250.js";import{_ as N}from"./_plugin-vue_export-helper.1b428a4d.js";const T=N(e({__name:"BanJiKeBiao",setup(e){x.locale("zh-cn"),x.extend($),x.extend(W);const N=a([]),T=a(""),R=a(-1),C=s((()=>N.value.map((e=>e.name)))),Y=s((()=>{const e=N.value.find((e=>e.id===T.value));return e?e.name:""})),I=e=>{const a=parseInt(e.detail.value);R.value=a;const s=N.value[a];s&&s.id!==T.value&&(T.value=s.id,S())},z=a(!1),P=a(x()),q=a(0),B=a([]),F=a(!1),G=a(null),Q=l({weekNumber:0,startDate:"",endDate:"",displayText:""}),Z=a([]),A=a(0),J=a([]);s((()=>P.value.isoWeekday(1)));const K=e=>x().isoWeek()===e.weekNumber,O=()=>{const e=P.value.isoWeekday(1),a=[],s=["周一","周二","周三","周四","周五"];for(let t=0;t<5;t++){const l=e.add(t,"day");a.push({dateFull:l.format("YYYY-MM-DD"),dateMMDD:l.format("M/DD"),weekday:s[t]})}Z.value=a;const l=x().isoWeekday();P.value.isSame(x(),"isoWeek")?q.value=l>=1&&l<=5?l-1:0:q.value=0},S=async()=>{if(!T.value)return console.log("请先选择班级"),B.value=[],void(z.value=!1);console.log(`正在获取 ${Y.value} 第${Q.weekNumber}周 课表数据...`),z.value=!0,await new Promise((e=>setTimeout(e,500)));const e=[{name:"上1",timeRange:"08:00-08:45"},{name:"上2",timeRange:"08:55-09:40"},{name:"上3",timeRange:"10:00-10:45"},{name:"上4",timeRange:"10:55-11:40"},{name:"下1",timeRange:"14:00-14:45"},{name:"下2",timeRange:"14:55-15:40"},{name:"下3",timeRange:"16:00-16:45"},{name:"下4",timeRange:"16:55-17:40"}],a=[],s=Q.weekNumber%2==1;console.log(`模拟生成 ${T.value} 的课表`);for(const l of e){const e=E(l.name,q.value,s,T.value);a.push({name:l.name,timeRange:l.timeRange,subjects:e})}B.value=a,z.value=!1,console.log("课表数据加载完成:",B.value)},E=(e,a,s,l)=>{var t;const o=[],u=(null==(t=N.value.find((e=>e.id===l)))?void 0:t.name)||l;return"g1c101"===l?0===a&&("上1"===e||"上2"===e?o.push({subject:s?"语文":"数学",class:`(${u})`}):"上3"===e&&o.push({subject:"体育",class:`(${u})`})):"g2c201"===l?1===a&&"上2"===e&&o.push({subject:"英语",class:`(${u})`}):3===a&&"下1"===e&&o.push({subject:"科学",class:`(${u})`}),0===o.length&&4===a&&"下4"===e&&o.push({subject:"班会",class:`(${u})`}),o},H=a(0),L=async()=>{F.value=!0,0===J.value.length&&console.warn("Available weeks list is empty.");const e=J.value.findIndex((e=>e.weekNumber===Q.weekNumber));if(-1!==e){const a=53.5*e;await k(),H.value=a}else await k(),H.value=0;await k(),G.value?G.value.open("bottom"):console.error("Week popup ref is not available.")},U=()=>{G.value&&G.value.close()},V=e=>{e.show||(F.value=!1)};return t((async()=>{(()=>{const e=x();P.value=e;const a=e.isoWeekday(1),s=a.add(4,"day"),l=a.year(),t=a.isoWeek();Q.weekNumber=t,Q.startDate=a.format("MM.DD"),Q.endDate=s.format("MM.DD"),Q.displayText=`${l}年 第${t}周 (${a.format("MM.DD")}-${s.format("MM.DD")})`,A.value=t})(),(()=>{const e=[],a=x().year();for(let l=1;l<=53;l++){const s=x().year(a).isoWeek(l).isoWeekday(1);if(s.isoWeekYear()===a){const l=s.add(4,"day"),t=s.isoWeek();e.push({weekNumber:t,startDate:s.format("MM.DD"),endDate:l.format("MM.DD"),displayText:`${a}年 第${t}周 (${s.format("MM.DD")}-${l.format("MM.DD")})`})}}const s=e.filter(((e,a,s)=>a===s.findIndex((a=>a.weekNumber===e.weekNumber))));J.value=s,console.log("Generated weeks:",J.value)})(),O(),await(async()=>{console.log("Fetching combined class list from backend..."),z.value=!0,await new Promise((e=>setTimeout(e,300))),N.value=[{id:"g1c101",name:"一年级 01班"},{id:"g1c102",name:"一年级 02班"},{id:"g2c201",name:"二年级 01班"},{id:"g2c202",name:"二年级 02班"},{id:"g2c203",name:"二年级 03班"},{id:"g3c301",name:"三年级 01班"}],console.log("Combined class list loaded:",N.value),z.value=!1})(),N.value.length>0?(T.value=N.value[0].id,R.value=0,await S()):console.warn("No classes available to display schedule for.")})),(e,a)=>{const s=y,l=g(_("uni-icons"),M),t=b,k=w,$=h,W=g(_("uni-popup"),j);return o(),u(t,{class:"schedule-page"},{default:n((()=>[c(" 单个班级选择器 "),i(t,{class:"class-selector",style:{"background-color":"#4477ee"}},{default:n((()=>[i(k,{mode:"selector",range:d(C),value:R.value,onChange:I},{default:n((()=>[i(t,{class:"picker-item"},{default:n((()=>[i(s,null,{default:n((()=>[r(m(d(Y)||"选择班级"),1)])),_:1}),i(l,{type:"bottom",size:"14",color:"#666"})])),_:1})])),_:1},8,["range","value"])])),_:1}),i(t,{class:"week-selector",onClick:L},{default:n((()=>[i(s,null,{default:n((()=>[r(m(Q.displayText),1)])),_:1}),i(l,{type:"right",size:"16",color:"#fff"})])),_:1}),i(t,{class:"date-tabs"},{default:n((()=>[(o(!0),v(p,null,f(Z.value,((e,a)=>(o(),u(t,{key:a,class:D(["date-tab-item",{active:q.value===a}]),onClick:e=>(e=>{q.value=e,S()})(a)},{default:n((()=>[i(s,{class:"weekday"},{default:n((()=>[r(m(e.weekday),1)])),_:2},1024),i(s,{class:"date"},{default:n((()=>[r(m(e.dateMMDD),1)])),_:2},1024)])),_:2},1032,["class","onClick"])))),128))])),_:1}),i(t,{class:"schedule-body"},{default:n((()=>[(o(!0),v(p,null,f(B.value,((e,a)=>(o(),u(t,{key:a,class:"schedule-row"},{default:n((()=>[i(t,{class:"time-slot"},{default:n((()=>[i(s,{class:"slot-name"},{default:n((()=>[r(m(e.name),1)])),_:2},1024),i(s,{class:"slot-time"},{default:n((()=>[r(m(e.timeRange),1)])),_:2},1024)])),_:2},1024),i(t,{class:"course-container"},{default:n((()=>[e.subjects&&e.subjects.length>0?(o(!0),v(p,{key:0},f(e.subjects,((e,a)=>{return o(),u(t,{key:a,class:D(["course-card",(l=e.subject,l?l.includes("语文")?"color-lang":l.includes("体育")?"color-phys":l.includes("数学")?"color-math":"color-other":"")])},{default:n((()=>[i(s,{class:"course-subject"},{default:n((()=>[r(m(e.subject),1)])),_:2},1024),i(s,{class:"course-class"},{default:n((()=>[r(m(e.class),1)])),_:2},1024)])),_:2},1032,["class"]);var l})),128)):(o(),u(t,{key:1,class:"empty-course"},{default:n((()=>[i(s,{class:"empty-text"},{default:n((()=>[r("暂无课程")])),_:1})])),_:1}))])),_:2},1024)])),_:2},1024)))),128))])),_:1}),z.value?(o(),u(t,{key:0,class:"loading-overlay"},{default:n((()=>[i(s,null,{default:n((()=>[r("加载中...")])),_:1})])),_:1})):c("v-if",!0),c(" 周选择弹窗 "),i(W,{ref_key:"weekPopup",ref:G,type:"bottom",onChange:V},{default:n((()=>[i(t,{class:"week-picker-popup"},{default:n((()=>[i(t,{class:"popup-header"},{default:n((()=>[i(s,{class:"title"},{default:n((()=>[r("选择周")])),_:1})])),_:1}),i(t,{class:"week-list"},{default:n((()=>[i($,{"scroll-y":"",style:{"max-height":"60vh"},"scroll-top":H.value},{default:n((()=>[(o(!0),v(p,null,f(J.value,((e,a)=>(o(),u(t,{key:a,class:D(["week-item",{active:e.displayText===Q.displayText}]),onClick:a=>(e=>{if(e.displayText===Q.displayText)return void U();Object.assign(Q,e);const a=parseInt(e.displayText.substring(0,4)),s=e.weekNumber;P.value=x().year(a).isoWeek(s).isoWeekday(1),O(),U(),S()})(e)},{default:n((()=>[i(s,null,{default:n((()=>[r(m(e.displayText),1)])),_:2},1024),K(e)?(o(),u(s,{key:0,class:"current-tag"},{default:n((()=>[r("当前周")])),_:1})):c("v-if",!0)])),_:2},1032,["class","onClick"])))),128))])),_:1},8,["scroll-top"])])),_:1})])),_:1})])),_:1},512)])),_:1})}}}),[["__scopeId","data-v-01a20f37"]]);export{T as default};
|