Jelajahi Sumber

Merge branch 'beta' into HK

lsc 9 bulan lalu
induk
melakukan
f33eb0cb2b
58 mengubah file dengan 4064 tambahan dan 455 penghapusan
  1. 5 1
      dist/index.html
  2. 0 0
      dist/static/css/app.52966fe86caa3ba45fe7f6ed55c39fd0.css
  3. 0 0
      dist/static/css/app.52966fe86caa3ba45fe7f6ed55c39fd0.css.map
  4. TEMPAT SAMPAH
      dist/static/img/aiAvatar.9613d71.png
  5. 40 0
      dist/static/img/aiTalk.1469289.svg
  6. 6 0
      dist/static/img/aiVanish.cc2e3bf.svg
  7. 40 0
      dist/static/img/aiWait.bc90766.svg
  8. TEMPAT SAMPAH
      dist/static/img/alarmClock.d70699d.png
  9. TEMPAT SAMPAH
      dist/static/img/down.60f07ad.png
  10. 1 0
      dist/static/js/app.fb969962e59547acd4d9.js
  11. 0 0
      dist/static/js/app.fb969962e59547acd4d9.js.map
  12. 1 0
      dist/static/js/app.fd21efa6a4748fafe92b.js
  13. 1 0
      dist/static/js/app.fd21efa6a4748fafe92b.js.map
  14. 0 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  15. 1 0
      index.html
  16. 160 0
      package-lock.json
  17. 2 1
      package.json
  18. 40 0
      src/assets/icon/course/aiTalk.svg
  19. 6 0
      src/assets/icon/course/aiVanish.svg
  20. 40 0
      src/assets/icon/course/aiWait.svg
  21. TEMPAT SAMPAH
      src/assets/icon/course/alarmClock.png
  22. TEMPAT SAMPAH
      src/assets/icon/course/bDown2.png
  23. 3 0
      src/assets/icon/course/back.svg
  24. TEMPAT SAMPAH
      src/assets/icon/course/comment.png
  25. TEMPAT SAMPAH
      src/assets/icon/course/copyTxt.png
  26. TEMPAT SAMPAH
      src/assets/icon/course/down.png
  27. TEMPAT SAMPAH
      src/assets/icon/course/helloworldQs.gif
  28. TEMPAT SAMPAH
      src/assets/icon/course/resImg.png
  29. TEMPAT SAMPAH
      src/assets/icon/course/right.png
  30. TEMPAT SAMPAH
      src/assets/icon/course/sImg.png
  31. TEMPAT SAMPAH
      src/assets/icon/course/sImg2.png
  32. TEMPAT SAMPAH
      src/assets/icon/course/sRio.png
  33. TEMPAT SAMPAH
      src/assets/icon/course/sRio2.png
  34. 18 1
      src/common/axios.config.js
  35. 34 5
      src/components/EnglishVoice2/component/right.vue
  36. 41 1
      src/components/checkEnglishVoice/data/index.vue
  37. 1 1
      src/components/checkEnglishVoice/index.vue
  38. 187 124
      src/components/classRoomHelper/component/dialogArea.vue
  39. 515 0
      src/components/classRoomHelper/component/levitatedSphere.vue
  40. 923 75
      src/components/classRoomHelper/component/searchArea.vue
  41. 468 91
      src/components/classRoomHelper/component/taskArea.vue
  42. 100 0
      src/components/classRoomHelper/component/timepiece.vue
  43. 134 16
      src/components/classRoomHelper/index.vue
  44. 15 0
      src/components/courseDetail.vue
  45. 2 2
      src/components/easy2/studyStudent jiu.vue
  46. 180 42
      src/components/easy2/studyStudent.vue
  47. 2 2
      src/components/easy3/studyStudent jiu.vue
  48. 228 40
      src/components/easy3/studyStudent.vue
  49. 33 4
      src/components/index.vue
  50. 365 0
      src/components/scoreZong/get.vue
  51. 315 0
      src/components/scoreZong/index.vue
  52. 145 37
      src/components/studyStudent.vue
  53. 2 2
      src/components/studyStudentJiu.vue
  54. 2 2
      src/components/trainCourse/easy2/studyStudent.vue
  55. 2 2
      src/components/trainCourse/easy3/studyStudent.vue
  56. 2 2
      src/components/trainCourse/studyStudent.vue
  57. 2 2
      src/components/横板极简和任务模式/easy2/studyStudent.vue
  58. 2 2
      src/components/横板极简和任务模式/easy3/studyStudent.vue

+ 5 - 1
dist/index.html

