Commit 55eb13fd2499f212623caadefc979661f391fd6f
1 parent
5cfb0264
中天提出的交互优化
Showing
3 changed files
with
115 additions
and
46 deletions
src/views/standard/analysis/index.vue
| @@ -59,10 +59,12 @@ | @@ -59,10 +59,12 @@ | ||
| 59 | <span class="s-txt">对比项{{ setBigNum(index) }}:</span> | 59 | <span class="s-txt">对比项{{ setBigNum(index) }}:</span> |
| 60 | <div class="sel-box"> | 60 | <div class="sel-box"> |
| 61 | <el-cascader | 61 | <el-cascader |
| 62 | + :ref="'cascader' + index" | ||
| 62 | size="small" | 63 | size="small" |
| 63 | class="sel sel2" | 64 | class="sel sel2" |
| 64 | clearable | 65 | clearable |
| 65 | placeholder="选择范围" | 66 | placeholder="选择范围" |
| 67 | + @change="secGraClaSubChange($event, index)" | ||
| 66 | v-model="query.secGraClaSub[index]" | 68 | v-model="query.secGraClaSub[index]" |
| 67 | :options="gradeList" | 69 | :options="gradeList" |
| 68 | :props="props" | 70 | :props="props" |
| @@ -79,7 +81,7 @@ | @@ -79,7 +81,7 @@ | ||
| 79 | icon="el-icon-plus" | 81 | icon="el-icon-plus" |
| 80 | size="small" | 82 | size="small" |
| 81 | round | 83 | round |
| 82 | - @click="query.secGraClaSub.push([])" | 84 | + @click="addQuery" |
| 83 | >添加对比项</el-button | 85 | >添加对比项</el-button |
| 84 | > | 86 | > |
| 85 | <el-button class="btn" round size="small" @click="getData" | 87 | <el-button class="btn" round size="small" @click="getData" |
| @@ -97,7 +99,7 @@ | @@ -97,7 +99,7 @@ | ||
| 97 | 99 | ||
| 98 | <script> | 100 | <script> |
| 99 | import barChart from "@/components/charts/barChart"; | 101 | import barChart from "@/components/charts/barChart"; |
| 100 | -import { formatDate, downloadFile } from "@/utils"; | 102 | +import { formatDate } from "@/utils"; |
| 101 | export default { | 103 | export default { |
| 102 | components: { | 104 | components: { |
| 103 | barChart, | 105 | barChart, |
| @@ -114,6 +116,7 @@ export default { | @@ -114,6 +116,7 @@ export default { | ||
| 114 | endDay: "", | 116 | endDay: "", |
| 115 | day: "", | 117 | day: "", |
| 116 | secGraClaSub: [], | 118 | secGraClaSub: [], |
| 119 | + secGraClaSubName: [], | ||
| 117 | }, | 120 | }, |
| 118 | props: { | 121 | props: { |
| 119 | multiple: false, | 122 | multiple: false, |
| @@ -181,6 +184,33 @@ export default { | @@ -181,6 +184,33 @@ export default { | ||
| 181 | this._QueryData(); | 184 | this._QueryData(); |
| 182 | }, | 185 | }, |
| 183 | methods: { | 186 | methods: { |
| 187 | + addQuery() { | ||
| 188 | + this.query.secGraClaSub.push([]); | ||
| 189 | + this.query.secGraClaSubName.push(""); | ||
| 190 | + }, | ||
| 191 | + filterObj(arr, value) { | ||
| 192 | + return arr.filter((item) => { | ||
| 193 | + return value == item.value; | ||
| 194 | + })[0]; | ||
| 195 | + }, | ||
| 196 | + secGraClaSubChange(event, index) { | ||
| 197 | + console.log(event) | ||
| 198 | + let txt = ""; | ||
| 199 | + let xx = this.filterObj(this.gradeList, event[0]); | ||
| 200 | + txt += xx.label; | ||
| 201 | + if (event.length > 1) { | ||
| 202 | + let grade = this.filterObj(xx.children, event[1]); | ||
| 203 | + txt += "/" + grade.label; | ||
| 204 | + if (event.length > 2) { | ||
| 205 | + let clazz = this.filterObj(grade.children, event[2]); | ||
| 206 | + txt += "/" + clazz.label; | ||
| 207 | + if (event.length > 3) { | ||
| 208 | + txt += "/" + event[3]; | ||
| 209 | + } | ||
| 210 | + } | ||
| 211 | + } | ||
| 212 | + this.query.secGraClaSubName[index] = txt; | ||
| 213 | + }, | ||
| 184 | setBigNum(num) { | 214 | setBigNum(num) { |
| 185 | let txt = ""; | 215 | let txt = ""; |
| 186 | let bigNum = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; | 216 | let bigNum = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; |
| @@ -238,16 +268,17 @@ export default { | @@ -238,16 +268,17 @@ export default { | ||
| 238 | removeQuery(index) { | 268 | removeQuery(index) { |
| 239 | let secGraClaSubLen = this.query.secGraClaSub.length; | 269 | let secGraClaSubLen = this.query.secGraClaSub.length; |
| 240 | let xAxisLen = this.xAxis.length; | 270 | let xAxisLen = this.xAxis.length; |
| 271 | + this.query.secGraClaSub.splice(index, 1); | ||
| 272 | + this.query.secGraClaSubName.splice(index, 1); | ||
| 273 | + this.xAxis.splice(index, 1); | ||
| 241 | if ( | 274 | if ( |
| 242 | secGraClaSubLen == xAxisLen || | 275 | secGraClaSubLen == xAxisLen || |
| 243 | (secGraClaSubLen > xAxisLen && index < xAxisLen) | 276 | (secGraClaSubLen > xAxisLen && index < xAxisLen) |
| 244 | ) { | 277 | ) { |
| 245 | - this.xAxis.pop(); | ||
| 246 | this.chartData[0].value.splice(index, 1); | 278 | this.chartData[0].value.splice(index, 1); |
| 247 | this.chartData[1].value.splice(index, 1); | 279 | this.chartData[1].value.splice(index, 1); |
| 248 | this.$refs.barChart.initData(this.xAxis, this.chartData); | 280 | this.$refs.barChart.initData(this.xAxis, this.chartData); |
| 249 | } | 281 | } |
| 250 | - this.query.secGraClaSub.splice(index, 1); | ||
| 251 | }, | 282 | }, |
| 252 | handleChangeTimeStart(val) { | 283 | handleChangeTimeStart(val) { |
| 253 | this.query.day = ""; | 284 | this.query.day = ""; |
| @@ -287,6 +318,7 @@ export default { | @@ -287,6 +318,7 @@ export default { | ||
| 287 | ); | 318 | ); |
| 288 | return; | 319 | return; |
| 289 | } | 320 | } |
| 321 | + this.xAxis = [...this.query.secGraClaSubName]; | ||
| 290 | this._QueryData(); | 322 | this._QueryData(); |
| 291 | }, | 323 | }, |
| 292 | setQuery() { | 324 | setQuery() { |
| @@ -296,7 +328,7 @@ export default { | @@ -296,7 +328,7 @@ export default { | ||
| 296 | query.params = this.query.secGraClaSub.map((item) => { | 328 | query.params = this.query.secGraClaSub.map((item) => { |
| 297 | let jsons = {}; | 329 | let jsons = {}; |
| 298 | jsons.section = item[0]; | 330 | jsons.section = item[0]; |
| 299 | - item.length > 1 ? (jsons.grade = item[1]) : ""; | 331 | + item.length > 1 ? (jsons.clazz = item[1]) : ""; |
| 300 | item.length > 2 ? (jsons.classId = item[2]) : ""; | 332 | item.length > 2 ? (jsons.classId = item[2]) : ""; |
| 301 | item.length == 4 ? (jsons.subjectName = item[3]) : ""; | 333 | item.length == 4 ? (jsons.subjectName = item[3]) : ""; |
| 302 | return jsons; | 334 | return jsons; |
| @@ -327,9 +359,8 @@ export default { | @@ -327,9 +359,8 @@ export default { | ||
| 327 | if (status === 0) { | 359 | if (status === 0) { |
| 328 | this.chartData[0].value = []; | 360 | this.chartData[0].value = []; |
| 329 | this.chartData[1].value = []; | 361 | this.chartData[1].value = []; |
| 330 | - this.xAxis = []; | 362 | + this.xAxis = [...this.query.secGraClaSubName]; |
| 331 | data?.list.map((item, index) => { | 363 | data?.list.map((item, index) => { |
| 332 | - this.xAxis.push("对比项" + this.setBigNum(index)); | ||
| 333 | this.chartData[0].value.push(item.periodCount); | 364 | this.chartData[0].value.push(item.periodCount); |
| 334 | this.chartData[1].value.push(item.examCount); | 365 | this.chartData[1].value.push(item.examCount); |
| 335 | }); | 366 | }); |
| @@ -349,6 +380,7 @@ export default { | @@ -349,6 +380,7 @@ export default { | ||
| 349 | if (status === 0) { | 380 | if (status === 0) { |
| 350 | if (!!data.list) { | 381 | if (!!data.list) { |
| 351 | this.query.secGraClaSub = []; | 382 | this.query.secGraClaSub = []; |
| 383 | + this.query.secGraClaSubName = []; | ||
| 352 | if (this.role != "ROLE_JITUAN") { | 384 | if (this.role != "ROLE_JITUAN") { |
| 353 | this.gradeList = | 385 | this.gradeList = |
| 354 | data.list?.map((item) => { | 386 | data.list?.map((item) => { |
| @@ -382,8 +414,9 @@ export default { | @@ -382,8 +414,9 @@ export default { | ||
| 382 | }; | 414 | }; |
| 383 | }); | 415 | }); |
| 384 | this.gradeList = this.schoolList.map((item) => { | 416 | this.gradeList = this.schoolList.map((item) => { |
| 385 | - if (this.query.secGraClaSub.length < 10) { | 417 | + if (this.query.secGraClaSub.length < 6) { |
| 386 | this.query.secGraClaSub.push([item.id]); | 418 | this.query.secGraClaSub.push([item.id]); |
| 419 | + this.query.secGraClaSubName.push(item.schoolName); | ||
| 387 | } | 420 | } |
| 388 | return { | 421 | return { |
| 389 | value: item.id, | 422 | value: item.id, |
| @@ -404,6 +437,7 @@ export default { | @@ -404,6 +437,7 @@ export default { | ||
| 404 | if (!!data.list) { | 437 | if (!!data.list) { |
| 405 | if (this.role == "ROLE_XUEXIAO") { | 438 | if (this.role == "ROLE_XUEXIAO") { |
| 406 | this.query.secGraClaSub = []; | 439 | this.query.secGraClaSub = []; |
| 440 | + this.query.secGraClaSubName = []; | ||
| 407 | data.list?.map((item) => { | 441 | data.list?.map((item) => { |
| 408 | let subList = item.subjectNames?.map((items) => { | 442 | let subList = item.subjectNames?.map((items) => { |
| 409 | return { | 443 | return { |
| @@ -428,9 +462,12 @@ export default { | @@ -428,9 +462,12 @@ export default { | ||
| 428 | }); | 462 | }); |
| 429 | }) || []; | 463 | }) || []; |
| 430 | this.gradeList.map((sec) => { | 464 | this.gradeList.map((sec) => { |
| 431 | - sec.gradeIds.map((items) => { | ||
| 432 | - if (this.query.secGraClaSub.length < 10) { | ||
| 433 | - this.query.secGraClaSub.push([sec.value, items]); | 465 | + sec.children.map((items) => { |
| 466 | + if (this.query.secGraClaSub.length < 6) { | ||
| 467 | + this.query.secGraClaSub.push([sec.value, items.value]); | ||
| 468 | + this.query.secGraClaSubName.push( | ||
| 469 | + `${sec.label}/${items.label}` | ||
| 470 | + ); | ||
| 434 | } | 471 | } |
| 435 | }); | 472 | }); |
| 436 | }); | 473 | }); |
| @@ -553,6 +590,6 @@ div::-webkit-scrollbar-thumb { | @@ -553,6 +590,6 @@ div::-webkit-scrollbar-thumb { | ||
| 553 | } | 590 | } |
| 554 | } | 591 | } |
| 555 | .chart-box { | 592 | .chart-box { |
| 556 | - height: 600px; | 593 | + height: 400px; |
| 557 | } | 594 | } |
| 558 | </style> | 595 | </style> |
| 559 | \ No newline at end of file | 596 | \ No newline at end of file |
src/views/standard/setUp/clazz.vue
| @@ -66,12 +66,12 @@ | @@ -66,12 +66,12 @@ | ||
| 66 | > | 66 | > |
| 67 | <li class="clazz-li" v-for="clazz in item.classList" :key="item.id"> | 67 | <li class="clazz-li" v-for="clazz in item.classList" :key="item.id"> |
| 68 | <div class="clazz-item"> | 68 | <div class="clazz-item"> |
| 69 | - <p class="clazz-name"> | 69 | + <i |
| 70 | + class="el-icon-edit" | ||
| 71 | + @click.stop="setClass(clazz, item.gradeName)" | ||
| 72 | + ></i> | ||
| 73 | + <p class="clazz-name ellipsis"> | ||
| 70 | {{ clazz.className }} | 74 | {{ clazz.className }} |
| 71 | - <i | ||
| 72 | - class="el-icon-edit" | ||
| 73 | - @click.stop="setClass(clazz, item.gradeName)" | ||
| 74 | - ></i> | ||
| 75 | </p> | 75 | </p> |
| 76 | <div class="clazz-class"> | 76 | <div class="clazz-class"> |
| 77 | <p>学生:{{ clazz.studentCount }}个</p> | 77 | <p>学生:{{ clazz.studentCount }}个</p> |
| @@ -566,11 +566,17 @@ export default { | @@ -566,11 +566,17 @@ export default { | ||
| 566 | } | 566 | } |
| 567 | 567 | ||
| 568 | .clazz-item { | 568 | .clazz-item { |
| 569 | - min-width: 100px; | ||
| 570 | - box-sizing: border-box; | 569 | + width: 96px; |
| 571 | padding: 14px 18px 14px 14px; | 570 | padding: 14px 18px 14px 14px; |
| 572 | border-radius: 10px; | 571 | border-radius: 10px; |
| 573 | box-shadow: 1px 1px 3px #888; | 572 | box-shadow: 1px 1px 3px #888; |
| 573 | + box-sizing: content-box; | ||
| 574 | + position: relative; | ||
| 575 | + } | ||
| 576 | + .el-icon-edit { | ||
| 577 | + position: absolute; | ||
| 578 | + right: 5px; | ||
| 579 | + top: 5px; | ||
| 574 | } | 580 | } |
| 575 | .clazz-name { | 581 | .clazz-name { |
| 576 | font-size: 16px; | 582 | font-size: 16px; |
| @@ -578,11 +584,6 @@ export default { | @@ -578,11 +584,6 @@ export default { | ||
| 578 | line-height: 18px; | 584 | line-height: 18px; |
| 579 | padding-bottom: 6px; | 585 | padding-bottom: 6px; |
| 580 | position: relative; | 586 | position: relative; |
| 581 | - .el-icon-edit { | ||
| 582 | - position: absolute; | ||
| 583 | - right: -16px; | ||
| 584 | - top: -10px; | ||
| 585 | - } | ||
| 586 | } | 587 | } |
| 587 | .clazz-class { | 588 | .clazz-class { |
| 588 | // display: flex; | 589 | // display: flex; |
src/views/standard/setUp/teacher.vue
| @@ -61,8 +61,8 @@ | @@ -61,8 +61,8 @@ | ||
| 61 | placeholder="选择类型" | 61 | placeholder="选择类型" |
| 62 | > | 62 | > |
| 63 | <el-option disabled label="请选择" :value="9"></el-option> | 63 | <el-option disabled label="请选择" :value="9"></el-option> |
| 64 | - <el-option label="已分配教师" :value="0"></el-option> | ||
| 65 | - <el-option label="未分配教师" :value="1"></el-option> | 64 | + <el-option label="已分配任课信息" :value="0"></el-option> |
| 65 | + <el-option label="未分配任课信息" :value="1"></el-option> | ||
| 66 | </el-select> | 66 | </el-select> |
| 67 | <el-input | 67 | <el-input |
| 68 | placeholder="请输入老师姓名" | 68 | placeholder="请输入老师姓名" |
| @@ -251,7 +251,12 @@ | @@ -251,7 +251,12 @@ | ||
| 251 | </div> | 251 | </div> |
| 252 | </div> | 252 | </div> |
| 253 | </div> | 253 | </div> |
| 254 | - <el-dialog :close-on-click-modal="false" title="导入教师名单" :visible.sync="diaUp" width="600"> | 254 | + <el-dialog |
| 255 | + :close-on-click-modal="false" | ||
| 256 | + title="导入教师名单" | ||
| 257 | + :visible.sync="diaUp" | ||
| 258 | + width="600" | ||
| 259 | + > | ||
| 255 | <up-load | 260 | <up-load |
| 256 | id="downTeacher" | 261 | id="downTeacher" |
| 257 | :url="url" | 262 | :url="url" |
| @@ -267,7 +272,8 @@ | @@ -267,7 +272,8 @@ | ||
| 267 | <el-button @click="diaUp = false">取 消</el-button> | 272 | <el-button @click="diaUp = false">取 消</el-button> |
| 268 | </div> | 273 | </div> |
| 269 | </el-dialog> | 274 | </el-dialog> |
| 270 | - <el-dialog :close-on-click-modal="false" | 275 | + <el-dialog |
| 276 | + :close-on-click-modal="false" | ||
| 271 | :title=" | 277 | :title=" |
| 272 | isAdd ? '添加教师' : setTercherType == 1 ? '编辑教师信息' : '管理班级' | 278 | isAdd ? '添加教师' : setTercherType == 1 ? '编辑教师信息' : '管理班级' |
| 273 | " | 279 | " |
| @@ -357,10 +363,10 @@ | @@ -357,10 +363,10 @@ | ||
| 357 | class="sel-t" | 363 | class="sel-t" |
| 358 | collapse | 364 | collapse |
| 359 | clearable | 365 | clearable |
| 360 | - placeholder="选择班级-科目" | 366 | + placeholder="选择年级-科目-班级" |
| 361 | v-model="item.classId" | 367 | v-model="item.classId" |
| 362 | - :options="classList" | ||
| 363 | - :props="{ expandTrigger: 'hover' }" | 368 | + :options="gradeSubListClass" |
| 369 | + :props="{ expandTrigger: 'hover', multiple: true }" | ||
| 364 | ></el-cascader> | 370 | ></el-cascader> |
| 365 | <el-cascader | 371 | <el-cascader |
| 366 | size="small" | 372 | size="small" |
| @@ -415,6 +421,7 @@ export default { | @@ -415,6 +421,7 @@ export default { | ||
| 415 | gradeList: [], | 421 | gradeList: [], |
| 416 | classList: [], | 422 | classList: [], |
| 417 | gradeClassSubList: [], | 423 | gradeClassSubList: [], |
| 424 | + gradeSubListClass: [], | ||
| 418 | teacherList: [], | 425 | teacherList: [], |
| 419 | teacherRoleList: [ | 426 | teacherRoleList: [ |
| 420 | //角色 | 427 | //角色 |
| @@ -602,12 +609,14 @@ export default { | @@ -602,12 +609,14 @@ export default { | ||
| 602 | ?.label || "", | 609 | ?.label || "", |
| 603 | }); | 610 | }); |
| 604 | } else if (item.roleId == 7) { | 611 | } else if (item.roleId == 7) { |
| 605 | - teacherCourseList.push({ | ||
| 606 | - classId: item.classId[0], | ||
| 607 | - className: | ||
| 608 | - this.classList.find((items) => items.value == item.classId[0]) | ||
| 609 | - ?.label || "", | ||
| 610 | - subjectName: item.classId[1], | 612 | + item.classId.map((clazz) => { |
| 613 | + teacherCourseList.push({ | ||
| 614 | + classId: clazz[2], | ||
| 615 | + className: | ||
| 616 | + this.classList.find((items) => items.value == clazz[2]) | ||
| 617 | + ?.label || "", | ||
| 618 | + subjectName: clazz[1], | ||
| 619 | + }); | ||
| 611 | }); | 620 | }); |
| 612 | } else { | 621 | } else { |
| 613 | gradeGroupList.push({ | 622 | gradeGroupList.push({ |
| @@ -645,20 +654,25 @@ export default { | @@ -645,20 +654,25 @@ export default { | ||
| 645 | ], | 654 | ], |
| 646 | }); | 655 | }); |
| 647 | }); | 656 | }); |
| 657 | + let teacherClassId = []; | ||
| 648 | this.formTeacher.teacherCourseList?.map((item) => { | 658 | this.formTeacher.teacherCourseList?.map((item) => { |
| 659 | + teacherClassId.push([ | ||
| 660 | + item.grade, | ||
| 661 | + item.subjectName, | ||
| 662 | + this.classList.find( | ||
| 663 | + (items) => | ||
| 664 | + items.value == item.classId || | ||
| 665 | + items.label.includes(item.className) | ||
| 666 | + ).value, | ||
| 667 | + ]); | ||
| 668 | + }); | ||
| 669 | + if (teacherClassId.length) { | ||
| 649 | this.formTeacher.roleList.push({ | 670 | this.formTeacher.roleList.push({ |
| 650 | id: randomWord(true, 16, 20), | 671 | id: randomWord(true, 16, 20), |
| 651 | roleId: 7, | 672 | roleId: 7, |
| 652 | - classId: [ | ||
| 653 | - this.classList.find( | ||
| 654 | - (items) => | ||
| 655 | - items.value == item.classId || | ||
| 656 | - items.label.includes(item.className) | ||
| 657 | - ).value, | ||
| 658 | - item.subjectName, | ||
| 659 | - ], | 673 | + classId: [...teacherClassId], |
| 660 | }); | 674 | }); |
| 661 | - }); | 675 | + } |
| 662 | this.formTeacher.gradeGroupList?.map((item) => { | 676 | this.formTeacher.gradeGroupList?.map((item) => { |
| 663 | this.formTeacher.roleList.push({ | 677 | this.formTeacher.roleList.push({ |
| 664 | id: randomWord(true, 16, 20), | 678 | id: randomWord(true, 16, 20), |
| @@ -865,6 +879,23 @@ export default { | @@ -865,6 +879,23 @@ export default { | ||
| 865 | }; | 879 | }; |
| 866 | }), | 880 | }), |
| 867 | }); | 881 | }); |
| 882 | + this.gradeSubListClass.push({ | ||
| 883 | + value: item.grade, | ||
| 884 | + label: item.gradeName, | ||
| 885 | + id: item.grade, | ||
| 886 | + children: item.subjectNames.map((items) => { | ||
| 887 | + return { | ||
| 888 | + value: items, | ||
| 889 | + label: items, | ||
| 890 | + children: item.classList.map((clazz) => { | ||
| 891 | + return { | ||
| 892 | + value: clazz.id, | ||
| 893 | + label: clazz.className, | ||
| 894 | + }; | ||
| 895 | + }), | ||
| 896 | + }; | ||
| 897 | + }), | ||
| 898 | + }); | ||
| 868 | return { | 899 | return { |
| 869 | value: item.grade, | 900 | value: item.grade, |
| 870 | label: item.gradeName, | 901 | label: item.gradeName, |