lsc 2 năm trước cách đây
mục cha
commit
d93648cca4
73 tập tin đã thay đổi với 1191 bổ sung138 xóa
  1. 1 0
      package.json
  2. BIN
      public/favicon.ico
  3. 31 0
      src/api/course.js
  4. 0 4
      src/api/home.js
  5. 3 3
      src/api/index.js
  6. 29 29
      src/api/user.js
  7. BIN
      src/assets/images/course/comment.png
  8. BIN
      src/assets/images/course/commmt-active.png
  9. BIN
      src/assets/images/course/head-back.png
  10. BIN
      src/assets/images/course/list.png
  11. BIN
      src/assets/images/course/pratice-acitve.png
  12. BIN
      src/assets/images/course/pratice.png
  13. BIN
      src/assets/images/tool/firstToolList/evaluation.png
  14. BIN
      src/assets/images/tool/firstToolList/mindMapping.png
  15. BIN
      src/assets/images/tool/firstToolList/myMessage.png
  16. BIN
      src/assets/images/tool/firstToolList/project.png
  17. BIN
      src/assets/images/tool/firstToolList/study.png
  18. BIN
      src/assets/images/tool/fourthToolList/AIprogram.png
  19. BIN
      src/assets/images/tool/fourthToolList/AIprogram2.png
  20. BIN
      src/assets/images/tool/fourthToolList/Pythonprogram.png
  21. BIN
      src/assets/images/tool/fourthToolList/allHistory.png
  22. BIN
      src/assets/images/tool/fourthToolList/car.png
  23. BIN
      src/assets/images/tool/fourthToolList/cocopi.png
  24. BIN
      src/assets/images/tool/fourthToolList/conSentences.png
  25. BIN
      src/assets/images/tool/fourthToolList/deepLearning.png
  26. BIN
      src/assets/images/tool/fourthToolList/file.png
  27. BIN
      src/assets/images/tool/fourthToolList/group.png
  28. BIN
      src/assets/images/tool/fourthToolList/lineSearch.png
  29. BIN
      src/assets/images/tool/fourthToolList/photo.png
  30. BIN
      src/assets/images/tool/fourthToolList/program.png
  31. BIN
      src/assets/images/tool/fourthToolList/table.png
  32. BIN
      src/assets/images/tool/fourthToolList/text.png
  33. BIN
      src/assets/images/tool/fourthToolList/text2.png
  34. BIN
      src/assets/images/tool/fourthToolList/zip.png
  35. BIN
      src/assets/images/tool/secondToolList/24game.png
  36. BIN
      src/assets/images/tool/secondToolList/GeoGebra.png
  37. BIN
      src/assets/images/tool/secondToolList/doc.png
  38. BIN
      src/assets/images/tool/secondToolList/eval.png
  39. BIN
      src/assets/images/tool/secondToolList/library.png
  40. BIN
      src/assets/images/tool/secondToolList/mindMapping.png
  41. BIN
      src/assets/images/tool/secondToolList/mindNetwork.png
  42. BIN
      src/assets/images/tool/secondToolList/mohe.png
  43. BIN
      src/assets/images/tool/secondToolList/networkPanel.png
  44. BIN
      src/assets/images/tool/secondToolList/note.png
  45. BIN
      src/assets/images/tool/secondToolList/translation.png
  46. BIN
      src/assets/images/tool/secondToolList/whiteBoard.png
  47. BIN
      src/assets/images/tool/thirdToolList/answer.png
  48. BIN
      src/assets/images/tool/thirdToolList/ask.png
  49. BIN
      src/assets/images/tool/thirdToolList/choose.png
  50. BIN
      src/assets/images/tool/thirdToolList/code.png
  51. BIN
      src/assets/images/tool/thirdToolList/courseDesign.png
  52. BIN
      src/assets/images/tool/thirdToolList/evalua.png
  53. BIN
      src/assets/images/tool/thirdToolList/han.png
  54. BIN
      src/assets/images/tool/thirdToolList/hanClass.png
  55. BIN
      src/assets/images/tool/thirdToolList/plwork.png
  56. BIN
      src/assets/images/tool/thirdToolList/project.png
  57. BIN
      src/assets/images/tool/thirdToolList/score.png
  58. BIN
      src/assets/images/tool/thirdToolList/select.png
  59. BIN
      src/assets/images/tool/thirdToolList/time.png
  60. BIN
      src/assets/images/tool/thirdToolList/trainPlatform.png
  61. BIN
      src/assets/images/tool/thirdToolList/translation.png
  62. BIN
      src/assets/images/tool/thirdToolList/work.png
  63. 52 0
      src/components/headBar.vue
  64. 3 2
      src/config/env.development.js
  65. 2 2
      src/config/env.production.js
  66. 1 1
      src/config/env.staging.js
  67. 134 0
      src/const/index.js
  68. 9 1
      src/router/router.config.js
  69. 9 0
      src/views/course/components/courseContentList.vue
  70. 81 0
      src/views/course/components/courseTitle.vue
  71. 647 0
      src/views/course/components/stepsBox.vue
  72. 188 0
      src/views/course/index.vue
  73. 1 96
      src/views/login/index.vue

+ 1 - 0
package.json

