Selaa lähdekoodia

Merge branch 'alpha'

lsc 1 vuosi sitten
vanhempi
commit
0013d2f345
29 muutettua tiedostoa jossa 2059 lisäystä ja 749 poistoa
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.1df1c0d0469f25f586767b0d9856e3d7.css
  3. 0 0
      dist/static/css/app.1df1c0d0469f25f586767b0d9856e3d7.css.map
  4. 0 0
      dist/static/css/app.e899675c15336f0ce8e5499e31258581.css.map
  5. 0 40
      dist/static/img/aiWait.bc90766.svg
  6. 30 0
      dist/static/img/practice.25766a7.svg
  7. 0 0
      dist/static/js/app.1617e88e66fbb63beb2f.js
  8. 0 0
      dist/static/js/app.1617e88e66fbb63beb2f.js.map
  9. 0 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  10. 0 0
      dist/static/js/vendor.b5a78a47ec38c79eb330.js
  11. 0 0
      dist/static/js/vendor.b5a78a47ec38c79eb330.js.map
  12. 0 0
      src/assets/drawIcon/SourceHanSans-Regular.otf
  13. 30 0
      src/assets/icon/course/practice.svg
  14. 3 0
      src/assets/icon/course/setting2.svg
  15. BIN
      src/assets/icon/course/start2.png
  16. 5 5
      src/components/classRoomHelper/component/AnnotationCanvas.vue
  17. 410 61
      src/components/classRoomHelper/component/countdown.vue
  18. 57 13
      src/components/classRoomHelper/component/languageAssistant.vue
  19. 21 13
      src/components/classRoomHelper/component/levitatedSphere.vue
  20. 664 230
      src/components/classRoomHelper/component/searchArea.vue
  21. 103 18
      src/components/classRoomHelper/component/taskArea.vue
  22. 63 13
      src/components/classRoomHelper/index.vue
  23. 28 0
      src/components/courseDetail.vue
  24. 100 135
      src/components/easy2/commpont/markScore.vue
  25. 333 84
      src/components/easy2/studyStudent.vue
  26. 113 51
      src/components/easy3/studyStudent.vue
  27. 1 0
      src/components/scoreZong/index.vue
  28. 97 85
      src/components/studyStudent.vue
  29. BIN
      static/SourceHanSans-Regular.otf

+ 1 - 1
dist/index.html

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

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.1df1c0d0469f25f586767b0d9856e3d7.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.1df1c0d0469f25f586767b0d9856e3d7.css.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.e899675c15336f0ce8e5499e31258581.css.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 40
dist/static/img/aiWait.bc90766.svg


+ 30 - 0
dist/static/img/practice.25766a7.svg

@@ -0,0 +1,30 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M2.38623 10.9008C2.38623 12.0768 2.61796 13.2414 3.0682 14.3279C3.51843 15.4144 4.17835 16.4017 5.01027 17.2333C5.84219 18.0649 6.82982 18.7245 7.91678 19.1746C9.00374 19.6246 10.1687 19.8563 11.3453 19.8563C12.5218 19.8563 13.6868 19.6246 14.7737 19.1746C15.8607 18.7245 16.8483 18.0649 17.6802 17.2333C18.5122 16.4017 19.1721 15.4144 19.6223 14.3279C20.0725 13.2414 20.3043 12.0768 20.3043 10.9008C20.3043 8.52566 19.3604 6.24779 17.6802 4.56831C16.0001 2.88883 13.7213 1.94531 11.3453 1.94531C8.96917 1.94531 6.69041 2.88883 5.01027 4.56831C3.33012 6.24779 2.38623 8.52566 2.38623 10.9008Z" fill="#F7FAFF"/>
+<path d="M2.38623 10.9008C2.38623 12.0768 2.61796 13.2414 3.0682 14.3279C3.51843 15.4144 4.17835 16.4017 5.01027 17.2333C5.84219 18.0649 6.82982 18.7245 7.91678 19.1746C9.00374 19.6246 10.1687 19.8563 11.3453 19.8563C12.5218 19.8563 13.6868 19.6246 14.7737 19.1746C15.8607 18.7245 16.8483 18.0649 17.6802 17.2333C18.5122 16.4017 19.1721 15.4144 19.6223 14.3279C20.0725 13.2414 20.3043 12.0768 20.3043 10.9008C20.3043 8.52566 19.3604 6.24779 17.6802 4.56831C16.0001 2.88883 13.7213 1.94531 11.3453 1.94531C8.96917 1.94531 6.69041 2.88883 5.01027 4.56831C3.33012 6.24779 2.38623 8.52566 2.38623 10.9008Z" fill="#3681FC"/>
+<path d="M5.6427 11.4946L13.5813 8.28714C13.6979 8.24001 13.8299 8.29657 13.877 8.41205L17.1895 17.046C17.2366 17.1627 17.1801 17.2947 17.0646 17.3418L9.12601 20.5493C9.00935 20.5964 8.87738 20.5398 8.83024 20.4244L5.51662 11.7904C5.46949 11.6737 5.52605 11.5418 5.6427 11.4946Z" fill="#E7E7E7"/>
+<path d="M6.09808 10.5573L14.0365 7.34986C14.0642 7.33874 14.0937 7.33319 14.1235 7.33351C14.1533 7.33383 14.1828 7.34002 14.2101 7.35174C14.2375 7.36345 14.2624 7.38045 14.2832 7.40176C14.304 7.42307 14.3204 7.44828 14.3315 7.47594L17.644 16.1104C17.6552 16.1379 17.6608 16.1674 17.6605 16.1971C17.6603 16.2268 17.6542 16.2562 17.6426 16.2836C17.631 16.3109 17.6141 16.3357 17.5929 16.3566C17.5718 16.3774 17.5467 16.3938 17.5191 16.405L9.58044 19.6122C9.5528 19.6233 9.52324 19.6289 9.49345 19.6286C9.46365 19.6283 9.43422 19.6221 9.40682 19.6104C9.37943 19.5986 9.35461 19.5816 9.33379 19.5603C9.31297 19.539 9.29656 19.5138 9.2855 19.4861L5.97306 10.8518C5.96191 10.8243 5.9563 10.7948 5.95655 10.7651C5.9568 10.7354 5.96289 10.706 5.97449 10.6786C5.98609 10.6513 6.00296 10.6265 6.02415 10.6057C6.04533 10.5848 6.07053 10.5685 6.09808 10.5573Z" fill="white"/>
+<path d="M9.71794 10.6019L13.2413 9.17842C13.2857 9.16149 13.335 9.16264 13.3785 9.18162C13.4221 9.20061 13.4565 9.23592 13.4743 9.27997C13.4921 9.32401 13.4919 9.37329 13.4738 9.41721C13.4556 9.46112 13.421 9.49618 13.3773 9.51485L9.85404 10.9384C9.83194 10.9473 9.8083 10.9518 9.78447 10.9516C9.76064 10.9514 9.73708 10.9465 9.71514 10.9372C9.6932 10.9279 9.67331 10.9144 9.65661 10.8974C9.6399 10.8804 9.62671 10.8602 9.61778 10.8381C9.60885 10.816 9.60436 10.7924 9.60457 10.7686C9.60478 10.7447 9.60968 10.7212 9.61899 10.6992C9.6283 10.6773 9.64184 10.6574 9.65884 10.6407C9.67584 10.624 9.69596 10.6108 9.71806 10.6019H9.71794ZM9.98837 11.325L11.8349 10.5791C11.8792 10.5622 11.9285 10.5633 11.9721 10.5823C12.0156 10.6013 12.05 10.6366 12.0678 10.6807C12.0856 10.7247 12.0854 10.774 12.0673 10.8179C12.0492 10.8618 12.0145 10.8969 11.9708 10.9156L10.1244 11.6615C10.08 11.6781 10.031 11.6767 9.98762 11.6577C9.94429 11.6386 9.91011 11.6034 9.89238 11.5595C9.87465 11.5156 9.87478 11.4665 9.89274 11.4227C9.91069 11.3789 9.94505 11.3439 9.98849 11.325H9.98837ZM7.71109 11.0201L8.35129 10.7613C8.42489 10.7315 8.50363 10.7166 8.58302 10.7173C8.66241 10.7179 8.74088 10.7343 8.81396 10.7653C8.88704 10.7963 8.95329 10.8414 9.00892 10.8981C9.06456 10.9547 9.10848 11.0217 9.13819 11.0954L9.39649 11.7345C9.42625 11.8081 9.44122 11.8869 9.44054 11.9662C9.43986 12.0456 9.42354 12.1241 9.39252 12.1972C9.36149 12.2703 9.31637 12.3365 9.25973 12.3921C9.20309 12.4478 9.13605 12.4917 9.06242 12.5214L8.42222 12.7801C8.34873 12.8099 8.27007 12.825 8.19073 12.8245C8.1114 12.8239 8.03296 12.8077 7.9599 12.7768C7.88685 12.7458 7.8206 12.7008 7.76497 12.6443C7.70933 12.5877 7.66539 12.5207 7.63567 12.4472L7.37749 11.808C7.31728 11.6593 7.31858 11.4928 7.38111 11.345C7.44364 11.1973 7.56229 11.0804 7.71097 11.0201H7.71109Z" fill="#E7E7E7"/>
+<path d="M8.50487 11.9268C8.54022 11.9418 8.57675 11.941 8.60939 11.9278C8.62593 11.9212 8.64097 11.9113 8.6536 11.8988C8.66624 11.8863 8.67621 11.8713 8.68292 11.8548L9.05799 10.9713C9.0708 10.9384 9.07029 10.9017 9.05656 10.8692C9.04282 10.8366 9.01695 10.8107 8.98443 10.7969C8.9519 10.7831 8.91528 10.7825 8.88233 10.7953C8.84938 10.808 8.8227 10.8331 8.80794 10.8652L8.48672 11.6241L8.08066 11.4525C8.04774 11.4397 8.01111 11.4402 7.97856 11.454C7.94601 11.4677 7.92009 11.4936 7.90629 11.5261C7.8925 11.5586 7.89192 11.5952 7.90467 11.6282C7.91742 11.6611 7.94251 11.6878 7.97461 11.7026L8.50487 11.9268Z" fill="white"/>
+<path d="M10.7136 13.0444L14.2369 11.6208C14.2814 11.6035 14.3309 11.6043 14.3748 11.6232C14.4186 11.6421 14.4533 11.6775 14.4712 11.7218C14.4891 11.7661 14.4888 11.8156 14.4705 11.8597C14.4521 11.9038 14.4171 11.9388 14.373 11.9573L10.8495 13.3809C10.8051 13.3979 10.7559 13.3967 10.7123 13.3778C10.6688 13.3588 10.6344 13.3235 10.6166 13.2794C10.5988 13.2354 10.599 13.1861 10.6171 13.1422C10.6352 13.0983 10.6698 13.0632 10.7135 13.0445L10.7136 13.0444ZM10.9841 13.7674L12.8306 13.0216C12.8749 13.0049 12.924 13.0063 12.9673 13.0253C13.0106 13.0444 13.0448 13.0796 13.0625 13.1235C13.0803 13.1674 13.0801 13.2165 13.0622 13.2603C13.0442 13.3041 13.0099 13.3391 12.9664 13.358L11.1201 14.104C11.0754 14.122 11.0255 14.1216 10.9812 14.1028C10.9369 14.084 10.9018 14.0483 10.8838 14.0037C10.8658 13.9591 10.8662 13.9091 10.885 13.8648C10.9038 13.8205 10.9395 13.7855 10.9841 13.7674ZM8.70668 13.4625L9.34699 13.2038C9.42059 13.1741 9.49932 13.1591 9.57871 13.1598C9.65809 13.1604 9.73656 13.1768 9.80964 13.2078C9.88272 13.2388 9.94897 13.2839 10.0046 13.3405C10.0602 13.3971 10.1042 13.4642 10.1339 13.5378L10.3921 14.177C10.4218 14.2506 10.4368 14.3294 10.4361 14.4088C10.4354 14.4882 10.4191 14.5666 10.3881 14.6397C10.3571 14.7128 10.312 14.779 10.2553 14.8347C10.1987 14.8903 10.1316 14.9342 10.058 14.9639L9.41781 15.2226C9.34432 15.2524 9.26566 15.2675 9.18633 15.2669C9.10701 15.2663 9.02858 15.2501 8.95554 15.2192C8.88249 15.1883 8.81626 15.1432 8.76064 15.0867C8.70501 15.0301 8.66109 14.9631 8.63138 14.8896L8.37308 14.2505C8.31287 14.1017 8.31419 13.9352 8.37674 13.7874C8.4393 13.6396 8.55797 13.5228 8.70668 13.4625Z" fill="#E7E7E7"/>
+<path d="M9.49917 14.3688C9.5344 14.3837 9.57093 14.3829 9.60369 14.3697C9.63645 14.3565 9.66331 14.3316 9.67722 14.2969L10.0522 13.4132C10.0645 13.3804 10.0637 13.3441 10.0499 13.3119C10.0361 13.2796 10.0104 13.254 9.97809 13.2403C9.94581 13.2266 9.90949 13.2259 9.87671 13.2384C9.84394 13.2508 9.81725 13.2755 9.80224 13.3072L9.48102 14.066L9.07602 13.8941C9.0431 13.8813 9.00648 13.8818 8.97392 13.8956C8.94137 13.9093 8.91545 13.9352 8.90165 13.9677C8.88786 14.0002 8.88728 14.0368 8.90003 14.0698C8.91278 14.1027 8.93787 14.1294 8.96997 14.1442L9.49905 14.3688H9.49917Z" fill="white"/>
+<path d="M11.7089 15.4876L15.2324 14.064C15.2545 14.0551 15.2782 14.0506 15.302 14.0508C15.3258 14.051 15.3494 14.0559 15.3713 14.0652C15.3933 14.0745 15.4132 14.0881 15.4299 14.1051C15.4466 14.1221 15.4598 14.1422 15.4687 14.1643C15.4776 14.1864 15.4821 14.21 15.4819 14.2338C15.4817 14.2577 15.4768 14.2812 15.4675 14.3032C15.4582 14.3251 15.4446 14.345 15.4276 14.3617C15.4106 14.3784 15.3905 14.3916 15.3684 14.4005L11.8449 15.824C11.8005 15.8409 11.7513 15.8398 11.7077 15.8208C11.6642 15.8018 11.6298 15.7665 11.612 15.7224C11.5942 15.6784 11.5944 15.6291 11.6125 15.5852C11.6306 15.5413 11.6652 15.5062 11.7089 15.4876ZM11.9796 16.2107L13.826 15.4647C13.8706 15.4467 13.9206 15.4471 13.9649 15.4659C14.0092 15.4847 14.0442 15.5204 14.0622 15.565C14.0803 15.6096 14.0798 15.6596 14.061 15.7039C14.0422 15.7482 14.0066 15.7832 13.9619 15.8012L12.1155 16.5471C12.0711 16.5641 12.0218 16.5629 11.9783 16.5439C11.9347 16.525 11.9003 16.4896 11.8825 16.4456C11.8647 16.4016 11.8649 16.3523 11.883 16.3084C11.9012 16.2644 11.9358 16.2294 11.9795 16.2107H11.9796ZM9.70208 15.9058L10.3424 15.647C10.416 15.6172 10.4947 15.6023 10.5741 15.6029C10.6535 15.6036 10.732 15.6199 10.8051 15.651C10.8782 15.682 10.9444 15.7271 11 15.7838C11.0557 15.8404 11.0996 15.9074 11.1293 15.9811L11.3875 16.6202C11.4172 16.6938 11.4322 16.7725 11.4315 16.8519C11.4309 16.9313 11.4146 17.0098 11.3836 17.0828C11.3525 17.1559 11.3074 17.2222 11.2508 17.2778C11.1942 17.3335 11.1271 17.3774 11.0535 17.4071L10.4132 17.6658C10.3397 17.6956 10.2611 17.7107 10.1818 17.7101C10.1024 17.7095 10.024 17.6933 9.95097 17.6624C9.87792 17.6315 9.81169 17.5865 9.75606 17.5299C9.70044 17.4734 9.6565 17.4064 9.62678 17.3329L9.36849 16.6937C9.30824 16.545 9.30954 16.3784 9.37209 16.2306C9.43465 16.0828 9.55335 15.9659 9.70208 15.9056V15.9058Z" fill="#E7E7E7"/>
+<path d="M10.4947 16.8115C10.53 16.8264 10.5665 16.8256 10.5993 16.8124C10.6158 16.8058 10.6309 16.796 10.6435 16.7834C10.6561 16.7709 10.6661 16.7559 10.6728 16.7395L11.0479 15.8559C11.061 15.823 11.0607 15.7862 11.047 15.7534C11.0333 15.7207 11.0074 15.6946 10.9747 15.6807C10.9421 15.6669 10.9053 15.6663 10.8722 15.6792C10.8392 15.6921 10.8125 15.7174 10.7978 15.7498L10.4766 16.5086L10.0716 16.3367C10.0387 16.3239 10.0021 16.3244 9.96953 16.3381C9.93698 16.3519 9.91105 16.3777 9.89726 16.4103C9.88346 16.4428 9.88288 16.4794 9.89564 16.5123C9.90839 16.5453 9.93348 16.572 9.96557 16.5867L10.4947 16.8115Z" fill="white"/>
+<path d="M4.50902 4.61806L5.68351 5.09259C5.79211 5.13938 5.87809 5.22681 5.92305 5.33618C5.96801 5.44555 5.96838 5.56817 5.92408 5.67781C5.87978 5.78745 5.79434 5.8754 5.68602 5.92284C5.5777 5.97028 5.45512 5.97345 5.3445 5.93167L4.17001 5.45714C4.06141 5.41036 3.97543 5.32292 3.93047 5.21355C3.88551 5.10418 3.88514 4.98156 3.92944 4.87192C3.97374 4.76228 4.05919 4.67433 4.1675 4.62689C4.27582 4.57945 4.3984 4.57628 4.50902 4.61806Z" fill="#DBE0E9"/>
+<path d="M8.9059 4.00339C7.56206 3.46044 6.0316 4.10918 5.48866 5.45301C4.94571 6.79685 5.59489 8.32622 6.93982 8.86961C8.28475 9.41299 9.81412 8.76381 10.3571 7.41998C10.8989 6.0757 10.2497 4.54633 8.9059 4.00339ZM8.73595 4.42402C9.84817 4.87338 10.3854 6.13891 9.93643 7.25003C9.48751 8.36115 8.22198 8.89834 7.10977 8.44897C5.99755 7.99961 5.46037 6.73408 5.90929 5.62296C6.35821 4.51184 7.62374 3.97465 8.73595 4.42402Z" fill="#DBE0E9"/>
+<path d="M8.71738 4.47004C8.19552 4.25919 7.61132 4.26418 7.0933 4.4839C6.57528 4.70361 6.16588 5.12006 5.95515 5.64164C5.74442 6.16321 5.74963 6.74718 5.96963 7.26507C6.18964 7.78297 6.60641 8.19238 7.12828 8.40322C7.65014 8.61407 8.23434 8.60908 8.75236 8.38937C9.27038 8.16965 9.67978 7.7532 9.89051 7.23163C10.1012 6.71005 10.096 6.12609 9.87603 5.60819C9.65602 5.09029 9.23925 4.68089 8.71738 4.47004Z" fill="#DBE0E9"/>
+<path d="M4.74535 4.14639L5.91984 4.62091C6.02844 4.6677 6.11442 4.75513 6.15938 4.8645C6.20434 4.97387 6.20471 5.09649 6.16041 5.20613C6.11611 5.31577 6.03066 5.40372 5.92235 5.45116C5.81403 5.49861 5.69145 5.50177 5.58083 5.45999L4.40634 4.98546C4.29774 4.93868 4.21176 4.85125 4.1668 4.74188C4.12184 4.63251 4.12147 4.50988 4.16577 4.40024C4.21007 4.2906 4.29551 4.20265 4.40383 4.15521C4.51214 4.10777 4.63473 4.1046 4.74535 4.14639Z" fill="white"/>
+<path d="M9.14223 3.53171C7.79839 2.98876 6.26793 3.6375 5.72499 4.98133C5.18204 6.32517 5.83122 7.85454 7.17615 8.39793C8.52108 8.94131 10.0504 8.29213 10.5934 6.9483C11.1352 5.60402 10.4861 4.07465 9.14223 3.53171ZM8.97228 3.95234C10.0845 4.4017 10.6217 5.66723 10.1728 6.77835C9.72384 7.88948 8.45831 8.42666 7.3461 7.97729C6.23388 7.52793 5.6967 6.2624 6.14562 5.15128C6.59454 4.04016 7.86007 3.50297 8.97228 3.95234Z" fill="white"/>
+<path d="M8.95176 3.99836C8.69336 3.89396 8.41694 3.84145 8.13828 3.84383C7.85962 3.8462 7.58418 3.90342 7.32768 4.01222C7.07118 4.12101 6.83865 4.27924 6.64337 4.47789C6.44808 4.67654 6.29386 4.9117 6.18952 5.16996C6.08518 5.42821 6.03276 5.7045 6.03524 5.98305C6.03773 6.2616 6.09507 6.53696 6.20401 6.79339C6.31294 7.04983 6.47133 7.28233 6.67013 7.47761C6.86893 7.6729 7.10425 7.82714 7.36265 7.93154C7.62105 8.03594 7.89747 8.08845 8.17613 8.08608C8.45479 8.0837 8.73024 8.02648 8.98673 7.91769C9.24323 7.8089 9.47576 7.65066 9.67105 7.45201C9.86633 7.25337 10.0205 7.0182 10.1249 6.75995C10.2292 6.50169 10.2817 6.2254 10.2792 5.94685C10.2767 5.6683 10.2193 5.39295 10.1104 5.13651C10.0015 4.88007 9.84308 4.64757 9.64428 4.45229C9.44548 4.25701 9.21016 4.10276 8.95176 3.99836Z" fill="#E0EAFB"/>
+<path d="M13.5427 5.4766C13.6289 5.39635 13.7434 5.35358 13.8612 5.35769C13.9789 5.3618 14.0901 5.41245 14.1705 5.49852L14.4735 5.82339C14.5537 5.9096 14.5965 6.02413 14.5924 6.14184C14.5883 6.25955 14.5376 6.37082 14.4516 6.45122C14.3654 6.53147 14.2508 6.57424 14.1331 6.57013C14.0154 6.56602 13.9041 6.51537 13.8237 6.4293L13.5208 6.10443C13.4405 6.01822 13.3978 5.90369 13.4019 5.78598C13.406 5.66827 13.4566 5.557 13.5427 5.4766Z" fill="#DBE0E9"/>
+<path d="M17.3567 10.2182L18.0065 9.6123L18.5905 10.89L17.3567 10.2182Z" fill="#E7E7E7"/>
+<path d="M17.8616 10.7593L18.5114 10.1533L19.0954 11.431L17.8616 10.7593Z" fill="#E7E7E7"/>
+<path d="M13.6216 6.21296L14.2714 5.60693L18.0067 9.61263L17.357 10.2185L13.6216 6.21296Z" fill="#E7E7E7"/>
+<path d="M13.4248 5.00544C13.6041 4.83829 13.8855 4.84812 14.0527 5.02737L14.3557 5.35227C14.5228 5.53152 14.513 5.81298 14.3337 5.98013C14.1545 6.14729 13.873 6.13746 13.7059 5.95821L13.4029 5.63331C13.2357 5.45406 13.2456 5.1726 13.4248 5.00544Z" fill="#FF6363"/>
+<path d="M12.8982 5.09187C13.0775 4.92471 13.3589 4.93454 13.5261 5.1138L13.8291 5.43869C13.9962 5.61794 13.9864 5.8994 13.8071 6.06656C13.6279 6.23371 13.3464 6.22389 13.1793 6.04463L12.8763 5.71974C12.7091 5.54048 12.719 5.25903 12.8982 5.09187Z" fill="#FF4D4D"/>
+<path d="M17.239 9.74705L17.8888 9.14111L18.4728 10.4188L17.239 9.74705Z" fill="#FFEAB8"/>
+<path d="M17.7437 10.2881L18.3934 9.68213L18.9775 10.9598L17.7437 10.2881Z" fill="#6A6A6A"/>
+<path d="M17.239 9.74682L17.5639 9.44385L18.4728 10.4185L17.239 9.74682Z" fill="#F2C36C"/>
+<path d="M17.7437 10.2881L18.3934 9.68213L18.9775 10.9598L17.7437 10.2881Z" fill="#64583E"/>
+<path d="M13.5037 5.74119L14.1535 5.13525L17.8888 9.14087L17.239 9.74681L13.5037 5.74119Z" fill="#FFD87A"/>
+<path d="M13.1787 6.04442L13.8285 5.43848L17.5638 9.44409L16.914 10.05L13.1787 6.04442Z" fill="#FFCB4F"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.1617e88e66fbb63beb2f.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.1617e88e66fbb63beb2f.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/vendor.b5a78a47ec38c79eb330.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/vendor.b5a78a47ec38c79eb330.js.map


+ 0 - 0
dist/static/SourceHanSans-Regular.otf → src/assets/drawIcon/SourceHanSans-Regular.otf


+ 30 - 0
src/assets/icon/course/practice.svg

@@ -0,0 +1,30 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M2.38623 10.9008C2.38623 12.0768 2.61796 13.2414 3.0682 14.3279C3.51843 15.4144 4.17835 16.4017 5.01027 17.2333C5.84219 18.0649 6.82982 18.7245 7.91678 19.1746C9.00374 19.6246 10.1687 19.8563 11.3453 19.8563C12.5218 19.8563 13.6868 19.6246 14.7737 19.1746C15.8607 18.7245 16.8483 18.0649 17.6802 17.2333C18.5122 16.4017 19.1721 15.4144 19.6223 14.3279C20.0725 13.2414 20.3043 12.0768 20.3043 10.9008C20.3043 8.52566 19.3604 6.24779 17.6802 4.56831C16.0001 2.88883 13.7213 1.94531 11.3453 1.94531C8.96917 1.94531 6.69041 2.88883 5.01027 4.56831C3.33012 6.24779 2.38623 8.52566 2.38623 10.9008Z" fill="#F7FAFF"/>
+<path d="M2.38623 10.9008C2.38623 12.0768 2.61796 13.2414 3.0682 14.3279C3.51843 15.4144 4.17835 16.4017 5.01027 17.2333C5.84219 18.0649 6.82982 18.7245 7.91678 19.1746C9.00374 19.6246 10.1687 19.8563 11.3453 19.8563C12.5218 19.8563 13.6868 19.6246 14.7737 19.1746C15.8607 18.7245 16.8483 18.0649 17.6802 17.2333C18.5122 16.4017 19.1721 15.4144 19.6223 14.3279C20.0725 13.2414 20.3043 12.0768 20.3043 10.9008C20.3043 8.52566 19.3604 6.24779 17.6802 4.56831C16.0001 2.88883 13.7213 1.94531 11.3453 1.94531C8.96917 1.94531 6.69041 2.88883 5.01027 4.56831C3.33012 6.24779 2.38623 8.52566 2.38623 10.9008Z" fill="#3681FC"/>
+<path d="M5.6427 11.4946L13.5813 8.28714C13.6979 8.24001 13.8299 8.29657 13.877 8.41205L17.1895 17.046C17.2366 17.1627 17.1801 17.2947 17.0646 17.3418L9.12601 20.5493C9.00935 20.5964 8.87738 20.5398 8.83024 20.4244L5.51662 11.7904C5.46949 11.6737 5.52605 11.5418 5.6427 11.4946Z" fill="#E7E7E7"/>
+<path d="M6.09808 10.5573L14.0365 7.34986C14.0642 7.33874 14.0937 7.33319 14.1235 7.33351C14.1533 7.33383 14.1828 7.34002 14.2101 7.35174C14.2375 7.36345 14.2624 7.38045 14.2832 7.40176C14.304 7.42307 14.3204 7.44828 14.3315 7.47594L17.644 16.1104C17.6552 16.1379 17.6608 16.1674 17.6605 16.1971C17.6603 16.2268 17.6542 16.2562 17.6426 16.2836C17.631 16.3109 17.6141 16.3357 17.5929 16.3566C17.5718 16.3774 17.5467 16.3938 17.5191 16.405L9.58044 19.6122C9.5528 19.6233 9.52324 19.6289 9.49345 19.6286C9.46365 19.6283 9.43422 19.6221 9.40682 19.6104C9.37943 19.5986 9.35461 19.5816 9.33379 19.5603C9.31297 19.539 9.29656 19.5138 9.2855 19.4861L5.97306 10.8518C5.96191 10.8243 5.9563 10.7948 5.95655 10.7651C5.9568 10.7354 5.96289 10.706 5.97449 10.6786C5.98609 10.6513 6.00296 10.6265 6.02415 10.6057C6.04533 10.5848 6.07053 10.5685 6.09808 10.5573Z" fill="white"/>
+<path d="M9.71794 10.6019L13.2413 9.17842C13.2857 9.16149 13.335 9.16264 13.3785 9.18162C13.4221 9.20061 13.4565 9.23592 13.4743 9.27997C13.4921 9.32401 13.4919 9.37329 13.4738 9.41721C13.4556 9.46112 13.421 9.49618 13.3773 9.51485L9.85404 10.9384C9.83194 10.9473 9.8083 10.9518 9.78447 10.9516C9.76064 10.9514 9.73708 10.9465 9.71514 10.9372C9.6932 10.9279 9.67331 10.9144 9.65661 10.8974C9.6399 10.8804 9.62671 10.8602 9.61778 10.8381C9.60885 10.816 9.60436 10.7924 9.60457 10.7686C9.60478 10.7447 9.60968 10.7212 9.61899 10.6992C9.6283 10.6773 9.64184 10.6574 9.65884 10.6407C9.67584 10.624 9.69596 10.6108 9.71806 10.6019H9.71794ZM9.98837 11.325L11.8349 10.5791C11.8792 10.5622 11.9285 10.5633 11.9721 10.5823C12.0156 10.6013 12.05 10.6366 12.0678 10.6807C12.0856 10.7247 12.0854 10.774 12.0673 10.8179C12.0492 10.8618 12.0145 10.8969 11.9708 10.9156L10.1244 11.6615C10.08 11.6781 10.031 11.6767 9.98762 11.6577C9.94429 11.6386 9.91011 11.6034 9.89238 11.5595C9.87465 11.5156 9.87478 11.4665 9.89274 11.4227C9.91069 11.3789 9.94505 11.3439 9.98849 11.325H9.98837ZM7.71109 11.0201L8.35129 10.7613C8.42489 10.7315 8.50363 10.7166 8.58302 10.7173C8.66241 10.7179 8.74088 10.7343 8.81396 10.7653C8.88704 10.7963 8.95329 10.8414 9.00892 10.8981C9.06456 10.9547 9.10848 11.0217 9.13819 11.0954L9.39649 11.7345C9.42625 11.8081 9.44122 11.8869 9.44054 11.9662C9.43986 12.0456 9.42354 12.1241 9.39252 12.1972C9.36149 12.2703 9.31637 12.3365 9.25973 12.3921C9.20309 12.4478 9.13605 12.4917 9.06242 12.5214L8.42222 12.7801C8.34873 12.8099 8.27007 12.825 8.19073 12.8245C8.1114 12.8239 8.03296 12.8077 7.9599 12.7768C7.88685 12.7458 7.8206 12.7008 7.76497 12.6443C7.70933 12.5877 7.66539 12.5207 7.63567 12.4472L7.37749 11.808C7.31728 11.6593 7.31858 11.4928 7.38111 11.345C7.44364 11.1973 7.56229 11.0804 7.71097 11.0201H7.71109Z" fill="#E7E7E7"/>
+<path d="M8.50487 11.9268C8.54022 11.9418 8.57675 11.941 8.60939 11.9278C8.62593 11.9212 8.64097 11.9113 8.6536 11.8988C8.66624 11.8863 8.67621 11.8713 8.68292 11.8548L9.05799 10.9713C9.0708 10.9384 9.07029 10.9017 9.05656 10.8692C9.04282 10.8366 9.01695 10.8107 8.98443 10.7969C8.9519 10.7831 8.91528 10.7825 8.88233 10.7953C8.84938 10.808 8.8227 10.8331 8.80794 10.8652L8.48672 11.6241L8.08066 11.4525C8.04774 11.4397 8.01111 11.4402 7.97856 11.454C7.94601 11.4677 7.92009 11.4936 7.90629 11.5261C7.8925 11.5586 7.89192 11.5952 7.90467 11.6282C7.91742 11.6611 7.94251 11.6878 7.97461 11.7026L8.50487 11.9268Z" fill="white"/>
+<path d="M10.7136 13.0444L14.2369 11.6208C14.2814 11.6035 14.3309 11.6043 14.3748 11.6232C14.4186 11.6421 14.4533 11.6775 14.4712 11.7218C14.4891 11.7661 14.4888 11.8156 14.4705 11.8597C14.4521 11.9038 14.4171 11.9388 14.373 11.9573L10.8495 13.3809C10.8051 13.3979 10.7559 13.3967 10.7123 13.3778C10.6688 13.3588 10.6344 13.3235 10.6166 13.2794C10.5988 13.2354 10.599 13.1861 10.6171 13.1422C10.6352 13.0983 10.6698 13.0632 10.7135 13.0445L10.7136 13.0444ZM10.9841 13.7674L12.8306 13.0216C12.8749 13.0049 12.924 13.0063 12.9673 13.0253C13.0106 13.0444 13.0448 13.0796 13.0625 13.1235C13.0803 13.1674 13.0801 13.2165 13.0622 13.2603C13.0442 13.3041 13.0099 13.3391 12.9664 13.358L11.1201 14.104C11.0754 14.122 11.0255 14.1216 10.9812 14.1028C10.9369 14.084 10.9018 14.0483 10.8838 14.0037C10.8658 13.9591 10.8662 13.9091 10.885 13.8648C10.9038 13.8205 10.9395 13.7855 10.9841 13.7674ZM8.70668 13.4625L9.34699 13.2038C9.42059 13.1741 9.49932 13.1591 9.57871 13.1598C9.65809 13.1604 9.73656 13.1768 9.80964 13.2078C9.88272 13.2388 9.94897 13.2839 10.0046 13.3405C10.0602 13.3971 10.1042 13.4642 10.1339 13.5378L10.3921 14.177C10.4218 14.2506 10.4368 14.3294 10.4361 14.4088C10.4354 14.4882 10.4191 14.5666 10.3881 14.6397C10.3571 14.7128 10.312 14.779 10.2553 14.8347C10.1987 14.8903 10.1316 14.9342 10.058 14.9639L9.41781 15.2226C9.34432 15.2524 9.26566 15.2675 9.18633 15.2669C9.10701 15.2663 9.02858 15.2501 8.95554 15.2192C8.88249 15.1883 8.81626 15.1432 8.76064 15.0867C8.70501 15.0301 8.66109 14.9631 8.63138 14.8896L8.37308 14.2505C8.31287 14.1017 8.31419 13.9352 8.37674 13.7874C8.4393 13.6396 8.55797 13.5228 8.70668 13.4625Z" fill="#E7E7E7"/>
+<path d="M9.49917 14.3688C9.5344 14.3837 9.57093 14.3829 9.60369 14.3697C9.63645 14.3565 9.66331 14.3316 9.67722 14.2969L10.0522 13.4132C10.0645 13.3804 10.0637 13.3441 10.0499 13.3119C10.0361 13.2796 10.0104 13.254 9.97809 13.2403C9.94581 13.2266 9.90949 13.2259 9.87671 13.2384C9.84394 13.2508 9.81725 13.2755 9.80224 13.3072L9.48102 14.066L9.07602 13.8941C9.0431 13.8813 9.00648 13.8818 8.97392 13.8956C8.94137 13.9093 8.91545 13.9352 8.90165 13.9677C8.88786 14.0002 8.88728 14.0368 8.90003 14.0698C8.91278 14.1027 8.93787 14.1294 8.96997 14.1442L9.49905 14.3688H9.49917Z" fill="white"/>
+<path d="M11.7089 15.4876L15.2324 14.064C15.2545 14.0551 15.2782 14.0506 15.302 14.0508C15.3258 14.051 15.3494 14.0559 15.3713 14.0652C15.3933 14.0745 15.4132 14.0881 15.4299 14.1051C15.4466 14.1221 15.4598 14.1422 15.4687 14.1643C15.4776 14.1864 15.4821 14.21 15.4819 14.2338C15.4817 14.2577 15.4768 14.2812 15.4675 14.3032C15.4582 14.3251 15.4446 14.345 15.4276 14.3617C15.4106 14.3784 15.3905 14.3916 15.3684 14.4005L11.8449 15.824C11.8005 15.8409 11.7513 15.8398 11.7077 15.8208C11.6642 15.8018 11.6298 15.7665 11.612 15.7224C11.5942 15.6784 11.5944 15.6291 11.6125 15.5852C11.6306 15.5413 11.6652 15.5062 11.7089 15.4876ZM11.9796 16.2107L13.826 15.4647C13.8706 15.4467 13.9206 15.4471 13.9649 15.4659C14.0092 15.4847 14.0442 15.5204 14.0622 15.565C14.0803 15.6096 14.0798 15.6596 14.061 15.7039C14.0422 15.7482 14.0066 15.7832 13.9619 15.8012L12.1155 16.5471C12.0711 16.5641 12.0218 16.5629 11.9783 16.5439C11.9347 16.525 11.9003 16.4896 11.8825 16.4456C11.8647 16.4016 11.8649 16.3523 11.883 16.3084C11.9012 16.2644 11.9358 16.2294 11.9795 16.2107H11.9796ZM9.70208 15.9058L10.3424 15.647C10.416 15.6172 10.4947 15.6023 10.5741 15.6029C10.6535 15.6036 10.732 15.6199 10.8051 15.651C10.8782 15.682 10.9444 15.7271 11 15.7838C11.0557 15.8404 11.0996 15.9074 11.1293 15.9811L11.3875 16.6202C11.4172 16.6938 11.4322 16.7725 11.4315 16.8519C11.4309 16.9313 11.4146 17.0098 11.3836 17.0828C11.3525 17.1559 11.3074 17.2222 11.2508 17.2778C11.1942 17.3335 11.1271 17.3774 11.0535 17.4071L10.4132 17.6658C10.3397 17.6956 10.2611 17.7107 10.1818 17.7101C10.1024 17.7095 10.024 17.6933 9.95097 17.6624C9.87792 17.6315 9.81169 17.5865 9.75606 17.5299C9.70044 17.4734 9.6565 17.4064 9.62678 17.3329L9.36849 16.6937C9.30824 16.545 9.30954 16.3784 9.37209 16.2306C9.43465 16.0828 9.55335 15.9659 9.70208 15.9056V15.9058Z" fill="#E7E7E7"/>
+<path d="M10.4947 16.8115C10.53 16.8264 10.5665 16.8256 10.5993 16.8124C10.6158 16.8058 10.6309 16.796 10.6435 16.7834C10.6561 16.7709 10.6661 16.7559 10.6728 16.7395L11.0479 15.8559C11.061 15.823 11.0607 15.7862 11.047 15.7534C11.0333 15.7207 11.0074 15.6946 10.9747 15.6807C10.9421 15.6669 10.9053 15.6663 10.8722 15.6792C10.8392 15.6921 10.8125 15.7174 10.7978 15.7498L10.4766 16.5086L10.0716 16.3367C10.0387 16.3239 10.0021 16.3244 9.96953 16.3381C9.93698 16.3519 9.91105 16.3777 9.89726 16.4103C9.88346 16.4428 9.88288 16.4794 9.89564 16.5123C9.90839 16.5453 9.93348 16.572 9.96557 16.5867L10.4947 16.8115Z" fill="white"/>
+<path d="M4.50902 4.61806L5.68351 5.09259C5.79211 5.13938 5.87809 5.22681 5.92305 5.33618C5.96801 5.44555 5.96838 5.56817 5.92408 5.67781C5.87978 5.78745 5.79434 5.8754 5.68602 5.92284C5.5777 5.97028 5.45512 5.97345 5.3445 5.93167L4.17001 5.45714C4.06141 5.41036 3.97543 5.32292 3.93047 5.21355C3.88551 5.10418 3.88514 4.98156 3.92944 4.87192C3.97374 4.76228 4.05919 4.67433 4.1675 4.62689C4.27582 4.57945 4.3984 4.57628 4.50902 4.61806Z" fill="#DBE0E9"/>
+<path d="M8.9059 4.00339C7.56206 3.46044 6.0316 4.10918 5.48866 5.45301C4.94571 6.79685 5.59489 8.32622 6.93982 8.86961C8.28475 9.41299 9.81412 8.76381 10.3571 7.41998C10.8989 6.0757 10.2497 4.54633 8.9059 4.00339ZM8.73595 4.42402C9.84817 4.87338 10.3854 6.13891 9.93643 7.25003C9.48751 8.36115 8.22198 8.89834 7.10977 8.44897C5.99755 7.99961 5.46037 6.73408 5.90929 5.62296C6.35821 4.51184 7.62374 3.97465 8.73595 4.42402Z" fill="#DBE0E9"/>
+<path d="M8.71738 4.47004C8.19552 4.25919 7.61132 4.26418 7.0933 4.4839C6.57528 4.70361 6.16588 5.12006 5.95515 5.64164C5.74442 6.16321 5.74963 6.74718 5.96963 7.26507C6.18964 7.78297 6.60641 8.19238 7.12828 8.40322C7.65014 8.61407 8.23434 8.60908 8.75236 8.38937C9.27038 8.16965 9.67978 7.7532 9.89051 7.23163C10.1012 6.71005 10.096 6.12609 9.87603 5.60819C9.65602 5.09029 9.23925 4.68089 8.71738 4.47004Z" fill="#DBE0E9"/>
+<path d="M4.74535 4.14639L5.91984 4.62091C6.02844 4.6677 6.11442 4.75513 6.15938 4.8645C6.20434 4.97387 6.20471 5.09649 6.16041 5.20613C6.11611 5.31577 6.03066 5.40372 5.92235 5.45116C5.81403 5.49861 5.69145 5.50177 5.58083 5.45999L4.40634 4.98546C4.29774 4.93868 4.21176 4.85125 4.1668 4.74188C4.12184 4.63251 4.12147 4.50988 4.16577 4.40024C4.21007 4.2906 4.29551 4.20265 4.40383 4.15521C4.51214 4.10777 4.63473 4.1046 4.74535 4.14639Z" fill="white"/>
+<path d="M9.14223 3.53171C7.79839 2.98876 6.26793 3.6375 5.72499 4.98133C5.18204 6.32517 5.83122 7.85454 7.17615 8.39793C8.52108 8.94131 10.0504 8.29213 10.5934 6.9483C11.1352 5.60402 10.4861 4.07465 9.14223 3.53171ZM8.97228 3.95234C10.0845 4.4017 10.6217 5.66723 10.1728 6.77835C9.72384 7.88948 8.45831 8.42666 7.3461 7.97729C6.23388 7.52793 5.6967 6.2624 6.14562 5.15128C6.59454 4.04016 7.86007 3.50297 8.97228 3.95234Z" fill="white"/>
+<path d="M8.95176 3.99836C8.69336 3.89396 8.41694 3.84145 8.13828 3.84383C7.85962 3.8462 7.58418 3.90342 7.32768 4.01222C7.07118 4.12101 6.83865 4.27924 6.64337 4.47789C6.44808 4.67654 6.29386 4.9117 6.18952 5.16996C6.08518 5.42821 6.03276 5.7045 6.03524 5.98305C6.03773 6.2616 6.09507 6.53696 6.20401 6.79339C6.31294 7.04983 6.47133 7.28233 6.67013 7.47761C6.86893 7.6729 7.10425 7.82714 7.36265 7.93154C7.62105 8.03594 7.89747 8.08845 8.17613 8.08608C8.45479 8.0837 8.73024 8.02648 8.98673 7.91769C9.24323 7.8089 9.47576 7.65066 9.67105 7.45201C9.86633 7.25337 10.0205 7.0182 10.1249 6.75995C10.2292 6.50169 10.2817 6.2254 10.2792 5.94685C10.2767 5.6683 10.2193 5.39295 10.1104 5.13651C10.0015 4.88007 9.84308 4.64757 9.64428 4.45229C9.44548 4.25701 9.21016 4.10276 8.95176 3.99836Z" fill="#E0EAFB"/>
+<path d="M13.5427 5.4766C13.6289 5.39635 13.7434 5.35358 13.8612 5.35769C13.9789 5.3618 14.0901 5.41245 14.1705 5.49852L14.4735 5.82339C14.5537 5.9096 14.5965 6.02413 14.5924 6.14184C14.5883 6.25955 14.5376 6.37082 14.4516 6.45122C14.3654 6.53147 14.2508 6.57424 14.1331 6.57013C14.0154 6.56602 13.9041 6.51537 13.8237 6.4293L13.5208 6.10443C13.4405 6.01822 13.3978 5.90369 13.4019 5.78598C13.406 5.66827 13.4566 5.557 13.5427 5.4766Z" fill="#DBE0E9"/>
+<path d="M17.3567 10.2182L18.0065 9.6123L18.5905 10.89L17.3567 10.2182Z" fill="#E7E7E7"/>
+<path d="M17.8616 10.7593L18.5114 10.1533L19.0954 11.431L17.8616 10.7593Z" fill="#E7E7E7"/>
+<path d="M13.6216 6.21296L14.2714 5.60693L18.0067 9.61263L17.357 10.2185L13.6216 6.21296Z" fill="#E7E7E7"/>
+<path d="M13.4248 5.00544C13.6041 4.83829 13.8855 4.84812 14.0527 5.02737L14.3557 5.35227C14.5228 5.53152 14.513 5.81298 14.3337 5.98013C14.1545 6.14729 13.873 6.13746 13.7059 5.95821L13.4029 5.63331C13.2357 5.45406 13.2456 5.1726 13.4248 5.00544Z" fill="#FF6363"/>
+<path d="M12.8982 5.09187C13.0775 4.92471 13.3589 4.93454 13.5261 5.1138L13.8291 5.43869C13.9962 5.61794 13.9864 5.8994 13.8071 6.06656C13.6279 6.23371 13.3464 6.22389 13.1793 6.04463L12.8763 5.71974C12.7091 5.54048 12.719 5.25903 12.8982 5.09187Z" fill="#FF4D4D"/>
+<path d="M17.239 9.74705L17.8888 9.14111L18.4728 10.4188L17.239 9.74705Z" fill="#FFEAB8"/>
+<path d="M17.7437 10.2881L18.3934 9.68213L18.9775 10.9598L17.7437 10.2881Z" fill="#6A6A6A"/>
+<path d="M17.239 9.74682L17.5639 9.44385L18.4728 10.4185L17.239 9.74682Z" fill="#F2C36C"/>
+<path d="M17.7437 10.2881L18.3934 9.68213L18.9775 10.9598L17.7437 10.2881Z" fill="#64583E"/>
+<path d="M13.5037 5.74119L14.1535 5.13525L17.8888 9.14087L17.239 9.74681L13.5037 5.74119Z" fill="#FFD87A"/>
+<path d="M13.1787 6.04442L13.8285 5.43848L17.5638 9.44409L16.914 10.05L13.1787 6.04442Z" fill="#FFCB4F"/>
+</svg>

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

