Commit 53424e83366f877003ee875c886a3f634d93ea61

Authored by 梁保满
1 parent dc56294d

教师管理筛选条件

@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 "setUpSchool", 13 "setUpSchool",
14 "setUpTeacher", 14 "setUpTeacher",
15 "setUpStudent", 15 "setUpStudent",
  16 + "setUpClazz",
16 "card", 17 "card",
17 "device", 18 "device",
18 "analysis", 19 "analysis",
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 }