Просмотр исходного кода

Merge branch 'beta' into alpha

lsc 8 месяцев назад
Родитель
Сommit
e2ab900431
44 измененных файлов с 2668 добавлено и 1714 удалено
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.2323c494521db5034ec28e73acdeb0dd.css.map
  3. 0 0
      dist/static/css/app.e899675c15336f0ce8e5499e31258581.css
  4. 0 0
      dist/static/css/app.e899675c15336f0ce8e5499e31258581.css.map
  5. 30 0
      dist/static/img/aiWait2.c8d31c6.svg
  6. BIN
      dist/static/img/aibgImage.347e461.png
  7. 6 0
      dist/static/img/robot3.c50070a.svg
  8. 0 0
      dist/static/js/app.3e0b600c9a54f04936c0.js
  9. 0 0
      dist/static/js/app.3e0b600c9a54f04936c0.js.map
  10. 0 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  11. 0 0
      src/assets/icon/course/Countdown.svg
  12. 0 0
      src/assets/icon/course/Countdown2.svg
  13. BIN
      src/assets/icon/course/aiLogo.png
  14. 30 0
      src/assets/icon/course/aiWait2.svg
  15. BIN
      src/assets/icon/course/aibgImage.png
  16. 4 0
      src/assets/icon/course/brush.svg
  17. 3 0
      src/assets/icon/course/cancel_left.svg
  18. 3 0
      src/assets/icon/course/cancel_right.svg
  19. 9 0
      src/assets/icon/course/changeType.svg
  20. 1 0
      src/assets/icon/course/clearScreen.svg
  21. 5 0
      src/assets/icon/course/closeIcon.svg
  22. 6 0
      src/assets/icon/course/comment2.svg
  23. 4 0
      src/assets/icon/course/edit2.svg
  24. 9 0
      src/assets/icon/course/edit3.svg
  25. 3 0
      src/assets/icon/course/eraser.svg
  26. 5 0
      src/assets/icon/course/music.svg
  27. BIN
      src/assets/icon/course/practice.png
  28. 4 0
      src/assets/icon/course/record3.svg
  29. 4 0
      src/assets/icon/course/record4.svg
  30. 5 0
      src/assets/icon/course/reset.svg
  31. 4 0
      src/assets/icon/course/right.svg
  32. 6 0
      src/assets/icon/course/robot3.svg
  33. BIN
      src/assets/icon/course/stop1.png
  34. BIN
      src/assets/icon/course/stop2.png
  35. 97 13
      src/components/classRoomHelper/component/AnnotationCanvas.vue
  36. 940 721
      src/components/classRoomHelper/component/countdown.vue
  37. 608 600
      src/components/classRoomHelper/component/languageAssistant.vue
  38. 2 2
      src/components/classRoomHelper/component/levitatedSphere.vue
  39. 36 10
      src/components/classRoomHelper/component/searchArea.vue
  40. 559 233
      src/components/classRoomHelper/component/taskArea.vue
  41. 221 127
      src/components/classRoomHelper/index.vue
  42. 15 2
      src/components/easy2/studyStudent.vue
  43. 15 2
      src/components/easy3/studyStudent.vue
  44. 33 3
      src/components/studyStudent.vue

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.2323c494521db5034ec28e73acdeb0dd.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.7707b4b07bf11db2f61a.js></script><script type=text/javascript src=./static/js/app.d98e2e3adaaef3308773.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.e899675c15336f0ce8e5499e31258581.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.7707b4b07bf11db2f61a.js></script><script type=text/javascript src=./static/js/app.3e0b600c9a54f04936c0.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.2323c494521db5034ec28e73acdeb0dd.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.e899675c15336f0ce8e5499e31258581.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.e899675c15336f0ce8e5499e31258581.css.map


Разница между файлами не показана из-за своего большого размера
+ 30 - 0
dist/static/img/aiWait2.c8d31c6.svg


BIN
dist/static/img/aibgImage.347e461.png


Разница между файлами не показана из-за своего большого размера
+ 6 - 0
dist/static/img/robot3.c50070a.svg


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.3e0b600c9a54f04936c0.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.3e0b600c9a54f04936c0.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/assets/icon/course/Countdown.svg


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/assets/icon/course/Countdown2.svg


BIN
src/assets/icon/course/aiLogo.png


Разница между файлами не показана из-за своего большого размера
+ 30 - 0
src/assets/icon/course/aiWait2.svg


BIN
src/assets/icon/course/aibgImage.png


+ 4 - 0
src/assets/icon/course/brush.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6.75C12.2508 6.75 12.4849 6.87533 12.624 7.08397L15.624 11.584C15.7062 11.7072 15.75 11.8519 15.75 12V21C15.75 21.4142 15.4142 21.75 15 21.75C14.5858 21.75 14.25 21.4142 14.25 21V12.75H9.75V21C9.75 21.4142 9.41421 21.75 9 21.75C8.58579 21.75 8.25 21.4142 8.25 21V12C8.25 11.8519 8.29383 11.7072 8.37596 11.584L11.376 7.08397C11.5151 6.87533 11.7492 6.75 12 6.75ZM10.4014 11.25H13.5986L12 8.85208L10.4014 11.25Z" fill="#3681FC"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21ZM12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5Z" fill="black" fill-opacity="0.9"/>
+</svg>

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

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11 6.61328L6 9.50003L11 12.3868V10H14.5C16.1569 10 17.5 11.3432 17.5 13C17.5 14.6569 16.1569 16 14.5 16H6C5.72386 16 5.5 16.2239 5.5 16.5C5.5 16.7762 5.72386 17 6 17H14.5C16.7091 17 18.5 15.2092 18.5 13C18.5 10.7909 16.7091 9.00003 14.5 9.00003H11V6.61328Z" fill="black" fill-opacity="0.9"/>
+</svg>

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

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M13 6.61328L18 9.50003L13 12.3868V10H9.5C7.84315 10 6.5 11.3432 6.5 13C6.5 14.6569 7.84315 16 9.5 16H18C18.2761 16 18.5 16.2239 18.5 16.5C18.5 16.7762 18.2761 17 18 17H9.5C7.29086 17 5.5 15.2092 5.5 13C5.5 10.7909 7.29086 9.00003 9.5 9.00003H13V6.61328Z" fill="black" fill-opacity="0.9"/>
+</svg>

+ 9 - 0
src/assets/icon/course/changeType.svg

