diff --git a/src/api/apis/apis.js b/src/api/apis/apis.js index 5418797..dc34abe 100644 --- a/src/api/apis/apis.js +++ b/src/api/apis/apis.js @@ -1622,4 +1622,12 @@ export default { data }); }, + // 删除随堂问报表 + deletePaperReport(data) { + return service({ + url: setUpUrls.deletePaperReport, + method: "POST", + data + }); + }, }; diff --git a/src/api/urls/apis.js b/src/api/urls/apis.js index be7bfa2..3df0c00 100644 --- a/src/api/urls/apis.js +++ b/src/api/urls/apis.js @@ -424,4 +424,6 @@ export default { paperShareCount: "/api_html/common/paper/paperShareCount", //教师/个人版导入备题组卷Word文档 paperWordUpload: "/api_html/common/paper/upload", + //删除随堂问报表 + deletePaperReport: "/api_html/teaching/deletePaperReport", } diff --git a/src/router/index.js b/src/router/index.js index be5c38b..c7e773c 100755 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,3 @@ -import en from "../i18n/lang/en" import Vue from "vue" import Router from "vue-router" import Login from "@/views/login/index" @@ -19,6 +18,7 @@ const PortraitDetail = () => import("@/views/portrait/detail") const Ask = () => import("@/views/basic/ask/index") +const AskList = () => import("@/views/basic/ask/list") const AskAnalysis = () => import("@/views/basic/ask/analysis") const AskArchiving = () => import("@/views/basic/ask/archiving") const Test = () => import("@/views/basic/test/index") @@ -37,18 +37,20 @@ const SetUpSchool = () => import("@/views/basic/setUp/school") const SetUpTeacher = () => import("@/views/basic/setUp/teacher") const SetUpStudent = () => import("@/views/basic/setUp/student") const ArchivedClazz = () => import("@/views/basic/setUp/archivedClazz") +const UserInfo = () => import("@/views/basic/userInfo/index") // 个人版 -const PersonalAsk = () => import("@/views/personal/ask/index") -const PersonalAskAnalysis = () => import("@/views/personal/ask/analysis") -const PersonalArchiving = () => import("@/views/personal/ask/archiving") -const PersonalTest = () => import("@/views/personal/test/index") -const PersonalTestAnalysis = () => import("@/views/personal/test/analysis") -const PersonalTestArchiving = () => import("@/views/personal/test/archiving") -const PersonalDataSync = () => import("@/views/personal/dataSync/index") -const PersonalSetUpStudent = () => import("@/views/personal/setUp/student") -const PersonalDown = () => import("@/views/personal/down/index") -const PersonalUserInfo = () => import("@/views/personal/userInfo/index") +// const PersonalAsk = () => import("@/views/personal/ask/index") +// const PersonalAskAnalysis = () => import("@/views/personal/ask/analysis") +// const PersonalArchiving = () => import("@/views/personal/ask/archiving") +// const PersonalTest = () => import("@/views/personal/test/index") +// const PersonalTestAnalysis = () => import("@/views/personal/test/analysis") +// const PersonalTestArchiving = () => import("@/views/personal/test/archiving") +// const PersonalDataSync = () => import("@/views/personal/dataSync/index") +// const PersonalSetUpStudent = () => import("@/views/personal/setUp/student") +// const PersonalDown = () => import("@/views/personal/down/index") +// const PersonalUserInfo = () => import("@/views/personal/userInfo/index") + // 超级管理员 const AdminDevice = () => import("@/views/admin/device/index") @@ -127,7 +129,7 @@ let defaultRouter = [ path: "/userInfo", iconCls: "fa fa-user", // 图标样式class name: "个人信息", - component: PersonalUserInfo, + component: UserInfo, children: [] } ] @@ -209,7 +211,6 @@ let addrouters = [ { path: "/ask", iconCls: "fa fa-bar-chart", // 图标样式class - name: "ask", name: "随堂问报表", component: Ask, meta: { @@ -219,12 +220,21 @@ let addrouters = [ }, { - path: "/askAnalysis", - iconCls: "", // 图标样式class - name: "随堂问报表分析", - component: AskAnalysis, - parent: "ask", - children: [] + path: "/askList", + iconCls: "fa fa-bar-chart", // 图标样式class + name: "随堂问报表", + component: AskList, + children: [ + { + path: "/askAnalysis", + iconCls: "", // 图标样式class + name: "随堂问报表分析", + component: AskAnalysis, + parent: "askList", + children: [] + }, + + ], }, { path: "/askArchiving", @@ -489,21 +499,21 @@ let addrouters = [ let csAddrouters = [ { path: "/examinationPaper", - iconCls: "fa fa-file-text", + iconCls: "fa fa-file-text", name: "备题组卷", component: Layout, alone: true, children: [ { path: "/examinationPaper", - iconCls: "fa fa-file-text", + iconCls: "fa fa-file-text", name: "examinationPaper", component: ExaminationPaper, children: [] }, { path: "/examinationPaperAdd", - iconCls: "", + iconCls: "", name: "examinationPaperAdd", component: ExaminationPaperAdd, parent: "examinationPaper", @@ -511,7 +521,7 @@ let csAddrouters = [ }, { path: "/examinationPaperEdit", - iconCls: "", + iconCls: "", name: "修改答题卡", component: ExaminationPaperEdit, parent: "examinationPaper", @@ -519,7 +529,7 @@ let csAddrouters = [ }, { path: "/examinationPaperRecycle", - iconCls: "", + iconCls: "", name: "回收站答题卡", component: ExaminationPaperRecycle, parent: "examinationPaper", @@ -527,7 +537,7 @@ let csAddrouters = [ }, { path: "/examinationPaperArchiving", - iconCls: "", + iconCls: "", name: "已归档答题卡", component: ExaminationPaperArchiving, parent: "examinationPaper", @@ -538,14 +548,14 @@ let csAddrouters = [ }, { path: "/ask", - iconCls: "fa fa-bar-chart", + iconCls: "fa fa-bar-chart", name: "随堂问报表", component: Layout, alone: true, children: [ { path: "/ask", - iconCls: "fa fa-bar-chart", + iconCls: "fa fa-bar-chart", name: "ask", name: "随堂问报表", component: Ask, @@ -557,7 +567,7 @@ let csAddrouters = [ }, { path: "/askAnalysis", - iconCls: "", + iconCls: "", name: "随堂问报表分析", component: AskAnalysis, parent: "ask", @@ -567,14 +577,14 @@ let csAddrouters = [ }, { path: "/test", - iconCls: "fa fa-pie-chart", + iconCls: "fa fa-pie-chart", name: "即时测报表", component: Layout, alone: true, children: [ { path: "/test", - iconCls: "fa fa-pie-chart", + iconCls: "fa fa-pie-chart", name: "", component: Test, meta: { @@ -584,7 +594,7 @@ let csAddrouters = [ }, { path: "/testAnalysis", - iconCls: "", + iconCls: "", name: "即时测报表分析", component: TestAnalysis, parent: "test", @@ -595,7 +605,7 @@ let csAddrouters = [ }, { path: "/setUpConglomerate", - iconCls: "fa fa-building", + iconCls: "fa fa-building", name: "学校管理", component: Layout, alone: true, @@ -611,7 +621,7 @@ let csAddrouters = [ }, { path: "/setUpAccount", - iconCls: "fa fa-id-card-o", + iconCls: "fa fa-id-card-o", name: "账号管理", component: Layout, alone: true, @@ -656,14 +666,14 @@ let csAddrouters = [ }, { path: "/card", - iconCls: "fa fa-id-card", + iconCls: "fa fa-id-card", name: "发卡记录", component: Layout, alone: true, children: [ { path: "/card", - iconCls: "fa fa-id-card", + iconCls: "fa fa-id-card", name: "", component: Card, children: [] @@ -672,14 +682,14 @@ let csAddrouters = [ }, { path: "/device", - iconCls: "fa fa-dashboard", + iconCls: "fa fa-dashboard", name: "设备状态", component: Layout, alone: true, children: [ { path: "/device", - iconCls: "fa fa-dashboard", + iconCls: "fa fa-dashboard", name: "", component: Device, meta: { @@ -689,7 +699,7 @@ let csAddrouters = [ }, { path: "/deviceLog", - iconCls: "fa fa-list-alt", + iconCls: "fa fa-list-alt", name: "", component: DeviceLog, parent: "device", @@ -699,14 +709,14 @@ let csAddrouters = [ }, { path: "/analysis", - iconCls: "fa fa-area-chart", + iconCls: "fa fa-area-chart", name: "使用分析", component: Layout, alone: true, children: [ { path: "/analysis", - iconCls: "fa fa-area-chart", + iconCls: "fa fa-area-chart", name: "", component: Analysis, children: [] @@ -715,21 +725,21 @@ let csAddrouters = [ }, { path: "/down", - iconCls: "fa fa-download", + iconCls: "fa fa-download", name: "软件下载", component: Layout, alone: true, children: [ { path: "/down", - iconCls: "fa fa-download", + iconCls: "fa fa-download", name: "发卡软件", component: Down, children: [] }, { path: "/downClient", - iconCls: "", + iconCls: "", name: "授课端软件", component: DownClient, parent: "down", @@ -739,14 +749,14 @@ let csAddrouters = [ }, { path: "/dataSync", - iconCls: "fa fa-random", + iconCls: "fa fa-random", name: "数据同步", component: Layout, alone: true, children: [ { path: "/dataSync", - iconCls: "fa fa-random", + iconCls: "fa fa-random", name: "", component: DataSync, children: [] @@ -768,28 +778,28 @@ const addroutersPersonal = [ path: "/setUpStudent", iconCls: "a fa-mortar-board", name: '', - component: PersonalSetUpStudent, + component: SetUpStudent, children: [] }, ] }, { path: "/examinationPaper", - iconCls: "fa fa-file-text", + iconCls: "fa fa-file-text", name: "备题组卷", component: Layout, alone: true, children: [ { path: "/examinationPaper", - iconCls: "fa fa-file-text", + iconCls: "fa fa-file-text", name: "examinationPaper", component: ExaminationPaper, children: [] }, { path: "/examinationPaperAdd", - iconCls: "", + iconCls: "", name: "examinationPaperAdd", component: ExaminationPaperAdd, parent: "examinationPaper", @@ -797,7 +807,7 @@ const addroutersPersonal = [ }, { path: "/examinationPaperAddAsk", - iconCls: "", + iconCls: "", name: "examinationPaperAddAsk", component: ExaminationPaperAddAsk, parent: "examinationPaper", @@ -805,7 +815,7 @@ const addroutersPersonal = [ }, { path: "/examinationPaperEdit", - iconCls: "", + iconCls: "", name: "修改答题卡", component: ExaminationPaperEdit, parent: "examinationPaper", @@ -813,7 +823,7 @@ const addroutersPersonal = [ }, { path: "/examinationPaperRecycle", - iconCls: "", + iconCls: "", name: "回收站答题卡", component: ExaminationPaperRecycle, parent: "examinationPaper", @@ -821,7 +831,7 @@ const addroutersPersonal = [ }, { path: "/examinationPaperArchiving", - iconCls: "", + iconCls: "", name: "已归档答题卡", component: ExaminationPaperArchiving, parent: "examinationPaper", @@ -832,54 +842,66 @@ const addroutersPersonal = [ }, { path: "/ask", - iconCls: "fa fa-bar-chart", + iconCls: "fa fa-bar-chart", name: "随堂问报表", component: Layout, alone: true, children: [ { path: "/ask", - iconCls: "fa fa-bar-chart", + iconCls: "fa fa-bar-chart", name: "ask", name: "随堂问报表", - component: PersonalAsk, + component: Ask, meta: { - keepAlive: true, + keepAlive: false, }, children: [] }, { - path: "/askAnalysis", - iconCls: "", - name: "随堂问报表分析", - component: PersonalAskAnalysis, - parent: "ask", - children: [] + path: "/askList", + iconCls: "fa fa-bar-chart", // 图标样式class + name: "ask", + name: "随堂问报表", + component: AskList, + meta: { + keepAlive: true, + }, + children: [ + { + path: "/askAnalysis", + iconCls: "", + name: "随堂问报表分析", + component: AskAnalysis, + parent: "ask", + children: [] + }, + { + path: "/askArchiving", + iconCls: "", + name: "随堂问已归档报表分析", + component: AskArchiving, + parent: "ask", + hidden: true, + children: [] + } + ] }, - { - path: "/askArchiving", - iconCls: "", - name: "随堂已归档问报表分析", - component: PersonalArchiving, - parent: "ask", - hidden: true, - children: [] - } ] }, { path: "/test", - iconCls: "fa fa-pie-chart", + iconCls: "fa fa-pie-chart", name: "即时测报表", component: Layout, alone: true, children: [ { path: "/test", - iconCls: "fa fa-pie-chart", + iconCls: "fa fa-pie-chart", name: "", - component: PersonalTest, + component: Test, meta: { keepAlive: true, }, @@ -887,17 +909,17 @@ const addroutersPersonal = [ }, { path: "/testAnalysis", - iconCls: "", + iconCls: "", name: "即时测报表分析", - component: PersonalTestAnalysis, + component: TestAnalysis, parent: "test", children: [] }, { path: "/testArchiving", - iconCls: "", - name: "即时已归档测报表分析", - component: PersonalTestArchiving, + iconCls: "", + name: "即时测已归档报表分析", + component: TestArchiving, parent: "test", hidden: true, children: [] @@ -907,14 +929,14 @@ const addroutersPersonal = [ }, { path: "/portrait", - iconCls: "fa fa-users", + iconCls: "fa fa-users", name: "学生画像", component: Layout, alone: true, children: [ { path: "/portrait", - iconCls: "fa fa-users", + iconCls: "fa fa-users", name: "", component: Portrait, meta: { @@ -924,7 +946,7 @@ const addroutersPersonal = [ }, { path: "/portraitDetail", - iconCls: "", + iconCls: "", name: "授课端软件", component: PortraitDetail, parent: "down", @@ -934,32 +956,32 @@ const addroutersPersonal = [ }, { path: "/dataSync", - iconCls: "fa fa-random", + iconCls: "fa fa-random", name: "数据同步", component: Layout, alone: true, children: [ { path: "/dataSync", - iconCls: "fa fa-random", + iconCls: "fa fa-random", name: "", - component: PersonalDataSync, + component: DataSync, children: [] } ] }, { path: "/down", - iconCls: "fa fa-download", + iconCls: "fa fa-download", name: "软件下载", component: Layout, alone: true, children: [ { path: "/down", - iconCls: "fa fa-download", + iconCls: "fa fa-download", name: "发卡软件", - component: PersonalDown, + component: Down, children: [] } ] @@ -970,7 +992,7 @@ const addroutersPersonal = [ const addRoutersAdmin = [ { path: "/account", - iconCls: "fa fa-id-card-o", + iconCls: "fa fa-id-card-o", name: "账号管理", component: Layout, alone: true, @@ -986,14 +1008,14 @@ const addRoutersAdmin = [ }, { path: "/device", - iconCls: "fa fa-dashboard", + iconCls: "fa fa-dashboard", name: "设备状态", component: Layout, alone: true, children: [ { path: "/device", - iconCls: "fa fa-dashboard", + iconCls: "fa fa-dashboard", name: "", component: AdminDevice, meta: { @@ -1003,7 +1025,7 @@ const addRoutersAdmin = [ }, { path: "/deviceLog", - iconCls: "fa fa-list-alt", + iconCls: "fa fa-list-alt", name: "", component: AdminDeviceLog, parent: "device", diff --git a/src/router/permission.js b/src/router/permission.js index 9ffa8b1..a40d390 100644 --- a/src/router/permission.js +++ b/src/router/permission.js @@ -5,6 +5,17 @@ import store from "../store"; // 获取角色信息,根据用户权限动态加载路由 router.beforeEach((to, from, next) => { NProgress.start(); + let fromRouteName = from.name + if (fromRouteName == '随堂问报表分析') { + sessionStorage.setItem('isFromAskDetail', 1) + } else { + sessionStorage.setItem('isFromAskDetail', "") + } + if (fromRouteName == '即时测报表分析') { + sessionStorage.setItem('isFromTestDetail', 1) + } else { + sessionStorage.setItem('isFromTestDetail', "") + } if (to.path === "/login") { next(); } else { diff --git a/src/views/basic/ask/analysis.vue b/src/views/basic/ask/analysis.vue index a83b49f..a743ec9 100644 --- a/src/views/basic/ask/analysis.vue +++ b/src/views/basic/ask/analysis.vue @@ -7,351 +7,116 @@
- {{ item }} + {{ item.name }}
- +