@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>pbl-student</title><style>/* @charset "utf-8";
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>pbl-student</title><base target=_blank><style>/* @charset "utf-8";
      @font-face {
         font-family: 'Source Han Sans SC';
         src: url('./static/SourceHanSans-Regular.otf') format('truetype');
@@ -27,7 +27,11 @@
     html,
     body{
       font-family: '黑体';
+<<<<<<< HEAD
     }</style><link href=./static/css/app.edbdf252d4aadc3e66b916eacae2493b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.c0ee66fa35994fdf36e3.js></script><script type=text/javascript src=./static/js/app.fb969962e59547acd4d9.js></script></body></html><script>function stopSafari() {
+=======
+    }</style><link href=./static/css/app.52966fe86caa3ba45fe7f6ed55c39fd0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.733814fc48c2bd2222aa.js></script><script type=text/javascript src=./static/js/app.fd21efa6a4748fafe92b.js></script></body></html><script>function stopSafari() {
+>>>>>>> beta
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.52966fe86caa3ba45fe7f6ed55c39fd0.css


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.52966fe86caa3ba45fe7f6ed55c39fd0.css.map


TEMPAT SAMPAH
dist/static/img/aiAvatar.9613d71.png


File diff ditekan karena terlalu besar
+ 40 - 0
dist/static/img/aiTalk.1469289.svg


File diff ditekan karena terlalu besar
+ 6 - 0
dist/static/img/aiVanish.cc2e3bf.svg


File diff ditekan karena terlalu besar
+ 40 - 0
dist/static/img/aiWait.bc90766.svg


TEMPAT SAMPAH
dist/static/img/alarmClock.d70699d.png


TEMPAT SAMPAH
dist/static/img/down.60f07ad.png


File diff ditekan karena terlalu besar
+ 1 - 0
dist/static/js/app.fb969962e59547acd4d9.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.fb969962e59547acd4d9.js.map


File diff ditekan karena terlalu besar
+ 1 - 0
dist/static/js/app.fd21efa6a4748fafe92b.js


File diff ditekan karena terlalu besar
+ 1 - 0
dist/static/js/app.fd21efa6a4748fafe92b.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 1 - 0
index.html

@@ -5,6 +5,7 @@
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <title>pbl-student</title>
+	<base target="_blank">
   <style>
      /* @charset "utf-8";
      @font-face {

+ 160 - 0
package-lock.json

@@ -41,7 +41,12 @@
         "vuex": "^3.6.2",
         "wangeditor": "^4.7.15",
         "wav-encoder": "^1.3.0",
+<<<<<<< HEAD
         "worker-loader": "^2.0.0"
+=======
+        "worker-loader": "^2.0.0",
+        "xlsx": "^0.18.5"
+>>>>>>> beta
       },
       "devDependencies": {
         "@babel/core": "^7.19.6",
@@ -6028,6 +6033,14 @@
         "node": ">= 10.0.0"
       }
     },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/aes-decrypter": {
       "version": "1.0.3",
       "resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
@@ -7971,6 +7984,18 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/chai-nightwatch": {
       "version": "0.1.1",
       "resolved": "https://registry.nlark.com/chai-nightwatch/download/chai-nightwatch-0.1.1.tgz?cache=0&sync_timestamp=1630259114673&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchai-nightwatch%2Fdownload%2Fchai-nightwatch-0.1.1.tgz",
@@ -8507,6 +8532,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -8897,6 +8930,17 @@
         "js-yaml": "bin/js-yaml.js"
       }
     },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -11735,6 +11779,14 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -20892,6 +20944,17 @@
       "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
     },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -23835,6 +23898,22 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
@@ -24127,6 +24206,26 @@
         "xtend": "^4.0.0"
       }
     },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/xregexp": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/xregexp/download/xregexp-2.0.0.tgz?cache=0&sync_timestamp=1628117154407&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxregexp%2Fdownload%2Fxregexp-2.0.0.tgz",
@@ -28962,6 +29061,11 @@
       "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==",
       "peer": true
     },
+    "adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+    },
     "aes-decrypter": {
       "version": "1.0.3",
       "resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
@@ -30714,6 +30818,15 @@
         "lazy-cache": "^1.0.3"
       }
     },
+    "cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      }
+    },
     "chai-nightwatch": {
       "version": "0.1.1",
       "resolved": "https://registry.nlark.com/chai-nightwatch/download/chai-nightwatch-0.1.1.tgz?cache=0&sync_timestamp=1630259114673&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchai-nightwatch%2Fdownload%2Fchai-nightwatch-0.1.1.tgz",
@@ -31135,6 +31248,11 @@
       "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
     },
+    "codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -31459,6 +31577,11 @@
         }
       }
     },
+    "crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -33832,6 +33955,11 @@
       "resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503408398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
       "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE="
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -41427,6 +41555,14 @@
       "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -43828,6 +43964,16 @@
       "resolved": "https://registry.nlark.com/window-size/download/window-size-0.1.0.tgz",
       "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
@@ -44093,6 +44239,20 @@
         "xtend": "^4.0.0"
       }
     },
+    "xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      }
+    },
     "xregexp": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/xregexp/download/xregexp-2.0.0.tgz?cache=0&sync_timestamp=1628117154407&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxregexp%2Fdownload%2Fxregexp-2.0.0.tgz",

+ 2 - 1
package.json

@@ -45,7 +45,8 @@
     "vuex": "^3.6.2",
     "wangeditor": "^4.7.15",
     "wav-encoder": "^1.3.0",
-    "worker-loader": "^2.0.0"
+    "worker-loader": "^2.0.0",
+    "xlsx": "^0.18.5"
   },
   "devDependencies": {
     "@babel/core": "^7.19.6",

File diff ditekan karena terlalu besar
+ 40 - 0
src/assets/icon/course/aiTalk.svg


File diff ditekan karena terlalu besar
+ 6 - 0
src/assets/icon/course/aiVanish.svg


File diff ditekan karena terlalu besar
+ 40 - 0
src/assets/icon/course/aiWait.svg


TEMPAT SAMPAH
src/assets/icon/course/alarmClock.png


TEMPAT SAMPAH
src/assets/icon/course/bDown2.png


+ 3 - 0
src/assets/icon/course/back.svg

@@ -0,0 +1,3 @@
+<svg width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M0.614027 1.426C0.727567 1.15188 0.919852 0.917585 1.16656 0.752756C1.41327 0.587927 1.70332 0.499966 2.00003 0.5H12C13.9892 0.5 15.8968 1.29018 17.3033 2.6967C18.7099 4.10322 19.5 6.01088 19.5 8C19.5 9.98912 18.7099 11.8968 17.3033 13.3033C15.8968 14.7098 13.9892 15.5 12 15.5H3.00003C2.6022 15.5 2.22067 15.342 1.93937 15.0607C1.65806 14.7794 1.50003 14.3978 1.50003 14C1.50003 13.6022 1.65806 13.2206 1.93937 12.9393C2.22067 12.658 2.6022 12.5 3.00003 12.5H12C13.1935 12.5 14.3381 12.0259 15.182 11.182C16.0259 10.3381 16.5 9.19347 16.5 8C16.5 6.80653 16.0259 5.66193 15.182 4.81802C14.3381 3.97411 13.1935 3.5 12 3.5H5.62103L6.56103 4.44C6.83413 4.72303 6.98515 5.10201 6.98155 5.4953C6.97795 5.8886 6.82001 6.26474 6.54177 6.54273C6.26353 6.82071 5.88723 6.97828 5.49393 6.98151C5.10063 6.98475 4.7218 6.83337 4.43903 6.56L0.939027 3.06C0.729412 2.85026 0.586665 2.5831 0.528819 2.29227C0.470973 2.00144 0.500625 1.69999 0.614027 1.426Z" fill="#699BF7"/>
+</svg>

TEMPAT SAMPAH
src/assets/icon/course/comment.png


TEMPAT SAMPAH
src/assets/icon/course/copyTxt.png


TEMPAT SAMPAH
src/assets/icon/course/down.png


TEMPAT SAMPAH
src/assets/icon/course/helloworldQs.gif


TEMPAT SAMPAH
src/assets/icon/course/resImg.png


TEMPAT SAMPAH
src/assets/icon/course/right.png


TEMPAT SAMPAH
src/assets/icon/course/sImg.png


TEMPAT SAMPAH
src/assets/icon/course/sImg2.png


TEMPAT SAMPAH
src/assets/icon/course/sRio.png


TEMPAT SAMPAH
src/assets/icon/course/sRio2.png


+ 18 - 1
src/common/axios.config.js

@@ -17,7 +17,7 @@ axios.interceptors.request.use((config) => {
     }
     if (config.url === 'https://gpt.cocorobo.cn/chat' || config.url === 'https://gpt4.cocorobo.cn/imageAnalyse' || config.url === 'https://gpt4.cocorobo.cn/create_free_assistants' || config.url === 'https://gpt4.cocorobo.cn/assistants_completion_response') {
         config.data = config.data //序列化post 参数
-    }else if(config.url.indexOf('https://gpt4.cocorobo.cn/')!=-1){
+    }else if(config.url.indexOf('https://gpt4.cocorobo.cn/')!=-1 || config.url.indexOf('https://claude3.cocorobo.cn/')!=-1){
 			config.headers = {
 				'Content-Type': 'application/json',
 		}
@@ -95,7 +95,24 @@ function get(url, param) {
             })
     })
 }
+
+//返回一个Promise(发送put请求)
+function put(url, params) {
+	return new Promise((resolve, reject) => {
+			axios.put(url, params)
+					.then(response => {
+							resolve(response);
+					}, err => {
+							reject(err);
+					})
+					.catch((error) => {
+							reject(error)
+					})
+	})
+}
+
 export default {
     get,
     post,
+		put
 }

+ 34 - 5
src/components/EnglishVoice2/component/right.vue

@@ -339,38 +339,67 @@ export default {
       if (this.cjson.type == 'theme' || this.cjson.type == 'QA') {
         this.isloading = true
         let _this = this
+				let _result = ``;
         iiframe.contentWindow.onRecognizedResult = function (e) {
           console.log('onRecognizedResult', e);
           let privText = e.privText
-          _this.beforeUpload1(audioFile, 3, privText);
+					_result+=privText;
+
+          // _this.beforeUpload1(audioFile, 3, privText);
         }
 
+				iiframe.contentWindow.onSessionStopped = function(e){
+					console.log("转译完成")
+					console.log(e);
+					_this.beforeUpload1(audioFile, 3, _result);
+				}
+
         iiframe.contentWindow.doContinuousPronunciationAssessment('', { files: [audioFile] })
       } else if (this.cjson.type == 'createRole') {
         // this.isloading = true
         // this.beforeUpload1(audioFile, 3);
         this.isloading = true
         let _this = this
+				let _result = ``;
         iiframe.contentWindow.onRecognizedResult = function (e) {
           console.log('onRecognizedResult', e);
           let privText = e.privText
-          _this.beforeUpload1(audioFile, 3, privText);
+					_result+=privText;
+          // _this.beforeUpload1(audioFile, 3, privText);
         }
 
+				iiframe.contentWindow.onSessionStopped = function(e){
+					console.log("转译完成")
+					console.log(e);
+					_this.beforeUpload1(audioFile, 3, _result);
+				}
+
         iiframe.contentWindow.doContinuousPronunciationAssessment('', { files: [audioFile] })
       } else {
         this.isloading = true
         let _this = this
+				let _result = ``;
+				let _star = ``;
         iiframe.contentWindow.onRecognizedResult = function (e) {
           console.log('onRecognizedResult', e);
           let privText = e.privText
-          let star = JSON.parse(e.privJson).NBest[0].PronunciationAssessment
-          console.log('star', star)
+					_result +=privText;
+          _star = JSON.parse(e.privJson).NBest[0].PronunciationAssessment
+					console.log(_star)
+          // console.log('star', star)
           // e.privText 
           // JSON.parse(e.privJson).NBest[0].PronunciationAssessment
 
-          _this.beforeUpload1(audioFile, 3, privText, star);
+          // _this.beforeUpload1(audioFile, 3, privText, star);
         }
+
+				iiframe.contentWindow.onSessionStopped = function(e){
+					console.log("转译完成")
+					console.log(e);
+					_this.beforeUpload1(audioFile, 3, _result, _star);
+				}
+
+
         iiframe.contentWindow.doContinuousPronunciationAssessment(this.cjson.content, { files: [audioFile] })
       }
 

+ 41 - 1
src/components/checkEnglishVoice/data/index.vue

@@ -31,6 +31,20 @@
           </div>
         </div>
       </div>
+
+			<div class=whiteBox v-if="mark.wScore2!=0 && mark.scoreDetail2!=''">
+				<div class="mark">
+					<div>
+						<span>评分:</span>
+						<div>{{ mark.wScore2 }}</div>
+					</div>
+				</div>
+				<div class="mark">
+					<span>评分评论:</span>
+					<div>{{ mark.scoreDetail2 }}</div>
+				</div>
+			</div>
+
       <div class="whiteBox" v-if="wordArray.length">
         <div class="word_box" v-for="(item, index) in wordArray" :key="index">
           <div class="word"><span>{{ index + 1 }}.</span><span>{{ item.content }}</span></div>
@@ -129,7 +143,16 @@ export default {
     commentDetail: {
       type: Object,
       default: () => { }
-    }
+    },
+		mark:{
+			type:Object,
+			default:()=>{
+				return {
+					wScore2:0,
+					scoreDetail2:'',
+				}
+			}
+		},
   },
   data() {
     return {
@@ -403,5 +426,22 @@ export default {
   color: #000;
   margin-top: 5px;
 }
+
+.whiteBox>.mark{
+	display: flex;
+	margin-bottom: 10px;
+	flex-direction: column;
+}
+
+.whiteBox>.mark span{
+	font-weight: bold;
+	font-size: 16px;
+}
+
+.whiteBox>.mark>div{
+	margin-top: 10px;
+	display: flex;
+	width:fit-content;
+}
 </style>
   

+ 1 - 1
src/components/checkEnglishVoice/index.vue

@@ -74,7 +74,7 @@
         >确 定
       </el-button>
     </span>
-    <dataBoard :dataDialog.sync="dataDialog" :englishVoiceJson="englishVoiceJson" :commentDetail="commentDetail"></dataBoard>
+    <dataBoard :dataDialog.sync="dataDialog" :mark="{wScore2:wScore2,scoreDetail2:scoreDetail2}" :englishVoiceJson="englishVoiceJson" :commentDetail="commentDetail"></dataBoard>
   </el-dialog>
 </template>
 

File diff ditekan karena terlalu besar
+ 187 - 124
src/components/classRoomHelper/component/dialogArea.vue


+ 515 - 0
src/components/classRoomHelper/component/levitatedSphere.vue

@@ -0,0 +1,515 @@
+<template>
+  <div class="levitatedSphere" v-show="show">
+    <div :class="['ls_hello']" v-show="showIndex == 0">
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 1"
+        :src="require('../../../assets/icon/course/aiTalk.svg')"
+        fit="fill"
+      ></el-image>
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 2"
+        :src="require('../../../assets/icon/course/aiVanish.svg')"
+        fit="fill"
+      ></el-image>
+      <el-image
+        style="width: 100%; height: 100%"
+        v-show="aiStatus == 0"
+        :src="require('../../../assets/icon/course/aiWait.svg')"
+        fit="fill"
+      ></el-image>
+    </div>
+    <div
+      class="ls_text"
+      :style="{
+        width: userText || aiText || showTextIndex == 2 ? '300px' : '0px'
+      }"
+    >
+      <div class="ls_t_ai" v-if="[0, 2].includes(showTextIndex)">
+        <span
+          v-if="[0].includes(showTextIndex)"
+          v-html="htmlContent(aiText)"
+        ></span>
+        <span v-if="[2].includes(showTextIndex)">正在组织语言...</span>
+      </div>
+      <div class="ls_t_user" v-if="[1].includes(showTextIndex)">
+        {{ userText }}
+      </div>
+    </div>
+    <!-- 录音转文字 -->
+    <iframe
+      allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+      src="https://beta.cloud.cocorobo.cn/browser/public/index.html"
+      ref="iiframe"
+      v-show="false"
+    ></iframe>
+
+    <!-- 文字转语音-->
+    <iframe
+      allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+      src="https://beta.cloud.cocorobo.cn/browser/public/index1.html"
+      ref="iiframe2"
+      v-show="false"
+    ></iframe>
+  </div>
+</template>
+
+<script>
+import { v4 as uuidv4 } from "uuid";
+import MarkdownIt from "markdown-it";
+export default {
+  data() {
+    return {
+      show: false,
+      showIndex: 0, //0 :在说话 1 : 接收 2:待命
+      aiStatus: 0,
+      aiText: "您好,我是小可,有什么可以帮助您的?",
+      userText: "",
+      showTextIndex: 0, //0:ai,1:用户, 2:组织语言  3: 无
+      timer: null,
+      isOpen: false,
+      userId: this.$route.query.userid,
+      chatLoading: false,
+      talkLoading: false,
+      source: null,
+      talkTextList: []
+    };
+  },
+  computed: {
+    htmlContent() {
+      const md = new MarkdownIt();
+      return _md => {
+        return md.render(_md);
+      };
+    }
+  },
+  methods: {
+    recordStart(_text) {
+      // try {
+      // this.$parent.changeRecordType(1);
+      // return this.$message.success("已开启语音助手,请说“可可同学”来唤醒")
+      if (this.isOpen)
+        return this.$message.info("已开启语音助手,无需重复开启");
+      let iiframe = this.$refs["iiframe"];
+      iiframe.contentWindow.window.document.getElementById(
+        "languageOptions"
+      ).selectedIndex = 2; //普通话
+      iiframe.contentWindow.testdoContinuousPronunciationAssessment();
+      this.$message.success("已开启语音助手,请说“可可同学”来唤醒");
+      this.$parent.changeRecordType(1);
+      this.isOpen = true;
+      iiframe.contentWindow.onRecognizedResult = e => {
+        let _msg = e.privText;
+        // let _msg = _text;
+        console.log("👇");
+        console.log(_msg);
+        if (!_msg) return console.log("输出为空");
+        if (_msg.indexOf("可可同学") != -1 && !this.show) {
+          this.aiText = "您好,我是小可,有什么可以帮助您的?";
+          this.aiStatus = 0;
+          this.showIndex = 0;
+          this.show = true;
+          console.log("已唤醒");
+          return;
+        } else if (this.show == true) {
+					if(_msg.indexOf('可可同学')!=-1 && _msg.indexOf("停止")!=-1){
+						this.stopTalk();
+          }else if (this.showTextIndex == 2 || this.chatLoading || this.talkLoading) {
+            return console.log("组织语言中");
+					// }else if(_msg.indexOf('可可同学')!=-1 && _msg.indexOf("停止")!=-1){
+					// 	this.stopTalk();
+          } else {
+            this.showTextIndex = 1;
+            this.aiText = "";
+            this.userText += _msg;
+            this.aiStatus = 1;
+            if (this.timer) {
+              clearTimeout(this.timer);
+              this.timer = null;
+            }
+            this.timer = setTimeout(() => {
+              if (this.userText.indexOf("关闭语音助手") != -1) {
+                // return setTimeout(()=>{
+                this.show = false;
+								this.showTextIndex = 3;
+                this.aiStatus = 2;
+                this.aiText = "";
+                this.userText = "";
+                this.stopRecord();
+                return;
+                // },1000)
+              }
+              this.showTextIndex = 2;
+              this.aiText = "";
+              if (/计时(.+)分钟/.test(this.userText)) {
+                // setTimeout(() => {
+                let _number = this.userText.match(/计时(.+)分钟/)[1];
+                let _time = 0;
+                if (!/^\d+$/.test(_number)) {
+                  _time = this.chineseToNumber(_number) * 60;
+                } else {
+                  _time = parseInt(_numberList[1]) * 60;
+                }
+                this.$emit("startTime", _time);
+                this.aiStatus = 0;
+                this.showTextIndex = 0;
+                this.aiText =
+                  "好的,我已为您计时" +
+                  this.userText.match(/计时(.+)分钟/)[1] +
+                  "分钟。";
+                this.userText = "";
+                this.timer = setTimeout(() => {
+                  this.showTextIndex = 3;
+                  this.aiStatus = 2;
+                  this.aiText = "";
+                  this.userText = "";
+                }, 3000);
+                // }, 2000);
+              } else {
+                this.chatLoading = true;
+                const _uuid = uuidv4();
+                let params = {
+                  assistant_id: "f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b",
+                  userId: this.userId,
+                  message: this.userText,
+                  session_name: _uuid + "-qgt",
+                  uid: _uuid,
+                  file_ids: []
+                };
+                this.ajax
+                  // .post("https://claude3.cocorobo.cn/chat", params)
+                  // .post("https://gpt4.cocorobo.cn/chat", params)
+                  .post(
+                    "https://gpt4.cocorobo.cn/ai_agent_park_chat_new",
+                    params
+                  )
+                  .then(res => {
+                    if (res.data.FunctionResponse.result == "发送成功") {
+                      this.userText = "";
+                    } else {
+                      // this.$message.warning(res.data.FunctionResponse.result);
+                      console.log(res.data.FunctionResponse.result);
+                      this.chatLoading = false;
+                      this.aiStatus = 0;
+                      this.showTextIndex = 0;
+                      this.aiText = "对不起,我无法理解您的问题,请重新提问";
+                      this.timer = setTimeout(() => {
+                        this.showTextIndex = 3;
+                        this.aiStatus = 2;
+                        this.aiText = "";
+                        this.userText = "";
+                      }, 3000);
+                    }
+                  })
+                  .catch(e => {
+                    console.log(e);
+                    this.chatLoading = false;
+                    this.aiStatus = 0;
+                    this.showTextIndex = 0;
+                    this.aiText = "对不起,我无法理解您的问题,请重新提问";
+                    this.timer = setTimeout(() => {
+                      this.showTextIndex = 3;
+                      this.aiStatus = 2;
+                      this.aiText = "";
+                      this.userText = "";
+                    }, 3000);
+                  });
+                // 通过流获取ai对话数据
+                this.getAtAuContent(_uuid);
+              }
+            }, 5000);
+          }
+        } else {
+          console.log("不响应");
+        }
+      };
+      // } catch (error) {
+      //   console.log("ai录音报错👇");
+      //   console.log(error);
+      //   setTimeout(() => {
+      //     this.recordStart();
+      //   }, 1000);
+      // }
+    },
+    stopRecord() {
+      // this.$parent.changeRecordType(0);
+      // this.$message.success("已关闭语音助手")
+      // return
+      let iiframe = this.$refs["iiframe"];
+      iiframe.contentWindow.window.document
+        .getElementById("scenarioStopButton")
+        .click();
+				if(this.talkLoading){
+					this.stopTalk();
+				}
+			// this.stopTalk();
+      // 录音借宿
+      iiframe.contentWindow.onSessionStopped = (s, e) => {
+        this.isOpen = false;
+        this.show = false;
+        this.showTextIndex = 3;
+				this.showIndex = 2;
+        this.$parent.changeRecordType(0);
+        this.$message.success("已关闭语音助手");
+        if (this.talkLoading) {
+          this.$refs.iiframe2.contentWindow.closesynthesizer();
+        }
+        this.userText = "";
+        this.aiText = "";
+      };
+    },
+    chineseToNumber(chinese) {
+      const chineseNumbers = {
+        零: 0,
+        一: 1,
+        二: 2,
+        三: 3,
+        四: 4,
+        五: 5,
+        六: 6,
+        七: 7,
+        八: 8,
+        九: 9,
+        十: 10,
+        百: 100,
+        千: 1000,
+        万: 10000,
+        亿: 100000000
+      };
+
+      let result = 0;
+      let tempNum = 0; // 用于累积处理
+      let sectionNum = 0; // 每个段的值
+
+      for (let i = 0; i < chinese.length; i++) {
+        const char = chinese[i];
+        const num = chineseNumbers[char];
+
+        if (num === undefined) {
+          throw new Error(`Unexpected character: ${char}`);
+        }
+
+        if (
+          num === 10 ||
+          num === 100 ||
+          num === 1000 ||
+          num === 10000 ||
+          num === 100000000
+        ) {
+          if (tempNum === 0) tempNum = 1; // 如果前面没有数,默认是1
+          tempNum *= num;
+
+          if (num === 10000 || num === 100000000) {
+            sectionNum += tempNum;
+            result += sectionNum;
+            tempNum = 0;
+            sectionNum = 0;
+          }
+        } else {
+          tempNum += num;
+        }
+      }
+
+      result += sectionNum + tempNum;
+      return result;
+    },
+    removeMarkdown(text) {
+      return text
+        .replace(/[#*_~`>+\-]/g, "") // 移除 #、*、_、~、`、>、+、- 符号
+        .replace(/!\[.*?\]\(.*?\)/g, "") // 移除图片
+        .replace(/\[.*?\]\(.*?\)/g, "") // 移除链接
+        .replace(/```[\s\S]*?```/g, "") // 移除代码块(不使用 s 标志)
+        .replace(/`[^`]*`/g, "") // 移除行内代码
+        .replace(/\d+\./g, "") // 移除有序列表
+        .replace(/^\s*[-*+]\s+/gm, "") // 移除无序列表
+        .replace(/\s+/g, " ") // 将多个空白字符替换为一个空格
+        .trim(); // 去除字符串两端的空白字符
+    },
+    getAtAuContent(_uid) {
+      this.source = new EventSource(
+        `https://gpt4.cocorobo.cn/question/${_uid}`
+      );
+      //http://gpt4.cocorobo.cn:8011/question/   https://gpt4.cocorobo.cn/question/
+      let _allText = "";
+      let _mdText = "";
+      let _talkText = "";
+      // let _talkIndex = 0;
+      // const md = new MarkdownIt();
+      this.source.onmessage = _e => {
+        let _eData = JSON.parse(_e.data);
+        if (_eData.content.replace("'", "").replace("'", "") == "[DONE]") {
+          let _result = [];
+          if ("result" in _eData) {
+            _result = _eData.result;
+            for (let i = 0; i < _result.length; i++) {
+              _mdText = _mdText.replace(_result[i].text, _result[i].fileName);
+            }
+          }
+          _mdText = _mdText.replace("_", "");
+          this.aiText = _mdText;
+          if (_talkText != "") {
+            let _resultText = this.removeMarkdown(_talkText);
+            this.talkTextList.push(_resultText);
+            _talkText = "";
+            if (!this.talkLoading) this.talkText();
+          }
+          this.chatLoading = false;
+          this.source.close();
+        } else {
+          // _talkIndex+=1;
+          let _text = _eData.content.replace("'", "").replace("'", "");
+          if (_allText == "") {
+            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
+            _talkText += _text.replace(/^\n+/, "");
+          } else {
+            _allText += _text;
+            _talkText += _text;
+          }
+          `~`;
+          _mdText = _allText + "_";
+          _mdText = _mdText.replace(/\\n/g, "\n");
+          _mdText = _mdText.replace(/\\/g, "");
+          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
+          this.aiText = _mdText;
+          this.showTextIndex = 0;
+          if (/[,。:;?!)]/.test(_talkText)) {
+            let _resultText = this.removeMarkdown(_talkText);
+            this.talkTextList.push(_resultText);
+            _talkText = "";
+            if (!this.talkLoading) this.talkText();
+          }
+          // if(_talkIndex==10){
+          // 	_talkIndex = 0;
+          // 	this.talkTextList.push(_talkText)
+          // 	_talkText = "";
+          // 	if(!this.talkLoading)this.talkText();
+          // }
+        }
+      };
+    },
+    talkText() {
+      let _text = this.talkTextList.shift();
+      let _talkTextIiframe2 = this.$refs.iiframe2;
+
+      if (_text) {
+        this.talkLoading = true;
+        if (this.timer) {
+          clearTimeout(this.timer);
+          this.timer = null;
+        }
+        console.log(`👉转语音:${_text}`);
+				// if(this.talkTextList.length==0){
+				// 	console.log("👉最后一个了,执行结束 👈")
+				// 	_talkTextIiframe2.contentWindow.closesynthesizer();
+				// }
+        // setTimeout(()=>{
+        // 	this.talkText();
+        // },2000)
+        _talkTextIiframe2.contentWindow.texttospeech(_text, this.talkText,this.endTalk);
+      }else {
+        // console.log("👉转语音结束👈");
+        _talkTextIiframe2.contentWindow.closesynthesizer();
+        // this.talkLoading = false;
+        // this.timer = setTimeout(() => {
+        //   this.showTextIndex = 3;
+        //   this.aiStatus = 2;
+        //   this.aiText = "";
+        //   this.userText = "";
+        // 	this.time = null;
+        // }, 5000);
+      }
+    },
+		endTalk(){
+			console.log("👉转语音结束👈");
+			// let _talkTextIiframe2 = this.$refs.iiframe2;
+			// _talkTextIiframe2.contentWindow.closesynthesizer();
+			this.talkLoading = false;
+		},
+		stopTalk(){
+			this.talkTextList = [];
+
+			let _talkTextIiframe2 = this.$refs.iiframe2;
+			_talkTextIiframe2.contentWindow.closesynthesizer();
+			_talkTextIiframe2.contentWindow.pausesynthesizer();
+			this.talkLoading = false;
+			// this.talkLoading = false;
+			// this.talkLoading = false;
+			// let _talkTextIiframe2 = this.$refs.iiframe2;
+			// _talkTextIiframe2.contentWindow.closesynthesizer();
+		},
+  },
+  mounted() {
+    // // this.recordStart()
+    // setTimeout(()=>{
+    // 	this.recordStart("可可同学。")
+    // 	setTimeout(()=>{
+    // 		this.recordStart("世界上最大的火山是什么。")
+    // 		setTimeout(()=>{
+    // 			this.recordStart("位于哪里。他温度怎么样。")
+    // 		},2000)
+    // 	},2000)
+    // },5000)
+  }
+};
+</script>
+
+<style scoped>
+.levitatedSphere {
+  position: fixed;
+  width: auto;
+  height: auto;
+  top: 20px;
+  right: 10px;
+  z-index: 9999;
+  display: flex;
+}
+
+.ls_hello {
+  width: 80px;
+  height: 80px;
+  position: absolute;
+  top: 0;
+  right: 0;
+	animation: smallToBig 1s both;
+}
+
+/* 定义渐入动画 */
+@keyframes smallToBig {
+    from {
+        opacity: 0;
+        transform: scale(0.1);
+    }
+    to {
+        opacity: 1;
+        transform: scale(1);
+    }
+}
+
+.ls_text {
+  position: absolute;
+  right: 100px;
+  top: 20px;
+  max-width: 300px;
+  display: flex;
+  justify-content: flex-end;
+}
+
+.ls_t_ai {
+  padding: 12px;
+  width: auto;
+  height: auto;
+  border-radius: 12px 0px 12px 12px;
+  background: #00000099;
+  color: #fff;
+}
+
+.ls_t_user {
+  padding: 12px;
+  width: auto;
+  height: auto;
+  border-radius: 12px 12px 12px 12px;
+  background: #00000099;
+  color: #fff;
+}
+</style>