@@ -0,0 +1,9 @@
+<svg width="21" height="6" viewBox="0 0 21 6" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.05713 0.470583C1.80179 -0.155333 3.01121 -0.157081 3.75845 0.466679C5.4879 1.91035 7.86809 2.8 10.5 2.8C13.1319 2.8 15.5121 1.91035 17.2416 0.466679C17.9888 -0.157081 19.1982 -0.155333 19.9429 0.470583C20.6875 1.0965 20.6854 2.10956 19.9382 2.73332C17.5219 4.75032 14.1834 6 10.5 6C6.81664 6 3.47806 4.75032 1.06179 2.73332C0.314559 2.10956 0.312473 1.0965 1.05713 0.470583Z" fill="url(#paint0_linear_269_7318)"/>
+<defs>
+<linearGradient id="paint0_linear_269_7318" x1="0.5" y1="6" x2="20.5" y2="6" gradientUnits="userSpaceOnUse">
+<stop stop-color="#3673E8"/>
+<stop offset="1" stop-color="#AD88FD"/>
+</linearGradient>
+</defs>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
src/assets/icon/course/clearScreen.svg


+ 5 - 0
src/assets/icon/course/closeIcon.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="12" cy="12" r="10" fill="#EE3E3E"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.1439 7.6929C9.29275 7.89983 9.24568 8.18824 9.03876 8.33709C7.75653 9.25949 6.92308 10.7631 6.92308 12.4615C6.92308 15.2654 9.19609 17.5384 12 17.5384C14.8039 17.5384 17.0769 15.2654 17.0769 12.4615C17.0769 10.7631 16.2435 9.25949 14.9612 8.33709C14.7543 8.18824 14.7073 7.89983 14.8561 7.6929C15.005 7.48598 15.2934 7.43891 15.5003 7.58776C17.0133 8.67615 18 10.4536 18 12.4615C18 15.7752 15.3137 18.4615 12 18.4615C8.68629 18.4615 6 15.7752 6 12.4615C6 10.4536 6.98673 8.67615 8.49971 7.58776C8.70663 7.43891 8.99504 7.48598 9.1439 7.6929Z" fill="white" fill-opacity="0.9"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.53845C12.2549 5.53845 12.4615 5.74509 12.4615 5.99999V11.5385C12.4615 11.7934 12.2549 12 12 12C11.7451 12 11.5385 11.7934 11.5385 11.5385V5.99999C11.5385 5.74509 11.7451 5.53845 12 5.53845Z" fill="white" fill-opacity="0.9"/>
+</svg>

+ 6 - 0
src/assets/icon/course/comment2.svg

@@ -0,0 +1,6 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M18.3451 3.59998H5.65487C4.85142 3.59991 4.08031 3.93214 3.50852 4.52471C2.93674 5.11727 2.6103 5.92243 2.59998 6.76584V15.8252C2.60185 16.2439 2.68245 16.6581 2.83711 17.044C2.99177 17.43 3.21747 17.7801 3.50128 18.0743C3.78508 18.3685 4.12139 18.6011 4.49095 18.7586C4.86051 18.916 5.25603 18.9954 5.65487 18.992H9.25104L10.7402 19.9974C11.1167 20.2506 11.5525 20.3897 11.9995 20.3996C12.4495 20.4085 12.8906 20.2677 13.2598 19.9974L14.7489 18.992H18.3451C19.1485 18.9916 19.9195 18.6591 20.4913 18.0664C21.063 17.4737 21.3894 16.6686 21.4 15.8252V6.76584C21.3894 5.92251 21.0629 5.11752 20.4912 4.52501C19.9195 3.93251 19.1485 3.60017 18.3451 3.59998ZM19.8725 15.8252C19.8711 16.0335 19.8305 16.2394 19.7527 16.4311C19.675 16.6227 19.5618 16.7963 19.4197 16.9417C19.2777 17.0871 19.1096 17.2015 18.9251 17.2782C18.7406 17.3549 18.5435 17.3924 18.3451 17.3885H14.52C14.3719 17.3855 14.226 17.427 14.0996 17.5082L12.4199 18.6714C12.3636 18.7262 12.2973 18.7685 12.2251 18.796C12.1529 18.8234 12.0762 18.8354 11.9995 18.8312C11.8515 18.8344 11.7058 18.7925 11.58 18.7106L9.90036 17.5484C9.77397 17.4672 9.62807 17.4257 9.47993 17.4287H5.65487C5.25609 17.4296 4.87287 17.2664 4.58733 16.9742C4.3018 16.682 4.13672 16.2839 4.12745 15.8654V6.76584C4.13672 6.34731 4.3018 5.94927 4.58733 5.65703C4.87287 5.36478 5.25609 5.20161 5.65487 5.20251H18.3451C18.7439 5.20161 19.1271 5.36478 19.4126 5.65703C19.6981 5.94927 19.8632 6.34731 19.8725 6.76584V15.8252Z" fill="black" fill-opacity="0.9"/>
+<path d="M11.9998 10.2115C11.695 10.2115 11.4027 10.3387 11.1872 10.5649C10.9717 10.7912 10.8506 11.098 10.8506 11.418C10.8386 11.5837 10.8592 11.7502 10.9113 11.9072C10.9634 12.0641 11.0458 12.208 11.1534 12.33C11.261 12.4519 11.3914 12.5491 11.5365 12.6157C11.6816 12.6822 11.8381 12.7165 11.9964 12.7165C12.1547 12.7165 12.3114 12.6822 12.4564 12.6157C12.6015 12.5491 12.7319 12.4519 12.8395 12.33C12.947 12.208 13.0295 12.0641 13.0816 11.9072C13.1337 11.7502 13.1544 11.5837 13.1423 11.418C13.1423 11.0992 13.0221 10.7934 12.8081 10.5674C12.594 10.3413 12.3034 10.2134 11.9998 10.2115Z" fill="black" fill-opacity="0.9"/>
+<path d="M8.18324 10.2115C7.95596 10.2115 7.73377 10.2823 7.54479 10.4149C7.35581 10.5475 7.20848 10.7359 7.1215 10.9563C7.03452 11.1767 7.01181 11.4194 7.05615 11.6534C7.10049 11.8874 7.2099 12.1023 7.37061 12.2711C7.53133 12.4398 7.73611 12.5547 7.95903 12.6012C8.18195 12.6478 8.41298 12.6239 8.62296 12.5326C8.83295 12.4413 9.01245 12.2867 9.13873 12.0883C9.265 11.8899 9.33237 11.6566 9.33237 11.418C9.33237 11.098 9.21133 10.7912 8.99582 10.5649C8.7803 10.3387 8.48802 10.2115 8.18324 10.2115Z" fill="black" fill-opacity="0.9"/>
+<path d="M15.8199 10.2115C15.669 10.2115 15.5195 10.2428 15.3801 10.3034C15.2407 10.364 15.114 10.4529 15.0073 10.5649C14.9006 10.677 14.8159 10.8099 14.7582 10.9563C14.7004 11.1027 14.6707 11.2596 14.6707 11.418C14.6586 11.5837 14.6793 11.7502 14.7314 11.9072C14.7835 12.0641 14.8659 12.208 14.9735 12.33C15.0811 12.4519 15.2115 12.5491 15.3566 12.6157C15.5016 12.6822 15.6582 12.7165 15.8165 12.7165C15.9748 12.7165 16.1314 12.6822 16.2765 12.6157C16.4216 12.5491 16.552 12.4519 16.6595 12.33C16.7671 12.208 16.8496 12.0641 16.9017 11.9072C16.9538 11.7502 16.9744 11.5837 16.9624 11.418C16.9624 11.0992 16.8422 10.7934 16.6281 10.5674C16.4141 10.3413 16.1235 10.2134 15.8199 10.2115Z" fill="black" fill-opacity="0.9"/>
+</svg>

+ 4 - 0
src/assets/icon/course/edit2.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6.75C12.2508 6.75 12.4849 6.87533 12.624 7.08397L15.624 11.584C15.7062 11.7072 15.75 11.8519 15.75 12V21C15.75 21.4142 15.4142 21.75 15 21.75C14.5858 21.75 14.25 21.4142 14.25 21V12.75H9.75V21C9.75 21.4142 9.41421 21.75 9 21.75C8.58579 21.75 8.25 21.4142 8.25 21V12C8.25 11.8519 8.29383 11.7072 8.37596 11.584L11.376 7.08397C11.5151 6.87533 11.7492 6.75 12 6.75ZM10.4014 11.25H13.5986L12 8.85208L10.4014 11.25Z" fill="#3681FC"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21ZM12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5Z" fill="black" fill-opacity="0.9"/>
+</svg>

+ 9 - 0
src/assets/icon/course/edit3.svg

@@ -0,0 +1,9 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M22.5 12C22.5 17.799 17.799 22.5 12 22.5C6.20101 22.5 1.5 17.799 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.799 1.5 22.5 6.20101 22.5 12Z" fill="#17C469"/>
+<mask id="mask0_447_20372" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="22" height="22">
+<path d="M22.5 12C22.5 17.799 17.799 22.5 12 22.5C6.20101 22.5 1.5 17.799 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.799 1.5 22.5 6.20101 22.5 12Z" fill="#17C469"/>
+</mask>
+<g mask="url(#mask0_447_20372)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6.75C12.2508 6.75 12.4849 6.87533 12.624 7.08397L15.624 11.584C15.7062 11.7072 15.75 11.8519 15.75 12V23C15.75 23.4142 15.4142 23.75 15 23.75C14.5858 23.75 14.25 23.4142 14.25 23V12.75H9.75V23C9.75 23.4142 9.41421 23.75 9 23.75C8.58579 23.75 8.25 23.4142 8.25 23V12C8.25 11.8519 8.29383 11.7072 8.37596 11.584L11.376 7.08397C11.5151 6.87533 11.7492 6.75 12 6.75ZM10.4014 11.25H13.5986L12 8.85208L10.4014 11.25Z" fill="white"/>
+</g>
+</svg>

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

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M13.6464 6.14645C13.8417 5.95118 14.1583 5.95118 14.3536 6.14645L17.8536 9.64645C18.0488 9.84171 18.0488 10.1583 17.8536 10.3536L11.2071 17H17.5V18H10C9.86739 18 9.74021 17.9473 9.64645 17.8536L6.14645 14.3536C5.95118 14.1583 5.95118 13.8417 6.14645 13.6464L13.6464 6.14645ZM10 16.7929L7.20711 14L9 12.2071L11.7929 15L10 16.7929ZM12.5 14.2929L16.7929 10L14 7.20711L9.70711 11.5L12.5 14.2929Z" fill="black" fill-opacity="0.9"/>
+</svg>

+ 5 - 0
src/assets/icon/course/music.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 3.18362C7.13095 3.18362 3.18374 7.13083 3.18374 11.9999C3.18374 16.4071 6.41825 20.0602 10.6428 20.7125C11.0848 20.7808 11.5381 20.8163 12.0001 20.8163C12.4058 20.8163 12.7348 21.1452 12.7348 21.551C12.7348 21.9567 12.4058 22.2857 12.0001 22.2857C11.4627 22.2857 10.9345 22.2444 10.4186 22.1647C5.48856 21.4035 1.71436 17.1431 1.71436 11.9999C1.71436 6.3193 6.31943 1.71423 12.0001 1.71423C16.5776 1.71423 20.4549 4.70396 21.7896 8.83532C22.1119 9.83321 22.2858 10.897 22.2858 11.9999C22.2858 12.4057 21.9569 12.7346 21.5511 12.7346C21.1453 12.7346 20.8164 12.4057 20.8164 11.9999C20.8164 11.0522 20.6671 10.1407 20.3913 9.28702C19.2469 5.74447 15.9216 3.18362 12.0001 3.18362Z" fill="black" fill-opacity="0.9"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M22.0162 13.8835C22.1871 14.0192 22.2856 14.2186 22.2856 14.4285V20.1428C22.2856 20.3322 22.2053 20.5139 22.0625 20.6479L21.3005 21.3622C21.003 21.6411 20.5206 21.6411 20.2231 21.3622C19.9255 21.0832 19.9255 20.631 20.2231 20.352L20.7618 19.8469V15.2717L17.7142 15.7479V20.8571C17.7142 21.0465 17.6339 21.2282 17.491 21.3622L16.7291 22.0765C16.4316 22.3554 15.9492 22.3554 15.6516 22.0765C15.3541 21.7975 15.3541 21.3452 15.6516 21.0663L16.1904 20.5612V15.1428C16.1904 14.7936 16.4596 14.4956 16.827 14.4382L21.3984 13.724C21.6194 13.6894 21.8453 13.7478 22.0162 13.8835Z" fill="#3681FC"/>
+<path d="M14.5713 12C14.5713 13.4202 13.4201 14.5714 11.9999 14.5714C10.5797 14.5714 9.42847 13.4202 9.42847 12C9.42847 10.5799 10.5797 9.42859 11.9999 9.42859C13.4201 9.42859 14.5713 10.5799 14.5713 12Z" fill="black" fill-opacity="0.9"/>
+</svg>

BIN
src/assets/icon/course/practice.png


+ 4 - 0
src/assets/icon/course/record3.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 5.25C1.5 4.83579 1.83579 4.5 2.25 4.5H17.25C17.6642 4.5 18 4.83579 18 5.25V8.70943L21.5128 7.53849C21.7415 7.46225 21.993 7.5006 22.1885 7.64157C22.3841 7.78253 22.5 8.00892 22.5 8.25V15.75C22.5 15.9911 22.3841 16.2175 22.1885 16.3584C21.993 16.4994 21.7415 16.5378 21.5128 16.4615L18 15.2906V18.75C18 19.1642 17.6642 19.5 17.25 19.5H2.25C1.83579 19.5 1.5 19.1642 1.5 18.75V5.25ZM18 13.7094L21 14.7094V9.29057L18 10.2906V13.7094ZM3 6V18H16.5V6H3Z" fill="black" fill-opacity="0.9"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.75C4.5 15.3358 4.83579 15 5.25 15H11.25C11.6642 15 12 15.3358 12 15.75C12 16.1642 11.6642 16.5 11.25 16.5H5.25C4.83579 16.5 4.5 16.1642 4.5 15.75Z" fill="black" fill-opacity="0.9"/>
+</svg>

+ 4 - 0
src/assets/icon/course/record4.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 5.25C1.5 4.83579 1.83579 4.5 2.25 4.5H17.25C17.6642 4.5 18 4.83579 18 5.25V8.70943L21.5128 7.53849C21.7415 7.46225 21.993 7.5006 22.1885 7.64157C22.3841 7.78253 22.5 8.00892 22.5 8.25V15.75C22.5 15.9911 22.3841 16.2175 22.1885 16.3584C21.993 16.4994 21.7415 16.5378 21.5128 16.4615L18 15.2906V18.75C18 19.1642 17.6642 19.5 17.25 19.5H2.25C1.83579 19.5 1.5 19.1642 1.5 18.75V5.25ZM18 13.7094L21 14.7094V9.29057L18 10.2906V13.7094ZM3 6V18H16.5V6H3Z" fill="white" fill-opacity="0.9"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.75C4.5 15.3358 4.83579 15 5.25 15H11.25C11.6642 15 12 15.3358 12 15.75C12 16.1642 11.6642 16.5 11.25 16.5H5.25C4.83579 16.5 4.5 16.1642 4.5 15.75Z" fill="white" fill-opacity="0.9"/>
+</svg>

+ 5 - 0
src/assets/icon/course/reset.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M2.25 19.5C2.25 19.0858 2.58579 18.75 3 18.75H22.5C22.9142 18.75 23.25 19.0858 23.25 19.5C23.25 19.9142 22.9142 20.25 22.5 20.25H3C2.58579 20.25 2.25 19.9142 2.25 19.5Z" fill="black"/>
+<path d="M3 8.25L3.75 14.25L8.25 10.5L3 8.25Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M6.88061 9.09714C8.37158 7.62191 10.4445 6.75 12.75 6.75C17.3064 6.75 21 10.4437 21 15C21 15.4142 21.3358 15.75 21.75 15.75C22.1643 15.75 22.5 15.4142 22.5 15C22.5 9.61522 18.1348 5.25 12.75 5.25C9.83406 5.25 7.20333 6.45088 5.41113 8.46737L3.29545 7.56065C3.04847 7.4548 2.76374 7.48917 2.54904 7.65074C2.33433 7.81231 2.22247 8.0764 2.2558 8.34303L3.0058 14.343C3.03982 14.6151 3.21963 14.847 3.47471 14.9477C3.7298 15.0483 4.01948 15.0017 4.23015 14.8262L8.73015 11.0762C8.93061 10.9091 9.02983 10.6499 8.99215 10.3917C8.95447 10.1335 8.78529 9.91343 8.54545 9.81065L6.88061 9.09714ZM4.48437 9.70214L3.9064 9.45443L4.03677 10.4974C4.17389 10.2236 4.32334 9.95829 4.48437 9.70214ZM4.91452 12.3033C5.14843 11.5796 5.47638 10.9088 5.884 10.302L6.82973 10.7073L4.91452 12.3033Z" fill="black"/>
+</svg>

+ 4 - 0
src/assets/icon/course/right.svg

@@ -0,0 +1,4 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.66782 3.1263C3.87421 2.94284 4.19025 2.96143 4.37371 3.16782L8.37371 7.66782C8.5421 7.85727 8.5421 8.14274 8.37371 8.33219L4.37371 12.8322C4.19025 13.0386 3.87421 13.0572 3.66782 12.8737C3.46143 12.6903 3.44284 12.3742 3.6263 12.1678L7.33103 8.00001L3.6263 3.83219C3.44284 3.6258 3.46143 3.30976 3.66782 3.1263Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.66782 3.1263C7.87421 2.94284 8.19025 2.96143 8.37371 3.16782L12.3737 7.66782C12.5421 7.85727 12.5421 8.14274 12.3737 8.33219L8.37371 12.8322C8.19025 13.0386 7.87421 13.0572 7.66782 12.8737C7.46143 12.6903 7.44284 12.3742 7.6263 12.1678L11.331 8.00001L7.6263 3.83219C7.44284 3.6258 7.46143 3.30976 7.66782 3.1263Z" fill="black"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 6 - 0
src/assets/icon/course/robot3.svg


BIN
src/assets/icon/course/stop1.png


BIN
src/assets/icon/course/stop2.png


Разница между файлами не показана из-за своего большого размера
+ 97 - 13
src/components/classRoomHelper/component/AnnotationCanvas.vue


Разница между файлами не показана из-за своего большого размера
+ 940 - 721
src/components/classRoomHelper/component/countdown.vue


+ 608 - 600
src/components/classRoomHelper/component/languageAssistant.vue

@@ -1,41 +1,69 @@
 <template>
-  <div class="languageAssistant">
-    <div class="la_coco">
-      <el-image
-        style="width: 105px; height: 105px;"
-        v-show="showIndex == 2"
-        :src="require('../../../assets/icon/course/aiVanish.svg')"
-        fit="fill"
-      ></el-image>
-      <el-image
-        style="width: 105px; height: 105px;"
-        v-show="showIndex == 0"
-        :src="require('../../../assets/icon/course/aiWait.svg')"
-        fit="fill"
-      ></el-image>
-      <el-image
-        style="width: 105px; height: 105px;"
-        v-show="showIndex == 1"
-        :src="require('../../../assets/icon/course/aiTalk.svg')"
-        fit="fill"
-      ></el-image>
-    </div>
-    <div
-      class="la_message"
-      :style="show ? '' : 'height:calc(100% - 170px - 200px - 40px)'"
-      ref="messageRef"
-    >
-      <div class="la_m_talk" v-if="show">
-        <div v-if="showTextIndex == 0" v-html="htmlContent(aiText)"></div>
-        <div v-if="showTextIndex == 1">{{ userText }}</div>
-        <div v-if="showTextIndex == 2">正在组织语言...</div>
-      </div>
-    </div>
-    <div class="la_btn">
-      <div class="la_b_noTel" v-if="!show">
-        <el-tooltip class="item" effect="light" content="通话" placement="top">
-          <span>
-            <svg
+	<div class="languageAssistant">
+		<div class="la_coco">
+			<el-image
+				style="width: 105px; height: 105px"
+				v-show="showIndex == 2"
+				:src="require('../../../assets/icon/course/aiVanish.svg')"
+				fit="fill"
+			></el-image>
+			<el-image
+				style="width: 105px; height: 105px;transform: scale(1.7,1.7);"
+				v-show="showIndex == 0"
+				:src="require('../../../assets/icon/course/aiWait2.svg')"
+				fit="fill"
+			></el-image>
+			<el-image
+				style="width: 105px; height: 105px"
+				v-show="showIndex == 1"
+				:src="require('../../../assets/icon/course/aiTalk.svg')"
+				fit="fill"
+			></el-image>
+		</div>
+		<div
+			class="la_message"
+			:style="show ? '' : 'height:calc(100% - 170px - 200px - 40px)'"
+			ref="messageRef"
+		>
+			<div class="la_m_talk" v-if="show">
+				<div v-if="showTextIndex == 0" v-html="htmlContent(aiText)"></div>
+				<div v-if="showTextIndex == 1">{{ userText }}</div>
+				<div v-if="showTextIndex == 2">正在组织语言...</div>
+			</div>
+		</div>
+		<div class="la_btn">
+			<div class="la_b_noTel" v-if="!show">
+				<el-tooltip class="item" effect="light" content="通话" placement="top">
+					<span>
+						<svg
+							@click.stop="recordStart"
+							t="1721367811838"
+							viewBox="0 0 1024 1024"
+							version="1.1"
+							xmlns="http://www.w3.org/2000/svg"
+							p-id="4525"
+							width="64"
+							height="64"
+						>
+							<path
+								d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
+								p-id="4526"
+							></path>
+						</svg>
+					</span>
+				</el-tooltip>
+			</div>
+			<div class="la_b_isTel" v-else>
+				<el-tooltip
+					class="item"
+					effect="light"
+					content="暂停语音"
+					placement="top"
+					v-if="talkLoading"
+				>
+					<span @click.stop="stopTalk">
+						<img :src="require('../../../assets/icon/course/stop1.png')" />
+						<!-- <svg
               @click.stop="recordStart"
               t="1721367811838"
               viewBox="0 0 1024 1024"
@@ -49,83 +77,56 @@
                 d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
                 p-id="4526"
               ></path>
-            </svg>
-          </span>
-        </el-tooltip>
-      </div>
-      <div class="la_b_isTel" v-else>
-        <el-tooltip
-          class="item"
-          effect="light"
-          content="暂停语音"
-          placement="top"
-          v-if="talkLoading"
-        >
-          <span @click.stop="stopTalk">
-            <svg
-              t="1721372070061"
-              class="icon"
-              viewBox="0 0 1024 1024"
-              version="1.1"
-              xmlns="http://www.w3.org/2000/svg"
-              p-id="6534"
-              width="64"
-              height="64"
-            >
-              <path
-                d="M648.45 247.01c-31.64 0-57.348 27.685-57.348 57.348v427.149c0 31.64 27.685 57.348 57.348 57.348S705.8 761.17 705.8 731.507V304.358c0-31.64-27.686-57.348-57.349-57.348z m-272.9 0c-31.64 0-57.349 27.685-57.349 57.348v427.149c0 31.64 27.686 57.348 57.349 57.348s57.348-27.685 57.348-57.348V304.358c1.978-31.64-25.708-57.348-57.348-57.348z"
-                p-id="6535"
-              ></path>
-            </svg>
-          </span>
-        </el-tooltip>
+            </svg> -->
+					</span>
+				</el-tooltip>
 
-        <el-tooltip
-          class="item"
-          effect="light"
-          content="朗读"
-          placement="top"
-          v-else
-        >
-          <span @click.stop="talkAllText">
-            <svg
-              t="1721785394251"
-              class="icon"
-              viewBox="0 0 1024 1024"
-              version="1.1"
-              xmlns="http://www.w3.org/2000/svg"
-              p-id="4273"
-              width="64"
-              height="64"
-            >
-              <path
-                d="M310 130.7c-31.3 0-52.4 19.9-52.4 49.5v659.6c0 30.9 25.9 53.4 61.5 53.4 17 0 32.8-5.3 43.9-14.7l444.6-309.3 1.2-1.1c13.3-12.2 20.6-28.4 20.6-45.7s-7.3-33.5-20.6-45.7l-2.1-1.7-443.3-324.9c-13.6-11.8-34.3-19.4-53.4-19.4z"
-                p-id="4274"
-              ></path>
-            </svg>
-          </span>
-        </el-tooltip>
+				<el-tooltip
+					class="item"
+					effect="light"
+					content="朗读"
+					placement="top"
+					v-else
+				>
+					<span class="readAloud" @click.stop="talkAllText">
+						<svg
+							t="1721117381559"
+							viewBox="0 0 1024 1024"
+							version="1.1"
+							xmlns="http://www.w3.org/2000/svg"
+							p-id="12941"
+							width="64"
+							height="64"
+						>
+							<path
+								d="M161.2 839.9v-654c0-56.1 60.7-91.1 109.3-63.1l566.3 327c48.6 28 48.6 98.1 0 126.2L270.4 903c-48.5 28-109.2-7.1-109.2-63.1z"
+								p-id="12942"
+							></path>
+						</svg>
+					</span>
+				</el-tooltip>
 
-        <el-tooltip class="item" effect="light" content="挂断" placement="top">
-          <svg
-            @click.stop="stopRecord"
-            t="1721367811838"
-            viewBox="0 0 1024 1024"
-            version="1.1"
-            xmlns="http://www.w3.org/2000/svg"
-            p-id="4525"
-            width="64"
-            height="64"
-          >
-            <path
-              d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
-              p-id="4526"
-            ></path>
-          </svg>
-        </el-tooltip>
-        <el-tooltip class="item" effect="light" content="中断" placement="top">
-          <span @click.stop="interrupt">
-            <svg
+				<el-tooltip class="item" effect="light" content="挂断" placement="top">
+					<svg
+						@click.stop="stopRecord"
+						t="1721367811838"
+						viewBox="0 0 1024 1024"
+						version="1.1"
+						xmlns="http://www.w3.org/2000/svg"
+						p-id="4525"
+						width="64"
+						height="64"
+					>
+						<path
+							d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
+							p-id="4526"
+						></path>
+					</svg>
+				</el-tooltip>
+				<el-tooltip class="item" effect="light" content="中断" placement="top">
+					<span @click.stop="interrupt">
+						<img :src="require('../../../assets/icon/course/stop2.png')" />
+						<!-- <svg
               t="1721372012678"
               class="icon"
               viewBox="0 0 1024 1024"
@@ -139,547 +140,554 @@
                 d="M885.6 413.8c-32.3 0-60.1 19.8-71.9 47.9h-18.1c-16.6 0-30 13.4-30 30s13.4 30 30 30h18.1c11.8 28.1 39.5 47.9 71.9 47.9 42.9 0 77.9-34.9 77.9-77.9 0-42.9-35-77.9-77.9-77.9zM690.4 461.7h-21.1c-16.6 0-30 13.4-30 30s13.4 30 30 30h21.1c16.6 0 30-13.4 30-30s-13.4-30-30-30zM564.1 461.7h-10c-16.6 0-30 13.4-30 30s13.4 30 30 30h10c16.6 0 30-13.4 30-30s-13.4-30-30-30zM709.7 115.7c-13.7-9.4-32.3-5.9-41.7 7.8L436.5 461.8c-0.8-0.1-1.6-0.1-2.3-0.1H212.5c-11.8-28.1-39.5-47.9-71.9-47.9-39.4 0-72.1 29.5-77.2 67.5-1.2 3.2-1.8 6.7-1.8 10.3 0 3.6 0.6 7.1 1.8 10.3 5.1 38.1 37.7 67.5 77.2 67.5 32.3 0 60.1-19.8 71.9-47.9h183l-240.1 351c-9.4 13.7-5.9 32.3 7.8 41.7 5.2 3.5 11.1 5.2 16.9 5.2 9.6 0 19-4.6 24.8-13.1l512.6-749c9.4-13.5 5.9-32.2-7.8-41.6z"
                 p-id="5555"
               ></path>
-            </svg>
-          </span>
-        </el-tooltip>
-      </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>
+            </svg> -->
+					</span>
+				</el-tooltip>
+			</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>
+		<!-- 文字转语音-->
+		<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 {
-  props: {},
-  data() {
-    return {
-      show: false,
-      showIndex: 2, //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: {
-    scrollBottom() {
-      this.$nextTick(() => {
-        this.$refs.messageRef.scrollTop = this.$refs.messageRef.scrollHeight;
-      });
-    },
-    talkAllText() {
-      if (this.talkLoading && this.aiText == "") return;
-      let _resultText = this.removeMarkdown(this.aiText);
-      this.talkTextList.push(_resultText);
-      this.talkText();
-    },
-    recordStart(_text) {
-      // this.show = true;
-      // this.showIndex = 0;
-      // return
-      var OpenCC = require("opencc-js");
-      let converter = OpenCC.Converter({
-        from: "hk",
-        to: "cn"
-      });
-      if (this.isOpen)
-        return this.$message.info("已开启语音助手,无需重复开启");
-      let iiframe = this.$refs["iiframe"];
-      iiframe.contentWindow.window.document.getElementById(
-        "languageOptions"
-      ).selectedIndex = 2; //普通话
-      iiframe.contentWindow.testdoContinuousPronunciationAssessment();
-      this.isOpen = true;
-      this.show = true;
-      this.aiText = "我是可可同学,我是个小小百事通,你有什么想和我聊一聊?";
-      iiframe.contentWindow.onRecognizedResult = e => {
-        let _msg = converter(e.privText);
+	props: {},
+	data() {
+		return {
+			show: false,
+			showIndex: 2, //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: {
+		scrollBottom() {
+			this.$nextTick(() => {
+				this.$refs.messageRef.scrollTop = this.$refs.messageRef.scrollHeight;
+			});
+		},
+		talkAllText() {
+			if (this.talkLoading && this.aiText == "") return;
+			let _resultText = this.removeMarkdown(this.aiText);
+			this.talkTextList.push(_resultText);
+			this.talkText();
+		},
+		recordStart(_text) {
+			// this.show = true;
+			// this.showIndex = 0;
+			// return
+			var OpenCC = require("opencc-js");
+			let converter = OpenCC.Converter({
+				from: "hk",
+				to: "cn",
+			});
+			if (this.isOpen)
+				return this.$message.info("已开启语音助手,无需重复开启");
+			let iiframe = this.$refs["iiframe"];
+			iiframe.contentWindow.window.document.getElementById(
+				"languageOptions"
+			).selectedIndex = 2; //普通话
+			iiframe.contentWindow.testdoContinuousPronunciationAssessment();
+			this.isOpen = true;
+			this.show = true;
+			this.aiText = "我是可可同学,我是个小小百事通,你有什么想和我聊一聊?";
+			iiframe.contentWindow.onRecognizedResult = (e) => {
+				let _msg = converter(e.privText);
 
-        console.log("👇");
-        console.log(_msg);
-        // _msg = converter(_msg)
-        if (!_msg) return console.log("输出为空");
-        if (this.show == true) {
-          if (
-            _msg.indexOf(converter("可可同学")) != -1 &&
-            _msg.indexOf(converter("停止")) != -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.scrollBottom();
-            this.aiStatus = 1;
-            if (this.timer) {
-              clearTimeout(this.timer);
-              this.timer = null;
-            }
-            this.timer = setTimeout(() => {
-              if (this.userText.indexOf(converter("关闭语音助手")) != -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 = "";
-              let regExp = new RegExp(
-                converter("计时") + "(.+)" + converter("分钟")
-              );
-              if (false && regExp.test(this.userText)) {
-                // setTimeout(() => {
-                // let _number = this.userText.match(regExp)[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(regExp)[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 (
-                      converter(res.data.FunctionResponse.result) ==
-                      converter("发送成功")
-                    ) {
-                      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("不响应");
-        }
-      };
-    },
-    stopRecord() {
-      // this.show = false;
-      // this.showIndex = 2;
-      // 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.$message.success("已关闭语音助手");
-        if (this.talkLoading) {
-          this.$refs.iiframe2.contentWindow.closesynthesizer();
-        }
-        this.userText = "";
-        this.aiText = "";
-      };
-    },
-    chineseToNumber(chinese) {
-      var OpenCC = require("opencc-js");
-      let converter = OpenCC.Converter({
-        from: "hk",
-        to: "cn"
-      });
-      chinese = converter(chinese);
-      const chineseNumbers = {
-        零: 0,
-        一: 1,
-        二: 2,
-        三: 3,
-        四: 4,
-        五: 5,
-        六: 6,
-        七: 7,
-        八: 8,
-        九: 9,
-        十: 10,
-        百: 100,
-        千: 1000,
-        万: 10000,
-        亿: 100000000
-      };
+				console.log("👇");
+				console.log(_msg);
+				// _msg = converter(_msg)
+				if (!_msg) return console.log("输出为空");
+				if (this.show == true) {
+					if (
+						_msg.indexOf(converter("可可同学")) != -1 &&
+						_msg.indexOf(converter("停止")) != -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.scrollBottom();
+						this.aiStatus = 1;
+						if (this.timer) {
+							clearTimeout(this.timer);
+							this.timer = null;
+						}
+						this.timer = setTimeout(() => {
+							if (this.userText.indexOf(converter("关闭语音助手")) != -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 = "";
+							let regExp = new RegExp(
+								converter("计时") + "(.+)" + converter("分钟")
+							);
+							if (false && regExp.test(this.userText)) {
+								// setTimeout(() => {
+								// let _number = this.userText.match(regExp)[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(regExp)[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 (
+											converter(res.data.FunctionResponse.result) ==
+											converter("发送成功")
+										) {
+											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("不响应");
+				}
+			};
+		},
+		stopRecord() {
+			// this.show = false;
+			// this.showIndex = 2;
+			// 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.$message.success("已关闭语音助手");
+				if (this.talkLoading) {
+					this.$refs.iiframe2.contentWindow.closesynthesizer();
+				}
+				this.userText = "";
+				this.aiText = "";
+			};
+		},
+		chineseToNumber(chinese) {
+			var OpenCC = require("opencc-js");
+			let converter = OpenCC.Converter({
+				from: "hk",
+				to: "cn",
+			});
+			chinese = converter(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; // 每个段的值
+			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];
+			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 === 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 === 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;
-        }
-      }
+					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]") {
-          this.source.close();
-          this.source = null;
-          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;
-          this.scrollBottom();
-          if (_talkText != "") {
-            let _resultText = this.removeMarkdown(_talkText);
-            this.talkTextList.push(_resultText);
-            _talkText = "";
-            if (!this.talkLoading) this.talkText();
-          }
-          this.chatLoading = false;
-        } 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;
-          this.scrollBottom();
-          if (/[,。:;?!)]/.test(_talkText)) {
-            let _resultText = this.removeMarkdown(_talkText);
-            this.talkTextList.push(_resultText);
-            _talkText = "";
-            if (!this.talkLoading) this.talkText();
-          }
-        }
-      };
-    },
-    talkText() {
-      let _text = this.talkTextList.shift();
-      let _talkTextIiframe2 = this.$refs.iiframe2;
+			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]") {
+					this.source.close();
+					this.source = null;
+					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;
+					this.scrollBottom();
+					if (_talkText != "") {
+						let _resultText = this.removeMarkdown(_talkText);
+						this.talkTextList.push(_resultText);
+						_talkText = "";
+						if (!this.talkLoading) this.talkText();
+					}
+					this.chatLoading = false;
+				} 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;
+					this.scrollBottom();
+					if (/[,。:;?!)]/.test(_talkText)) {
+						let _resultText = this.removeMarkdown(_talkText);
+						this.talkTextList.push(_resultText);
+						_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}`);
-        _talkTextIiframe2.contentWindow.texttospeech(
-          _text,
-          this.talkText,
-          this.endTalk
-        );
-      } else {
-        _talkTextIiframe2.contentWindow.closesynthesizer();
-      }
-    },
-    endTalk() {
-      console.log("👉转语音结束👈");
-      this.talkLoading = false;
-    },
-    stopTalk() {
-      // return this.$message.info("停止")
-      this.talkTextList = [];
-      try {
-        let _talkTextIiframe2 = this.$refs.iiframe2;
-        _talkTextIiframe2.contentWindow.pausesynthesizer();
-        _talkTextIiframe2.contentWindow.closesynthesizer();
-        this.talkLoading = false;
-      } catch (error) {
-        this.talkLoading = false;
-      }
-    },
-    interrupt() {
-      // return this.$message.info("打断")
-      if (this.source) {
-        try {
-          this.source.close();
-        } catch (error) {
-          console.log(error);
-        }
-      }
-      this.stopTalk();
-    }
-  }
+			if (_text) {
+				this.talkLoading = true;
+				if (this.timer) {
+					clearTimeout(this.timer);
+					this.timer = null;
+				}
+				console.log(`👉转语音:${_text}`);
+				_talkTextIiframe2.contentWindow.texttospeech(
+					_text,
+					this.talkText,
+					this.endTalk
+				);
+			} else {
+				_talkTextIiframe2.contentWindow.closesynthesizer();
+			}
+		},
+		endTalk() {
+			console.log("👉转语音结束👈");
+			this.talkLoading = false;
+		},
+		stopTalk() {
+			// return this.$message.info("停止")
+			this.talkTextList = [];
+			try {
+				let _talkTextIiframe2 = this.$refs.iiframe2;
+				_talkTextIiframe2.contentWindow.pausesynthesizer();
+				_talkTextIiframe2.contentWindow.closesynthesizer();
+				this.talkLoading = false;
+			} catch (error) {
+				this.talkLoading = false;
+			}
+		},
+		interrupt() {
+			// return this.$message.info("打断")
+			if (this.source) {
+				try {
+					this.source.close();
+				} catch (error) {
+					console.log(error);
+				}
+			}
+			this.stopTalk();
+		},
+	},
 };
 </script>
 
 <style scoped>
 .languageAssistant {
-  width: 100%;
-  height: 100%;
-  border-radius: 10px 0 0 10px;
-  /* background-image: linear-gradient(to top, #007adf 0%, #00ecbc 100%);
+	width: 100%;
+	height: 100%;
+	border-radius: 10px 0 0 10px;
+	/* background-image: linear-gradient(to top, #007adf 0%, #00ecbc 100%);
 	 */
-  background-image: linear-gradient(
-    -225deg,
-    #2cd8d5 0%,
-    #6b8dd6 48%,
-    #8e37d7 100%
-  );
-  /* display: flex;
+	background-image: url("../../../assets/icon/course/aibgImage.png");
+	background-repeat: no-repeat;
+	background-size: 100% 100%;
+	/* display: flex;
   flex-direction: column;
   align-items: center; */
-  /* justify-content: center; */
-  overflow: auto;
-  text-align: center;
+	/* justify-content: center; */
+	overflow: auto;
+	text-align: center;
 }
 
 .la_coco {
-  height: 170px;
-  width: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: flex-end;
+	height: 170px;
+	width: 100%;
+	display: flex;
+	justify-content: center;
+	align-items: flex-end;
 }
 
 .la_message {
-  /* max-height: 400px; */
-  /* min-height: 400px; */
-  height: auto;
-  max-height: calc(100% - 170px - 200px - 40px);
-  width: 100%;
-  /* display: flex; */
-  padding: 10px;
-  box-sizing: border-box;
-  margin: 20px 0;
-  overflow: auto;
+	/* max-height: 400px; */
+	/* min-height: 400px; */
+	height: auto;
+	max-height: calc(100% - 170px - 200px - 40px);
+	width: 100%;
+	/* display: flex; */
+	padding: 10px;
+	box-sizing: border-box;
+	margin: 20px 0;
+	overflow: auto;
 }
 
 .la_m_talk {
-  /* width:100%; */
-  height: auto;
-  /* max-height: calc(100% - 170px - 200px - 40px); */
-  box-sizing: border-box;
+	/* width:100%; */
+	height: auto;
+	/* max-height: calc(100% - 170px - 200px - 40px); */
+	box-sizing: border-box;
 }
 
 .la_m_talk > div {
-  background: #bfbfbf;
-  padding: 10px;
-  box-sizing: border-box;
-  border-radius: 10px;
-  text-align: left;
+	background: #bfbfbf;
+	padding: 10px;
+	box-sizing: border-box;
+	border-radius: 12px;
+	text-align: left;
+	background: #00000042;
+	color: #fff;
 }
 
 .la_btn {
-  height: 200px;
-  width: 100%;
-  display: flex;
+	height: 200px;
+	width: 100%;
+	display: flex;
 }
 
 .la_b_noTel {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
+	width: 100%;
+	height: 100%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
 }
 
-.la_b_noTel >span> svg {
-  fill: #52c41a;
-  width: 80px;
-  height: 80px;
-  cursor: pointer;
+.la_b_noTel > span > svg {
+	fill: #52c41a;
+	width: 80px;
+	height: 80px;
+	cursor: pointer;
 }
 
 .la_b_isTel {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
+	width: 100%;
+	height: 100%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
 }
 
 .la_b_isTel > svg {
-  fill: #ff0e55;
-  width: 80px;
-  height: 80px;
-  cursor: pointer;
-  transform: rotate(-135deg);
+	fill: #ff0e55;
+	width: 80px;
+	height: 80px;
+	cursor: pointer;
+	transform: rotate(-135deg);
+}
+
+.la_b_isTel > span > svg,
+img {
+	cursor: pointer;
 }
 
 .la_b_isTel > span {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 45px;
-  height: 45px;
-  border-radius: 50%;
-  cursor: pointer;
-  margin: 0 20px;
-  padding: 5px;
-  background: #bfbfbf;
+	width: 56px;
+	height: 56px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin: 0 30px;
+}
+
+.readAloud {
+	border-radius: 100%;
+	background-color: #517291;
+	cursor: pointer;
+	box-shadow: 0px 2px 4px -1px #0000001f;
+
+	box-shadow: 0px 4px 5px 0px #00000014;
+
+	box-shadow: 0px 1px 10px 0px #0000000d;
 }
 
-.la_b_isTel > span > svg {
-  border: solid 2px black;
-  border-radius: 50%;
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
+.readAloud > svg {
+	width: 22px;
+	height: 22px;
+	fill: #fff;
 }
 </style>

+ 2 - 2
src/components/classRoomHelper/component/levitatedSphere.vue

@@ -14,9 +14,9 @@
         fit="fill"
       ></el-image>
       <el-image
-        style="width: 100%; height: 100%"
+        style="width: 100%; height: 100%;transform: scale(1.3,1.3);"
         v-show="aiStatus == 0"
-        :src="require('../../../assets/icon/course/aiWait.svg')"
+        :src="require('../../../assets/icon/course/aiWait2.svg')"
         fit="fill"
       ></el-image>
     </div>

+ 36 - 10
src/components/classRoomHelper/component/searchArea.vue

@@ -245,6 +245,14 @@
         </div>
       </div>
       <div class="s_b_btnArea">
+				<div class="s_b_ba-item" @click.stop="choiceRole()">
+          <img
+            style="width: 20px;"
+            src="../../../assets/icon/course/role.png"
+            alt=""
+          />
+          智能体
+        </div>
         <div
           :class="['s_b_ba-item', sendType == 3 ? 's_b_ba_active' : '']"
           @click="chooseType(3)"
@@ -269,14 +277,7 @@
 					<img src="../../../assets/icon/course/sRio2.png" style="margin-right: 5px;" alt="" v-else> -->
           搜索视频
         </div>
-        <div class="s_b_ba-item" @click.stop="choiceRole()">
-          <img
-            style="width: 20px;"
-            src="../../../assets/icon/course/role.png"
-            alt=""
-          />
-          选择智能体
-        </div>
+       
       </div>
 
       <div class="s_b_atBox" v-if="openAtBox" v-loading="loading">
@@ -792,7 +793,7 @@ export default {
   },
   data() {
     return {
-      text: "村上春树",
+      text: "",
       ppage: 1,
       sendType: 0,
       sendFnType: 0,
@@ -986,6 +987,27 @@ export default {
     }
   },
   methods: {
+		insertMemorandum(_html){//保存行为操作
+			//variable
+			//btn
+			return;
+			let params = [{
+				uid:this.userid,
+				courseId:this.courseId,
+				content:_html
+			}]
+
+			this.ajax.post(this.$store.state.api+'insert_systemOperation_countdownBehavior',params).then(res=>{
+				if(res.data==1){
+					console.log('保存操作成功')
+				}else{
+					console.log('保存操作失败')
+				}
+			}).catch(e=>{
+				console.log('保存操作失败')
+				console.log(e)
+			})
+		},
 		openPhone(){
 			// this.$message.info("打开电话面板")
 			this.$parent.changeItemType(4)
@@ -1202,6 +1224,7 @@ export default {
       });
       this.scrollBottom();
       if (this.sendType == 2 || _text.indexOf("视频") != -1) {
+				this.insertMemorandum(`<span class="btn">搜索视频</span>`)
         return this.ajax
           .post(`https://gpt4.cocorobo.cn/get_network_search`, {
             engine: "bilibili",
@@ -1229,6 +1252,7 @@ export default {
             this.chatLoading = false;
           });
       } else if (this.sendType == 3) {
+				this.insertMemorandum(`<span class="btn">生成图片</span>`)
         this.text = "";
         let params = {
           n: 1,
@@ -1286,6 +1310,7 @@ export default {
           });
         return;
       } else if (this.sendType == 1 || _text.indexOf("图片") != -1) {
+				this.insertMemorandum(`<span class="btn">搜索图片</span>`)
         // console.log("图片");
 
         this.text = "";
@@ -2688,8 +2713,8 @@ ${_wordData}
           is_mind_map: false,
           loading: false
         });
-
         this.scrollBottom();
+				this.insertMemorandum(`选择智能体<span class="variable">${this.choseRoleItem.assistantName}</span>`)
       }
     },
     optBtn(val) {
@@ -2754,6 +2779,7 @@ ${_wordData}
     this.getWorkData();
     this.getPublicRoleList();
     this.getRoleList();
+		this.insertMemorandum(`打开<span class="btn">任务</span>面板`)
   }
 };
 </script>

