Browse Source

轨迹管理接口都已对接完成(轨迹页面需调整未改),综合素质评价老师和学生接口调整,修改其他页面bug

hzj18279462576@163.com 2 years ago
parent
commit
e864eb671a

+ 2 - 0
index.html

@@ -15,5 +15,7 @@
     <div id="app"></div>
     <div id="app"></div>
     <!-- <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> -->
     <!-- <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> -->
     <script type="module" src="/src/main.js"></script>
     <script type="module" src="/src/main.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.1/gsap.min.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.6/MotionPathPlugin.min.js"></script>
   </body>
   </body>
 </html>
 </html>

+ 14 - 0
package-lock.json

@@ -2617,12 +2617,26 @@
       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "dev": true
       "dev": true
     },
     },
+    "v-viewer": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-3.0.11.tgz",
+      "integrity": "sha512-E8LOdAxhzuktt4HB3PswVCccQ1Q1sYHYnLsS6zaJISpb5EvmAFs5sYNfXnDLFxVb5DQ82v4ZlGxkYlseXwWRJw==",
+      "requires": {
+        "lodash": "^4.17.21",
+        "viewerjs": "^1.9.0"
+      }
+    },
     "vary": {
     "vary": {
       "version": "1.1.2",
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
       "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
       "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
       "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
       "dev": true
       "dev": true
     },
     },
+    "viewerjs": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.6.tgz",
+      "integrity": "sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw=="
+    },
     "vite": {
     "vite": {
       "version": "4.1.1",
       "version": "4.1.1",
       "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
       "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",

+ 1 - 0
package.json

@@ -26,6 +26,7 @@
     "sass": "^1.58.0",
     "sass": "^1.58.0",
     "sass-loader": "^13.2.0",
     "sass-loader": "^13.2.0",
     "terser": "^5.16.5",
     "terser": "^5.16.5",
+    "v-viewer": "^3.0.11",
     "vue": "^3.2.45",
     "vue": "^3.2.45",
     "vue-router": "^4.0.10",
     "vue-router": "^4.0.10",
     "vuex": "^4.0.2",
     "vuex": "^4.0.2",

+ 4 - 3
src/App.vue

@@ -34,7 +34,8 @@ onBeforeMount(() => {
 #nprogress .bar {
 #nprogress .bar {
   background-color: rgb(0, 97, 255) !important;
   background-color: rgb(0, 97, 255) !important;
 }
 }
-* {
-  user-select: none;
-}
+// 禁止文章复制
+// * {
+//   user-select: none;
+// }
 </style>
 </style>

+ 22 - 2
src/main.js

@@ -14,20 +14,40 @@ import "animate.css/animate.min.css";
 import SvgIcon from "./components/SvgIcon/index.vue";
 import SvgIcon from "./components/SvgIcon/index.vue";
 import "virtual:svg-icons-register";
 import "virtual:svg-icons-register";
 
 
+import Viewer from "v-viewer";
+import "viewerjs/dist/viewer.css";
+
 const app = createApp(App);
 const app = createApp(App);
 for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
 for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
   app.component(key, component);
   app.component(key, component);
 }
 }
 
 
-
 app.use(ElementPlus, {
 app.use(ElementPlus, {
   locale: zhCn,
   locale: zhCn,
 });
 });
 app.use(router);
 app.use(router);
 app.use(store);
 app.use(store);
 
 
-
 app.component("svg-icon", SvgIcon);
 app.component("svg-icon", SvgIcon);
 
 
+app.use(Viewer, {
+  Options: {
+    inline: true,
+    button: true, //右上角按钮
+    navbar: true, //底部缩略图
+    title: true, //当前图片标题
+    toolbar: true, //底部工具栏
+    tooltip: true, //显示缩放百分比
+    movable: true, //是否可以移动
+    zoomable: true, //是否可以缩放
+    rotatable: true, //是否可旋转
+    scalable: true, //是否可翻转
+    transition: true, //使用 CSS3 过度
+    fullscreen: true, //播放时是否全屏
+    keyboard: true, //是否支持键盘
+    url: "data-source",
+  },
+});
+
 app.mount("#app");
 app.mount("#app");
 app.config.devtools = true;
 app.config.devtools = true;

+ 6 - 2
src/views/apply/apply.vue

@@ -427,9 +427,13 @@ const applyLink = (row) => {
   let charToCheck = "http";
   let charToCheck = "http";
 
 
   if (str.includes(charToCheck)) {
   if (str.includes(charToCheck)) {
-    window.open(row.urlLink);
+    if(row.descript=='领导驾驶舱'){
+      window.open(`${row.urlLink}?token=${sessionStorage.getItem("token")}`);
+    }else{
+      window.open(row.urlLink)
+    }
   } else {
   } else {
-    window.open(`https://${row.urlLink}`);
+    window.open(`https://${row.urlLink}?token=${sessionStorage.getItem("token")}`);
   }
   }
 };
 };
 
 

+ 34 - 16
src/views/attendanceRecord/attendanceRecord.vue

@@ -16,9 +16,19 @@
               :clearable="true"
               :clearable="true"
               @blur="searchBtn"
               @blur="searchBtn"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model.trim="searchInput.keyWord"
+              v-model.trim="searchInput.name"
               class="sel"
               class="sel"
-              placeholder="请输入学生姓名或学号"
+              placeholder="请输入学生姓名"
+            />
+          </div>
+          <div class="condition">
+            <el-input
+              :clearable="true"
+              @blur="searchBtn"
+              @clear="searchBtn"
+              v-model.trim="searchInput.cardId"
+              class="sel"
+              placeholder="请输入学生学号"
             />
             />
           </div>
           </div>
           <el-button
           <el-button
@@ -125,7 +135,7 @@
             </el-select>
             </el-select>
           </div> -->
           </div> -->
           <!-- 识别分组 -->
           <!-- 识别分组 -->
-          <div class="condition">
+          <!-- <div class="condition">
             <span class="title">识别分组 : </span>
             <span class="title">识别分组 : </span>
             <el-select
             <el-select
               v-model="searchInput.recognition"
               v-model="searchInput.recognition"
@@ -141,13 +151,13 @@
               >
               >
               </el-option>
               </el-option>
             </el-select>
             </el-select>
-          </div>
+          </div> -->
           <!-- 通行状态 -->
           <!-- 通行状态 -->
           <div class="condition">
           <div class="condition">
-            <span class="title">通行状态 : </span>
+            <span class="title">考勤状态 : </span>
             <el-select
             <el-select
               v-model="searchInput.passType"
               v-model="searchInput.passType"
-              placeholder="请选择通行状态"
+              placeholder="请选择考勤状态"
               style="width: 160px"
               style="width: 160px"
               @change="searchBtn"
               @change="searchBtn"
               :clearable="true"
               :clearable="true"
@@ -222,7 +232,9 @@
           <el-table-column align="center" prop="cardNo" label="学号" />
           <el-table-column align="center" prop="cardNo" label="学号" />
           <el-table-column align="center" prop="cardNo" label="图像">
           <el-table-column align="center" prop="cardNo" label="图像">
             <template #default={row}>
             <template #default={row}>
-              <img @click="imgClick(row.headImage)" :src="row.headImage" style="width:60px;height:60px"/>
+              <div v-viewer>
+                <img :src="row.headImage" style="width:60px;height:60px"/>
+              </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" label="打卡时间">
           <el-table-column align="center" label="打卡时间">
@@ -348,13 +360,15 @@ const recognitionData = ref([
 const passTypeData = ref([{ name: "正常通行", id: 1 }]); //通行状态数据
 const passTypeData = ref([{ name: "正常通行", id: 1 }]); //通行状态数据
 
 
 const searchInput = reactive({
 const searchInput = reactive({
-  keyWord: "",
+  name: "",
+  cardId: "",
   grade: "", // 年级
   grade: "", // 年级
   class: "", // 班级
   class: "", // 班级
   department: "", // 部门
   department: "", // 部门
   recognition: "", // 识别分组
   recognition: "", // 识别分组
   passType: "", // 通行状态
   passType: "", // 通行状态
-  createTime: "", // 时间
+  createTime: [
+  ], // 时间
 }); // 搜索按钮数据
 }); // 搜索按钮数据
 
 
 const studentData = reactive({
 const studentData = reactive({
@@ -464,11 +478,11 @@ const getList = async () => {
   let data = {
   let data = {
     currentPage: studentData.currentPage,
     currentPage: studentData.currentPage,
     pageCount: studentData.pageSize,
     pageCount: studentData.pageSize,
-    keyWord: searchInput.keyWord, // 用户名称
+    name: searchInput.name, // 用户名称
+    studentNo: searchInput.cardId, // 用户名称
+    status:searchInput.passType,
     gradeId:searchInput.grade,
     gradeId:searchInput.grade,
     classId:searchInput.class,
     classId:searchInput.class,
-    openType:searchInput.openType,// 开门方式
-    resultStatus:searchInput.resultStatus,// 通行状态
   };
   };
   if(searchInput.createTime){
   if(searchInput.createTime){
     data.startTime = searchInput.createTime[0];
     data.startTime = searchInput.createTime[0];
@@ -565,12 +579,16 @@ const importExcel = async () => {
   let data = {
   let data = {
     currentPage: studentData.currentPage,
     currentPage: studentData.currentPage,
     pageCount: studentData.pageSize,
     pageCount: studentData.pageSize,
-    keyWord: searchInput.keyWord, // 用户名称
+    name: searchInput.name, // 用户名称
+    studentNo: searchInput.cardId, // 用户名称
+    status:searchInput.passType,
     gradeId:searchInput.grade,
     gradeId:searchInput.grade,
     classId:searchInput.class,
     classId:searchInput.class,
-    openType:searchInput.openType,// 开门方式
-    resultStatus:searchInput.resultStatus,// 通行状态
   };
   };
+  if(searchInput.createTime){
+    data.startTime = searchInput.createTime[0];
+    data.endTime = searchInput.createTime[1]
+  }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/wanzai/api/smartAttendance/queryPageExport",
     url: api.value + "/wanzai/api/smartAttendance/queryPageExport",
@@ -715,7 +733,7 @@ onUnmounted(() => {
   }
   }
   .scrollId {
   .scrollId {
     overflow: auto;
     overflow: auto;
-    height: calc(100% - 100px);
+    height: calc(100% - 61px);
     display: flex;
     display: flex;
     flex-direction: column;
     flex-direction: column;
     .middle {
     .middle {

+ 13 - 9
src/views/caller/caller.vue

@@ -141,13 +141,12 @@
           />
           />
           <el-table-column
           <el-table-column
             align="center"
             align="center"
-            width="210"
+            width="250"
             label="图片"
             label="图片"
             show-overflow-tooltip
             show-overflow-tooltip
           >
           >
             <template #default="{ row }">
             <template #default="{ row }">
               <div
               <div
-                v-for="i in row.image"
                 style="
                 style="
                   display: flex;
                   display: flex;
                   justify-content: center;
                   justify-content: center;
@@ -155,11 +154,13 @@
                   height: 80px;
                   height: 80px;
                 "
                 "
               >
               >
-                <img
-                  @click="imgClick(i)"
+                <div v-viewer>
+                  <img
+                  v-for="i in row.image"
                   :src="i"
                   :src="i"
                   style="width: 60px; height: 60px; margin: 0 4px"
                   style="width: 60px; height: 60px; margin: 0 4px"
-                />
+                 />
+                </div>
               </div>
               </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
@@ -1021,8 +1022,8 @@ const getList = async () => {
       // managerId: sessionStorage.getItem("token"),
       // managerId: sessionStorage.getItem("token"),
     };
     };
     if (searchInput1.createTime) {
     if (searchInput1.createTime) {
-      data.createStartTime = searchInput1.createTime[0];
-      data.createEndTime = searchInput1.createTime[1];
+      data.startTime = searchInput1.createTime[0];
+      data.endTime = searchInput1.createTime[1];
     }
     }
     if (searchInput1.visitorTime) {
     if (searchInput1.visitorTime) {
       data.visitorStartTime = searchInput1.visitorTime[0];
       data.visitorStartTime = searchInput1.visitorTime[0];
@@ -1067,8 +1068,8 @@ const getList = async () => {
       // managerId: sessionStorage.getItem("token"),
       // managerId: sessionStorage.getItem("token"),
     };
     };
     if (searchInput2.createTime) {
     if (searchInput2.createTime) {
-      data.createStartTime = searchInput2.createTime[0];
-      data.createEndTime = searchInput2.createTime[1];
+      data.startTime = searchInput2.createTime[0];
+      data.endTime = searchInput2.createTime[1];
     }
     }
     if (searchInput2.visitorTime) {
     if (searchInput2.visitorTime) {
       data.visitorStartTime = searchInput2.visitorTime[0];
       data.visitorStartTime = searchInput2.visitorTime[0];
@@ -1645,6 +1646,9 @@ onUnmounted(() => {
         &::after {
         &::after {
           display: none;
           display: none;
         }
         }
+        .el-tabs__item{
+          box-shadow: none;
+        }
       }
       }
     }
     }
     .el-tabs__content {
     .el-tabs__content {

+ 4 - 2
src/views/faceRecord/faceRecord.vue

@@ -159,7 +159,9 @@
           <el-table-column align="center" prop="location" label="地点" />
           <el-table-column align="center" prop="location" label="地点" />
           <el-table-column align="center" prop="cardNo" label="图像">
           <el-table-column align="center" prop="cardNo" label="图像">
             <template #default={row}>
             <template #default={row}>
-              <img @click="imgClick(row.image)" :src="row.image" style="width:60px;height:60px"/>
+              <div v-viewer>
+                <img :src="row.image" style="width:60px;height:60px"/>
+              </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" prop="dateTime" label="创建时间">
           <el-table-column align="center" prop="dateTime" label="创建时间">
@@ -634,7 +636,7 @@ onUnmounted(() => {
   }
   }
   .scrollId {
   .scrollId {
     overflow: auto;
     overflow: auto;
-    height: calc(100% - 100px);
+    height: calc(100% - 61px);
     display: flex;
     display: flex;
     flex-direction: column;
     flex-direction: column;
     .middle {
     .middle {

+ 71 - 70
src/views/home/home.vue

@@ -337,13 +337,15 @@ const applyLink = (row) => {
   let charToCheck = "http";
   let charToCheck = "http";
 
 
   if (str.includes(charToCheck)) {
   if (str.includes(charToCheck)) {
-    if(row.descript=='领导驾驶舱'){
+    if (row.descript == "领导驾驶舱") {
       window.open(`${row.urlLink}?token=${sessionStorage.getItem("token")}`);
       window.open(`${row.urlLink}?token=${sessionStorage.getItem("token")}`);
-    }else{
-      window.open(row.urlLink)
+    } else {
+      window.open(row.urlLink);
     }
     }
   } else {
   } else {
-    window.open(`https://${row.urlLink}?token=${sessionStorage.getItem("token")}`);
+    window.open(
+      `https://${row.urlLink}?token=${sessionStorage.getItem("token")}`
+    );
   }
   }
 };
 };
 
 
@@ -439,66 +441,64 @@ const cartogram = async () => {
 };
 };
 // 能耗趋势图(----------------------------)
 // 能耗趋势图(----------------------------)
 const cartogram2 = async () => {
 const cartogram2 = async () => {
-  let eleData=[]
-  let water=[]
-  let name=[]
- {
-  let data=new FormData();
-  data.append('type',0)
-  let res = await axios({
-    method: "post",
-    url: api.value + "/wanzai/api/driver/getEnergyDay",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      user_head: sessionStorage.getItem("userhead"),
-    },
-    data:data
-  });
-  console.log(res, "水 能耗趋势");
-  if (res.data.code == 200) {
-    res.data.data.forEach(item=>{
-      water.push(item.data[0].num)
-      name.push(item.date)
-    })
-    console.log(water,name);
-    
-  } else {
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: res.data.message,
-      center: true,
+  let eleData = [];
+  let water = [];
+  let name = [];
+  {
+    let data = new FormData();
+    data.append("type", 0);
+    let res = await axios({
+      method: "post",
+      url: api.value + "/wanzai/api/driver/getEnergyDay",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      data: data,
     });
     });
+    console.log(res, "水 能耗趋势");
+    if (res.data.code == 200) {
+      res.data.data.forEach((item) => {
+        water.push(item.data[0].num);
+        name.push(item.date);
+      });
+      console.log(water, name);
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   }
   }
- }
- {
-  let data=new FormData();
-  data.append('type',1)
-  let res = await axios({
-    method: "post",
-    url: api.value + "/wanzai/api/driver/getEnergyDay",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      user_head: sessionStorage.getItem("userhead"),
-    },
-    data:data
-  });
-  console.log(res, "电 能耗趋势");
-  if (res.data.code == 200) {
-    res.data.data.forEach(item=>{
-      eleData.push(item.data[0].num)
-    })
-    console.log(water,name);
-    
-  } else {
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: res.data.message,
-      center: true,
+  {
+    let data = new FormData();
+    data.append("type", 1);
+    let res = await axios({
+      method: "post",
+      url: api.value + "/wanzai/api/driver/getEnergyDay",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      data: data,
     });
     });
+    console.log(res, "电 能耗趋势");
+    if (res.data.code == 200) {
+      res.data.data.forEach((item) => {
+        eleData.push(item.data[0].num);
+      });
+      console.log(water, name);
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   }
   }
- }
   // 折现统计图
   // 折现统计图
   echarts2.value = markRaw(echarts.init(document.getElementById("broken")));
   echarts2.value = markRaw(echarts.init(document.getElementById("broken")));
   echarts2.value.setOption({
   echarts2.value.setOption({
@@ -665,12 +665,14 @@ const doorForbidClick = async () => {
   let faceData = [];
   let faceData = [];
   let codeData = [];
   let codeData = [];
   let carData = [];
   let carData = [];
-  JSON.parse(eds.decryptDes(res.data.data)).reverse().forEach((item) => {
-    timeList.push(item.date);
-    faceData.push(item.face);
-    codeData.push(item.code);
-    carData.push(item.car);
-  });
+  JSON.parse(eds.decryptDes(res.data.data))
+    .reverse()
+    .forEach((item) => {
+      timeList.push(item.date);
+      faceData.push(item.face);
+      codeData.push(item.code);
+      carData.push(item.car);
+    });
   echarts3.value = markRaw(echarts.init(document.getElementById("doorForbid")));
   echarts3.value = markRaw(echarts.init(document.getElementById("doorForbid")));
   echarts3.value.setOption({
   echarts3.value.setOption({
     tooltip: {
     tooltip: {
@@ -1122,11 +1124,10 @@ const resizeChart = () => {
 
 
 onMounted(async () => {
 onMounted(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  getList();
+  
   window.addEventListener("resize", () => {
   window.addEventListener("resize", () => {
     resizeChart();
     resizeChart();
   });
   });
-
   if (
   if (
     router.currentRoute.value.query.userhead &&
     router.currentRoute.value.query.userhead &&
     router.currentRoute.value.query.token
     router.currentRoute.value.query.token
@@ -1178,7 +1179,7 @@ onMounted(async () => {
       });
       });
     }
     }
   }
   }
-
+  getList();
   // let userhead = "1B0430E15102ADC65C43E475AC697D9A";
   // let userhead = "1B0430E15102ADC65C43E475AC697D9A";
   // let token =
   // let token =
   //   "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTMyMzQ2NDQsImNhcmRObyI6IjAwMDAwMSIsImlhdCI6MTcxMzE0ODI0NH0.jxuGCqDkqzRa3poVNQq5aoSrKGDCZauXFLVKrB4M87s";
   //   "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTMyMzQ2NDQsImNhcmRObyI6IjAwMDAwMSIsImlhdCI6MTcxMzE0ODI0NH0.jxuGCqDkqzRa3poVNQq5aoSrKGDCZauXFLVKrB4M87s";
@@ -1229,7 +1230,7 @@ onUnmounted(() => {
       // 应用入口
       // 应用入口
       .apply {
       .apply {
         width: 100%;
         width: 100%;
-     
+
         height: 165px;
         height: 165px;
         border-radius: 8px;
         border-radius: 8px;
         background-color: #fff;
         background-color: #fff;

+ 4 - 2
src/views/info/info.vue

@@ -88,7 +88,7 @@
           </el-icon>
           </el-icon>
         </div> -->
         </div> -->
       </div>
       </div>
-      <div class="info">在校学生人数:150000</div>
+      <div class="info">在校学生人数:{{ studentCount }}</div>
 
 
       <!-- 公众号信息区域 -->
       <!-- 公众号信息区域 -->
       <div class="title">
       <div class="title">
@@ -165,6 +165,7 @@ const schoolCode = ref(4851511515);
 
 
 // 学校名称
 // 学校名称
 const schoolName = ref("万载县第三中学");
 const schoolName = ref("万载县第三中学");
+const studentCount=ref() // 学校学生
 
 
 // 校徽图片地址
 // 校徽图片地址
 const schoolImg = ref();
 const schoolImg = ref();
@@ -203,11 +204,12 @@ const getList = async () => {
     },
     },
     // params: data,
     // params: data,
   });
   });
-  console.log(res, "学校基本信息");
+  console.log(res,JSON.parse(eds.decryptDes(res.data.data)), "学校基本信息");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     schoolCode.value = JSON.parse(eds.decryptDes(res.data.data)).schoolCode;
     schoolCode.value = JSON.parse(eds.decryptDes(res.data.data)).schoolCode;
     schoolImg.value = JSON.parse(eds.decryptDes(res.data.data)).schoolBadge;
     schoolImg.value = JSON.parse(eds.decryptDes(res.data.data)).schoolBadge;
     schoolName.value = JSON.parse(eds.decryptDes(res.data.data)).name;
     schoolName.value = JSON.parse(eds.decryptDes(res.data.data)).name;
+    studentCount.value = JSON.parse(eds.decryptDes(res.data.data)).studentCount;
     logoImg.value = JSON.parse(eds.decryptDes(res.data.data)).logoImage;
     logoImg.value = JSON.parse(eds.decryptDes(res.data.data)).logoImage;
     appName.value = JSON.parse(eds.decryptDes(res.data.data)).officialName;
     appName.value = JSON.parse(eds.decryptDes(res.data.data)).officialName;
     appAppid.value = JSON.parse(eds.decryptDes(res.data.data)).appid;
     appAppid.value = JSON.parse(eds.decryptDes(res.data.data)).appid;

+ 3 - 1
src/views/leave/leave.vue

@@ -118,7 +118,9 @@
           />
           />
           <el-table-column align="center" prop="userName" label="头像">
           <el-table-column align="center" prop="userName" label="头像">
             <template #default="{ row }">
             <template #default="{ row }">
-              <img @click="imgClick(row)" style="width: 60px; height: 60px" :src="row.image" alt="" />
+              <div v-viewer>
+                <img style="width: 60px; height: 60px" :src="row.image" alt="" />
+              </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" prop="className" label="班级" />
           <el-table-column align="center" prop="className" label="班级" />

+ 2 - 0
src/views/roles/roles.vue

@@ -1516,6 +1516,8 @@ const affirmAddManager = async () => {
       addManagerLiCount.value = [];
       addManagerLiCount.value = [];
       selManagerData.value = [];
       selManagerData.value = [];
       departmentId.value = "";
       departmentId.value = "";
+      selManagerInput.value=""
+      selManagertotalPage.value=0
       ElMessage({
       ElMessage({
         type: "success",
         type: "success",
         showClose: true,
         showClose: true,

+ 2 - 2
src/views/safety/safety.vue

@@ -96,8 +96,8 @@
           />
           />
           <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">
-                <img @click="imgClick(row)" :src="row.image" alt="" />
+              <div class="img" v-viewer>
+                <img :src="row.image" alt="" />
               </div>
               </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>

+ 318 - 144
src/views/teacher/teacher.vue

@@ -34,7 +34,7 @@
             >
             >
               <el-option
               <el-option
                 :label="i.name"
                 :label="i.name"
-                :value="i.id"
+                :value="i.name"
                 v-for="i in semesterData"
                 v-for="i in semesterData"
               />
               />
             </el-select>
             </el-select>
@@ -49,11 +49,8 @@
               @change="yearClassChange"
               @change="yearClassChange"
               :clearable="true"
               :clearable="true"
             >
             >
-              <el-option
-                v-for="i in gradeData"
-                :label="i.name"
-                :value="i.id"
-              >
+              <el-option v-for="i in gradeData" 
+              :label="i.name" :value="`${i.name}-${i.id}`">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </div>
           </div>
@@ -142,6 +139,12 @@
               width="200"
               width="200"
               label="学期"
               label="学期"
             />
             />
+            <el-table-column
+              align="center"
+              prop="gradeName"
+              width="100"
+              label="年级"
+            />
             <el-table-column align="center" prop="name" label="教师姓名">
             <el-table-column align="center" prop="name" label="教师姓名">
               <template #default="scope">
               <template #default="scope">
                 <span class="normal" @click="teacherInfoClick(scope.row)">{{
                 <span class="normal" @click="teacherInfoClick(scope.row)">{{
@@ -413,7 +416,7 @@
           class="semester"
           class="semester"
           :class="item.name == semesterName ? 'semester_active' : ''"
           :class="item.name == semesterName ? 'semester_active' : ''"
           v-for="item in semesterData"
           v-for="item in semesterData"
-          @click="getAllData(item.name)"
+          @click="getAllData(item)"
         >
         >
           {{ item.name }}
           {{ item.name }}
         </span>
         </span>
@@ -628,6 +631,7 @@ const goScoreFlag = ref(true); // 判断是否能保存
 const scoringItemsVisible = ref(false);
 const scoringItemsVisible = ref(false);
 const resetTable = ref(); // 表格ref
 const resetTable = ref(); // 表格ref
 const semesterName = ref(); // 选择的学期名称
 const semesterName = ref(); // 选择的学期名称
+const semestertermId = ref(); // 选择的学期id
 const adjustData = ref(); // 接口获取的初始数据
 const adjustData = ref(); // 接口获取的初始数据
 const scoringItemsData = reactive({
 const scoringItemsData = reactive({
   list: [],
   list: [],
@@ -640,6 +644,7 @@ const addItemVisible = ref(false);
 const addItemRef = ref();
 const addItemRef = ref();
 const addItemRuleForm = reactive({
 const addItemRuleForm = reactive({
   term: "", // 学期
   term: "", // 学期
+  termId: "", // 学期
   bigitem: "", // 评分项
   bigitem: "", // 评分项
   subitem: "", // 评分子项
   subitem: "", // 评分子项
   score: "", // 分值
   score: "", // 分值
@@ -766,13 +771,14 @@ const subjectDataList = async (value) => {
 };
 };
 // 改变年级选择
 // 改变年级选择
 const yearClassChange = async (value) => {
 const yearClassChange = async (value) => {
-  console.log(value);
+  console.log(value,111111111);
   if (value) {
   if (value) {
-    subjectDataList(value);
+    subjectDataList(value.split('-')[1]);
   } else {
   } else {
     subjectData.value = [];
     subjectData.value = [];
     classsData.value = [];
     classsData.value = [];
     searchInput.class = "";
     searchInput.class = "";
+    searchInput.subject=""
   }
   }
   getList();
   getList();
 };
 };
@@ -802,11 +808,13 @@ const getList = async () => {
     };
     };
     let data = {
     let data = {
       name: searchInput.keyWord,
       name: searchInput.keyWord,
-      term:searchInput.semester,
-      gradeName:searchInput.grade,
-      className:searchInput.class,
-      subject:searchInput.subject,
+      term: searchInput.semester,
+      className: searchInput.class,
+      subject: searchInput.subject,
     };
     };
+    if(searchInput.grade){
+      data.gradeName=searchInput.grade.split('-')[0]
+    }
     let res = await axios({
     let res = await axios({
       method: "post",
       method: "post",
       url: api.value + "/wanzai/api/smartEvaluateTeacher/getTeacherScoreList",
       url: api.value + "/wanzai/api/smartEvaluateTeacher/getTeacherScoreList",
@@ -1333,11 +1341,15 @@ const confirmGoScore = async () => {
 const scoringItemsClick = async () => {
 const scoringItemsClick = async () => {
   scoringItemsVisible.value = true;
   scoringItemsVisible.value = true;
   semesterName.value = semesterData.value[0].name;
   semesterName.value = semesterData.value[0].name;
-  getAllData(semesterName.value);
+  semestertermId.value = semesterData.value[0].id;
+  // console.log(semesterData.value,semesterName.value,semestertermId.value);
+  getAllData({ name: semesterName.value, termId: semestertermId.value });
 };
 };
 // 获取评分项全部数据
 // 获取评分项全部数据
 const getAllData = async (termName) => {
 const getAllData = async (termName) => {
-  semesterName.value = termName;
+  console.log(termName);
+  semesterName.value = termName.name;
+  semestertermId.value = termName.termId;
   let formData = new FormData();
   let formData = new FormData();
   formData.append("term", semesterName.value);
   formData.append("term", semesterName.value);
   let res = await axios({
   let res = await axios({
@@ -1355,10 +1367,12 @@ const getAllData = async (termName) => {
     if (data.simpleScoreList.length) {
     if (data.simpleScoreList.length) {
       adjustData.value = data.simpleScoreList;
       adjustData.value = data.simpleScoreList;
       addItemRuleForm.term = semesterName.value;
       addItemRuleForm.term = semesterName.value;
+      addItemRuleForm.termId = semestertermId.value;
       adjustItem();
       adjustItem();
     } else {
     } else {
       adjustData.value = data.simpleScoreList;
       adjustData.value = data.simpleScoreList;
       addItemRuleForm.term = semesterName.value;
       addItemRuleForm.term = semesterName.value;
+      addItemRuleForm.termId = semestertermId.value;
       scoringItemsData.list = [];
       scoringItemsData.list = [];
     }
     }
   } else {
   } else {
@@ -1373,15 +1387,6 @@ const getAllData = async (termName) => {
 // 整理评分项数据
 // 整理评分项数据
 const adjustItem = () => {
 const adjustItem = () => {
   let arr = [];
   let arr = [];
-  // let data = {
-  //   deleted: "",
-  //   id: "",
-  //   parentId: "",
-  //   scoreItem: "",
-  //   scoreNum: "",
-  //   smartScoreManageList: "",
-  //   term: "",
-  // };
   adjustData.value.forEach((item) => {
   adjustData.value.forEach((item) => {
     arr.push({
     arr.push({
       deleted: item.deleted,
       deleted: item.deleted,
@@ -1392,6 +1397,7 @@ const adjustItem = () => {
       scoreNum: item.scoreNum,
       scoreNum: item.scoreNum,
       smartScoreManageList: item.smartScoreManageList,
       smartScoreManageList: item.smartScoreManageList,
       term: item.term,
       term: item.term,
+      termId: item.termId,
       index: item.smartScoreManageList.length + 1,
       index: item.smartScoreManageList.length + 1,
     });
     });
     item.smartScoreManageList.forEach((i) => {
     item.smartScoreManageList.forEach((i) => {
@@ -1404,6 +1410,7 @@ const adjustItem = () => {
         scoreNum: i.scoreNum,
         scoreNum: i.scoreNum,
         smartScoreManageList: "",
         smartScoreManageList: "",
         term: i.term,
         term: i.term,
+        termId: item.termId,
         index: 0,
         index: 0,
       });
       });
     });
     });
@@ -1428,9 +1435,12 @@ const cancelScoringItems = () => {
 // 添加项按钮 (-------------------------------------------)
 // 添加项按钮 (-------------------------------------------)
 const bigItemClick = async () => {
 const bigItemClick = async () => {
   // let arr={ pf: "", pfz: "", fz: "" }
   // let arr={ pf: "", pfz: "", fz: "" }
+  console.log(semesterName.value, semestertermId.value);
   addItemVisible.value = true;
   addItemVisible.value = true;
   addItemTitle.value = "添加评分项";
   addItemTitle.value = "添加评分项";
   addItemRuleForm.term = semesterName.value;
   addItemRuleForm.term = semesterName.value;
+  addItemRuleForm.termId = semestertermId.value;
+  addItemRuleForm.id = "";
   addItemRuleForm.bigitem = "";
   addItemRuleForm.bigitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.score = "";
   addItemRuleForm.score = "";
@@ -1440,6 +1450,8 @@ const cancelAddItem = () => {
   addItemVisible.value = false;
   addItemVisible.value = false;
   addItemRef.value.resetFields();
   addItemRef.value.resetFields();
   addItemRuleForm.term = semesterName.value;
   addItemRuleForm.term = semesterName.value;
+  addItemRuleForm.termId = semestertermId.value;
+  addItemRuleForm.id = "";
   addItemRuleForm.bigitem = "";
   addItemRuleForm.bigitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.score = "";
   addItemRuleForm.score = "";
@@ -1450,52 +1462,85 @@ const confirmAddItem = (formEl) => {
     if (!formEl) return;
     if (!formEl) return;
     formEl.validate(async (valid, fields) => {
     formEl.validate(async (valid, fields) => {
       if (valid) {
       if (valid) {
-        // let arr = {
-        //   pf: addItemRuleForm.bigitem,
-        //   pfz: addItemRuleForm.subitem,
-        //   fz: addItemRuleForm.score,
+        // let data = {
+        //   deleted: 0,
+        //   id: "",
+        //   parentId: 0,
+        //   scoreItem: addItemRuleForm.bigitem,
+        //   scoreNum: addItemRuleForm.score,
+        //   term: addItemRuleForm.term,
+        //   smartScoreManageList: [
+        //     {
+        //       deleted: 0,
+        //       id: "",
+        //       parentId: "",
+        //       scoreItem: addItemRuleForm.subitem,
+        //       scoreNum: addItemRuleForm.score,
+        //       smartScoreManageList: "",
+        //       term: addItemRuleForm.term,
+        //     },
+        //   ],
         // };
         // };
+        // let flag = "";
+        // console.log(adjustData.value);
+        // if (adjustData.value) {
+        //   flag = adjustData.value.some((item) => {
+        //     return item.scoreItem == addItemRuleForm.bigitem;
+        //   });
+        // } else {
+        //   flag = false;
+        //   adjustData.value = [];
+        // }
+        // console.log(flag, "重复添加评分项");
+        // if (flag) {
+        //   ElMessage({
+        //     type: "warning",
+        //     showClose: true,
+        //     message: "重复添加评分项",
+        //     center: true,
+        //   });
+        // } else {
+        //   adjustData.value.push(data);
+        //   operateScore(); // 评分管理操作-增加/删除/更新 调用
+        //   addItemVisible.value = false;
+        // }
         let data = {
         let data = {
-          deleted: 0,
-          id: "",
-          parentId: 0,
+          termId: addItemRuleForm.termId,
           scoreItem: addItemRuleForm.bigitem,
           scoreItem: addItemRuleForm.bigitem,
+          scoreChildItem: addItemRuleForm.subitem,
           scoreNum: addItemRuleForm.score,
           scoreNum: addItemRuleForm.score,
-          term: addItemRuleForm.term,
-          smartScoreManageList: [
-            {
-              deleted: 0,
-              id: "",
-              parentId: "",
-              scoreItem: addItemRuleForm.subitem,
-              scoreNum: addItemRuleForm.score,
-              smartScoreManageList: "",
-              term: addItemRuleForm.term,
-            },
-          ],
         };
         };
-        let flag = "";
-        console.log(adjustData.value);
-        if (adjustData.value) {
-          flag = adjustData.value.some((item) => {
-            return item.scoreItem == addItemRuleForm.bigitem;
+        console.log(data);
+        let res = await axios({
+          method: "post",
+          url: api.value + "/wanzai/api/smartEvaluateTeacher/addScoreManage",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("userhead"),
+          },
+          data: data,
+        });
+        console.log(res, "总选项添加");
+        if (res.data.code == 200) {
+          getAllData({
+            name: semesterName.value,
+            termId: semestertermId.value,
           });
           });
-        } else {
-          flag = false;
-          adjustData.value = [];
-        }
-        console.log(flag, "重复添加评分项");
-        if (flag) {
+          // addItemRef.value.resetFields();
+          addItemVisible.value = false;
           ElMessage({
           ElMessage({
-            type: "warning",
+            type: "success",
             showClose: true,
             showClose: true,
-            message: "重复添加评分项",
+            message: res.data.message,
             center: true,
             center: true,
           });
           });
         } else {
         } else {
-          adjustData.value.push(data);
-          operateScore(); // 评分管理操作-增加/删除/更新 调用
-          addItemVisible.value = false;
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
         }
         }
       }
       }
     });
     });
@@ -1503,80 +1548,154 @@ const confirmAddItem = (formEl) => {
     if (!formEl) return;
     if (!formEl) return;
     formEl.validate(async (valid, fields) => {
     formEl.validate(async (valid, fields) => {
       if (valid) {
       if (valid) {
+        // let data = {
+        //   deleted: 0,
+        //   id: "",
+        //   parentId: "",
+        //   scoreItem: addItemRuleForm.subitem,
+        //   scoreNum: addItemRuleForm.score,
+        //   smartScoreManageList: "",
+        //   term: addItemRuleForm.term,
+        // };
+        // // 用原数据判断要往哪个大项里面添加子项
+        // adjustData.value.forEach((item) => {
+        //   if (item.scoreItem == addItemRuleForm.bigitem) {
+        //     // 判断是否重复添加子项
+        //     let flag = item.smartScoreManageList.some((i) => {
+        //       return addItemRuleForm.subitem == i.scoreItem;
+        //     });
+        //     if (flag) {
+        //       ElMessage({
+        //         type: "warning",
+        //         showClose: true,
+        //         message: "重复添加评分子项",
+        //         center: true,
+        //       });
+        //     } else {
+        //       item.smartScoreManageList.push(data);
+        //       let score = 0;
+        //       item.smartScoreManageList.forEach((item) => {
+        //         score += Number(item.scoreNum);
+        //       });
+        //       item.scoreNum = score;
+        //       operateScore(); // 评分管理操作-增加/删除/更新 调用
+        //       addItemVisible.value = false;
+        //     }
+        //   }
+        // });
         let data = {
         let data = {
-          deleted: 0,
-          id: "",
-          parentId: "",
+          id: addItemRuleForm.id,
+          termId: addItemRuleForm.termId,
           scoreItem: addItemRuleForm.subitem,
           scoreItem: addItemRuleForm.subitem,
           scoreNum: addItemRuleForm.score,
           scoreNum: addItemRuleForm.score,
-          smartScoreManageList: "",
-          term: addItemRuleForm.term,
         };
         };
-        // 用原数据判断要往哪个大项里面添加子项
-        adjustData.value.forEach((item) => {
-          if (item.scoreItem == addItemRuleForm.bigitem) {
-            // 判断是否重复添加子项
-            let flag = item.smartScoreManageList.some((i) => {
-              return addItemRuleForm.subitem == i.scoreItem;
-            });
-            if (flag) {
-              ElMessage({
-                type: "warning",
-                showClose: true,
-                message: "重复添加评分子项",
-                center: true,
-              });
-            } else {
-              item.smartScoreManageList.push(data);
-              let score = 0;
-              item.smartScoreManageList.forEach((item) => {
-                score += Number(item.scoreNum);
-              });
-              item.scoreNum = score;
-              operateScore(); // 评分管理操作-增加/删除/更新 调用
-              addItemVisible.value = false;
-            }
-          }
+        console.log(data);
+        let res = await axios({
+          method: "post",
+          url:
+            api.value + "/wanzai/api/smartEvaluateTeacher/addChildScoreManage",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("userhead"),
+          },
+          data: data,
         });
         });
+        console.log(res, "子选项添加");
+        if (res.data.code == 200) {
+          getAllData({
+            name: semesterName.value,
+            termId: semestertermId.value,
+          });
+          addItemVisible.value = false;
+          ElMessage({
+            type: "success",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        }
       }
       }
     });
     });
   } else if (addItemTitle.value == "编辑评分子项") {
   } else if (addItemTitle.value == "编辑评分子项") {
     if (!formEl) return;
     if (!formEl) return;
     formEl.validate(async (valid, fields) => {
     formEl.validate(async (valid, fields) => {
       if (valid) {
       if (valid) {
+        // let data = {
+        //   deleted: editItemRow.value.deleted,
+        //   id: editItemRow.value.id,
+        //   parentId: editItemRow.value.parentId,
+        //   scoreItem: addItemRuleForm.subitem,
+        //   scoreNum: addItemRuleForm.score,
+        //   smartScoreManageList: "",
+        //   term: editItemRow.value.term,
+        // };
+        // // 用原数据判断要往哪个大项里面添加子项
+        // adjustData.value.forEach((item) => {
+        //   if (item.scoreItem == addItemRuleForm.bigitem) {
+        //     item.smartScoreManageList.forEach((i) => {
+        //       if (addItemRuleForm.subitem == i.scoreItem) {
+        //         i.deleted = editItemRow.value.deleted;
+        //         i.id = editItemRow.value.id;
+        //         i.parentId = editItemRow.value.parentId;
+        //         i.scoreItem = addItemRuleForm.subitem;
+        //         i.scoreNum = addItemRuleForm.score;
+        //         i.smartScoreManageList = "";
+        //         i.term = editItemRow.value.term;
+        //       }
+        //     });
+        //     let score = 0;
+        //     item.smartScoreManageList.forEach((i) => {
+        //       score += Number(i.scoreNum);
+        //     });
+        //     item.scoreNum = score;
+        //   }
+        // });
+        // console.log(adjustData.value);
+        // operateScore(); // 评分管理操作-增加/删除/更新 调用
+        // addItemVisible.value = false;
         let data = {
         let data = {
-          deleted: editItemRow.value.deleted,
-          id: editItemRow.value.id,
-          parentId: editItemRow.value.parentId,
+          id: addItemRuleForm.id,
           scoreItem: addItemRuleForm.subitem,
           scoreItem: addItemRuleForm.subitem,
           scoreNum: addItemRuleForm.score,
           scoreNum: addItemRuleForm.score,
-          smartScoreManageList: "",
-          term: editItemRow.value.term,
         };
         };
-        // 用原数据判断要往哪个大项里面添加子项
-        adjustData.value.forEach((item) => {
-          if (item.scoreItem == addItemRuleForm.bigitem) {
-            item.smartScoreManageList.forEach((i) => {
-              if (addItemRuleForm.subitem == i.scoreItem) {
-                i.deleted = editItemRow.value.deleted;
-                i.id = editItemRow.value.id;
-                i.parentId = editItemRow.value.parentId;
-                i.scoreItem = addItemRuleForm.subitem;
-                i.scoreNum = addItemRuleForm.score;
-                i.smartScoreManageList = "";
-                i.term = editItemRow.value.term;
-              }
-            });
-            let score = 0;
-            item.smartScoreManageList.forEach((i) => {
-              score += Number(i.scoreNum);
-            });
-            item.scoreNum = score;
-          }
+        console.log(data);
+        let res = await axios({
+          method: "post",
+          url: api.value + "/wanzai/api/smartEvaluateTeacher/updateScoreManage",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("userhead"),
+          },
+          data: data,
         });
         });
-        console.log(adjustData.value);
-        operateScore(); // 评分管理操作-增加/删除/更新 调用
-        addItemVisible.value = false;
+        console.log(res, "子选项编辑");
+        if (res.data.code == 200) {
+          getAllData({
+            name: semesterName.value,
+            termId: semestertermId.value,
+          });
+          addItemVisible.value = false;
+          ElMessage({
+            type: "success",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        }
       }
       }
     });
     });
   }
   }
@@ -1597,8 +1716,8 @@ const operateScore = async () => {
   });
   });
   console.log(res, "分管理操作-增加/删除/更新");
   console.log(res, "分管理操作-增加/删除/更新");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    getAllData(semesterName.value);
-    addItemRef.value.resetFields();
+    getAllData({ name: semesterName.value, termId: semestertermId.value });
+    // addItemRef.value.resetFields();
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
@@ -1621,45 +1740,85 @@ const secondaryItemClick = (row) => {
   addItemTitle.value = "添加评分子项";
   addItemTitle.value = "添加评分子项";
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.term = semesterName.value;
   addItemRuleForm.term = semesterName.value;
+  addItemRuleForm.termId = semestertermId.value;
+  addItemRuleForm.id = row.id;
   addItemRuleForm.subitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.score = "";
   addItemRuleForm.score = "";
 };
 };
 // 编辑项(-----------------------------------------------------------)
 // 编辑项(-----------------------------------------------------------)
 const editScoringItems = (row) => {
 const editScoringItems = (row) => {
   addItemVisible.value = true;
   addItemVisible.value = true;
+  console.log(row);
   addItemTitle.value = "编辑评分子项";
   addItemTitle.value = "编辑评分子项";
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.subitem = row.scoreItem_li;
   addItemRuleForm.subitem = row.scoreItem_li;
   addItemRuleForm.score = row.scoreNum;
   addItemRuleForm.score = row.scoreNum;
   addItemRuleForm.term = row.term;
   addItemRuleForm.term = row.term;
+  addItemRuleForm.termId = row.termId;
+  addItemRuleForm.id = row.id;
   editItemRow.value = row;
   editItemRow.value = row;
 };
 };
 
 
 // 删除功能(-----------------------------------------------------------)
 // 删除功能(-----------------------------------------------------------)
-const delScoringItems = (row) => {
+const delScoringItems = async (row) => {
   console.log(row);
   console.log(row);
-  adjustData.value.forEach((item) => {
-    if (item.scoreItem == row.scoreItem) {
-      if (item.smartScoreManageList.length == 1) {
-        item.deleted = 1;
-      }
-      item.smartScoreManageList.forEach((i) => {
-        console.log(i, "删除项");
-        if (i.id == row.id) {
-          i.deleted = 1;
-        }
-      });
-      let score = 0;
-      item.smartScoreManageList.forEach((i) => {
-        if (i.deleted == 0) {
-          score += Number(i.scoreNum);
-        }
-      });
-      item.scoreNum = score;
-    }
+  // adjustData.value.forEach((item) => {
+  //   console.log(item);
+  //   if (item.scoreItem == row.scoreItem) {
+  //     if (item.smartScoreManageList.length == 1) {
+  //       item.deleted = 1;
+  //     }
+  //     item.smartScoreManageList.forEach((i) => {
+  //       if (i.id == row.id) {
+  //         console.log(i, "删除项");
+  //         i.deleted = 1;
+  //       }
+  //     });
+  //     let score = 0;
+  //     item.smartScoreManageList.forEach((i) => {
+  //       if (i.deleted == 0) {
+  //         score += Number(i.scoreNum);
+  //       }
+  //     });
+  //     item.scoreNum = score;
+  //   }
+  // });
+  // console.log(adjustData.value);
+  // operateScore();
+  let data = {
+    id: row.id,
+  };
+  console.log(data);
+  let res = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartEvaluateTeacher/deleteScoreManage",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
   });
   });
-  console.log(adjustData.value);
-  operateScore();
+  console.log(res, "子选项编辑");
+  if (res.data.code == 200) {
+    getAllData({
+      name: semesterName.value,
+      termId: semestertermId.value,
+    });
+    addItemVisible.value = false;
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 const cancelEvent = () => {};
 const cancelEvent = () => {};
 
 
@@ -1739,7 +1898,7 @@ onUnmounted(() => {
     .footer {
     .footer {
       width: 96%;
       width: 96%;
       height: calc(100% - 70px);
       height: calc(100% - 70px);
-      margin: 10px auto 10px;
+      margin: 0 auto 16px;
 
 
       .el-table--fit {
       .el-table--fit {
         height: 100%;
         height: 100%;
@@ -2111,7 +2270,22 @@ onUnmounted(() => {
         border-radius: 4px;
         border-radius: 4px;
         overflow: auto;
         overflow: auto;
         display: flex;
         display: flex;
-
+        &::-webkit-scrollbar-track {
+          background-color: #daeeff;
+          border-radius: 4px;
+        }
+        // 滚动条的滚动区域(轨道)
+        &::-webkit-scrollbar {
+          background-color: #242424;
+          height: 5px;
+          width: 4px;
+          border-radius: 4px;
+        }
+        // 滚动条的可拖拽部分(滑块)
+        &::-webkit-scrollbar-thumb {
+          background: #57b2ff;
+          border-radius: 4px;
+        }
         .items {
         .items {
           &:last-child {
           &:last-child {
             border-right: 1px solid rgba(230, 230, 230, 1);
             border-right: 1px solid rgba(230, 230, 230, 1);
@@ -2146,7 +2320,7 @@ onUnmounted(() => {
         }
         }
       }
       }
       .options {
       .options {
-        margin: 30px 30px 0 0;
+        margin: 20px 30px 0 0;
         width: 100%;
         width: 100%;
         display: flex;
         display: flex;
         flex-direction: row-reverse;
         flex-direction: row-reverse;

+ 22 - 4
src/views/trackSearch/trackSearch.vue

@@ -67,16 +67,19 @@
           <el-card>
           <el-card>
             <h4>{{ i.gradeName }} / {{ i.className }} / {{ i.name }}</h4>
             <h4>{{ i.gradeName }} / {{ i.className }} / {{ i.name }}</h4>
             <p>{{ i.location }}</p>
             <p>{{ i.location }}</p>
-            <img @click="imgClick(i.image)" :src="i.image" alt="" />
+            <div v-viewer>
+              <img :src="i.image" alt="" />
+            </div>
           </el-card>
           </el-card>
         </el-timeline-item>
         </el-timeline-item>
       </el-timeline>
       </el-timeline>
     </div>
     </div>
     <div class="scroll">
     <div class="scroll">
       <div class="map" @click="xy">
       <div class="map" @click="xy">
-        <svg width="1620" height="974">
+        <svg width="1620" height="974" viewBox="0 0 1620 974">
           <!-- 绘制地铁线路 -->
           <!-- 绘制地铁线路 -->
           <path
           <path
+            id="biking-road"
             d="M468,454 L568,346 L894,405 L870,265 L830,593 L621,261"
             d="M468,454 L568,346 L894,405 L870,265 L830,593 L621,261"
             stroke="#009900"
             stroke="#009900"
             stroke-width="3"
             stroke-width="3"
@@ -148,6 +151,7 @@
           id="circle"
           id="circle"
           width="24"
           width="24"
           height="24"
           height="24"
+          
         >
         >
           <path
           <path
             d="M512 1024C229.248 1024 0 794.752 0 512S229.248 0 512 0s512 229.248 512 512-229.248 512-512 512z m200.746667-478.506667l1.749333-1.664 30.165333-30.165333-330.496-330.581333a42.837333 42.837333 0 0 0-60.288 0 42.538667 42.538667 0 0 0 0 60.330666l270.08 270.165334-270.08 269.952a42.496 42.496 0 0 0 0 60.288c16.64 16.64 43.861333 16.469333 60.288 0.042666l298.581334-298.368z"
             d="M512 1024C229.248 1024 0 794.752 0 512S229.248 0 512 0s512 229.248 512 512-229.248 512-512 512z m200.746667-478.506667l1.749333-1.664 30.165333-30.165333-330.496-330.581333a42.837333 42.837333 0 0 0-60.288 0 42.538667 42.538667 0 0 0 0 60.330666l270.08 270.165334-270.08 269.952a42.496 42.496 0 0 0 0 60.288c16.64 16.64 43.861333 16.469333 60.288 0.042666l298.581334-298.368z"
@@ -424,6 +428,21 @@ onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   getList();
   getList();
   gradeList();
   gradeList();
+  nextTick(() => {
+    gsap.registerPlugin(MotionPathPlugin);
+    // bikingRoad.animation = "dash 10s linear forwards";
+    gsap.to("#circle", {
+      duration: 25, // 多少时间完成动画
+      repeat: 0, // 重复次数 -1为无限次
+      ease: Linear.easeNone, //动画的运动方式(匀速)
+      motionPath: {
+        path: "#biking-road",
+        align: "#biking-road",
+        autoRotate: true,
+        alignOrigin: [0.5, 0.5],
+      },
+    });
+  });
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);
@@ -602,9 +621,8 @@ onUnmounted(() => {
       background-position: 70% 50%; //设置背景图像的起始位置
       background-position: 70% 50%; //设置背景图像的起始位置
       background-size: 120% 140%; //规定背景图像的尺寸
       background-size: 120% 140%; //规定背景图像的尺寸
       svg {
       svg {
-        border: 3px solid rgba(255, 255, 255, 1);
+        // border: 3px solid rgba(255, 255, 255, 1);
       }
       }
-      
     }
     }
   }
   }
   // 家长访客配置
   // 家长访客配置

+ 155 - 127
src/views/trafficRecord/trafficRecord.vue

@@ -29,7 +29,7 @@
             查询</el-button
             查询</el-button
           >
           >
           <!-- 年级 -->
           <!-- 年级 -->
-          <div class="condition" v-if="classId==0">
+          <div class="condition" v-if="classId == 0">
             <span class="title">年级 : </span>
             <span class="title">年级 : </span>
             <el-select
             <el-select
               v-model="searchInput.grade"
               v-model="searchInput.grade"
@@ -38,16 +38,12 @@
               @change="gradeChange"
               @change="gradeChange"
               :clearable="true"
               :clearable="true"
             >
             >
-              <el-option
-                v-for="i in gradeData"
-                :label="i.name"
-                :value="i.id"
-              >
+              <el-option v-for="i in gradeData" :label="i.name" :value="i.id">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </div>
           </div>
           <!-- 班级 -->
           <!-- 班级 -->
-          <div class="condition" v-if="classId==0">
+          <div class="condition" v-if="classId == 0">
             <span class="title">班级 : </span>
             <span class="title">班级 : </span>
             <el-tooltip
             <el-tooltip
               class="box-item"
               class="box-item"
@@ -72,36 +68,32 @@
           </div>
           </div>
 
 
           <!-- 年级 -->
           <!-- 年级 -->
-          <div class="condition" v-if="classId!=0">
+          <div class="condition" v-if="classId != 0">
             <span class="title">年级 : </span>
             <span class="title">年级 : </span>
             <el-select
             <el-select
               v-model="searchInput.grade"
               v-model="searchInput.grade"
               placeholder="请选择年级"
               placeholder="请选择年级"
               style="width: 160px"
               style="width: 160px"
             >
             >
-              <el-option
-                v-for="i in gradeData"
-                :label="i.name"
-                :value="i.id"
-              >
+              <el-option v-for="i in gradeData" :label="i.name" :value="i.id">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </div>
           </div>
           <!-- 班级 -->
           <!-- 班级 -->
-          <div class="condition" v-if="classId!=0">
+          <div class="condition" v-if="classId != 0">
             <span class="title">班级 : </span>
             <span class="title">班级 : </span>
-              <el-select
-                v-model="searchInput.class"
-                placeholder="请选择班级"
-                style="width: 160px"
-                @change="searchBtn"
-              >
-                <el-option
-                  v-for="i in classsData"
-                  :label="i.name"
-                  :value="i.id"
-                />
-              </el-select>
+            <el-select
+              v-model="searchInput.class"
+              placeholder="请选择班级"
+              style="width: 160px"
+              @change="searchBtn"
+            >
+              <el-option
+                v-for="i in classsData"
+                :label="i.name"
+                :value="i.id"
+              />
+            </el-select>
           </div>
           </div>
           <!-- 识别分组 -->
           <!-- 识别分组 -->
           <div class="condition">
           <div class="condition">
@@ -130,7 +122,7 @@
               @change="searchBtn"
               @change="searchBtn"
               :clearable="true"
               :clearable="true"
             >
             >
-            <el-option label="全部" value=""></el-option>
+              <el-option label="全部" value=""></el-option>
               <el-option label="成功" :value="1"></el-option>
               <el-option label="成功" :value="1"></el-option>
               <el-option label="失败" :value="0"></el-option>
               <el-option label="失败" :value="0"></el-option>
             </el-select>
             </el-select>
@@ -142,7 +134,7 @@
               v-model="searchInput.createTime"
               v-model="searchInput.createTime"
               type="datetimerange"
               type="datetimerange"
               unlink-panels
               unlink-panels
-              :clearable='false'
+              :clearable="false"
               range-separator="-"
               range-separator="-"
               start-placeholder="起始时间"
               start-placeholder="起始时间"
               end-placeholder="结束时间"
               end-placeholder="结束时间"
@@ -185,45 +177,57 @@
             border: 0,
             border: 0,
           }"
           }"
         >
         >
-        <el-table-column align="center" type="index" label="序号" width="80" />
           <el-table-column
           <el-table-column
             align="center"
             align="center"
-            prop="sn"
-            label="设备编号"
+            type="index"
+            label="序号"
+            width="80"
           />
           />
+          <el-table-column align="center" prop="sn" label="设备编号" />
           <el-table-column align="center" prop="type" label="设备名称" />
           <el-table-column align="center" prop="type" label="设备名称" />
           <el-table-column align="center" prop="departmentName" label="部门" />
           <el-table-column align="center" prop="departmentName" label="部门" />
           <el-table-column align="center" prop="className" label="班级" />
           <el-table-column align="center" prop="className" label="班级" />
           <el-table-column align="center" prop="name" label="姓名" />
           <el-table-column align="center" prop="name" label="姓名" />
           <el-table-column align="center" prop="cardNo" label="人员编号" />
           <el-table-column align="center" prop="cardNo" label="人员编号" />
-          <el-table-column
-            align="center"
-            width="210"
-            label="图像"
-          >
-            <template #default={row}>
-              <img @click="imgClick(row.image)" :src="row.image" style="width:60px;height:60px"/>
+          <el-table-column align="center" width="210" label="图像">
+            <template #default="{ row }">
+              <div v-viewer>
+                <img
+                  :src="row.image"
+                  style="width: 60px; height: 60px"
+                />
+              </div>
+              <!-- <img
+                @click="imgClick(row.image)"
+                :src="row.image"
+                style="width: 60px; height: 60px"
+              /> -->
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" prop="openType" label="识别分组">
           <el-table-column align="center" prop="openType" label="识别分组">
-            <template #default="{row}">
-              <span v-if="row.openType==1">白名单对比</span>
-              <span v-if="row.openType==2">人证比对</span>
-              <span v-if="row.openType==3">IC卡比对</span>
-              <span v-if="row.openType==4">职工二维码</span>
+            <template #default="{ row }">
+              <span v-if="row.openType == 1">白名单对比</span>
+              <span v-if="row.openType == 2">人证比对</span>
+              <span v-if="row.openType == 3">IC卡比对</span>
+              <span v-if="row.openType == 4">职工二维码</span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column align="center" width="180" prop="dateTime" label="记录时间" />
+          <el-table-column
+            align="center"
+            width="180"
+            prop="dateTime"
+            label="记录时间"
+          />
           <el-table-column align="center" label="出口类型">
           <el-table-column align="center" label="出口类型">
-            <template #default="{row}">
-              <span v-if="row.access==1">进</span>
-              <span v-if="row.access==0">出</span>
+            <template #default="{ row }">
+              <span v-if="row.access == 1">进</span>
+              <span v-if="row.access == 0">出</span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" prop="score" label="通行状态">
           <el-table-column align="center" prop="score" label="通行状态">
-            <template #default="{row}">
-              <span v-if="row.resultStatus==1">成功</span>
-              <span v-if="row.resultStatus==0">失败</span>
+            <template #default="{ row }">
+              <span v-if="row.resultStatus == 1">成功</span>
+              <span v-if="row.resultStatus == 0">失败</span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <!-- <el-table-column align="center" prop="type" label="类型" /> -->
           <!-- <el-table-column align="center" prop="type" label="类型" /> -->
@@ -263,8 +267,20 @@
       >
       >
         <div class="switch">
         <div class="switch">
           <p>按照身份推送 :</p>
           <p>按照身份推送 :</p>
-          <el-checkbox v-model="editChecked1" label="家长" :true-value="1" :false-value="2" size="large" />
-          <el-checkbox v-model="editChecked2" label="班主任" :true-value="1" :false-value="2" size="large" />
+          <el-checkbox
+            v-model="editChecked1"
+            label="家长"
+            :true-value="1"
+            :false-value="2"
+            size="large"
+          />
+          <el-checkbox
+            v-model="editChecked2"
+            label="班主任"
+            :true-value="1"
+            :false-value="2"
+            size="large"
+          />
         </div>
         </div>
         <div class="options">
         <div class="options">
           <el-button
           <el-button
@@ -288,7 +304,7 @@
         :autoplay="false"
         :autoplay="false"
         trigger
         trigger
       >
       >
-        <el-carousel-item  >
+        <el-carousel-item>
           <img :src="showImg" alt="" />
           <img :src="showImg" alt="" />
         </el-carousel-item>
         </el-carousel-item>
       </el-carousel>
       </el-carousel>
@@ -324,42 +340,47 @@ const api = ref("");
 const router = useRouter();
 const router = useRouter();
 // 表格数据
 // 表格数据
 const loading = ref(false);
 const loading = ref(false);
-const classId=ref() // 获取所管理的班级的id(0是所有班级)
+const classId = ref(); // 获取所管理的班级的id(0是所有班级)
 const tableData = reactive({
 const tableData = reactive({
-  list: [
-  ],
+  list: [],
 });
 });
 const gradeData = ref(); //年级下拉数据
 const gradeData = ref(); //年级下拉数据
 const classsData = ref(); //班级下拉数据
 const classsData = ref(); //班级下拉数据
-const departmentData = ref([{name:'发财部',id:1}]); //部门下拉数据
-const recognitionData = ref([{name:'全部',id:1},{name:'其他组',id:2}]); //识别分组数据
-const passTypeData = ref([{name:'正常通行',id:1}]); //通行状态数据
+const departmentData = ref([{ name: "发财部", id: 1 }]); //部门下拉数据
+const recognitionData = ref([
+  { name: "全部", id: 1 },
+  { name: "其他组", id: 2 },
+]); //识别分组数据
+const passTypeData = ref([{ name: "正常通行", id: 1 }]); //通行状态数据
 
 
 const searchInput = reactive({
 const searchInput = reactive({
   keyWord: "",
   keyWord: "",
   grade: "", // 年级
   grade: "", // 年级
   class: "", // 班级
   class: "", // 班级
-  openType:"",// 识别分组
-  resultStatus:"",// 通行状态
-  createTime:[dayjs().format('YYYY-MM-DD 00:00:00'),dayjs().format('YYYY-MM-DD 23:59:59')],// 时间
+  openType: "", // 识别分组
+  resultStatus: "", // 通行状态
+  createTime: [
+    dayjs().format("YYYY-MM-DD 00:00:00"),
+    dayjs().format("YYYY-MM-DD 23:59:59"),
+  ], // 时间
 }); // 搜索按钮数据
 }); // 搜索按钮数据
 
 
 const currentPage = ref(1); // 当前页
 const currentPage = ref(1); // 当前页
 const pageSize = ref(20);
 const pageSize = ref(20);
 const total = ref(5); // 当前总数
 const total = ref(5); // 当前总数
 const bgImg = ref(false);
 const bgImg = ref(false);
-const showImg=ref('')
+const showImg = ref("");
 
 
 // 推送人设置
 // 推送人设置
-const editVisible=ref(false)
-const editId=ref()
-const editChecked1=ref(2)// 家长
-const editChecked2=ref(2)// 班主任
+const editVisible = ref(false);
+const editId = ref();
+const editChecked1 = ref(2); // 家长
+const editChecked2 = ref(2); // 班主任
 
 
 // 年级数据下拉
 // 年级数据下拉
 const adminClassDataList = async () => {
 const adminClassDataList = async () => {
-  console.log(classId.value==1);
-  if(classId.value==0){
+  console.log(classId.value == 1);
+  if (classId.value == 0) {
     let grade = await axios({
     let grade = await axios({
       method: "get",
       method: "get",
       url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
       url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
@@ -375,7 +396,7 @@ const adminClassDataList = async () => {
       "年级下拉数据"
       "年级下拉数据"
     );
     );
     gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
     gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
-  }else{
+  } else {
     let grade = await axios({
     let grade = await axios({
       method: "get",
       method: "get",
       url: api.value + "/wanzai/api/smartClass/getClassId",
       url: api.value + "/wanzai/api/smartClass/getClassId",
@@ -384,7 +405,7 @@ const adminClassDataList = async () => {
         user_head: sessionStorage.getItem("userhead"),
         user_head: sessionStorage.getItem("userhead"),
       },
       },
       params: {
       params: {
-        schoolClass:classId.value
+        schoolClass: classId.value,
       },
       },
     });
     });
     console.log(
     console.log(
@@ -393,16 +414,20 @@ const adminClassDataList = async () => {
       "年级下拉数据"
       "年级下拉数据"
     );
     );
     let data = JSON.parse(eds.decryptDes(grade.data.data));
     let data = JSON.parse(eds.decryptDes(grade.data.data));
-    gradeData.value=[{
-      name:data.gradeName,
-      id:data.gradeId
-    }]
-    classsData.value=[{
-      name:data.className,
-      id:data.classId
-    }]
-    searchInput.grade=data.gradeId
-    searchInput.class=data.classId
+    gradeData.value = [
+      {
+        name: data.gradeName,
+        id: data.gradeId,
+      },
+    ];
+    classsData.value = [
+      {
+        name: data.className,
+        id: data.classId,
+      },
+    ];
+    searchInput.grade = data.gradeId;
+    searchInput.class = data.classId;
   }
   }
 };
 };
 // 管理员 改变年级选择
 // 管理员 改变年级选择
@@ -412,7 +437,7 @@ const gradeChange = (value) => {
     adminClassInfoList(value);
     adminClassInfoList(value);
   } else {
   } else {
     classsData.value = [];
     classsData.value = [];
-    searchInput.class=""
+    searchInput.class = "";
   }
   }
   getList();
   getList();
 };
 };
@@ -451,14 +476,14 @@ const getList = async () => {
     currentPage: currentPage.value,
     currentPage: currentPage.value,
     pageCount: pageSize.value,
     pageCount: pageSize.value,
     keyWord: searchInput.keyWord, // 用户名称
     keyWord: searchInput.keyWord, // 用户名称
-    gradeId:searchInput.grade,
-    classId:searchInput.class,
-    openType:searchInput.openType,// 开门方式
-    resultStatus:searchInput.resultStatus,// 通行状态
+    gradeId: searchInput.grade,
+    classId: searchInput.class,
+    openType: searchInput.openType, // 开门方式
+    resultStatus: searchInput.resultStatus, // 通行状态
   };
   };
-  if(searchInput.createTime){
+  if (searchInput.createTime) {
     data.startTime = searchInput.createTime[0];
     data.startTime = searchInput.createTime[0];
-    data.endTime = searchInput.createTime[1]
+    data.endTime = searchInput.createTime[1];
   }
   }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
@@ -497,8 +522,8 @@ const subsectionCurrentChange = (value) => {
 };
 };
 
 
 // 推送人设置
 // 推送人设置
-const editClick =async () =>{
-  editVisible.value=true
+const editClick = async () => {
+  editVisible.value = true;
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/wanzai/api/smartPushConfig/list",
     url: api.value + "/wanzai/api/smartPushConfig/list",
@@ -509,16 +534,16 @@ const editClick =async () =>{
   });
   });
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "推送配置");
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "推送配置");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    let data = JSON.parse(eds.decryptDes(res.data.data))
-    editId.value=data.id
-    editChecked1.value=data.parentsPush
-    editChecked2.value=data.chargeTeacherPush
-  } 
-}
-const editConfirm=async ()=>{
+    let data = JSON.parse(eds.decryptDes(res.data.data));
+    editId.value = data.id;
+    editChecked1.value = data.parentsPush;
+    editChecked2.value = data.chargeTeacherPush;
+  }
+};
+const editConfirm = async () => {
   let data = {
   let data = {
     id: editId.value,
     id: editId.value,
-    parentsPush:  editChecked1.value,
+    parentsPush: editChecked1.value,
     chargeTeacherPush: editChecked2.value, // 用户名称
     chargeTeacherPush: editChecked2.value, // 用户名称
   };
   };
   let res = await axios({
   let res = await axios({
@@ -532,7 +557,7 @@ const editConfirm=async ()=>{
   });
   });
   console.log(res, "确定推送");
   console.log(res, "确定推送");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    editVisible.value=false
+    editVisible.value = false;
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
@@ -547,23 +572,23 @@ const editConfirm=async ()=>{
       center: true,
       center: true,
     });
     });
   }
   }
-}
-const editCancel=()=>{
-  editVisible.value=false
-}
+};
+const editCancel = () => {
+  editVisible.value = false;
+};
 
 
 //导出功能 (-----------------------------------------------------------------)
 //导出功能 (-----------------------------------------------------------------)
 const importExcel = async () => {
 const importExcel = async () => {
   let data = {
   let data = {
     keyWord: searchInput.keyWord, // 用户名称
     keyWord: searchInput.keyWord, // 用户名称
-    gradeId:searchInput.grade,
-    classId:searchInput.class,
-    openType:searchInput.class,// 开门方式
-    resultStatus:searchInput.class,// 通行状态
+    gradeId: searchInput.grade,
+    classId: searchInput.class,
+    openType: searchInput.class, // 开门方式
+    resultStatus: searchInput.class, // 通行状态
   };
   };
-  if(searchInput.createTime){
+  if (searchInput.createTime) {
     data.startTime = searchInput.createTime[0];
     data.startTime = searchInput.createTime[0];
-    data.endTime = searchInput.createTime[1]
+    data.endTime = searchInput.createTime[1];
   }
   }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
@@ -611,10 +636,10 @@ const tableRowClassName = ({ row, rowIndex }) => {
   }
   }
   return "";
   return "";
 };
 };
-const handleSizeChange=(value)=>{
+const handleSizeChange = (value) => {
   pageSize.value = value;
   pageSize.value = value;
   getList();
   getList();
-}
+};
 // 分页
 // 分页
 const handleCurrentChange = (value) => {
 const handleCurrentChange = (value) => {
   // console.log(value);
   // console.log(value);
@@ -625,12 +650,12 @@ const handleCurrentChange = (value) => {
 // 查看图片
 // 查看图片
 const imgClick = (row) => {
 const imgClick = (row) => {
   console.log(row);
   console.log(row);
-  
+
   bgImg.value = true;
   bgImg.value = true;
   showImg.value = row;
   showImg.value = row;
 };
 };
 // 判断为班主任 还是 超级管理员
 // 判断为班主任 还是 超级管理员
-const getAdminId=async ()=>{
+const getAdminId = async () => {
   // 获取所管理的班级的id(0是所有班级)
   // 获取所管理的班级的id(0是所有班级)
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
@@ -639,22 +664,26 @@ const getAdminId=async ()=>{
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
     },
     },
-    params:{
-      userHead:sessionStorage.getItem("userhead")
+    params: {
+      userHead: sessionStorage.getItem("userhead"),
     },
     },
   });
   });
-  console.log(res,JSON.parse(eds.decryptDes(res.data.data)),"获取所管理的班级的id(0是所有班级)");
+  console.log(
+    res,
+    JSON.parse(eds.decryptDes(res.data.data)),
+    "获取所管理的班级的id(0是所有班级)"
+  );
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    let classIds=JSON.parse(eds.decryptDes(res.data.data)).schoolClass
-    classId.value = classIds
-     adminClassDataList()
-  } 
-}
+    let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
+    classId.value = classIds;
+    adminClassDataList();
+  }
+};
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   getList();
   getList();
-  getAdminId()
+  getAdminId();
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);
@@ -808,9 +837,9 @@ onUnmounted(() => {
 
 
   .footer {
   .footer {
     width: 96%;
     width: 96%;
-    height: calc(100% - 270px);
+    height: calc(100% - 250px);
     min-height: 300px;
     min-height: 300px;
-    margin: 10px auto 30px;
+    margin: 10px auto 20px;
 
 
     .el-table--fit {
     .el-table--fit {
       height: 100%;
       height: 100%;
@@ -885,7 +914,6 @@ onUnmounted(() => {
       // }
       // }
     }
     }
   }
   }
-  
 
 
   :deep(.editDialog) {
   :deep(.editDialog) {
     //   height: 420px;
     //   height: 420px;
@@ -992,8 +1020,8 @@ onUnmounted(() => {
     width: 100%;
     width: 100%;
     height: 100%;
     height: 100%;
     background-color: rgba(255, 255, 255, 0.8);
     background-color: rgba(255, 255, 255, 0.8);
-    :deep(.el-carousel__arrow){
-      display:none;
+    :deep(.el-carousel__arrow) {
+      display: none;
     }
     }
     // border-radius: 50px;
     // border-radius: 50px;
     :deep(.el-carousel__container) {
     :deep(.el-carousel__container) {

+ 12 - 8
src/views/user/user.vue

@@ -185,7 +185,7 @@
               @click="DelRecordClick"
               @click="DelRecordClick"
               :disabled="isManage != 1"
               :disabled="isManage != 1"
               plain
               plain
-              >删除记录</el-button
+              >删除异常记录</el-button
             >
             >
           </div>
           </div>
         </div>
         </div>
@@ -217,10 +217,9 @@
             />
             />
             <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" v-viewer>
                   <img
                   <img
                     v-if="row.headImage"
                     v-if="row.headImage"
-                    @click="imgClick(row)"
                     :src="row.headImage"
                     :src="row.headImage"
                     alt=""
                     alt=""
                   />
                   />
@@ -387,11 +386,15 @@
               :prop="addMemberRuleForm.identity == 1 ? '' : 'facePhoto'"
               :prop="addMemberRuleForm.identity == 1 ? '' : 'facePhoto'"
             >
             >
               <div class="facePhoto">
               <div class="facePhoto">
-                <div v-if="addMemberRuleForm.facePhoto">
-                  <img
+                <div v-if="addMemberRuleForm.facePhoto" v-viewer>
+                  <!-- <img
                     @click="imgClick(addMemberRuleForm.facePhoto)"
                     @click="imgClick(addMemberRuleForm.facePhoto)"
                     :src="addMemberRuleForm.facePhoto"
                     :src="addMemberRuleForm.facePhoto"
                     alt="facePhotoImg"
                     alt="facePhotoImg"
+                  /> -->
+                  <img
+                    :src="addMemberRuleForm.facePhoto"
+                    alt="facePhotoImg"
                   />
                   />
                 </div>
                 </div>
                 <el-upload
                 <el-upload
@@ -961,11 +964,12 @@
             <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">
-                  <img @click="imgClick(row)" :src="row.headImage" alt="" />
+                <div class="img" v-viewer>
+                  <img  :src="row.headImage" alt="" />
                 </div>
                 </div>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
+            <el-table-column align="center"  width="400" prop="deleteReason" label="删除异常原因" />
             <!-- <el-table-column align="center" label="操作" width="200">
             <!-- <el-table-column align="center" label="操作" width="200">
               <template #default="scope">
               <template #default="scope">
                 <div class="edit">
                 <div class="edit">
@@ -2835,7 +2839,7 @@ const DelRecordClick = async () => {
   delRecordShow.value = true;
   delRecordShow.value = true;
   delBatchShow.value = false;
   delBatchShow.value = false;
   homeShow.value = false;
   homeShow.value = false;
-  addMemberTitle.value = "删除记录";
+  addMemberTitle.value = "删除异常记录";
   let data = {
   let data = {
     currentPage: delRecordCurrentPage.value,
     currentPage: delRecordCurrentPage.value,
     pageCount: delRecordPageSize.value,
     pageCount: delRecordPageSize.value,