lsc 1 год назад
Родитель
Сommit
93585c81c8

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.e9a7325239eef593fdb033166f6031d7.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.733814fc48c2bd2222aa.js></script><script type=text/javascript src=./static/js/app.fff8032f80b07db779b5.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.af3974f3e9bda42cc4ce17aee5ebfc43.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.733814fc48c2bd2222aa.js></script><script type=text/javascript src=./static/js/app.fff8ccca72c902660210.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

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


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


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


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


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


+ 168 - 1
package-lock.json

@@ -39,7 +39,9 @@
         "vue-video-player": "^5.0.2",
         "vuex": "^3.6.2",
         "wangeditor": "^4.7.15",
-        "worker-loader": "^2.0.0"
+        "wav-encoder": "^1.3.0",
+        "worker-loader": "^2.0.0",
+        "xlsx": "^0.18.5"
       },
       "devDependencies": {
         "@babel/core": "^7.19.6",
@@ -5664,6 +5666,14 @@
         "node": ">= 10.0.0"
       }
     },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/aes-decrypter": {
       "version": "1.0.3",
       "resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
@@ -7607,6 +7617,18 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/chai-nightwatch": {
       "version": "0.1.1",
       "resolved": "https://registry.nlark.com/chai-nightwatch/download/chai-nightwatch-0.1.1.tgz?cache=0&sync_timestamp=1630259114673&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchai-nightwatch%2Fdownload%2Fchai-nightwatch-0.1.1.tgz",
@@ -8143,6 +8165,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -8534,6 +8564,17 @@
         "js-yaml": "bin/js-yaml.js"
       }
     },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -11372,6 +11413,14 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -20524,6 +20573,17 @@
       "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
     },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -22803,6 +22863,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/wav-encoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/wav-encoder/-/wav-encoder-1.3.0.tgz",
+      "integrity": "sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw=="
+    },
     "node_modules/wbuf": {
       "version": "1.7.3",
       "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
@@ -23634,6 +23699,22 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
@@ -23926,6 +24007,26 @@
         "xtend": "^4.0.0"
       }
     },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/xregexp": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/xregexp/download/xregexp-2.0.0.tgz?cache=0&sync_timestamp=1628117154407&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxregexp%2Fdownload%2Fxregexp-2.0.0.tgz",
@@ -28394,6 +28495,11 @@
       "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
       "peer": true
     },
+    "adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+    },
     "aes-decrypter": {
       "version": "1.0.3",
       "resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
@@ -30146,6 +30252,15 @@
         "lazy-cache": "^1.0.3"
       }
     },
+    "cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      }
+    },
     "chai-nightwatch": {
       "version": "0.1.1",
       "resolved": "https://registry.nlark.com/chai-nightwatch/download/chai-nightwatch-0.1.1.tgz?cache=0&sync_timestamp=1630259114673&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchai-nightwatch%2Fdownload%2Fchai-nightwatch-0.1.1.tgz",
@@ -30567,6 +30682,11 @@
       "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
     },
+    "codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -30891,6 +31011,11 @@
         }
       }
     },
+    "crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -33263,6 +33388,11 @@
       "resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503408398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
       "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE="
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -40853,6 +40983,14 @@
       "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -42736,6 +42874,11 @@
         }
       }
     },
+    "wav-encoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/wav-encoder/-/wav-encoder-1.3.0.tgz",
+      "integrity": "sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw=="
+    },
     "wbuf": {
       "version": "1.7.3",
       "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
@@ -43418,6 +43561,16 @@
       "resolved": "https://registry.nlark.com/window-size/download/window-size-0.1.0.tgz",
       "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
@@ -43683,6 +43836,20 @@
         "xtend": "^4.0.0"
       }
     },
+    "xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      }
+    },
     "xregexp": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/xregexp/download/xregexp-2.0.0.tgz?cache=0&sync_timestamp=1628117154407&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fxregexp%2Fdownload%2Fxregexp-2.0.0.tgz",

+ 2 - 1
package.json

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

+ 1 - 1
src/components/courseDetail.vue

@@ -999,7 +999,7 @@
               :class="courseDetail.brief != '' ? 'rightTd' : 'noBRight'"
               style="width: 100%; padding-top: 20px"
             >
-              <scoreZong :courseid="id"></scoreZong>
+              <scoreZong :courseid="id" :title="courseDetail.title"></scoreZong>
             </div>
           </div>
         </div>

+ 5 - 4
src/components/easy2/studyStudent.vue

@@ -244,7 +244,7 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll" v-show="!orgArray.includes(org)">
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -8041,7 +8041,7 @@
       </div>
     </div>
 		<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-		<classRoomHelper v-show="orgArray.includes(org)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="2" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+		<classRoomHelper v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="2" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -12345,7 +12345,8 @@ export default {
 				isScoreList:[],	
 			},
 			classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9']
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5']
     };
   },
   methods: {
@@ -19897,7 +19898,7 @@ export default {
       };
     },
 		commentRight(){
-			if(!this.orgArray.includes(this.org)){
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
 				return "35px";
 			}
 			return `calc(${this.classRoomHelperWidth} + 5px)`

+ 5 - 4
src/components/easy3/studyStudent.vue

@@ -245,7 +245,7 @@
             </el-tooltip>
           </div>
 					<!-- v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'" -->
-          <div class="btnAll" v-show="!orgArray.includes(org)">
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -8029,7 +8029,7 @@
       </div>
     </div>
 				<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-		<classRoomHelper v-show="orgArray.includes(org)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="3" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+		<classRoomHelper v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="3" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -12338,7 +12338,8 @@ export default {
 				isScoreList:[],	
 			},
 			classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9']
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5']
     };
   },
   methods: {
@@ -19914,7 +19915,7 @@ export default {
       };
     },
 		commentRight(){
-			if(!this.orgArray.includes(this.org)){
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
 				return "35px";
 			}
 			return `calc(${this.classRoomHelperWidth} + 5px)`

+ 97 - 17
src/components/scoreZong/get.vue

@@ -1,6 +1,8 @@
 <template>
     <div class="sz_body" v-loading="loading">
-        <div style="font-size: 18px;margin-bottom: 20px;">评分人数:<span class="color">{{ num }}</span>人  总平均分:<span class="color">{{ num ? score ? (score / num).toFixed(1) : 0 : 0 }}</span></div>
+        <div @click="exportExcel" v-show="false">导出</div>
+        <div style="font-size: 18px;margin-bottom: 20px;">评分人数:<span class="color">{{ num }}</span>人 总平均分:<span
+                class="color">{{ num ? score ? (score / num).toFixed(1) : 0 : 0 }}</span></div>
         <div class="test_box" v-for="(item, index) in testList" :key="index">
             <div class="testTitle">{{ item.title }}</div>
             <div class="testContent" v-if="item.type == '1'" v-for="(item2, index2) in item.array"
@@ -15,8 +17,8 @@
             </div>
             <div v-if="item.type == '2'">
                 <div class="test_ping" v-for="(answer, index2) in item.answerArray" :key="index + '-' + index2">
-                    <span style="    min-width: fit-content;">{{ index2 + 1  }}.</span>
-                    <span>{{ answer  }}</span>
+                    <span style="    min-width: fit-content;">{{ index2 + 1 }}.</span>
+                    <span>{{ answer }}</span>
                 </div>
             </div>
         </div>
@@ -30,13 +32,14 @@ export default {
             type: String,
             default: ''
         },
-        userid: {
+        title: {
             type: String,
             default: ''
         },
     },
     data() {
         return {
+            userid:"",
             testList: [
                 {
                     title: '教学目标(5分)',
@@ -157,13 +160,65 @@ export default {
             ],
             num: 0,
             score: 0,
-            loading: false
+            loading: false,
+            testArray: []
         }
     },
-    mounted () {
+    mounted() {
         this.getList();
     },
     methods: {
+        exportExcel() {
+            try {
+
+
+                var res = this.testArray;
+                //如果value的json字段的key值和想要的headers值不一致时,可做如下更改
+                //将和下面的Object.fromEntries结合,将json字段的key值改变为要求的excel的header值
+                var array = [];
+                for (var i = 0; i < res.length; i++) {
+                    var _json = {};
+                    _json["序号"] = i+1;
+                    _json["姓名"] = res[i].username;
+                    _json["教学目标(5分)"] = res[i]['test00'];
+                    _json["教学内容(5分)"] = res[i]['test10'];
+                    _json["教学过程-1课程结构(10分)"] = res[i]['test20'];
+                    _json["教学过程-2活动设计(10分)"] = res[i]['test21'];
+                    _json["教学过程-3秩序管理(10分)"] = res[i]['test22'];
+                    _json["教学方法与策略(20分)"] = res[i]['test30'];
+                    _json["教学工具(15分)"] = res[i]['test40'];
+                    _json["教学评价(10分)"] = res[i]['test50'];
+                    _json["创新意识(10分)"] = res[i]['test60'];
+                    _json["教学效果(5分)"] = res[i]['test70'];
+                    _json["加分项(10分)"] = res[i]['test80'];
+                    _json["总分(110分)"] = res[i]['sum'];
+                    _json["评语"] = res[i]['ping'];
+                    array.push(_json);
+                }
+
+                var XLSX = require("xlsx");
+                const workbook = XLSX.utils.book_new(); //创建一个新的工作簿对象
+                let ws = XLSX.utils.json_to_sheet(array); //将json对象数组转化成工作表
+                // ws["!cols"] = [
+                //     //设置每一列的宽度
+                //     { wch: 50 },
+                //     { wch: 50 },
+                //     { wch: 50 },
+                // ];
+                XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
+                XLSX.writeFile(workbook, this.title+".xlsx");
+                // const wopts = { bookType: "xlsx", bookSST: false, type: "array" };//写入的样式bookType:输出的文件类型,type:输出的数据类型,bookSST: 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
+                // const wbout = XLSX.write(workbook, wopts);// 浏览器端和node共有的API,实际上node可以直接使用xlsx.writeFile来写入文件,但是浏览器没有该API
+                // FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }), `${title} demo.xlsx`);//保存文件
+                this.$message({
+                    message: "导出成功",
+                    type: "success",
+                });
+
+            } catch (e) {
+                console.log(e, e.stack);
+            }
+        },
         numberPan(index, index2, score) {
             let _score = this.testList[index].array[index2].uscore
             if (/[^\d]/.test(_score) || _score < 0) {
@@ -209,31 +264,56 @@ export default {
                 .get(this.$store.state.api + "getCourseScore", params)
                 .then((res) => {
                     console.log(res.data);
-                    if(res.data[0].length > 0){
+                    if (res.data[0].length > 0) {
                         // this.testList = JSON.parse(res.data[0][0].json)
                         let data = res.data[0]
                         this.num = data.length
                         let sum = 0
-                        for(var i = 0; i < data.length; i++){
+                        for (var i = 0; i < data.length; i++) {
                             let item = data[i]
                             let _json = JSON.parse(item.json)
-                            for(var j = 0; j < this.testList.length; j++){
+                            for (var j = 0; j < this.testList.length; j++) {
                                 let test = this.testList[j]
-                                if(test.type == '2'){
-                                    if(_json[j].answer){
+                                if (test.type == '2') {
+                                    if (_json[j].answer) {
                                         test.answerArray.push(_json[j].answer)
                                     }
-                                }else{
-                                    for(var k = 0; k < test.array.length; k++){
+                                } else {
+                                    for (var k = 0; k < test.array.length; k++) {
                                         let _item = test.array[k]
                                         _item.uscore += _item.score / 5 * parseInt(_json[j].array[k].uscore)
                                         _item.num++
                                         sum += _item.score / 5 * parseInt(_json[j].array[k].uscore)
                                     }
-                                } 
+                                }
                             }
                         }
                         this.score = sum
+                        let testArray = []
+                        for (var i = 0; i < data.length; i++) {
+                            let item = data[i]
+                            let _json = JSON.parse(item.json)
+                            let _sum = 0
+                            for (var j = 0; j < this.testList.length; j++) {
+                                let test = this.testList[j]
+                                if (test.type == '2') {
+                                    if (_json[j].answer) {
+                                        item['ping'] = _json[j].answer
+                                    }else { 
+                                        item['ping'] = ''
+                                    }
+                                } else {
+                                    for (var k = 0; k < test.array.length; k++) {
+                                        let _item = test.array[k]
+                                        item['test'+j+k] =  _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                        _sum += _item.score / 5 * parseInt(_json[j].array[k].uscore)
+                                    }
+                                }
+                            }
+                            item['sum'] = _sum
+                            testArray.push(item)
+                        }
+                        this.testArray = testArray
                     }
                     this.loading = false
                     this.$forceUpdate();
@@ -273,13 +353,13 @@ export default {
     margin-top: 5px;
 }
 
-.test_ping{
+.test_ping {
     margin-top: 5px;
     display: flex;
     word-break: break-all;
 }
 
-.color{
-    color:#3681fc;
+.color {
+    color: #3681fc;
 }
 </style>

+ 5 - 4
src/components/studyStudent.vue

@@ -257,7 +257,7 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll"  v-show="!orgArray.includes(org)"><!--v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'"-->
+          <div class="btnAll"  v-show="!orgArray.includes(org) && !oidArray.includes(oid)"><!--v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'"-->
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -8038,7 +8038,7 @@
         </el-dialog>
       </div>
 			<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
-      <classRoomHelper v-show="orgArray.includes(org)"  ref="classRoomHelperRef" :courseDetail="courseDetail" :tType='1' @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+      <classRoomHelper v-show="orgArray.includes(org) || oidArray.includes(oid)"  ref="classRoomHelperRef" :courseDetail="courseDetail" :tType='1' @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
                     '/courseDetail?userid=' +
                       userid +
                       '&oid=' +
@@ -12318,7 +12318,8 @@ export default {
 				isScoreList:[],	
 			},
       classRoomHelperWidth: '85px',
-			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9']
+			orgArray:['1973f6c7-1561-11ee-91d8-005056b86db5','777559d2-7239-11ee-b98c-005056b86db5','884c5665-a453-46f3-b7b6-01d575290aa9'],
+      oidArray:['f297fbdc-f0a0-11ee-b534-005056b86db5']
     };
   },
   methods: {
@@ -19882,7 +19883,7 @@ export default {
       };
     },
 		commentRight(){
-			if(!this.orgArray.includes(this.org)){
+			if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
 				return "35px";
 			}
 			return `calc(${this.classRoomHelperWidth} + 5px)`

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