Разница между файлами не показана из-за своего большого размера
+ 559 - 233
src/components/classRoomHelper/component/taskArea.vue


+ 221 - 127
src/components/classRoomHelper/index.vue

@@ -6,7 +6,7 @@
         ref="searchAreaRef"
         :navList="navList"
         :tcid="tcid"
-				:openMegaphone="openMegaphone"
+        :openMegaphone="openMegaphone"
         :fileId="fileId"
         :recordType="recordType"
         v-if="itemType == 1"
@@ -17,14 +17,19 @@
         :courseType="courseType"
         :taskCount="taskCount"
         :worksStudent="worksStudent"
-				:openMegaphone="openMegaphone"
+        :openMegaphone="openMegaphone"
         ref="taskAreaRef"
         :fileId="fileId"
         v-if="itemType == 2"
       />
-			<countdown ref="countdownRef"  :fileId="fileId" :courseDetail="courseDetail" v-show="itemType==3"/>
+      <countdown
+        ref="countdownRef"
+        :fileId="fileId"
+        :courseDetail="courseDetail"
+        v-show="itemType == 3"
+      />
 
-			<languageAssistant ref="languageAssistantRef" v-if="itemType==4"/>
+      <languageAssistant ref="languageAssistantRef" v-if="itemType == 4" />
       <!-- <dialogArea
         :courseDetail="courseDetail"
 				:openMegaphone="openMegaphone"
