lsc 2 years ago
parent
commit
57ecc47b2f

+ 1 - 1
src/components/student/courseDetail.vue

@@ -80,7 +80,7 @@
         </div>
         <div class="student_body">
           <div class="sLeft" v-if="courseDetail.brief">
-            <div class="courseT">项目详情</div>
+            <div class="courseT">课程详情</div>
             <div class="courseTd">{{ courseDetail.brief }}</div>
           </div>
           <div :class="courseDetail.brief != '' ? 'rightTd' : 'noBRight'">

+ 96 - 93
src/components/student/studyStudent.vue

@@ -48,13 +48,13 @@
       </div>
       <div class="body_student">
         <div class="new_top" style="
-            position: fixed;
-            top: 0;
-            left: 20.7%;
-            width: 80%;
-            z-index: 999;
-            box-shadow: 0px 9px 0 0 #f2f2f2;
-          ">
+              position: fixed;
+              top: 0;
+              left: 20.7%;
+              width: 80%;
+              z-index: 999;
+              box-shadow: 0px 9px 0 0 #f2f2f2;
+            ">
           <div class="courseIndex">
             <div>第{{ courseType - 0 + 1 }}阶段</div>
             <el-tooltip effect="light" :content="chapInfoList[courseType].dyName" placement="top">
@@ -130,7 +130,7 @@
               <div class="check" style="font-size: 25px" :id="
                 chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].id
               ">
-                项目基本信息
+                课程基本信息
               </div>
             </div>
             <div class="student_head">
@@ -181,11 +181,11 @@
                 ].taskDetail != ''
               ">
                 <div style="
-                    display: flex;
-                    flex-wrap: nowrap;
-                    flex-direction: column;
-                    position: relative;
-                  ">
+                      display: flex;
+                      flex-wrap: nowrap;
+                      flex-direction: column;
+                      position: relative;
+                    ">
                   <div style="padding: 15px 10px 0;">任务描述:</div>
 
                   <div style="padding: 10px 10px 15px;word-break: break-word;line-height: 27px;" class="cont" v-html="
@@ -214,19 +214,19 @@
                     </div>
                   </div>
                   <div class="wheel" v-if="chapterlist[chapterIndex].type == 6" style="
-                      box-shadow: 0 0 6px 1px #f2f2f2;
-                      width: 95%;
-                      margin: 0 auto;
-                      background: #f1f1f1;
-                    ">
+                        box-shadow: 0 0 6px 1px #f2f2f2;
+                        width: 95%;
+                        margin: 0 auto;
+                        background: #f1f1f1;
+                      ">
                     <div class="title">查看文档</div>
                     <el-form class="textBox">
                       <el-form-item class="textTitle">
                         <div style="
-                            font-size: 22px;
-                            max-height: 100px;
-                            overflow: auto;
-                          ">
+                              font-size: 22px;
+                              max-height: 100px;
+                              overflow: auto;
+                            ">
                           {{ chapterlist[chapterIndex].name }}
                         </div>
                       </el-form-item>
@@ -235,13 +235,11 @@
                   </div>
                   <div class="wheel" v-if="chapterlist[chapterIndex].type == 3"
                     style="height: 650px; width: 95%; margin: 0 auto">
-                    <iframe style="width: 100%; height: 100%; border: none"
-                      :src="chapterlist[chapterIndex].src"></iframe>
+                    <iframe style="width: 100%; height: 100%; border: none" :src="chapterlist[chapterIndex].src"></iframe>
                   </div>
                   <div class="wheel" v-if="chapterlist[chapterIndex].type == 8"
                     style="height: 650px; width: 95%; margin: 0 auto">
-                    <iframe style="width: 100%; height: 100%; border: none"
-                      :src="chapterlist[chapterIndex].src"></iframe>
+                    <iframe style="width: 100%; height: 100%; border: none" :src="chapterlist[chapterIndex].src"></iframe>
                   </div>
                   <div class="wheel" v-if="chapterlist[chapterIndex].type == 9"
                     style="height: 650px; width: 95%; margin: 0 auto">
@@ -291,15 +289,15 @@
                 .toolArray.length
             ">
               <div class="queTop" style="
-                  font-size: 25px;
-                  padding: 15px 0 15px 30px;
-                  font-weight: bold;
-                ">
-                项目方案
+                    font-size: 25px;
+                    padding: 15px 0 15px 30px;
+                    font-weight: bold;
+                  ">
+                课程方案
               </div>
               <div class="toolHeng2" style="position: relative">
                 <div class="filebox" style="flex-wrap: nowrap; margin: 0 20px" v-for="(tool, toolIndex) in chapInfoList[courseType]
-                .chapterInfo[0].taskJson[taskCount].toolArray" :key="toolIndex">
+                  .chapterInfo[0].taskJson[taskCount].toolArray" :key="toolIndex">
                   <div class="bzBox">
                     <div></div>
                     <div>步骤{{ toolIndex + 1 }}</div>
