2 lines
5.5 KiB
JavaScript
2 lines
5.5 KiB
JavaScript
import{l as e,_ as t,c as s,w as l,n as a,s as i,i as u,r as o,v as c,d as r,x as n,y as d,o as f,h,z as m,j as b,k as S,u as g,A as p,F as j,B as C,C as y,D as _}from"./index-LOi95lww.js";const k=t({data:()=>({courseList:[],filteredCourseList:[],loading:!1,subjectOptions:[{id:null,subjectName:"全部"}],selectedSubjectId:null,selectedSubjectName:null,showSubjectPicker:!1,statusOptions:[{value:null,label:"全部"},{value:"active",label:"进行中"},{value:"pending",label:"未开始"},{value:"ended",label:"已结束"},{value:"disabled",label:"已禁用"}],selectedStatus:null,selectedStatusName:null,showStatusPicker:!1}),computed:{hasFilter(){return null!==this.selectedSubjectId||null!==this.selectedStatus}},onLoad(){this.loadSubjectOptions(),this.loadCourseList()},onShow(){this.loadCourseList()},methods:{async loadSubjectOptions(){try{const t=await e.get("/study/subject/app/list");if(200===t.code){const e=t.rows||[];this.subjectOptions=[{id:null,subjectName:"全部"},...e.map(e=>({id:e.id,subjectName:e.subjectName}))]}}catch(t){console.error("加载学科分类失败:",t)}},async loadCourseList(){this.loading=!0;try{const t=await e.get("/study/course/my-courses");if(200===t.code){const s=t.data||[],l=await e.get("/study/learningRecord/my-records"),a=200===l.code&&l.data||[];this.courseList=s.map(e=>{const t=a.find(t=>t.courseId===e.id);return{...e,learningRecord:t||null}}),this.applyFilter()}}catch(t){i({title:t.message||"加载失败",icon:"none"})}finally{this.loading=!1}},applyFilter(){let e=[...this.courseList];null!==this.selectedSubjectId&&(e=e.filter(e=>e.subjectId===this.selectedSubjectId)),null!==this.selectedStatus&&(e=e.filter(e=>this.getCourseStatus(e)===this.selectedStatus)),this.filteredCourseList=e},getCourseStatus(e){if(!e.status||0===e.status)return"disabled";const t=new Date;return e.startTime&&new Date(e.startTime)>t?"pending":e.endTime&&new Date(e.endTime)<t?"ended":"active"},onSubjectConfirm(e){const t=e.value[0];this.selectedSubjectId=t.id,this.selectedSubjectName=t.subjectName,this.showSubjectPicker=!1,this.applyFilter()},onStatusConfirm(e){const t=e.value[0];this.selectedStatus=t.value,this.selectedStatusName=t.label,this.showStatusPicker=!1,this.applyFilter()},resetFilter(){this.selectedSubjectId=null,this.selectedSubjectName=null,this.selectedStatus=null,this.selectedStatusName=null,this.applyFilter()},goToCourseDetail(e){a({url:`/pages/course/detail?id=${e.id}`})},getStatusText(e){return{active:"进行中",pending:"未开始",ended:"已结束",disabled:"已禁用"}[this.getCourseStatus(e)]||"未知"},getStatusClass(e){return`status-${this.getCourseStatus(e)}`},formatDuration(e){if(!e)return"0分钟";const t=Math.floor(e/3600),s=Math.floor(e%3600/60);return t>0?`${t}小时${s}分钟`:`${s}分钟`}}},[["render",function(e,t,a,i,k,w){const N=b,v=u,L=o(r("u-picker"),c),D=o(r("u-empty"),n),F=o(r("u-loading-page"),d);return f(),s(v,{class:"course-list-container"},{default:l(()=>[h(v,{class:"filter-section"},{default:l(()=>[h(v,{class:"filter-row"},{default:l(()=>[h(v,{class:"filter-item",onClick:t[0]||(t[0]=e=>k.showSubjectPicker=!0)},{default:l(()=>[h(N,{class:"filter-label"},{default:l(()=>[S("学科:")]),_:1}),h(N,{class:"filter-value"},{default:l(()=>[S(g(k.selectedSubjectName||"全部"),1)]),_:1}),h(N,{class:"filter-icon"},{default:l(()=>[S("▼")]),_:1})]),_:1}),h(v,{class:"filter-item",onClick:t[1]||(t[1]=e=>k.showStatusPicker=!0)},{default:l(()=>[h(N,{class:"filter-label"},{default:l(()=>[S("状态:")]),_:1}),h(N,{class:"filter-value"},{default:l(()=>[S(g(k.selectedStatusName||"全部"),1)]),_:1}),h(N,{class:"filter-icon"},{default:l(()=>[S("▼")]),_:1})]),_:1})]),_:1}),w.hasFilter?(f(),s(v,{key:0,class:"filter-actions"},{default:l(()=>[h(N,{class:"reset-btn",onClick:w.resetFilter},{default:l(()=>[S("重置")]),_:1},8,["onClick"])]),_:1})):m("",!0)]),_:1}),h(L,{show:k.showSubjectPicker,columns:[k.subjectOptions],keyName:"subjectName",onConfirm:w.onSubjectConfirm,onCancel:t[2]||(t[2]=e=>k.showSubjectPicker=!1)},null,8,["show","columns","onConfirm"]),h(L,{show:k.showStatusPicker,columns:[k.statusOptions],keyName:"label",onConfirm:w.onStatusConfirm,onCancel:t[3]||(t[3]=e=>k.showStatusPicker=!1)},null,8,["show","columns","onConfirm"]),0!==k.filteredCourseList.length||k.loading?(f(),s(v,{key:1,class:"course-list"},{default:l(()=>[(f(!0),p(j,null,C(k.filteredCourseList,e=>(f(),s(v,{key:e.id,class:"course-item",onClick:t=>w.goToCourseDetail(e)},{default:l(()=>[h(v,{class:"course-header"},{default:l(()=>[h(N,{class:"course-name"},{default:l(()=>[S(g(e.courseName),1)]),_:2},1024),h(N,{class:y(["course-status",w.getStatusClass(e)])},{default:l(()=>[S(g(w.getStatusText(e)),1)]),_:2},1032,["class"])]),_:2},1024),h(N,{class:"course-desc"},{default:l(()=>[S(g(e.description||"暂无描述"),1)]),_:2},1024),e.learningRecord?(f(),s(v,{key:0,class:"course-progress"},{default:l(()=>[h(v,{class:"progress-bar"},{default:l(()=>[h(v,{class:"progress-fill",style:_({width:(e.learningRecord.progress||0)+"%"})},null,8,["style"])]),_:2},1024),h(v,{class:"progress-info"},{default:l(()=>[h(N,{class:"progress-text"},{default:l(()=>[S("学习进度:"+g(e.learningRecord.progress||0)+"%",1)]),_:2},1024),e.learningRecord.totalDuration?(f(),s(N,{key:0,class:"progress-time"},{default:l(()=>[S(" 已学习:"+g(w.formatDuration(e.learningRecord.totalDuration)),1)]),_:2},1024)):m("",!0)]),_:2},1024)]),_:2},1024)):m("",!0)]),_:2},1032,["onClick"]))),128))]),_:1})):(f(),s(D,{key:0,mode:"data",text:"暂无课程"})),h(F,{loading:k.loading},null,8,["loading"])]),_:1})}],["__scopeId","data-v-c573be54"]]);export{k as default};
|