@@ -35,90 +40,57 @@
     </div>
     <div class="ch_nav_box">
       <div class="ch_nav_box_top">
-        <div @click="changeFold(!fold)">
-          <el-tooltip class="item" effect="dark" :content="fold?'折叠':'展开'" placement="top">
+        <div @click="changeFold(!fold)" ref="foldBtnRef">
+          <el-tooltip
+            class="item"
+            effect="dark"
+            :content="fold ? '折叠' : '展开'"
+            placement="top"
+          >
             <img
               :src="require('../../assets/icon/course/foldIcon.svg')"
               alt=""
-							:style="`${fold?'transform: rotate(90deg);':''}`"
+              :style="`${fold ? 'transform: rotate(90deg);' : ''}`"
             />
           </el-tooltip>
-          <div v-if="fold" class="itemFold">
-            <div @click="$emit('backPage')">
-              <el-tooltip
-                class="item"
-                effect="dark"
-                content="返回"
-                placement="top"
-              >
-                <img
-                  :src="require('../../assets/icon/course/return.png')"
-                  alt=""
-                />
-              </el-tooltip>
-            </div>
-
-            <div @click="$emit('refresh')">
-              <el-tooltip
-                class="item"
-                effect="dark"
-                content="刷新"
-                placement="top"
-              >
-                <img
-                  :src="require('../../assets/icon/course/refresh.png')"
-                  alt=""
-                />
-              </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')"
-                  alt=""
-                />
-              </el-tooltip>
-            </div>
-          </div>
         </div>
 
         <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')"