@@ -0,0 +1,3 @@
+<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="M7.69636 2.3999C8.53916 2.3999 9.34745 2.71597 9.9434 3.27858C10.5394 3.84119 10.8742 4.60425 10.8742 5.3999V6.5999H12.1982C12.3957 6.59991 12.5861 6.66936 12.7323 6.79471C12.8785 6.92006 12.97 7.09232 12.989 7.2779L12.9927 7.3499V7.5999C12.9925 7.72734 12.9409 7.84992 12.8482 7.94259C12.7555 8.03525 12.6289 8.09102 12.4941 8.09849C12.3593 8.10596 12.2266 8.06457 12.1231 7.98277C12.0196 7.90098 11.9531 7.78495 11.9371 7.6584L11.9334 7.5999H3.45929V12.5999H7.16937C7.2991 12.5999 7.42431 12.6449 7.52125 12.7263C7.61819 12.8076 7.68012 12.9198 7.6953 13.0414L7.69901 13.0999C7.69899 13.2224 7.65136 13.3406 7.56516 13.4321C7.47896 13.5236 7.36017 13.5821 7.23134 13.5964L7.16937 13.5999H3.19447C2.99698 13.5999 2.80658 13.5304 2.66038 13.4051C2.51419 13.2797 2.42269 13.1075 2.40373 12.9219L2.40002 12.8499V7.3499C2.40003 7.16346 2.4736 6.98371 2.60638 6.84569C2.73916 6.70768 2.92163 6.6213 3.11821 6.6034L3.19447 6.5999H4.51856V5.3999C4.51853 4.62371 4.83717 3.87772 5.40753 3.31867C5.97789 2.75961 6.75558 2.43101 7.57719 2.4019L7.69636 2.3999ZM7.69636 3.3999C7.13449 3.3999 6.59563 3.61062 6.19833 3.98569C5.80103 4.36076 5.57783 4.86947 5.57783 5.3999V6.5999H9.81489V5.3999C9.81489 4.88678 9.60599 4.39329 9.23138 4.0215C8.85678 3.6497 8.34514 3.42806 7.80229 3.4024L7.69636 3.3999ZM9.81516 11.1C9.81516 11.2989 9.89886 11.4897 10.0478 11.6303C10.1968 11.771 10.3989 11.85 10.6096 11.85C10.8203 11.85 11.0224 11.771 11.1714 11.6303C11.3204 11.4897 11.4041 11.2989 11.4041 11.1C11.4041 10.9011 11.3204 10.7103 11.1714 10.5697C11.0224 10.429 10.8203 10.35 10.6096 10.35C10.3989 10.35 10.1968 10.429 10.0478 10.5697C9.89886 10.7103 9.81516 10.9011 9.81516 11.1ZM9.10781 8.6H12.1108L13.6002 11.1L12.1108 13.6H9.10781L7.61848 11.1L9.10781 8.6ZM12.3847 11.1L11.4912 9.6H9.72695L8.83346 11.1L9.72748 12.6H11.4906L12.3847 11.1Z" fill="black" fill-opacity="0.9"/>
+</svg>

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