@@ -469,7 +467,6 @@
                     <div class="tooldetail" v-if="tool.toolDetail != ''">
                       <!-- <div class="toolTitle">工具描述</div> -->
                       <div v-html="contentConvent(tool.toolDetail)">
-                        <!-- {{ contentConvent(tool.toolDetail) }} -->
                       </div>
                     </div>
                   </div>
@@ -485,8 +482,7 @@
                           <img v-if="photo.type == 4" :src="word" @click="openFile(photo.content)">
                           <img v-if="photo.type == 5" :src="video" @click="openVideo(photo.content)">
                           <img v-if="photo.type == 12" :src="word" @click="openText(photo.content)">
-                          <img v-if="photo.type == 14" :src="word"
-                            @click="openAsk(photo.content, taskCount, toolIndex)">
+                          <img v-if="photo.type == 14" :src="word" @click="openAsk(photo.content, taskCount, toolIndex)">
                           <img v-if="photo.type == 13" :src="zip" @click="downloadFile(photo.content)">
                           <div class="answerBg" v-if="photo.type == 3">
                             <!-- <div>{{ w.sName }}</div> -->
@@ -524,19 +520,19 @@
                           </div>
                         </div>
                         <div class="wheel" v-if="tool.toolData[tool.sourceIndex].type == 6" style="
-                      box-shadow: 0 0 6px 1px #f2f2f2;
-                      width: 98%;
-                      background: #f1f1f1;
-                      height: 650px;
-                    ">
+                        box-shadow: 0 0 6px 1px #f2f2f2;
+                        width: 98%;
+                        background: #f1f1f1;
+                        height: 650px;
+                      ">
                           <div class="title">查看文档</div>
                           <el-form class="textBox">
                             <el-form-item class="textTitle">
                               <div style="
-                            font-size: 22px;
-                            max-height: 100px;
-                            overflow: auto;
-                          ">
+                              font-size: 22px;
+                              max-height: 100px;
+                              overflow: auto;
+                            ">
                                 {{ tool.toolData[tool.sourceIndex].name }}
                               </div>
                             </el-form-item>
@@ -622,8 +618,8 @@
               <div>
                 {{
                   pz.username.length > 5
-                    ? pz.username.substring(0, 5) + "..."
-                    : pz.username
+                  ? pz.username.substring(0, 5) + "..."
+                  : pz.username
                 }}的批注
               </div>
               <div class="pzDelete" v-if="pz.userid == userid" @click="deletePz(pz.id)">
@@ -631,7 +627,6 @@
               </div>
             </div>
             <div class="pzContent cont" v-html="pz.content" v-if="pz.type == '1'">
-              <!-- {{ }} -->
             </div>
             <div class="pzContent" v-if="pz.type == '2'">
               <audio :src="pz.content" controls="controls" ref="audio">
@@ -639,8 +634,7 @@
               </audio>
             </div>
             <div class="pzContent" v-if="pz.type == '3'">
-              <img :src="pz.content" style="width: 90%; margin: 0 auto; display: block"
-                @click="previewImg(pz.content)" />
+              <img :src="pz.content" style="width: 90%; margin: 0 auto; display: block" @click="previewImg(pz.content)" />
             </div>
             <div class="time">
               {{ pz.time }}
@@ -695,12 +689,12 @@
       <div slot="title" class="header-title">
         <div style="color: #fff">查看文档</div>
         <div @click="fullDialogVisible = false" style="
-            cursor: pointer;
-            position: absolute;
-            top: 20px;
-            right: 20px;
-            color: #fff;
-          ">
+              cursor: pointer;
+              position: absolute;
+              top: 20px;
+              right: 20px;
+              color: #fff;
+            ">
           退出全屏
         </div>
       </div>
@@ -708,10 +702,10 @@
         <iframe v-if="fulltype == 3" style="width: 100%; height: 100%; border: none" :src="fullUrl"></iframe>
         <pdf v-else-if="fulltype == 9" :pdfUrl="fullUrl" style="width: 100%; height: 100%; overflow: auto"></pdf>
         <div class="wheel" v-if="fulltype == 6" style="
-            box-shadow: 0 0 6px 1px #f2f2f2;
-            width: 100%;
-            background: #f1f1f1;
-          ">
+              box-shadow: 0 0 6px 1px #f2f2f2;
+              width: 100%;
+              background: #f1f1f1;
+            ">
           <div class="title" style="width: 100%; box-sizing: border-box">
             查看文档
           </div>
@@ -760,8 +754,8 @@
         <el-button @click="dialogVisibleText2 = false">关 闭</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="查看视频" :visible.sync="videoVisible" :append-to-body="true" width="1000px"
-      :before-close="handleClose" class="dialog_diy1">
+    <el-dialog title="查看视频" :visible.sync="videoVisible" :append-to-body="true" width="1000px" :before-close="handleClose"
+      class="dialog_diy1">
       <div class="workd_media" style="height: 100%" v-if="videoDetail.sources">
         <video-player class="video-player vjs-custom-skin" :playsinline="true" :options="videoDetail"
           @play="onPlayerPlay($event)" style="width: 100%; height: 100%"></video-player>