+              :src="require('../../assets/icon/course/comment2.svg')"
               alt=""
               style="width: 22px;height: 22px;"
             />
           </el-tooltip>
         </div>
 
-				<div @click="$emit('startRecording')" v-if="!videoStart && (tType == 1 || tType == 4)">
+        <div
+          @click="startRecording()"
+          v-if="!videoStart && (tType == 1 || tType == 4)"
+        >
           <el-tooltip class="item" effect="dark" content="录制" placement="top">
             <img
-              :src="require('../../assets/icon/course/record.svg')"
+              :src="require('../../assets/icon/course/record3.svg')"
               alt=""
               style="width: 22px;height: 22px;"
             />
           </el-tooltip>
         </div>
 
-				<div @click="$emit('stopRecording')" v-else-if="(tType == 1 || tType == 4)" style="background:#f63564">
+        <div
+          @click="$emit('stopRecording')"
+          v-else-if="tType == 1 || tType == 4"
+          style="background:#f63564"
+        >
           <el-tooltip class="item" effect="dark" content="下载" placement="top">
             <img
-              :src="require('../../assets/icon/course/record2.svg')"
+              :src="require('../../assets/icon/course/record4.svg')"
               alt=""
               style="width: 22px;height: 22px;"
             />
           </el-tooltip>
         </div>
