Commit 53424e83366f877003ee875c886a3f634d93ea61
1 parent
dc56294d
教师管理筛选条件
Showing
3 changed files
with
124 additions
and
42 deletions
router
src/views/standard/down/index.vue
@@ -12,12 +12,16 @@ | @@ -12,12 +12,16 @@ | ||
12 | </p> | 12 | </p> |
13 | <el-button plan round @click="links">授课端下载</el-button> | 13 | <el-button plan round @click="links">授课端下载</el-button> |
14 | </div> | 14 | </div> |
15 | - <div class="down-item" v-loading="loading"> | 15 | + <div class="down-item" v-loading="loading" v-if="role != 'ROLE_JIAOSHI'"> |
16 | <p class="txt"> | 16 | <p class="txt"> |
17 | 配合发卡器硬件,方便学校管理员进行发卡补卡操作的软件。 | 17 | 配合发卡器硬件,方便学校管理员进行发卡补卡操作的软件。 |
18 | </p> | 18 | </p> |
19 | <el-button plan round @click="downCard">发卡软件下载</el-button> | 19 | <el-button plan round @click="downCard">发卡软件下载</el-button> |
20 | </div> | 20 | </div> |
21 | + <div class="down-item" v-loading="loading"> | ||
22 | + <p class="txt">。</p> | ||
23 | + <el-button plan round @click="downNet">.Net环境下载</el-button> | ||
24 | + </div> | ||
21 | </div> | 25 | </div> |
22 | </div> | 26 | </div> |
23 | </template> | 27 | </template> |
@@ -26,9 +30,16 @@ | @@ -26,9 +30,16 @@ | ||
26 | export default { | 30 | export default { |
27 | data() { | 31 | data() { |
28 | return { | 32 | return { |
33 | + role: "", | ||
29 | loading: false, | 34 | loading: false, |
35 | + loadingNet: false, | ||
30 | }; | 36 | }; |
31 | }, | 37 | }, |
38 | + created() { | ||
39 | + this.role = | ||
40 | + this.$store.getters.info.showRole || | ||
41 | + this.$store.getters.info.permissions[0].role; | ||
42 | + }, | ||
32 | methods: { | 43 | methods: { |
33 | links() { | 44 | links() { |
34 | this.$router.push({ | 45 | this.$router.push({ |
@@ -51,6 +62,22 @@ export default { | @@ -51,6 +62,22 @@ export default { | ||
51 | this.$message.error(info); | 62 | this.$message.error(info); |
52 | } | 63 | } |
53 | }, | 64 | }, |
65 | + async downNet() { | ||
66 | + if (this.loadingNet == true) return; | ||
67 | + this.loadingNet = true; | ||
68 | + const { data, status, info } = await this.$request.latestClickersApp(); | ||
69 | + this.loadingNet = false; | ||
70 | + if (status == 0) { | ||
71 | + const a = document.createElement("a"); | ||
72 | + a.href = data.downloadUrl; | ||
73 | + a.download = data.appName; | ||
74 | + document.body.appendChild(a); | ||
75 | + a.click(); | ||
76 | + a.remove(); | ||
77 | + } else { | ||
78 | + this.$message.error(info); | ||
79 | + } | ||
80 | + }, | ||
54 | }, | 81 | }, |
55 | }; | 82 | }; |
56 | </script> | 83 | </script> |
@@ -62,7 +89,7 @@ export default { | @@ -62,7 +89,7 @@ export default { | ||
62 | .page-content { | 89 | .page-content { |
63 | display: flex; | 90 | display: flex; |
64 | padding-top: 50px; | 91 | padding-top: 50px; |
65 | - margin-left: 240px; | 92 | + margin-left: 160px; |
66 | .down-item { | 93 | .down-item { |
67 | width: 200px; | 94 | width: 200px; |
68 | padding: 50px 20px; | 95 | padding: 50px 20px; |
src/views/standard/setUp/teacher.vue
@@ -40,26 +40,30 @@ | @@ -40,26 +40,30 @@ | ||
40 | 40 | ||
41 | <div class="answer-header"> | 41 | <div class="answer-header"> |
42 | <div class="sel-box"> | 42 | <div class="sel-box"> |
43 | - <el-select | ||
44 | - class="sel" | ||
45 | - v-model="query.gradeName" | ||
46 | - placeholder="选择年级" | ||
47 | - @change="_QueryData(1)" | ||
48 | - > | ||
49 | - <el-option | ||
50 | - v-for="item in gradeList" | ||
51 | - :key="item.value" | ||
52 | - :label="item.label" | ||
53 | - :value="item.value" | ||
54 | - > | ||
55 | - </el-option> | ||
56 | - <el-option label="未分配教师" value="未分配教师"> </el-option> | 43 | + <el-cascader |
44 | + size="small" | ||
45 | + class="sel sel2" | ||
46 | + clearable | ||
47 | + placeholder="选择范围" | ||
48 | + v-model="query.gradeClassSub" | ||
49 | + :options="gradeClassSubList" | ||
50 | + :props="{ | ||
51 | + multiple: true, | ||
52 | + checkStrictly: true, | ||
53 | + }" | ||
54 | + collapse-tags | ||
55 | + :show-all-levels="false" | ||
56 | + ></el-cascader> | ||
57 | + <el-select class="sel" v-model="query.type" placeholder="选择类型"> | ||
58 | + <el-option label="已分配教师" :value="0"></el-option> | ||
59 | + <el-option label="未分配教师" :value="1"></el-option> | ||
57 | </el-select> | 60 | </el-select> |
58 | <el-input | 61 | <el-input |
59 | placeholder="请输入老师姓名" | 62 | placeholder="请输入老师姓名" |
60 | v-model="query.teacherName" | 63 | v-model="query.teacherName" |
61 | class="input-with-select" | 64 | class="input-with-select" |
62 | maxlength="30" | 65 | maxlength="30" |
66 | + clearable | ||
63 | @keyup.enter.native="_QueryData(2)" | 67 | @keyup.enter.native="_QueryData(2)" |
64 | > | 68 | > |
65 | <el-button | 69 | <el-button |
@@ -73,6 +77,7 @@ | @@ -73,6 +77,7 @@ | ||
73 | oninput="if(value.length > 11) value = value.slice(0,11)" | 77 | oninput="if(value.length > 11) value = value.slice(0,11)" |
74 | placeholder="请输入老师手机号" | 78 | placeholder="请输入老师手机号" |
75 | v-model="query.phone" | 79 | v-model="query.phone" |
80 | + clearable | ||
76 | class="input-with-select" | 81 | class="input-with-select" |
77 | @keyup.enter.native="_QueryData(3)" | 82 | @keyup.enter.native="_QueryData(3)" |
78 | > | 83 | > |
@@ -82,6 +87,9 @@ | @@ -82,6 +87,9 @@ | ||
82 | @click="_QueryData(3)" | 87 | @click="_QueryData(3)" |
83 | ></el-button> | 88 | ></el-button> |
84 | </el-input> | 89 | </el-input> |
90 | + <el-button class="serach-box" round @click="_QueryData(1)" | ||
91 | + >筛选</el-button | ||
92 | + > | ||
85 | </div> | 93 | </div> |
86 | </div> | 94 | </div> |
87 | <div class="page-content"> | 95 | <div class="page-content"> |
@@ -222,9 +230,7 @@ | @@ -222,9 +230,7 @@ | ||
222 | </el-popconfirm> | 230 | </el-popconfirm> |
223 | <div class="grade-item"> | 231 | <div class="grade-item"> |
224 | <p class="grade-name"> | 232 | <p class="grade-name"> |
225 | - {{ item.gradeName }}({{ | ||
226 | - item.subjectName | ||
227 | - }}) | 233 | + {{ item.gradeName }}({{ item.subjectName }}) |
228 | </p> | 234 | </p> |
229 | </div> | 235 | </div> |
230 | </li> | 236 | </li> |
@@ -388,15 +394,15 @@ export default { | @@ -388,15 +394,15 @@ export default { | ||
388 | isAdd: false, | 394 | isAdd: false, |
389 | setTercherType: 1, | 395 | setTercherType: 1, |
390 | query: { | 396 | query: { |
391 | - gradeName: "", | 397 | + gradeClassSub: [], |
398 | + type: 0, | ||
392 | teacherName: "", | 399 | teacherName: "", |
393 | phone: "", | 400 | phone: "", |
394 | }, | 401 | }, |
395 | subjectList: [], | 402 | subjectList: [], |
396 | gradeList: [], | 403 | gradeList: [], |
397 | classList: [], | 404 | classList: [], |
398 | - gradeClassList: [], | ||
399 | - gradeSubList: [], | 405 | + gradeClassSubList: [], |
400 | teacherList: [], | 406 | teacherList: [], |
401 | teacherRoleList: [ | 407 | teacherRoleList: [ |
402 | //角色 | 408 | //角色 |
@@ -446,6 +452,7 @@ export default { | @@ -446,6 +452,7 @@ export default { | ||
446 | }, | 452 | }, |
447 | async created() { | 453 | async created() { |
448 | this.code = localStorage.getItem("csCode") || ""; | 454 | this.code = localStorage.getItem("csCode") || ""; |
455 | + await this._QuerySubject(); | ||
449 | await this._QueryDataGrade(); | 456 | await this._QueryDataGrade(); |
450 | this._QueryData(1); | 457 | this._QueryData(1); |
451 | this._RoleList(); | 458 | this._RoleList(); |
@@ -693,20 +700,16 @@ export default { | @@ -693,20 +700,16 @@ export default { | ||
693 | this.$message.error(info); | 700 | this.$message.error(info); |
694 | } | 701 | } |
695 | }, | 702 | }, |
696 | - async _QueryData(type) { | 703 | + setQuery(type) { |
697 | let query = {}; | 704 | let query = {}; |
698 | - if (type == 1) { | ||
699 | - query.gradeName = this.query.gradeName; | ||
700 | - this.query.teacherName = ""; | ||
701 | - this.query.phone = ""; | ||
702 | - } else if (type == 2) { | 705 | + if (type == 2) { |
703 | if (this.query.teacherName == "") { | 706 | if (this.query.teacherName == "") { |
704 | this.$message.warning("请输入老师姓名"); | 707 | this.$message.warning("请输入老师姓名"); |
705 | return; | 708 | return; |
706 | } | 709 | } |
707 | query.teacherName = this.query.teacherName; | 710 | query.teacherName = this.query.teacherName; |
708 | - this.query.gradeName = ""; | ||
709 | this.query.phone = ""; | 711 | this.query.phone = ""; |
712 | + this.query.gradeClassSub = []; | ||
710 | } else if (type == 3) { | 713 | } else if (type == 3) { |
711 | if (this.query.phone == "") { | 714 | if (this.query.phone == "") { |
712 | this.$message.warning("请输入老师手机"); | 715 | this.$message.warning("请输入老师手机"); |
@@ -714,16 +717,47 @@ export default { | @@ -714,16 +717,47 @@ export default { | ||
714 | } | 717 | } |
715 | query.phone = this.query.phone; | 718 | query.phone = this.query.phone; |
716 | this.query.teacherName = ""; | 719 | this.query.teacherName = ""; |
717 | - this.query.gradeName = ""; | ||
718 | - } else if (type == 10) { | ||
719 | - query = { ...this.query }; | ||
720 | - } | ||
721 | - if (query.gradeName == "未分配教师") { | ||
722 | - query.type = 1; | 720 | + this.query.gradeClassSub = []; |
723 | } else { | 721 | } else { |
724 | - query.type = 0; | 722 | + query = { ...this.query }; |
723 | + query.gradeNames = []; | ||
724 | + query.classIds = []; | ||
725 | + query.subjectNames = []; | ||
726 | + this.query.gradeClassSub?.map((item) => { | ||
727 | + if (item.length == 1) { | ||
728 | + if (!query.gradeNames.includes(item[0])) { | ||
729 | + query.gradeNames.push(item[0]); | ||
730 | + } | ||
731 | + } else if (item.length == 2) { | ||
732 | + if (!query.classIds.includes(item[1])) { | ||
733 | + query.classIds.push(item[1]); | ||
734 | + } | ||
735 | + query.gradeNames.includes(item[0]) && | ||
736 | + query.gradeNames.remove(item[0]); | ||
737 | + } else if (item.length == 3) { | ||
738 | + if (!query.subjectNames.includes(item[2])) { | ||
739 | + query.subjectNames.push(item[2]); | ||
740 | + } | ||
741 | + query.gradeNames.includes(item[0]) && | ||
742 | + query.gradeNames.remove(item[0]); | ||
743 | + query.classIds.includes(item[0]) && query.classIds.remove(item[0]); | ||
744 | + } | ||
745 | + }); | ||
746 | + | ||
747 | + delete query.gradeClassSub; | ||
748 | + query.gradeNames.length ? "" : delete query.gradeNames; | ||
749 | + query.classIds.length ? "" : delete query.classIds; | ||
750 | + query.subjectNames.length ? "" : delete query.subjectNames; | ||
751 | + query.teacherName.length ? "" : delete query.teacherName; | ||
752 | + query.phone.length ? "" : delete query.phone; | ||
725 | } | 753 | } |
754 | + | ||
755 | + return query; | ||
756 | + }, | ||
757 | + async _QueryData(type) { | ||
758 | + if (this.loading) return; | ||
726 | this.loading = true; | 759 | this.loading = true; |
760 | + let query = this.setQuery(); | ||
727 | this.teacherList = []; | 761 | this.teacherList = []; |
728 | const { data, status, info } = await this.$request.teacherList({ | 762 | const { data, status, info } = await this.$request.teacherList({ |
729 | ...query, | 763 | ...query, |
@@ -746,26 +780,46 @@ export default { | @@ -746,26 +780,46 @@ export default { | ||
746 | this.$message.error(info); | 780 | this.$message.error(info); |
747 | } | 781 | } |
748 | }, | 782 | }, |
783 | + async _QuerySubject() { | ||
784 | + const { data, status, info } = await this.$request.subjectList(); | ||
785 | + if (status === 0) { | ||
786 | + this.subjectList = [...data?.subjectNames] || []; | ||
787 | + } else { | ||
788 | + this.$message.error(info); | ||
789 | + } | ||
790 | + }, | ||
749 | async _QueryDataGrade() { | 791 | async _QueryDataGrade() { |
750 | //年级数据 | 792 | //年级数据 |
751 | const { data, status, info } = await this.$request.gradeList(); | 793 | const { data, status, info } = await this.$request.gradeList(); |
752 | if (status === 0) { | 794 | if (status === 0) { |
753 | this.gradeList = | 795 | this.gradeList = |
754 | data.list?.map((item) => { | 796 | data.list?.map((item) => { |
755 | - return { | 797 | + let subList = item.subjectNames?.map((items) => { |
798 | + return { | ||
799 | + value: items, | ||
800 | + label: items, | ||
801 | + }; | ||
802 | + }); | ||
803 | + this.gradeClassSubList.push({ | ||
756 | value: item.gradeName, | 804 | value: item.gradeName, |
757 | label: item.gradeName, | 805 | label: item.gradeName, |
758 | id: item.grade, | 806 | id: item.grade, |
759 | - children: item.subjectNames?.map((items) => { | 807 | + children: item.classList.map((clazz) => { |
760 | return { | 808 | return { |
761 | - value: items, | ||
762 | - label: items, | 809 | + value: clazz.id, |
810 | + label: clazz.className, | ||
811 | + id: clazz.id, | ||
812 | + children: [...subList], | ||
763 | }; | 813 | }; |
764 | }), | 814 | }), |
815 | + }); | ||
816 | + return { | ||
817 | + value: item.gradeName, | ||
818 | + label: item.gradeName, | ||
819 | + id: item.grade, | ||
820 | + children: [...subList], | ||
765 | }; | 821 | }; |
766 | }) || []; | 822 | }) || []; |
767 | - | ||
768 | - this.query.gradeName = this.gradeList[0]?.value; | ||
769 | } else { | 823 | } else { |
770 | this.$message.error(info); | 824 | this.$message.error(info); |
771 | } | 825 | } |