@@ -775,11 +769,11 @@
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div>
         <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
+              display: flex;
+              flex-direction: row;
+              align-items: center;
+              justify-content: center;
+            ">
           <div style="margin-right: 20px; font-size: 20px">投票标题:</div>
           <div style="font-size: 20px">{{ askJson.askTitle }}</div>
         </div>
@@ -798,7 +792,7 @@
               <div class="a_add_input">
                 <el-radio-group v-model="radio[index1]">
                   <el-radio v-for="(item2, checkIndex) in askJson.askJson[index1]
-                  .checkList" :key="checkIndex" :label="checkIndex" :disabled="true" class="redioStyle"><span
+                    .checkList" :key="checkIndex" :label="checkIndex" :disabled="true" class="redioStyle"><span
                       v-html="item2"></span></el-radio>
                 </el-radio-group>
               </div>
@@ -1527,6 +1521,7 @@ export default {
                 for (var z = 0; z < tool.length; z++) {
                   let _tool = tool[z]
                   _tool.toolPhoto = [];
+                  _tool.people = [];
                   this.checkJson[z] = [];
                   let checkPeople = 0
                   for (var k = 0; k < works.length; k++) {
@@ -1540,10 +1535,6 @@ export default {
                         _work.workContent = `(${_work.username})使用(协同文档)提交了:`
                       } else if (_tool.tool == 15) {
                         _work.workContent = `(${_work.username})使用(问答工具)提交了:`
-                      } else if (_tool.tool == 48) {
-                        _work.workContent = `(${_work.username})使用(表格)提交了:`
-                      } else if (_tool.tool == 52) {
-                        _work.workContent = `(${_work.username})使用(文档)提交了:`
                       } else if (_tool.tool == 53) {
                         _work.workContent = `(${_work.username})使用(文件上传)提交了:`
                       } else if (_tool.tool == 54) {
@@ -1586,11 +1577,19 @@ export default {
 
                       if (_tool.tool == 48 || _tool.tool == 52) {
                         _tool.toolPhoto[0] = _work
+                        if (_tool.people.indexOf(_work.username) == -1) {
+                          _tool.people.push(_work.username);
+                        }
                       } else {
                         _tool.toolPhoto.push(_work);
                       }
                     }
                   }
+                  if (_tool.tool == 48) {
+                    _tool.toolPhoto[0].workContent = `(${_tool.people.join(',')})使用(表格)提交了:`
+                  } else if (_tool.tool == 52) {
+                    _tool.toolPhoto[0].workContent = `(${_tool.people.join(',')})使用(文档)提交了:`
+                  }
 
                   for (var kz = 0; kz < this.checkJson[z].length; kz++) {
                     this.checkJson[z][kz].checkPerent = [];
@@ -1635,6 +1634,7 @@ export default {
                 for (var z = 0; z < tool.length; z++) {
                   let _tool = tool[z]
                   _tool.toolPhoto = []
+                  _tool.people = []
                   this.checkJson[z] = []
                   let checkPeople = 0
                   for (var k = 0; k < works.length; k++) {
@@ -1648,10 +1648,6 @@ export default {
                         _work.workContent = `(${_work.username})使用(协同文档)提交了:`
                       } else if (_tool.tool == 15) {
                         _work.workContent = `(${_work.username})使用(问答工具)提交了:`
-                      } else if (_tool.tool == 48) {
-                        _work.workContent = `(${_work.username})使用(表格)提交了:`
-                      } else if (_tool.tool == 52) {
-                        _work.workContent = `(${_work.username})使用(文档)提交了:`
                       } else if (_tool.tool == 53) {
                         _work.workContent = `(${_work.username})使用(文件上传)提交了:`
                       } else if (_tool.tool == 54) {
@@ -1696,28 +1692,35 @@ export default {
 
                       if (_tool.tool == 48 || _tool.tool == 52) {
                         _tool.toolPhoto[0] = _work
+                        if (_tool.people.indexOf(_work.username) == -1) {
+                          _tool.people.push(_work.username);
+                        }
                       } else {
                         _tool.toolPhoto.push(_work);
                       }
                     }
-
-                    for (var kz = 0; kz < this.checkJson[z].length; kz++) {
-                      this.checkJson[z][kz].checkPerent = [];
-                      let aaaa = this.checkJson[z][kz];
-                      console.log(aaaa);
-                      for (
-                        var kc = 0;
-                        kc < this.checkJson[z][kz].checkCount.length;
-                        kc++
-                      ) {
-                        this.checkJson[z][kz].checkPerent.push(
-                          Math.round(
-                            (this.checkJson[z][kz].checkCount[kc] /
-                              checkPeople) *
-                            100
-                          )
-                        );
-                      }
+                  }
+                  if (_tool.tool == 48) {
+                    _tool.toolPhoto[0].workContent = `(${_tool.people.join(',')})使用(表格)提交了:`
+                  } else if (_tool.tool == 52) {
+                    _tool.toolPhoto[0].workContent = `(${_tool.people.join(',')})使用(文档)提交了:`
+                  }
+                  for (var kz = 0; kz < this.checkJson[z].length; kz++) {
+                    this.checkJson[z][kz].checkPerent = [];
+                    let aaaa = this.checkJson[z][kz];
+                    console.log(aaaa);
+                    for (
+                      var kc = 0;
+                      kc < this.checkJson[z][kz].checkCount.length;
+                      kc++
+                    ) {
+                      this.checkJson[z][kz].checkPerent.push(
+                        Math.round(
+                          (this.checkJson[z][kz].checkCount[kc] /
+                            checkPeople) *
+                          100
+                        )
+                      );
                     }
                   }
                 }

+ 999 - 0
src/components/studentIndex.vue

@@ -0,0 +1,999 @@
+<template>
+  <div class="pb_content">
+    <div class="pb_content_body">
+      <div class="student_head">
+        <!-- <img src="../assets/banner.png" alt="" /> -->
+        <el-carousel trigger="click" style="width: 100%; height: 100%">
+          <el-carousel-item v-for="item in bannerList" :key="item.id">
+            <!-- <h3 class="small">{{ item }}</h3> -->
+            <img class="imgS" :src="item.poster" alt="" />
+          </el-carousel-item>
+        </el-carousel>
+      </div>
+      <div class="reBox">
+        <div class="reTop">
+          <div>课程</div>
+          <div>
+            <div class="search" @click="selectAll">
+              <img src="../assets/icon/search.png" alt="" />
+            </div>
+            <input
+              class="sInput"
+              type="text"
+              placeholder="请输入关键字"
+              v-model="sCourse"
+            />
+          </div>
+        </div>
+        <div class="choose">
+          <div
+            class="all_choose"
+            v-for="(item, index) in CourseType[0]"
+            :key="index"
+          >
+            <span>{{ item.name }}:</span>
+            <div class="typeCss">
+              <div
+                class="cName"
+                @click="getCourse(item.name, '', item.id, 1)"
+                :class="typeE.indexOf(item.id) != -1 ? 'isCType' : ''"
+              >
+                全部
+              </div>
+              <div
+                v-for="(item1, index1) in CourseTypeJson[item.id]"
+                :key="index + '-' + index1"
+                :label="item1.id"
+                @click="getCourse(item.name, item.id, item1.id, 2)"
+              >
+                <div
+                  class="cName"
+                  :class="
+                    typea == item1.id || typeb == item1.id || typed == item1.id || typee == item1.id || typef == item1.id
+                      ? 'isCType'
+                      : ''
+                  "
+                >
+                  {{ item1.name }}
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="body_student">
+        <!-- <div class="top">
+            <div :class="{ active: 0 == zoneListId }" @click="selectAll()">
+              所有课程
+            </div>
+            <div
+              :class="{ active: item.id == zoneListId }"
+              v-for="(item, index) in zoneList"
+              :key="index"
+              @click="checkZone(item.id)"
+            >
+              {{ item.name }}
+            </div>
+          </div> -->
+        <div>
+          <div class="main_box">
+            <div
+              class="box_course"
+              v-for="(item, index) in zoneClass"
+              :key="index"
+            >
+              <div class="wheel">
+                <img
+                  :src="
+                    item.cover
+                      ? JSON.parse(item.cover)[0].url
+                      : require('../assets/wheel.png')
+                  "
+                  alt=""
+                />
+              </div>
+              <div class="middle_white">
+                <div class="textOverflow">{{ item.title }}</div>
+                <div class="nameAndLength">
+                  <el-tooltip
+                    class="typeN"
+                    effect="light"
+                    :content="item.typename"
+                    placement="top"
+                  >
+                    <div>{{ item.typename }}</div>
+                  </el-tooltip>
+
+                  <div>{{ JSON.parse(item.chapters).length }}阶段</div>
+                </div>
+                <div class="school_box">
+                  <el-tooltip
+                    effect="light"
+                    :content="item.school"
+                    placement="top"
+                  >
+                    <div class="school">
+                      {{ item.school }}
+                    </div>
+                  </el-tooltip>
+                  <div style="color: #b4b4b4">{{ item.utime }}</div>
+                </div>
+                <!-- <div class="people">
+                  <div class="man">
+                    <img src="../assets/people.png" alt="" />
+                  </div>
+                  <div>
+                    {{
+                      item.pNum != null && item.pNum != "" ? item.pNum : "0"
+                    }}人学习
+                  </div>
+                </div> -->
+              </div>
+              <div
+                class="now_study"
+                @click="
+                  goTo(
+                    '/courseDetailS?courseId=' +
+                      item.courseId +
+                      '&userid=' +
+                      userid +
+                      '&oid=' +
+                      oid +
+                      '&org=' +
+                      org +
+                      '&cid=' +
+                      classId +
+                      '&tType=' +
+                      tType +
+                      '&screenType=' +
+                      screenType
+                  )
+                "
+              >
+                立即学习
+              </div>
+            </div>
+            <div class="course_empty" v-if="zoneClass.length == 0">
+              暂无课程
+            </div>
+          </div>
+        </div>
+        <div
+          class="student_page"
+          style="margin: 15px 0 0"
+          v-if="zoneClass.length > 0"
+        >
+          <el-pagination
+            background
+            layout="prev, pager, next"
+            :page-size="10"
+            :total="total"
+            v-if="page && zoneListId != 0"
+            @current-change="handleCurrentChange"
+          >
+          </el-pagination>
+          <el-pagination
+            background
+            layout="prev, pager, next"
+            :page-size="10"
+            :total="total"
+            v-if="page && zoneListId == 0"
+            @current-change="handleCurrentChange1"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      zoneList: [],
+      zoneClass: [],
+      page: 1,
+      total: 0,
+      isListAjax: false,
+      zoneListId: "",
+      bannerList: [],
+      userid: this.$route.query.userid,
+      oid: this.$route.query.oid,
+      classId: this.$route.query.cid,
+      tType: this.$route.query.tType,
+      org: this.$route.query.org,
+      screenType: this.$route.query.screenType,
+      CourseType: [],
+      CourseTypeJson: {},
+      courseTypeId: {},
+      sCourse: "",
+      isCType: "",
+      typea: "",
+      typeb: "",
+      typed: "",
+      typeE: [],
+      loading: "",
+    };
+  },
+  methods: {
+    goTo(path) {
+      this.$router.push(path);
+    },
+    // getZone() {
+    //   this.ajax
+    //     .get(this.$store.state.api + "getZone", "")
+    //     .then((res) => {
+    //       this.zoneList = res.data[0];
+    //       // this.zoneListId = this.zoneList[0].id;
+    //       // this.getZoneClass(this.zoneList[0].id);
+    //       this.selectAll();
+    //     })
+    //     .catch((err) => {
+    //       console.error(err);
+    //     });
+    // },
+    //获取专区下的课程
+    getZoneClass(zid) {
+      this.isListAjax = true;
+      // const loading = this.openLoading(document.querySelector(".main_box"));
+      let params = {
+        bid: zid,
+        oid: this.oid,
+        page: this.page,
+      };
+      this.ajax
+        .get(this.$store.state.api + "getZoneClassStudent", params)
+        .then((res) => {
+          // loading.close();
+          this.isListAjax = false;
+          this.zoneClass = res.data[0];
+          this.total = res.data[0].length ? res.data[0][0].num : 0;
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    getCourse(typeName, ftypeId, typeid, type) {
+      this.page = 1;
+      this.zoneClass = [];
+      if (typeName == "年级") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typea != "") {
+              this.typea = "";
+            }
+          }
+        } else {
+          if (this.typea == typeid) {
+            this.typea = "";
+          } else {
+            this.typea = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "专栏") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typeb != "") {
+              this.typeb = "";
+            }
+          }
+        } else {
+          if (this.typeb == typeid) {
+            this.typeb = "";
+          } else {
+            this.typeb = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "栏目") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typeb != "") {
+              this.typeb = "";
+            }
+          }
+        } else {
+          if (this.typeb == typeid) {
+            this.typeb = "";
+          } else {
+            this.typeb = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "主题") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typed != "") {
+              this.typed = "";
+            }
+          }
+        } else {
+          if (this.typed == typeid) {
+            this.typed = "";
+          } else {
+            this.typed = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "赛道") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typef != "") {
+              this.typef = "";
+            }
+          }
+        } else {
+          if (this.typef == typeid) {
+            this.typef = "";
+          } else {
+            this.typef = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "学院") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typeb != "") {
+              this.typeb = "";
+            }
+          }
+        } else {
+          if (this.typeb == typeid) {
+            this.typeb = "";
+          } else {
+            this.typeb = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      } else if (typeName == "学科") {
+        if (type == 1) {
+          if (this.typeE.indexOf(typeid) != -1) {
+            this.typeE.splice(this.typeE.indexOf(typeid), 1);
+          } else {
+            this.typeE.push(typeid);
+            if (this.typed != "") {
+              this.typed = "";
+            }
+          }
+        } else {
+          if (this.typed == typeid) {
+            this.typed = "";
+          } else {
+            this.typed = typeid;
+            if (this.typeE.indexOf(ftypeId) != -1) {
+              this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
+            }
+          }
+        }
+      }
+      this.loading = this.openLoading(document.querySelector(".main_box"));
+      if (!this.loading) {
+        this.loading = this.openLoading(document.querySelector(".main_box"));
+      }
+      this.selectAll();
+    },
+    selectAll() {
+      this.zoneListId = 0;
+      this.isListAjax = true;
+      // this.loading = this.openLoading(document.querySelector(".main_box"));
+      // if (!this.loading) {
+      //   this.loading = this.openLoading(document.querySelector(".main_box"));
+      // }
+      let params = {
+        type: '2',
+        uid: this.userid,
+        oid: this.oid,
+        org: this.org,
+        typea: this.typea != undefined ? this.typea : "",
+        typeb: this.typeb != undefined ? this.typeb : "",
+        typec: this.typec != undefined ? this.typec : "",
+        typed: this.typed != undefined ? this.typed : "",
+        typef: this.typef != undefined ? this.typef : "",
+        typeE: this.typeE.join(","),
+        cu: "",
+        cn: "",
+        page: this.page,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectStudentCourseNew22", params)
+        .then((res) => {
+          if (this.loading) {
+            this.loading.close();
+            this.loading = "";
+          }
+          this.isListAjax = false;
+          this.zoneClass = res.data[0];
+          this.total = res.data[0].length ? res.data[0][0].num : 0;
+
+          // this.selectType({
+          //   data: [res.data[1], res.data[2], res.data[3], res.data[4]],
+          // });
+          this.selectAllType();
+          // this.getBanner({
+          //   data: [res.data[6], res.data[5], res.data[7]],
+          // });
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    checkZone(id) {
+      this.page = 1;
+      this.zoneListId = id;
+      this.getZoneClass(id);
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.getZoneClass(this.zoneListId);
+    },
+    handleCurrentChange1(val) {
+      if (!this.loading) {
+        this.loading = this.openLoading(document.querySelector(".main_box"));
+      }
+      this.page = val;
+      this.selectAll();
+    },
+    //获取banner
+    getBanner(res) {
+      // var a = false;
+      // if (this.org == "eb2af5e9-ac3d-46b6-9fe3-3c1c364f018d") {
+      //   a = true;
+      // }
+      // let params = {
+      //   oid: this.org,
+      // };
+      // this.ajax
+      //   .get(this.$store.state.api + "selectBannerByOid", params)
+      //   .then((res) => {
+      if (res.data[0].length > 0) {
+        this.bannerList = res.data[0];
+      } else {
+        this.getBannerByOid({
+          data: [res.data[1], res.data[2]],
+        });
+      }
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+    getBannerByOid(res) {
+      // let params = {
+      //   oid: this.oid,
+      // };
+      // this.ajax
+      //   .get(this.$store.state.api + "selectBannerByOid", params)
+      //   .then((res) => {
+      if (res.data[0].length > 0) {
+        this.bannerList = res.data[0];
+      } else {
+        this.getOldBanner({
+          data: [res.data[1]],
+        });
+      }
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+    getOldBanner(res) {
+      // this.ajax
+      //   .get(this.$store.state.api + "getBanner", "")
+      //   .then((res) => {
+      this.bannerList = res.data[0];
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+    selectAllType() {
+      let params = {
+        org: this.org && this.org != "" ? this.org : "",
+        oid: this.oid && this.oid != "" ? this.oid : "",
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectStudentType", params)
+        .then((res) => {
+          this.CourseTypeJson = {};
+          this.CourseType = res.data;
+          for (var i = 0; i < res.data[0].length; i++) {
+            if (!this.cid) {
+              this.courseTypeId[res.data[0][i].id] = "";
+            }
+            if (!this.CourseTypeJson[res.data[0][i].id]) {
+              this.CourseTypeJson[res.data[0][i].id] = [];
+            }
+
+            // if (res.data[2].length == 0 && res.data[3].length == 0) {
+              for (var j = 0; j < res.data[1].length; j++) {
+                if (res.data[0][i].id == res.data[1][j].pid) {
+                  if (!this.CourseTypeJson[res.data[0][i].id]) {
+                    this.CourseTypeJson[res.data[0][i].id] = [];
+                  }
+                  this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
+                }
+              }
+            // } else {
+            //   if (res.data[2].length > 0) {
+            //     for (var j = 0; j < res.data[2].length; j++) {
+            //       if (res.data[0][i].id == res.data[2][j].pid) {
+            //         this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
+            //       }
+            //     }
+            //   }
+            //   if (res.data[3].length > 0) {
+            //     for (var j = 0; j < res.data[3].length; j++) {
+            //       if (res.data[0][i].id == res.data[3][j].pid) {
+            //         this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
+            //       }
+            //     }
+            //   }
+            // }
+          }
+          this.$forceUpdate();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    selectType(res) {
+      // this.ajax
+      //   .get(this.$store.state.api + "selectType")
+      //   .then((res) => {
+      this.CourseTypeJson = {};
+      this.CourseType = res.data;
+      for (var i = 0; i < res.data[0].length; i++) {
+        if (!this.cid) {
+          this.courseTypeId[res.data[0][i].id] = "";
+        }
+        if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
+          if (res.data[0][i].name == "栏目") {
+            this.CourseType[0][i].name = "主题";
+          }
+        }
+        for (var j = 0; j < res.data[1].length; j++) {
+          if (res.data[0][i].id == res.data[1][j].pid) {
+            if (!this.CourseTypeJson[res.data[0][i].id]) {
+              this.CourseTypeJson[res.data[0][i].id] = [];
+            }
+            this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
+          }
+        }
+      }
+      this.selectTypeByOid({ data: [res.data[0], res.data[2]] });
+      this.selectTypeByOrg({ data: [res.data[0], res.data[3]] });
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+    selectTypeByOid(res) {
+      // let params = {
+      //   oid: this.oid,
+      // };
+      // this.ajax
+      //   .get(this.$store.state.api + "selectTypeByOid", params)
+      //   .then((res) => {
+      for (var i = 0; i < res.data[0].length; i++) {
+        for (var j = 0; j < res.data[1].length; j++) {
+          if (res.data[0][i].id == res.data[1][j].pid) {
+            if (!this.CourseTypeJson[res.data[0][i].id]) {
+              this.CourseTypeJson[res.data[0][i].id] = [];
+            }
+            this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+          }
+        }
+      }
+      this.$forceUpdate();
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+    selectTypeByOrg(res) {
+      // let params = {
+      //   oid: this.org,
+      // };
+      // this.ajax
+      //   .get(this.$store.state.api + "selectTypeByOrg", params)
+      //   .then((res) => {
+      for (var i = 0; i < res.data[0].length; i++) {
+        for (var j = 0; j < res.data[1].length; j++) {
+          if (res.data[0][i].id == res.data[1][j].pid) {
+            if (!this.CourseTypeJson[res.data[0][i].id]) {
+              this.CourseTypeJson[res.data[0][i].id] = [];
+            }
+            this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+          }
+        }
+      }
+      this.$forceUpdate();
+      // })
+      // .catch((err) => {
+      //   console.error(err);
+      // });
+    },
+  },
+  beforeDestroy() {
+    clearInterval(this.timer);
+    this.timer = null;
+  },
+  created() {
+    this.loading = this.openLoading(document.querySelector(".main_box"));
+    // this.selectType();
+    this.selectAll();
+    // this.getBanner();
+    this.timer = setInterval(() => {
+      this.selectAll();
+      // this.getBanner();
+    }, 5000);
+    document.scrollingElement.scrollTop = 0;
+  },
+};
+</script>
+
+<style scoped>
+@media screen and (max-width: 1024px) {
+  .box_course {
+    margin: 0px 5px 20px 5px !important;
+  }
+}
+
+.student_head .imgS {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  object-fit: cover;
+}
+
+.top {
+  padding: 20px 30px 20px 1%;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+}
+
+.top div {
+  cursor: pointer;
+  box-sizing: border-box;
+  height: 35px;
+  line-height: 35px;
+  margin: 0 10px 0 0;
+  padding-bottom: 5px;
+  width: 80px;
+  text-align: center;
+}
+
+.top .active {
+  border-bottom: 3px solid #0e71e6;
+}
+
+.isactive {
+  border-bottom: 3px solid #0e71e6;
+}
+
+.box_fk {
+  width: 8px;
+  height: 21px;
+  background: #0e71e6;
+  margin-right: 5px;
+}
+
+.wheel {
+  width: 100%;
+  height: 140px;
+}
+
+.man {
+  width: 16px;
+  height: 16px;
+}
+
+.wheel > img,
+.man > img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
+
+.box_course {
+  display: flex;
+  flex-direction: column;
+  flex-wrap: nowrap;
+  margin: 0px 1% 20px;
+  width: 300px;
+  height: 260px;
+  /*border: 1px solid #cecece; */
+  border-radius: 10px;
+  overflow: hidden;
+  box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
+    0px 2px 1px -1px rgb(0 0 0 / 12%);
+  justify-content: space-between;
+}
+
+.middle_white {
+  font-size: 14px;
+  margin: 5px 10px;
+}
+
+.people {
+  display: flex;
+  align-items: center;
+}
+
+.people > div:nth-child(2) {
+  margin-left: 10px;
+}
+
+.now_study {
+  width: 100%;
+  height: 40px;
+  color: #fff;
+  background: #4a9eed;
+  text-align: center;
+  line-height: 40px;
+  font-size: 13px;
+  cursor: pointer;
+}
+
+.now_study:hover {
+  background: #205cc6;
+}
+
+.main_box {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  margin: 0 auto;
+}
+
+.right_bottom_flex {
+  width: 219px;
+  height: 144px;
+  margin: auto 0;
+}
+
+.right_bottom_flex > img {
+  width: 100%;
+  height: 100%;
+}
+
+.body_student {
+  margin: 10px auto;
+  width: 91.5%;
+  height: 100%;
+}
+
+.student_head {
+  width: 100%;
+  /* height: 30%; */
+}
+
+.textOverflow {
+  padding: 0 5px 0 0px;
+  width: 95%;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  font-weight: bold;
+  font-size: 16px;
+}
+
+.student_page {
+  margin-top: 10px;
+}
+
+.course_empty {
+  width: 100%;
+  height: 200px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.choose {
+  display: flex;
+  flex-direction: column;
+  flex-wrap: nowrap;
+  height: 100%;
+  justify-content: space-evenly;
+  align-items: flex-start;
+  padding: 10px 0;
+}
+
+.all_choose {
+  display: flex;
+  flex-direction: row;
+  align-items: baseline;
+  margin: 10px 0;
+  width: 100%;
+}
+
+.all_choose > span {
+  min-width: 80px;
+  display: block;
+  letter-spacing: 14px;
+}
+
+.all_choose > span:nth-child(1) {
+  font-weight: bold;
+}
+
+.all_choose >>> .el-checkbox-group {
+  display: flex;
+  flex-direction: row;
+  width: 820px;
+  flex-wrap: wrap;
+  align-content: center;
+  justify-content: flex-start;
+  align-items: center;
+  margin-top: 3px;
+}
+
+.all_choose > .el-checkbox-group >>> .el-checkbox {
+  margin-bottom: 10px;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label {
+  min-width: 80px;
+  overflow: hidden;
+  width: 80px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label:hover {
+  width: auto;
+}
+
+.cName {
+  cursor: pointer;
+  margin: 0 10px 10px 0;
+  color: #b9b6b9;
+  min-width: 80px;
+  width: 80px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.reBox {
+  position: relative;
+  top: -25px;
+  z-index: 999;
+  left: 5%;
+  background: #fff;
+  width: 90%;
+  border-radius: 5px;
+  padding-left: 20px;
+}
+
+.reTop {
+  padding: 20px 0 0 0;
+  border-bottom: 1px solid #eee;
+  width: 98%;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.reTop > div:nth-child(1) {
+  font-weight: bold;
+  width: 40px;
+  border-bottom: 1px solid #205cc6;
+  padding-bottom: 20px;
+  color: #205cc6;
+  font-size: 20px;
+}
+
+.reTop > div:nth-child(2) {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  border: 1px solid #ccced3;
+  width: 300px;
+  border-radius: 8px;
+  padding: 5px 0;
+  margin-bottom: 10px;
+}
+
+.search {
+  width: 20px;
+  padding: 0 5px;
+}
+
+.search > img {
+  width: 100%;
+  height: 100%;
+}
+
+.sInput {
+  border: none;
+  width: 85%;
+}
+
+.sInput:focus-visible {
+  outline: none;
+}
+
+.nameAndLength {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  justify-content: space-between;
+  margin: 5px 0;
+}
+
+.typeN {
+  width: 200px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.isCType {
+  color: #6282c2;
+}
+
+.typeCss {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-items: center;
+}
+
+.school {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  max-width: 50%;
+  box-sizing: border-box;
+}
+
+.school_box {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+</style>

+ 13 - 13
src/components/studyStudent.vue

@@ -232,16 +232,6 @@
                         : '暂无描述'
                     "
                   >
-                    <!-- <span style="color: #cbcbcb">任务描述</span> -->
-                    <!-- {{
-                        chapInfoList[courseType].chapterInfo[0].taskJson[
-                          taskCount
-                        ].taskDetail
-                          ? chapInfoList[courseType].chapterInfo[0].taskJson[
-                              taskCount
-                            ].taskDetail
-                          : "暂无描述"
-                    }}-->
                   </div>
                 </div>
               </div>
@@ -416,7 +406,7 @@
                               : ''
                           "
                         >
-                          {{ media.name }}
+                          <span v-if="media.text">{{  media.text }}-</span>{{ media.name }}
                         </div>
                       </div>
                     </div>
@@ -557,7 +547,7 @@
                             isClickNav == 'word' + fileIndex ? 'isClickNav' : ''
                           "
                         >
-                          {{ f.name }}
+                        <span v-if="f.text">{{ f.text }}-</span>{{ f.name }}
                         </div>
                       </div>
                     </div>
@@ -9634,6 +9624,7 @@ export default {
               "DAT",
               "OGG",
               "OGM",
+              "MP3"
             ];
             for (var i = 0; i < a.length; i++) {
               var c = a[i].chapterData;
@@ -10056,11 +10047,20 @@ export default {
           });
           for (var r = 0; r < w.length; r++) {
             e = w[r].task;
-            this.navList[l].task.push({
+            if(this.chapInfoList[l].easy){
+              this.navList[l].task.push({
+              taskName: q,
+              id: l + "-" + r,
+              isLook: w[r].isLook,
+            });
+            }else{
+              this.navList[l].task.push({
               taskName: e,
               id: l + "-" + r,
               isLook: w[r].isLook,
             });
+            }
+
             // this.navId = this.navId ? this.navId : l + "-" + r;
             // this.navId = l + "-" + r;
           }

+ 7 - 0
src/router/index.js

@@ -5,6 +5,7 @@ import 'element-ui/lib/theme-chalk/index.css'
 import login from '@/components/login'
 import index from '@/components/index'
 import indexGM from '@/components/GM/indexGM'
+import studentIndex from '@/components/studentIndex'
 import courseDetail from '@/components/courseDetail'
 import courseDetailS from '@/components/student/courseDetail'
 import courseDetailGM from '@/components/GM/courseDetailGM'
@@ -44,6 +45,12 @@ export default new Router({
             component: index,
             requireAuth: ''
         },
+        {
+            path: '/studentIndex',
+            name: 'studentIndex',
+            component: studentIndex,
+            requireAuth: ''
+        },
         {
             path: '/indexGM',
             name: 'indexGM',