Bläddra i källkod

修改课程详情和学习中心新设计样式

zengyicheng 1 år sedan
förälder
incheckning
1af8a183de

+ 51 - 51
config/index.js

@@ -5,66 +5,66 @@
 const path = require('path')
 
 module.exports = {
-  dev: {
+    dev: {
 
-    // Paths
-    assetsSubDirectory: 'static',
-    assetsPublicPath: '/',
-    proxyTable: {},
+        // Paths
+        assetsSubDirectory: 'static',
+        assetsPublicPath: '/',
+        proxyTable: {},
 
-    // Various Dev Server settings
-    host: 'localhost', // can be overwritten by process.env.HOST
-    port: 8081, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
-    autoOpenBrowser: false,
-    errorOverlay: true,
-    notifyOnErrors: true,
-    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+        // Various Dev Server settings
+        host: '0.0.0.0', // can be overwritten by process.env.HOST
+        port: 8081, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+        autoOpenBrowser: false,
+        errorOverlay: true,
+        notifyOnErrors: true,
+        poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
 
-    
-    /**
-     * Source Maps
-     */
 
-    // https://webpack.js.org/configuration/devtool/#development
-    devtool: 'cheap-module-eval-source-map',
+        /**
+         * Source Maps
+         */
 
-    // If you have problems debugging vue-files in devtools,
-    // set this to false - it *may* help
-    // https://vue-loader.vuejs.org/en/options.html#cachebusting
-    cacheBusting: true,
+        // https://webpack.js.org/configuration/devtool/#development
+        devtool: 'cheap-module-eval-source-map',
 
-    cssSourceMap: true
-  },
+        // If you have problems debugging vue-files in devtools,
+        // set this to false - it *may* help
+        // https://vue-loader.vuejs.org/en/options.html#cachebusting
+        cacheBusting: true,
 
-  build: {
-    // Template for index.html
-    index: path.resolve(__dirname, '../dist/index.html'),
+        cssSourceMap: true
+    },
 
-    // Paths
-    assetsRoot: path.resolve(__dirname, '../dist'),
-    assetsSubDirectory: 'static',
-    assetsPublicPath: './',
+    build: {
+        // Template for index.html
+        index: path.resolve(__dirname, '../dist/index.html'),
 
-    /**
-     * Source Maps
-     */
+        // Paths
+        assetsRoot: path.resolve(__dirname, '../dist'),
+        assetsSubDirectory: 'static',
+        assetsPublicPath: './',
 
-    productionSourceMap: true,
-    // https://webpack.js.org/configuration/devtool/#production
-    devtool: '#source-map',
-    // devtool: 'cheap-module-eval-source-map',
+        /**
+         * Source Maps
+         */
 
-    // Gzip off by default as many popular static hosts such as
-    // Surge or Netlify already gzip all static assets for you.
-    // Before setting to `true`, make sure to:
-    // npm install --save-dev compression-webpack-plugin
-    productionGzip: false,
-    productionGzipExtensions: ['js', 'css'],
+        productionSourceMap: true,
+        // https://webpack.js.org/configuration/devtool/#production
+        devtool: '#source-map',
+        // devtool: 'cheap-module-eval-source-map',
 
-    // Run the build command with an extra argument to
-    // View the bundle analyzer report after build finishes:
-    // `npm run build --report`
-    // Set to `true` or `false` to always turn it on or off
-    bundleAnalyzerReport: process.env.npm_config_report
-  }
-}
+        // Gzip off by default as many popular static hosts such as
+        // Surge or Netlify already gzip all static assets for you.
+        // Before setting to `true`, make sure to:
+        // npm install --save-dev compression-webpack-plugin
+        productionGzip: false,
+        productionGzipExtensions: ['js', 'css'],
+
+        // Run the build command with an extra argument to
+        // View the bundle analyzer report after build finishes:
+        // `npm run build --report`
+        // Set to `true` or `false` to always turn it on or off
+        bundleAnalyzerReport: process.env.npm_config_report
+    }
+}

+ 96 - 96
package.json

