|
@@ -1,327 +1,350 @@
|
|
|
<template>
|
|
|
- <view class="page_view">
|
|
|
- <!-- 成绩统计 -->
|
|
|
- <view class="bg1">
|
|
|
- <top-info :timeStamp="timeStamp"></top-info>
|
|
|
- <scroll-view class="scroll_view" scroll-x="true" :scroll-with-animation="true" scroll-left="0">
|
|
|
- <view class="view_box">
|
|
|
- <view class="scroll_view_item" v-for="(item,index) in cardList" :key="index" @click="navTab(index)">
|
|
|
- <view class="card_info">
|
|
|
- <view :class="item.icon"></view>
|
|
|
- <view class="title">{{item.title}}</view>
|
|
|
- </view>
|
|
|
- <view class="chart_box">
|
|
|
- <qiun-data-charts type="arcbar" :chartData="item.data" :canvas2d='true'
|
|
|
- :canvasId='item.canvasId' :opts="item.chartOpts" />
|
|
|
+ <view>
|
|
|
+ <view v-if="!isHomeLoad">
|
|
|
+ <u-loading-page :loading="true" loadingText="请稍候..." loadingMode="semicircle"></u-loading-page>
|
|
|
+ </view>
|
|
|
+ <view class="page_view" v-if="isHomeLoad">
|
|
|
+ <!-- 成绩统计 -->
|
|
|
+ <view class="bg1">
|
|
|
+ <top-info :timeStamp="timeStamp"></top-info>
|
|
|
+ <scroll-view class="scroll_view" scroll-x="true" :scroll-with-animation="true" scroll-left="0">
|
|
|
+ <view class="view_box">
|
|
|
+ <view class="scroll_view_item" v-for="(item,index) in cardList" :key="index"
|
|
|
+ @click="navTab(index)">
|
|
|
+ <view class="card_info">
|
|
|
+ <view :class="item.icon"></view>
|
|
|
+ <view class="title">{{item.title}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="chart_box">
|
|
|
+ <qiun-data-charts type="arcbar" :chartData="item.data" :canvas2d='true'
|
|
|
+ :canvasId='item.canvasId' :opts="item.chartOpts" />
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- </scroll-view>
|
|
|
- </view>
|
|
|
- <!-- 通知 -->
|
|
|
- <view class="bg2">
|
|
|
- <view class="notice">
|
|
|
- <u-notice-bar :text="noticeData" bgColor="rgba(65,105,225,0.4)" color="#FFF"
|
|
|
- url="/subpkg/datalist/messagedetail"></u-notice-bar>
|
|
|
+ </scroll-view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 课程 -->
|
|
|
- <view class="card_view">
|
|
|
- <!-- 今日课程模块 -->
|
|
|
- <view class="card_item" style="width: 100%;" v-if="classCurrent != -1">
|
|
|
- <view class="card_title">
|
|
|
- <view class="front_tag"></view>
|
|
|
- <view class="title">今日课程</view>
|
|
|
- <view class="flex_row" style="margin: 0 0 0 auto;" @click="navClassDetail">
|
|
|
- <view class="t-icon t-icon-fenlei"></view>
|
|
|
- <view class="title" style="color: #4169E1;margin-left: 10rpx;">课程列表</view>
|
|
|
- </view>
|
|
|
+ <!-- 通知 -->
|
|
|
+ <view class="bg2">
|
|
|
+ <view class="notice">
|
|
|
+ <u-notice-bar :text="noticeData" bgColor="rgba(65,105,225,0.4)" color="#FFF"
|
|
|
+ url="/subpkg/datalist/messagedetail"></u-notice-bar>
|
|
|
</view>
|
|
|
- <view class="class_list">
|
|
|
- <!-- 上上节 -->
|
|
|
- <view class="class_item" v-if="classCurrent === classList.length">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
- <view class="flex_cloumn">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_title">{{classList[classCurrent - 3].title}}</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 3].name}}</view>
|
|
|
+ </view>
|
|
|
+ <!-- 课程 -->
|
|
|
+ <view class="card_view">
|
|
|
+ <!-- 今日课程模块 -->
|
|
|
+ <view class="card_item" style="width: 100%;" v-if="classCurrent != -1">
|
|
|
+ <view class="card_title">
|
|
|
+ <view class="front_tag"></view>
|
|
|
+ <view class="title">今日课程</view>
|
|
|
+ <view class="flex_row" style="margin: 0 0 0 auto;" @click="navClassDetail">
|
|
|
+ <view class="t-icon t-icon-fenlei"></view>
|
|
|
+ <view class="title" style="color: #4169E1;margin-left: 10rpx;">课程列表</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="class_list">
|
|
|
+ <!-- 上上节 -->
|
|
|
+ <view class="class_item" v-if="classCurrent === classList.length">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
+ <view class="flex_cloumn">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_title">{{classList[classCurrent - 3].title}}</view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 3].name}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 3].teacher}}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 3].teacher}}</view>
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_subtitle">上节</view>
|
|
|
+ <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
+ {{classList[classCurrent - 3].time}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_subtitle">上节</view>
|
|
|
- <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
- {{classList[classCurrent - 3].time}}
|
|
|
- </view>
|
|
|
+
|
|
|
+ <view class="class_btn">
|
|
|
+ <view class="_text">{{classList[classCurrent - 3].attendance?'已出勤':'未出勤'}}</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <view class="class_btn">
|
|
|
- <view class="_text">{{classList[classCurrent - 3].attendance?'已出勤':'未出勤'}}</view>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 上节 -->
|
|
|
- <view class="class_item" v-if="classCurrent >= 2">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
- <view class="flex_cloumn">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_title">{{classList[classCurrent - 2].title}}</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 2].name}}</view>
|
|
|
+ <!-- 上节 -->
|
|
|
+ <view class="class_item" v-if="classCurrent >= 2">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
+ <view class="flex_cloumn">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_title">{{classList[classCurrent - 2].title}}</view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 2].name}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 2].teacher}}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 2].teacher}}</view>
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_subtitle">上节</view>
|
|
|
+ <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
+ {{classList[classCurrent - 2].time}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_subtitle">上节</view>
|
|
|
- <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
- {{classList[classCurrent - 2].time}}
|
|
|
- </view>
|
|
|
+
|
|
|
+ <view class="class_btn">
|
|
|
+ <view class="_text">{{classList[classCurrent - 2].attendance?'已出勤':'未出勤'}}</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <view class="class_btn">
|
|
|
- <view class="_text">{{classList[classCurrent - 2].attendance?'已出勤':'未出勤'}}</view>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 当前 -->
|
|
|
- <view class="class_item" style="background-color: #FFF;background: #FFF;">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
- <view class="flex_cloumn">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_title" style="color: #4169E1;">
|
|
|
- {{classList[classCurrent - 1].title}}
|
|
|
- </view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 1].name}}</view>
|
|
|
+ <!-- 当前 -->
|
|
|
+ <view class="class_item" style="background-color: #FFF;background: #FFF;">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="t-icon t-icon-classicon-copy" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
+ <view class="flex_cloumn">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_title" style="color: #4169E1;">
|
|
|
+ {{classList[classCurrent - 1].title}}
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 1].name}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent - 1].teacher}}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent - 1].teacher}}</view>
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_subtitle" style="color: #4169E1;">当前</view>
|
|
|
+ <view class="class_item_detail" style="font-size: 32rpx;color: #4169E1;">
|
|
|
+ {{classList[classCurrent - 1].time}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_subtitle" style="color: #4169E1;">当前</view>
|
|
|
- <view class="class_item_detail" style="font-size: 32rpx;color: #4169E1;">
|
|
|
- {{classList[classCurrent - 1].time}}
|
|
|
- </view>
|
|
|
+
|
|
|
+ <view class="class_btn" style="background-color: #ff5959;">
|
|
|
+ <view class="_text">{{classList[classCurrent - 1].attendance?'课程中':'未出勤'}}</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <view class="class_btn" style="background-color: #ff5959;">
|
|
|
- <view class="_text">{{classList[classCurrent - 1].attendance?'课程中':'未出勤'}}</view>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 下节 -->
|
|
|
- <view class="class_item" v-if="classCurrent != classList.length">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="t-icon t-icon-classicon-noarrive" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
- <view class="flex_cloumn">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_title">{{classList[classCurrent].title}}</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent].name}}</view>
|
|
|
+ <!-- 下节 -->
|
|
|
+ <view class="class_item" v-if="classCurrent != classList.length">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="t-icon t-icon-classicon-noarrive" style="width: 60rpx; height: 60rpx;">
|
|
|
+ </view>
|
|
|
+ <view class="flex_cloumn">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_title">{{classList[classCurrent].title}}</view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent].name}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent].teacher}}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent].teacher}}</view>
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_subtitle">下节</view>
|
|
|
+ <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
+ {{classList[classCurrent].time}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_subtitle">下节</view>
|
|
|
- <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
- {{classList[classCurrent].time}}
|
|
|
- </view>
|
|
|
+
|
|
|
+ <view class="class_btn" style="background-color: #909399;">
|
|
|
+ <view class="_text">未开始</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <view class="class_btn" style="background-color: #909399;">
|
|
|
- <view class="_text">未开始</view>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 下下节 -->
|
|
|
- <view class="class_item" v-if="classCurrent === 1">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="t-icon t-icon-classicon-noarrive" style="width: 60rpx; height: 60rpx;"></view>
|
|
|
- <view class="flex_cloumn">
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_title">{{classList[classCurrent+1].title}}</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent+1].name}}</view>
|
|
|
+ <!-- 下下节 -->
|
|
|
+ <view class="class_item" v-if="classCurrent === 1">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="t-icon t-icon-classicon-noarrive" style="width: 60rpx; height: 60rpx;">
|
|
|
+ </view>
|
|
|
+ <view class="flex_cloumn">
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_title">{{classList[classCurrent+1].title}}</view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent+1].name}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="tag">
|
|
|
+ <view class="tag_text">{{classList[classCurrent+1].teacher}}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="tag">
|
|
|
- <view class="tag_text">{{classList[classCurrent+1].teacher}}</view>
|
|
|
+ <view class="flex_row">
|
|
|
+ <view class="class_item_subtitle">下节</view>
|
|
|
+ <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
+ {{classList[classCurrent+1].time}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="flex_row">
|
|
|
- <view class="class_item_subtitle">下节</view>
|
|
|
- <view class="class_item_detail" style="font-size: 32rpx;">
|
|
|
- {{classList[classCurrent+1].time}}
|
|
|
- </view>
|
|
|
+
|
|
|
+ <view class="class_btn" style="background-color: #909399;">
|
|
|
+ <view class="_text">未开始</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <view class="class_btn" style="background-color: #909399;">
|
|
|
- <view class="_text">未开始</view>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 插画模块 -->
|
|
|
- <view class="card_item" style="width: 100%;" v-if="classCurrent === -1">
|
|
|
- <view class="card_title">
|
|
|
- <view class="front_tag"></view>
|
|
|
- <view class="title">今日课程</view>
|
|
|
- </view>
|
|
|
- <view class="detail_image" :style="{backgroundImage:`url(${image})`}"></view>
|
|
|
- <view class="class_list">
|
|
|
- <view class="class_item" style="height: 120rpx;">
|
|
|
- <view class="flex_row" style="justify-content: space-around;">
|
|
|
- <view class="class_item_title">{{classList.length === 0 ? '自由安排' : '准备上课'}}</view>
|
|
|
- <view class="tag" style="margin: 0;">
|
|
|
- <view class="tag_text">{{classList.length === 0 ? '无课程' : '已下课'}}</view>
|
|
|
- </view>
|
|
|
- <view class="class_item_subtitle">{{classList.length === 0 ? '假期' : '课间'}}</view>
|
|
|
- <view class="flex_row" @click="navClassDetail">
|
|
|
- <view class="t-icon t-icon-fenlei"></view>
|
|
|
- <view class="class_item_title" style="color: #4169E1;margin-left: 10rpx;">课程列表</view>
|
|
|
+ <!-- 插画模块 -->
|
|
|
+ <view class="card_item" style="width: 100%;" v-if="classCurrent === -1">
|
|
|
+ <view class="card_title">
|
|
|
+ <view class="front_tag"></view>
|
|
|
+ <view class="title">今日课程</view>
|
|
|
+ </view>
|
|
|
+ <view class="detail_image" :style="{backgroundImage:`url(${image})`}"></view>
|
|
|
+ <view class="class_list">
|
|
|
+ <view class="class_item" style="height: 120rpx;">
|
|
|
+ <view class="flex_row" style="justify-content: space-around;">
|
|
|
+ <view class="class_item_title">{{classList.length === 0 ? '自由安排' : '准备上课'}}</view>
|
|
|
+ <view class="tag" style="margin: 0;">
|
|
|
+ <view class="tag_text">{{classList.length === 0 ? '无课程' : '已下课'}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="class_item_subtitle">{{classList.length === 0 ? '假期' : '课间'}}</view>
|
|
|
+ <view class="flex_row" @click="navClassDetail">
|
|
|
+ <view class="t-icon t-icon-fenlei"></view>
|
|
|
+ <view class="class_item_title" style="color: #4169E1;margin-left: 10rpx;">课程列表
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <!-- 今日打卡模块 -->
|
|
|
- <view class="card_item" style="height: 300rpx;" @click="navClockStats">
|
|
|
- <view class="flex_row" style="margin: 20rpx 20rpx 0 20rpx;">
|
|
|
- <view class="icon_box" style="width: 110rpx;height: 110rpx; background-color: #d8deff;">
|
|
|
- <view class="t-icon t-icon-a-rilidaka" style="width: 60rpx;height: 60rpx;"></view>
|
|
|
- </view>
|
|
|
- <view class="item_block">
|
|
|
- <view class="subtitle">打卡记录</view>
|
|
|
- <view class="flex_baseline">
|
|
|
- <view class="title" style="transform: skew(-10deg);">{{dayTime.split('月')[0]}}</view>
|
|
|
- <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">月</view>
|
|
|
- <view class="title" style="margin-left: 10rpx;transform: skew(-10deg);">
|
|
|
- {{dayTime.split('月')[1]}}
|
|
|
+ <!-- 今日打卡模块 -->
|
|
|
+ <view class="card_item" style="height: 300rpx;" @click="navClockStats">
|
|
|
+ <view class="flex_row" style="margin: 20rpx 20rpx 0 20rpx;">
|
|
|
+ <view class="icon_box" style="width: 110rpx;height: 110rpx; background-color: #d8deff;">
|
|
|
+ <view class="t-icon t-icon-a-rilidaka" style="width: 60rpx;height: 60rpx;"></view>
|
|
|
+ </view>
|
|
|
+ <view class="item_block">
|
|
|
+ <view class="subtitle">打卡记录</view>
|
|
|
+ <view class="flex_baseline">
|
|
|
+ <view class="title" style="transform: skew(-10deg);">{{dayTime.split('月')[0]}}</view>
|
|
|
+ <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">月</view>
|
|
|
+ <view class="title" style="margin-left: 10rpx;transform: skew(-10deg);">
|
|
|
+ {{dayTime.split('月')[1]}}
|
|
|
+ </view>
|
|
|
+ <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">日</view>
|
|
|
</view>
|
|
|
- <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">日</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view class="flex_row" style="margin: auto 20rpx 20rpx 20rpx;justify-content: space-between;">
|
|
|
- <view class="item_block" style="margin-left: -10rpx;">
|
|
|
- <view class="subtitle">打卡时间</view>
|
|
|
- <view class="title" v-if="clockTime === '未记录'" style="transform: skew(-10deg);">{{clockTime}}
|
|
|
- </view>
|
|
|
- <view class="flex_baseline" v-if="clockTime != '未记录'">
|
|
|
- <view class="title" style="transform: skew(-10deg);">
|
|
|
- {{clockTime.split(':')[0].replace('0','')}}
|
|
|
+ <view class="flex_row" style="margin: auto 20rpx 20rpx 20rpx;justify-content: space-between;">
|
|
|
+ <view class="item_block" style="margin-left: -10rpx;">
|
|
|
+ <view class="subtitle">打卡时间</view>
|
|
|
+ <view class="title" v-if="clockTime === '无记录'" style="transform: skew(-10deg);">
|
|
|
+ {{clockTime}}
|
|
|
</view>
|
|
|
- <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">点</view>
|
|
|
- <view class="title" style="transform: skew(-10deg);margin-left: 10rpx;">
|
|
|
- {{clockTime.split(':')[1]}}
|
|
|
+ <view class="flex_baseline" v-if="clockTime != '无记录'">
|
|
|
+ <view class="title" style="transform: skew(-10deg);">
|
|
|
+ {{clockTime.split(':')[0].replace('0','')}}
|
|
|
+ </view>
|
|
|
+ <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">点</view>
|
|
|
+ <view class="title" style="transform: skew(-10deg);margin-left: 10rpx;">
|
|
|
+ {{clockTime.split(':')[1]}}
|
|
|
+ </view>
|
|
|
+ <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">分</view>
|
|
|
</view>
|
|
|
- <view class="title" style="font-size: 22rpx; margin-left: 10rpx;">分</view>
|
|
|
- </view>
|
|
|
|
|
|
- </view>
|
|
|
- <view class="icon_box" style="width: 110rpx;height: 110rpx;"
|
|
|
- :style="{backgroundColor: clockState === '未打卡' ? '#ff5959':'#4169E1'}">
|
|
|
- <view class="title" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">{{clockState}}
|
|
|
+ </view>
|
|
|
+ <view class="icon_box" style="width: 110rpx;height: 110rpx;"
|
|
|
+ :style="{backgroundColor: clockState === '未打卡' ? '#ff5959':'#4169E1'}">
|
|
|
+ <view class="title" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">
|
|
|
+ {{clockState}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view style="width: 0;height: 0;">
|
|
|
- <view class="image"
|
|
|
- :style="{backgroundImage: clockState === '已打卡'?`url(${image2})`:`url(${image1})`}">
|
|
|
+ <view style="width: 0;height: 0;">
|
|
|
+ <view class="image"
|
|
|
+ :style="{backgroundImage: clockState === '已打卡'?`url(${image2})`:`url(${image1})`}">
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- </view>
|
|
|
- <!-- 今日出席模块 -->
|
|
|
- <view class="card_item" style="background-color: #f3f4f9;justify-content: space-between;">
|
|
|
- <!-- 当前课程 -->
|
|
|
- <view class="item_box">
|
|
|
- <view class="icon_box" style="background-color: #d8deff; margin-left: 20rpx;">
|
|
|
- <view class="t-icon t-icon-shangke-"></view>
|
|
|
- </view>
|
|
|
- <view class="flex_cloumn" style="align-items: center; justify-content: space-around;height: 80rpx;">
|
|
|
- <view class="subtitle" style="font-size: 24rpx;">当前课程</view>
|
|
|
- <view class="title" style="font-size: 32rpx;" v-if="classCurrent!=-1">
|
|
|
- {{classList[classCurrent - 1].name}}
|
|
|
+ </view>
|
|
|
+ <!-- 今日出席模块 -->
|
|
|
+ <view class="card_item" style="background-color: #f3f4f9;justify-content: space-between;">
|
|
|
+ <!-- 当前课程 -->
|
|
|
+ <view class="item_box">
|
|
|
+ <view class="icon_box" style="background-color: #d8deff; margin-left: 20rpx;">
|
|
|
+ <view class="t-icon t-icon-shangke-"></view>
|
|
|
</view>
|
|
|
- <view class="title" style="font-size: 32rpx;" v-if="classCurrent===-1">无课程</view>
|
|
|
- </view>
|
|
|
- <view v-if="classCurrent != -1">
|
|
|
- <view class="icon_box" style="margin-right: 20rpx;"
|
|
|
- :style="{backgroundColor: classList[classCurrent - 1].attendance ? '#23b46c':'#ff5959'}">
|
|
|
- <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">
|
|
|
- {{classList[classCurrent - 1].attendance ? '出勤':'缺勤'}}
|
|
|
+ <view class="flex_cloumn"
|
|
|
+ style="align-items: center; justify-content: space-around;height: 80rpx;">
|
|
|
+ <view class="subtitle" style="font-size: 24rpx;">当前课程</view>
|
|
|
+ <view class="title" style="font-size: 32rpx;" v-if="classCurrent!=-1">
|
|
|
+ {{classList[classCurrent - 1].name}}
|
|
|
</view>
|
|
|
+ <view class="title" style="font-size: 32rpx;" v-if="classCurrent===-1">无课程</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view v-if="classCurrent === -1">
|
|
|
- <view class="icon_box" style="margin-right: 20rpx;background-color: #f9c752;">
|
|
|
- <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">休息
|
|
|
+ <view v-if="classCurrent != -1">
|
|
|
+ <view class="icon_box" style="margin-right: 20rpx;"
|
|
|
+ :style="{backgroundColor: classList[classCurrent - 1].attendance ? '#23b46c':'#ff5959'}">
|
|
|
+ <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">
|
|
|
+ {{classList[classCurrent - 1].attendance ? '出勤':'缺勤'}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <!-- 出勤课程统计 -->
|
|
|
- <view class="item_box">
|
|
|
- <view class="icon_box" style="background-color: #d8deff;margin-left: 20rpx;">
|
|
|
- <view class="t-icon t-icon-shangkejilu"></view>
|
|
|
- </view>
|
|
|
- <view class="flex_cloumn" style="align-items: center;justify-content: space-around;height: 80rpx;">
|
|
|
- <view class="subtitle" style="font-size: 24rpx;">出勤课程</view>
|
|
|
- <view class="title" style="font-size: 32rpx;" v-if="classCurrent!=-1">{{finishClassNum}} 节
|
|
|
+ <view v-if="classCurrent === -1">
|
|
|
+ <view class="icon_box" style="margin-right: 20rpx;background-color: #f9c752;">
|
|
|
+ <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">休息
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="title" style="font-size: 32rpx;" v-if="classCurrent===-1">无统计</view>
|
|
|
</view>
|
|
|
- <view v-if="classList">
|
|
|
- <view class="icon_box" style="margin-right: 20rpx;"
|
|
|
- :style="{backgroundColor: classAttendanceQuality === '全勤' ? '#23b46c':'#ff5959'}">
|
|
|
- <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">
|
|
|
- {{classAttendanceQuality}}
|
|
|
+ <!-- 出勤课程统计 -->
|
|
|
+ <view class="item_box">
|
|
|
+ <view class="icon_box" style="background-color: #d8deff;margin-left: 20rpx;">
|
|
|
+ <view class="t-icon t-icon-shangkejilu"></view>
|
|
|
+ </view>
|
|
|
+ <view class="flex_cloumn"
|
|
|
+ style="align-items: center;justify-content: space-around;height: 80rpx;">
|
|
|
+ <view class="subtitle" style="font-size: 24rpx;">出勤课程</view>
|
|
|
+ <view class="title" style="font-size: 32rpx;" v-if="classCurrent!=-1">{{finishClassNum}} 节
|
|
|
</view>
|
|
|
+ <view class="title" style="font-size: 32rpx;" v-if="classCurrent===-1">无统计</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view v-if="!classList">
|
|
|
- <view class="icon_box" style="margin-right: 20rpx;background-color: #f9c752;">
|
|
|
- <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">休息
|
|
|
+ <view v-if="classList">
|
|
|
+ <view class="icon_box" style="margin-right: 20rpx;"
|
|
|
+ :style="{backgroundColor: classAttendanceQuality === '全勤' ? '#23b46c':'#ff5959'}">
|
|
|
+ <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">
|
|
|
+ {{classAttendanceQuality}}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view v-if="!classList">
|
|
|
+ <view class="icon_box" style="margin-right: 20rpx;background-color: #f9c752;">
|
|
|
+ <view class="subtitle" style="color: #FFF;font-size: 26rpx;transform: skew(-10deg);">休息
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <!-- 课例列表 -->
|
|
|
- <view class="flex_cloumn" style="margin-left: 20rpx;">
|
|
|
- <view class="title" style="font-size: 32rpx;">今日推荐</view>
|
|
|
- <view class="bottom_tag"></view>
|
|
|
+ <!-- 课例列表 -->
|
|
|
+ <view class="flex_cloumn" style="margin: 15rpx 0 10rpx 20rpx;">
|
|
|
+ <view class="title" style="font-size: 32rpx;">课程推荐</view>
|
|
|
+ <view class="bottom_tag"></view>
|
|
|
+ </view>
|
|
|
+ <view class="flex_row" style="width: 70%;"></view>
|
|
|
</view>
|
|
|
- <view class="flex_row" style="width: 70%;"></view>
|
|
|
-
|
|
|
- <view class="card_item" style="width: 35%;"></view>
|
|
|
+ <scroll-view class="scroll_view_bottom" scroll-x="true" :scroll-with-animation="true" scroll-left="0">
|
|
|
+ <view class="_item">
|
|
|
+ <view class="image_box" :style="{backgroundImage:`url(${'https://img08.tooopen.com/20220512/tooopen_v1036583658bee5dec1-490e-4298-8d44-e3a96b89a6e2.jpg'})`}">
|
|
|
|
|
|
+ </view>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ <view class="_item"></view>
|
|
|
+ <view class="_item"></view>
|
|
|
+ <view class="_item"></view>
|
|
|
+ <view class="_item"></view>
|
|
|
+ </scroll-view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
@@ -343,8 +366,8 @@
|
|
|
canvasId: 'tab_home_chart1',
|
|
|
data: {
|
|
|
"series": [{
|
|
|
- "name": "评测完成",
|
|
|
- "data": '',
|
|
|
+ "name": "评测完成率",
|
|
|
+ "data": '无评测',
|
|
|
"color": "#ff8caf"
|
|
|
}]
|
|
|
},
|
|
@@ -355,8 +378,8 @@
|
|
|
canvasId: 'tab_home_chart2',
|
|
|
data: {
|
|
|
"series": [{
|
|
|
- "name": "作业完成",
|
|
|
- "data": '',
|
|
|
+ "name": "作业完成率",
|
|
|
+ "data": '无作业',
|
|
|
"color": "#f9c752"
|
|
|
}]
|
|
|
},
|
|
@@ -367,8 +390,8 @@
|
|
|
canvasId: 'tab_home_chart3',
|
|
|
data: {
|
|
|
"series": [{
|
|
|
- "name": "活动完成",
|
|
|
- "data": '',
|
|
|
+ "name": "活动完成率",
|
|
|
+ "data": '无活动',
|
|
|
"color": "#FF6D31"
|
|
|
}]
|
|
|
},
|
|
@@ -392,7 +415,8 @@
|
|
|
classAttendanceQuality: '',
|
|
|
//打卡状态image
|
|
|
image1: 'https://ouch-cdn2.icons8.com/2farWQUdLe8J4mb4oQoEvJpl5OFXtM5P7AZi8nhuOxk/rs:fit:912:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9zdmcvOTYz/L2VkZGEwNzAzLTAw/MWYtNGZiZS1hY2I3/LTVlNjRhZGYzNTAx/Mi5zdmc.png',
|
|
|
- image2: 'https://ouch-cdn2.icons8.com/6CkTSZQdyBYaGiqmNJRhbqoYi8QDcLFn-04VEQyQaCo/rs:fit:962:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9zdmcvNzMz/LzlhYmUzYjIyLTRl/ZGQtNDVkMi1iYWEw/LTVjYjk2NThmNDJi/OC5zdmc.png'
|
|
|
+ image2: 'https://ouch-cdn2.icons8.com/6CkTSZQdyBYaGiqmNJRhbqoYi8QDcLFn-04VEQyQaCo/rs:fit:962:912/czM6Ly9pY29uczgu/b3VjaC1wcm9kLmFz/c2V0cy9zdmcvNzMz/LzlhYmUzYjIyLTRl/ZGQtNDVkMi1iYWEw/LTVjYjk2NThmNDJi/OC5zdmc.png',
|
|
|
+ isHomeLoad: false
|
|
|
};
|
|
|
},
|
|
|
onLoad() {
|
|
@@ -413,10 +437,10 @@
|
|
|
await this.$initHome()
|
|
|
this.getClassCurrent()
|
|
|
this.getChartData()
|
|
|
- this.setOpts()
|
|
|
this.getNoticeData()
|
|
|
this.getClockData()
|
|
|
this.getClassAttendance()
|
|
|
+ this.isHomeLoad = true
|
|
|
},
|
|
|
//计算出当前课程
|
|
|
getClassCurrent() {
|
|
@@ -465,46 +489,73 @@
|
|
|
//更新图表数据
|
|
|
getChartData() {
|
|
|
//完成数据
|
|
|
- let examFinishData = this.examData.filter(x => x.examInfo.progress === 'finish')
|
|
|
- let workFinishData = this.workData.filter(x => x.work.progress === 'finish')
|
|
|
- let swapFinishData = this.swapData.filter(x => x.vote && x.vote.progress === 'finish')
|
|
|
- swapFinishData.push(...this.swapData.filter(x => x.survey && x.survey.progress === 'finish'))
|
|
|
- //计算完成率
|
|
|
- this.cardList[0].data.series[0].data = (examFinishData.length / this.examData.length).toFixed(2)
|
|
|
- console.log('评测完成',(examFinishData.length / this.examData.length).toFixed(2));
|
|
|
- this.cardList[1].data.series[0].data = (workFinishData.length / this.workData.length).toFixed(2)
|
|
|
- console.log('作业完成',(workFinishData.length / this.workData.length).toFixed(2));
|
|
|
- this.cardList[2].data.series[0].data = (swapFinishData.length / this.swapData.length).toFixed(2)
|
|
|
- console.log('活动完成',(swapFinishData.length / this.swapData.length).toFixed(2));
|
|
|
- },
|
|
|
- //圆环图设置更新
|
|
|
- setOpts() {
|
|
|
+ if (this.examData.length != 0) {
|
|
|
+ let examFinishData = this.examData.filter(x => x.examInfo.progress === 'finish')
|
|
|
+ this.cardList[0].data.series[0].data = parseFloat((examFinishData.length / this.examData.length)
|
|
|
+ .toFixed(2))
|
|
|
+ }
|
|
|
+ if (this.workData.length != 0) {
|
|
|
+ let workFinishData = this.workData.filter(x => x.work.progress === 'finish')
|
|
|
+ this.cardList[1].data.series[0].data = parseFloat((workFinishData.length / this.workData.length)
|
|
|
+ .toFixed(2))
|
|
|
+ }
|
|
|
+ if (this.swapData.length != 0) {
|
|
|
+ let swapFinishData = this.swapData.filter(x => x.vote && x.vote.progress === 'finish')
|
|
|
+ swapFinishData.push(...this.swapData.filter(x => x.survey && x.survey.progress === 'finish'))
|
|
|
+ this.cardList[2].data.series[0].data = parseFloat((swapFinishData.length / this.swapData.length)
|
|
|
+ .toFixed(2))
|
|
|
+ }
|
|
|
+ //完成率传入图表
|
|
|
for (let i = 0; i < 3; i++) {
|
|
|
- let opt = {
|
|
|
- title: {
|
|
|
- name: this.cardList[i].data.series[0].data * 100 + '%',
|
|
|
- color: this.cardList[i].data.series[0].color
|
|
|
- },
|
|
|
- subtitle: {
|
|
|
- name: this.cardList[i].data.series[0].name
|
|
|
- },
|
|
|
+ if (typeof(this.cardList[i].data.series[0].data) === typeof(0)) {
|
|
|
+ let opt = {
|
|
|
+ title: {
|
|
|
+ name: (this.cardList[i].data.series[0].data * 100).toFixed(0) + '%',
|
|
|
+ color: this.cardList[i].data.series[0].color
|
|
|
+ },
|
|
|
+ subtitle: {
|
|
|
+ name: this.cardList[i].data.series[0].name
|
|
|
+ },
|
|
|
+ }
|
|
|
+ this.cardList[i].chartOpts = JSON.parse(JSON.stringify(opt))
|
|
|
+ } else {
|
|
|
+ let opt = {
|
|
|
+ title: {
|
|
|
+ name: this.cardList[i].data.series[0].data,
|
|
|
+ color: this.cardList[i].data.series[0].color
|
|
|
+ },
|
|
|
+ subtitle: {
|
|
|
+ name: this.cardList[i].data.series[0].name
|
|
|
+ },
|
|
|
+ }
|
|
|
+ this.cardList[i].chartOpts = JSON.parse(JSON.stringify(opt))
|
|
|
}
|
|
|
- this.cardList[i].chartOpts = JSON.parse(JSON.stringify(opt))
|
|
|
}
|
|
|
},
|
|
|
//日历数据获取
|
|
|
getClockData() {
|
|
|
//获得当前时间时间戳
|
|
|
- let timeArr = (new Date()).format("yyyy-M-dd").split("-")
|
|
|
- let val = this.clockData.filter(x => x.year == timeArr[0] && x.month == timeArr[1] && x.date == timeArr[2])
|
|
|
- if (val.length != 0) {
|
|
|
- this.clockState = '已打卡'
|
|
|
- this.clockTime = val[0].time
|
|
|
+ let today = (new Date()).format("yyyy-M-dd")
|
|
|
+ let timeArr = today.split("-")
|
|
|
+ if (this.clockData.length != 0) {
|
|
|
+ let val = this.clockData.filter(x => x.year == timeArr[0] && x.month == timeArr[1] && x.date ==
|
|
|
+ timeArr[2])
|
|
|
+ if (val.length != 0) {
|
|
|
+ this.clockState = '已打卡'
|
|
|
+ this.clockTime = val[0].time
|
|
|
+ } else {
|
|
|
+ this.clockState = '未打卡'
|
|
|
+ this.clockTime = '无记录'
|
|
|
+ }
|
|
|
} else {
|
|
|
this.clockState = '未打卡'
|
|
|
- this.clockTime = '未记录'
|
|
|
+ this.clockTime = '无记录'
|
|
|
}
|
|
|
-
|
|
|
+ // let isWeekend = new Date(today).getDay()
|
|
|
+ // if(isWeekend === 0 || isWeekend === 6){
|
|
|
+ // this.clockState = '放假中'
|
|
|
+ // this.clockTime = '无需打卡'
|
|
|
+ // }
|
|
|
},
|
|
|
//获取滚动通知
|
|
|
getNoticeData() {
|
|
@@ -519,8 +570,13 @@
|
|
|
for (let i = 0; i < this.finishClassNum; i++) {
|
|
|
finishClassData.push(this.classList[i])
|
|
|
}
|
|
|
- let isAttendArr = finishClassData.filter(x => x.attendance === true)
|
|
|
- this.classAttendanceQuality = isAttendArr.length === this.finishClassNum ? '全勤' : '缺勤'
|
|
|
+ if (finishClassData.length != 0) {
|
|
|
+ let isAttendArr = finishClassData.filter(x => x.attendance === true)
|
|
|
+ this.classAttendanceQuality = isAttendArr.length === this.finishClassNum ? '全勤' : '缺勤'
|
|
|
+ }
|
|
|
+ // else{
|
|
|
+ // this.classAttendanceQuality = '假期'
|
|
|
+ // }
|
|
|
},
|
|
|
//导航
|
|
|
navClassDetail() {
|
|
@@ -622,9 +678,9 @@
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
margin-left: auto;
|
|
|
- border-radius: 6rpx;
|
|
|
+ border-radius: $border-radius;
|
|
|
background-color: $color-green;
|
|
|
- padding: 20rpx 10rpx;
|
|
|
+ padding: 24rpx 12rpx;
|
|
|
|
|
|
.t-icon {
|
|
|
width: 32rpx;
|