-
-				
       </div>
       <div class="ch_nav_box_middle">
         <div
@@ -140,7 +112,7 @@
           <div>任务</div>
         </div>
 
-				<div
+        <div
           :class="[
             'ch_nav_box_middle_item',
             itemType == 1 ? 'ch_nav_box_middle_item_active' : ''
@@ -178,20 +150,17 @@
         </div>
       </div>
       <div class="ch_nav_box_bottom">
-
-
-				<div @click.stop="commentAndAnnotate()">
-					<el-tooltip
-            class="item"
-            effect="dark"
-            content="批注"
-            placement="top"
-          >
-            <img :src="require('../../assets/icon/course/edit.svg')" />
+        <div @click.stop="commentAndAnnotate()">
+          <el-tooltip class="item" effect="dark" content="批注" placement="top">
+            <img
+              :src="require('../../assets/icon/course/edit2.svg')"
+              v-if="!AnnotationCanvasShow"
+            />
+            <img :src="require('../../assets/icon/course/edit3.svg')" v-else />
           </el-tooltip>
-				</div>
+        </div>
 
-				<!-- <div @click.stop="changeItemType(4)" :class="[itemType == 4?'ch_nav_box_middle_item_active':'']">
+        <!-- <div @click.stop="changeItemType(4)" :class="[itemType == 4?'ch_nav_box_middle_item_active':'']">
 					<el-tooltip
             class="item"
             effect="dark"
