|
@@ -1,230 +1,256 @@
|
|
|
<template>
|
|
|
- <div class="home-view">
|
|
|
- <Row :gutter="30" v-if="spanCharts == false">
|
|
|
- <i-col :xs="0" :sm="0" :md="0" :lg="1"></i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="12" :lg="7">
|
|
|
- <!-- 加入课程 -->
|
|
|
- <Card :bordered="true" class="calenderCard">
|
|
|
- <p slot="title">
|
|
|
- <svg-icon class="titleIcon" icon-class="calander" />
|
|
|
- <span class="title">{{ $t("studentWeb.addCourse") }}</span>
|
|
|
- </p>
|
|
|
- <div class="addClass">
|
|
|
- <Input clearable
|
|
|
- v-model="addClassNo"
|
|
|
- :placeholder="$t('studentWeb.home.classPla')"
|
|
|
- >
|
|
|
- <Button slot="append" @click="addClass">{{ $t('studentWeb.home.joinClass') }}</Button>
|
|
|
- </Input>
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
- <!-- 课程清单 -->
|
|
|
- <router-link to="/studentWeb/courseList">
|
|
|
- <Card style="overflow: hidden; margin-bottom: 30px">
|
|
|
- <h3 style="color: #575757; font-weight: 700; margin: 10px 0 15px">
|
|
|
- <svg-icon class="titleIcon" icon-class="course" />
|
|
|
- {{ $t("studentWeb.coursesCardTitle") }}
|
|
|
- <Icon type="ios-arrow-forward" />
|
|
|
+ <div>
|
|
|
+ <loading :active.sync="isLoading"
|
|
|
+ :is-full-page="true"
|
|
|
+ background-color="#000"
|
|
|
+ :opacity="0.6">
|
|
|
+ <template slot="default">
|
|
|
+ <svg-icon icon-class="loader" class="loader-icon" />
|
|
|
+ </template>
|
|
|
+ </loading>
|
|
|
+ <div class="home-view">
|
|
|
+ <Row :gutter="30" v-if="spanCharts == false">
|
|
|
+ <i-col :xs="0" :sm="0" :md="0" :lg="1"></i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="12" :lg="7">
|
|
|
+ <!-- 加入课程 -->
|
|
|
+ <Card :bordered="true" class="calenderCard">
|
|
|
+ <p slot="title">
|
|
|
+ <svg-icon class="titleIcon" icon-class="calander" />
|
|
|
+ <span class="title">{{ $t("studentWeb.addCourse") }}</span>
|
|
|
+ </p>
|
|
|
+ <div class="addClass">
|
|
|
+ <Input clearable
|
|
|
+ v-model="addClassNo"
|
|
|
+ :placeholder="$t('studentWeb.home.classPla')"
|
|
|
+ >
|
|
|
+ <Button slot="append" @click="addClass">{{ $t('studentWeb.home.joinClass') }}</Button>
|
|
|
+ </Input>
|
|
|
+ </div>
|
|
|
+ </Card>
|
|
|
+ <!-- 课程清单 -->
|
|
|
+ <router-link to="/studentWeb/courseList">
|
|
|
+ <Card style="overflow: hidden; margin-bottom: 30px">
|
|
|
+ <h3 style="color: #575757; font-weight: 700; margin: 10px 0 15px">
|
|
|
+ <svg-icon class="titleIcon" icon-class="course" />
|
|
|
+ {{ $t("studentWeb.coursesCardTitle") }}
|
|
|
+ <Icon type="ios-arrow-forward" />
|
|
|
+ </h3>
|
|
|
+ <!-- <p class="course-new">{{ $t("evaluation.noData") }}</p> -->
|
|
|
+ <!-- <p class="course-new">{{ $t("evaluation.noData") }}</p> -->
|
|
|
+ <!-- <p class="course-new">今日课程:英语</p>
|
|
|
+ <p class="course-new">{{ $t("studentWeb.newAddCourse") }}</p> -->
|
|
|
+ </Card>
|
|
|
+ </router-link>
|
|
|
+
|
|
|
+ <!-- 行事历 -->
|
|
|
+
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="12" :lg="8">
|
|
|
+ <!-- 活动任务清单 -->
|
|
|
+ <MissionListCard :testData="testData" />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="12" :lg="7">
|
|
|
+ <Card :bordered="true" class="barCard" style="display: none">
|
|
|
+ <div class="no-data-text">
|
|
|
+ <img
|
|
|
+ src="@/assets/icon/no_data_evaluation.png"
|
|
|
+ width="120"
|
|
|
+ />
|
|
|
+ <span style="margin-top: 15px; color: #808080">{{
|
|
|
+ $t("studentWeb.public.noData")
|
|
|
+ }}</span>
|
|
|
+ </div>
|
|
|
+ <!-- <div style="position: relative">
|
|
|
+ <div class="spanAllchartBtn" @click="setSpanCharts()">
|
|
|
+ <svg-icon
|
|
|
+ class="spanAllchartIcon"
|
|
|
+ icon-class="dimensions"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <ChartCarousel />
|
|
|
+ </div> -->
|
|
|
+ </Card>
|
|
|
+ <Card class="barCard">
|
|
|
+ <h3 style="color: #575757; font-weight: 700">
|
|
|
+ <svg-icon class="titleIcon" icon-class="target" />
|
|
|
+ {{ $t("studentWeb.myProgressBar.tasksCompletionRate") }}
|
|
|
</h3>
|
|
|
- <!-- <p class="course-new">{{ $t("evaluation.noData") }}</p> -->
|
|
|
- <!-- <p class="course-new">{{ $t("evaluation.noData") }}</p> -->
|
|
|
- <!-- <p class="course-new">今日课程:英语</p>
|
|
|
- <p class="course-new">{{ $t("studentWeb.newAddCourse") }}</p> -->
|
|
|
+
|
|
|
+ <div class="myProgressBar">
|
|
|
+ <span class="myTestProgressNum">
|
|
|
+ {{ finishAct }}
|
|
|
+ <span style="font-size: 20px"> %</span>
|
|
|
+ </span>
|
|
|
+ <Progress class="myTestProgress"
|
|
|
+ :percent="finishAct"
|
|
|
+ :stroke-color="['#108ee9', '#87d068']"
|
|
|
+ :hide-info="true"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</Card>
|
|
|
- </router-link>
|
|
|
-
|
|
|
- <!-- 行事历 -->
|
|
|
-
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="12" :lg="8">
|
|
|
- <!-- 活动任务清单 -->
|
|
|
- <MissionListCard :testData="testData" />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="12" :lg="7">
|
|
|
- <Card :bordered="true" class="barCard" style="display: none">
|
|
|
- <div class="no-data-text">
|
|
|
- <img
|
|
|
- src="@/assets/icon/no_data_evaluation.png"
|
|
|
- width="120"
|
|
|
- />
|
|
|
- <span style="margin-top: 15px; color: #808080">{{
|
|
|
- $t("studentWeb.public.noData")
|
|
|
- }}</span>
|
|
|
- </div>
|
|
|
- <!-- <div style="position: relative">
|
|
|
- <div class="spanAllchartBtn" @click="setSpanCharts()">
|
|
|
+ <Card @click.native="noData" style="display: none">
|
|
|
+ <h3 style="color: #575757; font-weight: 700">
|
|
|
<svg-icon
|
|
|
- class="spanAllchartIcon"
|
|
|
- icon-class="dimensions"
|
|
|
+ class="titleIcon studyIcon"
|
|
|
+ icon-class="note"
|
|
|
/>
|
|
|
+ {{ $t("studentWeb.myProgressBar.selfStudyClickRate") }}
|
|
|
+ </h3>
|
|
|
+ <div class="myProgressBar">
|
|
|
+ <span class="myTestProgressNum">
|
|
|
+ <!-- {{ 22 }} -->
|
|
|
+ --
|
|
|
+ <span style="font-size: 20px"> %</span>
|
|
|
+ </span>
|
|
|
+ <div
|
|
|
+ class="myTestProgressContent"
|
|
|
+ :style="{ width: 0 + '%' }"
|
|
|
+ style="
|
|
|
+ background: linear-gradient(
|
|
|
+ 90deg,
|
|
|
+ #ffa400,
|
|
|
+ #fa6400
|
|
|
+ );
|
|
|
+ "
|
|
|
+ ></div>
|
|
|
+ <div class="myTestProgress"></div>
|
|
|
</div>
|
|
|
- <ChartCarousel />
|
|
|
- </div> -->
|
|
|
- </Card>
|
|
|
- <Card class="barCard">
|
|
|
- <h3 style="color: #575757; font-weight: 700">
|
|
|
- <svg-icon class="titleIcon" icon-class="target" />
|
|
|
- {{ $t("studentWeb.myProgressBar.tasksCompletionRate") }}
|
|
|
- </h3>
|
|
|
-
|
|
|
- <div class="myProgressBar">
|
|
|
- <span class="myTestProgressNum">
|
|
|
- {{ finishAct }}
|
|
|
- <span style="font-size: 20px"> %</span>
|
|
|
- </span>
|
|
|
- <Progress class="myTestProgress"
|
|
|
- :percent="finishAct"
|
|
|
- :stroke-color="['#108ee9', '#87d068']"
|
|
|
- :hide-info="true"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
- <Card @click.native="noData" style="display: none">
|
|
|
- <h3 style="color: #575757; font-weight: 700">
|
|
|
- <svg-icon
|
|
|
- class="titleIcon studyIcon"
|
|
|
- icon-class="note"
|
|
|
- />
|
|
|
- {{ $t("studentWeb.myProgressBar.selfStudyClickRate") }}
|
|
|
- </h3>
|
|
|
- <div class="myProgressBar">
|
|
|
- <span class="myTestProgressNum">
|
|
|
- <!-- {{ 22 }} -->
|
|
|
- --
|
|
|
- <span style="font-size: 20px"> %</span>
|
|
|
- </span>
|
|
|
- <div
|
|
|
- class="myTestProgressContent"
|
|
|
- :style="{ width: 0 + '%' }"
|
|
|
- style="
|
|
|
- background: linear-gradient(
|
|
|
- 90deg,
|
|
|
- #ffa400,
|
|
|
- #fa6400
|
|
|
- );
|
|
|
- "
|
|
|
- ></div>
|
|
|
- <div class="myTestProgress"></div>
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
+ </Card>
|
|
|
|
|
|
- <!-- 先放在这里,等自学这些有数据了,再放左边 -->
|
|
|
- <!-- 行事历 -->
|
|
|
- <Card :bordered="true" class="calenderCard">
|
|
|
- <p slot="title">
|
|
|
- <svg-icon class="titleIcon" icon-class="calander" />
|
|
|
- <span class="title">{{ $t("studentWeb.calenderCardTitle") }}</span>
|
|
|
- </p>
|
|
|
- <!-- 上课提醒 -->
|
|
|
- <div @click="noData">
|
|
|
- <!-- <div class="title-rect" /> -->
|
|
|
- <p class="title-rect-name">{{ $t("studentWeb.recentClass") }}</p>
|
|
|
- <p class="classtitle">{{ $t("studentWeb.public.noData") }}</p>
|
|
|
- <!-- <p class="classtitle">{{ $t("studentWeb.defaultRecentClass") }}</p>
|
|
|
- <p class="time">{{ $t("studentWeb.defaultClassTime") }}</p>
|
|
|
- <p class="place">{{ $t("studentWeb.defaultClassPlace") }}</p> -->
|
|
|
- </div>
|
|
|
- <!-- 今日截至 -->
|
|
|
- <div class="todaydayline">
|
|
|
- <div class="todaydaylinewraptitle">
|
|
|
- <p class="title-rect-name">
|
|
|
- {{ $t("studentWeb.todaydeadlineList") }}
|
|
|
- <Icon type="ios-arrow-forward" />
|
|
|
- </p>
|
|
|
- <div class="todaydaylineList">
|
|
|
- <div v-if="!todayData.length" class="no-data">{{ $t("studentWeb.public.noData") }}</div>
|
|
|
- <div class="list-block"
|
|
|
- style='height: 40vh'
|
|
|
- v-else
|
|
|
- >
|
|
|
- <li :id="`tditem${index}`"
|
|
|
- class="list-item"
|
|
|
- v-for="(item, index) in todayData"
|
|
|
+ <!-- 先放在这里,等自学这些有数据了,再放左边 -->
|
|
|
+ <!-- 行事历 -->
|
|
|
+ <Card :bordered="true" class="calenderCard" style="margin-bottom: 0">
|
|
|
+ <p slot="title">
|
|
|
+ <svg-icon class="titleIcon" icon-class="calander" />
|
|
|
+ <span class="title">{{ $t("studentWeb.calenderCardTitle") }}</span>
|
|
|
+ </p>
|
|
|
+ <!-- 上课提醒 -->
|
|
|
+ <div>
|
|
|
+ <p class="title-rect-name">{{ $t("studentWeb.recentClass") }}</p>
|
|
|
+
|
|
|
+ <div class="remind-course">
|
|
|
+ <div style="height: 20vh; overflow: auto;" v-if="recentClass.length">
|
|
|
+ <div class="list-one"
|
|
|
+ v-for="(item, index) in recentClass"
|
|
|
:key="index"
|
|
|
- @click="sentSelectedEventTitle(item)"
|
|
|
- v-show="eventPageType.includes(item.eventType) == true && item.taskStatus != 1"
|
|
|
+ @click="getCourse(item)"
|
|
|
>
|
|
|
- <ul>
|
|
|
- <li class="list-item-icon">
|
|
|
- <svg-icon v-if="item.eventType == 'Homework'"
|
|
|
- icon-class="doc"/>
|
|
|
- <svg-icon v-if="item.eventType == 'Preview'"
|
|
|
- icon-class="selflearninginTime"/>
|
|
|
- <svg-icon v-if="item.eventType == 'Exam'"
|
|
|
- icon-class="test"
|
|
|
- class="reset-testIcon"/>
|
|
|
- <svg-icon v-if="item.eventType == 'Vote'"
|
|
|
- icon-class="vote"/>
|
|
|
- <svg-icon v-if="item.eventType == 'Survey'"
|
|
|
- icon-class="quesnaire"/>
|
|
|
- </li>
|
|
|
- <li class="list-item-info">
|
|
|
- <p class="list-item-title" :class="{'list-item-titleEn': getCurrentLang() == 'en-us'}">
|
|
|
- <span v-show="item.eventType == 'Exam'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolExam'):$t('studentWeb.public.privateExam')}}</span>
|
|
|
- <span v-show="item.eventType == 'Vote'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolVote'):$t('studentWeb.public.privateVote')}}</span>
|
|
|
- <span v-show="item.eventType == 'Survey'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolSurvey'):$t('studentWeb.public.privateSurvey')}}</span>
|
|
|
- <span>{{ item.name }}</span>
|
|
|
- </p>
|
|
|
- <p class="list-item-time">
|
|
|
- {{ $t("studentWeb.endsToday") }}{{ item.todayTime }}{{ $t("studentWeb.endsTodayTime") }}
|
|
|
- </p>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </li>
|
|
|
+ <div class="classtitle">
|
|
|
+ <span></span>
|
|
|
+ {{ item.name }}
|
|
|
+ <p>{{ item.teaName }}</p>
|
|
|
+ </div>
|
|
|
+ <p class="time">{{ item.classTime }}</p>
|
|
|
+ <p class="place">{{ item.roomName }}</p>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ <div v-else class="no-data">{{ $t("studentWeb.public.noData") }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
- </i-col>
|
|
|
- </Row>
|
|
|
- <Row :gutter="30" v-if="spanCharts == true">
|
|
|
- <i-col :xs="0" :sm="0" :md="0" :lg="1"></i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="22">
|
|
|
- <div class="allcharts">
|
|
|
- <Row :gutter="30">
|
|
|
- <div
|
|
|
- class="spanAllchartBtn isOpen"
|
|
|
- @click="setSpanCharts()"
|
|
|
- >
|
|
|
- <svg-icon
|
|
|
- class="spanAllchartIconNow"
|
|
|
- icon-class="dimensions"
|
|
|
- />
|
|
|
+ <!-- 今日截至 -->
|
|
|
+ <div class="todaydayline">
|
|
|
+ <div class="todaydaylinewraptitle">
|
|
|
+ <p class="title-rect-name">
|
|
|
+ {{ $t("studentWeb.todaydeadlineList") }}
|
|
|
+ <Icon type="ios-arrow-forward" />
|
|
|
+ </p>
|
|
|
+ <div class="todaydaylineList">
|
|
|
+ <div v-if="!todayData.length" class="no-data">{{ $t("studentWeb.public.noData") }}</div>
|
|
|
+ <div class="list-block"
|
|
|
+ style='height: 27vh'
|
|
|
+ v-else
|
|
|
+ >
|
|
|
+ <li :id="`tditem${index}`"
|
|
|
+ class="list-item"
|
|
|
+ v-for="(item, index) in todayData"
|
|
|
+ :key="index"
|
|
|
+ @click="sentSelectedEventTitle(item)"
|
|
|
+ v-show="eventPageType.includes(item.eventType) == true && item.taskStatus != 1"
|
|
|
+ >
|
|
|
+ <ul>
|
|
|
+ <li class="list-item-icon">
|
|
|
+ <svg-icon v-if="item.eventType == 'Homework'"
|
|
|
+ icon-class="doc"/>
|
|
|
+ <svg-icon v-if="item.eventType == 'Preview'"
|
|
|
+ icon-class="selflearninginTime"/>
|
|
|
+ <svg-icon v-if="item.eventType == 'Exam'"
|
|
|
+ icon-class="test"
|
|
|
+ class="reset-testIcon"/>
|
|
|
+ <svg-icon v-if="item.eventType == 'Vote'"
|
|
|
+ icon-class="vote"/>
|
|
|
+ <svg-icon v-if="item.eventType == 'Survey'"
|
|
|
+ icon-class="quesnaire"/>
|
|
|
+ </li>
|
|
|
+ <li class="list-item-info">
|
|
|
+ <p class="list-item-title">
|
|
|
+ <span v-show="item.eventType == 'Exam'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolExam'):$t('studentWeb.public.privateExam')}}</span>
|
|
|
+ <span v-show="item.eventType == 'Vote'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolVote'):$t('studentWeb.public.privateVote')}}</span>
|
|
|
+ <span v-show="item.eventType == 'Survey'" class="list-item-typeMark">{{item.owner == 'school'? $t('studentWeb.public.schoolSurvey'):$t('studentWeb.public.privateSurvey')}}</span>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </p>
|
|
|
+ <p class="list-item-time">
|
|
|
+ {{ $t("studentWeb.endsToday") }}{{ item.todayTime }}{{ $t("studentWeb.endsTodayTime") }}
|
|
|
+ </p>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </li>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[0]") }}</h3>
|
|
|
- <StudyTimeChart />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[1]") }}</h3>
|
|
|
- <SplineAreaChart />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[2]") }}</h3>
|
|
|
- <StackBarChart />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[3]") }}</h3>
|
|
|
- <TwoLineChart />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[4]") }}</h3>
|
|
|
- <EventPieChart />
|
|
|
- </i-col>
|
|
|
- <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
- <h3>{{ $t("studentWeb.chartNames[5]") }}</h3>
|
|
|
- <StudyHeatMap />
|
|
|
- </i-col>
|
|
|
- </Row>
|
|
|
- </div>
|
|
|
- </i-col>
|
|
|
- </Row>
|
|
|
+ </Card>
|
|
|
+ </i-col>
|
|
|
+ </Row>
|
|
|
+ <Row :gutter="30" v-if="spanCharts == true">
|
|
|
+ <i-col :xs="0" :sm="0" :md="0" :lg="1"></i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="22">
|
|
|
+ <div class="allcharts">
|
|
|
+ <Row :gutter="30">
|
|
|
+ <div
|
|
|
+ class="spanAllchartBtn isOpen"
|
|
|
+ @click="setSpanCharts()"
|
|
|
+ >
|
|
|
+ <svg-icon
|
|
|
+ class="spanAllchartIconNow"
|
|
|
+ icon-class="dimensions"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[0]") }}</h3>
|
|
|
+ <StudyTimeChart />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[1]") }}</h3>
|
|
|
+ <SplineAreaChart />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[2]") }}</h3>
|
|
|
+ <StackBarChart />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[3]") }}</h3>
|
|
|
+ <TwoLineChart />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[4]") }}</h3>
|
|
|
+ <EventPieChart />
|
|
|
+ </i-col>
|
|
|
+ <i-col :xs="24" :sm="24" :md="24" :lg="8">
|
|
|
+ <h3>{{ $t("studentWeb.chartNames[5]") }}</h3>
|
|
|
+ <StudyHeatMap />
|
|
|
+ </i-col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
+ </i-col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
<br />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Loading from "vue-loading-overlay";
|
|
|
+import "vue-loading-overlay/dist/vue-loading.css";
|
|
|
import ChartCarousel from "./ChartCarousel/ChartCarousel";
|
|
|
import MissionListCard from "./MissionListCard";
|
|
|
import StudyTimeChart from "../HomeView/ChartCarousel/StudyTimeChart";
|
|
@@ -233,12 +259,12 @@ import TwoLineChart from "../HomeView/ChartCarousel/TwoLineChart";
|
|
|
import StackBarChart from "../HomeView/ChartCarousel/StackBarChart";
|
|
|
import SplineAreaChart from "../HomeView/ChartCarousel/SplineAreaChart";
|
|
|
import StudyHeatMap from "../HomeView/ChartCarousel/StudyHeatMap";
|
|
|
-import studentWeb from '../../../api/studentWeb';
|
|
|
import { mapState } from 'vuex';
|
|
|
|
|
|
export default {
|
|
|
name: "HomeView",
|
|
|
components: {
|
|
|
+ Loading,
|
|
|
ChartCarousel,
|
|
|
MissionListCard,
|
|
|
SplineAreaChart,
|
|
@@ -248,73 +274,63 @@ export default {
|
|
|
StudyHeatMap,
|
|
|
StudyTimeChart,
|
|
|
},
|
|
|
-
|
|
|
data() {
|
|
|
return {
|
|
|
eventPageType: ["Preview", "Exam", "Homework", "Vote", "Survey"], //本頁出現的類型
|
|
|
MyNo: "1", //接收NavBar 選定的那一頁icon標示
|
|
|
MyName: "",
|
|
|
- mockdata: [
|
|
|
+ spanCharts: false,
|
|
|
+ todaydaylineListHeight: 0,
|
|
|
+ addClassNo: "", //加入课程的代码
|
|
|
+ testData: [], //活动数据
|
|
|
+ todayData: [], //今日活动
|
|
|
+ finishAct: 0, //活动完成率
|
|
|
+ weekTime: [
|
|
|
+ {
|
|
|
+ title: this.$t("studentWeb.week.mon"),
|
|
|
+ value: "MON",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: this.$t("studentWeb.week.tue"),
|
|
|
+ value: "TUE",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: this.$t("studentWeb.week.wed"),
|
|
|
+ value: "WED",
|
|
|
+ },
|
|
|
{
|
|
|
- eventSubject: "英文",
|
|
|
- eventID: "360000198305204644",
|
|
|
- eDes:
|
|
|
- "眼技先准角期几要毛精且将已己拉省。制力叫了连并情权了类资格深外表量。领值术农除存给么连什通单问。",
|
|
|
- eventName: "党华前置亲从性常但给",
|
|
|
- teacher: "阎娟",
|
|
|
- startTime: "2020.01.14",
|
|
|
- endTime: "2020.02.31",
|
|
|
- isDone: false,
|
|
|
- isOverEndTime: true,
|
|
|
- eventType: "作業",
|
|
|
+ title: this.$t("studentWeb.week.thu"),
|
|
|
+ value: "THU",
|
|
|
},
|
|
|
{
|
|
|
- eventSubject: "國文",
|
|
|
- eventID: "420000200302184824",
|
|
|
- eDes:
|
|
|
- "回全导色即院给深育完东两会白任斗了利。取。之部个变型自重周间情六天确史这节族么易。",
|
|
|
- eventName: "一斯在管石门",
|
|
|
- teacher: "薛洋",
|
|
|
- startTime: "2020.01.09",
|
|
|
- endTime: "2020.02.28",
|
|
|
- isDone: false,
|
|
|
- isOverEndTime: true,
|
|
|
- eventType: "課前預習",
|
|
|
+ title: this.$t("studentWeb.week.fri"),
|
|
|
+ value: "FRI",
|
|
|
},
|
|
|
{
|
|
|
- eventSubject: "英文",
|
|
|
- eventID: "32000020030706692X",
|
|
|
- eDes:
|
|
|
- "适会商你济标张或程道称育口海率。己织南系完群百相系她两意对该亲。门车个解争包看听文变声反先。",
|
|
|
- eventName: "动主利全这还便划九",
|
|
|
- teacher: "谭强",
|
|
|
- startTime: "2020.01.06",
|
|
|
- endTime: "2020.02.27",
|
|
|
- allowRetryNow: true,
|
|
|
- isDone: false,
|
|
|
- isOverEndTime: false,
|
|
|
- eventType: "問卷",
|
|
|
+ title: this.$t("studentWeb.week.sat"),
|
|
|
+ value: "SAT",
|
|
|
},
|
|
|
+ {
|
|
|
+ title: this.$t("studentWeb.week.sun"),
|
|
|
+ value: "SUN",
|
|
|
+ }
|
|
|
],
|
|
|
- spanCharts: false,
|
|
|
- todaydaylineListHeight: 0,
|
|
|
- addClassNo: "", //加入课程的代码
|
|
|
- testData: [], //活动数据
|
|
|
- todayData: [], //今日活动
|
|
|
- finishAct: 0, //活动完成率
|
|
|
+ recentClass: [], //近期上课
|
|
|
+ isLoading: false,
|
|
|
};
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
//获取新活动信息数据
|
|
|
getActivityInfo() {
|
|
|
+ this.isLoading = true
|
|
|
let params = {
|
|
|
userid: this.userInfo.sub,
|
|
|
userType: "",
|
|
|
school: this.user.schoolCode
|
|
|
}
|
|
|
// 醍摩豆登陆——> roles有teacher
|
|
|
- if (this.$store.state.userInfo.roles.includes("teacher")) {
|
|
|
+ if (this.userInfo.roles.includes("teacher")) {
|
|
|
params.userType = "tmdid"
|
|
|
}
|
|
|
// 学生账号登陆
|
|
@@ -334,6 +350,8 @@ export default {
|
|
|
});
|
|
|
this.getTodayAct()
|
|
|
}
|
|
|
+ }).finally(()=>{
|
|
|
+ this.isLoading = false
|
|
|
})
|
|
|
},
|
|
|
// 今日截至活动
|
|
@@ -344,7 +362,7 @@ export default {
|
|
|
// 当前00:00:00
|
|
|
let strdDate = (new Date(new Date(new Date().toLocaleDateString()).getTime())).getTime()
|
|
|
// 当前23:59:59
|
|
|
- let endDate = (new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1)).getTime()
|
|
|
+ let endDate = (new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 - 1)).getTime()
|
|
|
activity.map(item => {
|
|
|
if(item.endTime >= strdDate && item.endTime <= endDate && item.taskStatus != 1) {
|
|
|
item.todayTime = this.handleTime(item.endTime)
|
|
@@ -375,12 +393,116 @@ export default {
|
|
|
let toTime = h + ":" + m + ":" + s
|
|
|
return toTime
|
|
|
},
|
|
|
+ // 课程
|
|
|
+ getClassList() {
|
|
|
+ let param = {
|
|
|
+ userid: this.userInfo.sub,
|
|
|
+ school: this.userInfo.azp
|
|
|
+ }
|
|
|
+ if(this.userInfo.roles.includes("teacher")) {
|
|
|
+ param.userType = "tmdid"
|
|
|
+ } else {
|
|
|
+ param.userType = "schoolid"
|
|
|
+ }
|
|
|
+ this.$api.studentWeb.getClassList(param).then(res => {
|
|
|
+ if(res.courses.length) {
|
|
|
+ let list = res.courses
|
|
|
+ list.forEach(item => {
|
|
|
+ if(item.course) {
|
|
|
+ item.course.schedule.forEach((sch, sIn) => {
|
|
|
+ // 有classId,表定课程
|
|
|
+ if(sch.classId == item.stuCourse.classId[0]) {
|
|
|
+ // 近期上课,就表示一定要有时间
|
|
|
+ if(sch.time.length) {
|
|
|
+ for (let m = 0; m < sch.time.length; m++) {
|
|
|
+ let data = this.getNewCourse("class", item, sch, sIn, m)
|
|
|
+ this.recentClass.push(data)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 有stulist,临时课程
|
|
|
+ else if (sch.stulist) {
|
|
|
+ if(sch.time.length) {
|
|
|
+ for (let m = 0; m < sch.time.length; m++) {
|
|
|
+ let data = this.getNewCourse("person", item, sch, sIn, m)
|
|
|
+ this.recentClass.push(data)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.findSchoolInfo()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getNewCourse(attribute, list, sch, sIn, m) {
|
|
|
+ let data = this._.cloneDeep(list.course)
|
|
|
+ delete data.schedule
|
|
|
+ data.school = list.stuCourse.school
|
|
|
+ data.scope = list.stuCourse.scope
|
|
|
+ data.classId = sch.classId
|
|
|
+ // data.roomId = sch.room
|
|
|
+ // data.teacherId = sch.teacherId
|
|
|
+ data.notice = sch.notice
|
|
|
+ data.stuList = sch.stulist
|
|
|
+ data.timeId = sch.time[m].id
|
|
|
+ data.timeWeek = sch.time[m].week
|
|
|
+ this.weekTime.forEach(item => {
|
|
|
+ if(item.value == sch.time[m].week) {
|
|
|
+ data.classTime = item.title
|
|
|
+ }
|
|
|
+ })
|
|
|
+ data.roomName = sch.roomName ? sch.roomName : this.$t("studentWeb.courseContent.noRoom")
|
|
|
+ data.teaName = sch.teacherName ? sch.teacherName : this.$t('studentWeb.courseContent.noTeacher')
|
|
|
+ data.unique = attribute + list.course.no + sIn + m
|
|
|
+ return data
|
|
|
+ },
|
|
|
+ // 查找班级——匹配对应的时间
|
|
|
+ findSchoolInfo() {
|
|
|
+ let params = {}
|
|
|
+ // 醍摩豆登陆——> roles有teacher
|
|
|
+ if (this.userInfo.roles.includes("teacher")) {
|
|
|
+ params = {userType: "tmdid"}
|
|
|
+ }
|
|
|
+ // 学生账号登陆
|
|
|
+ else {
|
|
|
+ params = {userType: "schoolid"}
|
|
|
+ }
|
|
|
+ this.$api.studentWeb.getSchoolInfo(params).then(res => {
|
|
|
+ if(res.status == 200 && res.school_base) {
|
|
|
+ let timeList = []
|
|
|
+ res.school_base.period.forEach(item => {
|
|
|
+ if(this.recentClass[0].period.id == item.id) {
|
|
|
+ timeList = item.timetable
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(timeList.length) {
|
|
|
+ this.recentClass.map(course => {
|
|
|
+ timeList.forEach(time => {
|
|
|
+ if(time.id == course.timeId) {
|
|
|
+ course.time = time.time
|
|
|
+ course.classTime = course.classTime + " " + time.time + " (" + time.label + ")"
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 点击上课提醒跳转页面
|
|
|
+ getCourse(course) {
|
|
|
+ this.$router.push({
|
|
|
+ name: "courseList",
|
|
|
+ params: {
|
|
|
+ course: course
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
noData() {
|
|
|
this.$Message.warning(this.$t("studentWeb.public.notice"))
|
|
|
},
|
|
|
- getCurrentLang() {
|
|
|
- return localStorage.getItem("lang")
|
|
|
- },
|
|
|
setSpanCharts() {
|
|
|
this.spanCharts = !this.spanCharts
|
|
|
},
|
|
@@ -388,7 +510,7 @@ export default {
|
|
|
addClass() {
|
|
|
if(this.addClassNo) {
|
|
|
let isStu = true
|
|
|
- this.$store.state.userInfo.roles.map(item => {
|
|
|
+ this.userInfo.roles.map(item => {
|
|
|
if(item == "teacher") {
|
|
|
isStu = false
|
|
|
}
|
|
@@ -399,9 +521,9 @@ export default {
|
|
|
tmdId: ""
|
|
|
}
|
|
|
if(isStu) {
|
|
|
- req.studentId = this.$store.state.userInfo.sub
|
|
|
+ req.studentId = this.userInfo.sub
|
|
|
} else {
|
|
|
- req.tmdId = this.$store.state.userInfo.sub
|
|
|
+ req.tmdId = this.userInfo.sub
|
|
|
}
|
|
|
this.$api.studentWeb.getAddClass(req).then(res => {
|
|
|
if(res.status == 0) {
|
|
@@ -435,6 +557,7 @@ export default {
|
|
|
this.$emit("onNavNo", this.MyNo)
|
|
|
this.$emit("onNavName", this.MyName)
|
|
|
this.getActivityInfo()
|
|
|
+ this.getClassList()
|
|
|
},
|
|
|
mounted() {
|
|
|
/* if (document.getElementById("tditem0") != "") {
|