@@ -1,97 +1,97 @@
 {
-  "name": "pbl-student",
-  "version": "1.0.0",
-  "description": "A Vue.js project",
-  "author": "lsc <1249685148@qq.com>",
-  "private": true,
-  "scripts": {
-    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
-    "start": "npm run dev",
-    "e2e": "node test/e2e/runner.js",
-    "test": "npm run e2e",
-    "build": "node build/build.js"
-  },
-  "dependencies": {
-    "axios": "^0.21.3",
-    "big.js": "^6.2.1",
-    "dayjs": "^1.11.7",
-    "echarts": "^5.2.2",
-    "element-ui": "^2.15.6",
-    "file-saver": "^2.0.5",
-    "gantt-elastic": "^1.0.12",
-    "hevue-img-preview": "^5.0.3",
-    "html-docx-js": "^0.3.1",
-    "html2canvas": "^1.4.1",
-    "image-conversion": "^2.1.1",
-    "js-audio-recorder": "^1.0.7",
-    "jsmind": "^0.4.8",
-    "lamejs": "^1.2.1",
-    "pdfjs-dist": "^2.5.207",
-    "pdfvuer": "^1.7.5",
-    "qrcodejs2": "^0.0.2",
-    "recordrtc": "^5.6.2",
-    "relation-graph": "^2.0.26",
-    "vue": "^2.5.2",
-    "vue-cookies": "^1.7.4",
-    "vue-jsmind": "^1.5.0",
-    "vue-pdf": "^4.2.0",
-    "vue-router": "^3.0.1",
-    "vue-video-player": "^5.0.2",
-    "vuex": "^3.6.2",
-    "wangeditor": "^4.7.15",
-    "worker-loader": "^2.0.0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.19.6",
-    "@babel/preset-env": "^7.19.4",
-    "autoprefixer": "^7.1.2",
-    "babel-core": "^6.22.1",
-    "babel-helper-vue-jsx-merge-props": "^2.0.3",
-    "babel-loader": "^7.1.5",
-    "babel-plugin-syntax-jsx": "^6.18.0",
-    "babel-plugin-transform-runtime": "^6.23.0",
-    "babel-plugin-transform-vue-jsx": "^3.5.0",
-    "babel-preset-env": "^1.3.2",
-    "babel-preset-stage-2": "^6.22.0",
-    "babel-register": "^6.22.0",
-    "chalk": "^2.4.2",
-    "chromedriver": "^2.27.2",
-    "copy-webpack-plugin": "^4.0.1",
-    "cross-spawn": "^5.0.1",
-    "css-loader": "^0.28.0",
-    "extract-text-webpack-plugin": "^3.0.0",
-    "file-loader": "^1.1.4",
-    "friendly-errors-webpack-plugin": "^1.6.1",
-    "html-webpack-plugin": "^2.30.1",
-    "nightwatch": "^0.9.12",
-    "node-notifier": "^5.1.2",
-    "optimize-css-assets-webpack-plugin": "^3.2.0",
-    "ora": "^1.2.0",
-    "portfinder": "^1.0.13",
-    "postcss-import": "^11.0.0",
-    "postcss-loader": "^2.0.8",
-    "postcss-url": "^7.2.1",
-    "rimraf": "^2.6.0",
-    "selenium-server": "^3.0.1",
-    "semver": "^5.3.0",
-    "shelljs": "^0.7.6",
-    "uglifyjs-webpack-plugin": "^1.1.1",
-    "url-loader": "^0.5.8",
-    "vue-loader": "^13.3.0",
-    "vue-style-loader": "^3.0.1",
-    "vue-template-compiler": "^2.5.2",
-    "webpack": "^3.6.0",
-    "webpack-bundle-analyzer": "^2.9.0",
-    "webpack-dev-server": "^2.9.1",
-    "webpack-merge": "^4.1.0"
-  },
-  "engines": {
-    "node": ">= 6.0.0",
-    "npm": ">= 3.0.0"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "not ie <= 8"
-  ]
-}
+    "name": "pbl-student",
+    "version": "1.0.0",
+    "description": "A Vue.js project",
+    "author": "lsc <1249685148@qq.com>",
+    "private": true,
+    "scripts": {
+        "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0",
+        "start": "npm run dev",
+        "e2e": "node test/e2e/runner.js",
+        "test": "npm run e2e",
+        "build": "node build/build.js"
+    },
+    "dependencies": {
+        "axios": "^0.21.3",
+        "big.js": "^6.2.1",
+        "dayjs": "^1.11.7",
+        "echarts": "^5.2.2",
+        "element-ui": "^2.15.6",
+        "file-saver": "^2.0.5",
+        "gantt-elastic": "^1.0.12",
+        "hevue-img-preview": "^5.0.3",
+        "html-docx-js": "^0.3.1",
+        "html2canvas": "^1.4.1",
+        "image-conversion": "^2.1.1",
+        "js-audio-recorder": "^1.0.7",
+        "jsmind": "^0.4.8",
+        "lamejs": "^1.2.1",
+        "pdfjs-dist": "^2.5.207",
+        "pdfvuer": "^1.7.5",
+        "qrcodejs2": "^0.0.2",
+        "recordrtc": "^5.6.2",
+        "relation-graph": "^2.0.26",
+        "vue": "^2.5.2",
+        "vue-cookies": "^1.7.4",
+        "vue-jsmind": "^1.5.0",
+        "vue-pdf": "^4.2.0",
+        "vue-router": "^3.0.1",
+        "vue-video-player": "^5.0.2",
+        "vuex": "^3.6.2",
+        "wangeditor": "^4.7.15",
+        "worker-loader": "^2.0.0"
+    },
+    "devDependencies": {
+        "@babel/core": "^7.19.6",
+        "@babel/preset-env": "^7.19.4",
+        "autoprefixer": "^7.1.2",
+        "babel-core": "^6.22.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.3",
+        "babel-loader": "^7.1.5",
+        "babel-plugin-syntax-jsx": "^6.18.0",
+        "babel-plugin-transform-runtime": "^6.23.0",
+        "babel-plugin-transform-vue-jsx": "^3.5.0",
+        "babel-preset-env": "^1.3.2",
+        "babel-preset-stage-2": "^6.22.0",
+        "babel-register": "^6.22.0",
+        "chalk": "^2.4.2",
+        "chromedriver": "^2.27.2",
+        "copy-webpack-plugin": "^4.0.1",
+        "cross-spawn": "^5.0.1",
+        "css-loader": "^0.28.0",
+        "extract-text-webpack-plugin": "^3.0.0",
+        "file-loader": "^1.1.4",
+        "friendly-errors-webpack-plugin": "^1.6.1",
+        "html-webpack-plugin": "^2.30.1",
+        "nightwatch": "^0.9.12",
+        "node-notifier": "^5.1.2",
+        "optimize-css-assets-webpack-plugin": "^3.2.0",
+        "ora": "^1.2.0",
+        "portfinder": "^1.0.13",
+        "postcss-import": "^11.0.0",
+        "postcss-loader": "^2.0.8",
+        "postcss-url": "^7.2.1",
+        "rimraf": "^2.6.0",
+        "selenium-server": "^3.0.1",
+        "semver": "^5.3.0",
+        "shelljs": "^0.7.6",
+        "uglifyjs-webpack-plugin": "^1.1.1",
+        "url-loader": "^0.5.8",
+        "vue-loader": "^13.3.0",
+        "vue-style-loader": "^3.0.1",
+        "vue-template-compiler": "^2.5.2",
+        "webpack": "^3.6.0",
+        "webpack-bundle-analyzer": "^2.9.0",
+        "webpack-dev-server": "^2.9.1",
+        "webpack-merge": "^4.1.0"
+    },
+    "engines": {
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
+    },
+    "browserslist": [
+        "> 1%",
+        "last 2 versions",
+        "not ie <= 8"
+    ]
+}