@@ -203,17 +172,23 @@
           </el-tooltip>
 				</div> -->
 
-				<div @click.stop="startAssistant()" :class="[recordType==1?'ch_nav_box_middle_item_active':'']">
-					<el-tooltip
+        <div
+          @click.stop="startAssistant()"
+          :class="[recordType == 1 ? 'ch_nav_box_middle_item_active' : '']"
+        >
+          <el-tooltip
             class="item"
             effect="dark"
-            :content="recordType==0?'开启语音助手':'关闭语音助手'"
+            :content="recordType == 0 ? '开启语音助手' : '关闭语音助手'"
             placement="top"
           >
-            <img v-if="recordType!=1" :src="require('../../assets/icon/course/robot.svg')" />
-						<img v-else :src="require('../../assets/icon/course/robot2.svg')" />
+            <img
+              v-if="recordType != 1"
+              :src="require('../../assets/icon/course/robot3.svg')"
+            />
+            <img v-else :src="require('../../assets/icon/course/robot3.svg')" />
           </el-tooltip>
-				</div>
+        </div>
 
         <div @click.stop="$emit('goStep', 0)">
           <el-tooltip
@@ -249,9 +224,30 @@
         </div>
       </div>
     </div>
+    <div v-show="fold" class="itemFold" ref="itemFoldRef">
+      <div @click="$emit('backPage')">
+       
+          <img :src="require('../../assets/icon/course/return.png')" alt="" />
+				<span>返回</span>
+      </div>
+
+      <div @click="$emit('refresh')">
+          <img :src="require('../../assets/icon/course/refresh.png')" alt="" />
+					<span>刷新</span>
+      </div>
+
+      <div @click="$emit('authority')" v-if="tType == 1 || tType == 4">
+          <img :src="require('../../assets/icon/course/setting.png')" alt="" />
+					<span>权限</span>
+      </div>
+    </div>
     <levitatedSphere ref="levitatedSphereRef" @startTime="startTime" />
     <timepiece ref="timepieceRef" />
-		<AnnotationCanvas ref="AnnotationCanvasRef"/>
+    <AnnotationCanvas
+      ref="AnnotationCanvasRef"
+      @close="endCommentAndAnnotate"
+      @changeStatus="changeAnnotationCanvasShow"
+    />
   </div>
 </template>
 
@@ -262,19 +258,27 @@ import taskArea from "./component/taskArea.vue";
 import levitatedSphere from "./component/levitatedSphere.vue";
 import timepiece from "./component/timepiece.vue";
 import countdown from "./component/countdown.vue";
-import AnnotationCanvas from './component/AnnotationCanvas.vue'
+import AnnotationCanvas from "./component/AnnotationCanvas.vue";
 import languageAssistant from "./component/languageAssistant.vue";
 export default {
-  emits: ["refresh", "goStep", "backPage", "authority", "review","stopRecording","startRecording"],
+  emits: [
+    "refresh",
+    "goStep",
+    "backPage",
+    "authority",
+    "review",
+    "stopRecording",
+    "startRecording"
+  ],
   components: {
     searchArea,
     taskArea,
     // dialogArea,
     levitatedSphere,
     timepiece,
-		countdown,
-		AnnotationCanvas,
-		languageAssistant
+    countdown,
+    AnnotationCanvas,
+    languageAssistant
   },
   props: {
     courseDetail: {
@@ -309,21 +313,24 @@ export default {
       type: Array,
       default: () => []
     },
-		videoStart:{
-			type:Boolean,
-			default:false,
-		},
+    videoStart: {
+      type: Boolean,
+      default: false
+    }
   },
   data() {
     return {
+      userid: this.$route.query.userid,
+      courseId: this.$route.query.courseId,
       type: 0,
       itemType: 0, //0--无  1-搜索  2-任务 3-对话
       fileId: [],
       recordType: 0,
-			recordLoading:false,
+      recordLoading: false,
       fold: false,
-			openMegaphone:false,//是否打开喇叭
-      getFileIdLoading: false
+      openMegaphone: false, //是否打开喇叭
+      getFileIdLoading: false,
+      AnnotationCanvasShow: false
     };
   },
   mounted() {
@@ -331,6 +338,42 @@ export default {
     this.getFileId();
   },
   methods: {
+    changeAnnotationCanvasShow(newValue) {
+      this.AnnotationCanvasShow = newValue;
+    },
+    startRecording() {
+      this.$emit("startRecording");
+      this.insertMemorandum(`使用<span class="btn">录制</span>功能,录制课堂`);
+    },
+    insertMemorandum(_html) {
+      //保存行为操作
+      //variable
+      //btn
+      let params = [
+        {
+          uid: this.userid,
+          courseId: this.courseId,
+          content: _html
+        }
+      ];
+
+      this.ajax
+        .post(
+          this.$store.state.api + "insert_systemOperation_countdownBehavior",
+          params
+        )
+        .then(res => {
+          if (res.data == 1) {
+            console.log("保存操作成功");
+          } else {
+            console.log("保存操作失败");
+          }
+        })
+        .catch(e => {
+          console.log("保存操作失败");
+          console.log(e);
+        });
+    },
     setWidth() {
       let w = this.$refs.ch_box;
       let w2 = w.offsetWidth + 30 + "px";
@@ -345,8 +388,8 @@ export default {
     changeItemType(type) {
       this.type = 0;
       this.openSetting();
-			// this.$message.info("切换到"+type)
-			this.$nextTick(() => {
+      // this.$message.info("切换到"+type)
+      this.$nextTick(() => {
         // if (this.itemType == 1 && type != 1) {
         //   this.$refs.searchAreaRef.scrollBottom();
         //   this.$refs.searchAreaRef.getWantSearch();
@@ -356,9 +399,14 @@ export default {
         //   this.$refs.dialogAreaRef.scrollBottom();
         // }
         this.itemType = type;
-				if(this.itemType==4 && this.recordType==1){//关闭悬浮语音助手
-					this.$refs.levitatedSphereRef.stopRecord();
-				}
+        if (this.itemType == 4 && this.recordType == 1) {
+          //关闭悬浮语音助手
+          this.$refs.levitatedSphereRef.stopRecord();
+        }
+
+        if (this.itemType == 3) {
+          this.insertMemorandum(`打开<span class="btn">倒计时</span>面板`);
+        }
       });
     },
     //计时
@@ -405,42 +453,71 @@ export default {
       });
     },
     startAssistant() {
-			if(this.recordLoading)return this.$message.info("请稍等...")
-			this.recordLoading = true;
-			if (this.recordType == 0) {
-				if(this.itemType==4){
-					this.itemType = 0;
-					this.type = 0;
-				}				
-			// this.$message.info("开启")
-				// this.changeRecordType(1)
+      if (this.recordLoading) return this.$message.info("请稍等...");
+      this.recordLoading = true;
+      if (this.recordType == 0) {
+        if (this.itemType == 4) {
+          this.itemType = 0;
+          this.type = 0;
+        }
+        // this.$message.info("开启")
+        // this.changeRecordType(1)
         this.$refs.levitatedSphereRef.recordStart();
       } else if (this.recordType == 1) {
-				// this.$message.info("关闭")
-				// this.changeRecordType(0)
+        // this.$message.info("关闭")
+        // this.changeRecordType(0)
         this.$refs.levitatedSphereRef.stopRecord();
       }
     },
-		changeMegaphone(){
-			this.openMegaphone = !this.openMegaphone;
-			if(this.openMegaphone){
-				this.$message.success("已开启AI语音")
-			}else{
-				this.$message.success("已关闭AI语音")
-			}
-		},
+    changeMegaphone() {
+      this.openMegaphone = !this.openMegaphone;
+      if (this.openMegaphone) {
+        this.$message.success("已开启AI语音");
+      } else {
+        this.$message.success("已关闭AI语音");
+      }
+    },
     // 展开
     changeFold(newValue) {
       // this.$message.info("展开");
-			this.fold = newValue;
+      this.fold = newValue;
+			console.log(this.$refs.foldBtnRef)
+			let e1 = this.$refs.foldBtnRef.getBoundingClientRect();
+			let e2 = this.$refs.ch_box.getBoundingClientRect();
+
+			console.log('👇👇')
+			console.log(e1.top - e2.top)
+			this.$refs.itemFoldRef.style.top = e1.top - e2.top + "px";
+    },
+    // 收起
+    changeUnfold(newValue) {
+      // this.$message.info("收起");
+      this.fold = newValue;
+    },
+    insertMemorandum(text) {
+      this.$refs.MemorandumRef.insertMemorandum(text);
+    },
+    // 语音识别
+    startRecord() {
+      this.$refs.levitatedSphereRef.startRecord();
+    },
+    stopRecord() {
+      this.$refs.levitatedSphereRef.stopRecord();
+    },
+    // 语音合成
+    startSpeak() {
     },
     changeRecordType(type) {
-			this.recordLoading = false;
+      this.recordLoading = false;
       this.recordType = type;
     },
-		commentAndAnnotate(){
-			this.$refs.AnnotationCanvasRef.open();
-		}
+    commentAndAnnotate() {
+      this.$refs.AnnotationCanvasRef.open();
+      this.insertMemorandum(`开始使用<span class="btn">批注</span>功能`);
+    },
+    endCommentAndAnnotate() {
+      this.insertMemorandum(`结束使用<span class="btn">批注</span>功能`);
+    }
   }
 };
 </script>
@@ -465,8 +542,8 @@ export default {
   display: flex;
   flex-direction: column;
   align-items: center;
-  overflow-y: auto;
-  overflow-x: hidden; /* 确保横向溢出内容可见 */
+  overflow-y: auto !important; /* 上下溢出显示滚动条 */
+  overflow-x: hidden !important; /* 左右溢出正常溢出 */
   position: relative;
 }
 
@@ -532,6 +609,7 @@ export default {
 
 .ch_nav_box_top {
   width: 100%;
+  height: auto;
   margin-top: auto;
 }
 
@@ -548,33 +626,49 @@ export default {
 .ch_nav_box_top > div > img {
   width: 24px;
   height: 24px;
-	transition: .3s;
+  transition: 0.3s;
 }
 
 .itemFold {
   position: absolute;
-  width: 65px;
-	left:0px;
-	top: 65px;
+  width: 130px;
+  right: 65px;
+  top: 0;
   background: rgb(255, 255, 255);
   box-sizing: border-box;
   border: solid 1px #eaeaea;
-	/* border-top: solid 1px #eaeaea; */
+  /* border-top: solid 1px #eaeaea; */
   z-index: 1000; /* 确保二级菜单在主菜单上层 */
-	border-radius: 10px;
+  border-radius: 10px;
+	box-sizing: border-box;
+	padding:10px;
+	display:flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
 }
 
 .itemFold > div {
   width: 100%;
-  height: 65px;
+  height: 45px;
   display: flex;
   justify-content: center;
   align-items: center;
   cursor: pointer;
+	margin: 5px 0;
+	border-radius: 10px;
+}
+
+.itemFold > div:hover{
+	background:#F3F7FD;
 }
 
 .itemFold > div > img {
   width: 24px;
   height: 24px;
 }
+
+.itemFold > div > span{
+	margin-left:10px;
+}
 </style>

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

@@ -12447,8 +12447,8 @@ export default {
 				isScoreList:[],	
 			},
 			classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5','c9a6de59-8b4f-4be1-8565-a08081f649d3'],
-      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5'],
+			orgArray:[],
+      oidArray:[],
       refreshKey:0,
       AIloading:[],
       worksStudentCopy:[],
@@ -12456,6 +12456,18 @@ export default {
     };
   },
   methods: {
+		getAIJ(){
+			this.ajax.get(this.$store.state.api+"getAIJ","").then(res=>{
+				let oid = res.data[0];
+				let org = res.data[1];
+				let oidArray = [];
+				let orgArray = [];
+				oid.forEach(i=>oidArray.push(i.oid))
+				org.forEach(i=>orgArray.push(i.oid))
+				this.orgArray = orgArray;
+				this.oidArray = oidArray;
+			})
+		},
     async loopEva(con,tit,stage,task,toolIndex,toolDetail,worksStudent){
         console.log(con,tit,stage,task,toolIndex,toolDetail);
 
@@ -20320,6 +20332,7 @@ export default {
     this.selectCount();
     this.getHomeWork();
     this.selectUser();
+		this.getAIJ()
     this.contentDialog = true;
     this.setContent2(true);
     if (this.tType == 4) {

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

@@ -12421,11 +12421,23 @@ export default {
 				isScoreList:[],	
 			},
 			classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5','c9a6de59-8b4f-4be1-8565-a08081f649d3'],
-      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5']
+			orgArray:[],
+      oidArray:[]
     };
   },
   methods: {
+		getAIJ(){
+			this.ajax.get(this.$store.state.api+"getAIJ","").then(res=>{
+				let oid = res.data[0];
+				let org = res.data[1];
+				let oidArray = [];
+				let orgArray = [];
+				oid.forEach(i=>oidArray.push(i.oid))
+				org.forEach(i=>orgArray.push(i.oid))
+				this.orgArray = orgArray;
+				this.oidArray = oidArray;
+			})
+		},
     gx(){
       this.$forceUpdate();
     },
@@ -20177,6 +20189,7 @@ export default {
     this.selectCount();
     this.getHomeWork();
     this.selectUser();
+		this.getAIJ();
     this.contentDialog = true;
     this.setContent2(true);
     if (this.tType == 4) {

+ 33 - 3
src/components/studyStudent.vue

@@ -8227,7 +8227,7 @@
 				<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>
+        <scoreZong :courseid="id" :userid="userid" @insertMemorandum="insertMemorandum"></scoreZong>
 			</div>
     </div>
     <div
@@ -12359,8 +12359,8 @@ export default {
 				isScoreList:[],	
 			},
       classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9','0fec3a8a-ad04-11ed-b13d-005056b86db5','c9a6de59-8b4f-4be1-8565-a08081f649d3'],
-      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5','45facc0a-1211-11ec-80ad-005056b86db5'],
+			orgArray:[],
+      oidArray:[],
 			toolsList:{
     58: "模拟驾驶",
     59: "路径搜索",
@@ -12404,6 +12404,18 @@ export default {
     };
   },
   methods: {
+		getAIJ(){
+			this.ajax.get(this.$store.state.api+"getAIJ","").then(res=>{
+				let oid = res.data[0];
+				let org = res.data[1];
+				let oidArray = [];
+				let orgArray = [];
+				oid.forEach(i=>oidArray.push(i.oid))
+				org.forEach(i=>orgArray.push(i.oid))
+				this.orgArray = orgArray;
+				this.oidArray = oidArray;
+			})
+		},
 		insertMemorandum(_html){//保存行为操作
 			return;
 			//variable
@@ -12796,6 +12808,7 @@ export default {
       this.dialogVisibleMember = false;
     },
     previewImg(url) {
+			this.$message.info('查看作业-图片')
       this.$hevueImgPreview(url);
     },
     checkImg(list) {
@@ -14121,6 +14134,8 @@ export default {
         .catch(() => {});
     },
     async commentOther(w, toolIndex, wIndex, gindex, gid) {
+			this.$message.info("预览作业")
+			console.log(w,1)
       this.commentIndexJson = {
         toolIndex: toolIndex,
         wIndex: wIndex,
@@ -14173,6 +14188,8 @@ export default {
       }
     },
     async openScore(w, index) {
+			this.$message.info("预览作业")
+			console.log(w,2)
       this.wScore = 0;
       this.wScore = w.score ? JSON.parse(w.score).wScore : 0;
       this.scoreDetail = w.score ? JSON.parse(w.score).detail : "";
@@ -14302,6 +14319,8 @@ export default {
         });
     },
     openXz(w, i) {
+			this.$message.info("预览作业")
+			console.log(w,3)
       this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
         .taskJson[this.taskCount].toolChoose[i].selectJson
         ? JSON.parse(
@@ -14321,11 +14340,15 @@ export default {
       this.dialogVisibleSelect = true;
     },
     openSen(w, i) {
+			this.$message.info("预览作业")
+			console.log(w,4)
       this.sentenceList1 = JSON.parse(w.works);
       this.sentenceList1.stuName = w.sName;
       this.dialogVisibleSentence1 = true;
     },
     openPj(w, toolindex) {
+			this.$message.info("预览作业")
+			console.log(w,5)
       this.isStar = true;
       this.eScore = JSON.parse(w);
       this.rateJson =
@@ -16944,6 +16967,7 @@ export default {
           this.$message.error("添加失败");
           console.error(err);
         });
+				this.insertMemorandum(`使用<span class="btn">评论</span>功能,添加评论`)
     },
     setReplyIndex(id, i) {
       this.replyIndex = i;
@@ -17475,10 +17499,14 @@ export default {
     openTable(f) {
       this.tableJson = JSON.parse(f.works);
       this.dialogVisibleTable2 = true;
+			this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
     },
     openWord(f) {
+			this.$message.info("预览作业")
+			console.log(f,7)
       this.tableJson = JSON.parse(f.works);
       this.dialogVisibleTable3 = true;
+	
     },
     doUrl(url, i) {
       this.isClickNav = "";
@@ -19006,6 +19034,7 @@ export default {
       x.send();
     },
     downloadFile(url) {
+			this.$message.info("查看作业-下载文件")
       var credentials = {
         accessKeyId: "AKIATLPEDU37QV5CHLMH",
         secretAccessKey: "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",
@@ -20186,6 +20215,7 @@ export default {
     this.selectCount();
     this.getHomeWork();
     this.selectUser();
+		this.getAIJ();
     this.contentDialog = true;
     this.setContent2(true);
     if (this.tType == 4) {

Некоторые файлы не были показаны из-за большого количества измененных файлов