+ 5 - 5
src/components/classRoomHelper/component/AnnotationCanvas.vue

@@ -80,14 +80,14 @@
 					</div>
 				</div>
 
-				<!-- <div>
+				<div>
 					<el-slider
 						v-model="brushSize"
 						:min="1"
-						:max="100"
+						:max="20"
 						style="width: 100px"
 					></el-slider>
-				</div> -->
+				</div>
 
 				<!-- <div>
 					<el-color-picker
@@ -445,8 +445,8 @@ export default {
 				this.ctx.clearRect(
 					x - this.brushSize / 2,
 					y - this.brushSize / 2,
-					this.brushSize * 2,
-					this.brushSize * 2
+					this.brushSize * 3,
+					this.brushSize * 3
 				);
 			} else if (this.tempShape) {
 				this.tempCtx.clearRect(

+ 410 - 61
src/components/classRoomHelper/component/countdown.vue

@@ -86,9 +86,9 @@
 					</div>
 				</div>
 
-				<!-- <div class="c_choiceTime" v-if="type == 0">
+				<div class="c_choiceTime" v-if="type == 0">
 					<div class="c_title">
-						<span>倒计时长</span>
+						<span>快捷设置</span>
 					</div>
 					<div class="c_ct_box">
 						<span @click.stop="setCountdownTime(30)">30秒</span>
@@ -100,7 +100,7 @@
 						<span @click.stop="setCountdownTime(480)">8分钟</span>
 						<span @click.stop="setCountdownTime(600)">10分钟</span>
 					</div>
-				</div> -->
+				</div>
 
 				<div class="c_behaviorTag">
 					<div class="c_title">
@@ -431,43 +431,41 @@
 
 		<div class="c_behavior" v-if="showType == 1">
 			<div class="behaviorBack">
-				<span
-					@click.stop="changeShowType(0)"
-					>
+				<span @click.stop="changeShowType(0)">
 					<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>返回</span
+						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
+					>返回</span
 				>
-
-				<div class="c_step" ref="stepRef" v-loading="memorandumLoading">
-					<el-timeline>
-						<el-timeline-item
-							v-for="(item, index) in memorandumList"
-							:key="index"
-							:timestamp="item.time"
-						>
-							<div v-html="item.text"></div>
-							<!-- <span v-html="activity.content"></span> -->
-						</el-timeline-item>
-					</el-timeline>
-				</div>
+			</div>
+			<div class="c_step" ref="stepRef" v-loading="memorandumLoading">
+				<el-timeline>
+					<el-timeline-item
+						v-for="(item, index) in showMemorandumList"
+						:class="item.color"
+						:key="index"
+						:timestamp="item.time"
+						size="large"
+					>
+						<span v-html="item.textList.join(',')"></span>
+					</el-timeline-item>
+				</el-timeline>
 			</div>
 		</div>
 		<mini-audio
@@ -502,6 +500,7 @@ export default {
 		return {
 			userid: this.$route.query.userid,
 			courseId: this.$route.query.courseId,
+			tcid2: this.$route.query.tcid,
 			showType: 0,
 			sourceUrl:
 				"https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E8%AE%A1%E6%97%B6%E9%9F%B3%E4%B9%901721355956636.mp3",
@@ -604,6 +603,151 @@ export default {
 				_result.s2 = seconds;
 			}
 
+			return _result;
+		},
+		showMemorandumList() {
+			let _result = [];
+
+			let _time1 = ""; //_interval1之内的时间
+			let _time2 = ""; //_interval2之内的时间
+			let _type = "blue"; //要展示的颜色
+			let _interval1 = 300; //行为间隔  s
+			let _interval2 = 10; //行为间隔  s
+			let _previousBehavior = "";
+			let _resultTemplate = [];
+			let _topic = "";
+
+			this.memorandumList.forEach((item, index) => {
+				if (index == 0) {
+					_time1 = item.time
+					_time2 = item.time
+					_type = "blue";
+					return _result.push({
+						textList: [item.text],
+						time: item.time,
+						color: _type,
+					});
+				}
+
+				if (this.isMoreThanSeconds(item.time,_time1,_interval1)) {
+					//切换颜色
+					_type = _type == "blue" ? "green" : "blue";
+					_time1 = item.time;
+				}
+
+				//针对查看学生的作业情况
+				if (_result[_result.length - 1].textList.length) {
+					if (
+						_result[_result.length - 1].textList[
+							_result[_result.length - 1].textList.length - 1
+						].indexOf("的作业") === -1 &&
+						item.text.indexOf("的作业") !== -1
+					) {
+						return _result.push({
+							textList: [item.text],
+							time: item.time,
+							color: _type,
+						});
+					} else if (
+						_result[_result.length - 1].textList[
+							_result[_result.length - 1].textList.length - 1
+						].indexOf("的作业") !== -1 &&
+						item.text.indexOf("的作业") !== -1
+					) {
+						return _result[_result.length - 1].textList.push(item.text);
+					}else if(_result[_result.length - 1].textList[
+							_result[_result.length - 1].textList.length - 1
+						].indexOf("的作业") !== -1 && item.text.indexOf("的作业") == -1){
+							return _result.push({
+							textList: [item.text],
+							time: item.time,
+							color: _type,
+						});
+					}
+				}
+
+				//针对任务面板做题的操作情况
+				if (
+					item.text.match(/<span class=['"]variable['"]>第(.*?)题<\/span>/g) !=
+					null
+				) {
+					let _match = item.text.match(
+						/<span class=['"]variable['"]>(.*?)<\/span>/
+					);
+					let _matchTopic = _match[1];
+					if (
+						_result[_result.length - 1].textList[
+							_result[_result.length - 1].textList.length - 1
+						].match(/<span class=['"]variable['"]>第(.*?)题<\/span>/g) == null
+					) {
+						_topic = _matchTopic;
+						return _result.push({
+							textList: [item.text],
+							time: item.time,
+							color: _type,
+						});
+					} else {
+						if (_topic == _matchTopic) {
+							//同一题
+							return _result[_result.length - 1].textList.push(item.text);
+						} else {
+							_topic = _matchTopic;
+							return _result.push({
+								textList: [item.text],
+								time: item.time,
+								color: _type,
+							});
+						}
+					}
+				} else if (
+					_result[_result.length - 1].textList[
+						_result[_result.length - 1].textList.length - 1
+					].match(/<span class=['"]variable['"]>第(.*?)题<\/span>/g)
+				) {
+					return _result.push({
+						textList: [item.text],
+						time: item.time,
+						color: _type,
+					});
+				}
+
+				if (this.isMoreThanSeconds(item.time,_time2,_interval2)) {
+					_time2 = item.time
+					//十秒过了
+					_result.push({
+						textList: [item.text],
+						time: item.time,
+						color: _type,
+					});
+				} else {
+					_result[_result.length - 1].textList.push(`${item.text}`);
+				}
+			});
+			_result.forEach((i) => {
+				if (i.textList.every((ei) => ei.indexOf("的作业") !== -1)) {
+					let _useSet = new Set();
+					i.textList.forEach((i2) => {
+						let _userMatch = i2.match(
+							/<span class=['"]variable['"]>(.*?)<\/span>的作业/
+						);
+						if (_userMatch) {
+							_useSet.add(_userMatch[1]);
+						}
+					});
+					if (Array.from(_useSet).length > 1) {
+						i.textList = this.lookWork(i.textList);
+					} else {
+						i.textList = this.lookWork2(i.textList);
+					}
+				} else if (
+					i.textList.every((ei) =>
+						ei.match(/<span class=['"]variable['"]>第(.*?)题<\/span>/g)
+					)
+				) {
+					i.textList = this.lookTask(i.textList);
+				}
+			});
+
 			return _result;
 		},
 	},
@@ -622,15 +766,186 @@ export default {
 		},
 	},
 	methods: {
+		lookWork(data) {
+			const taskTypes = {
+				查看作业: new Set(),
+				进行点赞: new Set(),
+				进行评论: new Set(),
+				进行评分: new Set(),
+			};
+
+			let _result = [];
+
+			const viewRegex = /查看<span class=['"]variable['"]>(.*?)<\/span>的作业/g;
+			const likeRegex =
+				/对<span class=['"]variable['"]>(.*?)<\/span>的作业进行<span class=['"]btn['"]>点赞<\/span>/g;
+			const commentRegex =
+				/对<span class=['"]variable['"]>(.*?)<\/span>的作业进行<span class=['"]btn['"]>评论<\/span>/g;
+			const markRegex =
+				/对<span class=['"]variable['"]>(.*?)<\/span>的作业进行<span class=['"]btn['"]>评分<\/span>/g;
+			data.forEach((str) => {
+				if (viewRegex.test(str)) {
+					this.extractText(str, viewRegex).forEach((item) =>
+						taskTypes["查看作业"].add(item)
+					);
+				} else if (likeRegex.test(str)) {
+					this.extractText(str, likeRegex).forEach((item) =>
+						taskTypes["进行点赞"].add(item)
+					);
+				} else if (commentRegex.test(str)) {
+					this.extractText(str, commentRegex).forEach((item) =>
+						taskTypes["进行评论"].add(item)
+					);
+				} else if (markRegex.test(str)) {
+					this.extractText(str, markRegex).forEach((item) =>
+						taskTypes["进行评分"].add(item)
+					);
+				}
+			});
+
+			if (Array.from(taskTypes["查看作业"]).length > 0) {
+				_result.push(
+					`查看<span class='variable'>${Array.from(taskTypes["查看作业"]).join(
+						","
+					)}</span>的作业`
+				);
+			}
+			if (Array.from(taskTypes["进行点赞"]).length > 0) {
+				_result.push(
+					`对<span class='variable'>${Array.from(taskTypes["进行点赞"]).join(
+						","
+					)}</span>的作业进行<span class="btn">点赞</span>`
+				);
+			}
+			if (Array.from(taskTypes["进行评论"]).length > 0) {
+				_result.push(
+					`对<span class='variable'>${Array.from(taskTypes["进行评论"]).join(
+						","
+					)}</span>的作业进行<span class="btn">评论</span>`
+				);
+			}
+
+			if (Array.from(taskTypes["进行评分"]).length > 0) {
+				_result.push(
+					`对<span class='variable'>${Array.from(taskTypes["进行评分"]).join(
+						","
+					)}</span>的作业进行<span class="btn">评分</span>`
+				);
+			}
+
+			return _result;
+		},
+		lookWork2(data) {
+			// 用于存储结果
+			let result = [];
+			// 用于跟踪 variable 和对应的 btn 操作
+			let map = new Map();
+
+			data.forEach((item) => {
+				// 提取 variable
+				let variableMatch = item.match(
+					/<span class=["']variable["']>(.*?)<\/span>/
+				);
+				// 提取 btn
+				let btnMatch = item.match(/<span class=["']btn["']>(.*?)<\/span>/);
+
+				if (variableMatch) {
+					let variable = variableMatch[1];
+					if (btnMatch) {
+						let btn = btnMatch[1];
+
+						if (!map.has(variable)) {
+							map.set(variable, []);
+						}
+
+						// 存储 btn 操作
+						map.get(variable).push(btn);
+					} else {
+						// 如果没有 btn 操作,直接推入结果
+						result.push(item);
+					}
+				}
+			});
+
+			// 构建结果数组
+			map.forEach((btns, variable) => {
+				// 构建新的字符串
+				let newString = `对<span class="variable">${variable}</span>的作业<span class="btn">${btns.join(
+					","
+				)}</span>`;
+				result.push(newString);
+			});
+
+			return Array.from(new Set(result));
+		},
+
+		lookTask(data) {
+			// 创建一个对象来存储 variable 和对应的操作
+			let map = {};
+			let arr = Array.from(new Set(data));
+			arr.forEach((item) => {
+				// 提取 variable 和操作部分
+				let variableMatch = item.match(
+					/<span class=["']variable["']>(.*?)<\/span>/
+				);
+				let operationMatch = item.match(/<\/span>(.*?)$/);
+
+				if (variableMatch && operationMatch) {
+					let variable = variableMatch[1];
+					let operation = operationMatch[1];
+
+					if (!map[variable]) {
+						map[variable] = [];
+					}
+
+					// 将操作部分去掉前面的 "的" 字符串,并添加到 map 中
+					map[variable].push(operation.replace(/^的/, ""));
+				}
+			});
+
+			// 构建结果数组
+			let result = [];
+			for (let variable in map) {
+				// 将操作部分合并成一个字符串
+				let combinedOperations = map[variable].join("、");
+				result.push(
+					`查看<span class="variable">${variable}</span>的<span class="btn">${combinedOperations}</span>`
+				);
+			}
+
+			return result;
+		},
+
+		extractText(htmlString, regex) {
+			const matches = htmlString.match(regex);
+			return matches ? matches.map((match) => match.replace(regex, "$1")) : [];
+		},
+
+		isMoreThanSeconds(time1, time2,exceed) {
+  // 将时间字符串转换为 Date 对象
+  let date1 = new Date(time1);
+  let date2 = new Date(time2);
+
+  // 获取时间戳(毫秒)
+  let timestamp1 = date1.getTime();
+  let timestamp2 = date2.getTime();
+
+  // 计算两个时间戳的差异(秒)
+  let diffInSeconds = Math.abs(timestamp2 - timestamp1) / 1000;
+
+  // 判断差异是否超过 10 秒
+  return diffInSeconds > exceed;
+},
+
 		insertMemorandum(_html) {
-			return;
+			// return;
 			//保存行为操作
 			//variable
 			//btn
 			let params = [
 				{
 					uid: this.userid,
-					courseId: this.courseId,
+					courseId: this.courseId+(this.tcid2?this.tcid2:""),
 					content: _html,
 				},
 			];
@@ -753,7 +1068,7 @@ export default {
 				}, 1000);
 				let timeShow = `${this.countdownTimeShow.m1}${this.countdownTimeShow.m2}分钟${this.countdownTimeShow.s1}${this.countdownTimeShow.s2}秒`;
 				this.insertMemorandum(
-					`设置<span class="variable"></span><span class="btn">倒计时${timeShow}</span>${
+					`设置<span class="variable">${timeShow}</span><span class="btn">倒计时</span>${
 						this.choiceBehavior.length > 0
 							? ",用于" +
 							  '<span class="btn">' +
@@ -770,7 +1085,7 @@ export default {
 			this.isCountdown = false;
 			this.$parent.type = 1;
 			this.$parent.itemType = 3;
-			this.changeShowType(0)
+			this.changeShowType(0);
 			if (this.$refs.audioRef.playing && this.sourceActive) {
 				this.$refs.audioRef.pause();
 			}
@@ -969,7 +1284,7 @@ Instruction: Based on the context, follow "Format example", write content
 在以下课堂中,如果老师设置一个倒计时,他可能想开展哪些教学活动?每个教学活动使用4个字,进行简洁精确的描述,请返回所有可能的行为名称,不需要额外的解释。请返回最有可能的12个活动类
 
 ##Format example
-["小组讨论","小组汇报","动手实验","课堂游戏","自主学习","作品展示","学生演讲","学生分享","随堂练习","快速问答","阅读资料","观察记录"]
+["小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报","小组汇报"]
 
 ##课堂内容
 ${_textData}
@@ -982,6 +1297,7 @@ ${_textData}
 				message: [{ type: "text", text: _msg }],
 				session_name: uuidv4(),
 				file_ids: this.fileId,
+				model: "gpt-4o-2024-08-06",
 			};
 			this.ajax
 				// .post("https://gpt4.cocorobo.cn/chat", params)
@@ -1031,11 +1347,10 @@ ${_textData}
 				});
 		},
 		selectMemorandum() {
-			return;
-			this.memorandumLoading = false;
+			this.memorandumLoading = true;
 			let params = {
 				uid: this.userid,
-				courseId: this.courseId,
+				courseId: this.courseId+(this.tcid2?this.tcid2:""),
 			};
 			this.memorandumList = [];
 			this.ajax
@@ -1046,12 +1361,17 @@ ${_textData}
 				.then((res) => {
 					let _data = res.data[0];
 					if (_data.length) {
+						// let _result  =  _data;
+						// console.log(_result)
+
 						this.memorandumList = _data;
 					} else {
 						this.memorandumList = [];
 					}
+					this.$nextTick(() => {
+						this.$refs.stepRef.scrollTop = this.$refs.stepRef.scrollHeight;
+					});
 					this.memorandumLoading = false;
-					console.log(res);
 				})
 				.catch((err) => {
 					console.log(err);
@@ -1082,14 +1402,15 @@ ${_textData}
 	position: relative;
 	display: flex;
 	flex-direction: column;
-	justify-content: space-between;
+	justify-content: flex-end;
 }
 
 .c_tb_top {
 	width: 100%;
 	max-height: calc(100% - 60px);
-	margin: auto;
+	margin-top: auto;
 	overflow-x: hidden;
+	padding-bottom: 30px;
 }
 
 .c_behavior {
@@ -1289,7 +1610,7 @@ ${_textData}
 	height: 30px;
 	border-radius: 20px;
 	box-sizing: border-box;
-	border: solid 1px #d0d0d0;
+	border: 0.5px solid #E0EAFB;
 	margin: 10px 2%;
 	background-color: #fff;
 	display: flex;
@@ -1297,6 +1618,9 @@ ${_textData}
 	justify-content: center;
 	transition: 0.1s;
 	cursor: pointer;
+	box-shadow: 0px 2px 5px 0px #1D398314;
+	box-shadow: 0.5px 0.5px 10px 2px #1D39830D;
+
 }
 
 .c_ct_box > span:hover {
@@ -1468,38 +1792,63 @@ ${_textData}
 	box-sizing: border-box;
 	overflow: auto;
 }
+
+.c_step >>> .el-timeline .btn {
+	color: #2972f4;
+}
+
+.c_step >>> .el-timeline .variable {
+	color: #319b62;
+}
+
+.c_step >>> .blue .el-timeline-item__tail{
+	border-left: 6px solid #B3CCFA !important;
+}
+
+.c_step >>> .green .el-timeline-item__tail{
+	border-left: 6px solid #B7EACB !important;
+}
+
+.c_step >>> .el-timeline-item__node{
+	background-color: #FFFFFF;
+	box-sizing:border-box;
+	border:2px solid #B3CCFA;
+	position: relative;
+	left: -0.5px;
+}
+
 .c_s_item {
 	display: flex;
 	justify-content: center;
 	align-items: center;
 }
 
-.ActivityMemo{
+.ActivityMemo {
 	width: 100%;
 	height: 30px;
 	display: flex;
 	align-items: center;
 	margin-top: 20px;
-	
+
 	box-sizing: border-box;
 	padding-left: 20px;
 }
 
-.ActivityMemo>span{
+.ActivityMemo > span {
 	display: flex;
 	align-items: center;
 	cursor: pointer;
 }
 
-.ActivityMemo>span>svg{
+.ActivityMemo > span > svg {
 	margin-left: 5px;
 	position: relative;
 	top: 1px;
-	width:20px;
-	height:20px
+	width: 20px;
+	height: 20px;
 }
 
-.behaviorBack{
+.behaviorBack {
 	width: 100%;
 	height: 30px;
 	display: flex;
@@ -1509,19 +1858,19 @@ ${_textData}
 	padding-left: 20px;
 }
 
-.behaviorBack>span{
+.behaviorBack > span {
 	display: flex;
 	align-items: center;
 	cursor: pointer;
 	width: 80px;
 }
 
-.behaviorBack>span>svg{
+.behaviorBack > span > svg {
 	margin-right: 5px;
 	position: relative;
 	top: 1px;
-	width:20px;
-	height:20px;
+	width: 20px;
+	height: 20px;
 	transform: rotate(180deg);
 }
 </style>

+ 57 - 13
src/components/classRoomHelper/component/languageAssistant.vue

@@ -25,11 +25,14 @@
 			:style="show ? '' : 'height:calc(100% - 170px - 200px - 40px)'"
 			ref="messageRef"
 		>
-			<div class="la_m_talk" v-if="show">
+			<div class="la_m_talk" v-if="show && openMessage">
 				<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 class="la_m_talk" v-if="!openMessage">
+				<div>你好,我是可可同学,是个小小百事通,你有什么想和我聊一聊?</div>
+			</div>
 		</div>
 		<div class="la_btn">
 			<div class="la_b_noTel" v-if="!show">
@@ -89,7 +92,8 @@
 					v-else
 				>
 					<span class="readAloud" @click.stop="talkAllText">
-						<svg
+						<img :src="require('../../../assets/icon/course/start2.png')" />
+						<!-- <svg
 							t="1721117381559"
 							viewBox="0 0 1024 1024"
 							version="1.1"
@@ -102,7 +106,7 @@
 								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>
+						</svg> -->
 					</span>
 				</el-tooltip>
 
@@ -144,6 +148,9 @@
 					</span>
 				</el-tooltip>
 			</div>
+			<div class="openMessage">
+				<el-checkbox v-model="openMessage">开启字幕</el-checkbox>
+			</div>
 		</div>
 		<!-- 录音转文字 -->
 		<iframe
@@ -183,6 +190,7 @@ export default {
 			talkLoading: false,
 			source: null,
 			talkTextList: [],
+			openMessage:true,
 		};
 	},
 	computed: {
@@ -206,8 +214,8 @@ export default {
 			this.talkText();
 		},
 		recordStart(_text) {
-			// this.show = true;
-			// this.showIndex = 0;
+			this.show = true;
+			this.showIndex = 0;
 			// return
 			var OpenCC = require("opencc-js");
 			let converter = OpenCC.Converter({
@@ -260,6 +268,7 @@ export default {
 								// return setTimeout(()=>{
 								this.show = false;
 								this.showTextIndex = 3;
+								this.showIndex = 2;
 								this.aiStatus = 2;
 								this.aiText = "";
 								this.userText = "";
@@ -306,6 +315,7 @@ export default {
 									session_name: _uuid + "-qgt",
 									uid: _uuid,
 									file_ids: [],
+									model: "gpt-4o-2024-08-06",
 								};
 								this.ajax
 									// .post("https://claude3.cocorobo.cn/chat", params)
@@ -326,6 +336,7 @@ export default {
 											this.chatLoading = false;
 											this.aiStatus = 0;
 											this.showTextIndex = 0;
+											this.showIndex = 0;
 											this.aiText = "对不起,我无法理解您的问题,请重新提问";
 											// this.timer = setTimeout(() => {
 											//   this.showTextIndex = 3;
@@ -340,6 +351,7 @@ export default {
 										this.chatLoading = false;
 										this.aiStatus = 0;
 										this.showTextIndex = 0;
+										this.showIndex = 0;
 										this.aiText = "对不起,我无法理解您的问题,请重新提问";
 										// this.timer = setTimeout(() => {
 										//   this.showTextIndex = 3;
@@ -359,9 +371,8 @@ export default {
 			};
 		},
 		stopRecord() {
-			// this.show = false;
-			// this.showIndex = 2;
-			// return
+			this.show = false;
+			this.showIndex = 2;
 			let iiframe = this.$refs["iiframe"];
 			iiframe.contentWindow.window.document
 				.getElementById("scenarioStopButton")
@@ -380,6 +391,7 @@ export default {
 				if (this.talkLoading) {
 					this.$refs.iiframe2.contentWindow.closesynthesizer();
 				}
+				this.$parent.changeItemType(1)
 				this.userText = "";
 				this.aiText = "";
 			};
@@ -564,6 +576,9 @@ export default {
 			this.stopTalk();
 		},
 	},
+	mounted() {
+		this.recordStart()
+	},
 };
 </script>
 
@@ -614,8 +629,8 @@ export default {
 }
 
 .la_m_talk > div {
-	background: #bfbfbf;
-	padding: 10px;
+	/* padding: 10px; */
+	padding: 20px 24px 20px 24px;
 	box-sizing: border-box;
 	border-radius: 12px;
 	text-align: left;
@@ -624,9 +639,12 @@ export default {
 }
 
 .la_btn {
-	height: 200px;
+	height: 220px;
 	width: 100%;
 	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
 }
 
 .la_b_noTel {
@@ -674,7 +692,7 @@ img {
 	margin: 0 30px;
 }
 
-.readAloud {
+/* .readAloud {
 	border-radius: 100%;
 	background-color: #517291;
 	cursor: pointer;
@@ -689,5 +707,31 @@ img {
 	width: 22px;
 	height: 22px;
 	fill: #fff;
-}
+} */
+
+ .openMessage{
+	width: 100%;
+	height: auto;
+	display: flex;
+	justify-content: center;
+	margin-top: -30px;
+ }
+
+ .openMessage >>> .el-checkbox{
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	color: #fff !important;
+ }
+
+ .openMessage >>> .el-checkbox> .el-checkbox__label{
+	color: #fff !important;
+ }
+ .openMessage >>> .el-checkbox>.el-checkbox__input> .el-checkbox__inner{
+	color: #fff !important;
+	background: none !important;
+	border-color: #fff !important;
+	border-radius: 100% !important;
+ }
+
 </style>

+ 21 - 13
src/components/classRoomHelper/component/levitatedSphere.vue

@@ -2,19 +2,19 @@
   <div class="levitatedSphere" v-show="show">
     <div :class="['ls_hello']" v-show="showIndex == 0">
       <el-image
-        style="width: 100%; height: 100%"
+        style="width: 110%; height: 110%"
         v-show="aiStatus == 1"
         :src="require('../../../assets/icon/course/aiTalk.svg')"
         fit="fill"
       ></el-image>
       <el-image
-        style="width: 100%; height: 100%"
+        style="width: 110%; height: 110%"
         v-show="aiStatus == 2"
         :src="require('../../../assets/icon/course/aiVanish.svg')"
         fit="fill"
       ></el-image>
       <el-image
-        style="width: 100%; height: 100%;transform: scale(1.3,1.3);"
+        style="width: 110%; height: 110%;transform: scale(1.3,1.3);"
         v-show="aiStatus == 0"
         :src="require('../../../assets/icon/course/aiWait2.svg')"
         fit="fill"
@@ -101,9 +101,14 @@ export default {
         "languageOptions"
       ).selectedIndex = 2; //普通话
       iiframe.contentWindow.testdoContinuousPronunciationAssessment();
-      this.$message.success("已开启语音助手,请说“可可同学”来唤醒");
+      // this.$message.success("已开启语音助手,请说“可可同学”来唤醒");
       this.$parent.changeRecordType(1);
       this.isOpen = true;
+      this.aiText = "您好,我是小可,有什么可以帮助您的?";
+      this.aiStatus = 0;
+      this.showIndex = 0;
+      this.show = true;
+      console.log("已唤醒");
       iiframe.contentWindow.onRecognizedResult = e => {
         let _msg = converter(e.privText);
         // let _msg2 = e.privText;
@@ -112,14 +117,16 @@ export default {
         console.log(_msg);
         // _msg = converter(_msg)
         if (!_msg) return console.log("输出为空");
-        if (_msg.indexOf(converter("可可同学")) != -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(converter("可可同学")) != -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(converter("可可同学")) != -1 &&
             _msg.indexOf(converter("停止")) != -1
@@ -192,7 +199,8 @@ export default {
                   message: this.userText,
                   session_name: _uuid + "-qgt",
                   uid: _uuid,
-                  file_ids: []
+                  file_ids: [],
+									model: "gpt-4o-2024-08-06",
                 };
                 this.ajax
                   // .post("https://claude3.cocorobo.cn/chat", params)

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 664 - 230
src/components/classRoomHelper/component/searchArea.vue


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 103 - 18
src/components/classRoomHelper/component/taskArea.vue


+ 63 - 13
src/components/classRoomHelper/index.vue

@@ -40,7 +40,7 @@
     </div>
     <div class="ch_nav_box">
       <div class="ch_nav_box_top">
-        <div @click="changeFold(!fold)" ref="foldBtnRef">
+        <div @click.stop="changeFold(!fold)" ref="foldBtnRef">
           <el-tooltip
             class="item"
             effect="dark"
@@ -50,7 +50,7 @@
             <img
               :src="require('../../assets/icon/course/foldIcon.svg')"
               alt=""
-              :style="`${fold ? 'transform: rotate(90deg);' : ''}`"
+							:class="[!fold?'':'foldActive']"
             />
           </el-tooltip>
         </div>
@@ -224,9 +224,8 @@
         </div>
       </div>
     </div>
-    <div v-show="fold" class="itemFold" ref="itemFoldRef">
+    <div v-if="fold" class="itemFold" ref="itemFoldRef"  v-click-outside="handleBlur">
       <div @click="$emit('backPage')">
-       
           <img :src="require('../../assets/icon/course/return.png')" alt="" />
 				<span>返回</span>
       </div>
@@ -237,7 +236,7 @@
       </div>
 
       <div @click="$emit('authority')" v-if="tType == 1 || tType == 4">
-          <img :src="require('../../assets/icon/course/setting.png')" alt="" />
+          <img :src="require('../../assets/icon/course/setting2.svg')" alt="" />
 					<span>权限</span>
       </div>
     </div>
@@ -260,6 +259,25 @@ import timepiece from "./component/timepiece.vue";
 import countdown from "./component/countdown.vue";
 import AnnotationCanvas from "./component/AnnotationCanvas.vue";
 import languageAssistant from "./component/languageAssistant.vue";
+// 自定义指令,用于处理点击外部区域的事件
+const clickOutside = {
+  bind(el, binding) {
+    // 在元素上绑定一个点击事件监听器
+    el.clickOutsideEvent = function (event) {
+      // 检查点击事件是否发生在元素的内部
+      if (!(el === event.target || el.contains(event.target))) {
+        // 如果点击事件发生在元素的外部,则触发指令绑定的方法,将点击的event数据传过去
+        binding.value(event);
+      }
+    };
+    // 在文档上添加点击事件监听器
+    document.addEventListener("click", el.clickOutsideEvent);
+  },
+  unbind(el) {
+    // 在元素上解除点击事件监听器
+    document.removeEventListener("click", el.clickOutsideEvent);
+  },
+};
 export default {
   emits: [
     "refresh",
@@ -270,6 +288,9 @@ export default {
     "stopRecording",
     "startRecording"
   ],
+	directives: {
+    "click-outside": clickOutside, // 注册自定义指令
+  },
   components: {
     searchArea,
     taskArea,
@@ -286,7 +307,7 @@ export default {
       default: () => {}
     },
     tType: {
-      type: Number,
+      type:String,
       default: 0
     },
     navList: {
@@ -322,6 +343,7 @@ export default {
     return {
       userid: this.$route.query.userid,
       courseId: this.$route.query.courseId,
+			tcid2: this.$route.query.tcid,
       type: 0,
       itemType: 0, //0--无  1-搜索  2-任务 3-对话
       fileId: [],
@@ -338,6 +360,10 @@ export default {
     this.getFileId();
   },
   methods: {
+		handleBlur(){
+			// console.log(this.fold)
+			this.fold = !this.fold;
+		},
     changeAnnotationCanvasShow(newValue) {
       this.AnnotationCanvasShow = newValue;
     },
@@ -352,7 +378,7 @@ export default {
       let params = [
         {
           uid: this.userid,
-          courseId: this.courseId,
+          courseId: this.courseId+(this.tcid2?this.tcid2:""),
           content: _html
         }
       ];
@@ -382,6 +408,9 @@ export default {
     openSetting() {
       this.type = this.type == 1 ? 0 : 1;
       this.$nextTick(() => {
+				if(this.type==1){
+					this.$parent.mlDialog = false
+				}
         this.setWidth();
       });
     },
@@ -481,22 +510,20 @@ export default {
     changeFold(newValue) {
       // this.$message.info("展开");
       this.fold = newValue;
-			console.log(this.$refs.foldBtnRef)
-			let e1 = this.$refs.foldBtnRef.getBoundingClientRect();
+			this.$nextTick(()=>{
+				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();
@@ -671,4 +698,27 @@ export default {
 .itemFold > div > span{
 	margin-left:10px;
 }
+
+@media screen and (max-height: 820px) {
+	.ch_nav_box_bottom > div {
+		height: auto;
+		padding: 8px 0;
+	}
+
+	.ch_nav_box_middle_item{
+		height: auto;
+		padding: 8px 0;
+	}
+
+	.ch_nav_box_top > div{
+		height: auto;
+		padding: 8px 0;
+	}
+}
+
+.foldActive{
+	background-color: #F0F2F5;
+	padding: 10px;
+	border-radius: 10px;
+}
 </style>

+ 28 - 0
src/components/courseDetail.vue

@@ -1188,6 +1188,26 @@ export default {
     };
   },
   methods: {
+		insertMemorandum(_html,tcid=""){//保存行为操作
+			//variable
+			//btn
+			let params = [{
+				uid:this.userid,
+				courseId:this.id+tcid,
+				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)
+			})
+		},
     handleClose(done) {
       done();
     },
@@ -1209,6 +1229,13 @@ export default {
       this.$router.push(path);
     },
     gotoCourse(id) {
+			if(!id){
+				this.insertMemorandum(`开始为<span class='variable'>全部班级</span>授课`)
+			}else{
+				let _classData = this.classList.find(item=>item.id == id)
+				this.insertMemorandum(`开始为<span class='variable'>${_classData.name}</span>授课`,id)
+			}
+
       if (this.courseDetail.state == 1) {
         if (this.classList.length) {
           this.goTo(
@@ -1340,6 +1367,7 @@ export default {
     goToStudyOrDia(l) {
       if (l.length > 0) {
         this.dialogVisibleSk = true;
+				this.insertMemorandum("点击<span class='btn'>以班级授课</span>")
       } else {
 				this.getCourseDetail1().then(_=>{
 					if(this.classList.length<=0){

+ 100 - 135
src/components/easy2/commpont/markScore.vue

@@ -65,17 +65,31 @@ export default {
   computed: {
     totalScore() {
       let a = 0;
+      let isPing = 0;
       this.scoTitList.forEach(e => {
-        a += e.cog;
+        if (!e.cog && e.cog != 0) {
+          isPing += 1;
+        } else {
+          a += e.cog * 1;
+        }
       });
+
       let data = 0;
-      data = (a / this.scoTit.length).toFixed(1);
-      this.$emit("updateDocSco", {
-        val: this.toolIndex,
-        val2: this.wIndex,
-        val3: data
-      });
-    
+      if (isPing == this.scoTit.length) {
+        this.$emit("updateDocSco", {
+          val: this.toolIndex,
+          val2: this.wIndex,
+          val3: null
+        });
+      } else {
+        data = (a / this.scoTit.length).toFixed(1);
+        this.$emit("updateDocSco", {
+          val: this.toolIndex,
+          val2: this.wIndex,
+          val3: data
+        });
+      }
+
       return data;
     }
   },
@@ -95,27 +109,34 @@ export default {
       this.ajax
         .get(this.$store.state.api + "selectWorksEvaScore", params)
         .then(res => {
-          // console.log(res);
+          // console.log("res", res.data);
+
           if (res.data[0].length > 0) {
-            let data2 = [];
+            var data2 = [];
             res.data[0].forEach((val, index) => {
               if (val.task == this.task) {
                 data2 = res.data[0][index];
+                this.homeworkVal = res.data[0][index];
               }
             });
-
-            let data = JSON.parse(data2.rate);
-
-            this.scoTitList.forEach((e, index) => {
-              e.cog = 0;
-              for (const key in data) {
-                if (e.value == key) {
-                  e.cog = data[key] * 1;
+            if (data2.length == 0) {
+              this.scoTitList = JSON.parse(JSON.stringify(this.scoTit));
+            } else {
+              let data = JSON.parse(data2.rate);
+              this.scoTitList.forEach((e, index) => {
+                e.cog = null;
+                for (const key in data) {
+                  if (e.value == key) {
+                    e.cog = data[key] * 1;
+                  }
                 }
-              }
-            });
+              });
+              this.scoTitList = JSON.parse(JSON.stringify(this.scoTitList));
 
-            // console.log("this.scoTitList", this.scoTitList);
+              // console.log(this.scoTitList);
+            }
+          } else {
+            this.scoTitList = JSON.parse(JSON.stringify(this.scoTit));
           }
         })
         .catch(err => {
@@ -124,41 +145,12 @@ export default {
     },
     // 重置
     reset() {
-      console.log("this.scoTitList", this.scoTitList);
       this.scoTitList.forEach(e => {
         e.cog = 0;
+        console.log(e.cog);
       });
-      // let data = this.scoTitList.map(e => {
-      //   return e.value + ":" + e.cog;
-      // });
-      // // console.log("data", data);
-      // const processedData = {};
-
-      // data.forEach(item => {
-      //   const [key, value] = item.split(":");
-      //   processedData[key] = 0;
-      // });
-      // processedData.content = "";
-      // this.scoTitList = processedData
-      // // return console.log(processedData);
-      // let params = {
-      //   cid: this.id,
-      //   s: this.stage,
-      //   t: this.task,
-      //   rate: JSON.stringify(processedData),
-      //   uid: this.stUid
-      // };
-      // // return console.log(params);
-      // this.ajax
-      //   .get(this.$store.state.api + "updateWorksEva", params)
-      //   .then(res => {
-      //     this.getData();
-      //   })
-      //   .catch(err => {
-      //     this.$message.error("重置失败");
-      //     console.error(err);
-      //   });
     },
+
     // 老师提交评分
     submit() {
       let data = this.scoTitList.map(e => {
@@ -169,8 +161,9 @@ export default {
 
       data.forEach(item => {
         const [key, value] = item.split(":");
-        processedData[key] = Number(value);
+        processedData[key] = Number(value) ? Number(value) : 0;
       });
+
       processedData.content = "";
       // console.log(processedData);
       let params = {
@@ -188,6 +181,7 @@ export default {
             message: "评价成功",
             type: "success"
           });
+          this.$emit("refreshOther", this.toolIndex);
         })
         .catch(err => {
           this.$message.error("评价失败");
@@ -198,8 +192,12 @@ export default {
     // ai评分
     AIsubmit() {
       let tit = this.scoTit;
+      tit.forEach((e,index)=>{
+          if(!e.isai){
+            e.isai=1
+          }
+        })
       let con = JSON.parse(this.scoCon.works);
-      // this.markScoPopover = true;
       this.$emit("updateLoading", {
         val: this.toolIndex,
         val2: this.wIndex,
@@ -207,28 +205,32 @@ export default {
       });
       let _text = "";
       for (let i = 0; i < tit.length; i++) {
-        _text += `评价名称:${tit[i].value} 评价描述:${tit[i].detail} \n`;
+        if (tit[i].isai == 1) {
+          _text += `评价名称:${tit[i].value} 评价描述:${tit[i].detail} \n`;
+        }
+      }
+      let laws = ""
+      for (let i = 0; i < tit.length; i++) {
+        if(tit[i].isai == 1){
+          laws += `评价维度:${tit[i].value} 评价细则:${tit[i].rule} \n`
+        }
       }
-      // console.log(_text);
+      
+    //  console.log(_text);
       let msg = `NOTICE
-      Role: 你是一个专业的项目式学习导师,你要对学生的评价高度负责。你要根据“五级评价细则”给学生作品评分,并生成需要的JSON数据。
+      Role: 你是一个专业的项目式学习导师,你要对学生的评价高度负责。你要根据“级评价细则”给学生作品评分,并生成需要的JSON数据。
       Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
       ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
       Instruction: Based on the context, follow "Format example", write content.
 
       #Context
       ##要求
-      根据<评价细则>和<作业内容>与<作业题目>的相关性评价作业,判断该作业属于五级中的哪个等级。
-      具体的评价标准分为5级——1级,2级,3级,4级,5级。
-      1 级,没有识别问题和需求;
-      2 级,问题或需求没有被清晰理解或准确识别;
-      3 级,问题或需求的一部分被识别;
-      4 级,问题或需求的大部分被识别;
-      5 级,问题或需求都被识别。
+      根据<评价细则>和<作业内容>的相关性评价作业,判根据细则评价作业,判断该作业属于六级中的哪个等级。如果作业内容与评价细则无关,则直接评为0星。
+      
+
       
       ##评分资料
-      评价细则:${_text}
-      作业题目:${this.toolDetail}
+      评价细则:${laws}
       作业内容:${con.text}
 
       # Format example
@@ -239,48 +241,27 @@ export default {
     },
     // ai打分
     aiGet2(messages, callback) {
-      console.log(this.toolIndex,this.wIndex);
+      // console.log(this.toolIndex, this.wIndex);
       let _this = this;
-      // let parm = {
-      //   assistant_id: "6063369f-289a-11ef-8bf4-12e77c4cb76b",
-      //   message: [
-      //     {
-      //       type: "text",
-      //       text: messages.replaceAll("\n", " ").replaceAll("*", "")
-      //     }
-      //   ],
-      //   session_name: uuidv4(),
-      //   userId: this.userid,
-      //   file_ids: ""
-      // };
+
       let params = {
-        // "model": "Chat",
-        model: "gpt-3.5-turbo",
-        temperature: 0,
-        max_tokens: 4096,
-        top_p: 1,
-        frequency_penalty: 0,
-        presence_penalty: 0,
-        messages: [
-          {
-            content: messages.replaceAll("\n", " ").replaceAll("*", ""),
-            role: "user"
-          }
-        ],
-        stream: false,
-        uid: this.userid,
-        mind_map_question: ""
+        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
+        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
+        session_name: uuidv4(),
+        userId: this.userid,
+        file_ids: [],
+        model:'gpt-4o-2024-08-06'
       };
       this.ajax
-        .post("https://gpt4.cocorobo.cn/chat", params)
+        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
         .then(response => {
           let data = response.data.FunctionResponse;
           // console.log("data", data);
-          if (data.choices && data.choices.length && data.choices[0].message) {
+          if (data.message) {
             let dArray = {};
             try {
               dArray = JSON.parse(
-                data.choices[0].message.content
+                data.message
                   .replaceAll("```json", "")
                   .replaceAll("```", "")
               );
@@ -288,21 +269,18 @@ export default {
               console.log("error_________________" + error);
               try {
                 let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                // console.log("dArray666", data.choices[0].message.content);
 
-                let match = data.choices[0].message.content.match(regex);
-                // console.log("dArray2", match);
+                let match = data.message.match(regex);
                 dArray = JSON.parse(
                   match[0]
                     .replace(/\n/g, "")
                     .replace(/\s{2,}/g, "")
                     .replace(/\'/g, '"')
                 );
-                // dArray = data.choices[0].message.content
               } catch (error) {
                 try {
                   dArray = JSON.parse(
-                    data.choices[0].message.content
+                    data.message
                       .replaceAll("```json", "")
                       .replaceAll("# Solution", "")
                       .replaceAll("```", "")
@@ -323,6 +301,7 @@ export default {
             //   _this.$emit("updateLoading", {val:_this.task,val2:_this.wIndex,val3:false});
             // }
             let processedData = {};
+            // return console.log(dArray);
 
             dArray.forEach(function(item) {
               let key = Object.keys(item)[0];
@@ -331,8 +310,8 @@ export default {
             });
 
             for (const key in processedData) {
-              if (!Number.isFinite(processedData[key]*1)) {
-                processedData[key] = 0
+              if (!Number.isFinite(processedData[key] * 1)) {
+                processedData[key] = 0;
               }
             }
 
@@ -353,13 +332,13 @@ export default {
                   message: "评价成功",
                   type: "success"
                 });
-                console.log(_this.wIndex, _this.task);
+                // console.log(_this.wIndex, _this.task);
                 _this.$emit("updateLoading", {
                   val: _this.toolIndex,
                   val2: _this.wIndex,
                   val3: false
                 });
-
+                _this.$emit("refreshOther", _this.toolIndex);
                 _this.getData();
                 // _this.markScoPopover = false;
                 // _this.$emit("update:loading", false);
@@ -397,39 +376,28 @@ export default {
       let _this = this;
 
       let params = {
-        // "model": "Chat",
-        model: "gpt-3.5-turbo",
-        temperature: 0,
-        max_tokens: 4096,
-        top_p: 1,
-        frequency_penalty: 0,
-        presence_penalty: 0,
-        messages: [
-          {
-            content: messages.replaceAll("\n", " ").replaceAll("*", ""),
-            role: "user"
-          }
-        ],
-        stream: false,
-        uid: this.userid,
-        mind_map_question: ""
+      
+        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
+        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
+        session_name: uuidv4(),
+        userId: this.userid,
+        file_ids: [],
+        model:'gpt-4o-2024-08-06'
       };
       return new Promise(resolve => {
         this.ajax
-          .post("https://gpt4.cocorobo.cn/chat", params)
+          .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
           .then(response => {
             let data = response.data.FunctionResponse;
             // console.log(data);
 
             if (
-              data.choices &&
-              data.choices.length &&
-              data.choices[0].message
+              data.message
             ) {
               let dArray = {};
               try {
                 dArray = JSON.parse(
-                  data.choices[0].message.content
+                  data.message
                     .replaceAll("```json", "")
                     .replaceAll("```", "")
                 );
@@ -438,7 +406,7 @@ export default {
                 try {
                   let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
 
-                  let match = data.choices[0].message.content.match(regex);
+                  let match = data.message.match(regex);
                   // console.log("dArray2", match);
                   dArray = JSON.parse(
                     match[0]
@@ -450,7 +418,7 @@ export default {
                 } catch (error) {
                   try {
                     dArray = JSON.parse(
-                      data.choices[0].message.content
+                      data.message
                         .replaceAll("```json", "")
                         .replaceAll("# Solution", "")
                         .replaceAll("```", "")
@@ -473,16 +441,13 @@ export default {
               });
 
               for (const key in processedData) {
-                if (!Number.isFinite(processedData[key]*1)) {
-                  processedData[key] = 0
+                if (!Number.isFinite(processedData[key] * 1)) {
+                  processedData[key] = 0;
                 }
               }
 
-
-
               processedData.content = "";
 
-
               let params = {
                 cid: _this.id,
                 s: stage,

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 333 - 84
src/components/easy2/studyStudent.vue


+ 113 - 51
src/components/easy3/studyStudent.vue

@@ -1372,7 +1372,7 @@
                     <el-button
                       type="primary"
                       v-if="tool.tool[0] == 32"
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="addImg($event)"
                       >上传作业<input
                         type="file"
@@ -1383,7 +1383,7 @@
                     <el-button
                       type="primary"
                       v-if="tool.tool[0] == 15"
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="openWordCloud(toolIndex)"
                       >生成词云</el-button
                     >
@@ -1392,7 +1392,7 @@
                       v-if="
                         tool.tool[0] == 16 && worksStudent[toolIndex].length > 0
                       "
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="uploadWorks(toolIndex)"
                       >导出作业</el-button
                     >
@@ -1437,7 +1437,7 @@
                         <div class="workImg" v-if="w.type == 0">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2155,7 +2155,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2230,7 +2230,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2305,7 +2305,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2380,7 +2380,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2455,7 +2455,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <img
@@ -2554,7 +2554,7 @@
                               <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -2738,7 +2738,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -2807,7 +2807,7 @@
                           <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2991,7 +2991,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3303,7 +3303,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3473,7 +3473,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3574,7 +3574,7 @@
                           <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -3723,7 +3723,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4364,7 +4364,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -4486,7 +4486,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4610,7 +4610,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -4658,7 +4658,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -4726,7 +4726,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -4770,7 +4770,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4894,7 +4894,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -4942,7 +4942,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -5010,7 +5010,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5054,7 +5054,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5178,7 +5178,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -5226,7 +5226,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -5294,7 +5294,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5338,7 +5338,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5461,7 +5461,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -5509,7 +5509,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -5577,7 +5577,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5621,7 +5621,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5727,7 +5727,7 @@
                         <div class="workImg" v-if="w.type == 0">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <img
@@ -5864,7 +5864,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6433,7 +6433,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6664,7 +6664,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6884,7 +6884,7 @@
                               <div class="workImg" v-if="w.type == 0">
                                 <img
                                   :src="w.works"
-                                  @click="previewImg(w.works)"
+                                  @click="previewImg(w.works,w)"
                                   alt
                                 />
                                 <div
@@ -7084,7 +7084,8 @@
                                           userid,
                                           1,
                                           null,
-                                          w.isLikes
+                                          w.isLikes,
+																					w.sName
                                         )
                                       "
                                     >
@@ -8258,7 +8259,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
@@ -9831,7 +9832,8 @@
                     userid,
                     1,
                     null,
-                    commentDetail.isLikes
+                    commentDetail.isLikes,
+										commentDetail.sName
                   )
                 "
                 :src="commentDetail.isLikes == true ? likes : noLikes"
@@ -9958,7 +9960,7 @@
         >
         <el-button
           type="primary"
-          @click="addComment(commentDetail.wid, userid, 2)"
+          @click="addComment(commentDetail.wid, userid, 2,commentDetail)"
           >确 定</el-button
         >
       </div>
@@ -10488,7 +10490,7 @@
         <el-button
           type="primary"
           v-if="courseDetail.userid == userid"
-          @click="scoreWork(commentDetail.wid)"
+          @click="scoreWork(commentDetail.wid,commentDetail.sName)"
           >确 定
         </el-button>
       </span>
@@ -12438,6 +12440,28 @@ export default {
 				this.oidArray = oidArray;
 			})
 		},
+		insertMemorandum(_html){//保存行为操作
+			//variable
+			//btn
+			let params = [{
+				uid:this.userid,
+				courseId:this.id+(this.tcid2?this.tcid2:''),
+				content:_html
+			}]
+
+			console.log(params)
+
+			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)
+			})
+		},
     gx(){
       this.$forceUpdate();
     },
@@ -12709,6 +12733,8 @@ export default {
         }, 0);
       }
       this.navId = ""
+			let flag = this.courseType == i;
+			let flag2 = this.taskCount == j
       if (l) {
         this.courseType = i;
         // this.navId = l;
@@ -12716,6 +12742,15 @@ export default {
         this.selectPz();
         this.getHomeWork();
         this.getCourseDetail(2);
+				if(flag){
+					if(flag2){
+						this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+					}else{
+						this.insertMemorandum(`选择<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+					}
+				}else{
+					this.insertMemorandum(`选择<span class="variable">阶段${i+1}${this.navList[i].dyName?':'+this.navList[i].dyName:''}</span>→<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+				}
       }
 
       // var b = this.$refs["bz" + k][0];
@@ -12798,8 +12833,11 @@ export default {
       }
       this.dialogVisibleMember = false;
     },
-    previewImg(url) {
+    previewImg(url,w) {
       this.$hevueImgPreview(url);
+			if(w){
+				this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
+			}
     },
     checkImg(list) {
       if (!list.length) {
@@ -14052,7 +14090,7 @@ export default {
       this.videoDetail = this.playerOptions1;
       this.videoVisible = true;
     },
-    isLikes(wid, uid, t, c, isLikes) {
+    isLikes(wid, uid, t, c, isLikes,sName) {
       if (isLikes == false) {
         let params = [
           {
@@ -14071,6 +14109,7 @@ export default {
             });
             this.selectSWorks();
             this.selectStudent();
+						this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">点赞</span>`)
           })
           .catch((err) => {
             this.$message.error("点赞失败");
@@ -14225,8 +14264,9 @@ export default {
         
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
       }
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
-    addComment(wid, uid, t) {
+    addComment(wid, uid, t,detail) {
       if (this.commentText == "") {
         this.$message.error("请输入评论");
         return;
@@ -14262,6 +14302,7 @@ export default {
                 this.commentText = "";
                 this.selectSWorks();
                 this.selectStudent();
+								this.insertMemorandum(`对<span class="variable">${detail.sName}</span>的作业进行<span class="btn">评论</span>`)
               })
               .catch((err) => {
                 this.$message.error("评论失败");
@@ -14274,7 +14315,7 @@ export default {
           console.error(err);
         });
     },
-    scoreWork(wid) {
+    scoreWork(wid,sName) {
       if (this.wScore == 0) {
         this.$message.error("请评分");
         return;
@@ -14300,6 +14341,7 @@ export default {
           this.dialogVisibleScore = false;
           this.selectSWorks();
           this.selectStudent();
+					this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">评分</span>`)
         })
         .catch((err) => {
           this.$message.error("评分失败");
@@ -14324,6 +14366,7 @@ export default {
       this.selectAnswer = { answer: a, stu: w.sName };
       this.isSelect = true;
       this.dialogVisibleSelect = true;
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
     openSen(w, i) {
       this.sentenceList1 = JSON.parse(w.works);
@@ -16241,6 +16284,10 @@ export default {
         this.navList[s].task[n].isOpen = !this.navList[s].task[n].isOpen;
         return;
       }
+
+			let flag = this.courseType==s;
+
+	
       this.courseType = s;
       this.navId = i;
       this.taskCount = n;
@@ -16294,6 +16341,11 @@ export default {
       this.selectPz();
       this.getHomeWork();
       this.getCourseDetail(2);
+			if(flag){
+				this.insertMemorandum(`进入<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
+			}else{
+				this.insertMemorandum(`进入<span class="variable">阶段${s+1}${this.navList[s].dyName?':'+this.navList[s].dyName:''}</span>→<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
+			}
     },
 
     get(i) {
@@ -16929,6 +16981,7 @@ export default {
           this.pzConText = "";
           this.addPzDialog = false;
           this.selectPz();
+					this.insertMemorandum(`使用<span class="btn">评论</span>功能,添加评论`)
         })
         .catch((err) => {
           this.$message.error("添加失败");
@@ -17426,6 +17479,7 @@ export default {
       // this.isClickNav = "video" + i;
       this.isClickNav = i;
       this.$forceUpdate();
+			this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount].find(i=>i.url==u).name}</span>`)
     },
     lookText(i, t) {
       this.isClickNav = "";
@@ -17435,6 +17489,7 @@ export default {
       this.showType = 1;
       // this.isClickNav = "text" + t;
       this.isClickNav = t;
+			this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][t].name}.doc</span>`)
     },
     lookTools(i, t) {
       this.chapTools = this.chapToolList[i][t];
@@ -17460,14 +17515,17 @@ export default {
         this.showPDF = true;
         this.dialogVisible3 = true;
       }
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
     openTable(f) {
       this.tableJson = JSON.parse(f.works);
       this.dialogVisibleTable2 = true;
+			this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
     },
     openWord(f) {
       this.tableJson = JSON.parse(f.works);
       this.dialogVisibleTable3 = true;
+			this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
     },
     doUrl(url, i) {
       this.isClickNav = "";
@@ -17490,6 +17548,7 @@ export default {
       this.pptImgUrl1 = f.url;
       this.isClickNav = i;
       this.$forceUpdate();
+			this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][i].name}</span>`)
     },
     async downFile(f, i) {
       this.isClickNav = "";
@@ -17525,6 +17584,7 @@ export default {
       }
       // this.isClickNav = "word" + i;
       this.isClickNav = i;
+			this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][i].name}</span>`)
     },
     downFileList(i) {
       window.open(this.noImgList[i].url);
@@ -17927,6 +17987,7 @@ export default {
       //   this.questionAnswer = z[0].answer;
       //   this.answerDialogVisible = true;
       // }
+			this.insertMemorandum(`查看<span class="variable">${sName}</span>的作业`)
     },
 
     fastText(p, t) {
@@ -18451,6 +18512,7 @@ export default {
           ].toolChoose[i].videoJson;
         this.dialogVisibleVideo = true;
       }
+			this.insertMemorandum(`点击工作区<span class="variable">工具${index+1}:${this.toolsList[t]}</span>`)
     },
     teacherWorkSubmit(t, i, index, s) {
       this.sStudent = s;
@@ -20476,7 +20538,7 @@ export default {
 }
 
 .filebox .tooldetail {
-  width: calc(100% - 280px);
+  width: calc(100%);
   margin: 0px 12px;
   padding: 12px;
   line-height: 30px;
@@ -21426,7 +21488,7 @@ export default {
 
 .toolHeng2 {
   width: 100%;
-  padding-left: 37px;
+  padding-left: 15px;
   box-sizing: border-box;
 }
 

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

@@ -195,6 +195,7 @@ export default {
                 .catch((err) => {
                     console.error(err);
                 });
+						this.$emit('insertMemorandum',`使用<span class="btn">评论</span>功能,添加总评`)
         },
         getList() {
             let params =

+ 97 - 85
src/components/studyStudent.vue

@@ -1341,7 +1341,7 @@
                     <el-button
                       type="primary"
                       v-if="tool.tool[0] == 32"
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="addImg($event)"
                       >上传作业<input
                         type="file"
@@ -1352,7 +1352,7 @@
                     <el-button
                       type="primary"
                       v-if="tool.tool[0] == 15"
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="openWordCloud(toolIndex)"
                       >生成词云</el-button
                     >
@@ -1361,7 +1361,7 @@
                       v-if="
                         tool.tool[0] == 16 && worksStudent[toolIndex].length > 0
                       "
-                      style="position: absolute; right: 30px; top: 30px"
+                      style="position: absolute; right: 30px; top: -45px"
                       @click="uploadWorks(toolIndex)"
                       >导出作业</el-button
                     >
@@ -1406,7 +1406,7 @@
                         <div class="workImg" v-if="w.type == 0">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -1442,7 +1442,7 @@
                           />
                         </div>
                         <div class="workImg" v-if="w.type == 1">
-                          <img :src="word" @click="openFile(w.works)" alt />
+                          <img :src="word" @click="openFile(w.works,w)" alt />
                           <div
                             class="answerScore"
                             v-if="w.score"
@@ -2124,7 +2124,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2199,7 +2199,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2274,7 +2274,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2349,7 +2349,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2424,7 +2424,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <img
@@ -2523,7 +2523,7 @@
                               <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -2565,7 +2565,7 @@
                               />
                             </div>
                             <div class="workImg" v-if="w.type == 1">
-                              <img :src="word" @click="openFile(w.works)" alt />
+                              <img :src="word" @click="openFile(w.works,w)" alt />
                               <!-- @click="openFile(w.works)" -->
                               <div
                                 class="answerScore"
@@ -2707,7 +2707,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -2776,7 +2776,7 @@
                           <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -2818,7 +2818,7 @@
                           />
                         </div>
                         <div class="workImg" v-if="w.type == 1">
-                          <img :src="word" @click="openFile(w.works)" alt />
+                          <img :src="word" @click="openFile(w.works,w)" alt />
                           <!-- @click="openFile(w.works)" -->
                           <div
                             class="answerScore"
@@ -2960,7 +2960,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3272,7 +3272,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3442,7 +3442,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -3543,7 +3543,7 @@
                           <!-- @click="commentOther(w, toolIndex, wIndex)" -->
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -3589,7 +3589,7 @@
                           style="cursor: pointer"
                           v-if="w.type == 1"
                         >
-                          <img :src="word" @click="openFile(w.works)" alt />
+                          <img :src="word" @click="openFile(w.works,w)" alt />
                           <!-- @click="openFile(w.works)" -->
                           <div
                             class="answerScore"
@@ -3692,7 +3692,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4333,7 +4333,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -4455,7 +4455,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4579,7 +4579,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -4627,7 +4627,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -4695,7 +4695,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -4739,7 +4739,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -4863,7 +4863,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -4911,7 +4911,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -4979,7 +4979,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5023,7 +5023,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5147,7 +5147,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -5195,7 +5195,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -5263,7 +5263,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5307,7 +5307,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5430,7 +5430,7 @@
                             <div class="workImg">
                               <img
                                 :src="w.works"
-                                @click="previewImg(w.works)"
+                                @click="previewImg(w.works,w)"
                                 alt
                               />
                               <div
@@ -5478,7 +5478,7 @@
                                   <div
                                     class="commentImg"
                                     @click="
-                                      isLikes(w.wid, userid, 1, null, w.isLikes)
+                                      isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                     "
                                   >
                                     <img
@@ -5546,7 +5546,7 @@
                         <div class="workImg">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <div
@@ -5590,7 +5590,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -5696,7 +5696,7 @@
                         <div class="workImg" v-if="w.type == 0">
                           <img
                             :src="w.works"
-                            @click="previewImg(w.works)"
+                            @click="previewImg(w.works,w)"
                             alt
                           />
                           <img
@@ -5710,7 +5710,7 @@
                           />
                         </div>
                         <div class="workImg" v-if="w.type == 1">
-                          <img :src="word" @click="openFile(w.works)" alt />
+                          <img :src="word" @click="openFile(w.works,w)" alt />
                           <img
                             class="deleteImg"
                             src="../assets/deleteworks.png"
@@ -5833,7 +5833,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6402,7 +6402,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6633,7 +6633,7 @@
                               <div
                                 class="commentImg"
                                 @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes)
+                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
                                 "
                               >
                                 <img
@@ -6853,7 +6853,7 @@
                               <div class="workImg" v-if="w.type == 0">
                                 <img
                                   :src="w.works"
-                                  @click="previewImg(w.works)"
+                                  @click="previewImg(w.works,w)"
                                   alt
                                 />
                                 <div
@@ -6899,7 +6899,7 @@
                               <div class="workImg" v-if="w.type == 1">
                                 <img
                                   :src="word"
-                                  @click="openFile(w.works)"
+                                  @click="openFile(w.works,w)"
                                   alt
                                 />
                                 <!-- @click="openFile(w.works)" -->
@@ -7053,7 +7053,8 @@
                                           userid,
                                           1,
                                           null,
-                                          w.isLikes
+                                          w.isLikes,
+																					w.sName
                                         )
                                       "
                                     >
@@ -9776,7 +9777,8 @@
                     userid,
                     1,
                     null,
-                    commentDetail.isLikes
+                    commentDetail.isLikes,
+										commentDetail.sName
                   )
                 "
                 :src="commentDetail.isLikes == true ? likes : noLikes"
@@ -9903,7 +9905,7 @@
         >
         <el-button
           type="primary"
-          @click="addComment(commentDetail.wid, userid, 2)"
+          @click="addComment(commentDetail.wid, userid, 2,commentDetail)"
           >确 定</el-button
         >
       </div>
@@ -10433,7 +10435,7 @@
         <el-button
           type="primary"
           v-if="courseDetail.userid == userid"
-          @click="scoreWork(commentDetail.wid)"
+          @click="scoreWork(commentDetail.wid,commentDetail.sName)"
           >确 定
         </el-button>
       </span>
@@ -12417,14 +12419,15 @@ export default {
 			})
 		},
 		insertMemorandum(_html){//保存行为操作
-			return;
 			//variable
 			//btn
 			let params = [{
 				uid:this.userid,
-				courseId:this.id,
+				courseId:this.id+(this.tcid2?this.tcid2:''),
 				content:_html
 			}]
+			console.log("👇👇")
+			console.log(params)
 
 			this.ajax.post(this.$store.state.api+'insert_systemOperation_countdownBehavior',params).then(res=>{
 				if(res.data==1){
@@ -12713,18 +12716,19 @@ export default {
         this.courseType = i;
         // this.navId = l;
         this.taskCount = j;
+				
+        this.selectPz();
+        this.getHomeWork();
+        this.getCourseDetail(2);
 				if(flag){
 					if(flag2){
-						this.insertMemorandum(`选择<span class="variable">工具${w+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+						this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
 					}else{
-						this.insertMemorandum(`选择<span class="variable">任务${this.taskCount+1}${this.navList[this.courseType].task[this.taskCount].taskName?':'+this.navList[this.courseType].task[this.taskCount].taskName:''}</span>→<span class="variable">工具${w+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+						this.insertMemorandum(`选择<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
 					}
 				}else{
-					this.insertMemorandum(`选择<span class="variable">阶段${this.courseType+1}${this.navList[this.courseType].dyName?':'+this.navList[this.courseType].dyName:''}</span>→<span class="variable">任务${this.taskCount+1}${this.navList[this.courseType].task[this.taskCount].taskName?':'+this.navList[this.courseType].task[this.taskCount].taskName:''}</span>→<span class="variable">工具${w+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
+					this.insertMemorandum(`选择<span class="variable">阶段${i+1}${this.navList[i].dyName?':'+this.navList[i].dyName:''}</span>→<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
 				}
-        this.selectPz();
-        this.getHomeWork();
-        this.getCourseDetail(2);
       }
 
       // var b = this.$refs["bz" + k][0];
@@ -12807,9 +12811,11 @@ export default {
       }
       this.dialogVisibleMember = false;
     },
-    previewImg(url) {
-			this.$message.info('查看作业-图片')
+    previewImg(url,w=null) {
       this.$hevueImgPreview(url);
+			if(w){
+				this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
+			}
     },
     checkImg(list) {
       if (!list.length) {
@@ -14062,7 +14068,7 @@ export default {
       this.videoDetail = this.playerOptions1;
       this.videoVisible = true;
     },
-    isLikes(wid, uid, t, c, isLikes) {
+    isLikes(wid, uid, t, c, isLikes,sName) {
       if (isLikes == false) {
         let params = [
           {
@@ -14081,6 +14087,7 @@ export default {
             });
             this.selectSWorks();
             this.selectStudent();
+						this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">点赞</span>`)
           })
           .catch((err) => {
             this.$message.error("点赞失败");
@@ -14134,8 +14141,6 @@ export default {
         .catch(() => {});
     },
     async commentOther(w, toolIndex, wIndex, gindex, gid) {
-			this.$message.info("预览作业")
-			console.log(w,1)
       this.commentIndexJson = {
         toolIndex: toolIndex,
         wIndex: wIndex,
@@ -14188,8 +14193,7 @@ 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 : "";
@@ -14237,8 +14241,10 @@ export default {
         
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
       }
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
-    addComment(wid, uid, t) {
+    addComment(wid, uid, t,detail) {
+			
       if (this.commentText == "") {
         this.$message.error("请输入评论");
         return;
@@ -14274,6 +14280,7 @@ export default {
                 this.commentText = "";
                 this.selectSWorks();
                 this.selectStudent();
+								this.insertMemorandum(`对<span class="variable">${detail.sName}</span>的作业进行<span class="btn">评论</span>`)
               })
               .catch((err) => {
                 this.$message.error("评论失败");
@@ -14286,7 +14293,7 @@ export default {
           console.error(err);
         });
     },
-    scoreWork(wid) {
+    scoreWork(wid,sName) {
       if (this.wScore == 0) {
         this.$message.error("请评分");
         return;
@@ -14312,6 +14319,7 @@ export default {
           this.dialogVisibleScore = false;
           this.selectSWorks();
           this.selectStudent();
+					this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">评分</span>`)
         })
         .catch((err) => {
           this.$message.error("评分失败");
@@ -14319,8 +14327,7 @@ 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(
@@ -14338,17 +14345,18 @@ export default {
       this.selectAnswer = { answer: a, stu: w.sName };
       this.isSelect = true;
       this.dialogVisibleSelect = true;
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
     openSen(w, i) {
-			this.$message.info("预览作业")
-			console.log(w,4)
+			console.log("openSen")
+			// this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
       this.sentenceList1 = JSON.parse(w.works);
       this.sentenceList1.stuName = w.sName;
       this.dialogVisibleSentence1 = true;
     },
     openPj(w, toolindex) {
-			this.$message.info("预览作业")
-			console.log(w,5)
+			console.log("openPJ")
+			// this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
       this.isStar = true;
       this.eScore = JSON.parse(w);
       this.rateJson =
@@ -16268,11 +16276,7 @@ export default {
 			
       this.navId = i;
       this.taskCount = n;
-			if(flag){
-				this.insertMemorandum(`进入<span class="variable">任务${this.taskCount+1}${this.navList[this.courseType].task[this.taskCount].taskName?':'+this.navList[this.courseType].task[this.taskCount].taskName:''}</span>`)
-			}else{
-				this.insertMemorandum(`进入<span class="variable">阶段${this.courseType+1}${this.navList[this.courseType].dyName?':'+this.navList[this.courseType].dyName:''}</span>→<span class="variable">任务${this.taskCount+1}${this.navList[this.courseType].task[this.taskCount].taskName?':'+this.navList[this.courseType].task[this.taskCount].taskName:''}</span>`)
-			}
+			
 			
       if(ctype == 2){
         this.navList[s].task[n].isOpen = true
@@ -16328,6 +16332,11 @@ export default {
       this.selectPz();
       this.getHomeWork();
       this.getCourseDetail(2);
+			if(flag){
+				this.insertMemorandum(`进入<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
+			}else{
+				this.insertMemorandum(`进入<span class="variable">阶段${s+1}${this.navList[s].dyName?':'+this.navList[s].dyName:''}</span>→<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
+			}
     },
 
     get(i) {
@@ -16962,12 +16971,13 @@ export default {
           this.pzConText = "";
           this.addPzDialog = false;
           this.selectPz();
+					this.insertMemorandum(`使用<span class="btn">评论</span>功能,添加评论`)
         })
         .catch((err) => {
           this.$message.error("添加失败");
           console.error(err);
         });
-				this.insertMemorandum(`使用<span class="btn">评论</span>功能,添加评论`)
+				
     },
     setReplyIndex(id, i) {
       this.replyIndex = i;
@@ -17476,7 +17486,7 @@ export default {
       this.chapTools = this.chapToolList[i][t];
       this.dialogVisible2 = true;
     },
-    async openFile(f) {
+    async openFile(f,w) {
       this.pptImgUrl = "";
       var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
       if (
@@ -17495,6 +17505,7 @@ export default {
         this.showPDF = true;
         this.dialogVisible3 = true;
       }
+			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
     openTable(f) {
       this.tableJson = JSON.parse(f.works);
@@ -17502,10 +17513,9 @@ export default {
 			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;
+			this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
 	
     },
     doUrl(url, i) {
@@ -17917,6 +17927,7 @@ export default {
         });
     },
     openTools(t, i, index, c, sName,id) {
+			
       var z = JSON.parse(c);
       this.noteName = sName;
       if (t == 4) {
@@ -17966,6 +17977,7 @@ export default {
       //   this.questionAnswer = z[0].answer;
       //   this.answerDialogVisible = true;
       // }
+			this.insertMemorandum(`查看<span class="variable">${sName}</span>的作业`)
     },
 
     fastText(p, t) {
@@ -19034,7 +19046,7 @@ export default {
       x.send();
     },
     downloadFile(url) {
-			this.$message.info("查看作业-下载文件")
+			// this.$message.info("查看作业-下载文件")
       var credentials = {
         accessKeyId: "AKIATLPEDU37QV5CHLMH",
         secretAccessKey: "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",
@@ -20502,7 +20514,7 @@ export default {
 }
 
 .filebox .tooldetail {
-  width: calc(100% - 280px);
+  width: calc(100%);
   margin: 0px 12px;
   padding: 12px;
   line-height: 30px;
@@ -21452,7 +21464,7 @@ export default {
 
 .toolHeng2 {
   width: 100%;
-  padding-left: 37px;
+  padding-left: 15px;
   box-sizing: border-box;
 }
 

BIN
static/SourceHanSans-Regular.otf


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä