Jelajahi Sumber

学生管理

11wqe1 6 jam lalu
induk
melakukan
0690ced66c

+ 82 - 28
src/components/pages/studentManageNew/component/addstu.vue

@@ -98,13 +98,16 @@
               </div>
               <div class="search_stu_box_footer">
                 <div>输入学生共{{ searchStuData.length }}人</div>
-                <div>
-                  <el-button size="small" @click="selectNoneStu"
+                <div class="dialog-footer">
+                  <!-- <el-button size="small" @click="selectNoneStu"
                     >取消</el-button
-                  >
-                  <el-button size="small" type="primary" @click="selectStu"
+                  > -->
+                  <div  @click="selectNoneStu" class="kbtn">取消</div>
+                  <div @click="selectStu" class="kbtn" style="background: #3681FC; color: #E6FFFFFF;">确认</div>
+                  
+                  <!-- <el-button size="small" type="primary" @click="selectStu"
                     >确定</el-button
-                  >
+                  > -->
                 </div>
               </div>
             </div>
@@ -180,10 +183,14 @@
       </div>
       <div slot="footer" class="dialog-footer">
         <template v-if="addStuType == 1">
-          <el-button size="small" @click="closeAllClaAddStu">取消</el-button>
-          <el-button size="small" type="primary" @click="addStu"
-            >确定</el-button
-          >
+          <!-- <el-button size="small" @click="closeAllClaAddStu">取消</el-button> -->
+          <div @click="closeAllClaAddStu" class="kbtn">取消</div>
+
+          <div @click="addStu" class="kbtn" style="background: #3681FC; color: #E6FFFFFF;">确认</div>
+
+          <!-- <el-button size="small" type="primary" @click="addStu"
+            >确认</el-button
+          > -->
         </template>
       </div>
     </el-dialog>
@@ -194,15 +201,21 @@
         :show-close="false"
       >
         <div class="msgCon">
-            <img style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
+            <img v-if="deltypy == 0" style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
+            <img v-if="deltypy == 1" style="width: 20px;" src="../../../../assets/stuImg/tishi.svg" alt="">
+
             <div class="msgContxt">
-              <div>{{impbox.length ? impbox[0].name : ''}}等{{impbox.length}} 名同学已添加成功</div>
+              <div v-if="deltypy == 0">{{impbox.length ? impbox[0].name : ''}}等{{impbox.length}} 名同学已添加成功</div>
+              <div v-if="deltypy == 1">是否确认上传?</div>
+
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="confirmDelStu"
+          <!-- <el-button type="primary" @click="confirmDelStu"
             >确 认</el-button
-          >
+          > -->
+          <div @click="closePop" class="kbtn" v-if="deltypy == 1">取消</div>
+          <div @click="confirmDelStu" class="kbtn" style="background: #3681FC; color: #E3EDFF;height: 32px;">确认</div>
         </span>
       </el-dialog>
     </div>
@@ -253,6 +266,8 @@ export default {
       role: this.$route.query.role,
       cascaderDataPath: [],
 
+      deltypy:0,
+      stuexcel:[],
       impbox:[],
       addpopStuList:[],
       popBoxdia:false,
@@ -464,17 +479,23 @@ export default {
             );
             return;
           }
-          _this.$confirm('是否确认上传?', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning',
-          }).then(() => {
-            _this.uploadfileLoading = true;
-            _this.accUpdate(arr);
-          }).catch(() => {
-            _this.uploadfileLoading = false;
-            _this.$message.info('已取消');
-          });
+          _this.deltypy = 1;
+          _this.popBoxdia= true;
+          _this.stuexcel = arr;
+          // _this.$confirm('是否确认上传?', '提示', {
+          //   confirmButtonText: '确定',
+          //   cancelButtonText: '取消',
+          //   type: 'warning',
+          // }).then(() => {
+
+            // _this.uploadfileLoading = true;
+            // _this.accUpdate(arr);
+
+
+        //   }).catch(() => {
+        //     _this.uploadfileLoading = false;
+        //     _this.$message.info('已取消');
+        //   });
         };
 
         reader.readAsArrayBuffer(f);
@@ -566,6 +587,7 @@ export default {
               message: "添加成功",
               type: "success",
             });
+            this.deltypy = 0;
             this.popBoxdia= true;
             // this.addStuVisible = false;
             console.log('this.selectedStuData',this.selectedStuData);
@@ -581,9 +603,20 @@ export default {
     },
     confirmDelStu(){
           // this.addStuVisible = false;
+          if (this.deltypy == 0) {
+            this.impbox = []
+            this.selectedStuData = [];
+          }else if (this.deltypy == 1) {
+            this.uploadfileLoading = true;
+            this.accUpdate(this.stuexcel);
+          }
           this.popBoxdia= false;
-          this.impbox = []
-          this.selectedStuData = [];
+    },
+    closePop(){
+      this.popBoxdia= false;
+      if (this.deltypy == 1) {
+        this.stuexcel = []
+      }
     },
     // 修改账号
     updateAccount(arr) {
@@ -866,6 +899,8 @@ export default {
   height: 100%;
   padding: 0 8px;
   box-sizing: border-box;
+  display: flex;
+  align-items: center;
 }
 
 .tagtit{
@@ -881,6 +916,7 @@ export default {
   padding: 10px;
   float: left;
   box-sizing: border-box;
+  box-shadow: 0px 8px 10px -5px rgba(0,0,0,0.08), 0px 16px 24px 2px rgba(0,0,0,0.04), 0px 6px 30px 5px rgba(0,0,0,0.05);
 }
 .poptag{
   display: flex !important;
@@ -896,8 +932,9 @@ export default {
   display: block !important;
 }
 .tagitem2{
-  background: #FEF0F0;
-  border: 1px #FEF0F0 solid;
+  background: #F7D9CF;
+  border: none;
+  color: #FE6331;
 }
 .pop-upBox >>> .el-dialog{
   border-radius: 8px !important;
@@ -906,6 +943,10 @@ export default {
 .pop-upBox >>> .el-dialog__body{
   padding: 12px 23px; 
 }
+/* .addstudia >>> .el-dialog__body{
+  padding: 10px 20px; 
+
+} */
 .msgCon{
   display: flex;
   gap: 10px;
@@ -919,4 +960,17 @@ export default {
   font-size: 16px;
   color: #000000;
 }
+.kbtn{
+  text-align: center;
+  padding: 8px 14px;
+  cursor: pointer;
+  border-radius: 3px;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+}
 </style>

+ 29 - 10
src/components/pages/studentManageNew/component/allClaAddStu.vue

@@ -61,11 +61,14 @@
           </div>
           <div class="search_stu_box_footer">
             <div>输入学生共{{ searchStuData.length }}人</div>
-            <div>
-              <el-button size="small" @click="selectNoneStu">取消</el-button>
-              <el-button size="small" type="primary" @click="selectStu"
-                >确定</el-button
-              >
+            <div class="dialog-footer">
+              <!-- <el-button size="small" @click="selectNoneStu">取消</el-button> -->
+              <div @click="selectNoneStu" class="kbtn">取消</div>
+              <div @click="selectStu" class="kbtn" style="background: #3681FC; color: #E3EDFF;">确认</div>
+
+              <!-- <el-button size="small" type="primary" @click="selectStu"
+                >确认</el-button
+              > -->
             </div>
           </div>
         </div>
@@ -150,11 +153,14 @@
         </el-pagination>
       </div>
     </div>
-    <div slot="footer" class="dialog-footer">
-      <el-button size="small" @click="closeAllClaAddStu">取消</el-button>
-      <el-button size="small" type="primary" @click="confirmAllClaAddStu"
-        >确定</el-button
-      >
+    <div class="dialog-footer">
+      <!-- <el-button size="small" @click="closeAllClaAddStu">取消</el-button> -->
+      <div class="kbtn" @click="closeAllClaAddStu">取消</div>
+      <div @click="confirmAllClaAddStu" class="kbtn" style="background: #3681FC; color: #E3EDFF;">确认</div>
+
+      <!-- <el-button size="small" type="primary" @click="confirmAllClaAddStu"
+        >确认</el-button
+      > -->
     </div>
 
     <div class="pop-upBox">
@@ -630,4 +636,17 @@ export default {
   justify-content: center;
   background: #3681FC;
 }
+.kbtn{
+  text-align: center;
+  padding: 8px 14px;
+  cursor: pointer;
+  border-radius: 3px;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+}
 </style>

+ 0 - 92
src/components/pages/studentManageNew/component/msgbox.vue

@@ -1,92 +0,0 @@
-<template>
-  <div class="msgdia">
-    <el-dialog
-      :visible.sync="dialogVisible"
-      width="480px"
-      :show-close="false"
-      :before-close="handleClose"
-    >
-      <div class="msgCon">
-          <img style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
-          <div class="msgContxt">
-            <div>对8个账户重置密码成功! </div>
-            <div>
-              <span>默认密码为:Coco1234</span>
-              <img @click="copyText" style="width: 20px;cursor: pointer;scale: 1.2;" src="../../../../assets/stuImg/copy2.svg" alt="">
-            </div>
-          </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="dialogVisible = false"
-          >确 认</el-button
-        >
-      </span>
-    </el-dialog>
-  </div>
-</template>
-<script>
-export default {
-  data() {
-    return {
-      dialogVisible: false,
-    };
-  },
-  methods: {
-    handleClose(done) {
-      done();
-    },
-    copyText(){
-      const text = 'Coco1234';
-      if (navigator.clipboard && navigator.clipboard.writeText) {
-        navigator.clipboard.writeText(text).then(() => {
-          this.$message.success('已复制到剪贴板');
-        }).catch(() => {
-          this.fallbackCopy(text);
-        });
-      } else {
-        this.fallbackCopy(text);
-      }
-    },
-    fallbackCopy(text) {
-      const textarea = document.createElement('textarea');
-      textarea.value = text;
-      textarea.style.position = 'fixed';
-      textarea.style.opacity = '0';
-      document.body.appendChild(textarea);
-      textarea.select();
-      try {
-        document.execCommand('copy');
-        this.$message.success('已复制到剪贴板');
-      } catch (err) {
-        this.$message.error('复制失败');
-      }
-      document.body.removeChild(textarea);
-    }
-  },
-};
-</script>
-
-<style scoped>
-.msgdia >>> .el-dialog{
-  border-radius: 8px !important;
-  /* margin: auto !important; */
-  margin-top: 30vh !important;
-}
-.msgdia >>> .el-dialog__body{
-  padding: 12px 23px; 
-}
-.msgCon{
-  display: flex;
-  gap: 10px;
-  align-items: flex-start;
-  /* padding: 0 3px; */
-  box-sizing: border-box;
-}
-.msgContxt{
-  display: flex;
-  flex-direction: column;
-  gap: 10px;
-  font-size: 16px;
-  color: #000000;
-}
-</style>

+ 81 - 21
src/components/pages/studentManageNew/component/table.vue

@@ -57,13 +57,6 @@
 
       <!-- 右边区域 -->
       <div class="topbox_area">
-        
-        <template v-if="boxType == 1 && interestType == 0">
-          <img class="sortImg" v-if="insort == 0" @click="intSort('1')" src="../../../../assets/stuImg/jiang.svg" alt="">
-          <img class="sortImg" v-if="insort == 1" @click="intSort('0')" src="../../../../assets/stuImg/sheng.svg" alt="">
-        </template>
-
-
         <el-input
           :placeholder="boxType == 1 ? '搜索兴趣班...' : '搜索学生...'"
           v-model="inp"
@@ -73,6 +66,31 @@
           <i slot="prefix" @click="refresh" class="el-input__icon el-icon-search"></i>
         </el-input>
 
+        <template v-if="(boxType == 1 && interestType == 0) || boxType == 2">
+          <el-popover
+            placement="bottom"
+            trigger="hover"
+            popper-class="topbox_area_popover"
+          >
+              <div class="topbox_areaCon">
+                  <div :class="insort == 1 ? 'topbox_areaConBck' : ''">
+                    按最早创建排序
+                  </div>
+                  <div :class="insort == 0 ? 'topbox_areaConBck' : ''">
+                    按最晚创建排序
+                  </div>
+              </div>
+             
+              <img slot="reference" class="sortImg" v-if="insort == 0" @click="intSort('1')" src="../../../../assets/stuImg/jiang.svg" alt="">
+              <img slot="reference" class="sortImg" v-if="insort == 1" @click="intSort('0')" src="../../../../assets/stuImg/sheng.svg" alt="">
+          </el-popover>
+          
+
+        </template>
+
+
+     
+
         <div @click="refresh" v-if="!selectedData.length" class="action_btn">
           <img
             src="../../../../assets/stuImg/cz.svg"
@@ -206,7 +224,7 @@
                
               </span>
             </div>
-            <div v-else-if="item.label == '账号' && (boxType == 0 || boxType == 2)">
+            <div v-else-if="item.label == '账号'">
               <span>{{ scope.row.acc.split("@")[0] }}</span>
             </div>
             <div v-else>
@@ -324,7 +342,7 @@
       </div>
       <div slot="footer" class="dialog-footer" style="display: flex;justify-content: flex-end;gap: 10px;">
         <div @click="addInterestClaVisible = false">取消</div>
-        <div @click="addInterestClaConfirm" style="background: #3681FC; color: #fff;height: 32px;">确认</div>
+        <div @click="addInterestClaConfirm" style="background: #3681FC; color: #E6FFFFFF;height: 32px;">确认</div>
       </div>
     </el-dialog>
 
@@ -425,7 +443,7 @@
     <addStu ref="addStu" :boxType="boxType" :cascaderData="cascaderData" @getStudent="getStudent" @getCascaderData="getCascaderData" />
     
     <!-- 重置密码弹框 -->
-    <msgbox ref="msgboxref" infomMsg="infomMsg"></msgbox>
+    <!-- <msgbox ref="msgboxref" infomMsg="infomMsg"></msgbox> -->
 
     <div class="pop-upBox">
       <el-dialog
@@ -463,13 +481,15 @@
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-          <el-button @click="closeDia"
+          <!-- <el-button @click="closeDia"
           v-if="deltypy != 7 && deltypy != 8"
             >取 消</el-button
-          >
-          <el-button type="primary" @click="confirmDelStu"
+          > -->
+          <div @click="closeDia" v-if="deltypy != 7 && deltypy != 8">取消</div>
+          <div @click="confirmDelStu" style="background: #3681FC; color: #E3EDFF;height: 32px;">确认</div>
+          <!-- <el-button type="primary" @click="confirmDelStu"
             >确 认</el-button
-          >
+          > -->
         </span>
       </el-dialog>
     </div>
@@ -479,12 +499,11 @@
 <script>
 import editInterstcla from "./editInterstcla.vue";
 import addStu from "./addstu.vue";
-import msgbox from "./msgbox.vue";
+// import msgbox from "./msgbox.vue";
 export default {
   components: {
     editInterstcla,
     addStu,
-    msgbox
   },
   props: {
     GrapTableData: {
@@ -568,7 +587,7 @@ export default {
 
       tableColumns: [
         {
-          label: "学生信息",
+          label: "学生姓名",
           prop: "username",
         },
         {
@@ -583,7 +602,7 @@ export default {
       ],
       studentColumns: [
         {
-          label: "学生信息",
+          label: "学生姓名",
           prop: "username",
         },
         {
@@ -607,7 +626,7 @@ export default {
           prop: "pnum",
         },
         {
-          label: "创建时间",
+          label: "时间",
           prop: "create_at",
         },
       ],
@@ -1148,7 +1167,13 @@ export default {
     // 兴趣班排序
     intSort(val){
       this.insort = val;
-      this.getInterestClass()
+
+      if (this.boxType == 1) {
+        this.getInterestClass()
+      }else if (this.boxType == 2) {
+        this.getAllStudent()
+      }
+     
     },
     // 编辑兴趣班
     editInterestCla(row) {
@@ -1491,11 +1516,12 @@ export default {
         oid: this.oid,
         cid: "",
         inp: this.inp,
+        srt:this.insort,
         page: this.page,
         num: this.pageSize,
       };
       this.ajax
-        .get(this.$store.state.api + "selectStudentManage", params)
+        .get(this.$store.state.api + "selectStudentManagesrt", params)
         .then((res) => {
           this.isLoading = false;
           this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
@@ -1593,6 +1619,11 @@ export default {
   background: #e8f3ff;
   color: #0052d9;
 }
+.topbox_area_popover{
+  width: 152px !important;
+  min-width: 60px !important;
+  padding: 0 !important;
+}
 /* 学生管理重置密码消息框样式 - 全局样式(Element UI msgbox 挂载到 body,需要全局样式) */
 .student-manage-reset-password-msgbox .el-message-box__status {
   top: 0 !important;
@@ -1688,6 +1719,22 @@ export default {
   align-items: center;
   gap: 10px;
 }
+.topbox_areaCon{
+  width: 100%;padding: 8px;
+  box-sizing: border-box;display: flex;
+  flex-direction: column;gap: 5px;
+  align-content: center;
+}
+.topbox_areaCon div{
+  padding: 5px 10px;
+  box-sizing: border-box;
+  text-align: center;
+  border-radius: 2px;
+}
+.topbox_areaConBck{
+  background: #E8F3FF;
+  color: #498DFC;
+}
 .xk_img {
   width: 20px;
   height: 20px;
@@ -1928,4 +1975,17 @@ export default {
   box-sizing: border-box;
   font-size: 14px;
 }
+.kbtn{
+  text-align: center;
+  padding: 8px 14px;
+  cursor: pointer;
+  border-radius: 3px;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+}
 </style>

+ 14 - 8
src/components/pages/studentManageNew/index.vue

@@ -8,6 +8,7 @@
       <!-- v-if="orglist.includes(org)" -->
 
       <template v-loading="boxLoading">
+      <div style="display: flex; gap: 10px;">
         <div v-if="orglist.includes(org)" class="Clabtn" @click="openaddClass(1)">
           <img src="../../../assets/stuImg/jia.svg" alt="" />
           <span>新年级</span>
@@ -16,6 +17,7 @@
           <img src="../../../assets/stuImg/jia.svg" alt="" />
           <span>新班级</span>
         </div>
+      </div>
 
         <el-menu
           :default-active="activeId"
@@ -54,7 +56,7 @@
         :class="{ active: boxType == 1 }"
         @click="handleClick('1', 1)"
       >
-        兴趣班
+        兴趣班列表
       </div>
       <div class="line"></div>
       <div class="centerCss">
@@ -111,7 +113,7 @@
       </div>
       <div slot="footer" class="dialog-footer">
         <div @click="addClassVisible = false">取消</div>
-        <div @click="addClass" style="background: #3681FC; color: #fff;height: 32px;">确认</div>
+        <div @click="addClass" style="background: #3681FC; color: #E3EDFF;height: 32px;">确认</div>
       </div>
     </el-dialog>
 
@@ -129,8 +131,8 @@
         </div>
       </div>
       <div slot="footer" class="dialog-footer">
-        <div @click="addgraVisible = false">取消</div>
-        <div @click="addgra" style="background: #3681FC; color: #fff;">确认</div>
+        <div @click="addgraVisible = false" style="color: #363636;">取消</div>
+        <div @click="addgra" style="background: #3681FC; color: #E6FFFFFF;">确认</div>
       </div>
     </el-dialog>
   </div>
@@ -347,7 +349,7 @@ export default {
 .rigbox {
   background: #fff;
   height: 100%;
-  width: 166px;
+  width: 176px;
   background: #ffffff;
   border-radius: 8px 8px 8px 8px;
   padding: 10px;
@@ -375,7 +377,10 @@ export default {
   color: #0052d9;
   background: #e8f3ff;
   border-radius: 3px;
-  padding: 5px 0;
+  padding: 5px 4px;
+  flex: 1;
+  box-sizing: border-box;
+  font-size: 14px;
   cursor: pointer;
 }
 .rigbox >>> .el-menu {
@@ -436,6 +441,7 @@ export default {
 .por {
   cursor: pointer;
   padding: 8px 5px;
+  font-size: 14px;
   box-sizing: border-box;
 }
 .active {
@@ -476,11 +482,11 @@ export default {
   gap: 10px;
 }
 .dialog-footer div{
-  width: 100px;
+  /* width: 80px; */
   text-align: center;
   padding: 8px 14px;
   cursor: pointer;
-  border-radius: 5px;
+  border-radius: 3px;
   box-sizing: border-box;
   font-size: 14px;
 }