@@ -6,6 +6,7 @@
   "private": true,
   "scripts": {
     "serve": "vue-cli-service serve --open",
+    "dev": "vue-cli-service serve",
     "stage": "cross-env NODE_ENV=dev vue-cli-service serve --mode staging",
     "prod": "cross-env NODE_ENV=dev vue-cli-service serve --mode production",
     "stageBuild": "vue-cli-service build --mode staging",

BIN
public/favicon.ico


+ 31 - 0
src/api/course.js

@@ -0,0 +1,31 @@
+// axios
+import request from '@/utils/request'
+
+// 获取课程信息
+export function getCourseInfo(params) {
+  return request({
+    url: '/selectCourseDetail3',
+    method: 'get',
+    params,
+    hideloading: true
+  })
+}
+// 获取所有作业
+export function getCourseWorks(params) {
+  return request({
+    url: '/selectSWorks',
+    method: 'get',
+    params,
+    hideloading: true
+  })
+}
+
+// 获取这个课程的学生权限
+export function getCourseWorksStudentJuri(params) {
+  return request({
+    url: '/selectWorksStudent',
+    method: 'get',
+    params,
+    hideloading: true
+  })
+}

+ 0 - 4
src/api/home.js

@@ -1,4 +0,0 @@
-// import qs from 'qs'
-// axios
-// import request from '@/utils/request'
-// home api

+ 3 - 3
src/api/index.js

@@ -1,7 +1,7 @@
 const api = {
-  Login: '/user/login',
-  UserInfo: '/user/userinfo',
-  UserName: '/user/name'
+  // Login: '/user/login',
+  // UserInfo: '/user/userinfo',
+  // UserName: '/user/name'
 }
 
 export default api

+ 29 - 29
src/api/user.js

@@ -1,32 +1,32 @@
-import api from './index'
-// axios
-import request from '@/utils/request'
+// import api from './index'
+// // axios
+// import request from '@/utils/request'
 
-// 登录
-export function login(data) {
-  return request({
-    url: api.Login,
-    method: 'post',
-    data
-  })
-}
+// // 登录
+// export function login(data) {
+//   return request({
+//     url: api.Login,
+//     method: 'post',
+//     data
+//   })
+// }
 
-// 用户信息 post 方法
-export function getUserInfo(data) {
-  return request({
-    url: api.UserInfo,
-    method: 'post',
-    data,
-    hideloading: true
-  })
-}
+// // 用户信息 post 方法
+// export function getUserInfo(data) {
+//   return request({
+//     url: api.UserInfo,
+//     method: 'post',
+//     data,
+//     hideloading: true
+//   })
+// }
 
-// 用户名称 get 方法
-export function getUserName(params) {
-  return request({
-    url: api.UserName,
-    method: 'get',
-    params,
-    hideloading: true
-  })
-}
+// // 用户名称 get 方法
+// export function getUserName(params) {
+//   return request({
+//     url: api.UserName,
+//     method: 'get',
+//     params,
+//     hideloading: true
+//   })
+// }

BIN
src/assets/images/course/comment.png


BIN
src/assets/images/course/commmt-active.png


BIN
src/assets/images/course/head-back.png


BIN
src/assets/images/course/list.png


BIN
src/assets/images/course/pratice-acitve.png


BIN
src/assets/images/course/pratice.png


BIN
src/assets/images/tool/firstToolList/evaluation.png


BIN
src/assets/images/tool/firstToolList/mindMapping.png


BIN
src/assets/images/tool/firstToolList/myMessage.png


BIN
src/assets/images/tool/firstToolList/project.png


BIN
src/assets/images/tool/firstToolList/study.png


BIN
src/assets/images/tool/fourthToolList/AIprogram.png


BIN
src/assets/images/tool/fourthToolList/AIprogram2.png


BIN
src/assets/images/tool/fourthToolList/Pythonprogram.png


BIN
src/assets/images/tool/fourthToolList/allHistory.png


BIN
src/assets/images/tool/fourthToolList/car.png


BIN
src/assets/images/tool/fourthToolList/cocopi.png


BIN
src/assets/images/tool/fourthToolList/conSentences.png


BIN
src/assets/images/tool/fourthToolList/deepLearning.png


BIN
src/assets/images/tool/fourthToolList/file.png


BIN
src/assets/images/tool/fourthToolList/group.png


BIN
src/assets/images/tool/fourthToolList/lineSearch.png


BIN
src/assets/images/tool/fourthToolList/photo.png


BIN
src/assets/images/tool/fourthToolList/program.png


BIN
src/assets/images/tool/fourthToolList/table.png


BIN
src/assets/images/tool/fourthToolList/text.png


BIN
src/assets/images/tool/fourthToolList/text2.png


BIN
src/assets/images/tool/fourthToolList/zip.png


BIN
src/assets/images/tool/secondToolList/24game.png


BIN
src/assets/images/tool/secondToolList/GeoGebra.png


BIN
src/assets/images/tool/secondToolList/doc.png


BIN
src/assets/images/tool/secondToolList/eval.png


BIN
src/assets/images/tool/secondToolList/library.png


BIN
src/assets/images/tool/secondToolList/mindMapping.png


BIN
src/assets/images/tool/secondToolList/mindNetwork.png


BIN
src/assets/images/tool/secondToolList/mohe.png


BIN
src/assets/images/tool/secondToolList/networkPanel.png


BIN
src/assets/images/tool/secondToolList/note.png


BIN
src/assets/images/tool/secondToolList/translation.png


BIN
src/assets/images/tool/secondToolList/whiteBoard.png


BIN
src/assets/images/tool/thirdToolList/answer.png


BIN
src/assets/images/tool/thirdToolList/ask.png


BIN
src/assets/images/tool/thirdToolList/choose.png


BIN
src/assets/images/tool/thirdToolList/code.png


BIN
src/assets/images/tool/thirdToolList/courseDesign.png


BIN
src/assets/images/tool/thirdToolList/evalua.png


BIN
src/assets/images/tool/thirdToolList/han.png


BIN
src/assets/images/tool/thirdToolList/hanClass.png


BIN
src/assets/images/tool/thirdToolList/plwork.png


BIN
src/assets/images/tool/thirdToolList/project.png


BIN
src/assets/images/tool/thirdToolList/score.png


BIN
src/assets/images/tool/thirdToolList/select.png


BIN
src/assets/images/tool/thirdToolList/time.png


BIN
src/assets/images/tool/thirdToolList/trainPlatform.png


BIN
src/assets/images/tool/thirdToolList/translation.png


BIN
src/assets/images/tool/thirdToolList/work.png


+ 52 - 0
src/components/headBar.vue

@@ -0,0 +1,52 @@
+<template>
+  <div class="head-container">
+    <div class="back" v-if="isBack"></div>
+    <div class="head-box">
+      <slot name="title"></slot>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    isBack: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {}
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.head-container {
+  height: 1.5rem;
+  width: 100%;
+  background-image: url(../assets/images/course/head-back.png);
+  position: fixed;
+  top: 0;
+  .back {
+    width: 0.3rem;
+    height: 0.3rem;
+    border-top: 2px solid #fff;
+    border-left: 2px solid #fff;
+    position: absolute;
+    transform: rotate(-45deg) translateY(-50%);
+    top: 47%;
+    left: 0.8rem;
+    cursor: pointer;
+  }
+  .head-box {
+    padding: 0 1.5rem;
+    display: flex;
+    width: 100%;
+    height: 100%;
+    align-items: center;
+    justify-content: center;
+    box-sizing: border-box;
+  }
+}
+</style>

+ 3 - 2
src/config/env.development.js

@@ -1,9 +1,10 @@
 // 本地环境配置
 module.exports = {
   env: 'development',
-  title: '摄影实验室预约', // 代理端-开发
+  title: 'cocorobo', // 代理端-开发
   baseUrl: 'http://localhost:9018', // 项目地址
-  baseApi: 'https://test.xxx.com/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+  baseApi: 'https://pbl.cocorobo.cn/api/pbl/', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+  // baseApi: 'http://localhost:7003/api/pbl/', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://imgs.solui.cn'

+ 2 - 2
src/config/env.production.js

@@ -1,9 +1,9 @@
 // 正式
 module.exports = {
   env: 'production',
-  title: '摄影实验室预约', // 代理端-生产
+  title: 'cocorobo', // 代理端-生产
   baseUrl: 'https://www.xxx.com/', // 正式项目地址
-  baseApi: 'https://www.xxx.com/api', // 正式api请求地址
+  baseApi: 'https://pbl.cocorobo.cn/api/pbl/', // 正式api请求地址
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://imgs.solui.cn'

+ 1 - 1
src/config/env.staging.js

@@ -1,6 +1,6 @@
 module.exports = {
   env: 'staging',
-  title: '摄影实验室预约', // 代理端-测试
+  title: 'cocorobo', // 代理端-测试
   baseUrl: 'https://test.xxx.com', // 测试项目地址
   baseApi: 'https://test.xxx.com/api', // 测试api请求地址
   APPID: 'xxx',

+ 134 - 0
src/const/index.js

@@ -0,0 +1,134 @@
+export const tools = {
+  1: {
+    name: '电子白板',
+    img: require('@/assets/images/tool/secondToolList/whiteBoard.png')
+  },
+  16: {
+    name: '作业提交',
+    img: require('@/assets/images/tool/thirdToolList/work.png')
+  },
+  10: {
+    name: '倒计时',
+    img: require('@/assets/images/tool/thirdToolList/time.png')
+  },
+  49: {
+    name: '学生分组',
+    img: require('@/assets/images/tool/fourthToolList/group.png')
+  },
+  7: {
+    name: '思维网格',
+    img: require('@/assets/images/tool/secondToolList/mindNetwork.png')
+  },
+  52: {
+    name: '文档',
+    img: require('@/assets/images/tool/fourthToolList/text.png')
+  },
+  3: {
+    name: '思维导图',
+    img: require('@/assets/images/tool/secondToolList/mindMapping.png')
+  },
+  4: {
+    name: '问卷调查',
+    img: require('@/assets/images/tool/thirdToolList/ask.png')
+  },
+  45: {
+    name: '选择题',
+    img: require('@/assets/images/tool/thirdToolList/choose.png')
+  },
+  15: {
+    name: '问答工具',
+    img: require('@/assets/images/tool/thirdToolList/answer.png')
+  },
+  50: {
+    name: '批量上传',
+    img: require('@/assets/images/tool/thirdToolList/plwork.png')
+  },
+  40: {
+    name: '个人评价',
+    img: require('@/assets/images/tool/thirdToolList/eval.png')
+  },
+  41: {
+    name: '选择填空',
+    img: require('@/assets/images/tool/thirdToolList/select.png')
+  },
+  47: {
+    name: '连词成句',
+    img: require('@/assets/images/tool/fourthToolList/conSentences.png')
+  },
+  48: {
+    name: '表格',
+    img: require('@/assets/images/tool/fourthToolList/table.png')
+  },
+  18: {
+    name: '训练平台',
+    img: require('@/assets/images/tool/thirdToolList/trainPlatform.png')
+  },
+  21: {
+    name: '编程平台',
+    img: require('@/assets/images/tool/fourthToolList/program.png')
+  },
+  22: {
+    name: 'AI体验',
+    img: require('@/assets/images/tool/fourthToolList/AIprogram2.png')
+  },
+  23: {
+    name: 'Python',
+    img: require('@/assets/images/tool/fourthToolList/Pythonprogram.png')
+  },
+  24: {
+    name: 'AI平台',
+    img: require('@/assets/images/tool/fourthToolList/AIprogram.png')
+  },
+  32: {
+    name: '源码编辑',
+    img: require('@/assets/images/tool/thirdToolList/code.png')
+  },
+  57: {
+    name: 'CocoPi',
+    img: require('@/assets/images/tool/fourthToolList/cocopi.png')
+  },
+  28: {
+    name: '翻译',
+    img: require('@/assets/images/tool/secondToolList/translation.png')
+  },
+  37: {
+    name: '魔盒识字',
+    img: require('@/assets/images/tool/secondToolList/mohe.png')
+  },
+  38: {
+    name: '24点',
+    img: require('@/assets/images/tool/secondToolList/24game.png')
+  },
+  31: {
+    name: '数学画板',
+    img: require('@/assets/images/tool/secondToolList/networkPanel.png')
+  },
+  39: {
+    name: 'GeoGebra',
+    img: require('@/assets/images/tool/secondToolList/GeoGebra.png')
+  },
+  58: {
+    name: '模拟驾驶',
+    img: require('@/assets/images/tool/fourthToolList/car.png')
+  },
+  59: {
+    name: '路径搜索',
+    img: require('@/assets/images/tool/fourthToolList/lineSearch.png')
+  },
+  60: {
+    name: '深度学习',
+    img: require('@/assets/images/tool/fourthToolList/deepLearning.png')
+  },
+  61: {
+    name: '全历史',
+    img: require('@/assets/images/tool/fourthToolList/allHistory.png')
+  },
+  26: {
+    name: '课程设计',
+    img: require('@/assets/images/tool/thirdToolList/courseDesign.png')
+  },
+  25: {
+    name: '目标管理',
+    img: require('@/assets/images/tool/thirdToolList/evalua.png')
+  }
+}

+ 9 - 1
src/router/router.config.js

@@ -5,7 +5,7 @@
 export const constantRouterMap = [
   {
     path: '/',
-    redirect: '/login'
+    redirect: '/course'
   },
   {
     path: '/login',
@@ -14,5 +14,13 @@ export const constantRouterMap = [
       title: '登录',
       keepAlive: false
     }
+  },
+  {
+    path: '/course',
+    component: () => import('@/views/course/index'),
+    meta: {
+      title: '课程',
+      keepAlive: false
+    }
   }
 ]

+ 9 - 0
src/views/course/components/courseContentList.vue

@@ -0,0 +1,9 @@
+<template>
+  <div class="ccl-content">内容列表</div>
+</template>
+
+<script>
+export default {}
+</script>
+
+<style lang="scss" scoped></style>

+ 81 - 0
src/views/course/components/courseTitle.vue

@@ -0,0 +1,81 @@
+<template>
+  <div class="ct-container">
+    <div class="ct-title">
+      <div class="ct-chap">第{{ courseType + 1 }}阶段</div>
+      <div class="ct-chap-title">{{ chapInfo.dyName }}</div>
+      <div class="ct-task">任务{{ taskCount + 1 }}</div>
+    </div>
+    <div class="ct-detail" v-if="chapInfo.chapterInfo && chapInfo.chapterInfo[0].taskJson[taskCount].taskDetail">
+      <div class="detail" v-html="chapInfo.chapterInfo[0].taskJson[taskCount].taskDetail"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    chapInfo: {
+      type: Object,
+      default: () => {}
+    },
+    courseType: {
+      type: Number,
+      default: 0
+    },
+    taskCount: {
+      type: Number,
+      default: 0
+    }
+  },
+  data() {
+    return {}
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.ct-container {
+  background: #fff;
+  width: 100%;
+  padding: 0.2rem;
+  box-sizing: border-box;
+  .ct-title {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    overflow: hidden;
+    .ct-chap {
+      border-left: 3px solid rgb(43, 93, 183);
+      font-size: 0.5rem;
+      font-weight: bold;
+      padding: 0 0 0 0.2rem;
+      min-width: fit-content;
+    }
+    .ct-chap-title {
+      font-size: 0.5rem;
+      margin: 0 0.3rem 0 0.5rem;
+      @include textoverflow(1);
+    }
+    .ct-task {
+      padding: 0.1rem;
+      color: #fff;
+      font-size: 12px;
+      background: rgb(73, 161, 241);
+      border-radius: 0.1rem;
+      min-width: fit-content;
+    }
+  }
+  /deep/ .ct-detail {
+    width: 100%;
+    padding: 0.1rem;
+    line-height: 25px;
+    box-sizing: border-box;
+    background: rgb(241, 241, 241);
+    word-break: break-all;
+    margin: 0.3rem 0 0;
+    p {
+      margin: 0;
+    }
+  }
+}
+</style>

+ 647 - 0
src/views/course/components/stepsBox.vue

@@ -0,0 +1,647 @@
+<template>
+  <div class="sb-container" v-if="chapInfo && chapInfo.chapterInfo">
+    <div class="steps-box" v-for="(step, stepI) in chapInfo.chapterInfo[0].taskJson[taskCount].toolChoose" :key="stepI">
+      <div class="step-title">
+        <div class="step">
+          <span>步骤{{ stepI + 1 }}</span>
+        </div>
+        <div class="do" v-if="worksStudent[stepI] && worksStudent[stepI].length > 6">收缩</div>
+      </div>
+      <div class="tool-box" v-if="tools[step.tool[0]]">
+        <div class="tool-img"><img :src="tools[step.tool[0]].img" /></div>
+        <div class="tool-name">{{ tools[step.tool[0]].name }}</div>
+      </div>
+      <div
+        class="works-box"
+        v-if="isWorkTool.indexOf(step.tool[0]) !== -1 && worksStudent[stepI] && worksStudent[stepI].length"
+      >
+        <div class="title">作业预览</div>
+      </div>
+      <div class="no-works-box" v-if="isWorkTool.indexOf(step.tool[0]) !== -1">
+        <div class="title">未提交</div>
+        <div v-if="noWorksS"></div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getCourseWorks, getCourseWorksStudentJuri } from '@/api/course'
+import { tools } from '@/const/index'
+export default {
+  props: {
+    chapInfo: {
+      type: Object,
+      default: () => {}
+    },
+    courseDetail: {
+      type: Object,
+      default: () => {}
+    },
+    courseType: {
+      type: Number,
+      default: 0
+    },
+    taskCount: {
+      type: Number,
+      default: 0
+    },
+    courseid: {
+      type: String,
+      default: ''
+    },
+    tcid: {
+      type: String,
+      default: ''
+    }
+  },
+  data() {
+    return {
+      worksStudent: [],
+      isWorksS: [],
+      isCloseList: [],
+      noWorksS: [],
+      isWorkTool: [16, 32, 57, 4, 45, 15, 1, 3, 6, 7, 26, 41, 47, 48, 52, 50, 40, 49],
+      tools: tools
+    }
+  },
+  watch: {
+    courseid(newValue, oldValue) {
+      this.getWorks()
+    }
+  },
+  methods: {
+    arrayToArray(arrayo, arrayt) {
+      const array1 = arrayo
+      const array2 = arrayt
+
+      const commonElements = []
+
+      for (let i = 0; i < array1.length; i++) {
+        for (let j = 0; j < array2.length; j++) {
+          if (array1[i] === array2[j]) {
+            commonElements.push(array1[i])
+          }
+        }
+      }
+      return commonElements
+    },
+    getWorks() {
+      // 教师查看全部作业
+      const params = {
+        cid: this.courseid,
+        s: this.courseType,
+        t: this.taskCount
+      }
+      getCourseWorks(params)
+        .then(res => {
+          const works = res[0]
+          const f = res[3]
+          const steps = this.chapInfo.chapterInfo[0].taskJson[this.taskCount].toolChoose
+          const worksStudent = []
+          const isCloseList = []
+          const groupStudent = []
+          const groupStudentUid = []
+          const isWorksS = []
+          const wordPan = ['PDF', 'DOC', 'DOCX', 'PPT', 'PPTX', 'XLSX', 'XLS']
+          const videoPan = [
+            'AVI',
+            'NAVI',
+            'MPEG',
+            'ASF',
+            'MOV',
+            'WMV',
+            '3GP',
+            'RM',
+            'RMVB',
+            'FLV',
+            'F4V',
+            'H.264',
+            'H.265',
+            'REAL VIDEO',
+            'MKV',
+            'WebM',
+            'HDDVD',
+            'MP4',
+            'MPG',
+            'M4V',
+            'MGV',
+            'OGV',
+            'QTM',
+            'STR',
+            'AMC',
+            'DVX',
+            'EVO',
+            'DAT',
+            'OGG',
+            'OGM'
+          ]
+          console.log(works)
+          for (var step = 0; step < steps.length; step++) {
+            worksStudent[step] = []
+            if (!isCloseList[step] || isCloseList[step].isClose === undefined) {
+              isCloseList[step] = { isClose: 0 }
+            }
+            groupStudent[step] = []
+            isWorksS[step] = []
+            groupStudentUid[step] = []
+            if (steps[step].tool[0] === 49) {
+              for (var gA = 0; gA < steps[step].groupJson.group.length; gA++) {
+                groupStudent[step][gA] = []
+                groupStudentUid[step][gA] = []
+                worksStudent[step][gA] = []
+                isCloseList[step][gA] = []
+
+                for (var g = 0; g < f.length; g++) {
+                  if (
+                    f[g].ttype === 2 &&
+                    this.tcid &&
+                    this.arrayToArray(f[g].classid.split(','), this.tcid.split(',')).length === 0
+                  ) {
+                    continue
+                  }
+                  if (gA === f[g].group && f[g].tool === step) {
+                    this.groupStudent[step][gA].push(f[g])
+                    this.groupStudentUid[step][gA].push(f[g].userid)
+                  }
+                }
+              }
+              this.$forceUpdate()
+            }
+            for (var j = 0; j < works.length; j++) {
+              if (
+                works[j].ttype === 2 &&
+                this.tcid &&
+                this.arrayToArray(works[j].classid.split(','), this.tcid.split(',')).length === 0
+              ) {
+                continue
+              }
+              var likesCount = 0
+              var commentCount = 0
+              var isLikes = false
+              var commentJson = []
+
+              if (step === works[j].tool) {
+                if (
+                  (works[j].type === 1 ||
+                    works[j].type === 4 ||
+                    works[j].type === 5 ||
+                    works[j].type === 6 ||
+                    works[j].type === 12 ||
+                    works[j].type === 7) &&
+                  steps[step].tool[0] !== 15 &&
+                  steps[step].tool[0] !== 4 &&
+                  steps[step].tool[0] !== 45 &&
+                  steps[step].tool[0] !== 50 &&
+                  steps[step].tool[0] !== 32 &&
+                  steps[step].tool[0] !== 57 &&
+                  steps[step].tool[0] !== 52
+                ) {
+                  if (
+                    wordPan.indexOf(
+                      works[j].content.split('.')[works[j].content.split('.').length - 1].toLocaleUpperCase()
+                    ) !== -1 &&
+                    steps[step].tool[0] === 16 &&
+                    works[j].atool !== 50
+                  ) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 1,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (
+                    videoPan.indexOf(
+                      works[j].content.split('.')[works[j].content.split('.').length - 1].toLocaleUpperCase()
+                    ) !== -1 &&
+                    steps[step].tool[0] === 16 &&
+                    works[j].atool !== 50
+                  ) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 3,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (works[j].type === 6 && works[j].atool !== 50) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 4,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (works[j].type === 7 && works[j].atool !== 50) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 5,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (works[j].type === 12 && steps[step].tool[0] === works[j].atool) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 12,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (works[j].type === 1 && steps[step].tool[0] === works[j].atool) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 0,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  } else if (works[j].type === 1 && !parseInt(works[j].atool)) {
+                    const _works = {
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: works[j].content,
+                      sName: works[j].name,
+                      type: 0,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    }
+
+                    worksStudent[step].push(_works)
+                    isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                  }
+                } else if (works[j].type === 3 && steps[step].tool[0] === 15) {
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 2,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 2 && steps[step].tool[0] === 4) {
+                  // 问卷
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 2,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 8 && steps[step].tool[0] === 45) {
+                  // 选择题
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 8,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 9 && steps[step].tool[0] === 47) {
+                  // 选择题
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 9,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 10 && steps[step].tool[0] === 48) {
+                  // 选择题
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 10,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 13 && steps[step].tool[0] === 52) {
+                  // 选择题
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name,
+                    type: 13,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (works[j].type === 11 && steps[step].tool[0] === 49) {
+                  const _gindex = JSON.parse(works[j].content)
+                  if (groupStudentUid[step][_gindex.groupIndex].indexOf(works[j].userid) !== -1) {
+                    worksStudent[step][_gindex.groupIndex].push({
+                      userid: works[j].userid,
+                      ateacher: works[j].ateacher,
+                      wid: works[j].id,
+                      works: _gindex.url,
+                      sName: works[j].name,
+                      type: _gindex.type,
+                      time: works[j].time,
+                      score: works[j].score,
+                      img: works[j].img,
+                      likesCount: likesCount,
+                      commentCount: commentCount,
+                      isLikes: isLikes,
+                      commentJson: commentJson
+                    })
+                  }
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (steps[step].tool[0] === 50 && works[j].atool === 50) {
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name ? works[j].name : works[j].userid,
+                    type: works[j].type === 1 ? 0 : works[j].type === 4 ? 1 : 3,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (steps[step].tool[0] === 32 && works[j].atool === 32) {
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name ? works[j].name : works[j].userid,
+                    type: 12,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                } else if (steps[step].tool[0] === 57 && works[j].atool === 57) {
+                  const _works = {
+                    userid: works[j].userid,
+                    ateacher: works[j].ateacher,
+                    wid: works[j].id,
+                    works: works[j].content,
+                    sName: works[j].name ? works[j].name : works[j].userid,
+                    type: 12,
+                    time: works[j].time,
+                    score: works[j].score,
+                    img: works[j].img,
+                    likesCount: likesCount,
+                    commentCount: commentCount,
+                    isLikes: isLikes,
+                    commentJson: commentJson
+                  }
+
+                  worksStudent[step].push(_works)
+                  isWorksS[step].push({ uid: works[j].userid, sName: works[j].name })
+                }
+              }
+            }
+          }
+          this.worksStudent = worksStudent
+          this.isCloseList = isCloseList
+          this.groupStudent = groupStudent
+          this.groupStudentUid = groupStudentUid
+          this.isWorksS = isWorksS
+          this.$forceUpdate()
+          this.selectWorksStudent()
+        })
+        .catch(err => {
+          console.error(err)
+        })
+    },
+    selectWorksStudent() {
+      const params = {
+        oid: this.oid,
+        cid: this.courseDetail.juri
+      }
+      getCourseWorksStudentJuri(params)
+        .then(res => {
+          var a = res[0]
+          for (var i = 0; i < this.isWorksS.length; i++) {
+            this.noWorksS[i] = []
+            var studentK = []
+            for (var z = 0; z < this.isWorksS[i].length; z++) {
+              studentK.push(this.isWorksS[i][z].uid)
+            }
+            studentK = studentK.join(',')
+            for (var j = 0; j < a.length; j++) {
+              if (studentK.indexOf(a[j].userid) === -1) {
+                if (this.tcid) {
+                  if (this.arrayToArray(a[j].classid.split(','), this.tcid.split(',')).length) {
+                    this.noWorksS[i].push({
+                      student: a[j].name,
+                      userid: a[j].userid
+                    })
+                  }
+                } else {
+                  this.noWorksS[i].push({
+                    student: a[j].name,
+                    userid: a[j].userid
+                  })
+                }
+              }
+            }
+          }
+          this.$forceUpdate()
+        })
+        .catch(err => {
+          console.log(err)
+        })
+    }
+  },
+  mounted() {
+    this.getWorks()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.sb-container {
+  width: 100%;
+  box-sizing: border-box;
+  padding: 0 0.3rem;
+  .steps-box {
+    width: 100%;
+    border-bottom: 1px solid rgb(239, 239, 239);
+    padding: 0.3rem 0;
+    .step-title {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      height: 0.8rem;
+      .step {
+        font-size: 0.45rem;
+        font-weight: bold;
+        display: flex;
+        height: 100%;
+        align-items: center;
+        &::before {
+          content: '';
+          height: 100%;
+          width: 3px;
+          display: block;
+          margin-right: 0.2rem;
+          background-image: linear-gradient(180deg, #2c5cbd, #a1cff4);
+        }
+      }
+    }
+  }
+  .works-box {
+    .title {
+      font-size: 0.35rem;
+      color: #858585;
+    }
+  }
+  .no-works-box {
+    .title {
+      font-size: 0.35rem;
+      color: #858585;
+    }
+  }
+}
+</style>

+ 188 - 0
src/views/course/index.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="course-container">
+    <head-bar :isBack="false">
+      <template #title>
+        <div class="course-nav-box">
+          <span class="list"></span>
+          <span class="last">上一步</span>
+          <span class="next">下一步</span>
+          <span class="comment">评课</span>
+        </div>
+      </template>
+    </head-bar>
+    <div class="course-box">
+      <course-title :chapInfo="chapInfo" :courseType="courseType" :taskCount="taskCount"></course-title>
+      <course-content-list></course-content-list>
+      <div class="course-type-box">
+        <div class="type-nav">
+          <div class="type-nav-box" :class="{ active: type == 1 }" @click="setType(1)">
+            <img src="@/assets/images/course/pratice-acitve.png" v-if="type == 1" alt="" />
+            <img src="@/assets/images/course/pratice.png" v-else alt="" />
+            <span>练习</span>
+          </div>
+          <div class="type-nav-box" :class="{ active: type == 2 }" @click="setType(2)">
+            <img src="@/assets/images/course/commmt-active.png" v-if="type == 2" alt="" />
+            <img src="@/assets/images/course/comment.png" v-else alt="" />
+            <span>评课</span>
+          </div>
+        </div>
+        <steps-box
+          v-if="type == 1"
+          :courseDetail="courseDetail"
+          :chapInfo="chapInfo"
+          :courseType="courseType"
+          :taskCount="taskCount"
+          :courseid="courseid"
+          :tcid="tcid"
+        ></steps-box>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import headBar from '@/components/headBar.vue'
+import courseTitle from './components/courseTitle'
+import courseContentList from './components/courseContentList'
+import CourseContentList from './components/courseContentList.vue'
+import stepsBox from './components/stepsBox.vue'
+import { getCourseInfo } from '@/api/course'
+
+export default {
+  components: {
+    headBar,
+    courseTitle,
+    courseContentList,
+    CourseContentList,
+    stepsBox
+  },
+  data() {
+    return {
+      courseid: this.$route.query.courseid,
+      courseDetail: {},
+      chapInfo: {},
+      courseType: 0,
+      taskCount: 0,
+      type: 1,
+      tcid: '',
+      tcid2: this.$route.query.tcid
+    }
+  },
+  methods: {
+    arrayToArray(arrayo, arrayt) {
+      const array1 = arrayo
+      const array2 = arrayt
+
+      const commonElements = []
+
+      for (let i = 0; i < array1.length; i++) {
+        for (let j = 0; j < array2.length; j++) {
+          if (array1[i] === array2[j]) {
+            commonElements.push(array1[i])
+          }
+        }
+      }
+      return commonElements
+    },
+    getCourse() {
+      const params = {
+        courseId: this.courseid
+      }
+      getCourseInfo(params)
+        .then(res => {
+          this.courseDetail = res[0][0]
+          this.chapInfo = JSON.parse(this.courseDetail.chapters)[this.courseType]
+          this.tcid = this.arrayToArray(
+            this.courseDetail.juri ? this.courseDetail.juri.split(',') : [],
+            this.tcid2 ? this.tcid2.split(',') : []
+          ).join(',')
+          console.log(res)
+        })
+        .catch(err => {
+          console.error(err)
+        })
+    },
+    setType(type) {
+      this.type = type
+    }
+  },
+  created() {
+    this.getCourse()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.course-container {
+  width: 100vw;
+  height: 100vh;
+  overflow: auto;
+  background: rgb(231, 231, 231);
+  .course-nav-box {
+    width: 100%;
+    color: #fff;
+    position: relative;
+    box-sizing: border-box;
+    padding-left: 0.8rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 0.4rem;
+    > span {
+      cursor: pointer;
+    }
+    .list {
+      width: 0.8rem;
+      height: 0.8rem;
+      // background: #fff;
+      background-image: url(../../assets/images/course/list.png);
+      background-size: cover;
+      position: absolute;
+      left: 0;
+    }
+    .next {
+      margin: 0 0.6rem;
+    }
+  }
+  .course-box {
+    margin-top: 1.5rem;
+    width: 100%;
+  }
+  .course-type-box {
+    background: #fff;
+    width: 100%;
+    .type-nav {
+      height: 1rem;
+      width: 100%;
+      display: flex;
+      align-items: center;
+      padding: 0 0.5rem;
+      box-sizing: border-box;
+      border-bottom: 1px solid rgb(239, 239, 239);
+    }
+    .type-nav-box {
+      height: 100%;
+      display: flex;
+      font-size: 0.4rem;
+      align-items: center;
+      box-sizing: border-box;
+      padding-bottom: 2px;
+
+      + .type-nav-box {
+        margin-left: 1rem;
+      }
+
+      &.active {
+        padding-bottom: 0;
+        color: rgb(73, 161, 241);
+        border-bottom: 2px solid rgb(73, 161, 241);
+      }
+      > img {
+        width: 0.5rem;
+        height: 0.5rem;
+        object-fit: cover;
+      }
+    }
+  }
+}
+</style>

+ 1 - 96
src/views/login/index.vue

@@ -1,21 +1,6 @@
 <template>
   <div class="loginBox">
-    <div class="loginPhoto">
-      <img src="../../assets/loginPhoto.png" alt="" />
-    </div>
-    <div class="login_container">
-      <div class="top">
-        <div class="title">登录</div>
-        <div class="subtitle">统一身份认证</div>
-      </div>
-      <div class="middle">
-        <input type="text" placeholder="学号" />
-        <input type="password" placeholder="密码" />
-      </div>
-      <div class="bottom">
-        <button @click="handleLogin">登录</button>
-      </div>
-    </div>
+    <button @click="handleLogin">登录</button>
   </div>
 </template>
 
@@ -37,20 +22,6 @@ export default {
   methods: {
     handleLogin() {
       this.$router.push({ path: this.redirect || '/' })
-      // this.$refs.loginForm.validate(valid => {
-      //   if (valid) {
-      //     this.loading = true
-      //     this.$store.dispatch('user/login', this.loginForm).then(() => {
-      //       this.$router.push({ path: this.redirect || '/' })
-      //       this.loading = false
-      //     }).catch(() => {
-      //       this.loading = false
-      //     })
-      //   } else {
-      //     console.log('错误提交!!')
-      //     return false
-      //   }
-      // })
     }
   }
 }
@@ -62,71 +33,5 @@ export default {
   width: 100vw;
   height: 100vh;
   overflow: hidden;
-  .loginPhoto {
-    position: absolute;
-    height: 60vh;
-    width: 100%;
-    right: -10vh;
-    top: 0.5rem;
-    display: flex;
-    justify-content: flex-end;
-    > img {
-      height: 100%;
-    }
-  }
-  .login_container {
-    position: absolute;
-    bottom: 10vh;
-    padding: 0 1rem;
-    box-sizing: border-box;
-    width: 100vw;
-    .top {
-      width: 100%;
-      max-width: 500px;
-      margin: 0 auto 1rem;
-      .title {
-        font-size: 0.8rem;
-        font-weight: 600;
-        border-left: 0.10667rem solid #ffbf6b;
-        height: 0.8rem;
-        display: block;
-        width: 100%;
-        padding-left: 0.3rem;
-        line-height: 0.8rem;
-      }
-      .subtitle {
-        color: rgba(16, 16, 16, 1);
-        margin-top: 0.2rem;
-      }
-    }
-    .middle {
-      width: 90%;
-      margin: 0 auto 1rem;
-      max-width: 450px;
-      > input {
-        display: block;
-        width: 100%;
-        height: 0.7rem;
-        margin: 0 auto 0.5rem;
-        border: none;
-        border-bottom: 1px solid rgba(0, 0, 0, 1);
-      }
-    }
-    .bottom {
-      width: 100%;
-      max-width: 500px;
-      margin: 0 auto;
-      button {
-        width: 100%;
-        height: 36px;
-        border-radius: 20px;
-        background-color: rgba(51, 51, 51, 1);
-        text-align: center;
-        border: none;
-        color: #fff;
-        cursor: pointer;
-      }
-    }
-  }
 }
 </style>