Commit 4c2fb5608109bba0e6062f98bbff6d54c168d517
1 parent
e5e4a3e6
反馈新需求
Showing
8 changed files
with
320 additions
and
86 deletions
src/api/apis/apis.js
| @@ -345,8 +345,8 @@ export default { | @@ -345,8 +345,8 @@ export default { | ||
| 345 | data | 345 | data |
| 346 | }); | 346 | }); |
| 347 | }, | 347 | }, |
| 348 | - //任课老师-学生测练统计 | ||
| 349 | - tStudentExamReport(data) { | 348 | + //任课老师-学生测练统计 |
| 349 | + tStudentExamReport(data) { | ||
| 350 | return service({ | 350 | return service({ |
| 351 | url: setUpUrls.tStudentExamReport, | 351 | url: setUpUrls.tStudentExamReport, |
| 352 | method: "POST", | 352 | method: "POST", |
| @@ -910,6 +910,15 @@ export default { | @@ -910,6 +910,15 @@ export default { | ||
| 910 | method: "POST", | 910 | method: "POST", |
| 911 | }); | 911 | }); |
| 912 | }, | 912 | }, |
| 913 | + // 导出设备列表 | ||
| 914 | + tenantExportDevice(data) { | ||
| 915 | + return service({ | ||
| 916 | + url: setUpUrls.tenantExportDevice, | ||
| 917 | + method: "POST", | ||
| 918 | + data, | ||
| 919 | + responseType: 'arraybuffer', | ||
| 920 | + }); | ||
| 921 | + }, | ||
| 913 | 922 | ||
| 914 | /** 个人版 */ | 923 | /** 个人版 */ |
| 915 | // 修改个人信息 | 924 | // 修改个人信息 |
src/api/urls/apis.js
| @@ -228,6 +228,8 @@ export default { | @@ -228,6 +228,8 @@ export default { | ||
| 228 | exportGradeContrast: "/api_html/tenant/exportGradeContrast", | 228 | exportGradeContrast: "/api_html/tenant/exportGradeContrast", |
| 229 | // 同步教师账号 | 229 | // 同步教师账号 |
| 230 | syncUser: "/api_html/tenant/syncUser", | 230 | syncUser: "/api_html/tenant/syncUser", |
| 231 | + // 导出设备列表 | ||
| 232 | + tenantExportDevice: "/api_html/tenant/exportDevice", | ||
| 231 | 233 | ||
| 232 | 234 | ||
| 233 | // 个人版首页统计数据 | 235 | // 个人版首页统计数据 |
src/views/admin/account/index.vue
| @@ -43,6 +43,7 @@ | @@ -43,6 +43,7 @@ | ||
| 43 | placeholder="请输入账号名称" | 43 | placeholder="请输入账号名称" |
| 44 | v-model="query.loginName" | 44 | v-model="query.loginName" |
| 45 | class="input-with-select" | 45 | class="input-with-select" |
| 46 | + clearable | ||
| 46 | @keyup.enter.native="(page = 1), _QueryData()" | 47 | @keyup.enter.native="(page = 1), _QueryData()" |
| 47 | > | 48 | > |
| 48 | <el-button | 49 | <el-button |
src/views/examinationPaper/edit.vue
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | <div> | 2 | <div> |
| 3 | <back-box> | 3 | <back-box> |
| 4 | <template slot="title"> | 4 | <template slot="title"> |
| 5 | - <span>修改答案</span> | 5 | + <span>{{type == 1?'修改试卷':'修改答案'}}</span> |
| 6 | </template> | 6 | </template> |
| 7 | </back-box> | 7 | </back-box> |
| 8 | <div class="content"> | 8 | <div class="content"> |
| @@ -14,8 +14,12 @@ | @@ -14,8 +14,12 @@ | ||
| 14 | }}老师修改了答案 | 14 | }}老师修改了答案 |
| 15 | </p></template | 15 | </p></template |
| 16 | > | 16 | > |
| 17 | - <div class="answer-title"> | ||
| 18 | - <p class="name">{{ form.title || title }}</p> | 17 | + <div class="answer-title" :class="type == 1?'t-left':''"> |
| 18 | + <p class="name-box" v-if="type == 1"> | ||
| 19 | + <span>试卷名称:</span> | ||
| 20 | + <el-input class="ipt-name" v-model="form.title"></el-input> | ||
| 21 | + </p> | ||
| 22 | + <p class="name" v-else>{{ form.title }}</p> | ||
| 19 | <p class="totals">卷面总分:{{ allScore }}分</p> | 23 | <p class="totals">卷面总分:{{ allScore }}分</p> |
| 20 | </div> | 24 | </div> |
| 21 | <template v-if="questionList[0]?.subQuestions"> | 25 | <template v-if="questionList[0]?.subQuestions"> |
| @@ -528,7 +532,7 @@ export default { | @@ -528,7 +532,7 @@ export default { | ||
| 528 | this.$store.getters.info.showRole || | 532 | this.$store.getters.info.showRole || |
| 529 | this.$store.getters.info.permissions[0].role; | 533 | this.$store.getters.info.permissions[0].role; |
| 530 | this.type = this.$route.query.type || 1; | 534 | this.type = this.$route.query.type || 1; |
| 531 | - this.title = this.$route.query.title || ""; | 535 | + this.form.title = this.$route.query.title || ""; |
| 532 | this._QueryDetail(); | 536 | this._QueryDetail(); |
| 533 | }, | 537 | }, |
| 534 | methods: { | 538 | methods: { |
| @@ -903,7 +907,10 @@ export default { | @@ -903,7 +907,10 @@ export default { | ||
| 903 | questionList: questionList, | 907 | questionList: questionList, |
| 904 | }; | 908 | }; |
| 905 | } | 909 | } |
| 906 | - const { data, status, info } = await modifyPaper(params); | 910 | + const { data, status, info } = await modifyPaper({ |
| 911 | + title: this.form.title, | ||
| 912 | + ...params, | ||
| 913 | + }); | ||
| 907 | if (status == 0) { | 914 | if (status == 0) { |
| 908 | this.$router.go(-1); | 915 | this.$router.go(-1); |
| 909 | } else { | 916 | } else { |
| @@ -1120,10 +1127,26 @@ export default { | @@ -1120,10 +1127,26 @@ export default { | ||
| 1120 | color: #333; | 1127 | color: #333; |
| 1121 | font-weight: 700; | 1128 | font-weight: 700; |
| 1122 | padding: 20px 0; | 1129 | padding: 20px 0; |
| 1130 | + &.t-left{ | ||
| 1131 | + text-align: left; | ||
| 1132 | + } | ||
| 1123 | .totals { | 1133 | .totals { |
| 1124 | font-size: 16px; | 1134 | font-size: 16px; |
| 1125 | - color: #888; | 1135 | + color: #666; |
| 1136 | + font-weight: normal; | ||
| 1137 | + } | ||
| 1138 | + .name-box { | ||
| 1139 | + display: flex; | ||
| 1140 | + white-space: nowrap; | ||
| 1141 | + align-items: center; | ||
| 1142 | + margin-bottom: 10px; | ||
| 1143 | + font-size: 16px; | ||
| 1126 | font-weight: normal; | 1144 | font-weight: normal; |
| 1145 | + :deep(.el-input__inner) { | ||
| 1146 | + font-size: 16px; | ||
| 1147 | + color: #333; | ||
| 1148 | + font-weight: 700; | ||
| 1149 | + } | ||
| 1127 | } | 1150 | } |
| 1128 | } | 1151 | } |
| 1129 | .question-title { | 1152 | .question-title { |
src/views/standard/card/index.vue
| @@ -8,62 +8,92 @@ | @@ -8,62 +8,92 @@ | ||
| 8 | 8 | ||
| 9 | <div class="page-content"> | 9 | <div class="page-content"> |
| 10 | <div class="answer-header"> | 10 | <div class="answer-header"> |
| 11 | - <div class="sel-box" v-if="role == 'ROLE_XUEXIAO'"> | ||
| 12 | - <el-cascader | ||
| 13 | - @change="(page = 1), _QueryData(1)" | ||
| 14 | - size="small" | 11 | + <div class="sel-box"> |
| 12 | + <template v-if="role == 'ROLE_XUEXIAO'"> | ||
| 13 | + <el-cascader | ||
| 14 | + @change="(page = 1), _QueryData(1)" | ||
| 15 | + size="small" | ||
| 16 | + class="sel" | ||
| 17 | + clearable | ||
| 18 | + placeholder="选择班级" | ||
| 19 | + v-model="query.classId" | ||
| 20 | + :options="gradeList" | ||
| 21 | + :props="props" | ||
| 22 | + :show-all-levels="false" | ||
| 23 | + ></el-cascader> | ||
| 24 | + <el-input | ||
| 25 | + placeholder="请输入学生姓名" | ||
| 26 | + v-model="query.studentName" | ||
| 27 | + class="input-with-select" | ||
| 28 | + @keyup.enter.native="(page = 1), _QueryData(2)" | ||
| 29 | + > | ||
| 30 | + <el-button | ||
| 31 | + slot="append" | ||
| 32 | + icon="el-icon-search" | ||
| 33 | + @click="(page = 1), _QueryData(2)" | ||
| 34 | + ></el-button> | ||
| 35 | + </el-input> | ||
| 36 | + <el-input | ||
| 37 | + placeholder="请输入学生学号" | ||
| 38 | + v-model="query.studentCode" | ||
| 39 | + class="input-with-select" | ||
| 40 | + @keyup.enter.native="(page = 1), _QueryData(3)" | ||
| 41 | + > | ||
| 42 | + <el-button | ||
| 43 | + slot="append" | ||
| 44 | + icon="el-icon-search" | ||
| 45 | + @click="(page = 1), _QueryData(3)" | ||
| 46 | + ></el-button> | ||
| 47 | + </el-input> | ||
| 48 | + </template> | ||
| 49 | + <template v-if="role == 'ROLE_JITUAN'"> | ||
| 50 | + <el-select | ||
| 51 | + class="sel2" | ||
| 52 | + v-model="query.schoolId" | ||
| 53 | + placeholder="选择学校" | ||
| 54 | + @change="(page = 1), _QueryData(1)" | ||
| 55 | + > | ||
| 56 | + <el-option | ||
| 57 | + v-for="item in schoolList" | ||
| 58 | + :key="item.value" | ||
| 59 | + :label="item.label" | ||
| 60 | + :value="item.value" | ||
| 61 | + > | ||
| 62 | + </el-option> | ||
| 63 | + </el-select> | ||
| 64 | + </template> | ||
| 65 | + <el-select | ||
| 15 | class="sel" | 66 | class="sel" |
| 16 | - clearable | ||
| 17 | - placeholder="选择班级" | ||
| 18 | - v-model="query.classId" | ||
| 19 | - :options="gradeList" | ||
| 20 | - :props="props" | ||
| 21 | - :show-all-levels="false" | ||
| 22 | - ></el-cascader> | ||
| 23 | - <el-input | ||
| 24 | - placeholder="请输入学生姓名" | ||
| 25 | - v-model="query.studentName" | ||
| 26 | - class="input-with-select" | ||
| 27 | - @keyup.enter.native="(page = 1), _QueryData(2)" | ||
| 28 | - > | ||
| 29 | - <el-button | ||
| 30 | - slot="append" | ||
| 31 | - icon="el-icon-search" | ||
| 32 | - @click="(page = 1), _QueryData(2)" | ||
| 33 | - ></el-button> | ||
| 34 | - </el-input> | ||
| 35 | - <el-input | ||
| 36 | - placeholder="请输入学生学号" | ||
| 37 | - v-model="query.studentCode" | ||
| 38 | - class="input-with-select" | ||
| 39 | - @keyup.enter.native="(page = 1), _QueryData(3)" | 67 | + v-model="query.operationType" |
| 68 | + placeholder="选择类型" | ||
| 40 | > | 69 | > |
| 41 | - <el-button | ||
| 42 | - slot="append" | ||
| 43 | - icon="el-icon-search" | ||
| 44 | - @click="(page = 1), _QueryData(3)" | ||
| 45 | - ></el-button> | ||
| 46 | - </el-input> | 70 | + <el-option label="全部" value=""></el-option> |
| 71 | + <el-option label="发卡" :value="0"></el-option> | ||
| 72 | + <el-option label="补卡" :value="1"></el-option> | ||
| 73 | + </el-select> | ||
| 74 | + <div class="d1"> | ||
| 75 | + <el-date-picker | ||
| 76 | + v-model="query.startDay" | ||
| 77 | + type="date" | ||
| 78 | + @change="handleChangeTimeStart" | ||
| 79 | + placeholder="选择日期时间" | ||
| 80 | + value-format="yyyy-MM-dd" | ||
| 81 | + > | ||
| 82 | + </el-date-picker> | ||
| 83 | + ~ | ||
| 84 | + <el-date-picker | ||
| 85 | + v-model="query.endDay" | ||
| 86 | + type="date" | ||
| 87 | + placeholder="选择日期时间" | ||
| 88 | + @change="handleChangeTimeEnd" | ||
| 89 | + value-format="yyyy-MM-dd" | ||
| 90 | + > | ||
| 91 | + </el-date-picker> | ||
| 92 | + </div> | ||
| 47 | <el-button type="primary" round @click="(page = 1), _QueryData(4)" | 93 | <el-button type="primary" round @click="(page = 1), _QueryData(4)" |
| 48 | >筛选</el-button | 94 | >筛选</el-button |
| 49 | > | 95 | > |
| 50 | </div> | 96 | </div> |
| 51 | - <div class="sel-box" v-if="role == 'ROLE_JITUAN'"> | ||
| 52 | - <el-select | ||
| 53 | - class="sel2" | ||
| 54 | - v-model="schoolId" | ||
| 55 | - placeholder="选择学校" | ||
| 56 | - @change="(page = 1), _QueryData(true)" | ||
| 57 | - > | ||
| 58 | - <el-option | ||
| 59 | - v-for="item in schoolList" | ||
| 60 | - :key="item.value" | ||
| 61 | - :label="item.label" | ||
| 62 | - :value="item.value" | ||
| 63 | - > | ||
| 64 | - </el-option> | ||
| 65 | - </el-select> | ||
| 66 | - </div> | ||
| 67 | </div> | 97 | </div> |
| 68 | <el-empty | 98 | <el-empty |
| 69 | :image-size="100" | 99 | :image-size="100" |
| @@ -162,8 +192,11 @@ export default { | @@ -162,8 +192,11 @@ export default { | ||
| 162 | classId: "", | 192 | classId: "", |
| 163 | studentName: "", | 193 | studentName: "", |
| 164 | studentCode: "", | 194 | studentCode: "", |
| 195 | + operationType: "", | ||
| 196 | + schoolId: "", | ||
| 197 | + startDay: "", | ||
| 198 | + endDay: "", | ||
| 165 | }, | 199 | }, |
| 166 | - schoolId: "", | ||
| 167 | schoolList: [], | 200 | schoolList: [], |
| 168 | gradeList: [], | 201 | gradeList: [], |
| 169 | tableData: [], | 202 | tableData: [], |
| @@ -186,6 +219,22 @@ export default { | @@ -186,6 +219,22 @@ export default { | ||
| 186 | this._QueryData(); | 219 | this._QueryData(); |
| 187 | }, | 220 | }, |
| 188 | methods: { | 221 | methods: { |
| 222 | + handleChangeTimeStart(val) { | ||
| 223 | + if (this.query.endDay) { | ||
| 224 | + if (new Date(val).getTime() > new Date(this.query.endDay).getTime()) { | ||
| 225 | + this.$message.error("任务结束时间不能任务开始时间前面,请重新设置"); | ||
| 226 | + this.query.startDay = ""; | ||
| 227 | + } | ||
| 228 | + } | ||
| 229 | + }, | ||
| 230 | + handleChangeTimeEnd(val) { | ||
| 231 | + if (this.query.startDay) { | ||
| 232 | + if (new Date(val).getTime() < new Date(this.query.startDay).getTime()) { | ||
| 233 | + this.$message.error("任务结束时间不能任务开始时间前面,请重新设置"); | ||
| 234 | + this.query.endDay = ""; | ||
| 235 | + } | ||
| 236 | + } | ||
| 237 | + }, | ||
| 189 | // 查找班级 | 238 | // 查找班级 |
| 190 | async _QueryGradeList() { | 239 | async _QueryGradeList() { |
| 191 | this.loading = true; | 240 | this.loading = true; |
| @@ -227,14 +276,19 @@ export default { | @@ -227,14 +276,19 @@ export default { | ||
| 227 | value: item.id, | 276 | value: item.id, |
| 228 | }; | 277 | }; |
| 229 | }) || []; | 278 | }) || []; |
| 230 | - this.schoolId = (this.schoolList && this.schoolList[0].value) || ""; | 279 | + this.schoolList.unshift({ |
| 280 | + label: "全部", | ||
| 281 | + value: "", | ||
| 282 | + }); | ||
| 283 | + this.query.schoolId = this.schoolList[0].value || ""; | ||
| 231 | } else { | 284 | } else { |
| 232 | this.$message.error(info); | 285 | this.$message.error(info); |
| 233 | } | 286 | } |
| 234 | }, | 287 | }, |
| 235 | - async _QueryData(type) { | 288 | + serQuery(type) { |
| 236 | let query = {}; | 289 | let query = {}; |
| 237 | if (this.role == "ROLE_XUEXIAO") { | 290 | if (this.role == "ROLE_XUEXIAO") { |
| 291 | + delete query.schoolId; | ||
| 238 | query.gradeName = this.query.gradeName; | 292 | query.gradeName = this.query.gradeName; |
| 239 | if (type == 1) { | 293 | if (type == 1) { |
| 240 | query.classId = this.query.classId[1] ? this.query.classId[1] : ""; | 294 | query.classId = this.query.classId[1] ? this.query.classId[1] : ""; |
| @@ -253,8 +307,23 @@ export default { | @@ -253,8 +307,23 @@ export default { | ||
| 253 | query.classId = this.query.classId[1] ? this.query.classId[1] : ""; | 307 | query.classId = this.query.classId[1] ? this.query.classId[1] : ""; |
| 254 | } | 308 | } |
| 255 | } else if (this.role == "ROLE_JITUAN") { | 309 | } else if (this.role == "ROLE_JITUAN") { |
| 256 | - query.schoolId = this.schoolId; | 310 | + query = this.query.schoolId |
| 311 | + ? { | ||
| 312 | + schoolId: this.query.schoolId, | ||
| 313 | + } | ||
| 314 | + : {}; | ||
| 315 | + if (type != 1) { | ||
| 316 | + this.query.operationType | ||
| 317 | + ? (query["operationType"] = this.query.operationType) | ||
| 318 | + : ""; | ||
| 319 | + this.query.startDay ? (query["startDay"] = this.query.startDay) : ""; | ||
| 320 | + this.query.endDay ? (query["endDay"] = this.query.endDay) : ""; | ||
| 321 | + } | ||
| 257 | } | 322 | } |
| 323 | + return query; | ||
| 324 | + }, | ||
| 325 | + async _QueryData(type) { | ||
| 326 | + let query = this.serQuery(type); | ||
| 258 | this.loading = true; | 327 | this.loading = true; |
| 259 | const { data, status, info } = await this.$request.cardList({ | 328 | const { data, status, info } = await this.$request.cardList({ |
| 260 | ...query, | 329 | ...query, |
| @@ -271,10 +340,18 @@ export default { | @@ -271,10 +340,18 @@ export default { | ||
| 271 | } | 340 | } |
| 272 | }, | 341 | }, |
| 273 | async downExl() { | 342 | async downExl() { |
| 343 | + let query = {}; | ||
| 344 | + this.query.operationType | ||
| 345 | + ? (query["operationType"] = this.query.operationType) | ||
| 346 | + : ""; | ||
| 347 | + this.query.startDay ? (query["startDay"] = this.query.startDay) : ""; | ||
| 348 | + this.query.endDay ? (query["endDay"] = this.query.endDay) : ""; | ||
| 274 | //报表导出 | 349 | //报表导出 |
| 275 | if (this.exportLoading == true) return; | 350 | if (this.exportLoading == true) return; |
| 276 | this.exportLoading = true; | 351 | this.exportLoading = true; |
| 277 | - const data = await this.$request.exportClickersLog(); | 352 | + const data = await this.$request.exportClickersLog({ |
| 353 | + ...query, | ||
| 354 | + }); | ||
| 278 | this.exportLoading = false; | 355 | this.exportLoading = false; |
| 279 | if (data && !data.code) { | 356 | if (data && !data.code) { |
| 280 | let blob = new Blob([data], { | 357 | let blob = new Blob([data], { |
| @@ -298,7 +375,15 @@ export default { | @@ -298,7 +375,15 @@ export default { | ||
| 298 | .down { | 375 | .down { |
| 299 | padding: 16px 20px; | 376 | padding: 16px 20px; |
| 300 | } | 377 | } |
| 301 | -.answer-header .sel-box .sel2 { | ||
| 302 | - width: 300px; | 378 | +.answer-header { |
| 379 | + .sel-box { | ||
| 380 | + .sel2 { | ||
| 381 | + width: 300px; | ||
| 382 | + margin-right: 20px; | ||
| 383 | + } | ||
| 384 | + .d1 { | ||
| 385 | + margin-right: 20px; | ||
| 386 | + } | ||
| 387 | + } | ||
| 303 | } | 388 | } |
| 304 | </style> | 389 | </style> |
| 305 | \ No newline at end of file | 390 | \ No newline at end of file |
src/views/standard/device/index.vue
| @@ -82,6 +82,7 @@ | @@ -82,6 +82,7 @@ | ||
| 82 | placeholder="请输入设备编码" | 82 | placeholder="请输入设备编码" |
| 83 | v-model="query.sn" | 83 | v-model="query.sn" |
| 84 | class="input-with-select" | 84 | class="input-with-select" |
| 85 | + clearable | ||
| 85 | @keyup.enter.native="_QueryData(true)" | 86 | @keyup.enter.native="_QueryData(true)" |
| 86 | > | 87 | > |
| 87 | <el-button | 88 | <el-button |
| @@ -105,6 +106,7 @@ | @@ -105,6 +106,7 @@ | ||
| 105 | prop="frequency" | 106 | prop="frequency" |
| 106 | label="频点" | 107 | label="频点" |
| 107 | align="center" | 108 | align="center" |
| 109 | + width="60" | ||
| 108 | ></el-table-column> | 110 | ></el-table-column> |
| 109 | <el-table-column | 111 | <el-table-column |
| 110 | prop="pairingCode" | 112 | prop="pairingCode" |
| @@ -149,8 +151,15 @@ | @@ -149,8 +151,15 @@ | ||
| 149 | prop="onlineTime" | 151 | prop="onlineTime" |
| 150 | label="最近上报" | 152 | label="最近上报" |
| 151 | align="center" | 153 | align="center" |
| 154 | + width="160" | ||
| 155 | + ></el-table-column> | ||
| 156 | + <el-table-column | ||
| 157 | + prop="createdTime" | ||
| 158 | + label="创建时间" | ||
| 159 | + align="center" | ||
| 160 | + width="160" | ||
| 152 | ></el-table-column> | 161 | ></el-table-column> |
| 153 | - <el-table-column label="状态" align="center" | 162 | + <el-table-column label="状态" align="center" width="60" |
| 154 | ><template slot-scope="scope"> | 163 | ><template slot-scope="scope"> |
| 155 | {{ | 164 | {{ |
| 156 | scope.row.onlineStatus == 1 | 165 | scope.row.onlineStatus == 1 |
| @@ -236,6 +245,20 @@ | @@ -236,6 +245,20 @@ | ||
| 236 | placeholder="请输入设备编码" | 245 | placeholder="请输入设备编码" |
| 237 | v-model="query.sn" | 246 | v-model="query.sn" |
| 238 | class="input-with-select" | 247 | class="input-with-select" |
| 248 | + clearable | ||
| 249 | + @keyup.enter.native="_QueryData(true)" | ||
| 250 | + > | ||
| 251 | + <el-button | ||
| 252 | + slot="append" | ||
| 253 | + icon="el-icon-search" | ||
| 254 | + @click="_QueryData(true)" | ||
| 255 | + ></el-button> | ||
| 256 | + </el-input> | ||
| 257 | + <el-input | ||
| 258 | + placeholder="学生姓名" | ||
| 259 | + v-model="query.studentName" | ||
| 260 | + class="input-with-select" | ||
| 261 | + clearable | ||
| 239 | @keyup.enter.native="_QueryData(true)" | 262 | @keyup.enter.native="_QueryData(true)" |
| 240 | > | 263 | > |
| 241 | <el-button | 264 | <el-button |
| @@ -254,8 +277,9 @@ | @@ -254,8 +277,9 @@ | ||
| 254 | prop="sn" | 277 | prop="sn" |
| 255 | label="设备编码" | 278 | label="设备编码" |
| 256 | align="center" | 279 | align="center" |
| 280 | + width="160" | ||
| 257 | ></el-table-column> | 281 | ></el-table-column> |
| 258 | - <el-table-column label="学生信息" align="center" | 282 | + <el-table-column label="学生信息" align="center" width="120" |
| 259 | ><template slot-scope="scoped" | 283 | ><template slot-scope="scoped" |
| 260 | ><p | 284 | ><p |
| 261 | v-for="(item, index) in scoped.row.studentList" | 285 | v-for="(item, index) in scoped.row.studentList" |
| @@ -276,13 +300,19 @@ | @@ -276,13 +300,19 @@ | ||
| 276 | prop="gradeName" | 300 | prop="gradeName" |
| 277 | label="年级" | 301 | label="年级" |
| 278 | align="center" | 302 | align="center" |
| 303 | + width="120" | ||
| 279 | ><template slot-scope="scoped"> | 304 | ><template slot-scope="scoped"> |
| 280 | <p v-for="(item, index) in scoped.row.classList" :key="index"> | 305 | <p v-for="(item, index) in scoped.row.classList" :key="index"> |
| 281 | {{ item.gradeName }} | 306 | {{ item.gradeName }} |
| 282 | </p> | 307 | </p> |
| 283 | </template></el-table-column | 308 | </template></el-table-column |
| 284 | > | 309 | > |
| 285 | - <el-table-column prop="class" label="关联班级" align="center"> | 310 | + <el-table-column |
| 311 | + prop="class" | ||
| 312 | + label="关联班级" | ||
| 313 | + align="center" | ||
| 314 | + width="160" | ||
| 315 | + > | ||
| 286 | <template slot-scope="scoped"> | 316 | <template slot-scope="scoped"> |
| 287 | <p v-for="(item, index) in scoped.row.classList" :key="index"> | 317 | <p v-for="(item, index) in scoped.row.classList" :key="index"> |
| 288 | {{ item.className }} | 318 | {{ item.className }} |
| @@ -303,8 +333,9 @@ | @@ -303,8 +333,9 @@ | ||
| 303 | prop="latestReportTime" | 333 | prop="latestReportTime" |
| 304 | label="最后答题时间" | 334 | label="最后答题时间" |
| 305 | align="center" | 335 | align="center" |
| 336 | + width="160" | ||
| 306 | ></el-table-column> | 337 | ></el-table-column> |
| 307 | - <el-table-column label="操作" align="center" | 338 | + <el-table-column label="操作" align="center" width="80" |
| 308 | ><template slot-scope="scoped"> | 339 | ><template slot-scope="scoped"> |
| 309 | <el-tooltip effect="dark" content="日志" placement="top"> | 340 | <el-tooltip effect="dark" content="日志" placement="top"> |
| 310 | <el-button | 341 | <el-button |
| @@ -359,7 +390,7 @@ | @@ -359,7 +390,7 @@ | ||
| 359 | label="设备编码" | 390 | label="设备编码" |
| 360 | align="center" | 391 | align="center" |
| 361 | ></el-table-column> | 392 | ></el-table-column> |
| 362 | - <el-table-column prop="class" label="关联班级" align="center" | 393 | + <el-table-column prop="class" label="关联班级" align="center" width="100" |
| 363 | ><template slot-scope="scoped"> | 394 | ><template slot-scope="scoped"> |
| 364 | <p v-for="(item, index) in scoped.row.classList" :key="index"> | 395 | <p v-for="(item, index) in scoped.row.classList" :key="index"> |
| 365 | {{ item.className }} | 396 | {{ item.className }} |
| @@ -373,6 +404,18 @@ | @@ -373,6 +404,18 @@ | ||
| 373 | align="center" | 404 | align="center" |
| 374 | ></el-table-column> | 405 | ></el-table-column> |
| 375 | <el-table-column | 406 | <el-table-column |
| 407 | + v-if="role == 'ROLE_JITUAN'" | ||
| 408 | + prop="gradeName" | ||
| 409 | + label="年级" | ||
| 410 | + align="center" | ||
| 411 | + width="80" | ||
| 412 | + ><template slot-scope="scoped"> | ||
| 413 | + <p v-for="(item, index) in scoped.row.classList" :key="index"> | ||
| 414 | + {{ item.gradeName }} | ||
| 415 | + </p> | ||
| 416 | + </template></el-table-column | ||
| 417 | + > | ||
| 418 | + <el-table-column | ||
| 376 | prop="lastUpdateTime" | 419 | prop="lastUpdateTime" |
| 377 | label="最近更新" | 420 | label="最近更新" |
| 378 | align="center" | 421 | align="center" |
| @@ -391,8 +434,9 @@ | @@ -391,8 +434,9 @@ | ||
| 391 | prop="otaVersionName" | 434 | prop="otaVersionName" |
| 392 | label="版本号" | 435 | label="版本号" |
| 393 | align="center" | 436 | align="center" |
| 437 | + width="80" | ||
| 394 | ></el-table-column> | 438 | ></el-table-column> |
| 395 | - <el-table-column label="状态" align="center" | 439 | + <el-table-column label="状态" align="center" width="80" |
| 396 | ><template slot-scope="scope"> | 440 | ><template slot-scope="scope"> |
| 397 | {{ | 441 | {{ |
| 398 | scope.row.onlineStatus == 1 | 442 | scope.row.onlineStatus == 1 |
| @@ -402,8 +446,8 @@ | @@ -402,8 +446,8 @@ | ||
| 402 | : "离线" | 446 | : "离线" |
| 403 | }} | 447 | }} |
| 404 | </template></el-table-column | 448 | </template></el-table-column |
| 405 | - > | ||
| 406 | - <el-table-column label="自动更新" align="center" | 449 | + > |
| 450 | + <el-table-column label="自动更新" align="center" width="100" | ||
| 407 | ><template slot-scope="scoped"> | 451 | ><template slot-scope="scoped"> |
| 408 | <el-switch | 452 | <el-switch |
| 409 | v-model="scoped.row.upgradeFlag" | 453 | v-model="scoped.row.upgradeFlag" |
| @@ -544,6 +588,7 @@ export default { | @@ -544,6 +588,7 @@ export default { | ||
| 544 | this.query.classId = []; | 588 | this.query.classId = []; |
| 545 | this.query.onlineStatus = ""; | 589 | this.query.onlineStatus = ""; |
| 546 | this.query.sn = ""; | 590 | this.query.sn = ""; |
| 591 | + this.query.studentName = ""; | ||
| 547 | this.query.type = ""; | 592 | this.query.type = ""; |
| 548 | if (val == 1) { | 593 | if (val == 1) { |
| 549 | this.stationReport(); | 594 | this.stationReport(); |
| @@ -555,17 +600,16 @@ export default { | @@ -555,17 +600,16 @@ export default { | ||
| 555 | }, | 600 | }, |
| 556 | data() { | 601 | data() { |
| 557 | return { | 602 | return { |
| 558 | - exportLoading: false, | ||
| 559 | - isAdd: false, //添加还是修改基站 | ||
| 560 | - role: "", | ||
| 561 | code: "", | 603 | code: "", |
| 604 | + role: "", | ||
| 562 | loading: false, | 605 | loading: false, |
| 606 | + exportLoading: false, | ||
| 607 | + isAdd: false, //添加还是修改基站 | ||
| 563 | url: "/api_html/school/manager/importStation", | 608 | url: "/api_html/school/manager/importStation", |
| 564 | diaUp: false, | 609 | diaUp: false, |
| 565 | diaAnswerEqu: false, | 610 | diaAnswerEqu: false, |
| 566 | - gradeList: [], | ||
| 567 | - gradeListAll: [], | ||
| 568 | - schoolAll: [], | 611 | + gradeList: [], //年级列表 |
| 612 | + schoolAll: [], //所有学校刘表 | ||
| 569 | school: {}, //校园账号所属学校信息 | 613 | school: {}, //校园账号所属学校信息 |
| 570 | props: { | 614 | props: { |
| 571 | multiple: true, | 615 | multiple: true, |
| @@ -577,6 +621,7 @@ export default { | @@ -577,6 +621,7 @@ export default { | ||
| 577 | onlineStatus: "", | 621 | onlineStatus: "", |
| 578 | sn: "", | 622 | sn: "", |
| 579 | type: "", | 623 | type: "", |
| 624 | + studentName: "", | ||
| 580 | }, | 625 | }, |
| 581 | statusList: [ | 626 | statusList: [ |
| 582 | { label: "全部", value: "" }, | 627 | { label: "全部", value: "" }, |
| @@ -594,6 +639,7 @@ export default { | @@ -594,6 +639,7 @@ export default { | ||
| 594 | { label: "3月以上", value: 6 }, | 639 | { label: "3月以上", value: 6 }, |
| 595 | ], | 640 | ], |
| 596 | form: { | 641 | form: { |
| 642 | + //修改/添加基站信息 | ||
| 597 | deviceId: "", | 643 | deviceId: "", |
| 598 | sn: "", | 644 | sn: "", |
| 599 | frequency: "", | 645 | frequency: "", |
| @@ -607,17 +653,17 @@ export default { | @@ -607,17 +653,17 @@ export default { | ||
| 607 | pairingCode: [ | 653 | pairingCode: [ |
| 608 | { required: true, message: "请输入配对码", trigger: "blur" }, | 654 | { required: true, message: "请输入配对码", trigger: "blur" }, |
| 609 | ], | 655 | ], |
| 610 | - classIds: [{ required: true, message: "请选择班级", trigger: "blur" }], | 656 | + // classIds: [{ required: true, message: "请选择班级", trigger: "blur" }], |
| 611 | }, | 657 | }, |
| 612 | tableData: [], | 658 | tableData: [], |
| 613 | total: 0, | 659 | total: 0, |
| 614 | count: 0, | 660 | count: 0, |
| 615 | chartData: [], | 661 | chartData: [], |
| 616 | chartData2: [], | 662 | chartData2: [], |
| 617 | - selectionTabIds: [], | 663 | + selectionTabIds: [], //已选择授课段 |
| 618 | page: 1, | 664 | page: 1, |
| 619 | size: 20, | 665 | size: 20, |
| 620 | - isBack: false, | 666 | + isBack: false, //是否是日志页面回来 |
| 621 | }; | 667 | }; |
| 622 | }, | 668 | }, |
| 623 | created() { | 669 | created() { |
| @@ -849,8 +895,13 @@ export default { | @@ -849,8 +895,13 @@ export default { | ||
| 849 | //报表导出 | 895 | //报表导出 |
| 850 | if (this.exportLoading == true) return; | 896 | if (this.exportLoading == true) return; |
| 851 | let query = this.setQuery(); | 897 | let query = this.setQuery(); |
| 898 | + const exportDevice = | ||
| 899 | + this.role != "ROLE_JITUAN" | ||
| 900 | + ? this.$request.exportDevice | ||
| 901 | + : this.$request.tenantExportDevice; | ||
| 902 | + | ||
| 852 | this.exportLoading = true; | 903 | this.exportLoading = true; |
| 853 | - const data = await this.$request.exportDevice({ | 904 | + const data = await exportDevice({ |
| 854 | ...query, | 905 | ...query, |
| 855 | deviceType: this.type, | 906 | deviceType: this.type, |
| 856 | }); | 907 | }); |
| @@ -1023,6 +1074,8 @@ export default { | @@ -1023,6 +1074,8 @@ export default { | ||
| 1023 | let query = {}; | 1074 | let query = {}; |
| 1024 | if (this.query.sn) { | 1075 | if (this.query.sn) { |
| 1025 | query.sn = this.query.sn; | 1076 | query.sn = this.query.sn; |
| 1077 | + } else if (this.query.studentName) { | ||
| 1078 | + query.studentName = this.query.studentName; | ||
| 1026 | } else { | 1079 | } else { |
| 1027 | if (this.type == 1) { | 1080 | if (this.type == 1) { |
| 1028 | this.query.onlineStatus !== "" | 1081 | this.query.onlineStatus !== "" |
| @@ -1202,4 +1255,13 @@ export default { | @@ -1202,4 +1255,13 @@ export default { | ||
| 1202 | } | 1255 | } |
| 1203 | } | 1256 | } |
| 1204 | } | 1257 | } |
| 1258 | +.answer-header .sel-box .input-with-select { | ||
| 1259 | + margin-right: 20px; | ||
| 1260 | + :deep(.el-input__suffix) { | ||
| 1261 | + right: -5px; | ||
| 1262 | + } | ||
| 1263 | + :deep(.el-button) { | ||
| 1264 | + padding: 12px 16px 12px 10px; | ||
| 1265 | + } | ||
| 1266 | +} | ||
| 1205 | </style> | 1267 | </style> |
| 1206 | \ No newline at end of file | 1268 | \ No newline at end of file |
src/views/standard/setUp/account.vue
| @@ -86,8 +86,9 @@ | @@ -86,8 +86,9 @@ | ||
| 86 | role != 'ROLE_JITUAN' ? '请输入老师账号' : '请输入账号名称' | 86 | role != 'ROLE_JITUAN' ? '请输入老师账号' : '请输入账号名称' |
| 87 | " | 87 | " |
| 88 | v-model="query.loginName" | 88 | v-model="query.loginName" |
| 89 | - class="input-with-select" | 89 | + class="input-with-select sel" |
| 90 | type="number" | 90 | type="number" |
| 91 | + clearable | ||
| 91 | oninput="if(value.length > 11) value = value.slice(0,11)" | 92 | oninput="if(value.length > 11) value = value.slice(0,11)" |
| 92 | @keyup.enter.native="(page = 1), _QueryData(2)" | 93 | @keyup.enter.native="(page = 1), _QueryData(2)" |
| 93 | > | 94 | > |
| @@ -98,11 +99,11 @@ | @@ -98,11 +99,11 @@ | ||
| 98 | ></el-button> | 99 | ></el-button> |
| 99 | </el-input> | 100 | </el-input> |
| 100 | <el-input | 101 | <el-input |
| 101 | - v-if="role != 'ROLE_JITUAN'" | ||
| 102 | placeholder="请输入老师姓名" | 102 | placeholder="请输入老师姓名" |
| 103 | maxlength="30" | 103 | maxlength="30" |
| 104 | v-model="query.realName" | 104 | v-model="query.realName" |
| 105 | class="input-with-select" | 105 | class="input-with-select" |
| 106 | + clearable | ||
| 106 | @keyup.enter.native="(page = 1), _QueryData(3)" | 107 | @keyup.enter.native="(page = 1), _QueryData(3)" |
| 107 | > | 108 | > |
| 108 | <el-button | 109 | <el-button |
| @@ -227,6 +228,7 @@ | @@ -227,6 +228,7 @@ | ||
| 227 | <el-input | 228 | <el-input |
| 228 | placeholder="请输入联系电话" | 229 | placeholder="请输入联系电话" |
| 229 | v-model.trim="formCount.loginName" | 230 | v-model.trim="formCount.loginName" |
| 231 | + clearable | ||
| 230 | maxlength="11" | 232 | maxlength="11" |
| 231 | > | 233 | > |
| 232 | </el-input> | 234 | </el-input> |
| @@ -237,6 +239,7 @@ | @@ -237,6 +239,7 @@ | ||
| 237 | <el-input | 239 | <el-input |
| 238 | placeholder="请输入教师姓名" | 240 | placeholder="请输入教师姓名" |
| 239 | v-model.trim="formCount.realName" | 241 | v-model.trim="formCount.realName" |
| 242 | + clearable | ||
| 240 | maxlength="11" | 243 | maxlength="11" |
| 241 | > | 244 | > |
| 242 | </el-input> | 245 | </el-input> |
| @@ -262,6 +265,7 @@ | @@ -262,6 +265,7 @@ | ||
| 262 | placeholder="请输入联系电话" | 265 | placeholder="请输入联系电话" |
| 263 | v-model.trim="formAddCount.phone" | 266 | v-model.trim="formAddCount.phone" |
| 264 | type="number" | 267 | type="number" |
| 268 | + clearable | ||
| 265 | oninput="if(value.length > 11) value = value.slice(0,11)" | 269 | oninput="if(value.length > 11) value = value.slice(0,11)" |
| 266 | > | 270 | > |
| 267 | </el-input> | 271 | </el-input> |
| @@ -272,6 +276,7 @@ | @@ -272,6 +276,7 @@ | ||
| 272 | <el-input | 276 | <el-input |
| 273 | placeholder="请输入密码" | 277 | placeholder="请输入密码" |
| 274 | v-model.trim="formAddCount.password" | 278 | v-model.trim="formAddCount.password" |
| 279 | + clearable | ||
| 275 | maxlength="18" | 280 | maxlength="18" |
| 276 | > | 281 | > |
| 277 | </el-input> | 282 | </el-input> |
| @@ -282,6 +287,7 @@ | @@ -282,6 +287,7 @@ | ||
| 282 | <el-input | 287 | <el-input |
| 283 | placeholder="请输入姓名" | 288 | placeholder="请输入姓名" |
| 284 | v-model.trim="formAddCount.realName" | 289 | v-model.trim="formAddCount.realName" |
| 290 | + clearable | ||
| 285 | maxlength="30" | 291 | maxlength="30" |
| 286 | > | 292 | > |
| 287 | </el-input> | 293 | </el-input> |
| @@ -686,7 +692,6 @@ export default { | @@ -686,7 +692,6 @@ export default { | ||
| 686 | query = { ...this.query }; | 692 | query = { ...this.query }; |
| 687 | } | 693 | } |
| 688 | if (this.role == "ROLE_JITUAN") { | 694 | if (this.role == "ROLE_JITUAN") { |
| 689 | - delete query.realName; | ||
| 690 | query.regionIds = []; | 695 | query.regionIds = []; |
| 691 | query.schoolIds = []; | 696 | query.schoolIds = []; |
| 692 | query.schoolId?.map((item) => { | 697 | query.schoolId?.map((item) => { |
| @@ -703,6 +708,15 @@ export default { | @@ -703,6 +708,15 @@ export default { | ||
| 703 | } | 708 | } |
| 704 | } | 709 | } |
| 705 | }); | 710 | }); |
| 711 | + if (type == 2) { | ||
| 712 | + this.query.realName = ""; | ||
| 713 | + query.loginName = this.query.loginName; | ||
| 714 | + } else if (type == 3) { | ||
| 715 | + this.query.loginName = ""; | ||
| 716 | + query.realName = this.query.realName; | ||
| 717 | + } else { | ||
| 718 | + query = { ...this.query }; | ||
| 719 | + } | ||
| 706 | delete query.schoolId; | 720 | delete query.schoolId; |
| 707 | } | 721 | } |
| 708 | return query; | 722 | return query; |
| @@ -752,4 +766,14 @@ export default { | @@ -752,4 +766,14 @@ export default { | ||
| 752 | .table-box { | 766 | .table-box { |
| 753 | padding: 0 20px; | 767 | padding: 0 20px; |
| 754 | } | 768 | } |
| 769 | +.answer-header{ | ||
| 770 | + .sel-box{ | ||
| 771 | + .sel{ | ||
| 772 | + margin-right:20px; | ||
| 773 | + } | ||
| 774 | + } | ||
| 775 | + :deep(.el-input-group__append){ | ||
| 776 | + padding:0 20px 0 12px; | ||
| 777 | + } | ||
| 778 | +} | ||
| 755 | </style> | 779 | </style> |
| 756 | \ No newline at end of file | 780 | \ No newline at end of file |
src/views/standard/setUp/school.vue
| @@ -57,6 +57,10 @@ | @@ -57,6 +57,10 @@ | ||
| 57 | <span class="s1">所属集团:</span> | 57 | <span class="s1">所属集团:</span> |
| 58 | <span class="s2">{{ school.tenantName || "--" }}</span> | 58 | <span class="s2">{{ school.tenantName || "--" }}</span> |
| 59 | </li> | 59 | </li> |
| 60 | + <li class="school-item"> | ||
| 61 | + <span class="s1">基站登录密码 :</span> | ||
| 62 | + <span class="s2">{{ school.stationPwd || "--" }}</span> | ||
| 63 | + </li> | ||
| 60 | </ul> | 64 | </ul> |
| 61 | <div class="grade-box"> | 65 | <div class="grade-box"> |
| 62 | <p class="h-title"> | 66 | <p class="h-title"> |
| @@ -187,6 +191,16 @@ | @@ -187,6 +191,16 @@ | ||
| 187 | ></el-input> | 191 | ></el-input> |
| 188 | </el-col> | 192 | </el-col> |
| 189 | </el-form-item> | 193 | </el-form-item> |
| 194 | + <el-form-item label="基站登录密码:" prop="stationPwd"> | ||
| 195 | + <el-col :span="10"> | ||
| 196 | + <el-input | ||
| 197 | + maxlength="6" | ||
| 198 | + v-model="formSchool.stationPwd" | ||
| 199 | + show-password | ||
| 200 | + placeholder="请输入基站登录密码" | ||
| 201 | + ></el-input> | ||
| 202 | + </el-col> | ||
| 203 | + </el-form-item> | ||
| 190 | <el-form-item label="联系人:" prop="contactPerson" | 204 | <el-form-item label="联系人:" prop="contactPerson" |
| 191 | ><el-col :span="10" | 205 | ><el-col :span="10" |
| 192 | ><el-input | 206 | ><el-input |
| @@ -279,6 +293,7 @@ export default { | @@ -279,6 +293,7 @@ export default { | ||
| 279 | //修改学校 | 293 | //修改学校 |
| 280 | sections: "", | 294 | sections: "", |
| 281 | managePwd: "", | 295 | managePwd: "", |
| 296 | + stationPwd: "", | ||
| 282 | contactPerson: "", | 297 | contactPerson: "", |
| 283 | contactPhone: "", | 298 | contactPhone: "", |
| 284 | }, | 299 | }, |
| @@ -293,6 +308,15 @@ export default { | @@ -293,6 +308,15 @@ export default { | ||
| 293 | trigger: "blur", | 308 | trigger: "blur", |
| 294 | }, | 309 | }, |
| 295 | ], | 310 | ], |
| 311 | + stationPwd: [ | ||
| 312 | + { required: true, message: "请填写基站登陆密码", trigger: "blur" }, | ||
| 313 | + { | ||
| 314 | + min: 6, | ||
| 315 | + max: 6, | ||
| 316 | + message: "长度为 6 个字符", | ||
| 317 | + trigger: "blur", | ||
| 318 | + }, | ||
| 319 | + ], | ||
| 296 | }, | 320 | }, |
| 297 | formGrade: { | 321 | formGrade: { |
| 298 | //修改年级 | 322 | //修改年级 |
| @@ -368,6 +392,10 @@ export default { | @@ -368,6 +392,10 @@ export default { | ||
| 368 | this.$message.error("请填写密码!"); | 392 | this.$message.error("请填写密码!"); |
| 369 | return; | 393 | return; |
| 370 | } | 394 | } |
| 395 | + if (!this.formSchool.stationPwd) { | ||
| 396 | + this.$message.error("请填写基站登录密码!"); | ||
| 397 | + return; | ||
| 398 | + } | ||
| 371 | if (this.loading) { | 399 | if (this.loading) { |
| 372 | return; | 400 | return; |
| 373 | } | 401 | } |