BIN
src/assets/icon/learn/next.png


BIN
src/assets/icon/newIcon/closeTri.png


BIN
src/assets/icon/newIcon/codeIcon.png


BIN
src/assets/icon/newIcon/comment.png


BIN
src/assets/icon/newIcon/down.png


BIN
src/assets/icon/newIcon/groupIcon.png


BIN
src/assets/icon/newIcon/lock.png


BIN
src/assets/icon/newIcon/mlBtn.png


BIN
src/assets/icon/newIcon/openTri.png


BIN
src/assets/icon/newIcon/people.png


BIN
src/assets/icon/newIcon/return.png


BIN
src/assets/icon/newIcon/returnIndex.png


BIN
src/assets/icon/newIcon/vedio.png


+ 355 - 110
src/components/courseDetail.vue

@@ -23,7 +23,10 @@
               )
             "
           >
-            返回
+            <div class="returnIndexImg">
+              <img src="../assets/icon/newIcon/returnIndex.png" alt="" />
+            </div>
+            <div>返回</div>
             <!-- <img src="../assets/icon/return.png" alt="" /> -->
           </div>
           <div class="box_course">
@@ -53,7 +56,9 @@
                   v-for="(item, index) in courseType"
                   :key="index"
                 >
-                  <span style="color: #6c6c6c">{{ item + ":" }}</span>
+                  <span style="color: #717c8d; font-weight: 400">{{
+                    item + ":"
+                  }}</span>
                   <span
                     class="type_children"
                     v-for="(item2, index2) in courseTypeJson[item]"