File diff ditekan karena terlalu besar
+ 923 - 75
src/components/classRoomHelper/component/searchArea.vue


File diff ditekan karena terlalu besar
+ 468 - 91
src/components/classRoomHelper/component/taskArea.vue


+ 100 - 0
src/components/classRoomHelper/component/timepiece.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="timepiece">
+    <div class="time" v-if="time > 0">
+      <img :src="require('../../../assets/icon/course/alarmClock.png')" />
+      <span>{{ showTime(time) }}</span>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      // time: 300,//5分钟
+      time: 0,
+      timer: null
+    };
+  },
+  watch: {
+    time(newValue) {
+      if (this.timer) {
+        if (newValue < 0) {
+          clearInterval(this.timer);
+					this.timer = null;
+          this.$alert("计时已结束", "计时器", {
+            confirmButtonText: "确定",
+            callback: action => {
+							console.log('计时结束')
+            }
+          });
+        }
+      }
+    }
+  },
+	methods: {
+		startTime(time){
+			if(this.timer)clearInterval(this.timer);
+			this.timer = null;
+			this.time = time;
+			this.timer = setInterval(()=>{
+				this.time-=1;
+			},1000)
+		}
+	},
+  computed: {
+    showTime() {
+      return duration => {
+        if (duration <= 0) return `00:00`;
+        // 更新currentTime,将秒数转换为时分秒格式
+        // let hours = Math.floor(duration / 3600);
+        let minutes = Math.floor((duration % 3600) / 60);
+        let seconds = Math.floor(duration % 60);
+        // this.recordedForm.time = `${hours.toString().padStart(2, "0")}:${minutes
+        // 	.toString()
+        // 	.padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+        return `${minutes
+          .toString()
+          .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+      };
+    }
+  }
+};
+</script>
+
+<style scoped>
+.timepiece {
+  position: fixed;
+  width: auto;
+  height: auto;
+  top: 140px;
+  right: 10px;
+  z-index: 9999;
+  display: flex;
+}
+
+.time {
+  width: auto;
+  height: 80px;
+  display: flex;
+  align-items: center;
+}
+
+.time > img {
+  width: 55px;
+  height: 55px;
+  z-index: 9;
+}
+.time > span {
+  background-color: #38d0b1;
+  border: solid 1px #1a9200;
+  border-radius: 8px;
+  position: relative;
+  left: -20px;
+  top: 3px;
+  padding: 5px 10px 5px 25px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 134 - 16
src/components/classRoomHelper/index.vue

@@ -4,16 +4,26 @@
       <searchArea
         :courseDetail="courseDetail"
         ref="searchAreaRef"
+        :navList="navList"
+        :tcid="tcid"
+				:fileId="fileId"
+				:recordType="recordType"
         v-if="itemType == 1"
       />
       <taskArea
         :courseDetail="courseDetail"
+        :navList="navList"
+        :courseType="courseType"
+        :taskCount="taskCount"
+        :worksStudent="worksStudent"
         ref="taskAreaRef"
+				:fileId="fileId"
         v-if="itemType == 2"
       />
       <dialogArea
         :courseDetail="courseDetail"
         ref="dialogAreaRef"
+				:fileId="fileId"
         v-if="itemType == 3"
       />
     </div>
@@ -34,7 +44,17 @@
           </el-tooltip>
         </div>
 
-        <div @click="$emit('authority')">
+        <div @click="$emit('review')" v-if="tType == 1">
+          <el-tooltip class="item" effect="dark" content="评论" placement="top">
+            <img
+              :src="require('../../assets/icon/course/comment.png')"
+              alt=""
+              style="width: 22px;height: 22px;"
+            />
+          </el-tooltip>
+        </div>
+        <div @click="$emit('authority')" v-if="tType == 1 || tType == 4">
+          <!-- -->
           <el-tooltip class="item" effect="dark" content="权限" placement="top">
             <img
               :src="require('../../assets/icon/course/setting.png')"
@@ -134,6 +154,8 @@
         </div>
       </div>
     </div>
+    <levitatedSphere ref="levitatedSphereRef" @startTime="startTime" />
+    <timepiece ref="timepieceRef" />
   </div>
 </template>
 
@@ -141,27 +163,63 @@
 import searchArea from "./component/searchArea.vue";
 import taskArea from "./component/taskArea.vue";
 import dialogArea from "./component/dialogArea.vue";
+import levitatedSphere from "./component/levitatedSphere.vue";
+import timepiece from "./component/timepiece.vue";
 export default {
-  emits: ["refresh", "goStep", "backPage", "authority"],
+  emits: ["refresh", "goStep", "backPage", "authority", "review"],
   components: {
     searchArea,
     taskArea,
-    dialogArea
+    dialogArea,
+    levitatedSphere,
+    timepiece
   },
   props: {
     courseDetail: {
       type: Object,
       default: () => {}
+    },
+    tType: {
+      type: Number,
+      default: 0
+    },
+    navList: {
+      type: Array,
+      default: () => []
+    },
+    tcid: {
+      type: String,
+      default: ""
+    },
+    courseType: {
+      type: Number,
+      default: 0
+    },
+    taskCount: {
+      type: Number,
+      default: 0
+    },
+    worksStudent: {
+      type: Array,
+      default: () => []
+    },
+    fileList: {
+      type: Array,
+      default: () => []
     }
   },
   data() {
     return {
       type: 0,
-      itemType: 0 //0--无  1-搜索  2-任务 3-对话
+      itemType: 0, //0--无  1-搜索  2-任务 3-对话
+      fileId: [],
+			recordType:0,
+      getFileIdLoading: false
     };
   },
   mounted() {
     this.setWidth();
+    this.getFileId();
   },
   methods: {
     setWidth() {
@@ -179,17 +237,72 @@ export default {
       this.type = 0;
       this.openSetting();
       this.$nextTick(() => {
-        if (this.itemType == 1 && type != 1) {
-          this.$refs.searchAreaRef.scrollBottom();
-          this.$refs.searchAreaRef.getWantSearch();
-        } else if (this.itemType == 2) {
-          this.$refs.taskAreaRef.scrollBottom();
-        } else if (this.itemType == 3) {
-          this.$refs.dialogAreaRef.scrollBottom();
-        }
+        // if (this.itemType == 1 && type != 1) {
+        //   this.$refs.searchAreaRef.scrollBottom();
+        //   this.$refs.searchAreaRef.getWantSearch();
+        // } else if (this.itemType == 2) {
+        //   this.$refs.taskAreaRef.scrollBottom();
+        // } else if (this.itemType == 3) {
+        //   this.$refs.dialogAreaRef.scrollBottom();
+        // }
         this.itemType = type;
       });
-    }
+    },
+    //计时
+    startTime(time) {
+      this.$refs.timepieceRef.startTime(time);
+    },
+    getFileId() {
+      if (this.getFileIdLoading) return;
+			this.getFileIdLoading = true;
+      this.fileId = [];
+			let _this = this;
+      let _successFileUrl = [];
+      if (this.fileList.length <= 0) retrun;
+      let addType = ["DOCX", "DOC", "PPT", "PPTX", "MD", "TXT","PDF"];
+      this.fileList.forEach(i => {
+        if (
+          addType.includes(
+            i.url.split(".")[i.url.split(".").length - 1].toLocaleUpperCase()
+          )
+        ) {
+          _successFileUrl.push(i.url);
+        }
+      });
+      let promiseList = [];
+      _successFileUrl.forEach(i => {
+        promiseList.push(
+          new Promise((resolve, reject) => {
+            _this.ajax
+              .put("https://gpt4.cocorobo.cn/upload_file_knowledge", {
+                url: i
+              })
+              .then(res => {
+                let _data = res.data.FunctionResponse;
+                if (_data.result && _data.result.id) {
+                  this.fileId.push(_data.result.id);
+                }
+								resolve();
+              });
+          })
+        );
+      });
+      Promise.all(promiseList).then(res => {
+        this.getFileIdLoading = false;
+      });
+    },
+		startAssistant(){
+			if(this.recordType==0){
+				this.$refs.levitatedSphereRef.recordStart();
+			}else if(this.recordType==1){
+				this.$refs.levitatedSphereRef.stopRecord();
+			}
+		},
+		changeRecordType(type){
+			console.log("修改了")
+			this.recordType = type;
+			console.log(this.recordType)
+		},
   }
 };
 </script>
@@ -203,8 +316,10 @@ export default {
   border-radius: 10px;
   box-sizing: border-box;
   right: 20px;
-  overflow: hidden;
+  /* overflow: hidden; */
   display: flex;
+  top: 20px;
+  z-index: 1000;
 }
 
 .ch_nav_box {
@@ -212,8 +327,10 @@ export default {
   width: 65px;
   display: flex;
   flex-direction: column;
-  justify-content: flex-end;
+  /* justify-content: flex-end; */
+  margin-top: auto;
   align-items: center;
+  overflow: auto;
 }
 
 .ch_content_box {
@@ -229,7 +346,7 @@ export default {
   border-top: solid 1px #eaeaea;
   display: flex;
   flex-direction: column;
-  justify-content: flex-end;
+  /* justify-content: flex-end; */
 }
 
 .ch_nav_box_middle {
@@ -294,6 +411,7 @@ export default {
 .ch_nav_box_top {
   width: 100%;
   height: auto;
+  margin-top: auto;
 }
 .ch_nav_box_top > div {
   width: 100%;

+ 15 - 0
src/components/courseDetail.vue

@@ -226,6 +226,9 @@
               <span :class="{ active: type == 1 }" @click="getCTwo"
                 >课程分析</span
               >
+              <span :class="{ active: type == 3 }" @click="getCThree"
+                >课程评价</span
+              >
             </div>
             <div
               v-if="((tType == 1 || tType == 4) && type == 2) || tType == 2"
@@ -991,6 +994,13 @@
                 {{ '时间:' + item + '次数:' + chaptersJson.time[item] }}</div> -->
               <!-- <div>实施时间:{{ chaptersJson.startTime }}</div> -->
             </div>
+            <div
+              v-if="(type == 3)"
+              :class="courseDetail.brief != '' ? 'rightTd' : 'noBRight'"
+              style="width: 100%; padding-top: 20px"
+            >
+              <scoreZong :courseid="id" :title="courseDetail.title"></scoreZong>
+            </div>
           </div>
         </div>
 
@@ -1078,6 +1088,7 @@ import { tools } from "../common/tools";
 import axios from "axios";
 import JSZip from "jszip";
 import FileSaver from "file-saver";
+import scoreZong from './scoreZong/get.vue'
 
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
@@ -1133,6 +1144,7 @@ export default {
   components: {
     Heatmap,
     Group,
+    scoreZong
   },
   data() {
     return {
@@ -1628,6 +1640,9 @@ export default {
       this.type = 1;
       this.getCourseDetail2();
     },
+    getCThree(){
+      this.type = 3
+    },
     getCourseDetail2() {
       const loading = this.$loading.service({
         background: "rgba(255, 255, 255, 0.7)",

+ 2 - 2
src/components/easy2/studyStudent jiu.vue

@@ -17980,7 +17980,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -18948,7 +18948,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 180 - 42
src/components/easy2/studyStudent.vue

@@ -10,8 +10,7 @@
         box-sizing: border-box;
       "
     >
-      <div class="btnAllNT">
-        <!-- <img src="../../assets/icon/learn/screen.png" @click="allScrell" /> -->
+      <!-- <div class="btnAllNT">
         <img
           v-if="
                 courseDetail.userid == userid ||
@@ -51,7 +50,7 @@
             )
           "
         />
-      </div>
+      </div> -->
       <div
         class="pButton"
         style="left: 0; top: 140px"
@@ -225,10 +224,10 @@
           </div>
         </div>
       </div>
-      <div class="body_student" :class="{ navLeftCss: !mlDialog }">
-        <div class="new_topFixed"></div>
-        <div class="new_top" :class="{ navLeftCss: !mlDialog }">
-          <div class="courseIndex">
+      <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: orgArray.includes(org) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -245,7 +244,7 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll">
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -311,7 +310,7 @@
                   />
                 </div>
               </div>
-              <!-- <div
+              <div
                 class="last"
                 @click="juriVisible = true"
                 v-if="tType == 1"
@@ -329,7 +328,7 @@
                   />
                 </div>
                 <div class="lastText">权限</div>
-              </div> -->
+              </div>
               <div
                 class="returnBtn1 returnIcon"
                 @click.stop="
@@ -1881,7 +1880,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -2999,7 +3000,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(16, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3099,7 +3102,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3307,7 +3312,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(32, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3475,7 +3482,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(57, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3723,7 +3732,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(50, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3909,7 +3920,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(4, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4076,7 +4089,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(45, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4182,7 +4197,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(69, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4478,7 +4495,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(15, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4760,7 +4779,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(1, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5042,7 +5063,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(3, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5323,7 +5346,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5605,7 +5630,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(7, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5712,7 +5739,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5844,7 +5873,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(40, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6016,7 +6047,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(41, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6249,7 +6282,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(47, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6407,7 +6442,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(48, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6636,7 +6673,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(52, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -8041,6 +8080,23 @@
         </el-dialog>
       </div>
     </div>
+		<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
+		<classRoomHelper :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+                    '/courseDetail?userid=' +
+                      userid +
+                      '&oid=' +
+                      oid +
+                      '&org=' +
+                      org +
+                      '&cid=' +
+                      classId +
+                      '&courseId=' +
+                      id +
+                      '&tType=' +
+                      tType +
+                      '&screenType=' +
+                      screenType
+                  )"></classRoomHelper>
     <div
       class="pButton"
       @click="(pzDialog = true), selectPz()"
@@ -8050,21 +8106,23 @@
       <!-- 批 -->
       <img src="../../assets/mlBtn.png" style="width: 25px" alt="" />
     </div>
-    <div v-if="pzDialog == true" class="newDialogCss">
+    <div v-if="pzDialog == true" class="newDialogCss" :style="`right:${commentRight}`">
       <div class="pzTop2">
         <!-- <div>评论</div>
         <div @click="pzDialog = false">
           <img src="../../assets/close1.png" alt="" />
         </div> -->
         <div class="checkbox">
-           <!-- <div class="check" style="font-size: 25px; position: unset">
+          <!-- <div class="check" style="font-size: 25px; position: unset">
             评论
           </div> -->
 					<div class="cb-tabList">
 						<div :class="[commentTagShow==0?'cb-tabItem':'']" @click="commentTagShow=0">评论</div>
-						<div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div>
+						<!-- <div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div> -->
+            <!-- v-show="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'" -->
+						<div :class="[commentTagShow==2?'cb-tabItem':'']" @click="commentTagShow=2">总评</div>
 					</div>
-          <el-select v-model="pzStype" @change="selectPz" class="selectBox">
+          <el-select v-model="pzStype" @change="selectPz" class="selectBox" v-show="commentTagShow == 0">
             <el-option label="时间降序" :value="1"></el-option>
             <el-option label="时间升序" :value="2"></el-option>
             <el-option label="我的评课" :value="3"></el-option>
@@ -8169,6 +8227,9 @@
 			<div class="scoreList" v-if="commentTagShow==1">
 				<scoreItem v-for="item in scoreList.datalist" @refresh="getScoreList" :data="item" :isScore="scoreList.isScoreList.filter(i=>(i.userid==item.userid && i.courseid == item.courseId))" :key="item.courseId"/>
 			</div>
+      <div class="scoreList" v-if="commentTagShow==2" style="position: relative">
+        <scoreZong :courseid="id" :userid="userid"></scoreZong>
+			</div>
     </div>
     <div
       v-if="toolDialogVisible == true"
@@ -11881,6 +11942,8 @@ import EnglishVoice from '../EnglishVoice2/index.vue'
 import checkEnglishVoice from '../checkEnglishVoice/index.vue'
 import correctText from '../components/correctText.vue'
 import scoreItem from '../scoreList/scoreItem.vue'
+import scoreZong from '../scoreZong/index.vue'
+import classRoomHelper from '../classRoomHelper/index.vue'
 
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
@@ -11954,7 +12017,9 @@ export default {
     EnglishVoice,
     checkEnglishVoice,
 		correctText,
-		scoreItem
+		scoreItem,
+		classRoomHelper,
+    scoreZong
   },
   data() {
     return {
@@ -12319,6 +12384,9 @@ export default {
 				listdata:[],
 				isScoreList:[],	
 			},
+			classRoomHelperWidth: '85px',
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5']
     };
   },
   methods: {
@@ -14388,6 +14456,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14549,7 +14618,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
-
+										likeJson.push(d[k])
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
                     }
@@ -14601,6 +14670,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14608,6 +14678,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14654,6 +14725,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14661,6 +14733,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14699,6 +14772,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14706,6 +14780,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14721,6 +14796,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14728,6 +14804,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14743,6 +14820,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14750,6 +14828,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14788,6 +14867,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14795,6 +14875,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14833,6 +14914,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14840,6 +14922,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14879,6 +14962,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14886,6 +14970,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14921,6 +15006,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14928,6 +15014,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14941,6 +15028,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14948,6 +15036,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14961,6 +15050,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14968,6 +15058,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14981,6 +15072,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14988,6 +15080,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15001,6 +15094,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15008,6 +15102,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15021,6 +15116,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15029,7 +15125,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15043,6 +15140,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15050,6 +15148,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15063,6 +15162,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15070,6 +15170,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15088,6 +15189,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15095,6 +15197,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15108,6 +15211,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15115,6 +15219,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15127,6 +15232,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15134,6 +15240,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15150,6 +15257,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15157,6 +15265,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15173,6 +15282,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15180,6 +15290,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -18918,7 +19029,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19807,6 +19918,9 @@ export default {
       }
       // console.log(_url)
       return _url 
+    },
+		setClassRoomHelperWidth(width){
+      this.classRoomHelperWidth = width
     }
   },
   directives: {
@@ -19866,6 +19980,19 @@ export default {
           : "";
       };
     },
+		commentRight(){
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
+				return "35px";
+			}
+			return `calc(${this.classRoomHelperWidth} + 5px)`
+			// if(this.$refs["classRoomHelperRef"].type==0){
+			// 	return "100px";
+			// }else if(this.$refs["classRoomHelperRef"].type==1){
+			// 	return "502px"
+			// }else{
+			// 	return "0px"
+			// }
+		},
     checkUpload() {
       return function () {
         var studentK = [];
@@ -19976,7 +20103,8 @@ export default {
         .catch((err) => {
           console.error(err);
         });
-		}
+		},
+		
   },
   mounted() {
     document.body.addEventListener("click", (e) => {
@@ -20011,7 +20139,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";
@@ -21760,6 +21888,14 @@ export default {
   border: 1px solid #0061ff;
 }
 
+.noWorksName > span{
+  max-width: 100%;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .isWorksName2 {
   width: 100px;
   height: 40px;
@@ -22659,7 +22795,7 @@ export default {
 
 .newDialogCss>.scoreList{
 	width:100%;
-	height:auto;
+	height:100%;
 	box-sizing:border-box;
 	padding:10px 15px;
 	overflow:auto;
@@ -22682,7 +22818,7 @@ export default {
 .pzTop2 .checkbox {
   display: flex;
   align-items: center;
-  padding: 5px 30px;
+  padding: 5px 10px;
   flex: 0 0 auto;
   font-weight: bold;
   border-bottom: 1px solid #eee;
@@ -23057,6 +23193,8 @@ ol {
   /* -webkit-user-modify: read-write; */
   overflow-wrap: break-word;
   -webkit-line-break: after-white-space;
+  word-break: break-word;
+  white-space: pre-line;
 }
 
 .scoreBox,

+ 2 - 2
src/components/easy3/studyStudent jiu.vue

@@ -17870,7 +17870,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -18838,7 +18838,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 228 - 40
src/components/easy3/studyStudent.vue

@@ -10,8 +10,7 @@
         box-sizing: border-box;
       "
     >
-      <div class="btnAllNT">
-        <!-- <img src="../../assets/icon/learn/screen.png" @click="allScrell" /> -->
+      <!-- <div class="btnAllNT">
         <img
         v-if="
                 courseDetail.userid == userid ||
@@ -51,7 +50,7 @@
             )
           "
         />
-      </div>
+      </div> -->
       <div
         class="pButton"
         style="left: 0; top: 140px"
@@ -225,10 +224,10 @@
           </div>
         </div>
       </div>
-      <div class="body_student" :class="{ navLeftCss: !mlDialog }">
-        <div class="new_topFixed"></div>
-        <div class="new_top" :class="{ navLeftCss: !mlDialog }">
-          <div class="courseIndex">
+      <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: orgArray.includes(org) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -245,7 +244,8 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll">
+					<!-- v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'" -->
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -311,7 +311,7 @@
                   />
                 </div>
               </div>
-              <!-- <div
+              <div
                 class="last"
                 @click="juriVisible = true"
                 v-if="tType == 1"
@@ -329,7 +329,7 @@
                   />
                 </div>
                 <div class="lastText">权限</div>
-              </div> -->
+              </div>
               <div
                 class="returnBtn1 returnIcon"
                 @click.stop="
@@ -423,6 +423,8 @@
             </div> -->
           </div>
         </div>
+        <!-- !chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+              .taskDetail3 && -->
         <div
           class="isNoMessage"
           v-if="
@@ -444,6 +446,8 @@
           <img src="../../assets/icon/isNoMessage.png" alt />
         </div>
         <div class="study_top" :class="{ pzClass: pzDialog }">
+          <!-- chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                .taskDetail3 || -->
           <div
             class="vedioBox"
             v-if="
@@ -454,6 +458,44 @@
             "
             style="border-radius: 0 0 20px 20px"
           >
+          <!-- <div
+              class="taskBox"
+              v-if="
+                chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                  .taskDetail3
+              "
+            >
+              <div
+                style="
+                  display: flex;
+                  flex-wrap: nowrap;
+                  flex-direction: column;
+                  position: relative;
+                "
+              >
+                <div
+                  style="
+                    padding: 15px 0;
+                    line-height: 29px;
+                    font-size: 18px;
+                    color: #0e1e33;
+                  "
+                  class="cont"
+                  v-if="
+                    chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                      .taskDetail3 != ''
+                  "
+                  v-html="
+                    chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
+                      .taskDetail3
+                      ? MarkdownT(chapInfoList[courseType].chapterInfo[0].taskJson[
+                          taskCount
+                        ].taskDetail3)
+                      : '暂无描述'
+                  "
+                ></div>
+              </div>
+            </div> -->
             <div
               class="taskBox"
               v-if="
@@ -1868,7 +1910,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -2986,7 +3030,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(16, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3086,7 +3132,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3294,7 +3342,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(32, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3462,7 +3512,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(57, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3710,7 +3762,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(50, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3896,7 +3950,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(4, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4063,7 +4119,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(45, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4169,7 +4227,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(69, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4465,7 +4525,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(15, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4747,7 +4809,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(1, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5029,7 +5093,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(3, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5310,7 +5376,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5592,7 +5660,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(7, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5699,7 +5769,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5831,7 +5903,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(40, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6003,7 +6077,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(41, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6236,7 +6312,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(47, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6394,7 +6472,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(48, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6623,7 +6703,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(52, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -8028,6 +8110,23 @@
         </el-dialog>
       </div>
     </div>
+				<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
+		<classRoomHelper :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+                    '/courseDetail?userid=' +
+                      userid +
+                      '&oid=' +
+                      oid +
+                      '&org=' +
+                      org +
+                      '&cid=' +
+                      classId +
+                      '&courseId=' +
+                      id +
+                      '&tType=' +
+                      tType +
+                      '&screenType=' +
+                      screenType
+                  )"></classRoomHelper>
     <div
       class="pButton"
       @click="(pzDialog = true), selectPz()"
@@ -8037,7 +8136,7 @@
       <!-- 批 -->
       <img src="../../assets/mlBtn.png" style="width: 25px" alt="" />
     </div>
-    <div v-if="pzDialog == true" class="newDialogCss">
+    <div v-if="pzDialog == true" class="newDialogCss" :style="`right:${commentRight}`">
       <div class="pzTop2">
         <!-- <div>评论</div>
         <div @click="pzDialog = false">
@@ -8049,9 +8148,11 @@
           </div> -->
 					<div class="cb-tabList">
 						<div :class="[commentTagShow==0?'cb-tabItem':'']" @click="commentTagShow=0">评论</div>
-						<div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div>
+						<!-- <div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div> -->
+            <!-- v-show="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'" -->
+						<div :class="[commentTagShow==2?'cb-tabItem':'']" @click="commentTagShow=2">总评</div>
 					</div>
-          <el-select v-model="pzStype" @change="selectPz" class="selectBox">
+          <el-select v-model="pzStype" @change="selectPz" class="selectBox" v-show="commentTagShow == 0">
             <el-option label="时间降序" :value="1"></el-option>
             <el-option label="时间升序" :value="2"></el-option>
             <el-option label="我的评课" :value="3"></el-option>
@@ -8156,6 +8257,9 @@
 			<div class="scoreList" v-if="commentTagShow==1">
 				<scoreItem v-for="item in scoreList.datalist" @refresh="getScoreList" :data="item" :isScore="scoreList.isScoreList.filter(i=>(i.userid==item.userid && i.courseid == item.courseId))" :key="item.courseId"/>
 			</div>
+      <div class="scoreList" v-if="commentTagShow==2" style="position: relative">
+        <scoreZong :courseid="id" :userid="userid"></scoreZong>
+			</div>
     </div>
     <div
       v-if="toolDialogVisible == true"
@@ -11872,6 +11976,9 @@ import EnglishVoice from '../EnglishVoice2/index.vue'
 import checkEnglishVoice from '../checkEnglishVoice/index.vue'
 import correctText from '../components/correctText.vue'
 import scoreItem from '../scoreList/scoreItem.vue'
+import scoreZong from '../scoreZong/index.vue'
+import classRoomHelper from '../classRoomHelper/index.vue'
+import MarkdownIt from "markdown-it";
 
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
@@ -11945,7 +12052,9 @@ export default {
     EnglishVoice,
     checkEnglishVoice,
 		correctText,
-		scoreItem
+		scoreItem,
+		classRoomHelper,
+    scoreZong
   },
   data() {
     return {
@@ -12311,6 +12420,9 @@ export default {
 				listdata:[],
 				isScoreList:[],	
 			},
+			classRoomHelperWidth: '85px',
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5']
     };
   },
   methods: {
@@ -14383,6 +14495,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14544,7 +14657,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
-
+										likeJson.push(d[k])
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
                     }
@@ -14596,6 +14709,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14603,6 +14717,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14649,6 +14764,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14656,6 +14772,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14694,6 +14811,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14701,6 +14819,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14716,6 +14835,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14723,6 +14843,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14738,6 +14859,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14745,6 +14867,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14783,6 +14906,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14790,6 +14914,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14828,6 +14953,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14835,6 +14961,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14874,6 +15001,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14881,6 +15009,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14916,6 +15045,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14923,6 +15053,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14936,6 +15067,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14943,6 +15075,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14956,6 +15089,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14963,6 +15097,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14976,6 +15111,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14983,6 +15119,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14996,6 +15133,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15003,6 +15141,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15016,6 +15155,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15024,7 +15164,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15038,6 +15179,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15045,6 +15187,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15058,6 +15201,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15065,6 +15209,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15083,6 +15228,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15090,6 +15236,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15103,6 +15250,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15110,6 +15258,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15122,6 +15271,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15129,6 +15279,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15145,6 +15296,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15152,6 +15304,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15168,6 +15321,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15175,6 +15329,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -18923,7 +19078,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19823,7 +19978,10 @@ export default {
         .catch((err) => {
           console.error(err);
         });
-		}
+		},
+		setClassRoomHelperWidth(width){
+      this.classRoomHelperWidth = width
+    }
   },
   directives: {
     // 使用局部注册指令的方式
@@ -19882,6 +20040,26 @@ export default {
           : "";
       };
     },
+    MarkdownT() {
+      return function (c) {
+        let md = new MarkdownIt();
+        return c
+          ? md.render(c) : "";
+      };
+    },
+		commentRight(){
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
+				return "35px";
+			}
+			return `calc(${this.classRoomHelperWidth} + 5px)`
+			// if(this.$refs["classRoomHelperRef"].type==0){
+			// 	return "100px";
+			// }else if(this.$refs["classRoomHelperRef"].type==1){
+			// 	return "502px"
+			// }else{
+			// 	return "0px"
+			// }
+		},
     checkUpload() {
       return function () {
         var studentK = [];
@@ -20013,7 +20191,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";
@@ -21762,6 +21940,14 @@ export default {
   border: 1px solid #0061ff;
 }
 
+.noWorksName > span{
+  max-width: 100%;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .isWorksName2 {
   width: 100px;
   height: 40px;
@@ -22684,7 +22870,7 @@ export default {
 .pzTop2 .checkbox {
   display: flex;
   align-items: center;
-  padding: 5px 30px;
+  padding: 5px 10px;
   flex: 0 0 auto;
   font-weight: bold;
   border-bottom: 1px solid #eee;
@@ -23061,6 +23247,8 @@ ol {
   /* -webkit-user-modify: read-write; */
   overflow-wrap: break-word;
   -webkit-line-break: after-white-space;
+  word-break: break-word;
+  white-space: pre-line;
 }
 
 .scoreBox,

+ 33 - 4
src/components/index.vue

@@ -92,7 +92,14 @@
                   " alt="" />
                 </div>
                 <div class="middle_white">
-                  <div class="textOverflow">{{ item.title }}</div>
+                  <div class="textOverflow">
+                    <el-tooltip effect="light" :content="item.title" placement="top">
+                      <span class="utitle">{{ item.title }}</span>
+                    </el-tooltip>
+                    <el-tooltip effect="light" :content="item.uname" placement="top">
+                      <span class="uname">{{ item.uname }}</span>
+                    </el-tooltip>
+                  </div>
                   <div class="nameAndLength">
                     <el-tooltip class="typeN" effect="light" :content="item.typename" placement="top">
                       <div>{{ item.typename }}</div>
@@ -161,7 +168,14 @@
                       " alt="" />
                     </div>
                     <div class="middle_white">
-                      <div class="textOverflow">{{ item.title }}</div>
+                      <div class="textOverflow">
+                        <el-tooltip effect="light" :content="item.title" placement="top">
+                          <span class="utitle">{{ item.title }}</span>
+                        </el-tooltip>
+                        <el-tooltip effect="light" :content="item.uname" placement="top">
+                          <span class="uname">{{ item.uname }}</span>
+                        </el-tooltip>
+                      </div>
                       <div class="nameAndLength">
                         <el-tooltip class="typeN" effect="light" :content="item.typename" placement="top">
                           <div>{{ item.typename }}</div>
@@ -1030,12 +1044,27 @@ export default {
 
 .textOverflow {
   padding: 0 5px 0 0px;
-  width: 95%;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 16px;
+}
+
+.textOverflow > .utitle{
+  max-width: calc(100% - 100px);
   overflow: hidden;
   white-space: nowrap;
   text-overflow: ellipsis;
   font-weight: bold;
-  font-size: 16px;
+  display: block;
+}
+.textOverflow > .uname{
+  max-width: 90px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
 }
 
 .student_page {

+ 365 - 0
src/components/scoreZong/get.vue

@@ -0,0 +1,365 @@
+<template>
+    <div class="sz_body" v-loading="loading">
+        <div @click="exportExcel" v-show="false">导出</div>
+        <div style="font-size: 18px;margin-bottom: 20px;">评分人数:<span class="color">{{ num }}</span>人 总平均分:<span
+                class="color">{{ num ? score ? (score / num).toFixed(1) : 0 : 0 }}</span></div>
+        <div class="test_box" v-for="(item, index) in testList" :key="index">
+            <div class="testTitle">{{ item.title }}</div>
+            <div class="testContent" v-if="item.type == '1'" v-for="(item2, index2) in item.array"
+                :key="index + '-' + index2">
+                <div class="testContent_title">{{ index2 + 1 }}、{{ item2.title }}</div>
+                <div class="testContent_input">
+                    <!-- <el-input v-model="item2.uscore" class="c_input" @change="numberPan(index, index2, item2.score)"
+                        placeholder="请输入评分" /> -->
+                    <span>平均分:</span>
+                    <span class="color">{{ num ? item2.uscore ? (item2.uscore / num).toFixed(2) : 0 : 0 }}</span>
+                </div>
+            </div>
+            <div v-if="item.type == '2'">
+                <div class="test_ping" v-for="(answer, index2) in item.answerArray" :key="index + '-' + index2">
+                    <span style="    min-width: fit-content;">{{ index2 + 1 }}.</span>
+                    <span>{{ answer }}</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props: {
+        courseid: {
+            type: String,
+            default: ''
+        },
+        title: {
+            type: String,
+            default: ''
+        },
+    },
+    data() {
+        return {
+            userid:"",
+            testList: [
+                {
+                    title: '教学目标(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '目标结构完整,能够清晰地表达学生的学习过程与预期成果。目标符合学情,具有可行性与逻辑递进性。目标体现学生本位与素养导向,不单纯停留在知识与技能层面。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学内容(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '重难点突出,符合课标与教材要求,不超纲。符合学情特点,贴近学生生活,体现积极向上的育人价值观。关注学生学习的最近发展区,有意识地展现因材施教的意图。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学过程(30分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '课堂结构合理、紧密,层次清楚,突出重难点的解决。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        },
+                        {
+                            title: '强调“学”的活动设计,教与学有机结合。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        },
+                        {
+                            title: '课堂管理有序,教学语言清晰准确,能及时、合理地解决课堂问题,体现良好的教学素养。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学方法与策略(20分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '符合教学内容与学科特点。落实有效,能体现出学生的学习成效,不流于形式。具有一定的新意,展现教师的独立思考与探究意识。',
+                            score: 20,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学工具(15分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '合理、科学地使用信息化技术、学习单、自制教学道具、辅助性资源等教学工具。',
+                            score: 15,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学评价(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '重视评价,有合理的评价手段与工具。评价落实有效,体现针对性和专业性。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '创新意识(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '教学空间的选择、布置有独特想法,且合理有效。敢于尝试多样化的教学形式,如主题式、大单元、项目式、游戏化等。开发特色有效的教学策略与手段,如小组合作探究、跨学科展演等,教师特色鲜明。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学效果(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '达成目标,整个过程有资源的生成。学习过程中学生有满足、成功与喜悦等体验,对后续学习更有信心,能力得到发展。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '加分项(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '某项优点特别突出,如教学风貌、教学理念、教学特色、教学手段等。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '评语',
+                    type: '2',
+                    answer: '',
+                    answerArray: [],
+
+                },
+            ],
+            num: 0,
+            score: 0,
+            loading: false,
+            testArray: []
+        }
+    },
+    mounted() {
+        this.getList();
+    },
+    methods: {
+        exportExcel() {
+            try {
+
+
+                var res = this.testArray;
+                //如果value的json字段的key值和想要的headers值不一致时,可做如下更改
+                //将和下面的Object.fromEntries结合,将json字段的key值改变为要求的excel的header值
+                var array = [];
+                for (var i = 0; i < res.length; i++) {
+                    var _json = {};
+                    _json["序号"] = i+1;
+                    _json["姓名"] = res[i].username;
+                    _json["教学目标(5分)"] = res[i]['test00'];
+                    _json["教学内容(5分)"] = res[i]['test10'];
+                    _json["教学过程-1课程结构(10分)"] = res[i]['test20'];
+                    _json["教学过程-2活动设计(10分)"] = res[i]['test21'];
+                    _json["教学过程-3秩序管理(10分)"] = res[i]['test22'];
+                    _json["教学方法与策略(20分)"] = res[i]['test30'];
+                    _json["教学工具(15分)"] = res[i]['test40'];
+                    _json["教学评价(10分)"] = res[i]['test50'];
+                    _json["创新意识(10分)"] = res[i]['test60'];
+                    _json["教学效果(5分)"] = res[i]['test70'];
+                    _json["加分项(10分)"] = res[i]['test80'];
+                    _json["总分(110分)"] = res[i]['sum'];
+                    _json["评语"] = res[i]['ping'];
+                    array.push(_json);
+                }
+
+                var XLSX = require("xlsx");
+                const workbook = XLSX.utils.book_new(); //创建一个新的工作簿对象
+                let ws = XLSX.utils.json_to_sheet(array); //将json对象数组转化成工作表
+                // ws["!cols"] = [
+                //     //设置每一列的宽度
+                //     { wch: 50 },
+                //     { wch: 50 },
+                //     { wch: 50 },
+                // ];
+                XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
+                XLSX.writeFile(workbook, this.title+".xlsx");
+                // const wopts = { bookType: "xlsx", bookSST: false, type: "array" };//写入的样式bookType:输出的文件类型,type:输出的数据类型,bookSST: 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
+                // const wbout = XLSX.write(workbook, wopts);// 浏览器端和node共有的API,实际上node可以直接使用xlsx.writeFile来写入文件,但是浏览器没有该API
+                // FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }), `${title} demo.xlsx`);//保存文件
+                this.$message({
+                    message: "导出成功",
+                    type: "success",
+                });
+
+            } catch (e) {
+                console.log(e, e.stack);
+            }
+        },
+        numberPan(index, index2, score) {
+            let _score = this.testList[index].array[index2].uscore
+            if (/[^\d]/.test(_score) || _score < 0) {
+                this.$message.error('请输入大于0的整数')
+                this.testList[index].array[index2].uscore = 0
+            }
+            if (parseInt(_score) > parseInt(score)) {
+                this.$message.error('不能输入大于得分的整数')
+                this.testList[index].array[index2].uscore = score
+            }
+            this.$forceUpdate();
+        },
+        confirm() {
+            let params = [
+                {
+                    cid: this.courseid,
+                    uid: this.userid,
+                    json: JSON.stringify(this.testList),
+                },
+            ];
+            this.ajax
+                .post(this.$store.state.api + "opCourseScore", params)
+                .then((res) => {
+                    console.log(res.data);
+                    this.$message({
+                        message: "添加成功",
+                        type: "success",
+                    });
+                    this.getList();
+                    this.$forceUpdate();
+                })
+                .catch((err) => {
+                    console.error(err);
+                });
+        },
+        getList() {
+            let params =
+            {
+                cid: this.courseid,
+            };
+            this.loading = true
+            this.ajax
+                .get(this.$store.state.api + "getCourseScore", params)
+                .then((res) => {
+                    console.log(res.data);
+                    if (res.data[0].length > 0) {
+                        // this.testList = JSON.parse(res.data[0][0].json)
+                        let data = res.data[0]
+                        this.num = data.length
+                        let sum = 0
+                        for (var i = 0; i < data.length; i++) {
+                            let item = data[i]
+                            let _json = JSON.parse(item.json)
+                            for (var j = 0; j < this.testList.length; j++) {
+                                let test = this.testList[j]
+                                if (test.type == '2') {
+                                    if (_json[j].answer) {
+                                        test.answerArray.push(_json[j].answer)
+                                    }
+                                } else {
+                                    for (var k = 0; k < test.array.length; k++) {
+                                        let _item = test.array[k]
+                                        _item.uscore += _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                        _item.num++
+                                        sum += _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                    }
+                                }
+                            }
+                        }
+                        this.score = sum
+                        let testArray = []
+                        for (var i = 0; i < data.length; i++) {
+                            let item = data[i]
+                            let _json = JSON.parse(item.json)
+                            let _sum = 0
+                            for (var j = 0; j < this.testList.length; j++) {
+                                let test = this.testList[j]
+                                if (test.type == '2') {
+                                    if (_json[j].answer) {
+                                        item['ping'] = _json[j].answer
+                                    }else { 
+                                        item['ping'] = ''
+                                    }
+                                } else {
+                                    for (var k = 0; k < test.array.length; k++) {
+                                        let _item = test.array[k]
+                                        item['test'+j+k] =  _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                        _sum += _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                    }
+                                }
+                            }
+                            item['sum'] = _sum
+                            testArray.push(item)
+                        }
+                        this.testArray = testArray
+                    }
+                    this.loading = false
+                    this.$forceUpdate();
+                })
+                .catch((err) => {
+                    this.loading = false
+                    console.error(err);
+                });
+        }
+    },
+}
+</script>
+
+<style scoped>
+.sz_body {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+
+.test_box {
+    margin-bottom: 20px;
+}
+
+.testTitle {
+    font-size: 16px;
+    font-weight: 600;
+}
+
+.testContent {}
+
+.testContent_title {
+    margin-top: 10px;
+}
+
+.testContent_input {
+    margin-top: 5px;
+}
+
+.test_ping {
+    margin-top: 5px;
+    display: flex;
+    word-break: break-all;
+}
+
+.color {
+    color: #3681fc;
+}
+</style>

+ 315 - 0
src/components/scoreZong/index.vue

@@ -0,0 +1,315 @@
+<template>
+    <div class="sz_body" v-loading="loading" style="position: unset !important;">
+        <div class="test_box" v-for="(item, index) in testList" :key="index">
+            <div class="testTitle">{{ item.title }}</div>
+            <div class="testContent" v-if="item.type == '1'" v-for="(item2, index2) in item.array"
+                :key="index + '-' + index2">
+                <div class="testContent_title">{{ index2 + 1 }}、{{ item2.title }}</div>
+                <div class="testContent_input">
+                    <!-- <el-input v-model="item2.uscore" class="c_input" @change="numberPan(index, index2, item2.score)"
+                        placeholder="请输入评分" /> -->
+                    <el-rate v-model="item2.uscore" :allow-half="false" class="custom-rate"></el-rate>
+                    
+                </div>
+            </div>
+            <div v-if="item.type == '2'">
+                <textarea rows="8" class="binfo_input binfo_textarea" cols v-model="item.answer"
+                    placeholder="你还有哪些补充"></textarea>
+            </div>
+        </div>
+        <div class="btn">
+            <el-button type="primary" size="default" @click="confirm">提交</el-button>
+
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props: {
+        courseid: {
+            type: String,
+            default: ''
+        },
+        userid: {
+            type: String,
+            default: ''
+        },
+    },
+    data() {
+        return {
+            testList: [
+                {
+                    title: '教学目标(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '目标结构完整,能够清晰地表达学生的学习过程与预期成果。目标符合学情,具有可行性与逻辑递进性。目标体现学生本位与素养导向,不单纯停留在知识与技能层面。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学内容(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '重难点突出,符合课标与教材要求,不超纲。符合学情特点,贴近学生生活,体现积极向上的育人价值观。关注学生学习的最近发展区,有意识地展现因材施教的意图。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学过程(30分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '课堂结构合理、紧密,层次清楚,突出重难点的解决。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        },
+                        {
+                            title: '强调“学”的活动设计,教与学有机结合。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        },
+                        {
+                            title: '课堂管理有序,教学语言清晰准确,能及时、合理地解决课堂问题,体现良好的教学素养。(10分)',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学方法与策略(20分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '符合教学内容与学科特点。落实有效,能体现出学生的学习成效,不流于形式。具有一定的新意,展现教师的独立思考与探究意识。',
+                            score: 20,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学工具(15分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '合理、科学地使用信息化技术、学习单、自制教学道具、辅助性资源等教学工具。',
+                            score: 15,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学评价(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '重视评价,有合理的评价手段与工具。评价落实有效,体现针对性和专业性。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '创新意识(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '教学空间的选择、布置有独特想法,且合理有效。敢于尝试多样化的教学形式,如主题式、大单元、项目式、游戏化等。开发特色有效的教学策略与手段,如小组合作探究、跨学科展演等,教师特色鲜明。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '教学效果(5分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '达成目标,整个过程有资源的生成。学习过程中学生有满足、成功与喜悦等体验,对后续学习更有信心,能力得到发展。',
+                            score: 5,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '加分项(10分)',
+                    type: '1',
+                    array: [
+                        {
+                            title: '某项优点特别突出,如教学风貌、教学理念、教学特色、教学手段等。',
+                            score: 10,
+                            uscore: 0,
+                        }
+                    ],
+                },
+                {
+                    title: '评语',
+                    type: '2',
+                    answer: ''
+                },
+            ],
+            loading: false
+        }
+    },
+    mounted () {
+        this.getList();
+    },
+    methods: {
+        numberPan(index, index2, score) {
+            let _score = this.testList[index].array[index2].uscore
+            if (/[^\d]/.test(_score) || _score < 0) {
+                this.$message.error('请输入大于0的整数')
+                this.testList[index].array[index2].uscore = 0
+            }
+            if (parseInt(_score) > parseInt(score)) {
+                this.$message.error('不能输入大于得分的整数')
+                this.testList[index].array[index2].uscore = score
+            }
+            this.$forceUpdate();
+        },
+        confirm() {
+            let params = [
+                {
+                    cid: this.courseid,
+                    uid: this.userid,
+                    json: JSON.stringify(this.testList),
+                },
+            ];
+            this.ajax
+                .post(this.$store.state.api + "opCourseScore", params)
+                .then((res) => {
+                    console.log(res.data);
+                    this.$message({
+                        message: "添加成功",
+                        type: "success",
+                    });
+                    this.getList();
+                    this.$forceUpdate();
+                })
+                .catch((err) => {
+                    console.error(err);
+                });
+        },
+        getList() {
+            let params =
+            {
+                cid: this.courseid,
+                uid: this.userid,
+            };
+            this.loading = true
+            this.ajax
+                .get(this.$store.state.api + "getCourseScoreP", params)
+                .then((res) => {
+                    console.log(res.data);
+                    if(res.data[0].length > 0){
+                        this.testList = JSON.parse(res.data[0][0].json)
+                    }
+                    this.loading = false
+                    this.$forceUpdate();
+                })
+                .catch((err) => {
+                    this.loading = false
+                    console.error(err);
+                });
+        }
+    },
+}
+</script>
+
+<style scoped>
+.sz_body {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+
+.test_box {
+    margin-bottom: 20px;
+}
+
+.testTitle {
+    font-size: 16px;
+    font-weight: 600;
+}
+
+.testContent {}
+
+.testContent_title {
+    margin-top: 10px;
+}
+
+.testContent_input {
+    margin-top: 5px;
+}
+
+.c_input {
+    width: 120px;
+}
+
+.binfo_input {
+    width: 100%;
+    margin: 0;
+    padding: 12px 14px;
+    display: block;
+    min-width: 0;
+    outline: none;
+    box-sizing: border-box;
+    background: none;
+    border: none;
+    border-radius: 4px;
+    background: #fff;
+    font-size: 16px;
+    resize: none;
+    font-family: "Microsoft YaHei";
+    min-height: 48px;
+    /* border: 1px solid #3682fc00; */
+    border: 1.5px solid #cad1dc;
+    margin-top: 10px;
+}
+
+.binfo_textarea {
+    border: 1.5px solid #cad1dc;
+    font-size: 16px;
+    resize: none;
+    /* background: #f6f6f6; */
+    font-family: "Microsoft YaHei";
+}
+
+.binfo_input:focus-visible {
+    border: 1.5px solid #3681fc !important;
+}
+
+.btn {
+    text-align: right;
+    position: sticky;
+    left: 0;
+    bottom: 15px;
+    width: fit-content;
+    display: flex;
+    justify-content: flex-end;
+    margin-left: calc(100% - 80px);
+}
+
+.custom-rate{
+    height: auto;
+    margin-top: 10px;
+}
+
+.custom-rate >>> .el-rate__icon {
+  font-size: 28px;
+  margin-right: 5px;
+}
+.custom-rate >>> .el-icon-star-on:before{
+  font-size: 32px;
+}
+
+.custom-rate >>> .el-rate__icon.hover{
+    transform: scale(1);
+}
+</style>

+ 145 - 37
src/components/studyStudent.vue

@@ -240,7 +240,7 @@
       <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
         <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
         <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+classRoomHelperWidth+' - 20% - 40px)' : 'calc(100% - '+classRoomHelperWidth+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
-          <div class="courseIndex">
+          <div class="courseIndex" :style="{width: orgArray.includes(org) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -257,7 +257,7 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll" v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'">
+          <div class="btnAll"  v-show="!orgArray.includes(org) && !oidArray.includes(oid)"><!--v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'"-->
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -1878,7 +1878,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -2996,7 +2998,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(16, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3096,7 +3100,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3304,7 +3310,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(32, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3472,7 +3480,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(57, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3720,7 +3730,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(50, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -3906,7 +3918,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(4, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4073,7 +4087,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(45, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4179,7 +4195,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(69, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4475,7 +4493,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(15, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -4757,7 +4777,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(1, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5039,7 +5061,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(3, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5320,7 +5344,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5602,7 +5628,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(7, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5709,7 +5737,9 @@
                         :key="sIndex"
                         class="noWorksName"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -5841,7 +5871,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(40, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6013,7 +6045,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(41, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6246,7 +6280,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(47, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6404,7 +6440,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(48, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -6633,7 +6671,9 @@
                         class="noWorksName"
                         @click="teacherWorkSubmit(52, toolIndex, taskCount, s)"
                       >
-                        {{ s.student }}
+                        <el-tooltip effect="dark" :content="s.student" placement="top">
+                            <span>{{ s.student }}</span>
+                        </el-tooltip>
                       </div>
                     </div>
                   </div>
@@ -8037,7 +8077,8 @@
           </div>
         </el-dialog>
       </div>
-      <classRoomHelper v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5'" ref="classRoomHelperRef" :courseDetail="courseDetail" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @backPage="goTo(
+			<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
+      <classRoomHelper :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)"  ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -8075,9 +8116,11 @@
           </div> -->
 					<div class="cb-tabList">
 						<div :class="[commentTagShow==0?'cb-tabItem':'']" @click="commentTagShow=0">评论</div>
-						<div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div>
+						<!-- <div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div> -->
+            <!-- v-show="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'" -->
+						<div :class="[commentTagShow==2?'cb-tabItem':'']" @click="commentTagShow=2">总评</div>
 					</div>
-          <el-select v-model="pzStype" @change="selectPz" class="selectBox">
+          <el-select v-model="pzStype" @change="selectPz" class="selectBox" v-show="commentTagShow == 0">
             <el-option label="时间降序" :value="1"></el-option>
             <el-option label="时间升序" :value="2"></el-option>
             <el-option label="我的评课" :value="3"></el-option>
@@ -8182,6 +8225,9 @@
 			<div class="scoreList" v-if="commentTagShow==1">
 				<scoreItem v-for="item in scoreList.datalist" @refresh="getScoreList" :data="item" :isScore="scoreList.isScoreList.filter(i=>(i.userid==item.userid && i.courseid == item.courseId))" :key="item.courseId"/>
 			</div>
+			<div class="scoreList" v-if="commentTagShow==2" style="position: relative">
+        <scoreZong :courseid="id" :userid="userid"></scoreZong>
+			</div>
     </div>
     <div
       v-if="toolDialogVisible == true"
@@ -11870,6 +11916,7 @@ import EnglishVoice from './EnglishVoice2/index.vue'
 import checkEnglishVoice from './checkEnglishVoice/index.vue'
 import correctText from './components/correctText.vue'
 import scoreItem from './scoreList/scoreItem.vue'
+import scoreZong from './scoreZong/index.vue'
 import classRoomHelper from './classRoomHelper/index.vue'
 
 const getFile = (url) => {
@@ -11945,7 +11992,8 @@ export default {
     checkEnglishVoice,
 		correctText,
 		scoreItem,
-    classRoomHelper
+    classRoomHelper,
+    scoreZong
   },
   data() {
     return {
@@ -12309,7 +12357,9 @@ export default {
 				listdata:[],
 				isScoreList:[],	
 			},
-      classRoomHelperWidth: '85px'
+      classRoomHelperWidth: '85px',
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5']
     };
   },
   methods: {
@@ -14379,6 +14429,7 @@ export default {
               var commentCount = 0;
               var isLikes = false;
               var commentJson = [];
+							var likeJson = [];
               var data = b[j];
               if (i == b[j].tool) {
                 if (data.type == 2 && a[i].tool[0] == 4) {
@@ -14540,6 +14591,7 @@ export default {
                   //点赞
                   if (d[k].workId == b[j].id) {
                     likesCount++;
+										likeJson.push(d[k])
 
                     if (d[k].likesId == this.userid) {
                       isLikes = true;
@@ -14592,6 +14644,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 1,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14599,6 +14652,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14645,6 +14699,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 3,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14652,6 +14707,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14690,6 +14746,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 4,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14697,6 +14754,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_works);
                     _worksStudent2[i].push(_works);
@@ -14712,6 +14770,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 5,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14719,6 +14778,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i].push(_work);
                     _worksStudent2[i].push(_work);
@@ -14734,6 +14794,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 12,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14741,6 +14802,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14779,6 +14841,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14786,6 +14849,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14824,6 +14888,7 @@ export default {
                       works: b[j].content,
                       sName: b[j].name,
                       type: 0,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -14831,6 +14896,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     if (this.isGroup) {
                       let isGw = 1;
@@ -14870,6 +14936,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14877,6 +14944,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   if (this.isGroup) {
                     let isGw = 1;
@@ -14912,6 +14980,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 2,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14919,6 +14988,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14932,6 +15002,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 8,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14939,6 +15010,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14952,6 +15024,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 9,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14959,6 +15032,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14972,6 +15046,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 10,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14979,6 +15054,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -14992,6 +15068,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 13,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -14999,6 +15076,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15012,6 +15090,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 16,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15020,7 +15099,8 @@ export default {
                     isLikes: isLikes,
                     commentJson: commentJson,
                     aiCode: b[j].aiCode,
-                    teacherCode: b[j].teacherCode
+                    teacherCode: b[j].teacherCode,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15034,6 +15114,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 17,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15041,6 +15122,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15054,6 +15136,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name,
                     type: 14,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15061,6 +15144,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15079,6 +15163,7 @@ export default {
                       works: _gindex.url,
                       sName: b[j].name,
                       type: _gindex.type,
+											ttype:b[j].ttype,
                       time: b[j].time,
                       score: b[j].score,
                       img: b[j].img,
@@ -15086,6 +15171,7 @@ export default {
                       commentCount: commentCount,
                       isLikes: isLikes,
                       commentJson: commentJson,
+											likeJson:likeJson
                     };
                     _worksStudent[i][_gindex.groupIndex].push(_work);
                     _worksStudent2[i][_gindex.groupIndex].push(_work);
@@ -15099,6 +15185,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15106,6 +15193,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15118,6 +15206,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15125,6 +15214,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15141,6 +15231,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 12,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15148,6 +15239,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -15164,6 +15256,7 @@ export default {
                     works: b[j].content,
                     sName: b[j].name ? b[j].name : b[j].userid,
                     type: 15,
+										ttype:b[j].ttype,
                     time: b[j].time,
                     score: b[j].score,
                     img: b[j].img,
@@ -15171,6 +15264,7 @@ export default {
                     commentCount: commentCount,
                     isLikes: isLikes,
                     commentJson: commentJson,
+										likeJson:likeJson
                   };
                   _worksStudent[i].push(_work);
                   _worksStudent2[i].push(_work);
@@ -18912,7 +19006,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19873,13 +19967,17 @@ export default {
       };
     },
 		commentRight(){
-			if(this.$refs["classRoomHelperRef"].type==0){
-				return "100px";
-			}else if(this.$refs["classRoomHelperRef"].type==1){
-				return "502px"
-			}else{
-				return "0px"
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
+				return "35px";
 			}
+			return `calc(${this.classRoomHelperWidth} + 5px)`
+			// if(this.$refs["classRoomHelperRef"].type==0){
+			// 	return "100px";
+			// }else if(this.$refs["classRoomHelperRef"].type==1){
+			// 	return "502px"
+			// }else{
+			// 	return "0px"
+			// }
 		},
     checkUpload() {
       return function () {
@@ -20012,7 +20110,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";
@@ -21761,6 +21859,14 @@ export default {
   border: 1px solid #0061ff;
 }
 
+.noWorksName > span{
+  max-width: 100%;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .isWorksName2 {
   width: 100px;
   height: 40px;
@@ -22684,7 +22790,7 @@ export default {
 .pzTop2 .checkbox {
   display: flex;
   align-items: center;
-  padding: 5px 30px;
+  padding: 5px 10px;
   flex: 0 0 auto;
   font-weight: bold;
   border-bottom: 1px solid #eee;
@@ -23059,6 +23165,8 @@ ol {
   /* -webkit-user-modify: read-write; */
   overflow-wrap: break-word;
   -webkit-line-break: after-white-space;
+  word-break: break-word;
+  white-space: pre-line;
 }
 
 .scoreBox,

+ 2 - 2
src/components/studyStudentJiu.vue

@@ -18891,7 +18891,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19979,7 +19979,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 2 - 2
src/components/trainCourse/easy2/studyStudent.vue

@@ -18431,7 +18431,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19490,7 +19490,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 2 - 2
src/components/trainCourse/easy3/studyStudent.vue

@@ -18427,7 +18427,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19482,7 +19482,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 2 - 2
src/components/trainCourse/studyStudent.vue

@@ -18404,7 +18404,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -19456,7 +19456,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 2 - 2
src/components/横板极简和任务模式/easy2/studyStudent.vue

@@ -17980,7 +17980,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -18948,7 +18948,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

+ 2 - 2
src/components/横板极简和任务模式/easy3/studyStudent.vue

@@ -17870,7 +17870,7 @@ export default {
         // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
         if (this.showType == 2 || this.showType == 3) {
           document.getElementsByClassName("navBox")[0].style.height =
-            a - 40 + 46 + "px";
+            a - 40 + 0+ "px";
         } else {
           document.getElementsByClassName("navBox")[0].style.height =
             a - 40 + "px";
@@ -18838,7 +18838,7 @@ export default {
       // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
       if (this.showType == 2 || this.showType == 3) {
         document.getElementsByClassName("navBox")[0].style.height =
-          a - 40 + 46 + "px";
+          a - 40 + 0+ "px";
       } else {
         document.getElementsByClassName("navBox")[0].style.height =
           a - 40 + "px";

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini