|
|
@@ -1,74 +1,12 @@
|
|
|
<template>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8" v-for="(item, index) in list" :key="index">
|
|
|
- <div class="goods-item">
|
|
|
- <div class="goods-item-top">
|
|
|
- <img :src="backImg(item.goodsType)" alt="" />
|
|
|
- <p v-html="backLearnStatus(item)"></p>
|
|
|
- <p class="l_1" style="width: 70%">上次观看:节名称节名称</p>
|
|
|
- <p>{{ item.studyCount }}学时</p>
|
|
|
- </div>
|
|
|
- <div class="goods-item-main">
|
|
|
- <h2>{{ item.goodsName }}</h2>
|
|
|
- <div>
|
|
|
- 周期:
|
|
|
- <p>
|
|
|
- {{ $tools.timestampToTime(item.serviceStartTime) }} -
|
|
|
- {{ $tools.timestampToTime(item.serviceEndTime) }}
|
|
|
- </p>
|
|
|
- <p style="margin: 0 8px">|</p>
|
|
|
- <p>
|
|
|
- {{ item.courseNum }}课程 {{ item.secAllNum + item.examNum }}节
|
|
|
- {{ item.classHours }}学时
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- 学习进度:
|
|
|
- <p style="width: 40px">{{ progressText(item) }}</p>
|
|
|
- <el-progress
|
|
|
- style="width: 65%"
|
|
|
- :show-text="false"
|
|
|
- :stroke-width="8"
|
|
|
- :format="() => {}"
|
|
|
- :percentage="
|
|
|
- ((item.stuAllNum + item.recordNum) /
|
|
|
- (item.secAllNum + item.examNum) || 0) * 100
|
|
|
- "
|
|
|
- ></el-progress>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- 班级状态:
|
|
|
- <p>{{ backClassStatus(item) }}</p>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- 班级有效期:
|
|
|
- <p>{{ item.classStartTime }}-{{ item.classEndTime }}</p>
|
|
|
- </div>
|
|
|
- <div class="goods-item-main-tips">
|
|
|
- 温馨提示:本课程有效期至{{
|
|
|
- $tools.timestampToTime(item.validityEndTime, true, true)
|
|
|
- }},超期学时无效,为防审核异常请于{{
|
|
|
- $tools.timestampToTime(item.validityEndTime, true, true)
|
|
|
- }}
|
|
|
- 00:00:00前完成学习,当前剩余有效学习时间为200天
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="goods-item-bom">
|
|
|
- <el-button type="text" :disabled="checkCanLearn(item) != -1">{{
|
|
|
- checkCanLearn(item) == -1 ? "进入学习" : "已过期"
|
|
|
- }}</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <GoodsItem :goodsInfo="item"></GoodsItem>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
-
|
|
|
<script>
|
|
|
-const mapImg = {
|
|
|
- 1: "tag-video.png",
|
|
|
- 2: "tag-live.png",
|
|
|
- 6: "tag-bank.png",
|
|
|
-};
|
|
|
+import GoodsItem from "./GoodsItem.vue";
|
|
|
export default {
|
|
|
props: {
|
|
|
list: {
|
|
|
@@ -79,142 +17,11 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
data() {
|
|
|
- return {
|
|
|
- sysTime: this.$tools.timest(),
|
|
|
- };
|
|
|
+ return {};
|
|
|
},
|
|
|
- methods: {
|
|
|
- backLearnStatus(data) {
|
|
|
- let {
|
|
|
- stuAllNum,
|
|
|
- recordNum,
|
|
|
- secAllNum,
|
|
|
- examNum,
|
|
|
- rebuild,
|
|
|
- goodsType,
|
|
|
- liveStatus,
|
|
|
- } = data;
|
|
|
- if (goodsType == 1) {
|
|
|
- let stuNum = stuAllNum + recordNum;
|
|
|
- let type = [
|
|
|
- this.checkCanLearn(data) != -1,
|
|
|
- rebuild > 0,
|
|
|
- stuNum == 0,
|
|
|
- stuNum >= secAllNum + examNum,
|
|
|
- stuNum < secAllNum + examNum,
|
|
|
- ].findIndex((e) => e);
|
|
|
- return `<span style='font-size: 12px;color:${
|
|
|
- type == 0 || type == 3 ? "#666666" : "#3f8dfd"
|
|
|
- }'>${["已过期", "待重修", "未学习", "已学习", "学习中"][type]}</span>`;
|
|
|
- } else {
|
|
|
- // this.sysTime>validityEndTime
|
|
|
- // liveStatus
|
|
|
- return `<span style='font-size: 12px;color:${
|
|
|
- true ? "#666666" : "#FA8C16"
|
|
|
- }'>${["已过期", "待重修", "未学习", "已学习", "学习中"][type]}</span>`;
|
|
|
- }
|
|
|
- },
|
|
|
- checkCanLearn(data) {
|
|
|
- let time = this.sysTime;
|
|
|
- let {
|
|
|
- interfaceAccountId,
|
|
|
- serviceStartTime,
|
|
|
- serviceEndTime,
|
|
|
- classStartTime,
|
|
|
- classEndTime,
|
|
|
- classStatus,
|
|
|
- learningStatus,
|
|
|
- learningTimeStart,
|
|
|
- } = data;
|
|
|
- return [
|
|
|
- interfaceAccountId > 0,
|
|
|
- time <= serviceStartTime || time >= serviceEndTime,
|
|
|
- (classStartTime && time <= classStartTime) ||
|
|
|
- (classEndTime && time >= classEndTime),
|
|
|
- learningStatus == 2,
|
|
|
- classStatus == 0,
|
|
|
- learningStatus == 3 && time < learningTimeStart,
|
|
|
- ].findIndex((e) => e);
|
|
|
- },
|
|
|
- progressText(item) {
|
|
|
- return (
|
|
|
- item.stuAllNum + item.recordNum + "/" + (item.secAllNum + item.examNum)
|
|
|
- );
|
|
|
- },
|
|
|
- backClassStatus({ classStartTime, classEndTime, classStatus }) {
|
|
|
- let time = this.sysTime;
|
|
|
- if (
|
|
|
- (classStartTime && time <= classStartTime) ||
|
|
|
- (classEndTime && time >= classEndTime)
|
|
|
- ) {
|
|
|
- return "已过期";
|
|
|
- }
|
|
|
- return ["未开班", "已开班"][classStatus] || "-";
|
|
|
- },
|
|
|
- backImg(type) {
|
|
|
- return require("@/assets/" + mapImg[type]);
|
|
|
- },
|
|
|
+ components: {
|
|
|
+ GoodsItem,
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
-
|
|
|
-<style scoped lang="scss">
|
|
|
-.goods-item {
|
|
|
- border: 1px solid #ebebeb;
|
|
|
- border-radius: 4px;
|
|
|
- margin-bottom: 18px;
|
|
|
- .goods-item-top {
|
|
|
- background: #f7f9fa;
|
|
|
- height: 40px;
|
|
|
- border-radius: 4px;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- padding-left: 16px;
|
|
|
- font-size: 12px;
|
|
|
- p {
|
|
|
- line-height: 12px;
|
|
|
- font-size: 12px;
|
|
|
- color: #999999;
|
|
|
- &:nth-of-type(1) {
|
|
|
- color: #3f8dfd;
|
|
|
- margin: 0 10px 0 4px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .goods-item-main {
|
|
|
- padding: 0 16px;
|
|
|
- h2 {
|
|
|
- margin: 10px 0;
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 500;
|
|
|
- color: #222222;
|
|
|
- }
|
|
|
- div {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- color: #99a0a7;
|
|
|
- font-size: 12px;
|
|
|
- p {
|
|
|
- line-height: 28px;
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
- }
|
|
|
- .goods-item-main-tips {
|
|
|
- background: #fffaf2;
|
|
|
- padding: 10px;
|
|
|
- color: #494339;
|
|
|
- margin: 8px 0 24px;
|
|
|
- }
|
|
|
- }
|
|
|
- .goods-item-bom {
|
|
|
- height: 44px;
|
|
|
- border-top: 1px solid #ebebeb;
|
|
|
- .el-button {
|
|
|
- width: 100%;
|
|
|
- &:not([disabled="disabled"]) {
|
|
|
- color: #666666;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</style>
|
|
|
+
|