- 导出报表 - 打印 - + 导出报表 + 打印

+ +
+
+

是否将学生表现折线图一起导出

+ + 不导出 + 导出 + +
+
+

选择要导出的学生

+ + 导出全部 + 导出制定学生 + +
+
+ + +
- - + diff --git a/src/views/basic/ask/components/detail.vue b/src/views/basic/ask/components/detail.vue new file mode 100644 index 0000000..66869e3 --- /dev/null +++ b/src/views/basic/ask/components/detail.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/views/basic/ask/components/example.vue b/src/views/basic/ask/components/example.vue new file mode 100644 index 0000000..ca15c65 --- /dev/null +++ b/src/views/basic/ask/components/example.vue @@ -0,0 +1,68 @@ + + diff --git a/src/views/basic/ask/components/interact.vue b/src/views/basic/ask/components/interact.vue new file mode 100644 index 0000000..09ba7d9 --- /dev/null +++ b/src/views/basic/ask/components/interact.vue @@ -0,0 +1,70 @@ + + diff --git a/src/views/basic/ask/components/report.vue b/src/views/basic/ask/components/report.vue new file mode 100644 index 0000000..0766059 --- /dev/null +++ b/src/views/basic/ask/components/report.vue @@ -0,0 +1,14 @@ + + diff --git a/src/views/basic/ask/index.vue b/src/views/basic/ask/index.vue index 24876fa..d9d483b 100644 --- a/src/views/basic/ask/index.vue +++ b/src/views/basic/ask/index.vue @@ -1,536 +1,79 @@ @@ -1037,6 +239,7 @@ div::-webkit-scrollbar { width: 3px; height: 10px; } + div::-webkit-scrollbar-thumb { border-radius: 10px; background-color: #ccc; @@ -1045,75 +248,138 @@ div::-webkit-scrollbar-thumb { \ No newline at end of file diff --git a/src/views/basic/ask/list.vue b/src/views/basic/ask/list.vue index e69de29..7674135 100644 --- a/src/views/basic/ask/list.vue +++ b/src/views/basic/ask/list.vue @@ -0,0 +1,290 @@ + + + + + \ No newline at end of file diff --git a/src/views/basic/down/index.vue b/src/views/basic/down/index.vue index 3b64cef..3fa7928 100644 --- a/src/views/basic/down/index.vue +++ b/src/views/basic/down/index.vue @@ -5,7 +5,19 @@ 软件下载 -
+ +
+ +
+

+ {{ `${info.appName || ""} ${info.versionName || ""}` }} +

+

文件大小:{{ `${info.fileSize}` }}M

+

最近更新:{{ info.modifiedTime }}

+
+ 立即下载 +
+

K12公私立学校、高等院校、教育培训机构的课堂互动教学、即时课堂测验。 @@ -36,12 +48,23 @@ export default { role: "", loading: false, loadingNet: false, + info: { + id: "", + appName: "", + appImage: "", + versionName: "", + fileSize: "", + modifiedTime: "", + }, }; }, created() { this.role = this.$store.getters.info.showRole || this.$store.getters.info.permissions[0].role; + if (this.role == 'ROLE_PERSONAL') { + this.latestVersion(); + } }, methods: { links() { @@ -49,10 +72,31 @@ export default { path: "/downClient", }); }, + async latestVersion() { + const { data, status, info } = await this.$request.pLatestVersion(); + if (status == 0) { + this.info = { ...data }; + this.info.fileSize = + (this.info.fileSize && + (this.info.fileSize / 1024 / 1024).toFixed(2)) || + "--"; + } else { + this.$message.error(info); + } + }, async downCard() { if (this.loading == true) return; this.loading = true; - const { data, status, info } = await this.$request.latestClickersApp(); + let latestClickersApp; + let query = {} + if (this.role == 'ROLE_PERSONAL') { + latestClickersApp = this.$request.pGetAppDownloadUrl + query.versionId = this.info.id + } else { + latestClickersApp = this.$request.latestClickersApp + } + + const { data, status, info } = await latestClickersApp({ ...query }); this.loading = false; if (status == 0) { const a = document.createElement("a"); @@ -89,10 +133,12 @@ export default { .content-box { width: 100%; } + .page-content { display: flex; padding-top: 50px; margin-left: 160px; + .down-item { width: 200px; padding: 50px 20px; @@ -104,6 +150,7 @@ export default { align-items: center; background: #f8f8f8; box-shadow: 2px 2px 5px #ccc; + .txt { font-size: 16px; color: #7f7f7f; diff --git a/src/views/basic/setUp/clazz.vue b/src/views/basic/setUp/clazz.vue index 71ed7b4..e340bae 100644 --- a/src/views/basic/setUp/clazz.vue +++ b/src/views/basic/setUp/clazz.vue @@ -315,6 +315,7 @@ export default { }); this.diaUp = false; this._QueryData(); + this._QuerySubject(); }, setClass(obj, gradeName) { this.formClass.studentCount = obj.studentCount; diff --git a/src/views/basic/userInfo/index.vue b/src/views/basic/userInfo/index.vue new file mode 100644 index 0000000..ff3de4d --- /dev/null +++ b/src/views/basic/userInfo/index.vue @@ -0,0 +1,326 @@ + + + + + \ No newline at end of file diff --git a/src/views/examinationPaper/edit.vue b/src/views/examinationPaper/edit.vue index 8d8572f..24e58b9 100644 --- a/src/views/examinationPaper/edit.vue +++ b/src/views/examinationPaper/edit.vue @@ -377,8 +377,8 @@ export default { knowledgeData: function () { let jsons = [] if (this.form.sectionName && this.form.subjectName) { - let sectionName = this.form.sectionName - let subjectName = this.form.subjectName + let sectionName = this.form.sectionName || null + let subjectName = this.form.subjectName || null if (sectionName && Object.keys(this.knowledgeList).includes(sectionName)) { if (Object.keys(this.knowledgeList[sectionName]).includes(subjectName)) { jsons = this.knowledgeList[sectionName][subjectName]