@@ -62,49 +67,54 @@
                   >
                 </div>
               </div>
-              <div
-                class="cType"
-                style="font-size: 18px; color: #6c6c6c; align-items: flex-start"
-              >
-                <div style="min-width: fit-content">
-                  创建者:<span style="color: #000">{{
+              <div class="cType" style="align-items: flex-start">
+                <div
+                  style="
+                    min-width: fit-content;
+                    color: #717c8d;
+                    font-weight: 400;
+                  "
+                >
+                  创建者:<span style="font-weight: bold; color: #0e1e33">{{
                     courseDetail.username
                   }}</span>
                 </div>
+                <div
+                  style="display: flex; align-items: center; margin-left: 32px"
+                >
+                  <div style="color: #717c8d; font-weight: 400">参与人数:</div>
+                  <!-- <div class="man">
+                    <img src="../assets/people.png" alt />
+                  </div> -->
+                  <div class="person" style="font-weight: bold; color: #0e1e33">
+                    {{
+                      courseDetail.vcount != null ? courseDetail.vcount : 0
+                    }}人
+                  </div>
+                </div>
+              </div>
+              <div class="cType" style="color: #6c6c6c">
                 <div
                   class="Tname"
                   v-if="Tname.length > 0"
-                  style="margin-left: 32px"
                   @click="TnameCheck = !TnameCheck"
+                  style="color: #717c8d; font-weight: 400"
                 >
                   协同人员:<span
                     v-for="(tname, tIndex) in TnameCheck
                       ? Tname
                       : Tname.slice(0, 6)"
                     :key="tIndex"
-                    style="margin: 0 5px; color: #000"
+                    style="margin: 0 5px; font-weight: 400; color: #0e1e33"
                     >{{ tname }}</span
                   ><span
-                    style="margin: 0 5px; color: #b2b2b2"
+                    style="margin: 0 5px; font-weight: 400; color: #b2b2b2"
                     v-if="!TnameCheck && Tname.length > 6"
                     >更多....</span
                   >
                 </div>
               </div>
-              <div class="cType" style="font-size: 18px; color: #6c6c6c">
-                <div style="display: flex; align-items: center">
-                  <div>参与人数:</div>
-                  <div class="man">
-                    <img src="../assets/people.png" alt />
-                  </div>
-                  <div class="person" style="color: #000">
-                    {{
-                      courseDetail.vcount != null ? courseDetail.vcount : 0
-                    }}人
-                  </div>
-                </div>
-              </div>
-              <div
+              <!-- <div
                 class="cType"
                 style="font-size: 18px; color: #6c6c6c"
                 v-if="classList.length && tType != 2"
@@ -126,7 +136,7 @@
                     >
                   </div>
                 </div>
-              </div>
+              </div> -->
               <div class="btnBox">
                 <!-- <div class="now_study" @click="dialogVisible = true">
                   立即学习
@@ -136,19 +146,45 @@
                   @click="setQr(courseDetail.courseId)"
                   v-if="tType != 2"
                 >
-                  生成二维码
+                  <div class="returnIndexImg">
+                    <img src="../assets/icon/newIcon/codeIcon.png" alt="" />
+                  </div>
+                  <div>生成二维码</div>
                 </div>
-                <div class="now_study" @click="dialogVisibleGroup = true" v-if="courseDetail.state == 1">
-                  {{
-                    (courseDetail.userid != userid &&
-                    courseDetail.course_teacher && courseDetail.course_teacher.indexOf(userid) == -1)
-                      ? "加入分组"
-                      : "设置分组"
-                  }}
+                <div
+                  class="now_study"
+                  @click="dialogVisibleGroup = true"
+                  v-if="courseDetail.state == 1"
+                >
+                  <div class="returnIndexImg">
+                    <img src="../assets/icon/newIcon/groupIcon.png" alt="" />
+                  </div>
+                  <div>
+                    {{
+                      courseDetail.userid != userid &&
+                      courseDetail.course_teacher &&
+                      courseDetail.course_teacher.indexOf(userid) == -1
+                        ? "加入分组"
+                        : "设置分组"
+                    }}
+                  </div>
                 </div>
-                <div class="now_group" v-if="groupInfo && courseDetail.state == 1">
+                <!-- <div
+                  class="now_group"
+                  v-if="groupInfo && courseDetail.state == 1"
+                >
                   <span>所在分组:</span>{{ groupInfo.name }}
+                </div> -->
+              </div>
+              <div
+                v-if="tType != 2"
+                class="goToStudy"
+                @click="goToStudyOrDia(classList)"
+              >
+                <div class="returnIndexImg">
+                  <img src="../assets/icon/newIcon/people.png" alt="" />
                 </div>
+                <div>立即授课</div>
               </div>
             </div>
           </div>
@@ -173,9 +209,29 @@
             <div
               v-if="((tType == 1 || tType == 4) && type == 2) || tType == 2"
               :class="courseDetail.brief != '' ? 'rightTd' : 'noBRight'"
-              style="width: 100%"
+              style="width: 100%; padding-top: 20px"
             >
               <div
+                class="courseItem"
+                v-for="(item, index) in chapInfo"
+                :key="index"
+                @click="addUserRate(index)"
+                :class="{
+                  disabled: isFollow == 2 && tType == 2 && followC != index,
+                }"
+              >
+                <div class="jdAndTask">
+                  <div>第{{ index + 1 }}阶段</div>
+                  <div :title="item.dyName">
+                    {{ item.dyName }}
+                  </div>
+                </div>
+                <div style="font-size: 14px; font-weight: 400; color: #717c8d">
+                  {{ item.chapterInfo[0].taskJson.length }}个任务
+                </div>
+              </div>
+
+              <!-- <div
                 class="blue_box_one"
                 v-for="(item, index) in chapInfo"
                 :key="index"
@@ -185,10 +241,12 @@
                 }"
               >
                 <div v-if="courseDetail.state == 1">第{{ index + 1 }}阶段</div>
-                <div v-if="courseDetail.state == 2 || courseDetail.state == 3">任务查看</div>
+                <div v-if="courseDetail.state == 2 || courseDetail.state == 3">
+                  任务查看
+                </div>
                 <div :title="item.dyName">{{ item.dyName }}</div>
                 <div>{{ item.chapterInfo[0].taskJson.length }}个任务</div>
-              </div>
+              </div> -->
             </div>
             <div
               v-if="
@@ -212,7 +270,9 @@
                     </div>
                     <div>
                       <span class="learningIcon">未进行:</span
-                      ><span>{{ chaptersJson.state.learing }}</span>
+                      ><span style="color: #fe9999">{{
+                        chaptersJson.state.learing
+                      }}</span>
                     </div>
                   </div>
                 </div>
@@ -223,21 +283,16 @@
                       :key="index"
                       class="chapter"
                     >
-                      <div
-                        class="stage stageCss"
-                        :style="{
-                          width:
-                            item.array.length * 180 +
-                            (item.array.length - 1) * 10 +
-                            'px',
-                        }"
-                        @click="addUserRate(index)"
-                      >
+                      <div class="stageCss" @click="addUserRate(index)">
                         <div
                           style="
-                            width: 100%;
+                            width: 95%;
+                            height: 60px;
                             display: flex;
-                            justify-content: center;
+                            justify-content: space-between;
+                            flex-direction: row;
+                            flex-wrap: nowrap;
+                            align-items: center;
                           "
                         >
                           <el-tooltip
@@ -253,6 +308,16 @@
                               第{{ index + 1 }}阶段 {{ item.name }}
                             </div>
                           </el-tooltip>
+                          <div
+                            style="
+                              font-size: 14px;
+                              font-weight: 400;
+                              color: #3681fc;
+                              min-width: 30px;
+                            "
+                          >
+                            查看
+                          </div>
                         </div>
                       </div>
 
@@ -262,9 +327,10 @@
                           v-for="(item2, index2) in item.array"
                           :key="index + '-' + index2"
                           class="taskBox"
+                          :class="item.array.length > 1 ? 'borderRight' : ''"
                         >
                           <div class="taskName">
-                            <div class="navIndex">任务{{ index2 + 1 }}</div>
+                            <div class="navIndex">任务{{ index2 + 1 }}:</div>
                             <div>
                               <el-tooltip
                                 class="item"
@@ -272,7 +338,16 @@
                                 :content="item2.name"
                                 placement="top"
                               >
-                                <div class="titleCss">{{ item2.name }}</div>
+                                <div
+                                  class="titleCss"
+                                  style="
+                                    font-size: 14px;
+                                    font-weight: 400;
+                                    color: #717c8d;
+                                  "
+                                >
+                                  {{ item2.name }}
+                                </div>
                               </el-tooltip>
                             </div>
                           </div>
@@ -861,6 +936,24 @@
     <el-dialog title="课程二维码" :visible.sync="dialogVisibleQR" width="400px">
       <div class="qrcode" ref="qrCodeUrl"></div>
     </el-dialog>
+    <el-dialog
+      title="选择授课班级"
+      :visible.sync="dialogVisibleSk"
+      width="626px"
+      class="diy_sk"
+    >
+      <div class="classBox">
+        <div @click="gotoCourse('')">全部</div>
+        <div
+          @click="gotoCourse(item.id)"
+          v-for="(item, index) in classList"
+          :key="index"
+        >
+          {{ item.name }}
+        </div>
+      </div>
+      <div class="cancelDiy" @click="dialogVisibleSk = false">取消</div>
+    </el-dialog>
   </div>
 </template>
 
@@ -876,6 +969,7 @@ export default {
   data() {
     return {
       choose: 0,
+      dialogVisibleSk: false,
       dialogVisible: false,
       dialogVisibleGroup: false,
       id: this.$route.query.courseId,
@@ -965,7 +1059,7 @@ export default {
               this.screenType
           );
         }
-      } else if(this.courseDetail.state == 2){
+      } else if (this.courseDetail.state == 2) {
         if (this.classList.length) {
           this.goTo(
             "/studystudentE2?type=0&courseId=" +
@@ -1003,7 +1097,7 @@ export default {
               this.screenType
           );
         }
-      } else if(this.courseDetail.state == 3){
+      } else if (this.courseDetail.state == 3) {
         if (this.classList.length) {
           this.goTo(
             "/studystudentE3?type=0&courseId=" +
@@ -1043,6 +1137,13 @@ export default {
         }
       }
     },
+    goToStudyOrDia(l) {
+      if (l.length > 0) {
+        this.dialogVisibleSk = true;
+      } else {
+        this.addUserRate(0);
+      }
+    },
     addUserRate(i) {
       // var suid = this.userid;
       // if (
@@ -1103,7 +1204,7 @@ export default {
                   "&screenType=" +
                   this.screenType
               );
-            } else if(this.courseDetail.state == 2){
+            } else if (this.courseDetail.state == 2) {
               this.goTo(
                 "/studystudentE2?type=" +
                   i +
@@ -1122,7 +1223,7 @@ export default {
                   "&screenType=" +
                   this.screenType
               );
-            } else if(this.courseDetail.state == 3){
+            } else if (this.courseDetail.state == 3) {
               this.goTo(
                 "/studystudentE3?type=" +
                   i +
@@ -1329,6 +1430,7 @@ export default {
               }
             }
           }
+          this.Tname = [];
           for (var k = 0; k < c.length; k++) {
             this.Tname.push(c[k].name);
           }
@@ -1598,6 +1700,16 @@ export default {
   position: relative;
 }
 
+.returnIndexImg {
+  width: 18px;
+  padding: 5px 5px 0 5px;
+}
+
+.returnIndexImg > img {
+  width: 100%;
+  height: 100%;
+}
+
 .wheel {
   width: 250px;
   max-height: 146px;
@@ -1630,7 +1742,8 @@ export default {
 }
 
 .right_box_title {
-  font-size: 23px;
+  font-size: 20px;
+  font-weight: bold;
   max-width: calc(100% - 190px);
   white-space: nowrap;
   overflow: hidden;
@@ -1652,20 +1765,43 @@ export default {
 }
 
 .now_study {
-  width: 150px;
-  height: 35px;
-  color: #fff;
-  background: #4a9eed;
+  width: 136px;
+  height: 36px;
+  color: #717c8d;
+  background: #f0f4fa;
   text-align: center;
-  line-height: 35px;
+  line-height: 36px;
   border-radius: 5px;
   font-size: 13px;
   cursor: pointer;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  justify-content: center;
 }
 .now_study + .now_study {
   margin-left: 10px;
 }
 
+.goToStudy {
+  width: 120px;
+  height: 45px;
+  background: #3681fc;
+  border-radius: 8px;
+  color: #fff;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  justify-content: center;
+  position: absolute;
+  right: 25px;
+  bottom: 25px;
+  font-size: 16px;
+  cursor: pointer;
+}
+
 .now_group {
   height: 35px;
   font-size: 14px;
@@ -1812,6 +1948,48 @@ export default {
   cursor: pointer;
 }
 
+.courseItem {
+  width: 299px;
+  height: 70px;
+  background: #f0f4fa;
+  border-radius: 8px;
+  margin-right: 16px;
+  margin-bottom: 16px;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: flex-start;
+  justify-content: center;
+  padding-top: 20px;
+  cursor: pointer;
+}
+
+.jdAndTask {
+  display: flex;
+  flex-direction: column;
+  flex-wrap: nowrap;
+  justify-content: center;
+  align-items: flex-start;
+}
+
+.jdAndTask > div:nth-child(1) {
+  font-size: 18px;
+  font-weight: bold;
+  color: #0e1e33;
+  margin-bottom: 10px;
+}
+.jdAndTask > div:nth-child(2) {
+  font-size: 14px;
+  font-weight: 400;
+  color: #717c8d;
+  max-width: 180px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  word-break: break-word;
+  width: 180px;
+}
+
 .blue_box_one {
   width: 200px;
   height: 200px;
@@ -1848,19 +2026,24 @@ export default {
 }
 
 .return {
-  background: #205cc6;
-  width: 70px;
-  height: 30px;
-  color: #fff;
+  background: #f0f4fa;
+  width: 75px;
+  height: 36px;
+  color: #717c8d;
   text-align: center;
-  line-height: 32px;
+  line-height: 36px;
   margin-right: 20px;
   cursor: pointer;
   border-radius: 5px;
   position: absolute;
-  right: 0;
+  right: 10px;
   top: 24px;
   font-size: 14px;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: center;
+  align-items: center;
 }
 
 .return > img {
@@ -1877,7 +2060,8 @@ export default {
 }
 
 .cType > div > span {
-  font-size: 18px;
+  font-weight: 400;
+  color: #717c8d;
 }
 
 .type_children + .type_children {
@@ -1901,29 +2085,29 @@ export default {
 }
 
 .jd {
-  background: #4a9eed;
-  margin-left: 15px;
-  border-radius: 10px;
-  color: #fff;
-  width: 70px;
-  height: 25px;
+  background: #e0eafb;
+  margin-left: 12px;
+  border-radius: 4px;
+  font-size: 14px;
+  color: #3681fc;
+  width: 90px;
+  height: 28px;
   text-align: center;
-  line-height: 25px;
+  line-height: 28px;
 }
 
 .sLeft {
-  width: 14%;
+  width: 19%;
   margin-right: 10px;
   background: rgb(255, 255, 255);
-  padding: 20px 15px 0 15px;
+  padding: 20px 20px 0 20px;
   box-sizing: border-box;
-  border-radius: 10px;
+  border-radius: 12px;
 }
 
 .courseT {
-  border-left: 3px solid #2e66c9;
+  border-left: 3px solid #3681fc;
   padding-left: 5px;
-  color: #2e66c9;
   font-weight: bold;
 }
 
@@ -1956,7 +2140,7 @@ export default {
 
 .rightTd,
 .noBRight {
-  width: calc(100% - 14% - 10px);
+  width: calc(100% - 19% - 10px);
   background: #fff;
   display: flex;
   flex-direction: row;
@@ -1964,6 +2148,13 @@ export default {
   align-content: flex-start;
   align-items: center;
   justify-content: flex-start;
+  border-radius: 12px;
+  padding-left: 17px;
+}
+
+.rightTd:nth-child(5n),
+.noBRight:nth-child(5n) {
+  margin-right: 0;
 }
 
 .noBRight {
@@ -1971,7 +2162,6 @@ export default {
 }
 
 .Tname {
-  margin-left: 40px;
   word-break: break-all;
   width: auto;
   /* overflow: hidden;
@@ -2034,7 +2224,6 @@ export default {
 .p_tool_box {
   display: flex;
   flex-wrap: wrap;
-  background: rgb(217, 227, 239);
   /* color: #fff; */
   padding: 0 15px 10px;
   align-items: center;
@@ -2144,9 +2333,10 @@ export default {
 }
 
 .checkBox span {
-  padding: 0 10px 5px;
+  padding: 0 5px 5px;
   cursor: pointer;
   font-size: 18px;
+  font-weight: 400;
 }
 
 .checkBox span + span {
@@ -2154,15 +2344,17 @@ export default {
 }
 
 .checkBox .active {
-  border-bottom: 2px solid rgb(75, 151, 229);
-  cursor: pointer;
+  border-bottom: 3px solid #3681fc;
+  color: #3681fc;
+  font-weight: bold;
 }
 
 .detail_box {
-  background-color: rgb(231, 240, 247);
+  background-color: #f0f4fa;
   padding: 15px 20px;
   box-sizing: border-box;
   width: 100%;
+  border-radius: 12px;
 }
 
 .detail_box + .detail_box {
@@ -2175,15 +2367,15 @@ export default {
 }
 
 .detail_box .title > span:nth-child(1) {
-  font-size: 20px;
+  font-size: 18px;
   display: flex;
   align-items: center;
+  font-weight: 400;
+  color: #0e1e33;
 }
 
 .detail_box .box {
   margin-top: 20px;
-  background-color: #fff;
-  padding: 15px 20px;
   border-radius: 5px;
   /* width: 100%; */
   box-sizing: border-box;
@@ -2195,12 +2387,13 @@ export default {
   display: -ms-flexbox;
   width: 100%;
   overflow: auto;
-  padding: 15px 0;
 }
 
 .chapter {
   margin-right: 30px;
   min-width: 180px;
+  background-color: #fff;
+  border-radius: 12px;
 }
 
 .chapter + .chapter {
@@ -2224,6 +2417,7 @@ export default {
   display: flex;
   width: 100%;
   min-width: 180px;
+  padding-top: 15px;
 }
 
 .chapter .task .taskBox {
@@ -2231,13 +2425,17 @@ export default {
   height: 100%;
 }
 
+.borderRight {
+  border-right: 1px solid #eceef7;
+}
+
 .chapter .task .taskBox + .taskBox {
   margin-left: 10px;
 }
 
 .chapter .task .taskBox .taskName {
   text-align: center;
-  margin: 10px 0;
+  margin: 10px 0 10px 10px;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
@@ -2246,7 +2444,7 @@ export default {
   width: 100%;
 }
 
-.toolIcon::before {
+/* .toolIcon::before {
   content: "";
   width: 26px;
   height: 26px;
@@ -2280,9 +2478,11 @@ export default {
   display: inline-block;
   background-image: url(../assets/icon/finish.png);
   background-size: 100% 100%;
+} */
+.learningIcon {
+  color: #fe9999;
 }
-
-.learningIcon::before {
+/* .learningIcon::before {
   content: "";
   width: 22px;
   height: 22px;
@@ -2307,7 +2507,7 @@ export default {
   display: inline-block;
   background-image: url(../assets/icon/time.png);
   background-size: 100% 100%;
-}
+} */
 
 .chapter_time_box {
   border-left: 5px solid #f0f0f0;
@@ -2392,26 +2592,20 @@ export default {
 }
 
 .titleCss {
-  text-align: center;
   max-width: 100px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   word-break: break-word;
   margin-left: 10px;
+  font-size: 16px;
+  font-weight: bold;
+  color: #0e1e33;
 }
 
 .navIndex {
-  border-bottom: 1px solid #d7d7d7;
-  padding-bottom: 5px;
-  background: #96d1ff;
-  width: 55px;
-  min-width: 55px;
-  border-radius: 5px;
-  color: #fff;
-  text-align: center;
-  height: 20px;
-  line-height: 26px;
+  font-weight: bold;
+  color: #0e1e33;
   font-size: 14px;
 }
 
@@ -2422,6 +2616,7 @@ export default {
   flex-wrap: nowrap;
   justify-content: center;
   align-items: center;
+  border-bottom: 1px solid #e7ebf1;
 }
 
 .disabled {
@@ -2434,7 +2629,57 @@ export default {
   flex-wrap: nowrap;
   align-items: center;
 }
-.teaClass>div:nth-child(1){
+.teaClass > div:nth-child(1) {
   min-width: 90px;
 }
+
+.diy_sk >>> .el-dialog {
+  box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
+  border-radius: 18px 18px 18px 18px;
+}
+
+.diy_sk >>> .el-dialog__title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #0e1e33;
+}
+
+.diy_sk >>> .el-dialog__body {
+  padding: 0 20px 15px 20px;
+}
+.classBox {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-items: flex-start;
+  min-height: 300px;
+}
+.classBox > div {
+  width: 106px;
+  height: 32px;
+  background: #f0f4fa;
+  border-radius: 4px;
+  font-weight: 400;
+  color: #717c8d;
+  font-size: 14px;
+  text-align: center;
+  line-height: 32px;
+  margin: 0 8px 8px 0;
+  cursor: pointer;
+}
+
+.cancelDiy {
+  width: 102px;
+  height: 36px;
+  background: #e7ebf1;
+  border-radius: 4px;
+  font-size: 14px;
+  font-weight: 400;
+  color: #717c8d;
+  text-align: center;
+  line-height: 32px;
+  margin: 0 auto;
+  cursor: pointer;
+}
 </style>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 308 - 320
src/components/easy2/studyStudent.vue


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 308 - 330
src/components/easy3/studyStudent.vue


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1390 - 359
src/components/studyStudent.vue


Vissa filer visades inte eftersom för många filer har ändrats