hzj18279462576@163.com 2 tahun lalu
induk
melakukan
328f76f2ae

+ 10 - 2
src/views/caller/caller.vue

@@ -149,13 +149,21 @@
             prop="createTime"
             prop="createTime"
             width="180"
             width="180"
             label="创建时间"
             label="创建时间"
-          />
+          >
+            <template #default="{ row }">
+              {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
+            </template>
+          </el-table-column>
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             prop="visitorTime"
             prop="visitorTime"
             width="180"
             width="180"
             label="来访时间"
             label="来访时间"
-          />
+          >
+            <template #default="{ row }">
+              {{ dayjs(row.visitorTime).format("YYYY-MM-DD HH:mm:ss") }}
+            </template>
+          </el-table-column>
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             prop="respondentName"
             prop="respondentName"

+ 124 - 39
src/views/energy/energy.vue

@@ -518,52 +518,137 @@ const getMonWaterElc = async () => {
     "水、电 区域统计"
     "水、电 区域统计"
   );
   );
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    areaData.value = JSON.parse(eds.decryptDes(res.data.data));
-    monthList.value = [];
-    monthTypeValue.value = [];
-    let arr = JSON.parse(eds.decryptDes(res.data.data))[0].lt;
-    let monthType = [];
-    let monthValue = [];
-    if (arr) {
-      arr.forEach((item, index) => {
-        monthType.push(item.name);
-        monthValue[index] = [];
-        JSON.parse(eds.decryptDes(res.data.data)).forEach((i) => {
-          console.log(i);
-          if (i.lt.length != 0) {
-            monthValue[index].push(i.lt[index].num);
-          } else {
-            monthValue[index].push(0);
-          }
-        });
+    if (areaInd.value == 1) {
+      areaData.value = JSON.parse(eds.decryptDes(res.data.data));
+      monthList.value = []; // 横坐标月份
+      monthTypeValue.value = []; // 月份对应数据
+      let arr1 = [];
+      let arr2 = [];
+      let arr3 = [];
+      monthTypeValue.value = [
+        {
+          name: "探问楼",
+          type: "bar",
+          data: arr1,
+          itemStyle: {
+            color: "#43B5F4",
+          },
+          barGap: "0%", // 同一列柱子的间距
+          barWidth: 20, // 柱子的宽度
+          emphasis: {
+            focus: "series",
+          },
+        },
+        {
+          name: "探理楼",
+          type: "bar",
+          data: arr2,
+          itemStyle: {
+            color: "#89CFF5",
+          },
+          barGap: "0%", // 同一列柱子的间距
+          barWidth: 20, // 柱子的宽度
+          emphasis: {
+            focus: "series",
+          },
+        },
+        {
+          name: "探学楼",
+          type: "bar",
+          data: arr3,
+          itemStyle: {
+            color: "#B4E2FB",
+          },
+          barGap: "0%", // 同一列柱子的间距
+          barWidth: 20, // 柱子的宽度
+          emphasis: {
+            focus: "series",
+          },
+        },
+      ];
+      areaData.value.forEach((item) => {
+        if (item.lt.length > 0) {
+          item.lt.forEach((i) => {
+            if (i.name == "探问楼") {
+              arr1.push(i.num);
+            }
+            if (i.name == "探理楼") {
+              arr2.push(i.num);
+            }
+            if (i.name == "探学楼") {
+              arr3.push(i.num);
+            }
+          });
+        } else {
+          arr1.push(0);
+          arr2.push(0);
+          arr3.push(0);
+        }
+      });
+      console.log(monthTypeValue.value, "水 数据整合 区域统计");
+
+      areaData.value.forEach((item) => {
+        monthList.value.push(item.date);
       });
       });
-      let color = ["#43B5F4", "#89CFF5", "#B4E2FB", "#D4EDFB"];
-      monthType.forEach((item, index) => {
-        let data = {
-          name: "",
+    }else {
+      areaData.value = JSON.parse(eds.decryptDes(res.data.data));
+      monthList.value = []; // 横坐标月份
+      monthTypeValue.value = []; // 月份对应数据
+      let arr1 = [];
+      let arr2 = [];
+      let arr3 = [];
+      monthTypeValue.value = [
+        {
+          name: "探问楼",
+          type: "bar",
+          data: arr1,
+          itemStyle: {
+            color: "#43B5F4",
+          },
+          barGap: "0%", // 同一列柱子的间距
+          barWidth: 20, // 柱子的宽度
+          emphasis: {
+            focus: "series",
+          },
+        },
+        {
+          name: "探理楼",
           type: "bar",
           type: "bar",
-          data: "",
+          data: arr2,
           itemStyle: {
           itemStyle: {
-            color: "",
+            color: "#89CFF5",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
           emphasis: {
           emphasis: {
             focus: "series",
             focus: "series",
           },
           },
-        };
-        data.name = monthType[index];
-        data.data = monthValue[index];
-        data.itemStyle.color = color[index];
-        monthTypeValue.value.push(data);
+        },
+      ];
+      areaData.value.forEach((item) => {
+        if (item.lt.length > 0) {
+          item.lt.forEach((i) => {
+            if (i.name == "探问楼") {
+              arr1.push(i.num);
+            }
+            if (i.name == "探理楼") {
+              arr2.push(i.num);
+            }
+          });
+        } else {
+          arr1.push(0);
+          arr2.push(0);
+        }
       });
       });
-    }
-    console.log(monthTypeValue.value, "整合数据");
+      console.log(monthTypeValue.value, "电 数据整合 区域统计");
 
 
-    JSON.parse(eds.decryptDes(res.data.data)).forEach((item) => {
-      monthList.value.push(item.date);
-    });
-    console.log(monthList.value, "月份");
+      areaData.value.forEach((item) => {
+        monthList.value.push(item.date);
+      });
+    }
+    if(areaTJEcharts.value){
+      areaTJEcharts.value.dispose();
+    }
     nextTick(() => {
     nextTick(() => {
       echarts2();
       echarts2();
     });
     });
@@ -583,7 +668,7 @@ const echarts2 = async () => {
     legend: {
     legend: {
       orient: "horizontal",
       orient: "horizontal",
       bottom: "5%",
       bottom: "5%",
-      left: "22%",
+      left: "center",
       itemGap: 20,
       itemGap: 20,
       itemWidth: 15,
       itemWidth: 15,
       itemHeight: 15,
       itemHeight: 15,
@@ -606,8 +691,8 @@ const echarts2 = async () => {
       {
       {
         type: "slider",
         type: "slider",
         realtime: true,
         realtime: true,
-        start: 0,
-        end: 60, // 数据窗口范围的结束百分比。范围是:0 ~ 100。
+        start: 40,
+        end: 100, // 数据窗口范围的结束百分比。范围是:0 ~ 100。
         height: 5, // 组件高度
         height: 5, // 组件高度
         left: 5, // 左边的距离
         left: 5, // 左边的距离
         right: 5, // 右边的距离
         right: 5, // 右边的距离
@@ -761,7 +846,7 @@ const meterReading = async () => {
     params: paramsData,
     params: paramsData,
     data: data,
     data: data,
   });
   });
-  console.log(res, "实时抄表");
+  console.log(res,JSON.parse(eds.decryptDes(res.data.data)), "实时抄表");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     table2Data.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     table2Data.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     total2.value = JSON.parse(eds.decryptDes(res.data.data)).total;
     total2.value = JSON.parse(eds.decryptDes(res.data.data)).total;

+ 30 - 4
src/views/grade/grade.vue

@@ -829,21 +829,33 @@ const subjectList = async (value) => {
 // 获取成绩分页数据 (----------------------------------------------------------------)
 // 获取成绩分页数据 (----------------------------------------------------------------)
 const getList = async () => {
 const getList = async () => {
   loading.value = true;
   loading.value = true;
-  classInfoList(searchInput.grade.split("-")[1]);
-  examTypeList(searchInput.grade.split("-")[1]);
-  subjectList(searchInput.grade.split("-")[1]);
+  if (searchInput.grade) {
+    classInfoList(searchInput.grade.split("-")[1]);
+    examTypeList(searchInput.grade.split("-")[1]);
+    subjectList(searchInput.grade.split("-")[1]);
+  } else {
+    searchInput.class = "";
+    searchInput.subject = "";
+    searchInput.examType = "";
+    subjectData.value = [];
+    classsData.value = [];
+    examTypeData.value = [];
+  }
   let data = {
   let data = {
     currentPage: currentPage.value,
     currentPage: currentPage.value,
     pageCount: pageSize.value,
     pageCount: pageSize.value,
     name: searchInput.keyWord, // 用户名称
     name: searchInput.keyWord, // 用户名称
     semester: searchInput.semester,
     semester: searchInput.semester,
-    grade: searchInput.grade.split("-")[0],
+    // grade: searchInput.grade,
     schoolClass: searchInput.class,
     schoolClass: searchInput.class,
     subject: searchInput.subject,
     subject: searchInput.subject,
     examType: searchInput.examType,
     examType: searchInput.examType,
     MinScore: searchInput.gradeLow,
     MinScore: searchInput.gradeLow,
     MaxScore: searchInput.gradeHigh,
     MaxScore: searchInput.gradeHigh,
   };
   };
+  if (searchInput.grade) {
+    data.grade = searchInput.grade.split("-")[0];
+  }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/wanzai/api/smartScore/querySmartScorePage",
     url: api.value + "/wanzai/api/smartScore/querySmartScorePage",
@@ -879,6 +891,20 @@ const getList = async () => {
 const searchBtn = lodash.debounce(async () => {
 const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
 }, 300);
 }, 300);
+// 搜索 清除年级数据时
+const nianJiClear = () => {
+  if (searchInput.grade) {
+    classInfoList(searchInput.grade.split("-")[1]);
+    examTypeList(searchInput.grade.split("-")[1]);
+    subjectList(searchInput.grade.split("-")[1]);
+
+    getList();
+  } else {
+    subjectData.value = [];
+    classsData.value = [];
+    examTypeData.value = [];
+  }
+};
 // 成绩查询
 // 成绩查询
 const gradeClear = () => {
 const gradeClear = () => {
   searchInput.gradeLow = "";
   searchInput.gradeLow = "";

+ 1 - 1
src/views/home/home.vue

@@ -646,7 +646,7 @@ const doorForbidClick = async () => {
   let faceData = [];
   let faceData = [];
   let codeData = [];
   let codeData = [];
   let carData = [];
   let carData = [];
-  JSON.parse(eds.decryptDes(res.data.data)).forEach((item) => {
+  JSON.parse(eds.decryptDes(res.data.data)).reverse().forEach((item) => {
     timeList.push(item.date);
     timeList.push(item.date);
     faceData.push(item.face);
     faceData.push(item.face);
     codeData.push(item.code);
     codeData.push(item.code);

+ 8 - 0
src/views/login/index.vue

@@ -542,6 +542,10 @@ onBeforeMount(() => {
                 cursor: pointer;
                 cursor: pointer;
                 a {
                 a {
                   color: #fff;
                   color: #fff;
+                  width: 300px;
+                height: 40px;
+                text-align: center;
+                line-height: 40px;
                 }
                 }
               }
               }
               .el-input {
               .el-input {
@@ -607,7 +611,11 @@ onBeforeMount(() => {
           background-color: #0061ff;
           background-color: #0061ff;
           cursor: pointer;
           cursor: pointer;
           a {
           a {
+            width: 210px;
+        height: 40px;
             color: #fff;
             color: #fff;
+            text-align: center;
+            line-height: 40px;
           }
           }
         }
         }
       }
       }

+ 61 - 36
src/views/roles/roles.vue

@@ -24,10 +24,7 @@
               {{ data.name }}
               {{ data.name }}
             </div>
             </div>
 
 
-            <el-dropdown
-              trigger="click"
-              class="tree_more"
-            >
+            <el-dropdown trigger="click" class="tree_more">
               <div>
               <div>
                 <el-icon><MoreFilled /></el-icon>
                 <el-icon><MoreFilled /></el-icon>
               </div>
               </div>
@@ -337,7 +334,7 @@
             node-key="id"
             node-key="id"
             :expand-on-click-node="false"
             :expand-on-click-node="false"
             show-checkbox
             show-checkbox
-            :default-expanded-keys="[2, 3,16]"
+            :default-expanded-keys="[2, 3, 16]"
             @check="editMemberCheckChange"
             @check="editMemberCheckChange"
           >
           >
             <template #default="{ node, data }">
             <template #default="{ node, data }">
@@ -472,7 +469,7 @@
       v-model="addManagerVisible"
       v-model="addManagerVisible"
       :close-on-click-modal="false"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
       :close-on-press-escape="false"
-      title="菜单权限设置"
+      title="管理员设置"
       align-center
       align-center
       width="1050"
       width="1050"
       :before-close="cancelAddManager"
       :before-close="cancelAddManager"
@@ -489,9 +486,9 @@
             <el-tree
             <el-tree
               :data="addManagerData"
               :data="addManagerData"
               node-key="id"
               node-key="id"
-              default-expand-all
               :expand-on-click-node="false"
               :expand-on-click-node="false"
               :highlight-current="true"
               :highlight-current="true"
+              :default-expanded-keys="[2, 3, 16]"
             >
             >
               <template #default="{ node, data }">
               <template #default="{ node, data }">
                 <span class="custom-tree-node">
                 <span class="custom-tree-node">
@@ -507,13 +504,21 @@
           </div>
           </div>
           <div class="tree">
           <div class="tree">
             <div class="tree-left">
             <div class="tree-left">
-              <el-input
-                style="margin-left: 5px; width: 180px"
-                v-model.trim="selManagerInput"
-                placeholder="输入名字查询"
-                :clearable="true"
-                @change="addManagerSearch"
-              />
+              <el-tooltip
+                class="box-item"
+                effect="dark"
+                content="先选择部门再查询"
+                placement="top-start"
+              >
+                <el-input
+                  style="margin-left: 5px; width: 180px"
+                  v-model.trim="selManagerInput"
+                  placeholder="输入名字查询"
+                  :clearable="true"
+                  @input="addManagerSearch"
+                  :disabled="departmentId ? false : true"
+                />
+              </el-tooltip>
             </div>
             </div>
             <ul
             <ul
               class="infinite-list"
               class="infinite-list"
@@ -1189,9 +1194,9 @@ const cancelEditMember = () => {
 // 勾选查看部门
 // 勾选查看部门
 const editMemberCheckChange = (data, nodes) => {
 const editMemberCheckChange = (data, nodes) => {
   // console.log(nodes, "勾选部门");
   // console.log(nodes, "勾选部门");
-  console.log(editMemberTree.value.getCheckedNodes(),"勾选的所有部门");
-  console.log(editMemberTree.value.getHalfCheckedNodes(),"勾选的所有部门");
-  
+  console.log(editMemberTree.value.getCheckedNodes(), "勾选的所有部门");
+  console.log(editMemberTree.value.getHalfCheckedNodes(), "勾选的所有部门");
+
   lookEditMemberData.value = [];
   lookEditMemberData.value = [];
   // 选中勾选的房间赋值给count
   // 选中勾选的房间赋值给count
   nodes.checkedNodes.forEach((item, index) => {
   nodes.checkedNodes.forEach((item, index) => {
@@ -1329,7 +1334,7 @@ const departmentList = async (title) => {
   };
   };
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
-    url: api.value + "/wanzai/api/smartUser/queryPageSmartUser",
+    url: api.value + "/wanzai/api/smartUser/queryPageSmartUserNoAuth",
     headers: {
     headers: {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
@@ -1408,15 +1413,21 @@ const userClick = async (row) => {
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     // let resData = JSON.parse(eds.decryptDes(res.data.data));
     // let resData = JSON.parse(eds.decryptDes(res.data.data));
     let resData = res.data.data;
     let resData = res.data.data;
-    // console.log(resData.length!=0);
+    // console.log(resData);
     if (resData.length == 0) {
     if (resData.length == 0) {
       row.selShow = true;
       row.selShow = true;
       row.loadShow = false;
       row.loadShow = false;
       // 将被勾选的用户选出来
       // 将被勾选的用户选出来
-      addManagerLiCount.value = [];
+      // addManagerLiCount.value = [];
       selManagerData.value.forEach((item) => {
       selManagerData.value.forEach((item) => {
         if (item.selShow) {
         if (item.selShow) {
-          addManagerLiCount.value.push(item);
+          // 判断添加的人员是否存在,不判断会重复添加
+          let flag = addManagerLiCount.value.some((ele) => {
+            return ele.userId == item.id;
+          });
+          if (!flag) {
+            addManagerLiCount.value.push(item);
+          }
         }
         }
       });
       });
       ElMessage({
       ElMessage({
@@ -1447,17 +1458,26 @@ const userClick = async (row) => {
 // 添加管理员中 取消勾选人员
 // 添加管理员中 取消勾选人员
 const cancelAddManagerLiCheck = (i) => {
 const cancelAddManagerLiCheck = (i) => {
   console.log(i);
   console.log(i);
-  selManagerData.value.forEach((item) => {
-    if (item.userId == i.userId) {
-      item.selShow = false;
-    }
-  });
-  addManagerLiCount.value = [];
-  selManagerData.value.forEach((item) => {
-    if (item.selShow) {
-      addManagerLiCount.value.push(item);
-    }
+  // console.log(selManagerData.value);
+  if (selManagerData.value) {
+    selManagerData.value.forEach((item) => {
+      if (item.userId == i.userId) {
+        item.selShow = false;
+      }
+    });
+  }
+
+  // console.log(addManagerLiCount.value);
+
+  addManagerLiCount.value = addManagerLiCount.value.filter((item) => {
+    return item.id != i.id;
   });
   });
+  // addManagerLiCount.value = [];
+  // selManagerData.value.forEach((item) => {
+  //   if (item.selShow) {
+  //     addManagerLiCount.value.push(item);
+  //   }
+  // });
 };
 };
 // 确认按钮
 // 确认按钮
 const affirmAddManager = async () => {
 const affirmAddManager = async () => {
@@ -1513,6 +1533,9 @@ const affirmAddManager = async () => {
 };
 };
 const cancelAddManager = () => {
 const cancelAddManager = () => {
   addManagerVisible.value = false;
   addManagerVisible.value = false;
+  getUserAuthList(); // 所有用户权限数据
+  selManagerInput.value = ""; // 将搜索框置空
+  selManagertotalPage.value = 0; // 将击部门查询的数据总页数置为0,
   addManagerLiCount.value = []; // 将勾选的管理人员置空
   addManagerLiCount.value = []; // 将勾选的管理人员置空
   selManagerData.value = []; // 将部门查询的数据置空
   selManagerData.value = []; // 将部门查询的数据置空
   departmentId.value = ""; // 将点击的部门id置空
   departmentId.value = ""; // 将点击的部门id置空
@@ -1526,7 +1549,7 @@ const handleCloseUser = async (row) => {
   });
   });
   let arr = [];
   let arr = [];
   filArr.forEach((item) => {
   filArr.forEach((item) => {
-    arr.push(item.id);
+    arr.push(item.userId);
   });
   });
   const formData = new FormData();
   const formData = new FormData();
   formData.append("id", authorGroupId.value);
   formData.append("id", authorGroupId.value);
@@ -1604,7 +1627,7 @@ const treMemberClick = async (row) => {
   }
   }
 };
 };
 // 勾选人员
 // 勾选人员
-const checkTreList = (data, nodes,list) => {
+const checkTreList = (data, nodes, list) => {
   console.log(list);
   console.log(list);
   menuList.value = [];
   menuList.value = [];
   // 选中勾选的房间赋值给count
   // 选中勾选的房间赋值给count
@@ -1649,7 +1672,7 @@ const affirmTreList = async () => {
     treListVisible.value = false;
     treListVisible.value = false;
     // getUserAuthList(); // 所有用户权限数据
     // getUserAuthList(); // 所有用户权限数据
     allRolesData();
     allRolesData();
-    updataRoles()
+    updataRoles();
     location.reload();
     location.reload();
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
@@ -1682,7 +1705,7 @@ const handleCloseRoles = (row) => {
   affirmTreList();
   affirmTreList();
 };
 };
 // 删除菜单更新界面
 // 删除菜单更新界面
-const updataRoles=async ()=>{
+const updataRoles = async () => {
   const formDatas = new FormData();
   const formDatas = new FormData();
   formDatas.append("userId", 722);
   formDatas.append("userId", 722);
   let resData = await axios({
   let resData = await axios({
@@ -1711,7 +1734,7 @@ const updataRoles=async ()=>{
       center: true,
       center: true,
     });
     });
   }
   }
-}
+};
 
 
 // 表格斑马纹颜色修改
 // 表格斑马纹颜色修改
 const tableRowClassName = ({ row, rowIndex }) => {
 const tableRowClassName = ({ row, rowIndex }) => {
@@ -2587,10 +2610,12 @@ onBeforeMount(async () => {
         overflow: auto;
         overflow: auto;
         .el-tree-node {
         .el-tree-node {
           .el-tree-node__content {
           .el-tree-node__content {
+            cursor: auto;
             .el-icon {
             .el-icon {
               // display: none;
               // display: none;
             }
             }
             .custom-tree-node {
             .custom-tree-node {
+              cursor: pointer;
               .title {
               .title {
                 display: flex;
                 display: flex;
                 align-items: center;
                 align-items: center;

+ 265 - 11
src/views/user/user.vue

@@ -139,21 +139,34 @@
               plain
               plain
               >勾选删除</el-button
               >勾选删除</el-button
             >
             >
-            <el-tooltip
+           
+              <el-button-group class="ml-4">
+                <el-tooltip
               class="box-item"
               class="box-item"
               effect="dark"
               effect="dark"
               content="根据当前选中的部门、查询中的用户姓名进行导出"
               content="根据当前选中的部门、查询中的用户姓名进行导出"
               placement="top-start"
               placement="top-start"
-            >
-              <el-button
+            > <el-button
                 type="primary"
                 type="primary"
                 color="rgba(0, 97, 255, 1)"
                 color="rgba(0, 97, 255, 1)"
                 @click="importExcel"
                 @click="importExcel"
                 :disabled="isManage != 1"
                 :disabled="isManage != 1"
                 plain
                 plain
+                style="margin-right: 0;border-right: 0px ;"
                 >导出用户</el-button
                 >导出用户</el-button
               >
               >
-            </el-tooltip>
+          </el-tooltip>
+                <el-button type="primary" @click="exportSettingsClick" style="border-left: 0px ;" plain color="rgba(0, 97, 255, 1)" :icon="Tools" />
+              </el-button-group>
+              <!-- <el-button
+                type="primary"
+                color="rgba(0, 97, 255, 1)"
+                @click="importExcel"
+                :disabled="isManage != 1"
+                plain
+                >导出用户</el-button
+              > -->
+           
             <el-button
             <el-button
               type="primary"
               type="primary"
               color="rgba(0, 97, 255, 1)"
               color="rgba(0, 97, 255, 1)"
@@ -176,11 +189,21 @@
               border: 0,
               border: 0,
             }"
             }"
           >
           >
-            <el-table-column align="center" type="selection" width="80" />
+            <el-table-column
+              align="center"
+              type="selection"
+              
+              width="80"
+            />
             <el-table-column align="center" prop="name" label="姓名" />
             <el-table-column align="center" prop="name" label="姓名" />
+            <el-table-column align="center" prop="name" label="时间组" />
             <el-table-column align="center" prop="identity" label="身份" />
             <el-table-column align="center" prop="identity" label="身份" />
             <el-table-column align="center" prop="department" label="部门" />
             <el-table-column align="center" prop="department" label="部门" />
-            <el-table-column align="center" prop="cardNo" label="学号" />
+            <el-table-column
+              align="center"
+              prop="cardNo"
+              label="学号/电话号码"
+            />
             <el-table-column align="center" prop="img" label="人脸照片">
             <el-table-column align="center" prop="img" label="人脸照片">
               <template #default="{ row }">
               <template #default="{ row }">
                 <div class="img">
                 <div class="img">
@@ -242,6 +265,7 @@
               <span>基本信息</span>
               <span>基本信息</span>
             </div>
             </div>
             <el-form-item
             <el-form-item
+              :key="addMemberRuleForm.identity"
               label="学号 :"
               label="学号 :"
               :prop="addMemberRuleForm.identity == 1 ? '' : 'serialNumber'"
               :prop="addMemberRuleForm.identity == 1 ? '' : 'serialNumber'"
             >
             >
@@ -304,7 +328,7 @@
             </el-form-item>
             </el-form-item>
             <el-form-item
             <el-form-item
               label="身份证号 :"
               label="身份证号 :"
-              :prop="addMemberRuleForm.identity == 1 ? '' : 'icCard'"
+              :prop="addMemberRuleForm.identity == 1 ? '' : ''"
             >
             >
               <el-input
               <el-input
                 v-model="addMemberRuleForm.icCard"
                 v-model="addMemberRuleForm.icCard"
@@ -423,6 +447,20 @@
               </el-select>
               </el-select>
             </el-form-item>
             </el-form-item>
             <el-form-item
             <el-form-item
+              label="任课班级 :"
+              :prop="addMemberRuleForm.identity == 1 ? '' : 'timeGroupId'"
+            >
+              <el-cascader
+                style="width: 500px"
+                placeholder="请选择任课班级"
+                v-model="addMemberRuleForm.teachingClass"
+                :options="teachingClassData"
+                :props="teachingClassProps"
+                @change="teachingClassChange"
+                clearable
+              />
+            </el-form-item>
+            <el-form-item
               v-if="addMemberRuleForm.identity != 3"
               v-if="addMemberRuleForm.identity != 3"
               label="时间组 :"
               label="时间组 :"
               :prop="addMemberRuleForm.identity == 1 ? '' : 'timeGroupId'"
               :prop="addMemberRuleForm.identity == 1 ? '' : 'timeGroupId'"
@@ -1206,6 +1244,43 @@
         <el-button @click="cancelMoveMember">取消</el-button>
         <el-button @click="cancelMoveMember">取消</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
+     <!-- 用户导出设置 -->
+     <el-dialog
+      class="exportSettings"
+      v-model="exportSettingsVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title="用户导出设置"
+      align-center
+      width="650"
+      :before-close="cancelExportSettings"
+    >
+      <div class="move">
+        <el-transfer
+         v-model="exportSettingsSel"
+         :titles="['未选择', '已选择']"
+         :left-default-checked="leftChecked"
+         :right-default-checked="rightChecked"
+         :props="{
+           key: 'id',
+           label: 'name',
+         }"
+         @change="exportSettingsChange"
+         :data="exportSettingsData"
+       />
+      </div>
+      <div class="options">
+        <el-button
+          color="rgba(41, 109, 227, 1)"
+          class="queding"
+          type="primary"
+          @click="confirmExportSettings"
+        >
+          确认
+        </el-button>
+        <el-button @click="cancelExportSettings">取消</el-button>
+      </div>
+    </el-dialog>
     <!-- 注销账号 -->
     <!-- 注销账号 -->
     <!-- <el-dialog
     <!-- <el-dialog
       class="closeAccount"
       class="closeAccount"
@@ -1292,7 +1367,7 @@ import {
 import COS from "cos-js-sdk-v5";
 import COS from "cos-js-sdk-v5";
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
 import { ElMessage, ElMessageBox, genFileId } from "element-plus";
 import { ElMessage, ElMessageBox, genFileId } from "element-plus";
-import { Camera } from "@element-plus/icons-vue";
+import { Camera,Tools } from "@element-plus/icons-vue";
 import { dayjs } from "element-plus";
 import { dayjs } from "element-plus";
 import lodash from "lodash";
 import lodash from "lodash";
 import axios from "axios";
 import axios from "axios";
@@ -1453,9 +1528,10 @@ const addMemberRuleForm = reactive({
   facePhoto: "", // 人脸照片
   facePhoto: "", // 人脸照片
   compressFacePhoto: "", // 压缩的人脸照片
   compressFacePhoto: "", // 压缩的人脸照片
   grade: "", // 年级
   grade: "", // 年级
+  class: "", // 班级
+  teachingClass: "", // 任课班级
   institute: "", // 学院
   institute: "", // 学院
   specialty: "", // 专业
   specialty: "", // 专业
-  class: "", // 班级
   school: "", // 校区
   school: "", // 校区
   dormitory: "", // 宿舍号
   dormitory: "", // 宿舍号
   phone: "", // 手机号
   phone: "", // 手机号
@@ -1482,6 +1558,90 @@ const conteactListPageCount = ref(50); // 联系人下拉一页数据条数
 const conteactListTotalPage = ref(); // 联系人总共多少页,判断滚动到底是否还要加载
 const conteactListTotalPage = ref(); // 联系人总共多少页,判断滚动到底是否还要加载
 const conteactListInput = ref(); // 联系人下拉框中的搜索字段
 const conteactListInput = ref(); // 联系人下拉框中的搜索字段
 const conteactLoading = ref(false); // 联系人下拉框搜索时加载
 const conteactLoading = ref(false); // 联系人下拉框搜索时加载
+const teachingClassProps = { multiple: true }; // 任课班级
+const teachingClassData = ref([
+  {
+    value: 1,
+    label: "语文",
+    children: [
+      {
+        value: 2,
+        label: "七年级",
+        children: [
+          { value: 3, label: "一班" },
+          { value: 4, label: "二班" },
+          { value: 5, label: "三班" },
+        ],
+      },
+      {
+        value: 6,
+        label: "八年级",
+        children: [
+          { value: 7, label: "一班" },
+          { value: 8, label: "二班" },
+          { value: 9, label: "三班" },
+        ],
+      },
+      {
+        value: 10,
+        label: "九年级",
+        children: [
+          { value: 11, label: "一班" },
+          { value: 12, label: "二班" },
+          { value: 13, label: "三班" },
+        ],
+      },
+    ],
+  },
+  {
+    value: 14,
+    label: "数学",
+    children: [
+      {
+        value: 15,
+        label: "七年级",
+        children: [
+          { value: 16, label: "一班" },
+          { value: 17, label: "二班" },
+          { value: 18, label: "三班" },
+        ],
+      },
+      {
+        value: 19,
+        label: "八年级",
+        children: [
+          { value: 20, label: "一班" },
+          { value: 21, label: "二班" },
+          { value: 22, label: "三班" },
+        ],
+      },
+    ],
+  },
+  {
+    value: 23,
+    label: "英语",
+    children: [
+      {
+        value: 24,
+        label: "七年级",
+        children: [
+          { value: 25, label: "一班" },
+          { value: 26, label: "二班" },
+          { value: 27, label: "三班" },
+        ],
+      },
+      {
+        value: 28,
+        label: "八年级",
+        children: [
+          { value: 29, label: "一班" },
+          { value: 30, label: "二班" },
+          { value: 31, label: "三班" },
+        ],
+      },
+    ],
+  },
+]);
 
 
 const upload = ref(); // 人脸照片
 const upload = ref(); // 人脸照片
 // 表单验证
 // 表单验证
@@ -1650,6 +1810,15 @@ const moveTree = ref();
 const moveSearchInput = ref(); // 移动部门中关键字搜索
 const moveSearchInput = ref(); // 移动部门中关键字搜索
 const treeSelData = reactive({ list: [] }); //
 const treeSelData = reactive({ list: [] }); //
 
 
+// 用户导出设置 (-----------------------------------------------)
+const exportSettingsVisible = ref(false);
+const exportSettingsSel=ref([]) // 用户导出设置的选择数据
+const leftChecked=ref([]) // 左边默认选择中的数据
+const rightChecked=ref([]) // 右边默认选择中的数据
+const exportSettingsData=ref([
+  {name:'姓名',id:1},{name:'身份',id:2},{name:'部门',id:3},{name:'学号/电话号码',id:4},
+]) // 
+
 // 删除记录页面
 // 删除记录页面
 const delRecordDatas = ref(); // 删除记录
 const delRecordDatas = ref(); // 删除记录
 const delRecordTotal = ref(); // 删除记录数量
 const delRecordTotal = ref(); // 删除记录数量
@@ -2164,7 +2333,10 @@ const addMemberClick = () => {
     addMemberRef.value.resetFields();
     addMemberRef.value.resetFields();
   });
   });
 };
 };
-
+const teachingClassChange=(val)=>{
+  console.log(val);
+  
+}
 // 编辑成员弹窗
 // 编辑成员弹窗
 const editClick = (row) => {
 const editClick = (row) => {
   addMemberTitle.value = "编辑成员";
   addMemberTitle.value = "编辑成员";
@@ -2185,7 +2357,11 @@ const editClick = (row) => {
   addMemberRuleForm.sex = row.sexId; // 性别 女:0男:1
   addMemberRuleForm.sex = row.sexId; // 性别 女:0男:1
   addMemberRuleForm.department = row.departmentId; // 部门ID
   addMemberRuleForm.department = row.departmentId; // 部门ID
   addMemberRuleForm.facePhoto = row.headImage; // 人脸照片
   addMemberRuleForm.facePhoto = row.headImage; // 人脸照片
-  addMemberRuleForm.grade = Number(row.grade); // 年级
+  if (row.grade) {
+    addMemberRuleForm.grade = Number(row.grade); // 年级
+  } else {
+    addMemberRuleForm.grade = "";
+  }
   nextTick(() => {
   nextTick(() => {
     classsList();
     classsList();
   });
   });
@@ -3141,6 +3317,26 @@ const cancelTreeSel = (i) => {
   // moveTree.value.setCheckedKeys(arr);
   // moveTree.value.setCheckedKeys(arr);
 };
 };
 
 
+// 用户导出设置 (----------------------------------------------------------------)
+const exportSettingsClick = () => {
+  exportSettingsVisible.value=true
+};
+const exportSettingsChange=(
+  value,
+  direction,
+  movedKeys
+) => {
+  console.log(exportSettingsSel.value);
+  
+  console.log(value, direction, movedKeys)
+}
+const confirmExportSettings=()=>{
+  console.log("确定用户设置");
+}
+const cancelExportSettings=()=>{
+  exportSettingsVisible.value=false
+}
+
 // 注销账号 (--------------------------------------------------------------------)
 // 注销账号 (--------------------------------------------------------------------)
 // const closeAccountClick = () => {
 // const closeAccountClick = () => {
 //   if (selectData.list.length) {
 //   if (selectData.list.length) {
@@ -4118,6 +4314,64 @@ onUnmounted(() => {
       }
       }
     }
     }
   }
   }
+   // 用户导出设置
+   :deep(.exportSettings) {
+    // height: 600px;
+    overflow: hidden;
+    border-radius: 11px;
+
+    .el-dialog__header {
+      border-radius: 11px 11px 0 0;
+      background: rgba(245, 249, 255, 1);
+      font-weight: 600;
+      height: 60px;
+      padding: 0 20px;
+      line-height: 60px;
+      margin: 0;
+      border-bottom: 1px solid rgba(230, 230, 230, 1);
+
+      .el-dialog__headerbtn {
+        outline: none;
+      }
+    }
+
+    .el-dialog__body {
+      padding: 0px 20px 20px 20px;
+      height: 550px;
+      // display: flex;
+      // flex-direction: column-reverse;
+      .move {
+        display: flex;
+        justify-content: center;
+        .el-transfer{
+          margin-top: 10px;
+          height: 100%;
+          .el-transfer-panel__body{
+            height: 450px;
+          }
+        }
+      }
+      .options {
+        margin: 15px 0;
+        display: flex;
+        flex-direction: row-reverse;
+        .queding {
+          margin-left: 20px;
+        }
+      }
+
+      .option {
+        display: flex;
+        flex-direction: row-reverse;
+        align-items: center;
+        margin: 10px 0;
+
+        .queding {
+          margin-left: 20px;
+        }
+      }
+    }
+  }
   // 注销账号
   // 注销账号
   :deep(.closeAccount) {
   :deep(.closeAccount) {
     // height: 600px;
     // height: 600px;