初次提交

develoop
aaaa 6 months ago
parent fdef8ce4d4
commit b44aaf3849
  1. 28
      mock/user.ts
  2. BIN
      public/0.jpg
  3. BIN
      public/1.jpg
  4. BIN
      public/2.jpg
  5. BIN
      public/wl.png
  6. 1
      src/assets/icons/dianzan.svg
  7. 1
      src/assets/icons/dianzanred.svg
  8. 1
      src/assets/icons/点赞.svg
  9. BIN
      src/assets/images/0.jpg
  10. BIN
      src/assets/images/1.jpg
  11. BIN
      src/assets/images/1.png
  12. BIN
      src/assets/images/3.png
  13. BIN
      src/assets/images/ck.png
  14. BIN
      src/assets/images/dx.png
  15. BIN
      src/assets/images/kc.jpg
  16. BIN
      src/assets/images/logo.png
  17. BIN
      src/assets/images/logo1.png
  18. BIN
      src/assets/images/ls.jpg
  19. BIN
      src/assets/images/rjgz.jpg
  20. BIN
      src/assets/images/rwd.png
  21. BIN
      src/assets/images/sj.png
  22. BIN
      src/assets/images/wl.png
  23. BIN
      src/assets/images/xs.jpg
  24. BIN
      src/assets/images/zy.jpg
  25. BIN
      src/assets/images/图灵云logo.png
  26. BIN
      src/assets/images/小旗子.png
  27. BIN
      src/assets/images/搜索.png
  28. BIN
      src/assets/images/点赞 (1).png
  29. BIN
      src/assets/images/点赞.png
  30. BIN
      src/assets/images/知识点.png
  31. BIN
      src/assets/images/统计计算.png
  32. BIN
      src/assets/images/课程.png
  33. 4
      src/layout/main/index.vue
  34. 2
      src/layout/menu/index.vue
  35. 3
      src/router/routers.ts
  36. 13
      src/views/MyCourseStudy/Courselikes.vue
  37. 13
      src/views/MyCourseStudy/courseCollections.vue
  38. 13
      src/views/MyCourseStudy/learningProcess.vue
  39. 13
      src/views/course/CourseObjectives.vue
  40. 13
      src/views/course/basicCourseInformation.vue
  41. 13
      src/views/course/courseChapters.vue
  42. 13
      src/views/course/curriculumMap.vue
  43. 13
      src/views/course/knowledgePoints.vue
  44. 29
      src/views/home/index.vue
  45. 1
      src/views/login/index.vue
  46. 60
      src/views/portal/LearningPathRecommendations.vue
  47. 538
      src/views/portal/courseHomepage.vue
  48. 351
      src/views/portal/courseReports.vue
  49. 1044
      src/views/portal/index.vue
  50. 13
      src/views/portal/knowledgePointLearning.vue

