Browse Source

新学生管理

11wqe1 2 days ago
parent
commit
bfacbae0e1

+ 34 - 7
src/components/pages/studentManageNew/component/addstu.vue

@@ -283,7 +283,11 @@ export default {
           export_json_to_excel,
         } = require("../../../../common/Export2Excel");
         // 增加 colWidths 参数以调整列宽,例如调整为 [20, 35, 20]
-        const tHeader = [this.lang.StudentName];
+        let tHeader = [this.lang.StudentName];
+            
+        if (this.boxType == 2) {
+           tHeader = [this.lang.StudentName,this.lang.Class];
+        }
         const data = [];
         const colWidths = [35]; // 设置每一列的宽度
         export_json_to_excel(
@@ -333,7 +337,7 @@ export default {
             let obj = {};
             if (
               v[_this.lang.StudentName] !== undefined &&
-              v[_this.lang.StudentName] !== ""
+              v[_this.lang.StudentName] !== "" 
             ) {
               obj.name = v[_this.lang.StudentName];
               if (
@@ -348,8 +352,11 @@ export default {
               } else {
                 obj.mail = uuidv4() + "@" + _this.userSuffix;
               }
-              obj.class = _this.classInfo.name;
+              obj.class = _this.boxType == 2 ? v[_this.lang.Class] : _this.classInfo.name;
               arr.push(obj);
+            }else{
+              _this.$message.error('请检查上传文件学生姓名列是否填写正确');
+              return;
             }
           });
           console.log(arr);
@@ -357,13 +364,27 @@ export default {
             _this.$message.error(_this.lang.Limitmore);
             return;
           }
+
+          if (this.boxType == 2 && arr.filter(e => e.class) != arr.length) {
+            _this.$message.error('请检查上传文件班级列是否填写正确');
+            return;
+          }
+
           if (!arr.length) {
             _this.$message.error(
               "未能提取上传学生信息,请检查数据格式,使用模板文件格式上传"
             );
             return;
           }
-          _this.accUpdate(arr);
+          _this.$confirm('是否确认上传?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+          }).then(() => {
+            _this.accUpdate(arr);
+          }).catch(() => {
+            _this.$message.info('已取消');
+          });
         };
 
         reader.readAsArrayBuffer(f);
@@ -387,7 +408,7 @@ export default {
         return;
       }
 
-      if (this.cascaderDataPath.length == 0 || this.classInfo.name == "") {
+      if ((this.boxType == 2 && this.cascaderDataPath.length == 0) || this.classInfo.name == "") {
         this.$message.error("请选择所属班级");
         return;
       }
@@ -403,11 +424,16 @@ export default {
       } else {
         mail = "@" + this.userSuffix;
       }
+      let classInfo = this.classInfo;
+      if (this.boxType == 2) {
+        classInfo = this.cascaderData.flatMap((item) => item.children).filter((item) => this.cascaderDataPath[1]==item.id)[0];
+      }
+      // console.log(classInfo, "classInfo");
       let box = this.selectedStuData.map((item) => {
         return {
           name: item,
           mail: uuidv4() + mail,
-          class: this.classInfo.name,
+          class: classInfo.name,
         };
       });
       // console.log(box, "box");
@@ -450,8 +476,9 @@ export default {
               message: "添加成功",
               type: "success",
             });
+            this.addStuVisible = false;
             this.selectedStuData = [];
-            this.$emit("getStudent");
+            this.$emit("getCascaderData");
           }
         })
         .catch((err) => {

+ 2 - 1
src/components/pages/studentManageNew/component/editInterstcla.vue

@@ -415,8 +415,9 @@ export default {
             let kk = [];
             this.cascaderData.forEach(item => {
               item.children.forEach(item2 => {  
-                if (e.classid.indexOf(item2.id) != -1) {
+                if (e.classid && e.classid.indexOf(item2.id) != -1) {
                   kk.push(item.name + item2.name);
+                }else{
                 }
               });
             });

+ 19 - 9
src/components/pages/studentManageNew/component/table.vue

@@ -49,10 +49,10 @@
       <!-- 右边区域 -->
       <div class="topbox_area">
         <el-input
-          placeholder="搜索学生..."
+          :placeholder="boxType == 1 ? '搜索兴趣班...' : '搜索学生...'"
           v-model="inp"
           @blur="refresh"
-          v-if="boxType == 0 || boxType == 2"
+          v-if="boxType == 0 || boxType == 2 || (boxType == 1 && interestType == 0)"
         >
           <i slot="prefix" class="el-input__icon el-icon-search"></i>
         </el-input>
@@ -146,12 +146,13 @@
         <el-table-column
           v-for="(item, index) in tableColumns"
           :key="index"
+          show-overflow-tooltip
           :label="item.label"
         >
           <template slot-scope="scope">
             <div
               class="cla_box"
-              v-if="item.label == '班级' && (boxType == 0 || boxType == 2)"
+              v-if="item.label == '班级'"
             >
               <span
                 class="cla_span"
@@ -386,7 +387,7 @@
     </el-dialog>
     <!-- 编辑兴趣班 -->
     <editInterstcla ref="editInterstcla" @getCascaderData="getCascaderData" :cascaderData="cascaderData" :interestClaEditInfo="InterestClaEditInfo" />
-    <addStu ref="addStu" :boxType="boxType" :cascaderData="cascaderData" @getStudent="getStudent" />
+    <addStu ref="addStu" :boxType="boxType" :cascaderData="cascaderData" @getStudent="getStudent" @getCascaderData="getCascaderData" />
   </div>
 </template>
 
@@ -533,7 +534,7 @@ export default {
   methods: {
     getCascaderData() {
       this.$emit("getGrade");
-      this.getInterestClass();
+      this.refresh();
     },
 
     // 编辑兴趣班
@@ -1273,7 +1274,13 @@ export default {
     handlePageChange(val) {
       console.log(`当前页: ${val}`);
       this.page = val;
-      this.refresh();
+      if (this.boxType == 0) {
+        this.getStudent();
+      } else if (this.boxType == 1) {
+        this.getInterestClass();
+      } else if (this.boxType == 2) {
+        this.getAllStudent();
+      }
     },
     handleSizeChange(val) {
       console.log(`每页条数: ${val}`);
@@ -1305,8 +1312,9 @@ export default {
             let kk = [];
             this.cascaderData.forEach(item => {
               item.children.forEach(item2 => {  
-                if (e.classid.indexOf(item2.id) != -1) {
+                if (e.classid && e.classid.indexOf(item2.id) != -1) {
                   kk.push(item.name + item2.name);
+                }else{
                 }
               });
             });
@@ -1325,7 +1333,7 @@ export default {
       this.tableColumns = this.tableInterestClaColumns;
       let params = {
         oid: this.oid,
-        inp: "",
+        inp: this.inp,
         page: this.page,
         pageSize: this.pageSize,
       };
@@ -1363,8 +1371,9 @@ export default {
             let kk = [];
             this.cascaderData.forEach(item => {
               item.children.forEach(item2 => {  
-                if (e.classid.indexOf(item2.id) != -1) {
+                if (e.classid && e.classid.indexOf(item2.id) != -1) {
                   kk.push(item.name + item2.name);
+                }else{
                 }
               });
             });
@@ -1521,6 +1530,7 @@ export default {
 }
 .cla_box {
   display: flex;
+  flex-wrap: wrap;
   align-items: center;
   gap: 10px;
 }

+ 3 - 1
src/components/pages/studentManageNew/index.vue

@@ -152,7 +152,9 @@ export default {
             // console.log('this.activeId',this.activeId);
             // console.log('box2',box2);
             // console.log('box2.indexOf(this.activeId)',box2.indexOf(this.activeId));
-            if(this.activeId == '' || (this.activeId && this.boxType == 1 && box2.filter(item => item.id == this.activeId).length == 0)){
+            // || (this.activeId && this.boxType == 1 && box2.filter(item => item.id == this.activeId).length == 0)
+            if(this.activeId == ''){
+              console.log('111');
               
               this.activeId = box2[0].id;
               this.activeinfo = box2[0];