瀏覽代碼

Merge branch 'beta' into HK

lsc 2 年之前
父節點
當前提交
0896fd02ce

+ 4 - 0
dist/index.html

@@ -18,10 +18,14 @@
       border-radius: 10px;
       -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
       background-color: rgba(0, 0, 0, 0.1);
+<<<<<<< HEAD
 <<<<<<< HEAD
     }</style><link href=./static/css/app.fdc715d6a472a6fb9f9739782f316e92.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.e272a0df0fb3ce5b6fea.js></script><script type=text/javascript src=./static/js/app.6ce63202945bed04a56b.js></script></body></html><script>function stopSafari() {
 =======
     }</style><link href=./static/css/app.09e69a2306a7898ea33b441dbdaffd84.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.e81042531bab735dba9a.js></script><script type=text/javascript src=./static/js/app.99d7412b421aaa12f6f9.js></script></body></html><script>function stopSafari() {
+>>>>>>> beta
+=======
+    }</style><link href=./static/css/app.f41fc8f312c2bf035c8d4f4c5d6b1dea.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.e81042531bab735dba9a.js></script><script type=text/javascript src=./static/js/app.4135340ca8fd42a19589.js></script></body></html><script>function stopSafari() {
 >>>>>>> beta
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间

文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.09e69a2306a7898ea33b441dbdaffd84.css.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.f41fc8f312c2bf035c8d4f4c5d6b1dea.css


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.f41fc8f312c2bf035c8d4f4c5d6b1dea.css.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.4135340ca8fd42a19589.js


文件差異過大導致無法顯示
+ 1 - 0
dist/static/js/app.4135340ca8fd42a19589.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.99d7412b421aaa12f6f9.js


文件差異過大導致無法顯示
+ 1 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 78 - 88
src/components/easy2/studyStudent.vue

@@ -2,7 +2,13 @@
   <div class="pb_content" style="overflow: unset">
     <div
       class="pb_content_body"
-      style="display: flex; height: 900px; position: relative;padding: 20px 0 20px 20px;box-sizing: border-box;"
+      style="
+        display: flex;
+        height: 900px;
+        position: relative;
+        padding: 20px 0 20px 20px;
+        box-sizing: border-box;
+      "
     >
       <div class="btnAllNT">
         <!-- <img src="../../assets/icon/learn/screen.png" @click="allScrell" /> -->
@@ -51,14 +57,10 @@
       <div class="pb_left" v-else>
         <!-- <div class="courseTitle">{{ courseDetail.title }}</div> -->
         <div
-          style="
-            border-bottom: 1px solid #cad1dc;
-            padding: 13px 0;
-            width: 100%;
-          "
+          style="border-bottom: 1px solid #cad1dc; padding: 13px 0; width: 100%"
         >
           <div class="courseTitle">
-            <div style="max-width: 285px">
+            <div style="max-width: calc(100% - 40px); width: auto">
               <div class="ctitle">{{ courseDetail.title }}</div>
             </div>
             <el-tooltip effect="light" content="收缩" placement="top">
@@ -69,10 +71,7 @@
           </div>
         </div>
         <div class="cru_selectBox">
-          <div
-            v-for="(item, stageIndex) in navList"
-            :key="stageIndex"
-          >
+          <div v-for="(item, stageIndex) in navList" :key="stageIndex">
             <div class="stageChild" :class="{ navActive: item.isOpen }">
               <div v-for="(nav, navIndex) in item.task" :key="navIndex">
                 <div
@@ -128,8 +127,8 @@
             width: 77%;
             z-index: 999;
             border-radius: 12px 12px 0 0;
-            border-bottom: 1px solid #CAD1DC;
-    padding: 10px 0;
+            border-bottom: 1px solid #cad1dc;
+            padding: 10px 0;
           "
           :class="{ navLeftCss: !mlDialog }"
         >
@@ -378,10 +377,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -433,10 +429,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -448,10 +441,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -466,10 +456,7 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -488,7 +475,7 @@
                             :key="vindex + '1'"
                           >
                             <div class="navListItem" v-if="vitem.type == 12">
-                              <div class="navText" style="color:#ACB4BF">
+                              <div class="navText" style="color: #acb4bf">
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
@@ -509,7 +496,7 @@
                   </div>
                 </div>
               </div>
-              <div style="width: 78.5%">
+              <div style="width: calc(100% - 315px)">
                 <div
                   style="padding: 10px 0 0; width: 95%; margin: 0 auto"
                   v-if="showType == 2 || showType == 3"
@@ -555,7 +542,7 @@
             </div>
           </div>
 
-          <div class="student_body" v-resize="resize">
+          <div class="student_body" v-resize="resize" :style="{borderRadius:(vChapterData[taskCount].length == 0 && fileC[taskCount].length == 0) ? '0 0 20px 20px' : '20px'}">
             <div
               class="taskBox"
               v-if="
@@ -572,7 +559,11 @@
                 "
               >
                 <div
-                  style="padding: 20px 0px 15px 0; line-height: 29px; font-size: 18px"
+                  style="
+                    padding: 20px 0px 15px 0;
+                    line-height: 29px;
+                    font-size: 18px;
+                  "
                   class="cont"
                   v-if="
                     chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
@@ -16925,40 +16916,50 @@ export default {
         });
     },
     downloadFile2(f) {
-      let url = f.url;
-      let _this = this;
-      let _url = "";
+      const loading = this.$loading.service({
+        background: "rgba(255, 255, 255, 0.7)",
+        target: document.body,
+        text: "文件加载中...",
+      });
+      let url2 = f.url;
+      let _url2 = "";
       if (
-        url.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
+        url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
       ) {
-        _url = url.split(
+        _url2 = url2.split(
           "https://view.officeapps.live.com/op/view.aspx?src="
         )[1];
       } else {
-        _url = url;
+        _url2 = url2;
       }
-      const x = new XMLHttpRequest();
-      x.open("GET", _url, true);
-      x.responseType = "blob";
-      const loading = _this.$loading.service({
-        background: "rgba(255, 255, 255, 0.7)",
-        target: document.body,
-        text: "文件加载中...",
-      });
-      // _this.$message.success("文件下载中...");
-      x.onload = function (e) {
-        loading.close();
-        let content = x.response;
-        let elink = document.createElement("a");
-        elink.download = f.name;
-        elink.style.display = "none";
-        let blob = new Blob([content]);
-        elink.href = URL.createObjectURL(blob);
-        document.body.appendChild(elink);
-        elink.click();
-        document.body.removeChild(elink);
+      let params = {
+        url: _url2,
+        name: f.name,
       };
-      x.send();
+      this.ajax
+        .get(this.$store.state.api + "download", params)
+        .then((res) => {
+          console.log(res);
+          loading.close();
+          let content = res.data.data.data;
+          let ab = new ArrayBuffer(content.length);
+          let view = new Uint8Array(ab);
+          for (var i = 0; i < content.length; ++i) {
+            view[i] = content[i];
+          }
+          let elink = document.createElement("a");
+          elink.download = f.name;
+          elink.style.display = "none";
+          let blob = new Blob([ab], { type: res.data.response.headers['content-type']+';charset=UTF-8'});
+          elink.href = URL.createObjectURL(blob);
+          document.body.appendChild(elink);
+          elink.click();
+          document.body.removeChild(elink);
+        })
+        .catch((err) => {
+          loading.close();
+          console.error(err);
+        });
     },
     downloadFile(url) {
       let _this = this;
@@ -18483,14 +18484,14 @@ export default {
   position: relative;
 }
 
-.new_top::before{
-  content: '';
+.new_top::before {
+  content: "";
   width: 100%;
-    height: 20px;
-    position: absolute;
-    top: -20px;
-    display: block;
-    background: #f2f2f2;
+  height: 20px;
+  position: absolute;
+  top: -20px;
+  display: block;
+  background: #f2f2f2;
 }
 
 .before {
@@ -18508,8 +18509,7 @@ export default {
 }
 
 .courseIndex > div:nth-child(1) {
-  margin: 0 0 0 20px;
-  padding-left: 5px;
+  margin: 0 0 0 10px;
   font-size: 24px;
   min-width: 100px;
   font-weight: bold;
@@ -18558,7 +18558,7 @@ export default {
   height: 445px;
   border-radius: 10px;
   overflow: hidden;
-  box-shadow: 0px 0px 12px 1px rgba(0,0,0,0.16);
+  box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
 }
 
 .vedioNav {
@@ -18864,7 +18864,7 @@ export default {
 
 .toolHeng2 {
   width: 100%;
-  box-sizing:border-box;
+  box-sizing: border-box;
 }
 
 .toolHeng {
@@ -18940,7 +18940,7 @@ export default {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
-  width: 175px;
+  width: 220px;
   padding: 0 10px;
   font-weight: 400;
   color: #0e1e33;
@@ -19120,7 +19120,7 @@ export default {
 }
 
 .toolBox {
-  padding: 20px 60px 15px;
+  padding: 30px 60px 15px;
   display: flex;
   position: relative;
 }
@@ -20185,7 +20185,7 @@ export default {
   /* background-image: -webkit-linear-gradient(left, #72aaf4, #4d81d5); */
   cursor: pointer;
   z-index: 999;
-  right: 0;
+  right: 20px;
   top: 110px;
   width: 50px;
   height: 50px;
@@ -20212,9 +20212,9 @@ export default {
   border-radius: 15px;
   z-index: 999; */
   position: fixed;
-  right: 0;
+  right: 20px;
   top: 101px;
-  width: 340px;
+  width: 330px;
   height: calc(100% - 80px);
   z-index: 999;
   background: #fff;
@@ -21232,6 +21232,7 @@ ol {
 
 .mlImg {
   width: 25px !important;
+  min-width: 25px;
   cursor: pointer;
   margin-top: 5px;
 }
@@ -21402,17 +21403,6 @@ ol {
   cursor: pointer;
 }
 
-.closeTri {
-  width: 20px;
-  height: 20px;
-  padding-left: 15px;
-}
-
-.closeTri > img {
-  width: 100%;
-  height: 100%;
-}
-
 .stageChild {
   height: 0;
   overflow: hidden;
@@ -21457,7 +21447,7 @@ ol {
 }
 
 .navListItem {
-  width: 220px;
+  width: 280px;
   height: 50px;
   margin: 0px auto 10px;
   display: flex;

+ 84 - 101
src/components/easy3/studyStudent.vue

@@ -2,7 +2,13 @@
   <div class="pb_content" style="overflow: unset">
     <div
       class="pb_content_body"
-      style="display: flex; height: 900px; position: relative;padding: 20px 0 20px 20px;box-sizing: border-box;"
+      style="
+        display: flex;
+        height: 900px;
+        position: relative;
+        padding: 20px 0 20px 20px;
+        box-sizing: border-box;
+      "
     >
       <div class="btnAllNT">
         <!-- <img src="../../assets/icon/learn/screen.png" @click="allScrell" /> -->
@@ -51,14 +57,10 @@
       <div class="pb_left" v-else>
         <!-- <div class="courseTitle">{{ courseDetail.title }}</div> -->
         <div
-          style="
-            border-bottom: 1px solid #cad1dc;
-            padding: 13px 0;
-            width: 100%;
-          "
+          style="border-bottom: 1px solid #cad1dc; padding: 13px 0; width: 100%"
         >
           <div class="courseTitle">
-            <div style="max-width: 295px">
+            <div style="max-width: calc(100% - 40px); width: auto">
               <div class="ctitle">{{ courseDetail.title }}</div>
             </div>
             <el-tooltip effect="light" content="收缩" placement="top">
@@ -69,10 +71,7 @@
           </div>
         </div>
         <div class="cru_selectBox">
-          <div
-            v-for="(item, stageIndex) in navList"
-            :key="stageIndex"
-          >
+          <div v-for="(item, stageIndex) in navList" :key="stageIndex">
             <div class="stageChild" :class="{ navActive: item.isOpen }">
               <div v-for="(nav, navIndex) in item.task" :key="navIndex">
                 <div
@@ -128,8 +127,8 @@
             width: 77%;
             z-index: 999;
             border-radius: 12px 12px 0 0;
-            border-bottom: 1px solid #CAD1DC;
-    padding: 10px 0;
+            border-bottom: 1px solid #cad1dc;
+            padding: 10px 0;
           "
           :class="{ navLeftCss: !mlDialog }"
         >
@@ -367,10 +366,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -385,10 +381,7 @@
                             >
                               {{ vitem.name }}.doc
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -403,10 +396,7 @@
                             >
                               {{ vitem.title ? vitem.title : vitem.url }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -422,10 +412,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -437,10 +424,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -455,10 +439,7 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
@@ -474,7 +455,7 @@
                             :key="vindex + '1'"
                           >
                             <div class="navListItem" v-if="vitem.type == 12">
-                              <div class="navText" style="color:#ACB4BF">
+                              <div class="navText" style="color: #acb4bf">
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
@@ -495,7 +476,7 @@
                   </div>
                 </div>
               </div>
-              <div style="width: 78.5%">
+              <div style="width: calc(100% - 315px)">
                 <div
                   style="padding: 10px 0 0; width: 95%; margin: 0 auto"
                   v-if="showType == 2 || showType == 3"
@@ -541,12 +522,14 @@
             </div>
           </div>
 
-          <div class="student_body" v-resize="resize">
-            <div class="taskBox" v-if="
-                      chapInfoList[courseType].chapterInfo[0].taskJson[
-                        taskCount
-                      ].taskDetail != ''
-                    ">
+          <div class="student_body" v-resize="resize" :style="{borderRadius:(vChapterData[0].length == 0 && fileC[0].length == 0) ? '0 0 20px 20px' : '20px'}">
+            <div
+              class="taskBox"
+              v-if="
+                chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                  .taskDetail != ''
+              "
+            >
               <div
                 style="
                   display: flex;
@@ -16789,40 +16772,50 @@ export default {
         });
     },
     downloadFile2(f) {
-      let url = f.url;
-      let _this = this;
-      let _url = "";
+      const loading = this.$loading.service({
+        background: "rgba(255, 255, 255, 0.7)",
+        target: document.body,
+        text: "文件加载中...",
+      });
+      let url2 = f.url;
+      let _url2 = "";
       if (
-        url.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
+        url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
       ) {
-        _url = url.split(
+        _url2 = url2.split(
           "https://view.officeapps.live.com/op/view.aspx?src="
         )[1];
       } else {
-        _url = url;
+        _url2 = url2;
       }
-      const x = new XMLHttpRequest();
-      x.open("GET", _url, true);
-      x.responseType = "blob";
-      const loading = _this.$loading.service({
-        background: "rgba(255, 255, 255, 0.7)",
-        target: document.body,
-        text: "文件加载中...",
-      });
-      // _this.$message.success("文件下载中...");
-      x.onload = function (e) {
-        loading.close();
-        let content = x.response;
-        let elink = document.createElement("a");
-        elink.download = f.name;
-        elink.style.display = "none";
-        let blob = new Blob([content]);
-        elink.href = URL.createObjectURL(blob);
-        document.body.appendChild(elink);
-        elink.click();
-        document.body.removeChild(elink);
+      let params = {
+        url: _url2,
+        name: f.name,
       };
-      x.send();
+      this.ajax
+        .get(this.$store.state.api + "download", params)
+        .then((res) => {
+          console.log(res);
+          loading.close();
+          let content = res.data.data.data;
+          let ab = new ArrayBuffer(content.length);
+          let view = new Uint8Array(ab);
+          for (var i = 0; i < content.length; ++i) {
+            view[i] = content[i];
+          }
+          let elink = document.createElement("a");
+          elink.download = f.name;
+          elink.style.display = "none";
+          let blob = new Blob([ab], { type: res.data.response.headers['content-type']+';charset=UTF-8'});
+          elink.href = URL.createObjectURL(blob);
+          document.body.appendChild(elink);
+          elink.click();
+          document.body.removeChild(elink);
+        })
+        .catch((err) => {
+          loading.close();
+          console.error(err);
+        });
     },
     downloadFile(url) {
       let _this = this;
@@ -17690,7 +17683,7 @@ export default {
   position: fixed;
   height: calc(100% - 40px);
   border-radius: 20px;
-    padding-bottom: 15px;
+  padding-bottom: 15px;
   box-sizing: border-box;
 }
 
@@ -17807,7 +17800,7 @@ export default {
 }
 
 .study_top {
-  margin-top: 80px;
+  margin-top: 100px;
   width: 100%;
   /* overflow: auto; */
   height: auto;
@@ -18347,14 +18340,14 @@ export default {
   position: relative;
 }
 
-.new_top::before{
-  content: '';
+.new_top::before {
+  content: "";
   width: 100%;
-    height: 20px;
-    position: absolute;
-    top: -20px;
-    display: block;
-    background: #f2f2f2;
+  height: 20px;
+  position: absolute;
+  top: -20px;
+  display: block;
+  background: #f2f2f2;
 }
 
 .before {
@@ -18372,8 +18365,7 @@ export default {
 }
 
 .courseIndex > div:nth-child(1) {
-  margin: 0 0 0 20px;
-  padding-left: 5px;
+  margin: 0 0 0 10px;
   font-size: 24px;
   min-width: 100px;
   font-weight: bold;
@@ -18422,7 +18414,7 @@ export default {
   height: 445px;
   border-radius: 10px;
   overflow: hidden;
-  box-shadow: 0px 0px 12px 1px rgba(0,0,0,0.16);
+  box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
 }
 
 .vedioNav {
@@ -18723,7 +18715,7 @@ export default {
 
 .toolHeng2 {
   width: 100%;
-  box-sizing:border-box;
+  box-sizing: border-box;
 }
 
 .toolHeng {
@@ -18799,7 +18791,7 @@ export default {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
-  width: 175px;
+  width: 220px;
   padding: 0 10px;
   font-weight: 400;
   color: #0e1e33;
@@ -18979,7 +18971,7 @@ export default {
 }
 
 .toolBox {
-  padding: 20px 60px 15px;
+  padding: 30px 60px 15px;
   display: flex;
   position: relative;
 }
@@ -20044,7 +20036,7 @@ export default {
   /* background-image: -webkit-linear-gradient(left, #72aaf4, #4d81d5); */
   cursor: pointer;
   z-index: 999;
-  right: 0;
+  right: 20px;
   top: 83px;
   width: 50px;
   height: 50px;
@@ -20071,9 +20063,9 @@ export default {
   border-radius: 15px;
   z-index: 999; */
   position: fixed;
-  right: 0;
+  right: 20px;
   top: 70px;
-  width: 340px;
+  width: 330px;
   height: calc(100% - 80px);
   z-index: 999;
   background: #fff;
@@ -21031,6 +21023,7 @@ export default {
 
 .mlImg {
   width: 25px !important;
+  min-width: 25px;
   cursor: pointer;
   margin-top: 5px;
 }
@@ -21281,16 +21274,6 @@ ol {
   font-weight: 400;
   color: #acb4bf;
 }
-.closeTri {
-  width: 20px;
-  height: 20px;
-  padding-left: 15px;
-}
-
-.closeTri > img {
-  width: 100%;
-  height: 100%;
-}
 
 .stageChild {
   height: 0;
@@ -21336,7 +21319,7 @@ ol {
 }
 
 .navListItem {
-  width: 220px;
+  width: 280px;
   height: 50px;
   margin: 0px auto 10px;
   display: flex;

+ 9 - 11
src/components/index.vue

@@ -300,7 +300,7 @@ export default {
     getCourse(typeName, ftypeId, typeid, type) {
       this.page = 1;
       this.zoneClass = [];
-      if (typeid == "34628934-d02f-11ec-8c78-005056b86db5" || ftypeId == '34628934-d02f-11ec-8c78-005056b86db5') {
+      if (typeid == "34628934-d02f-11ec-8c78-005056b86db5" || ftypeId == '34628934-d02f-11ec-8c78-005056b86db5' || typeid == "34628934-d02f-11ec-8c78-005056b86ac5" || ftypeId == "34628934-d02f-11ec-8c78-005056b86ac5") {
         if (type == 1) {
           if (this.typeE.indexOf(typeid) != -1) {
              if(this.oid == '69893dca-1d47-11ed-8c78-005056b86db5'){
@@ -435,7 +435,7 @@ export default {
             }
           }
         }
-      } else if (typeid == "34629907-d02f-11ec-8c78-005056b86db5" || ftypeId == '34629907-d02f-11ec-8c78-005056b86db5') {
+      } else if (typeid == "34629907-d02f-11ec-8c78-005056b86db5" || ftypeId == '34629907-d02f-11ec-8c78-005056b86db5' || typeid == "34629907-d02f-11ec-8c78-005056b86ac5" || ftypeId == "34629907-d02f-11ec-8c78-005056b86ac5") {
         if (type == 1) {
           if (this.typeE.indexOf(typeid) != -1) {
              if(this.oid == '69893dca-1d47-11ed-8c78-005056b86db5'){
@@ -701,6 +701,9 @@ export default {
       this.ajax
         .get(this.$store.state.api + "selectAllType", params)
         .then((res) => {
+          if(this.oid == "69893dca-1d47-11ed-8c78-005056b86db5"){
+            res.data[0] = [...res.data[0],...res.data[4]]
+          }
           this.CourseTypeJson = {};
           this.CourseType = res.data;
           this.CourseType3 = [
@@ -714,18 +717,13 @@ export default {
               res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" ||
               res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5"
             ) {
-              this.CourseType3[1].id.push(res.data[0][cti].id);
               this.CourseType3[0].id.push(res.data[0][cti].id);
+            }else if(res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5" ||
+              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5"){
+              this.CourseType3[1].id.push(res.data[0][cti].id);
             } else if (res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5") {
               this.CourseType3[2].id.push(res.data[0][cti].id);
             }
-            if(res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5"){
-              res.data[0][cti].name = "年级";
-            }else if(res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5"){
-              res.data[0][cti].name = "学科";
-            }else if(res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"){
-              res.data[0][cti].name = "主题";
-            }
           }
           for (var i = 0; i < res.data[0].length; i++) {
             if (!this.cid) {
@@ -1051,7 +1049,7 @@ export default {
   display: flex;
   flex-direction: row;
   align-items: baseline;
-  margin: 2px 0;
+  /* margin: 2px 0; */
   width: 100%;
 }
 

+ 83 - 68
src/components/studyStudent.vue

@@ -28,7 +28,7 @@
           style="border-bottom: 1px solid #cad1dc; padding: 13px 0; width: 100%"
         >
           <div class="courseTitle">
-            <div style="max-width: 285px">
+            <div style="max-width: calc(100% - 40px); width: auto">
               <div class="ctitle">{{ courseDetail.title }}</div>
             </div>
             <el-tooltip effect="light" content="收缩" placement="top">
@@ -105,7 +105,11 @@
                     </el-tooltip>
                   </div>
                   <div class="lockTaskIcon">
-                    <img src="../assets/lock.png" v-if="IsLookOpen && !nav.isLook" alt="" />
+                    <img
+                      src="../assets/lock.png"
+                      v-if="IsLookOpen && !nav.isLook"
+                      alt=""
+                    />
                   </div>
                 </div>
               </div>
@@ -239,6 +243,7 @@
             v-if="
               vChapterData[taskCount].length > 0 || fileC[taskCount].length > 0
             "
+            style="border-radius: 0 0 20px 20px"
           >
             <div
               class="student_head"
@@ -414,10 +419,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
                             </div>
                           </div>
@@ -461,10 +463,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
                             </div>
                           </div>
@@ -473,10 +472,7 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
                             </div>
                           </div>
@@ -488,10 +484,7 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div
-                              class="downIcon"
-                              @click="downloadFile2(vitem)"
-                            >
+                            <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
                             </div>
                           </div>
@@ -507,7 +500,7 @@
                             :key="vindex + '1'"
                           >
                             <div class="navListItem" v-if="vitem.type == 12">
-                              <div class="navText" style="color:#ACB4BF">
+                              <div class="navText" style="color: #acb4bf">
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
@@ -528,7 +521,7 @@
                   </div>
                 </div>
               </div>
-              <div style="width: 78.5%">
+              <div style="width: calc(100% - 315px)">
                 <div
                   style="padding: 10px 0 0; width: 95%; margin: 0 auto"
                   v-if="showType == 2 || showType == 3"
@@ -577,13 +570,15 @@
           <div class="student_body" v-resize="resize">
             <div
               class="vedioBox"
+              :style="{borderRadius:(vChapterData[taskCount].length == 0 && fileC[taskCount].length == 0) ? '0 0 20px 20px' : '20px'}"
               v-if="
                 chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
                   .toolChoose[0].tool &&
                 chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
                   .toolChoose[0].tool.length &&
                 chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
-                  .toolChoose[0].tool.length > 0
+                  .toolChoose[0].tool.length > 0 || (chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                    .taskDetail != '')
               "
             >
               <div
@@ -1305,7 +1300,12 @@
                   </div>
                 </div>
               </div>
-              <div class="toolHeng2" style="position: relative">
+              <div class="toolHeng2" style="position: relative" v-if="chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                  .toolChoose[0].tool &&
+                chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                  .toolChoose[0].tool.length &&
+                chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                  .toolChoose[0].tool.length > 0">
                 <div class="workNav">工作区</div>
                 <div
                   class="filebox"
@@ -16061,40 +16061,52 @@ export default {
         });
     },
     downloadFile2(f) {
-      let url = f.url;
-      let _this = this;
-      let _url = "";
+      const loading = this.$loading.service({
+        background: "rgba(255, 255, 255, 0.7)",
+        target: document.body,
+        text: "文件加载中...",
+      });
+      let url2 = f.url;
+      let _url2 = "";
       if (
-        url.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
+        url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
       ) {
-        _url = url.split(
+        _url2 = url2.split(
           "https://view.officeapps.live.com/op/view.aspx?src="
         )[1];
       } else {
-        _url = url;
+        _url2 = url2;
       }
-      const x = new XMLHttpRequest();
-      x.open("GET", _url, true);
-      x.responseType = "blob";
-      const loading = _this.$loading.service({
-        background: "rgba(255, 255, 255, 0.7)",
-        target: document.body,
-        text: "文件加载中...",
-      });
-      // _this.$message.success("文件下载中...");
-      x.onload = function (e) {
-        loading.close();
-        let content = x.response;
-        let elink = document.createElement("a");
-        elink.download = f.name;
-        elink.style.display = "none";
-        let blob = new Blob([content]);
-        elink.href = URL.createObjectURL(blob);
-        document.body.appendChild(elink);
-        elink.click();
-        document.body.removeChild(elink);
+      let params = {
+        url: _url2,
+        name: f.name,
       };
-      x.send();
+      this.ajax
+        .get(this.$store.state.api + "download", params)
+        .then((res) => {
+          console.log(res);
+          loading.close();
+          let content = res.data.data.data;
+          let ab = new ArrayBuffer(content.length);
+          let view = new Uint8Array(ab);
+          for (var i = 0; i < content.length; ++i) {
+            view[i] = content[i];
+          }
+          let elink = document.createElement("a");
+          elink.download = f.name;
+          elink.style.display = "none";
+          let blob = new Blob([ab], {
+            type: res.data.response.headers["content-type"] + ";charset=UTF-8",
+          });
+          elink.href = URL.createObjectURL(blob);
+          document.body.appendChild(elink);
+          elink.click();
+          document.body.removeChild(elink);
+        })
+        .catch((err) => {
+          loading.close();
+          console.error(err);
+        });
     },
     downloadFile(url) {
       let _this = this;
@@ -16747,7 +16759,9 @@ export default {
     flex-direction: column !important;
     align-items: center !important;
   }
-
+  .elist_input {
+    width: 90% !important;
+  }
   .dialog_diy1 >>> .el-dialog {
     width: 100% !important;
   }
@@ -17501,8 +17515,7 @@ export default {
 }
 
 .courseIndex > div:nth-child(1) {
-  margin: 0 0 0 20px;
-  padding-left: 5px;
+  margin: 0 0 0 10px;
   font-size: 24px;
   min-width: 100px;
   font-weight: bold;
@@ -17941,7 +17954,7 @@ export default {
 }
 
 .navListItem {
-  width: 220px;
+  width: 280px;
   height: 50px;
   margin: 0px auto 10px;
   display: flex;
@@ -17958,7 +17971,7 @@ export default {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
-  width: 175px;
+  width: 220px;
   padding: 0 10px;
   font-weight: 400;
   color: #0e1e33;
@@ -18130,7 +18143,7 @@ export default {
 }
 
 .vedioBox {
-  border-radius: 0 0 20px 20px;
+  border-radius: 20px;
   background: #fff;
   margin-bottom: 10px;
   overflow: auto;
@@ -18152,7 +18165,7 @@ export default {
 }
 
 .toolBox {
-  padding: 18px 0 0 25px;
+  padding: 30px 0 0 25px;
   display: flex;
 }
 
@@ -19141,7 +19154,7 @@ export default {
   /* background-image: -webkit-linear-gradient(left, #72aaf4, #4d81d5); */
   cursor: pointer;
   z-index: 999;
-  right: 0;
+  right: 20px;
   top: 110px;
   width: 50px;
   height: 50px;
@@ -19168,9 +19181,9 @@ export default {
   border-radius: 15px;
   z-index: 999; */
   position: fixed;
-  right: 0;
+  right: 20px;
   top: 101px;
-  width: 340px;
+  width: 330px;
   height: calc(100% - 80px);
   z-index: 999;
   background: #fff;
@@ -20189,6 +20202,7 @@ ol {
 
 .mlImg {
   width: 25px !important;
+  min-width: 25px;
   cursor: pointer;
   transform: rotate(180deg);
 }
@@ -20286,7 +20300,7 @@ ol {
   color: #0e1e33;
   font-size: 16px;
   font-weight: bold;
-  min-width: 41px;
+  min-width: 55px;
 }
 .stageItemTitle > div:last-child {
   margin-left: 10px;
@@ -20298,10 +20312,11 @@ ol {
   overflow: hidden;
   text-overflow: ellipsis;
   word-break: break-word;
-  width: calc(100% - 40px);
+  width: calc(100% - 55px);
 }
 .closeTri {
   min-width: 20px;
+  width: 20px;
   height: 20px;
   padding-left: 15px;
 }
@@ -20431,14 +20446,14 @@ ol {
   width: 20px;
   height: 20px;
 }
-.lockTaskIcon{
-    width: 25px;
-    height: 25px;
-    position: absolute;
-    right: 0;
-    top: 23px;
+.lockTaskIcon {
+  width: 25px;
+  height: 25px;
+  position: absolute;
+  right: 0;
+  top: 23px;
 }
-.lockTaskIcon>img{
+.lockTaskIcon > img {
   width: 100%;
   height: 100%;
 }

部分文件因文件數量過多而無法顯示