@ -10,7 +10,18 @@ function createUserList() {
desc: '平台管理员',
roles: ['平台管理员'],
buttons: ['cuser.detail'],
routes: ['Home', 'Course', 'Student', 'Group', 'Message','BasicCourseInformation','CourseObjectives','CourseChapters','KnowledgePoints','CurriculumMap'], //老师权限
routes: [
'Home',
'Course',
'Student',
'Group',
'Message',
'BasicCourseInformation',
'CourseObjectives',
'CourseChapters',
'KnowledgePoints',
'CurriculumMap',
], //老师权限
token: 'Admin Token',
},
{
@ -22,7 +33,20 @@ function createUserList() {
desc: '系统管理员',
roles: ['系统管理员'],
buttons: ['cuser.detail', 'cuser.user'],
routes: ['Home', 'MyCourseStudy', 'CourseResources', 'Message','LearningProcess','CourseCollections','Courselikes','WebHome','CourseHome','LearningPathRecommendations','KnowledgePointLearning','CourseReports'], //学生权限
routes: [
'Home',
'MyCourseStudy',
'CourseResources',
'Message',
'LearningProcess',
'CourseCollections',
'Courselikes',
'WebHome',
'CourseHome',
'LearningPathRecommendations',
'KnowledgePointLearning',
'CourseReports',
], //学生权限
token: 'System Token',
},
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716801285381" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3407" data-spm-anchor-id="a313x.search_index.0.i4.36a13a81tckiXp" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M190.193225 471.411583c14.446014 0 26.139334-11.718903 26.139334-26.13831 0-14.44499-11.69332-26.164916-26.139334-26.164916-0.271176 0-0.490164 0.149403-0.73678 0.149403l-62.496379 0.146333c-1.425466-0.195451-2.90005-0.295735-4.373611-0.295735-19.677155 0-35.621289 16.141632-35.621289 36.114522L86.622358 888.550075c0 19.949354 15.96767 35.597753 35.670407 35.597753 1.916653 0 3.808746 0.292666 5.649674 0l61.022819 0.022513c0.099261 0 0.148379 0.048095 0.24764 0.048095 0.097214 0 0.146333-0.048095 0.24457-0.048095l0.73678 0 0-0.148379c13.413498-0.540306 24.174586-11.422144 24.174586-24.960485 0-13.55983-10.760065-24.441669-24.174586-24.981974l0-0.393973-50.949392 0 1.450025-402.275993L190.193225 471.409536z" fill="#5D5D5D" p-id="3408"></path><path d="M926.52241 433.948343c-19.283182-31.445176-47.339168-44.172035-81.289398-45.546336-1.77032-0.246617-3.536546-0.39295-5.380544-0.39295l-205.447139-0.688685c13.462616-39.059598 22.698978-85.58933 22.698978-129.317251 0-28.349675-3.193739-55.962569-9.041934-82.542948l-0.490164 0.049119c-10.638291-46.578852-51.736315-81.31498-100.966553-81.31498-57.264215 0-95.466282 48.15065-95.466282 106.126063 0 3.241834-0.294712 6.387477 0 9.532097-2.996241 108.386546-91.240027 195.548698-196.23636 207.513194l0 54.881958-0.785899 222.227314 0 229.744521 10.709923 0 500.025271 0.222057 8.746198-0.243547c19.35686 0.049119 30.239721-4.817726 47.803749-16.116049 16.682961-10.761088 29.236881-25.50079 37.490869-42.156122 2.260483-3.341095 4.028757-7.075139 5.106298-11.20111l77.018118-344.324116c1.056052-4.053316 1.348718-8.181333 1.056052-12.160971C943.643346 476.446249 938.781618 453.944769 926.52241 433.948343zM893.82573 486.837924l-82.983993 367.783411-0.099261-0.049119c-2.555196 6.141884-6.879688 11.596106-12.872169 15.427364-4.177136 2.727111-8.773827 4.351098-13.414521 4.964058-1.49812-0.195451-3.046383 0-4.620227 0l-477.028511-0.540306-0.171915-407.408897c89.323375-40.266076 154.841577-79.670527 188.596356-173.661202 0.072655 0.024559 0.124843 0.049119 0.195451 0.072655 2.99931-9.137101 6.313799-20.73423 8.697079-33.164331 5.551436-29.185716 5.258771-58.123792 5.258771-58.123792-4.937452-37.98001 25.940812-52.965306 44.364417-52.965306 25.304316 0.860601 50.263777 33.656541 50.263777 52.326762 0 0 5.600555 27.563776 5.649674 57.190537 0.048095 37.366026-4.6673 56.847729-4.6673 56.847729l-0.466628 0c-5.872754 30.879288-16.214287 60.138682-30.464849 86.964654l0.36839 0.342808c-2.358721 4.815679-3.709485 10.220782-3.709485 15.943111 0 19.922748 19.088754 21.742187 38.765909 21.742187l238.761895 0.270153c0 0 14.666024 0.465604 14.690584 0.465604l0 0.100284c12.132318-0.638543 24.221658 5.207605 31.100322 16.409738 5.504364 9.016351 6.437619 19.6045 3.486404 28.988218L893.82573 486.837924z" fill="#5D5D5D" p-id="3409"></path><path d="M264.827039 924.31872c0.319272 0.024559 0.441045 0.024559 0.295735-0.024559 0.243547-0.048095 0.367367-0.074701-0.295735-0.074701s-0.539282 0.026606-0.271176 0.074701C264.43409 924.343279 264.532327 924.343279 264.827039 924.31872z" fill="#5D5D5D" p-id="3410"></path></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716801285381" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3407" data-spm-anchor-id="a313x.search_index.0.i4.36a13a81tckiXp" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M190.193225 471.411583c14.446014 0 26.139334-11.718903 26.139334-26.13831 0-14.44499-11.69332-26.164916-26.139334-26.164916-0.271176 0-0.490164 0.149403-0.73678 0.149403l-62.496379 0.146333c-1.425466-0.195451-2.90005-0.295735-4.373611-0.295735-19.677155 0-35.621289 16.141632-35.621289 36.114522L86.622358 888.550075c0 19.949354 15.96767 35.597753 35.670407 35.597753 1.916653 0 3.808746 0.292666 5.649674 0l61.022819 0.022513c0.099261 0 0.148379 0.048095 0.24764 0.048095 0.097214 0 0.146333-0.048095 0.24457-0.048095l0.73678 0 0-0.148379c13.413498-0.540306 24.174586-11.422144 24.174586-24.960485 0-13.55983-10.760065-24.441669-24.174586-24.981974l0-0.393973-50.949392 0 1.450025-402.275993L190.193225 471.409536z" fill="#d81e06" p-id="3408"></path><path d="M926.52241 433.948343c-19.283182-31.445176-47.339168-44.172035-81.289398-45.546336-1.77032-0.246617-3.536546-0.39295-5.380544-0.39295l-205.447139-0.688685c13.462616-39.059598 22.698978-85.58933 22.698978-129.317251 0-28.349675-3.193739-55.962569-9.041934-82.542948l-0.490164 0.049119c-10.638291-46.578852-51.736315-81.31498-100.966553-81.31498-57.264215 0-95.466282 48.15065-95.466282 106.126063 0 3.241834-0.294712 6.387477 0 9.532097-2.996241 108.386546-91.240027 195.548698-196.23636 207.513194l0 54.881958-0.785899 222.227314 0 229.744521 10.709923 0 500.025271 0.222057 8.746198-0.243547c19.35686 0.049119 30.239721-4.817726 47.803749-16.116049 16.682961-10.761088 29.236881-25.50079 37.490869-42.156122 2.260483-3.341095 4.028757-7.075139 5.106298-11.20111l77.018118-344.324116c1.056052-4.053316 1.348718-8.181333 1.056052-12.160971C943.643346 476.446249 938.781618 453.944769 926.52241 433.948343zM893.82573 486.837924l-82.983993 367.783411-0.099261-0.049119c-2.555196 6.141884-6.879688 11.596106-12.872169 15.427364-4.177136 2.727111-8.773827 4.351098-13.414521 4.964058-1.49812-0.195451-3.046383 0-4.620227 0l-477.028511-0.540306-0.171915-407.408897c89.323375-40.266076 154.841577-79.670527 188.596356-173.661202 0.072655 0.024559 0.124843 0.049119 0.195451 0.072655 2.99931-9.137101 6.313799-20.73423 8.697079-33.164331 5.551436-29.185716 5.258771-58.123792 5.258771-58.123792-4.937452-37.98001 25.940812-52.965306 44.364417-52.965306 25.304316 0.860601 50.263777 33.656541 50.263777 52.326762 0 0 5.600555 27.563776 5.649674 57.190537 0.048095 37.366026-4.6673 56.847729-4.6673 56.847729l-0.466628 0c-5.872754 30.879288-16.214287 60.138682-30.464849 86.964654l0.36839 0.342808c-2.358721 4.815679-3.709485 10.220782-3.709485 15.943111 0 19.922748 19.088754 21.742187 38.765909 21.742187l238.761895 0.270153c0 0 14.666024 0.465604 14.690584 0.465604l0 0.100284c12.132318-0.638543 24.221658 5.207605 31.100322 16.409738 5.504364 9.016351 6.437619 19.6045 3.486404 28.988218L893.82573 486.837924z" fill="#d81e06" p-id="3409"></path><path d="M264.827039 924.31872c0.319272 0.024559 0.441045 0.024559 0.295735-0.024559 0.243547-0.048095 0.367367-0.074701-0.295735-0.074701s-0.539282 0.026606-0.271176 0.074701C264.43409 924.343279 264.532327 924.343279 264.827039 924.31872z" fill="#d81e06" p-id="3410"></path></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716799682617" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3051" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M190.193225 471.411583c14.446014 0 26.139334-11.718903 26.139334-26.13831 0-14.44499-11.69332-26.164916-26.139334-26.164916-0.271176 0-0.490164 0.149403-0.73678 0.149403l-62.496379 0.146333c-1.425466-0.195451-2.90005-0.295735-4.373611-0.295735-19.677155 0-35.621289 16.141632-35.621289 36.114522L86.622358 888.550075c0 19.949354 15.96767 35.597753 35.670407 35.597753 1.916653 0 3.808746 0.292666 5.649674 0l61.022819 0.022513c0.099261 0 0.148379 0.048095 0.24764 0.048095 0.097214 0 0.146333-0.048095 0.24457-0.048095l0.73678 0 0-0.148379c13.413498-0.540306 24.174586-11.422144 24.174586-24.960485 0-13.55983-10.760065-24.441669-24.174586-24.981974l0-0.393973-50.949392 0 1.450025-402.275993L190.193225 471.409536z" fill="#d81e06" p-id="3052"></path><path d="M926.52241 433.948343c-19.283182-31.445176-47.339168-44.172035-81.289398-45.546336-1.77032-0.246617-3.536546-0.39295-5.380544-0.39295l-205.447139-0.688685c13.462616-39.059598 22.698978-85.58933 22.698978-129.317251 0-28.349675-3.193739-55.962569-9.041934-82.542948l-0.490164 0.049119c-10.638291-46.578852-51.736315-81.31498-100.966553-81.31498-57.264215 0-95.466282 48.15065-95.466282 106.126063 0 3.241834-0.294712 6.387477 0 9.532097-2.996241 108.386546-91.240027 195.548698-196.23636 207.513194l0 54.881958-0.785899 222.227314 0 229.744521 10.709923 0 500.025271 0.222057 8.746198-0.243547c19.35686 0.049119 30.239721-4.817726 47.803749-16.116049 16.682961-10.761088 29.236881-25.50079 37.490869-42.156122 2.260483-3.341095 4.028757-7.075139 5.106298-11.20111l77.018118-344.324116c1.056052-4.053316 1.348718-8.181333 1.056052-12.160971C943.643346 476.446249 938.781618 453.944769 926.52241 433.948343zM893.82573 486.837924l-82.983993 367.783411-0.099261-0.049119c-2.555196 6.141884-6.879688 11.596106-12.872169 15.427364-4.177136 2.727111-8.773827 4.351098-13.414521 4.964058-1.49812-0.195451-3.046383 0-4.620227 0l-477.028511-0.540306-0.171915-407.408897c89.323375-40.266076 154.841577-79.670527 188.596356-173.661202 0.072655 0.024559 0.124843 0.049119 0.195451 0.072655 2.99931-9.137101 6.313799-20.73423 8.697079-33.164331 5.551436-29.185716 5.258771-58.123792 5.258771-58.123792-4.937452-37.98001 25.940812-52.965306 44.364417-52.965306 25.304316 0.860601 50.263777 33.656541 50.263777 52.326762 0 0 5.600555 27.563776 5.649674 57.190537 0.048095 37.366026-4.6673 56.847729-4.6673 56.847729l-0.466628 0c-5.872754 30.879288-16.214287 60.138682-30.464849 86.964654l0.36839 0.342808c-2.358721 4.815679-3.709485 10.220782-3.709485 15.943111 0 19.922748 19.088754 21.742187 38.765909 21.742187l238.761895 0.270153c0 0 14.666024 0.465604 14.690584 0.465604l0 0.100284c12.132318-0.638543 24.221658 5.207605 31.100322 16.409738 5.504364 9.016351 6.437619 19.6045 3.486404 28.988218L893.82573 486.837924z" fill="#d81e06" p-id="3053"></path><path d="M264.827039 924.31872c0.319272 0.024559 0.441045 0.024559 0.295735-0.024559 0.243547-0.048095 0.367367-0.074701-0.295735-0.074701s-0.539282 0.026606-0.271176 0.074701C264.43409 924.343279 264.532327 924.343279 264.827039 924.31872z" fill="#d81e06" p-id="3054"></path></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -3,8 +3,8 @@
<!-- 过度动画 -->
<transition name="fade">
<!-- 要渲染的组件 -->
<div v-if="refresh" >
<component :is="Component"/>
<div v-if="refresh">
<component :is="Component" />
</div>
</transition>
</router-view>

@ -76,4 +76,4 @@ export default {
name: 'Menu',
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped></style>

@ -258,7 +258,8 @@ export const constantRoute: any = [
},
{
path: '/portal/LearningPathRecommendations',
component: () => import('@/views/portal/LearningPathRecommendations.vue'),
component: () =>
import('@/views/portal/LearningPathRecommendations.vue'),
name: 'LearningPathRecommendations',
meta: {
title: '学习路径推荐',

@ -1,14 +1,9 @@
<template>
<div>
课程点赞
</div>
<div>课程点赞</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
课程收藏
</div>
<div>课程收藏</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
学习过程
</div>
<div>学习过程</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
课程目标
</div>
<div>课程目标</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
课程基本信息
</div>
<div>课程基本信息</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
课程章节
</div>
<div>课程章节</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
课程图谱
</div>
<div>课程图谱</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,14 +1,9 @@
<template>
<div>
知识点
</div>
<div>知识点</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

@ -1,6 +1,10 @@
<template>
<div>home</div>
<svg-icon name="count" width="300px" height="300px" color="pink"></svg-icon>
<svg-icon name="count" width="300px" height="300px" color="#000"></svg-icon>
<div class="box">
<div class="box1"></div>
<div class="box2"></div>
</div>
</template>
<script lang="ts" setup>
@ -13,4 +17,25 @@
// })
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.box {
width: 500px;
height: 400px;
background-color: skyblue;
display: flex;
// flex-direction: column;
justify-content: space-evenly;
align-items: center;
div {
width: 100px;
height: 100px;
}
.box1 {
background-color: pink;
}
.box2 {
background-color: greenyellow;
}
}
</style>

@ -1,6 +1,5 @@
<template>
<div id="your-element-selector" style="width: 100%; height: 100vh"></div>
<div class="login_container">
<el-row>
<el-col

@ -1,14 +1,58 @@
<template>
<div>
学习路径推荐
</div>
<div>
<svg-icon
@click="changePraise()"
v-if="!flog"
name="dianzan"
width="32px"
height="32px"
/>
<svg-icon
@click="changePraise()"
v-else
name="dianzanred"
width="32px"
height="32px"
/>
<!-- <push-button @click="changePraise()"><div class="a"><img src="/src/assets/images/点赞.png" width="100%" height="100%"></div>点赞呀</push-button> -->
<h1>已被点赞{{ praise }}</h1>
</div>
</template>
<!-- 学习路径推荐 -->
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import { ref } from 'vue'
const praise = ref(1000)
const flog = ref(false)
const changePraise = (num = 1) => {
if (!flog.value) {
praise.value++
flog.value = !flog.value
} else {
praise.value--
flog.value = !flog.value
}
}
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.a {
width: 50px;
height: 50px;
// display: none;
}
.a:hover {
width: 50px;
height: 50px;
// display: block;
// background-image: url('/src/assets/images/(1).png');
// background-size: 100% 100%;
}
.push-button {
// width: 50px;
// height: 50px;
// background-color: khaki;
// background-image: url('/src/assets/images/.png');
// background-size: 100% 100%;
}
</style>

@ -1,14 +1,542 @@
<template>
<div>
课程首页
<div>
<!-- <div class="nav">
<div class="icon"></div>
<div class="txt">
<h1>通讯与网络</h1>
<p>张三</p>
</div>
</div> -->
<div class="main">
<div class="title">
<div class="icon"></div>
<div class="right">
<h1>通讯与网络</h1>
<div class="btn">编辑</div>
<p>
本课程讲授通讯与网络的基本概念涉及计算机网络的发展和原理体系结构物理层
数据链路层网络层运输层应用层等计算机网络通讯的整个过程内容包括通讯与网络
的基本概念计算机网络的体
系结构数据通信基础流量控制和拥塞控制TCP/IP
协议簇的基本原理等内容
</p>
<div class="bottom">
<a>总学时 36学时</a>
<a>总学分 2.0</a>
</div>
<div class="bottom">
<a>已分配学时 20学时</a>
<a>章节数 10</a>
</div>
<div class="bottom">
<a>未分配学时 16学时</a>
<a>知识点章节总数 33</a>
</div>
</div>
</div>
<div class="list">
<div class="icon"></div>
<p style="font-size: 20px; margin-bottom: 20px; color: #000">
学习章节
</p>
<el-tree
style="width: 100%; font-size: 15px"
:data="dataSource"
show-checkbox
node-key="id"
default-expand-all
:expand-on-click-node="false"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<span>{{ node.label }}</span>
<span>
<a @click="append(data)">添加</a>
<a style="margin-left: 8px" @click="remove(node, data)">删除</a>
</span>
</span>
</template>
</el-tree>
</div>
</div>
<div class="sidebar">
<div class="content">
<h3>课程目标</h3>
<div class="btn">了解更多</div>
<a>
课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程课程
</a>
</div>
<div class="column" style="">
<div class="icon"></div>
<h3>查看资源</h3>
<ul>
<h2>第一章</h2>
<p>第2小节</p>
<li>
<div class="btn">知识点</div>
<p>知识点详情知识点内容</p>
<div class="icon"></div>
</li>
</ul>
<ul>
<h2>第一章</h2>
<p>第2小节</p>
<li>
<div class="btn">知识点</div>
<p>知识点详情知识点内容</p>
<div class="icon"></div>
</li>
</ul>
<ul>
<h2>第一章</h2>
<p>第2小节</p>
<li>
<div class="btn">知识点</div>
<p>知识点详情知识点内容</p>
<div class="icon"></div>
</li>
</ul>
</div>
</div>
</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import { ref } from 'vue'
let id = 1000
const append = (data: any) => {
const newChild = { id: id++, label: '请输入新章节', children: [] }
if (!data.children) {
data.children = []
}
data.children.push(newChild)
dataSource.value = [...dataSource.value]
}
const remove = (node: any, data: any) => {
const parent = node.parent
const children: any = parent.data.children || parent.data
const index = children.findIndex((d: any) => d.id === data.id)
children.splice(index, 1)
dataSource.value = [...dataSource.value]
}
// const renderContent = (
// h:any,
// {
// node,
// data,
// store,
// }: {
// node: any
// data: any
// store: any['store']
// }
// ) => {
// return h(
// 'span',
// {
// class: 'custom-tree-node',
// },
// h('span', null, node.label),
// h(
// 'span',
// null,
// h(
// 'a',
// {
// onClick: () => append(data),
// },
// 'Append '
// ),
// h(
// 'a',
// {
// style: 'margin-left: 8px',
// onClick: () => remove(node, data),
// },
// 'Delete'
// )
// )
// )
// }
const dataSource = ref<any>([
{
id: 1,
label: '01/基本概念',
children: [
{
id: 4,
label: '1-1 基本概念',
children: [
{
id: 9,
label: '1-1-1 基本概念',
},
{
id: 10,
label: '1-1-2 基本概念',
},
],
},
],
},
{
id: 2,
label: '02/章节名',
children: [
{
id: 5,
label: '2-1 章节名字',
},
{
id: 6,
label: '2-2 章节名字',
},
],
},
{
id: 3,
label: '03/章节名字',
children: [
{
id: 7,
label: '3-1 章节名字',
},
{
id: 8,
label: '3-2 章节名字',
},
],
},
{
id: 3,
label: '04/章节名字',
children: [
{
id: 9,
label: '4-1 章节名字',
},
{
id: 10,
label: '4-2 章节名字',
},
],
},
])
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
ul {
list-style: none;
}
a {
text-decoration: none;
}
body {
/* 宽度占浏览器可视区域的宽度 */
width: 100vm;
/* height: 1500px; */
background-color: #f6f6f6;
}
.nav {
width: 100%;
height: 60px;
background-color: #797a82;
}
.nav .icon {
width: 10%;
height: 90%;
margin-top: 5px;
float: left;
background-image: url('/src/assets/images/kc.jpg');
background-size: 100% 100%;
border-radius: 20px 20px 20px 20px;
}
.nav .txt {
width: 10%;
height: 100%;
float: left;
margin-left: 15px;
background-color: #5577ff;
// border-left: 1px solid #252529
}
.nav h1 {
font-size: 18px;
line-height: 35px;
font-weight: bolder;
}
.nav p {
// font-size: 18px;
line-height: 25px;
color: #252529;
}
.main {
width: 75%;
height: 900px;
float: left;
// background-color: bisque
}
.main .title {
width: 90%;
margin: auto;
height: 25%;
// background-color: blueviolet
}
.main .title .icon {
width: 34%;
height: 80%;
margin-top: 20px;
background-color: antiquewhite;
float: left;
background-image: url('/src/assets/images/kc.jpg');
background-size: 100% 100%;
border-radius: 20px 20px 20px 20px;
}
.main .title .right {
width: 61%;
height: 80%;
margin-left: 30px;
margin-top: 20px;
// background-color: antiquewhite;
float: left;
}
.main .title .right h1 {
height: 20px;
color: #5577ff;
font-size: 20px;
font-weight: bolder;
letter-spacing: 1px;
// background-color: antiquewhite;
float: left;
}
.main .title .right p {
height: 20px;
font-size: 12px;
line-height: 16px;
color: #797a82;
padding-top: 7px;
float: left;
}
.main .title .right .bottom {
width: 30.6%;
height: 30%;
float: left;
margin-left: 10px;
margin-top: 16.5%;
// background-color: #5577FF
}
.main .title .right a {
display: flex;
justify-content: space-between;
height: 28px;
font-size: 12px;
color: #0d0d11;
// padding-top: 50px;
// float: left;
}
.main .title .right .btn {
width: 14%;
height: 16%;
font-size: 15px;
background-color: #5577ff;
color: #f6f6f6;
text-align: center;
line-height: 25px;
border-radius: 14px 14px 14px 14px;
float: left;
margin-left: 58%;
}
.main .title .right .btn:hover {
background-color: #185cd2;
}
.main .list {
width: 100%;
height: 57.3%;
margin: auto;
padding: 20px 10px;
background-color: #ffffff;
border-radius: 20px 20px 20px 20px;
}
.main .list .icon {
width: 3%;
height: 5%;
margin-top: px;
// background-color: antiquewhite;
float: left;
background-image: url('/src/assets/images/rwd.png');
background-size: 100% 100%;
// border-radius: 20px 20px 20px 20px;
}
.sidebar {
width: 22%;
height: 800px;
float: left;
margin-left: 20px;
// background-color: rgb(84, 50, 9)
}
.sidebar .content {
width: 100%;
height: 20%;
border-radius: 14px 14px 14px 14px;
border-left: 4px solid #5577ff;
background-color: #ffffff;
box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, 0.1);
}
.sidebar .content h3 {
color: #0d0d11;
height: 30px;
font-size: 15px;
font-weight: bolder;
margin-left: 15px;
float: left;
line-height: 40px;
}
.sidebar .content .btn {
width: 30%;
height: 13%;
font-size: 11px;
background-color: #ebecfc;
color: #4f86e5;
text-align: center;
font-weight: bolder;
float: right;
line-height: 20px;
margin-top: 10px;
border-radius: 14px 14px 14px 14px;
}
.sidebar .content .btn:hover {
background-color: #185cd2;
color: white;
}
.sidebar .content a {
color: #797a82;
height: 50px;
width: 90%;
font-size: 15px;
line-height: 20px;
margin-left: 15px;
float: left;
margin-top: 5px;
}
.sidebar .column {
width: 100%;
height: 70%;
margin-top: 20px;
border-radius: 14px 14px 14px 14px;
background-color: #ffffff;
box-shadow: 1px 1px 1px 0.1px rgba(0.2, 1, 1, 0.2);
}
.sidebar .column .icon {
width: 13%;
height: 5%;
float: left;
margin-left: 10px;
margin-top: 10px;
background-image: url('/src/assets/images/ck.png');
background-size: 100% 100%;
}
.sidebar .column h3 {
color: #16161b;
height: 30px;
font-size: 15px;
font-weight: bolder;
margin-left: 15px;
float: left;
line-height: 45px;
}
.sidebar .column ul {
width: 90%;
height: 28%;
float: left;
margin-top: 10px;
margin-left: 12px;
text-decoration: none;
// border-left:1px solid #505053 ;
// background-color: #4F86E5
}
.sidebar .column ul h2 {
color: #0d0d11;
height: 30px;
font-size: 14px;
font-weight: bolder;
// margin-left: 15px;
float: left;
line-height: 20px;
}
.sidebar .column ul p {
color: #252529;
height: 30px;
font-size: 11px;
// font-weight:bolder;
margin-left: 15px;
float: left;
line-height: 20px;
}
.sidebar .column ul li {
width: 90%;
height: 80%;
float: left;
margin-left: 20px;
text-decoration: none;
border-left: 1px solid #d4d4df;
// background-color: #9fb8e3
}
.sidebar .column ul li .btn {
width: 30%;
height: 15%;
float: left;
margin-left: 20px;
color: #ebecfc;
line-height: 20px;
font-size: 11px;
text-align: center;
border-radius: 5px 5px 5px 5px;
background-color: #56df7d;
}
.sidebar .column ul li p {
line-height: 30px;
height: 10%;
font-size: 11.5px;
float: left;
margin-left: 22px;
text-decoration: none;
color: #0d0d11;
}
.sidebar .column ul li .icon {
width: 89%;
height: 50%;
margin-top: 20px;
float: left;
margin-left: 20px;
background-image: url('/src/assets/images/zy.jpg');
background-size: 100% 100%;
}
// .app-container {
// padding: 30px 140px;
// font-size: 14px;
// }
// .tree-manager {
// width: 50px;
// display: inline-block;
// margin: 10px;
// }
::v-deep .custom-tree-node {
flex: 1;
display: flex;
justify-content: space-between;
padding-right: 30px;
}
</style>

@ -1,14 +1,353 @@
<template>
<div>
课程报告
<div>
<div class="header">
<h1>课程报告</h1>
<div class="content">
<div class="box">
<div class="icon">
<img
src="/src/assets/images/小旗子.png"
width="100%"
height="100%"
/>
</div>
<p>学习进度统计</p>
</div>
<a style="color: #d81e06">Learning progress statistics</a>
<b style="color: #d81e06">40</b>
</div>
<div class="content">
<div class="box">
<div class="icon">
<img
src="/src/assets/images/知识点.png"
width="100%"
height="100%"
/>
</div>
<p>知识点数统计</p>
</div>
<a style="color: #ff8b00">Knowledge point statistics</a>
<b style="color: #ff8b00">30</b>
</div>
<div class="content">
<div class="box">
<div class="icon">
<img
src="/src/assets/images/统计计算.png"
width="100%"
height="100%"
/>
</div>
<p>学习人数统计</p>
</div>
<a style="margin-top: 25px; margin-left: 60px; color: #4b81d7">
Student count
</a>
<b style="color: #4b81d7">0</b>
</div>
<div class="content">
<div class="box">
<div class="icon">
<img src="/src/assets/images/课程.png" width="100%" height="100%" />
</div>
<p>学习课程统计</p>
</div>
<a style="margin-top: 25px; margin-left: 60px; color: #08b762">
Course statistics
</a>
<b style="color: #08b762">10</b>
</div>
</div>
<div class="search">
<form>
<input type="text" placeholder="输入文本进行搜索" />
<div class="icon">
<img src="/src/assets/images/搜索.png" width="100%" height="100%" />
</div>
<!-- <input type="image" src="/src/assets/images/搜索.png" > -->
</form>
</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<div class="main">
<el-table
:data="dataSource"
style="
display: flex;
width: 100%;
flex-direction: row;
justify-content: space-around;
"
>
<el-table-column
prop="course"
label="课程名称"
width="180"
></el-table-column>
<el-table-column
prop="date"
label="知识点个数"
width="180"
></el-table-column>
<el-table-column
prop="time"
label="知识点学时"
width="180"
></el-table-column>
<el-table-column
prop="proportion"
label="知识点占比"
width="180"
></el-table-column>
<el-table-column
prop="student"
label="学习人数统计"
width="180"
></el-table-column>
<el-table-column
prop="credet"
label="课程学分"
width="180"
></el-table-column>
</el-table>
</div>
</div>
<div class="download">点击此按钮导出报告</div>
<div class="a"></div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const dataSource = ref([
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
{
course: '数学',
date: '50',
time: '24h',
proportion: '89%',
student: '220人',
credet: 2,
},
])
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
ul {
list-style: none;
}
a {
text-decoration: none;
}
body {
/* 宽度占浏览器可视区域的宽度 */
width: 100vm;
/* height: 1500px; */
background-color: #f6f6f6;
}
.header {
width: 95%;
height: 250px;
margin: auto;
// background-color: aquamarine
}
.header h1 {
font-size: 20px;
color: #000;
}
.header .content {
width: 20%;
height: 65%;
// background-color: bisque;
background-color: #ffffff;
border-radius: 10px 10px 10px 10px;
float: left;
margin-left: 40px;
margin-top: 20px;
}
.header .content .icon {
width: 24.5%;
height: 62%;
float: left;
// margin-left: 1px;
margin-top: 13px;
}
.header .content .box {
width: 65%;
height: 30%;
// background-color: #f6f6f6;
margin: auto;
margin-top: 10px;
}
.header .content a {
font-size: 14.5px;
height: 10%;
float: left;
margin-left: 20px;
margin-top: 20px;
// font-weight:bolder;
}
.header .content b {
font-size: 30px;
height: 10%;
margin: auto;
float: left;
margin-top: 15px;
margin-left: 100px;
font-weight: bolder;
}
.header .content p {
color: #000;
font-size: 15px;
height: 10%;
float: left;
// text-align: center;
margin-top: 20px;
margin-left: 3px;
font-weight: bolder;
}
.search {
width: 75%;
height: 30px;
background-color: paleturquoise;
margin: auto;
border-radius: 10px 10px 10px 10px;
margin-top: 20px;
}
.search input {
width: 100%;
height: 40px;
text-indent: 5px;
font-size: 16px;
/* border: none; */
// text-align: center;
background-color: #fffefe;
border-radius: 10px 10px 10px 10px;
border: 1px solid #75aade;
/* border-bottom: 1px solid #ddd; */
outline: none;
// margin: 12px auto;
}
.search .icon {
width: 40px;
height: 35px;
position: relative;
top: -37px;
left: 93%;
}
.search .icon:hover {
width: 41px;
height: 36px;
}
// .search form{
// width: 190px;
// height: 30px;
// border: 1px solid #C1C1C1;
// border-radius: 3px;
// }
.main {
width: 90%;
height: 450px;
// background-color: #75aade;
// border-radius: 10px 10px 10px 10px;
margin: auto;
margin-top: 50px;
}
// ptf
.download {
width: 15%;
height: 24px;
float: right;
margin-right: 60px;
margin-top: 20px;
// margin-bottom: 20px;
// margin-left: 0px;
font-size: 14px;
text-align: center;
line-height: 23px;
color: #75aade;
background-color: #ffffff;
box-shadow: 1px 1px 1px 0.1px rgba(0.2, 1, 1, 0.2);
border-radius: 10px 10px 10px 10px;
}
.download:hover {
background-color: #75aade;
color: #ffffff;
}
.a {
width: 100%;
float: left;
height: 40px;
}
.el-table_header-wrapper {
display: flex;
flex-direction: row;
justify-content: space-around;
}
</style>

File diff suppressed because it is too large Load Diff

@ -1,14 +1,9 @@
<template>
<div>
知识点学习
</div>
<div>知识点学习</div>
</template>
<script lang='ts' setup>
import { } from 'vue'
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang='scss' scoped>
</style>
<style lang="scss" scoped></style>

Loading…
Cancel
Save