2 lines
6.1 KiB
JavaScript
2 lines
6.1 KiB
JavaScript
import{u as I,g as X,_ as B}from"./index-BUj-isDj.js";import{e as f,D as V,J as r,Q as _,W as Z,U as n,I as w,o as tt,a1 as i,R as s,S as e,K as D,$ as et,r as b,a0 as l,F as S,al as E,at as d,j as R}from"./vue-vendor-BSww6V4k.js";import{f as st,a as nt}from"./format-D1rp7NC7.js";import{P as T}from"./PageCard-DaHB0nvz.js";import{_ as at}from"./StatusBadge.vue_vue_type_script_setup_true_lang-Dwdpoc9_.js";import{E as A}from"./EmptyState-CrJS9_aC.js";import"./element-plus-DvNsnHjj.js";import"./vendor-DvZSZC-J.js";function ot(){const h=I(),c=f(()=>h.userRole);function v(p){return c.value===p}function k(p){return!!c.value&&p.includes(c.value)}return{userRole:c,hasRole:v,canAccess:k}}const lt={getStudentDashboard:()=>X("/student/dashboard")},it={class:"stat-card-icon"},rt={class:"stat-card-value"},dt={class:"stat-card-label"},ct=V({__name:"StatCard",props:{color:{}},setup(h){return(c,v)=>(r(),_("div",{class:Z(["stat-card",h.color])},[n("div",it,[w(c.$slots,"icon",{},void 0,!0)]),n("div",rt,[w(c.$slots,"value",{},void 0,!0)]),n("div",dt,[w(c.$slots,"label",{},void 0,!0)])],2))}}),x=B(ct,[["__scopeId","data-v-047a93be"]]),ut={class:"welcome-card"},_t={class:"d-flex align-items-center gap-3"},mt={class:"welcome-avatar"},pt={class:"welcome-name"},vt={class:"welcome-date"},gt={class:"stat-row"},ft={class:"two-col"},ht={class:"card-title"},kt={key:1,class:"plan-list"},yt={class:"plan-header"},bt={class:"plan-meta"},xt={class:"card-title"},Ct={key:1,class:"exam-list"},$t={class:"exam-info"},wt={class:"exam-name"},Dt={class:"exam-meta"},St={class:"card-title"},Et={class:"quick-grid"},Tt=["onClick"],Nt={class:"quick-icon"},Lt={class:"quick-label"},Pt=V({__name:"index",setup(h){const c=I(),{hasRole:v}=ot(),k=f(()=>!v("STUDENT")),p=f(()=>{var o;return((o=c.userInfo)==null?void 0:o.realName)||"用户"}),q=f(()=>p.value.charAt(0)),N=b(""),g=b({pendingCourses:0,pendingExams:0,progress:0,hours:0}),C=b([]),$=b([]),F=[{icon:"📄",label:"新建知识",path:"/knowledge/list"},{icon:"🎯",label:"新建考试",path:"/exam/list"},{icon:"❓",label:"新建题目",path:"/exam/question"},{icon:"🗂",label:"新建培训计划",path:"/training/plan"}],M=[{icon:"📚",label:"学习知识",path:"/knowledge/list"},{icon:"📝",label:"我的考试",path:"/exam/my-exams"},{icon:"🗂",label:"我的培训",path:"/training/my-training"},{icon:"👤",label:"个人中心",path:"#"}],Q=f(()=>k.value?F:M);function U(){const o=new Date,t=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];N.value=`${o.getFullYear()}年${o.getMonth()+1}月${o.getDate()}日 ${t[o.getDay()]}`}async function z(){var o,t,y,u;if(v("STUDENT"))try{const m=(await lt.getStudentDashboard()).data;g.value={pendingCourses:((o=m.statistics)==null?void 0:o.pendingKnowledgeCount)||0,pendingExams:((t=m.statistics)==null?void 0:t.pendingExamCount)||0,progress:((y=m.statistics)==null?void 0:y.trainingProgress)||0,hours:Math.round((((u=m.statistics)==null?void 0:u.studyDuration)||0)/3600*10)/10},C.value=m.trainingPlans||[],$.value=m.pendingExams||[]}catch{}}return tt(()=>{U(),z()}),(o,t)=>{const y=d("Reading"),u=d("el-icon"),L=d("EditPen"),m=d("TrendCharts"),K=d("Timer"),j=d("Calendar"),P=d("el-link"),J=d("router-link"),W=d("el-progress"),Y=d("List"),G=d("el-button"),H=d("Lightning");return r(),_("div",null,[n("div",ut,[n("div",_t,[n("div",mt,i(q.value),1),n("div",null,[n("div",pt,"欢迎回来,"+i(p.value)+"!",1),n("div",vt,i(N.value),1)])])]),n("div",gt,[s(x,{color:"blue"},{icon:e(()=>[s(u,null,{default:e(()=>[s(y)]),_:1})]),value:e(()=>[l(i(g.value.pendingCourses),1)]),label:e(()=>[...t[2]||(t[2]=[l("待学习课程",-1)])]),_:1}),s(x,{color:"orange"},{icon:e(()=>[s(u,null,{default:e(()=>[s(L)]),_:1})]),value:e(()=>[l(i(g.value.pendingExams),1)]),label:e(()=>[...t[3]||(t[3]=[l("待完成考试",-1)])]),_:1}),s(x,{color:"green"},{icon:e(()=>[s(u,null,{default:e(()=>[s(m)]),_:1})]),value:e(()=>[l(i(g.value.progress)+"%",1)]),label:e(()=>[...t[4]||(t[4]=[l("培训进度",-1)])]),_:1}),s(x,{color:"cyan"},{icon:e(()=>[s(u,null,{default:e(()=>[s(K)]),_:1})]),value:e(()=>[l(i(g.value.hours)+"h",1)]),label:e(()=>[...t[5]||(t[5]=[l("本月学习时长",-1)])]),_:1})]),n("div",ft,[s(T,null,{header:e(()=>[n("div",ht,[s(u,{color:"var(--primary)"},{default:e(()=>[s(j)]),_:1}),t[6]||(t[6]=l("我的培训计划",-1))]),s(P,{type:"primary",underline:!1,onClick:t[0]||(t[0]=a=>o.$router.push("/training/my-training"))},{default:e(()=>[...t[7]||(t[7]=[l("查看全部 →",-1)])]),_:1})]),default:e(()=>[C.value.length?(r(),_("div",kt,[(r(!0),_(S,null,E(C.value,a=>(r(),_("div",{key:a.id,class:"plan-item"},[n("div",yt,[s(J,{to:`/training/detail/${a.id}`,class:"plan-title"},{default:e(()=>[l(i(a.title),1)]),_:2},1032,["to"]),s(at,{status:a.status},null,8,["status"])]),n("div",bt,"截止:"+i(R(st)(a.endDate)),1),s(W,{percentage:a.progress||0,"stroke-width":6,"show-text":!0},null,8,["percentage"])]))),128))])):(r(),D(A,{key:0,text:"暂无培训计划"}))]),_:1}),s(T,null,{header:e(()=>[n("div",xt,[s(u,{color:"var(--warning)"},{default:e(()=>[s(Y)]),_:1}),t[8]||(t[8]=l("待完成考试",-1))]),s(P,{type:"primary",underline:!1,onClick:t[1]||(t[1]=a=>o.$router.push("/exam/my-exams"))},{default:e(()=>[...t[9]||(t[9]=[l("查看全部 →",-1)])]),_:1})]),default:e(()=>[$.value.length?(r(),_("div",Ct,[(r(!0),_(S,null,E($.value,a=>(r(),_("div",{key:a.id,class:"exam-item"},[t[11]||(t[11]=n("div",{class:"exam-icon"},"📋",-1)),n("div",$t,[n("div",wt,i(a.title),1),n("div",Dt,"时限:"+i(a.duration||60)+"分钟 · 截止:"+i(R(nt)(a.endTime)),1)]),s(G,{type:"primary",size:"small",onClick:O=>o.$router.push(`/exam/taking/${a.id}`)},{default:e(()=>[...t[10]||(t[10]=[l("立即参加",-1)])]),_:1},8,["onClick"])]))),128))])):(r(),D(A,{key:0,text:"暂无待完成考试"}))]),_:1})]),k.value?(r(),D(T,{key:0},{header:e(()=>[n("div",St,[s(u,{color:"var(--info)"},{default:e(()=>[s(H)]),_:1}),t[12]||(t[12]=l("快捷操作",-1))])]),default:e(()=>[n("div",Et,[(r(!0),_(S,null,E(Q.value,a=>(r(),_("div",{key:a.label,class:"quick-card",onClick:O=>o.$router.push(a.path)},[n("div",Nt,i(a.icon),1),n("div",Lt,i(a.label),1)],8,Tt))),128))])]),_:1})):et("",!0)])}}}),Qt=B(Pt,[["__scopeId","data-v-289c6441"]]);export{Qt as default};
|