diff --git a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java index a06608f23887695c5bba024810cab79ccb07964d..e495234ec59e6ee6d4860f2c8863331d27cedc04 100644 --- a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java +++ b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java @@ -27,6 +27,7 @@ import java.util.*; QuestionService questionService = IOC.getBean(QuestionServiceImpl.class); NoticeService noticeService = IOC.getBean(NoticeServiceImpl.class); SubmitService submitService = IOC.getBean(SubmitServiceImpl.class); + GradeService gradeService = IOC.getBean(GradeServiceImpl.class); WordService wordService = IOC.getBean(WordServiceImpl.class); @@ -251,4 +252,26 @@ import java.util.*; int count=submitService.getGradeCount(id,submitStatus); return R.ok().put("data", count); } + + //教师端获取成绩 + @Action + public R getScore(HttpServletRequest request) throws Exception { + Integer id = Integer.parseInt(request.getParameter("id")); + List score = gradeService.getScore(id); + return R.ok().put("data", score); + + } + @Action + public R getScoreCount(HttpServletRequest request) throws Exception{ + Integer id = Integer.parseInt(request.getParameter("id")); + int count = gradeService.getScoreCount(id); + return R.ok().put("data",count); + } + @Action + public R getScoreByHomework(HttpServletRequest request) throws Exception{ + Integer id = Integer.parseInt(request.getParameter("id")); + List list = gradeService.getScoreByHomework(id); + return R.ok().put("data",list); + } + } \ No newline at end of file diff --git a/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java b/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java new file mode 100644 index 0000000000000000000000000000000000000000..7adc1e861087a44d64cf66b8386d472ca5357e13 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java @@ -0,0 +1,13 @@ +package com.wetoband.template.dao; + +import com.wetoband.template.entity.Grade; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public interface GradeDao { + List getScore(Connection connection, int id) throws SQLException; + int getScoreCount(Connection connection,int id)throws SQLException; + List getScoreByHomework(Connection connection,int id) throws SQLException; +} diff --git a/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java b/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..df6c5ccd0c43a24f7de8abc70ef8437fb5b4ee41 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java @@ -0,0 +1,98 @@ +package com.wetoband.template.dao.impl; + +import com.wetoband.template.dao.GradeDao; +import com.wetoband.template.entity.Grade; +import org.springframework.stereotype.Repository; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@Repository +public class GradeDaoImpl implements GradeDao { + @Override + public List getScore(Connection connection, int id) throws SQLException { + + // SQL语句 + String sql = "SELECT student.sno,student.name,homework.homework_name," + + "submit.submitTime,submit.score,submit.submitStatus,submit.correct,homework.homework_id " + + "FROM submit JOIN student ON submit.student_id = student.id " + + "JOIN homework ON submit.homework_id = homework.homework_id " + + "WHERE submit.teacher_id = ?"; + + List gradeList = new ArrayList<>(); + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setInt(1, id); + try (ResultSet rs = pstm.executeQuery()) { + while (rs.next()) { + Grade grade = new Grade(); + grade.setSno(rs.getString("sno")); + grade.setName(rs.getString("name")); + grade.setHomeworkName(rs.getString("homework_name")); + grade.setHomeworkId(rs.getInt("homework_id")); + if (rs.getInt("submitStatus") == 0) { + grade.setSubmitTime("未提交"); + } else { + grade.setSubmitTime(rs.getString("submitTime")); + } + if (rs.getInt("correct") == 0 && rs.getInt("submitStatus") != 0) { + grade.setScore("未批改"); + } else { + grade.setScore(String.valueOf(rs.getDouble("score"))); + } + gradeList.add(grade); + } + } catch (SQLException e) { + // 处理异常,这里只是简单地让异常继续抛出,但实际应用中可能需要更详细的错误处理 + throw e; + } + return gradeList; + } + } + + @Override + public int getScoreCount(Connection connection,int id) throws SQLException{ + String sql = "SELECT COUNT(DISTINCT submit.submit_id) " + + "FROM submit JOIN student ON submit.student_id = student.id " + + "JOIN homework ON submit.homework_id = homework.homework_id " + + "WHERE submit.teacher_id = ?"; + int count = 0; + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setInt(1,id); + try (ResultSet rs = pstm.executeQuery()) { + while (rs.next()) { + count = rs.getInt(1); + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + return count; + } + + @Override + public List getScoreByHomework(Connection connection,int id) throws SQLException{ + String sql = "SELECT submit.score,submit.correct,submit.submitStatus FROM submit where homework_id = ?"; + List list = new ArrayList(); + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setInt(1,id); + try (ResultSet rs = pstm.executeQuery()) { + while (rs.next()) { + if(rs.getInt("submit.correct") == 0 && rs.getInt("submit.submitStatus") !=0){ + list.add("未批改"); + } + else{ + list.add(String.valueOf(rs.getDouble("submit.score"))); + } + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + return list; + } + +} diff --git a/HomeWork-java/src/com/wetoband/template/entity/Grade.java b/HomeWork-java/src/com/wetoband/template/entity/Grade.java new file mode 100644 index 0000000000000000000000000000000000000000..45ce064eb41279be17a280427cee8183b88f6a63 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/entity/Grade.java @@ -0,0 +1,24 @@ +package com.wetoband.template.entity; + +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Table; + +@Data +@Table(name = "grade") +public class Grade { + @Column(name = "sno") + private String sno; + @Column(name = "homework_id") + private int homeworkId; + @Column(name = "name") + private String name; + @Column(name = "homework_name") + private String homeworkName; + @Column(name = "submit_time") + private String submitTime; + @Column(name = "score") + private String score; +} + diff --git a/HomeWork-java/src/com/wetoband/template/service/GradeService.java b/HomeWork-java/src/com/wetoband/template/service/GradeService.java new file mode 100644 index 0000000000000000000000000000000000000000..f899735c8c148e6169ebeb4dfade67329596b612 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/GradeService.java @@ -0,0 +1,11 @@ +package com.wetoband.template.service; + +import com.wetoband.template.entity.Grade; + +import java.util.List; + +public interface GradeService { + public List getScore(int id) throws Exception; + public int getScoreCount(int id) throws Exception; + public List getScoreByHomework(int id) throws Exception; +} diff --git a/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java b/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..2295b5ab4fd6214890d88909c12a5494a8540bdc --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java @@ -0,0 +1,34 @@ +package com.wetoband.template.service.impl; + +import com.fy.basejar.tool.ActionToolBase; +import com.wetoband.template.dao.GradeDao; +import com.wetoband.template.entity.Grade; +import com.wetoband.template.service.GradeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.util.List; + +@Service +public class GradeServiceImpl implements GradeService { + @Autowired + private GradeDao gradeDao; + + @Override + public List getScore(int id) throws Exception { + final Connection connection = ActionToolBase.getDBConnection(); + return gradeDao.getScore(connection,id); + } + + @Override + public int getScoreCount(int id) throws Exception{ + final Connection connection = ActionToolBase.getDBConnection(); + return gradeDao.getScoreCount(connection,id); + } + @Override + public List getScoreByHomework(int id) throws Exception{ + final Connection connection = ActionToolBase.getDBConnection(); + return gradeDao.getScoreByHomework(connection,id); + } +} diff --git a/TeacherHomeWork-vite/package-lock.json b/TeacherHomeWork-vite/package-lock.json index 48f7493faab6f88b0c6e2bca4e7931e991946aae..7ca28aafd3fbb27732514ea931815c07285258c8 100644 --- a/TeacherHomeWork-vite/package-lock.json +++ b/TeacherHomeWork-vite/package-lock.json @@ -16,7 +16,8 @@ "qs": "^6.11.2", "vue": "^3.3.11", "vue-echarts": "^7.0.3", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "xlsx": "^0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", @@ -880,6 +881,15 @@ } } }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", @@ -953,6 +963,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", @@ -981,6 +1004,15 @@ "fsevents": "~2.3.2" } }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", @@ -993,6 +1025,18 @@ "node": ">= 0.8" } }, + "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==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -1158,6 +1202,15 @@ "node": ">= 6" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", @@ -1590,6 +1643,18 @@ "node": ">=0.10.0" } }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1743,6 +1808,45 @@ "vue": "^3.2.0" } }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "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/zrender": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", diff --git a/TeacherHomeWork-vite/package.json b/TeacherHomeWork-vite/package.json index c384ba9593491958e191afbdec38b62300772052..552e1d1b10b8cd765881d732a4b24f2a4d59f221 100644 --- a/TeacherHomeWork-vite/package.json +++ b/TeacherHomeWork-vite/package.json @@ -17,7 +17,8 @@ "qs": "^6.11.2", "vue": "^3.3.11", "vue-echarts": "^7.0.3", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "xlsx": "^0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", diff --git a/TeacherHomeWork-vite/src/router/index.js b/TeacherHomeWork-vite/src/router/index.js index ee439ab2e1639cdd52d1b2567d6d08d492492ef0..31769efc0723a0ab8c0607784b6161c959b36cb0 100644 --- a/TeacherHomeWork-vite/src/router/index.js +++ b/TeacherHomeWork-vite/src/router/index.js @@ -5,6 +5,7 @@ import GradeManger from '@/views/GradeManager/index.vue'; import LearningProgress from '@/views/LearningProgress/index.vue'; import GradeHomework from '@/views/GradeHomework/index.vue'; import correct from '@/views/GradeHomework/correct.vue'; +import GradeAnalysis from '@/views/GradeManager/GradeAnalysis.vue'; const routes = [ @@ -39,6 +40,11 @@ const routes = [ name: 'correct', component: correct, }, + { + path: '/GradeManager/GradeAnalysis', + name: 'GradeAnalysis', + component: GradeAnalysis, + }, // { // path: '/:pathMatch(.*)*', // name: 'NotFound', diff --git a/TeacherHomeWork-vite/src/views/GradeManager/GradeAnalysis.vue b/TeacherHomeWork-vite/src/views/GradeManager/GradeAnalysis.vue new file mode 100644 index 0000000000000000000000000000000000000000..742611fb8cd983421d38bbdc8f8ad0dd94ddf166 --- /dev/null +++ b/TeacherHomeWork-vite/src/views/GradeManager/GradeAnalysis.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue b/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue index 5c5a9babfab41d24cb7bcca131e67e76ad02cd45..77365eaad369271a65a4b5c4e2e988f6f0a9db66 100644 --- a/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue +++ b/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue @@ -3,54 +3,50 @@
查询 - 全部学生 - 合格学生 - 挂科学生 + 统计 + 导出成绩表
- - + + - - - - - - - + + + + + +
+ + + +
+ - + - - - - + - - - - - + + - diff --git a/TeacherHomeWork-vite/yarn.lock b/TeacherHomeWork-vite/yarn.lock index a605530752ab9bcf540ec6b00db6c4c24a952782..ecdaee4c17035975ebf383ef1271296b2d01498f 100644 --- a/TeacherHomeWork-vite/yarn.lock +++ b/TeacherHomeWork-vite/yarn.lock @@ -196,6 +196,11 @@ dependencies: vue-demi "*" +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz" @@ -244,6 +249,14 @@ call-bind@^1.0.0: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +cfb@~1.2.1: + 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" + "chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz" @@ -259,6 +272,11 @@ call-bind@^1.0.0: optionalDependencies: fsevents "~2.3.2" +codepage@~1.15.0: + 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== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" @@ -266,6 +284,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + csstype@^3.1.2: version "3.1.3" resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz" @@ -378,6 +401,11 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" @@ -610,6 +638,13 @@ source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +ssf@~0.11.2: + 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" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -668,6 +703,29 @@ vue-router@^4.5.0: "@vue/server-renderer" "3.3.11" "@vue/shared" "3.3.11" +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/word/-/word-0.3.0.tgz" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + +xlsx@^0.18.5: + 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" + zrender@5.6.1: version "5.6.1" resolved "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz"