Browse Source

万载版本迭代 完成在校统计模块

hzj18279462576@163.com 2 years ago
parent
commit
adeeb85ab1

+ 1 - 1
index.html

@@ -8,7 +8,7 @@
       href="./src/assets/items/school_logo.ico"
       href="./src/assets/items/school_logo.ico"
     />
     />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>智慧校园</title>
+    <title>万载三中</title>
   </head>
   </head>
 
 
   <body>
   <body>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/statistic.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/statistic_s.svg


+ 3 - 1
src/layout/index.vue

@@ -36,7 +36,9 @@ watch(
 const tableData = reactive({
 const tableData = reactive({
   list: [],
   list: [],
 });
 });
-
+onMounted(() => {
+  
+});
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
 });
 });

+ 116 - 19
src/layout/sidebar/SidevarItem.vue

@@ -131,6 +131,19 @@
           <svg-icon v-else iconName="leave" class="iconClass"></svg-icon>
           <svg-icon v-else iconName="leave" class="iconClass"></svg-icon>
           <span>{{ item.meta.title }}</span>
           <span>{{ item.meta.title }}</span>
         </el-menu-item>
         </el-menu-item>
+        <!-- 在校统计 -->
+        <el-menu-item
+          :index="`/wanzai/${item.name}`"
+          v-if="item.name == 'statistic'"
+        >
+          <svg-icon
+            v-if="activeIndex == '/wanzai/statistic'"
+            iconName="statistic_s"
+            class="iconClass"
+          ></svg-icon>
+          <svg-icon v-else iconName="statistic" class="iconClass"></svg-icon>
+          <span>{{ item.meta.title }}</span>
+        </el-menu-item>
         <!-- 访客预约 -->
         <!-- 访客预约 -->
         <el-menu-item
         <el-menu-item
           :index="`/wanzai/${item.name}`"
           :index="`/wanzai/${item.name}`"
@@ -347,7 +360,7 @@ const roleListChange = async () => {
               name: item.routeName,
               name: item.routeName,
               meta: { isAuth: true, title: item.name },
               meta: { isAuth: true, title: item.name },
             });
             });
-          }else if (
+          } else if (
             item.routeName == "trackSearch" ||
             item.routeName == "trackSearch" ||
             item.routeName == "trafficRecord" ||
             item.routeName == "trafficRecord" ||
             item.routeName == "attendanceRecord" ||
             item.routeName == "attendanceRecord" ||
@@ -357,8 +370,7 @@ const roleListChange = async () => {
               name: item.routeName,
               name: item.routeName,
               meta: { isAuth: true, title: item.name },
               meta: { isAuth: true, title: item.name },
             });
             });
-          }
-           else if (
+          } else if (
             item.routeName == "teacher" ||
             item.routeName == "teacher" ||
             item.routeName == "student" ||
             item.routeName == "student" ||
             item.routeName == "grade"
             item.routeName == "grade"
@@ -392,26 +404,31 @@ const roleListChange = async () => {
             });
             });
           }
           }
         });
         });
-        // console.log(classArr, "年级管理");
-        // console.log(evaluateArr, "综合素质评价");
-        // console.log(dataExchangeArr, "数据交换");
-        // console.log(systemArr, "系统设置");
 
 
         if (classArr.length != 0) {
         if (classArr.length != 0) {
-          arr.splice(3, 0, {
+          // arr.splice(3, 0, {
+          //   name: "classGrade",
+          //   meta: { isAuth: true, title: "年级管理" },
+          //   children: classArr,
+          // });
+          arr.push({
             name: "classGrade",
             name: "classGrade",
             meta: { isAuth: true, title: "年级管理" },
             meta: { isAuth: true, title: "年级管理" },
             children: classArr,
             children: classArr,
           });
           });
         }
         }
         if (trackArr.length != 0) {
         if (trackArr.length != 0) {
-          arr.splice(9, 0, {
+          // arr.splice(9, 0, {
+          //   name: "track",
+          //   meta: { isAuth: true, title: "轨迹管理" },
+          //   children: trackArr,
+          // });
+          arr.push({
             name: "track",
             name: "track",
             meta: { isAuth: true, title: "轨迹管理" },
             meta: { isAuth: true, title: "轨迹管理" },
             children: trackArr,
             children: trackArr,
           });
           });
         }
         }
-        
         if (evaluateArr.length != 0) {
         if (evaluateArr.length != 0) {
           arr.push({
           arr.push({
             name: "evaluate",
             name: "evaluate",
@@ -433,17 +450,97 @@ const roleListChange = async () => {
             children: systemArr,
             children: systemArr,
           });
           });
         }
         }
-        roles.value = arr;
-        // roles.value = store.state.user.roles;
-        // console.log(roles.value, "1111111111111111111111111111111");
+        let roleArr = [];
+        for (let i = 0; i <= 13; i++) {
+          let obj = {
+            name: "",
+            mate: {},
+          };
+          roleArr.push(obj);
+        }
+        arr.forEach((i, index) => {
+          // console.log(i);
+          // 首页
+          if (i.name == "home") {
+            // roleArr.push(i);
+            roleArr[0] = i;
+          }
+          // 用户管理
+          if (i.name == "user") {
+            // roleArr.push(i);
+            roleArr[1] = i;
+          }
+          // 身份管理
+          if (i.name == "identity") {
+            // roleArr.push(i);
+            roleArr[2] = i;
+          }
+          // 年级管理
+          if (i.name == "classGrade") {
+            // roleArr.push(i);
+            roleArr[3] = i;
+          }
+          // 应用管理
+          if (i.name == "apply") {
+            // roleArr.push(i);
+            roleArr[4] = i;
+          }
+          // 能耗管理
+          if (i.name == "energy") {
+            // roleArr.push(i);
+            roleArr[5] = i;
+          }
+          // 请假管理
+          if (i.name == "leave") {
+            // roleArr.push(i);
+            roleArr[6] = i;
+          }
+          // 在校统计
+          if (i.name == "statistic") {
+            // roleArr.push(i);
+            roleArr[7] = i;
+          }
+          // 访客预约
+          if (i.name == "caller") {
+            // roleArr.push(i);
+            roleArr[8] = i;
+          }
+          // 校园安全
+          if (i.name == "safety") {
+            // roleArr.push(i);
+            roleArr[9] = i;
+          }
+          // 轨迹管理
+          if (i.name == "track") {
+            // roleArr.push(i);
+            roleArr[10] = i;
+          }
+          // 综合素质评价
+          if (i.name == "evaluate") {
+            // roleArr.push(i);
+            roleArr[11] = i;
+          }
+          // 数据交换
+          if (i.name == "dataExchange") {
+            // roleArr.push(i);
+            roleArr[12] = i;
+          }
+          // 系统设置
+          if (i.name == "system") {
+            // roleArr.push(i);
+            roleArr[13] = i;
+          }
+        });
+        console.log(roleArr, "排序后的菜单栏");
+        roles.value = roleArr;
       }
       }
     } else {
     } else {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: resData.data.message,
-        center: true,
-      });
+      // ElMessage({
+      //   type: "error",
+      //   showClose: true,
+      //   message: resData.data.message,
+      //   center: true,
+      // });
     }
     }
   });
   });
 };
 };

+ 6 - 6
src/router/index.js

@@ -107,12 +107,12 @@ const routes = [
       //   meta: { isAuth: true, title: "成绩管理" },
       //   meta: { isAuth: true, title: "成绩管理" },
       //   component: () => import("@/views/grade/grade.vue"),
       //   component: () => import("@/views/grade/grade.vue"),
       // },
       // },
-      {
-        path: "leave",
-        name: "leave",
-        meta: { isAuth: true, title: "请假管理" },
-        component: () => import("@/views/leave/leave.vue"),
-      },
+      // {
+      //   path: "leave",
+      //   name: "leave",
+      //   meta: { isAuth: true, title: "请假管理" },
+      //   component: () => import("@/views/leave/leave.vue"),
+      // },
       // {
       // {
       //   path: "teacher",
       //   path: "teacher",
       //   name: "teacher",
       //   name: "teacher",

+ 9 - 2
src/views/attendanceRecord/attendanceRecord.vue

@@ -671,12 +671,19 @@ const getAdminId=async ()=>{
       userHead:sessionStorage.getItem("userhead")
       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
     let classIds=JSON.parse(eds.decryptDes(res.data.data)).schoolClass
     classId.value = classIds
     classId.value = classIds
      adminClassDataList()
      adminClassDataList()
-  } 
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 }
 }
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {

+ 259 - 98
src/views/caller/caller.vue

@@ -156,10 +156,10 @@
               >
               >
                 <div v-viewer>
                 <div v-viewer>
                   <img
                   <img
-                  v-for="i in row.image"
-                  :src="i"
-                  style="width: 60px; height: 60px; margin: 0 4px"
-                 />
+                    v-for="i in row.image"
+                    :src="i"
+                    style="width: 60px; height: 60px; margin: 0 4px"
+                  />
                 </div>
                 </div>
               </div>
               </div>
             </template>
             </template>
@@ -210,7 +210,8 @@
             label="来访时间"
             label="来访时间"
           >
           >
             <template #default="{ row }">
             <template #default="{ row }">
-              {{ dayjs(row.visitorTime).format("YYYY-MM-DD HH:mm:ss") }} - {{ dayjs(row.visitorDeadline).format("YYYY-MM-DD HH:mm:ss") }}
+              {{ dayjs(row.visitorTime).format("YYYY-MM-DD HH:mm:ss") }} -
+              {{ dayjs(row.visitorDeadline).format("YYYY-MM-DD HH:mm:ss") }}
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column
           <el-table-column
@@ -460,13 +461,10 @@
               {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
               {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column
-            align="center"
-            width="350"
-            label="来访时间"
-          >
+          <el-table-column align="center" width="350" label="来访时间">
             <template #default="{ row }">
             <template #default="{ row }">
-              {{ dayjs(row.visitorTime).format("YYYY-MM-DD HH:mm:ss") }} - {{ dayjs(row.visitorDeadline).format("YYYY-MM-DD HH:mm:ss") }}
+              {{ dayjs(row.visitorTime).format("YYYY-MM-DD HH:mm:ss") }} -
+              {{ dayjs(row.visitorDeadline).format("YYYY-MM-DD HH:mm:ss") }}
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column
           <el-table-column
@@ -541,20 +539,7 @@
         />
         />
       </div>
       </div>
     </div>
     </div>
-    <div class="bgImg" v-if="bgImg">
-      <el-carousel
-        @click="bgImg = false"
-        ref="bgImgs"
-        indicator-position
-        arrow="always"
-        :autoplay="false"
-        trigger
-      >
-        <el-carousel-item>
-          <img :src="showImg" alt="" />
-        </el-carousel-item>
-      </el-carousel>
-    </div>
+
     <!-- 其他访客配置 -->
     <!-- 其他访客配置 -->
     <el-dialog
     <el-dialog
       class="restsDialog"
       class="restsDialog"
@@ -583,13 +568,20 @@
             <el-radio :value="9">不需要审核</el-radio>
             <el-radio :value="9">不需要审核</el-radio>
           </el-radio-group>
           </el-radio-group>
         </el-form-item>
         </el-form-item>
-        <p class="title">是否和门禁车闸联动</p>
+        <p class="title">是否和门禁联动</p>
         <el-form-item label="" prop="accessConfig">
         <el-form-item label="" prop="accessConfig">
           <el-radio-group v-model="restsRuleForm.accessConfig">
           <el-radio-group v-model="restsRuleForm.accessConfig">
             <el-radio :value="0">是</el-radio>
             <el-radio :value="0">是</el-radio>
             <el-radio :value="1">否</el-radio>
             <el-radio :value="1">否</el-radio>
           </el-radio-group>
           </el-radio-group>
         </el-form-item>
         </el-form-item>
+        <p class="title">是否和车闸联动</p>
+        <el-form-item label="" prop="accessConfig">
+          <el-radio-group v-model="restsRuleForm.carConfig">
+            <el-radio :value="0">是</el-radio>
+            <el-radio :value="1">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
       </el-form>
       </el-form>
       <div class="options">
       <div class="options">
         <el-button
         <el-button
@@ -615,6 +607,73 @@
       width="1100"
       width="1100"
       :before-close="cancelSubsection"
       :before-close="cancelSubsection"
     >
     >
+      <div class="middle">
+        <div class="filter">
+          <!-- 年级 -->
+          <div class="condition" v-if="classId == 0">
+            <span class="title">年级 : </span>
+            <el-select
+              v-model="patriarchInput.grade"
+              placeholder="请选择年级"
+              style="width: 160px"
+              @change="gradeChange"
+              :clearable="false"
+            >
+              <el-option v-for="i in gradeData" :label="i.name" :value="i.id">
+              </el-option>
+            </el-select>
+          </div>
+          <!-- 班级 -->
+          <div class="condition" v-if="classId == 0">
+            <span class="title">班级 : </span>
+            <el-tooltip
+              class="box-item"
+              effect="dark"
+              content="请先选择年级"
+              placement="top"
+            >
+              <el-select
+                v-model="patriarchInput.class"
+                placeholder="请选择班级"
+                style="width: 160px"
+                @change="searchBtn"
+                :clearable="false"
+              >
+                <el-option
+                  v-for="i in classData"
+                  :label="i.name"
+                  :value="i.id"
+                />
+              </el-select>
+            </el-tooltip>
+          </div>
+
+          <!-- 年级 -->
+          <div class="condition" v-if="classId != 0">
+            <span class="title">年级 : </span>
+            <el-select
+              v-model="patriarchInput.grade"
+              placeholder="请选择年级"
+              style="width: 160px"
+            >
+              <el-option v-for="i in gradeData" :label="i.name" :value="i.id">
+              </el-option>
+            </el-select>
+          </div>
+          <!-- 班级 -->
+          <div class="condition" v-if="classId != 0">
+            <span class="title">班级 : </span>
+            <el-select
+              v-model="patriarchInput.class"
+              placeholder="请选择班级"
+              style="width: 160px"
+              @change="searchBtn"
+            >
+              <el-option v-for="i in classData" :label="i.name" :value="i.id" />
+            </el-select>
+          </div>
+        </div>
+      </div>
       <div class="selObject">
       <div class="selObject">
         <!-- <el-button
         <!-- <el-button
           type="primary"
           type="primary"
@@ -650,7 +709,7 @@
           <template #default="{ index, row }">
           <template #default="{ index, row }">
             <div class="option">
             <div class="option">
               <div class="edit" @click="patriarchClick(row)">编辑</div>
               <div class="edit" @click="patriarchClick(row)">编辑</div>
-              <div class="edit" @click="subsectionDel(row)">删除</div>
+              <!-- <div class="edit" @click="subsectionDel(row)">删除</div> -->
             </div>
             </div>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
@@ -715,7 +774,7 @@
             patriarchRuleForm.className
             patriarchRuleForm.className
           }}</span>
           }}</span>
         </el-form-item>
         </el-form-item>
-        <p class="title">小程序设置</p>
+        <p class="title">访客预约小程序审批流程设置</p>
         <el-form-item label="" prop="appAuditConfig">
         <el-form-item label="" prop="appAuditConfig">
           <el-radio-group v-model="patriarchRuleForm.appAuditConfig">
           <el-radio-group v-model="patriarchRuleForm.appAuditConfig">
             <el-radio :value="1">需要审核</el-radio>
             <el-radio :value="1">需要审核</el-radio>
@@ -734,7 +793,7 @@
             <el-radio :value="9">不需要核销</el-radio>
             <el-radio :value="9">不需要核销</el-radio>
           </el-radio-group>
           </el-radio-group>
         </el-form-item>
         </el-form-item>
-        <p class="title">大屏审批设置</p>
+        <p class="title">访客预约终端审批流程设置</p>
         <el-form-item label="" prop="screenAuditConfig">
         <el-form-item label="" prop="screenAuditConfig">
           <el-radio-group v-model="patriarchRuleForm.screenAuditConfig">
           <el-radio-group v-model="patriarchRuleForm.screenAuditConfig">
             <el-radio :value="1">需要审核</el-radio>
             <el-radio :value="1">需要审核</el-radio>
@@ -753,13 +812,20 @@
             <el-radio :value="9">不需要核销</el-radio>
             <el-radio :value="9">不需要核销</el-radio>
           </el-radio-group>
           </el-radio-group>
         </el-form-item>
         </el-form-item>
-        <p class="title">是否和门禁车闸联动</p>
+        <p class="title">是否和门禁联动</p>
         <el-form-item label="" prop="accessConfig">
         <el-form-item label="" prop="accessConfig">
           <el-radio-group v-model="patriarchRuleForm.accessConfig">
           <el-radio-group v-model="patriarchRuleForm.accessConfig">
             <el-radio :value="0">是</el-radio>
             <el-radio :value="0">是</el-radio>
             <el-radio :value="1">否</el-radio>
             <el-radio :value="1">否</el-radio>
           </el-radio-group>
           </el-radio-group>
         </el-form-item>
         </el-form-item>
+        <p class="title">是否和车闸联动</p>
+        <el-form-item label="" prop="accessConfig">
+          <el-radio-group v-model="patriarchRuleForm.carConfig">
+            <el-radio :value="0">是</el-radio>
+            <el-radio :value="1">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
       </el-form>
       </el-form>
       <div class="options">
       <div class="options">
         <el-button
         <el-button
@@ -906,8 +972,6 @@ const searchInput2 = reactive({
 const currentPage1 = ref(1); // 当前页
 const currentPage1 = ref(1); // 当前页
 const pageCount1 = ref(10);
 const pageCount1 = ref(10);
 const total1 = ref(4); // 当前总数
 const total1 = ref(4); // 当前总数
-const bgImg = ref(false);
-const showImg = ref("");
 const tableData1 = reactive({
 const tableData1 = reactive({
   list: [],
   list: [],
 });
 });
@@ -920,6 +984,7 @@ const tableData2 = reactive({
 });
 });
 
 
 const classId = ref(); // 判断访客家长是超级管理员(0)还是班主任
 const classId = ref(); // 判断访客家长是超级管理员(0)还是班主任
+const gradeId = ref(); // 判断访客家长是超级管理员(0)还是班主任
 // 访客配置(家长)///////////////////////////////////
 // 访客配置(家长)///////////////////////////////////
 const subsectionVisible = ref(false);
 const subsectionVisible = ref(false);
 const subsectionData = reactive({ list: [] });
 const subsectionData = reactive({ list: [] });
@@ -929,9 +994,14 @@ const subsectionTotal = ref(10);
 
 
 // 增加家长访客配置////////////////////////////////////
 // 增加家长访客配置////////////////////////////////////
 const patriarchVisible = ref(false);
 const patriarchVisible = ref(false);
+const patriarchInput = reactive({
+  class: "",
+  grade: "",
+});
 const patriarchRef = ref();
 const patriarchRef = ref();
 const patriarchRuleForm = reactive({
 const patriarchRuleForm = reactive({
   accessConfig: "", // 门禁配置 0:推送到门禁,1:不推送到门禁
   accessConfig: "", // 门禁配置 0:推送到门禁,1:不推送到门禁
+  carConfig: "", // 车闸配置
   appAuditConfig: "", // 小程序审核配置 1:需要审核,4:不需要审核
   appAuditConfig: "", // 小程序审核配置 1:需要审核,4:不需要审核
   appPushConfig: "", // 小程序推送配置 5:需要推送,3:不需要推送
   appPushConfig: "", // 小程序推送配置 5:需要推送,3:不需要推送
   appCancelConfig: "", // 小程序核销配置 6:需要核销,,9:不需要核销
   appCancelConfig: "", // 小程序核销配置 6:需要核销,,9:不需要核销
@@ -967,6 +1037,9 @@ const patriarchRules = reactive({
   accessConfig: [
   accessConfig: [
     { required: true, message: "当前选择项不能为空", trigger: "blur" },
     { required: true, message: "当前选择项不能为空", trigger: "blur" },
   ],
   ],
+  carConfig: [
+    { required: true, message: "当前选择项不能为空", trigger: "blur" },
+  ],
 });
 });
 const gradeData = ref(); // 年级数据
 const gradeData = ref(); // 年级数据
 const classData = ref(); // 班级数据
 const classData = ref(); // 班级数据
@@ -977,6 +1050,7 @@ const restsRef = ref();
 const restsRuleForm = reactive({
 const restsRuleForm = reactive({
   appAuditConfig: "", // 小程序审核配置 1:需要审核,4:不需要审核
   appAuditConfig: "", // 小程序审核配置 1:需要审核,4:不需要审核
   accessConfig: "", // 门禁配置 0:推送到门禁,1:不推送到门禁
   accessConfig: "", // 门禁配置 0:推送到门禁,1:不推送到门禁
+  carConfig: "",
   id: "",
   id: "",
 });
 });
 const restsRules = reactive({
 const restsRules = reactive({
@@ -986,6 +1060,9 @@ const restsRules = reactive({
   accessConfig: [
   accessConfig: [
     { required: true, message: "当前选择项不能为空", trigger: "blur" },
     { required: true, message: "当前选择项不能为空", trigger: "blur" },
   ],
   ],
+  carConfig: [
+    { required: true, message: "当前选择项不能为空", trigger: "blur" },
+  ],
 });
 });
 
 
 // 审核功能
 // 审核功能
@@ -1038,7 +1115,7 @@ const getList = async () => {
       },
       },
       params: data,
       params: data,
     });
     });
-    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) {
       loading.value = false;
       loading.value = false;
       tableData1.list = JSON.parse(eds.decryptDes(res.data.data)).list;
       tableData1.list = JSON.parse(eds.decryptDes(res.data.data)).list;
@@ -1117,9 +1194,9 @@ const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
 }, 300);
 }, 300);
 
 
-// 访客配置(家长)
-const subsectionClick = async () => {
-  subsectionVisible.value = true;
+// 判断为班主任 还是 超级管理员
+const getAdminId = async () => {
+  // 获取所管理的班级的id(0是所有班级)
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/wanzai/api/smartAuthorGroup/getClassById",
     url: api.value + "/wanzai/api/smartAuthorGroup/getClassById",
@@ -1131,51 +1208,165 @@ const subsectionClick = async () => {
       userHead: sessionStorage.getItem("userhead"),
       userHead: sessionStorage.getItem("userhead"),
     },
     },
   });
   });
-  console.log(
-    res,
-    JSON.parse(eds.decryptDes(res.data.data)),
-    "判断访客家长是 超级管理员(0) 班主任"
-  );
+  // console.log(
+  //   res,
+  //   JSON.parse(eds.decryptDes(res.data.data)),
+  //   "获取所管理的班级的id(0是所有班级)"
+  // );
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    let data = JSON.parse(eds.decryptDes(res.data.data));
-    classId.value = data.schoolClass;
-    let ress = await axios({
+    let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
+    classId.value = classIds;
+    adminClassDataList();
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+// 年级数据下拉
+const adminClassDataList = async () => {
+  console.log(classId.value == 1);
+  if (classId.value == 0) {
+    let grade = await axios({
       method: "get",
       method: "get",
-      url: api.value + "/wanzai/api/smartVisitorParentsConfig/getClassId",
+      url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      // params: data,
+    });
+    console.log(
+      grade,
+      JSON.parse(eds.decryptDes(grade.data.data)),
+      "年级下拉数据"
+    );
+    let resData = JSON.parse(eds.decryptDes(grade.data.data));
+    gradeData.value = resData;
+    patriarchInput.grade = resData[0].id;
+    adminClassInfoList(patriarchInput.grade).then(() => {
+      patriarchInput.class = classData.value[0].id;
+      getList();
+    });
+  } else {
+    let grade = await axios({
+      method: "get",
+      url: api.value + "/wanzai/api/smartClass/getClassId",
       headers: {
       headers: {
         token: sessionStorage.getItem("token"),
         token: sessionStorage.getItem("token"),
         user_head: sessionStorage.getItem("userhead"),
         user_head: sessionStorage.getItem("userhead"),
       },
       },
       params: {
       params: {
-        page: subsectionPage.value,
-        size: subsectionSize.value,
-        classId: classId.value,
+        schoolClass: classId.value,
       },
       },
     });
     });
     console.log(
     console.log(
-      ress,
-      JSON.parse(eds.decryptDes(ress.data.data)),
-      "家长访客配置展示"
+      grade,
+      JSON.parse(eds.decryptDes(grade.data.data)),
+      "年级下拉数据"
     );
     );
-    if (ress.data.code == 200) {
-      let data = JSON.parse(eds.decryptDes(ress.data.data));
-      data.list.forEach((item) => {
-        let time = dayjs(item.createTime).format("YYYY-MM-DD HH:mm:ss");
-        item.time = time;
-      });
-      subsectionTotal.value=data.totalCount
-      subsectionData.list = data.list;
-    }
+    let data = JSON.parse(eds.decryptDes(grade.data.data));
+    gradeData.value = [
+      {
+        name: data.gradeName,
+        id: data.gradeId,
+      },
+    ];
+    classData.value = [
+      {
+        name: data.className,
+        id: data.classId,
+      },
+    ];
+    patriarchInput.grade = data.gradeId;
+    patriarchInput.class = data.classId;
+    getList();
+  }
+};
+// 管理员 改变年级选择
+const gradeChange = (value) => {
+  console.log(value);
+  if (value) {
+    adminClassInfoList(value).then(() => {
+      patriarchInput.class = classData.value[0].id;
+      getList();
+    });
+  } else {
+    classData.value = [];
+    patriarchInput.class = "";
+  }
+};
+// 管理员 班级数据下拉
+const adminClassInfoList = async (value) => {
+  let data = {
+    gradeId: value,
+  };
+  let classs = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartClass/querySmartClasss",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
+  });
+
+  if (classs.data.code == 200) {
+    console.log(
+      classs,
+      JSON.parse(eds.decryptDes(classs.data.data)),
+      "班级下拉数据"
+    );
+    classData.value = JSON.parse(eds.decryptDes(classs.data.data));
+  } else {
+    classData.value = [];
+  }
+};
+
+// 访客配置(家长)
+const subsectionClick = async () => {
+  subsectionVisible.value = true;
+  let ress = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartVisitorParentsConfig/getClassId",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: {
+      page: subsectionPage.value,
+      size: subsectionSize.value,
+      classId: patriarchInput.class,
+      gradeId: patriarchInput.grade,
+    },
+  });
+  // console.log(
+  //   ress,
+  //   JSON.parse(eds.decryptDes(ress.data.data)),
+  //   "家长访客配置展示"
+  // );
+  // console.log(ress, "家长访客配置展示");
+  if (ress.data.code == 200) {
+    let data = JSON.parse(eds.decryptDes(ress.data.data));
+    data.list.forEach((item) => {
+      let time = dayjs(item.createTime).format("YYYY-MM-DD HH:mm:ss");
+      item.time = time;
+    });
+    subsectionTotal.value = data.totalCount;
+    subsectionData.list = data.list;
   }
   }
 };
 };
 const cancelSubsection = () => {
 const cancelSubsection = () => {
   subsectionVisible.value = false;
   subsectionVisible.value = false;
-  subsectionPage.value=1;
+  subsectionPage.value = 1;
+};
+const subsectionCurrentChange = (value) => {
+  subsectionPage.value = value;
+  subsectionClick();
 };
 };
-const subsectionCurrentChange=(value)=>{
-  subsectionPage.value=value
-  subsectionClick()
-}
 
 
 // 增加家长访客配置 (-------------------------------------------)
 // 增加家长访客配置 (-------------------------------------------)
 const patriarchClick = (row) => {
 const patriarchClick = (row) => {
@@ -1596,15 +1787,10 @@ const handleCurrentChange2 = (value) => {
   currentPage2.value = value;
   currentPage2.value = value;
   getList();
   getList();
 };
 };
-// 查看图片
-const imgClick = (row) => {
-  bgImg.value = true;
-  showImg.value = row;
-};
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  getList();
+  getAdminId();
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);
@@ -1646,7 +1832,7 @@ onUnmounted(() => {
         &::after {
         &::after {
           display: none;
           display: none;
         }
         }
-        .el-tabs__item{
+        .el-tabs__item {
           box-shadow: none;
           box-shadow: none;
         }
         }
       }
       }
@@ -1870,32 +2056,7 @@ onUnmounted(() => {
       }
       }
     }
     }
   }
   }
-  .bgImg {
-    position: absolute;
-    left: 0;
-    top: 0;
-    z-index: 99999999;
-    width: 100%;
-    height: 100%;
-    background-color: rgba(255, 255, 255, 0.8);
-    :deep(.el-carousel__arrow) {
-      display: none;
-    }
-    // border-radius: 50px;
-    :deep(.el-carousel__container) {
-      width: 100%;
-      height: calc(100vh);
-
-      .el-carousel__item {
-        display: flex;
-        justify-content: center;
 
 
-        img {
-          height: 100%;
-        }
-      }
-    }
-  }
   // 访客配置(家长)
   // 访客配置(家长)
   :deep(.subsectionDialog) {
   :deep(.subsectionDialog) {
     border-radius: 11px;
     border-radius: 11px;
@@ -1937,7 +2098,7 @@ onUnmounted(() => {
             .edit {
             .edit {
               color: rgba(0, 97, 255, 1);
               color: rgba(0, 97, 255, 1);
               cursor: pointer;
               cursor: pointer;
-              padding-right: 10px;
+              // padding-right: 10px;
             }
             }
           }
           }
         }
         }

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

@@ -325,7 +325,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

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

@@ -145,7 +145,7 @@
             >
             >
               <el-table-column
               <el-table-column
                 align="center "
                 align="center "
-                width="80"
+                width="60"
                 type="index"
                 type="index"
                 label="序号"
                 label="序号"
               />
               />
@@ -153,7 +153,7 @@
               <el-table-column align="center" prop="address" label="位置" />
               <el-table-column align="center" prop="address" label="位置" />
               <el-table-column align="center" prop="meterPower" :label="table2Type==0?'水(吨)':'电(度)'" />
               <el-table-column align="center" prop="meterPower" :label="table2Type==0?'水(吨)':'电(度)'" />
               <el-table-column align="center" prop="meterNo" label="表号" />
               <el-table-column align="center" prop="meterNo" label="表号" />
-              <el-table-column align="center" prop="createTime" label="通讯时间" />
+              <el-table-column align="center" prop="createTime" width="190" label="通讯时间" />
             </el-table>
             </el-table>
             <!-- 分页组件 -->
             <!-- 分页组件 -->
             <div class="pageSize">
             <div class="pageSize">

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

@@ -342,7 +342,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

+ 12 - 5
src/views/faceRecord/faceRecord.vue

@@ -573,15 +573,22 @@ const getAdminId = async () => {
       userHead: sessionStorage.getItem("userhead"),
       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;
     let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     classId.value = classIds;
     classId.value = classIds;
     adminClassDataList();
     adminClassDataList();
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
 };
 };
 
 

+ 37 - 25
src/views/grade/grade.vue

@@ -516,8 +516,8 @@
             >
             >
               <el-option
               <el-option
                 v-for="item in studentData"
                 v-for="item in studentData"
-                :label="`${item.name}·${item.id}`"
-                :value="`${item.name}·${item.id}`"
+                :label="`${item.name}`"
+                :value="`${item.id}`"
                 :key="item.id"
                 :key="item.id"
               >
               >
                 <span style="float: left">{{ item.name }}</span>
                 <span style="float: left">{{ item.name }}</span>
@@ -527,7 +527,7 @@
                     color: var(--el-text-color-secondary);
                     color: var(--el-text-color-secondary);
                     font-size: 13px;
                     font-size: 13px;
                   "
                   "
-                  >{{ item.id }}</span
+                  >{{ item.cardNo }}</span
                 >
                 >
               </el-option>
               </el-option>
               <template #footer>
               <template #footer>
@@ -1123,7 +1123,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
@@ -1494,23 +1494,6 @@ const cancelAddSubsection = () => {
 };
 };
 
 
 // 添加按钮 (-------------------------------------------)
 // 添加按钮 (-------------------------------------------)
-const addClick = async () => {
-  titleDialog.value = "新增成绩";
-  editVisible.value = true;
-  studentCurrentPage.value = 1;
-  studentList();
-  // studentListScroll();
-  editRuleForm.semester = "";
-  editRuleForm.yearClass = "";
-  editRuleForm.class = "";
-  editRuleForm.name = "";
-  editRuleForm.schoolNum = "";
-  editRuleForm.subject = "";
-  editRuleForm.examType = "";
-  editRuleForm.grade = "";
-  editRuleForm.id = "";
-  classsData.value = []; // 新增时将班级下拉数据置为空
-};
 // 获取学生分页列表
 // 获取学生分页列表
 const studentList = async () => {
 const studentList = async () => {
   let data = {
   let data = {
@@ -1537,6 +1520,24 @@ const studentList = async () => {
     eds.decryptDes(student.data.data)
     eds.decryptDes(student.data.data)
   ).totalPage;
   ).totalPage;
 };
 };
+const addClick = async () => {
+  titleDialog.value = "新增成绩";
+  editVisible.value = true;
+  studentCurrentPage.value = 1;
+  studentList();
+  // studentListScroll();
+  editRuleForm.semester = "";
+  editRuleForm.yearClass = "";
+  editRuleForm.class = "";
+  editRuleForm.name = "";
+  editRuleForm.schoolNum = "";
+  editRuleForm.subject = "";
+  editRuleForm.examType = "";
+  editRuleForm.grade = "";
+  editRuleForm.id = "";
+  classsData.value = []; // 新增时将班级下拉数据置为空
+};
+
 // 联系人下拉框搜索时加载
 // 联系人下拉框搜索时加载
 const studentMethod = (query) => {
 const studentMethod = (query) => {
   console.log(query);
   console.log(query);
@@ -1624,7 +1625,7 @@ const editClick = async (row) => {
   console.log(row, "编辑信息");
   console.log(row, "编辑信息");
   titleDialog.value = "编辑成绩";
   titleDialog.value = "编辑成绩";
   studentCurrentPage.value = 1;
   studentCurrentPage.value = 1;
-  studentList(); // 学生分页
+  // studentList(); // 学生分页
   // studentListScroll(); // 学生分页触底加载更多
   // studentListScroll(); // 学生分页触底加载更多
   classInfoList(row.gradeId); // 班级下拉
   classInfoList(row.gradeId); // 班级下拉
   // 考试类型
   // 考试类型
@@ -1669,7 +1670,18 @@ const editClick = async (row) => {
   editRuleForm.semester = `${row.semester}-${row.semesterId}`;
   editRuleForm.semester = `${row.semester}-${row.semesterId}`;
   editRuleForm.yearClass = `${row.grade}-${row.gradeId}`;
   editRuleForm.yearClass = `${row.grade}-${row.gradeId}`;
   editRuleForm.class = `${row.schoolClass}-${row.schoolClassId}`;
   editRuleForm.class = `${row.schoolClass}-${row.schoolClassId}`;
-  editRuleForm.name = `${row.name}·${row.userId}`;
+  studentList().then(res=>{
+    studentData.value.unshift({
+      name:row.name,
+      id:row.userId,
+      cardNo:row.cardNo,
+      schoolClass:row.schoolClassId,
+      grade:row.gradeId
+    });
+    console.log(studentData.value);
+    editRuleForm.name = `${row.userId}`;
+  })
+  
   editRuleForm.schoolNum = row.cardNo;
   editRuleForm.schoolNum = row.cardNo;
   editRuleForm.subject = row.subject;
   editRuleForm.subject = row.subject;
   editRuleForm.examType = row.examType;
   editRuleForm.examType = row.examType;
@@ -1691,7 +1703,7 @@ const changeName = async (value) => {
   editRuleForm.class = "";
   editRuleForm.class = "";
   editRuleForm.schoolNum = "";
   editRuleForm.schoolNum = "";
   if (value) {
   if (value) {
-    let data = { id: value.split("·")[1] };
+    let data = { id: value };
     let res = await axios({
     let res = await axios({
       method: "get",
       method: "get",
       url: api.value + "/wanzai/api/smartUser/queryUserData",
       url: api.value + "/wanzai/api/smartUser/queryUserData",
@@ -1769,7 +1781,7 @@ const confirmEdit = (formEl) => {
           schoolClass: editRuleForm.class.split("-")[0], // 班级
           schoolClass: editRuleForm.class.split("-")[0], // 班级
           schoolClassId: editRuleForm.class.split("-")[1], // 班级
           schoolClassId: editRuleForm.class.split("-")[1], // 班级
           cardNo: editRuleForm.schoolNum, // 学号
           cardNo: editRuleForm.schoolNum, // 学号
-          userId: editRuleForm.name.split("·")[1], // 用户ID
+          userId: editRuleForm.name, // 用户ID
           subjectId: editRuleForm.subject, // 学科ID
           subjectId: editRuleForm.subject, // 学科ID
           examType: editRuleForm.examType, // 考试类型
           examType: editRuleForm.examType, // 考试类型
           score: editRuleForm.grade, // 成绩
           score: editRuleForm.grade, // 成绩

+ 13 - 3
src/views/grades/grades.vue

@@ -600,9 +600,19 @@ onBeforeMount(async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "学科分页数据");
-  useSubjectData.value = JSON.parse(eds.decryptDes(res.data.data)).list;
-  getList();
+  // console.log(res);
+  // console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "学科分页数据");
+  if(res.data.code==200){
+    useSubjectData.value = JSON.parse(eds.decryptDes(res.data.data)).list;
+    getList();
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);

+ 44 - 29
src/views/home/home.vue

@@ -121,7 +121,7 @@
             <el-select
             <el-select
               v-model="searchInput.class"
               v-model="searchInput.class"
               placeholder="请选择班级"
               placeholder="请选择班级"
-              style="width: 160px;margin-right: 10px;"
+              style="width: 160px; margin-right: 10px"
               filterable
               filterable
               remote
               remote
               remote-show-suffix
               remote-show-suffix
@@ -317,13 +317,13 @@ const userType = ref();
 const classData = ref(); // 班级数据
 const classData = ref(); // 班级数据
 
 
 const searchInput = reactive({
 const searchInput = reactive({
-  class: "",// 班级考勤  班级筛选
-  date:dayjs().format('YYYY-MM-DD'),
-  termId:''// 最受欢迎老师 班级筛选
+  class: "", // 班级考勤  班级筛选
+  date: dayjs().format("YYYY-MM-DD"),
+  termId: "", // 最受欢迎老师 班级筛选
 });
 });
 // 最受欢迎老师TOP6
 // 最受欢迎老师TOP6
 const greetTeaData = ref();
 const greetTeaData = ref();
-const semesterData=ref()
+const semesterData = ref();
 // 资源大数据
 // 资源大数据
 // const echarts6 = ref();
 // const echarts6 = ref();
 
 
@@ -994,10 +994,10 @@ const behaviorClick = async () => {
 const classClick = async () => {
 const classClick = async () => {
   // 基于准备好的dom,初始化echarts实例
   // 基于准备好的dom,初始化echarts实例
   // 圆环统计图
   // 圆环统计图
-  let resFlag={
-    date:searchInput.date,
-    classId:searchInput.class
-  }
+  let resFlag = {
+    date: searchInput.date,
+    classId: searchInput.class,
+  };
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/wanzai/api/smartAttendance/queryAttendanceList",
     url: api.value + "/wanzai/api/smartAttendance/queryAttendanceList",
@@ -1005,7 +1005,7 @@ const classClick = async () => {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
     },
     },
-    params:resFlag
+    params: resFlag,
   });
   });
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "圆环 班级考勤");
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "圆环 班级考勤");
   // console.log(res, "圆环 班级考勤");
   // console.log(res, "圆环 班级考勤");
@@ -1076,7 +1076,7 @@ const greetTeaClick = async () => {
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
     },
     },
     params: {
     params: {
-      termId:searchInput.termId
+      termId: searchInput.termId,
     },
     },
   });
   });
   console.log(
   console.log(
@@ -1195,7 +1195,11 @@ const userTypeChange = async (value) => {
       userHead: sessionStorage.getItem("userhead"),
       userHead: sessionStorage.getItem("userhead"),
     },
     },
   });
   });
-  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) {
     userType.value = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     userType.value = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     classList();
     classList();
@@ -1218,15 +1222,15 @@ const classList = async (val = "") => {
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "班级数据");
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "班级数据");
   // classData.value = JSON.parse(eds.decryptDes(res.data.data));
   // classData.value = JSON.parse(eds.decryptDes(res.data.data));
   // searchInput.class=classData.value[0].id
   // searchInput.class=classData.value[0].id
-  let classList=JSON.parse(eds.decryptDes(res.data.data))
-  if(userType.value==0){
+  let classList = JSON.parse(eds.decryptDes(res.data.data));
+  if (userType.value == 0) {
     classData.value = classList;
     classData.value = classList;
-    if(!searchInput.class){
-      searchInput.class=classData.value[0].id
+    if (!searchInput.class) {
+      searchInput.class = classData.value[0].id;
     }
     }
-  }else{
-    classData.value=[{className:classList.className,id:classList.id}]
-    searchInput.class=classList.id
+  } else {
+    classData.value = [{ className: classList.className, id: classList.id }];
+    searchInput.class = classList.id;
   }
   }
   classClick();
   classClick();
 };
 };
@@ -1305,17 +1309,28 @@ onMounted(async () => {
         });
         });
       }
       }
     } else {
     } else {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: resData.data.message,
-        center: true,
-      });
+      // ElMessage({
+      //   type: "error",
+      //   showClose: true,
+      //   message: resData.data.message,
+      //   center: true,
+      // });
     }
     }
   }
   }
-  getList();
-  userTypeChange();
-  semesterList();
+  if (sessionStorage.getItem("token") && sessionStorage.getItem("userhead")) {
+    getList();
+    userTypeChange();
+    semesterList();
+  } else {
+    router.push({ path: `/wanzai/login` });
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: "登录凭证已过期,请重新登录",
+      center: true,
+    });
+  }
+
   // let userhead = "1B0430E15102ADC65C43E475AC697D9A";
   // let userhead = "1B0430E15102ADC65C43E475AC697D9A";
   // let token =
   // let token =
   //   "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTMyMzQ2NDQsImNhcmRObyI6IjAwMDAwMSIsImlhdCI6MTcxMzE0ODI0NH0.jxuGCqDkqzRa3poVNQq5aoSrKGDCZauXFLVKrB4M87s";
   //   "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTMyMzQ2NDQsImNhcmRObyI6IjAwMDAwMSIsImlhdCI6MTcxMzE0ODI0NH0.jxuGCqDkqzRa3poVNQq5aoSrKGDCZauXFLVKrB4M87s";
@@ -1440,7 +1455,7 @@ onUnmounted(() => {
         background-color: #fff;
         background-color: #fff;
         box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
         box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
         position: relative;
         position: relative;
-        .bar{
+        .bar {
           display: flex;
           display: flex;
           // justify-content: center;
           // justify-content: center;
           align-items: center;
           align-items: center;

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

@@ -339,7 +339,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

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

@@ -204,7 +204,7 @@ const getList = async () => {
     },
     },
     // params: data,
     // params: data,
   });
   });
-  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) {
     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;

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

@@ -358,10 +358,17 @@ const userTypeChange = async (value) => {
       userHead: sessionStorage.getItem("userhead"),
       userHead: sessionStorage.getItem("userhead"),
     },
     },
   });
   });
-  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) {
     userType.value = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     userType.value = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     classList()
     classList()
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
 };
 };
 // 班级数据
 // 班级数据

+ 2 - 1
src/views/post/post.vue

@@ -102,6 +102,7 @@
                   title="是否删除此身份?"
                   title="是否删除此身份?"
                   @confirm="del(scope.row)"
                   @confirm="del(scope.row)"
                   @cancel="cancelEvent"
                   @cancel="cancelEvent"
+                  v-if="scope.row.id!=1"
                 >
                 >
                   <template #reference>
                   <template #reference>
                     <div class="del">删除</div>
                     <div class="del">删除</div>
@@ -318,7 +319,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

+ 14 - 11
src/views/roles/roles.vue

@@ -1168,7 +1168,7 @@ const editManagementList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     departmentTreeData.value = JSON.parse(eds.decryptDes(res.data.data));
     departmentTreeData.value = JSON.parse(eds.decryptDes(res.data.data));
     // ElMessage({
     // ElMessage({
@@ -1178,7 +1178,6 @@ const editManagementList = async () => {
     //   center: true,
     //   center: true,
     // });
     // });
   } else {
   } else {
-    loading.value = false;
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
       showClose: true,
       showClose: true,
@@ -1358,7 +1357,7 @@ const addManagerList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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 resData = JSON.parse(eds.decryptDes(res.data.data));
     let resData = JSON.parse(eds.decryptDes(res.data.data));
     addManagerData.value = resData;
     addManagerData.value = resData;
@@ -1723,17 +1722,21 @@ const treMemberClick = async (row) => {
     },
     },
     params: data,
     params: data,
   });
   });
-  console.log(
-    res,
-    JSON.parse(eds.decryptDes(res.data.data)).list,
-    "菜单管理分页数据"
-  );
+  // console.log(
+  //   res,
+  //   JSON.parse(eds.decryptDes(res.data.data)).list,
+  //   "菜单管理分页数据"
+  // );
   if (res.data.code == 200) {
   if (res.data.code == 200) {
+    // console.log(JSON.parse(eds.decryptDes(res.data.data)),"菜单管理分页数据");
     treListData.value = JSON.parse(eds.decryptDes(res.data.data)).list;
     treListData.value = JSON.parse(eds.decryptDes(res.data.data)).list;
     treListData.value.forEach((item) => {
     treListData.value.forEach((item) => {
-      // if (item.id == 1) {
-      //   item.disabled = true;
-      // }
+      if (item.route == "/wanzai/statistic") {
+        const lastItem = treListData.value.slice(-1)[0];
+        // 2. 删除最后一个元素
+        treListData.value.splice(-1);
+        treListData.value.splice(12, 0, lastItem);
+      }
     });
     });
     dataLength.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
     dataLength.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
     nextTick(() => {
     nextTick(() => {

+ 30 - 5
src/views/safety/safety.vue

@@ -41,6 +41,23 @@
               <el-option label="未处理" value="0" />
               <el-option label="未处理" value="0" />
             </el-select>
             </el-select>
           </div>
           </div>
+          <div class="condition">
+          <span>时间&nbsp;&nbsp;</span>
+          <el-date-picker
+            v-model="searchInput.createTime"
+            type="datetimerange"
+            range-separator="-"
+            start-placeholder="起始时间"
+            end-placeholder="结束时间"
+            format="YYYY-MM-DD HH:mm:ss"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            :prefix-icon="Calendar"
+            placeholder="请选择日期"
+            style="width: 350px"
+            @change="searchBtn"
+            :clearable="false"
+          />
+        </div>
         </div>
         </div>
         <!-- 按钮列表 -->
         <!-- 按钮列表 -->
         <div class="gongneng">
         <div class="gongneng">
@@ -356,6 +373,10 @@ const tableData = reactive({
 const searchInput = reactive({
 const searchInput = reactive({
   keyWord: "",
   keyWord: "",
   status: "",
   status: "",
+  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); // 当前页
@@ -411,6 +432,10 @@ const getList = async () => {
     state: searchInput.status, // 状态,0:未处理,1:已处理,不填是全部
     state: searchInput.status, // 状态,0:未处理,1:已处理,不填是全部
     // managerId: sessionStorage.getItem("token"),
     // managerId: sessionStorage.getItem("token"),
   };
   };
+  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/smartWarning/queryPageSmartWarning",
     url: api.value + "/wanzai/api/smartWarning/queryPageSmartWarning",
@@ -420,11 +445,11 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

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

@@ -281,7 +281,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

File diff suppressed because it is too large
+ 1223 - 0
src/views/statistic/statistic.vue


+ 168 - 91
src/views/student/student.vue

@@ -99,6 +99,13 @@
             @click="scoreItemClick"
             @click="scoreItemClick"
             >评分项管理</el-button
             >评分项管理</el-button
           >
           >
+          <el-button
+            type="primary"
+            color="rgba(0, 97, 255, 1)"
+            plain
+            @click="importExcel"
+            >导出</el-button
+          >
         </div>
         </div>
       </div>
       </div>
       <div class="scroll">
       <div class="scroll">
@@ -293,7 +300,7 @@
           <el-form-item label="考试类型 :" prop="type">
           <el-form-item label="考试类型 :" prop="type">
             <el-select
             <el-select
               v-model="assessRuleForm.type"
               v-model="assessRuleForm.type"
-              placeholder="请先选择考试类型"
+              placeholder="请先选择考核年级"
               multiple
               multiple
               style="width: 400px"
               style="width: 400px"
               @change="typeChange"
               @change="typeChange"
@@ -309,6 +316,14 @@
           <div class="selObject">
           <div class="selObject">
             <ul>
             <ul>
               <li class="sel">平均成绩</li>
               <li class="sel">平均成绩</li>
+              <el-button
+                color="rgba(0, 97, 255, 1)"
+                type="primary"
+                class="search"
+                @click="addScoreScope"
+              >
+                新增</el-button
+              >
             </ul>
             </ul>
           </div>
           </div>
           <el-table
           <el-table
@@ -375,7 +390,18 @@
             </el-table-column>
             </el-table-column>
             <el-table-column align="center" prop="status" label="操作">
             <el-table-column align="center" prop="status" label="操作">
               <template #default="{ index, row }">
               <template #default="{ index, row }">
-                <div class="edit" @click="editScoreScope(index, row)">编辑</div>
+                <div style="display: flex; justify-content: center">
+                  <div
+                    class="edit"
+                    style="margin-right: 5px"
+                    @click="editScoreScope(index, row)"
+                  >
+                    编辑
+                  </div>
+                  <div class="edit" @click="editDelScoreScope(index, row)">
+                    删除
+                  </div>
+                </div>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
           </el-table>
           </el-table>
@@ -400,7 +426,7 @@
       v-model="editCriterionVisible"
       v-model="editCriterionVisible"
       :close-on-click-modal="false"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
       :close-on-press-escape="false"
-      title="编辑评分等级"
+      :title="addCriterionTitle"
       align-center
       align-center
       width="550"
       width="550"
       :before-close="cancelEditCriterion"
       :before-close="cancelEditCriterion"
@@ -532,6 +558,7 @@ const scoreItemData = reactive({
 const assessRef = ref();
 const assessRef = ref();
 const criterionTitle = ref("新增评分项");
 const criterionTitle = ref("新增评分项");
 const criterionVisible = ref(false);
 const criterionVisible = ref(false);
+const isUse = ref(); // 判断评分等级能否删除
 const scoreScope = reactive({
 const scoreScope = reactive({
   list: [],
   list: [],
 }); // 评分等级数据
 }); // 评分等级数据
@@ -551,6 +578,7 @@ const assessRules = reactive({
 // 编辑评分等级(---------------------------)
 // 编辑评分等级(---------------------------)
 const editCriterionVisible = ref(false); // 编辑评分等级弹窗
 const editCriterionVisible = ref(false); // 编辑评分等级弹窗
 const editCriterionRef = ref();
 const editCriterionRef = ref();
+const addCriterionTitle = ref("编辑评分等级");
 const editCriterionRuleForm = reactive({
 const editCriterionRuleForm = reactive({
   level: "", // 等级
   level: "", // 等级
   scoreMax: "",
   scoreMax: "",
@@ -607,8 +635,8 @@ const getList = async () => {
     className: searchInput.class,
     className: searchInput.class,
     // scoreLevel: searchInput.appraisal,
     // scoreLevel: searchInput.appraisal,
   };
   };
-  if(searchInput.grade){
-    data.gradeName=searchInput.grade.split("-")[0] 
+  if (searchInput.grade) {
+    data.gradeName = searchInput.grade.split("-")[0];
   }
   }
   let res = await axios({
   let res = await axios({
     method: "post",
     method: "post",
@@ -652,12 +680,21 @@ const semesterList = async () => {
     },
     },
     // params: data,
     // params: data,
   });
   });
-  console.log(
-    semester,
-    JSON.parse(eds.decryptDes(semester.data.data)),
-    "学期下拉数据"
-  );
-  semesterData.value = JSON.parse(eds.decryptDes(semester.data.data));
+  // console.log(
+  //   semester,
+  //   JSON.parse(eds.decryptDes(semester.data.data)),
+  //   "学期下拉数据"
+  // );
+  if (semester.data.code == 200) {
+    semesterData.value = JSON.parse(eds.decryptDes(semester.data.data));
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: semester.data.message,
+      center: true,
+    });
+  }
 };
 };
 
 
 // 年级数据下拉
 // 年级数据下拉
@@ -750,7 +787,6 @@ const assessType = async (value) => {
       center: true,
       center: true,
     });
     });
   }
   }
- 
 };
 };
 
 
 // 搜索功能
 // 搜索功能
@@ -779,6 +815,7 @@ const configTeacher = async () => {
   });
   });
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     teacherVisible.value = false;
     teacherVisible.value = false;
+    getList();
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
@@ -866,61 +903,56 @@ const delScoreScope = async (row) => {
 
 
 //导出功能 (-------------------------------------------------)
 //导出功能 (-------------------------------------------------)
 const importExcel = async () => {
 const importExcel = async () => {
-  // if (searchInput.createTime == null) {
-  //   searchInput.createTime = "";
-  // }
-  // let data = new FormData();
-  // data.set("car_number", searchInput.carnumber);
-  // data.set("create_time", searchInput.createTime);
-  // let res = await axios({
-  //   method: "post",
-  //   url: api.value + "/carBook/cinfotoExcel.action",
-  //  headers: {
-  // token: sessionStorage.getItem("token"),
-  //   user_head: sessionStorage.getItem("userhead"),
-  // },
-  //   data: data,
-  // });
-  // // console.log(res, "导出账号");
-  // if (res.data.code == 200) {
-  //   // const elt = document.createElement("a");
-  //   // elt.setAttribute(
-  //   //   "href",
-  //   //   "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
-  //   // );
-  //   // elt.setAttribute("download", "file.png");
-  //   // elt.style.display = "none";
-  //   // document.body.appendChild(elt);
-  //   // elt.click();
-  //   var downloadPath = "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl;
-  //   console.log("获得地址数据:", downloadPath);
-  //   var downloadLink = document.createElement("a");
-  //   downloadLink.style.display = "none"; // 使其隐藏
-  //   downloadLink.href = downloadPath;
-  //   downloadLink.download = "";
-  //   downloadLink.click();
-  //   document.body.appendChild(downloadLink);
-  //   document.body.removeChild(downloadLink);
-  //   ElMessage({
-  //     type: "success",
-  //     showClose: true,
-  //     message: res.data.message,
-  //     center: true,
-  //   });
-  // } else {
-  //   ElMessage({
-  //     type: "error",
-  //     showClose: true,
-  //     message: res.data.message,
-  //     center: true,
-  //   });
-  // }
+  let data = {
+    name: searchInput.keyWord,
+    term: searchInput.semester,
+    className: searchInput.class,
+  };
+  if (searchInput.grade) {
+    data.gradeName = searchInput.grade.split("-")[0];
+  }
+  let res = await axios({
+    method: "post",
+    url: api.value + "/wanzai/api/smartEvaluateStudent/getSEvaluationExcel",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    data: data,
+    responseType: "blob",
+  });
+  console.log(res, "学生评价信息");
+  if (res.status == 200) {
+    let name = `学生评价信息`;
+    var content = res.data;
+    var datas = new Blob([content]);
+    var downloadUrl = window.URL.createObjectURL(datas);
+    var anchor = document.createElement("a");
+    anchor.href = downloadUrl;
+    anchor.download = name + ".xlsx";
+    anchor.click();
+    window.URL.revokeObjectURL(datas);
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: "导出成功",
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 
 
 //  增加评分项按钮(----------------------------------------------------------------)
 //  增加评分项按钮(----------------------------------------------------------------)
 const criterionClick = () => {
 const criterionClick = () => {
   criterionVisible.value = true;
   criterionVisible.value = true;
   criterionTitle.value = "新增评分项";
   criterionTitle.value = "新增评分项";
+  isUse.value=0;
   criterionDataList(); // 评分标准数据
   criterionDataList(); // 评分标准数据
   assessRuleForm.grade = "";
   assessRuleForm.grade = "";
   assessRuleForm.term = "";
   assessRuleForm.term = "";
@@ -931,7 +963,7 @@ const criterionClick = () => {
 const assessgradeChange = (value) => {
 const assessgradeChange = (value) => {
   let id = "";
   let id = "";
   gradeData.value.forEach((item) => {
   gradeData.value.forEach((item) => {
-    if (item.name == value.split('-')[0]) {
+    if (item.name == value.split("-")[0]) {
       id = item.id;
       id = item.id;
     }
     }
   });
   });
@@ -939,10 +971,9 @@ const assessgradeChange = (value) => {
   assessRuleForm.type = [];
   assessRuleForm.type = [];
 };
 };
 // 改变考试类型
 // 改变考试类型
-const typeChange=(value)=>{
+const typeChange = (value) => {
   console.log(value);
   console.log(value);
-  
-}
+};
 // 等级标准数据
 // 等级标准数据
 const criterionDataList = async () => {
 const criterionDataList = async () => {
   let res = await axios({
   let res = await axios({
@@ -977,24 +1008,24 @@ const confirmAssess = (formEl) => {
       });
       });
       let data = {
       let data = {
         smartSubjectTemplate: {
         smartSubjectTemplate: {
-          grade: assessRuleForm.grade.split('-')[0],
-          gradeId: assessRuleForm.grade.split('-')[1],
-          term: assessRuleForm.term.split('-')[0],
-          termId: assessRuleForm.term.split('-')[1],
+          grade: assessRuleForm.grade.split("-")[0],
+          gradeId: assessRuleForm.grade.split("-")[1],
+          term: assessRuleForm.term.split("-")[0],
+          termId: assessRuleForm.term.split("-")[1],
         },
         },
         ruleList: arr,
         ruleList: arr,
       };
       };
-      let type=[]
-      let types=[];
-      assessRuleForm.type.forEach(item=>{
-        type.push(item.split("-")[1])
+      let type = [];
+      let types = [];
+      assessRuleForm.type.forEach((item) => {
+        type.push(item.split("-")[1]);
         types.push({
         types.push({
-          name:item.split("-")[0],
-          id:item.split("-")[1]
-        })
-      })
-      data.smartSubjectTemplate.examType=type.join(',')
-      data.smartSubjectTemplate.examTypes=types
+          name: item.split("-")[0],
+          id: item.split("-")[1],
+        });
+      });
+      data.smartSubjectTemplate.examType = type.join(",");
+      data.smartSubjectTemplate.examTypes = types;
 
 
       console.log(data);
       console.log(data);
       if (assessRuleForm.id) {
       if (assessRuleForm.id) {
@@ -1070,8 +1101,9 @@ const cancelAssess = () => {
 const criterionEditClick = async (row) => {
 const criterionEditClick = async (row) => {
   criterionVisible.value = true;
   criterionVisible.value = true;
   criterionTitle.value = "编辑评分项";
   criterionTitle.value = "编辑评分项";
+  isUse.value = row.isUse;
   console.log(row);
   console.log(row);
-  
+
   let id = "";
   let id = "";
   gradeData.value.forEach((item) => {
   gradeData.value.forEach((item) => {
     if (item.name == row.grade) {
     if (item.name == row.grade) {
@@ -1082,10 +1114,10 @@ const criterionEditClick = async (row) => {
   assessRuleForm.grade = `${row.grade}-${row.gradeId}`;
   assessRuleForm.grade = `${row.grade}-${row.gradeId}`;
   assessRuleForm.term = `${row.term}-${row.termId}`;
   assessRuleForm.term = `${row.term}-${row.termId}`;
   assessRuleForm.id = row.id;
   assessRuleForm.id = row.id;
-  let arr=[]
-  row.examTypes.forEach(i=>{
-    arr.push(`${i.name}-${i.id}`)
-  })
+  let arr = [];
+  row.examTypes.forEach((i) => {
+    arr.push(`${i.name}-${i.id}`);
+  });
   assessRuleForm.type = arr;
   assessRuleForm.type = arr;
   // 编辑时的等级表格数据
   // 编辑时的等级表格数据
   let formData = new FormData();
   let formData = new FormData();
@@ -1114,8 +1146,19 @@ const criterionEditClick = async (row) => {
 };
 };
 
 
 // 编辑评分等级(----------------------------------------)
 // 编辑评分等级(----------------------------------------)
+// 新增
+const addScoreScope = () => {
+  editCriterionVisible.value = true;
+  addCriterionTitle.value = "新增评分等级";
+  editCriterionRuleForm.level = "";
+  editCriterionRuleForm.id = "";
+  editCriterionRuleForm.scoreMin = "";
+  editCriterionRuleForm.scoreMax = "";
+};
+// 编辑
 const editScoreScope = (index, row) => {
 const editScoreScope = (index, row) => {
   console.log(row, "编辑等级");
   console.log(row, "编辑等级");
+  addCriterionTitle.value = "编辑评分等级";
   editCriterionVisible.value = true;
   editCriterionVisible.value = true;
   editCriterionRuleForm.level = row.level;
   editCriterionRuleForm.level = row.level;
   editCriterionRuleForm.id = row.id;
   editCriterionRuleForm.id = row.id;
@@ -1123,20 +1166,53 @@ const editScoreScope = (index, row) => {
   editCriterionRuleForm.scoreMin = arr[0];
   editCriterionRuleForm.scoreMin = arr[0];
   editCriterionRuleForm.scoreMax = arr[1];
   editCriterionRuleForm.scoreMax = arr[1];
 };
 };
+const editDelScoreScope = (index, row) => {
+  if (isUse.value != 1) {
+    scoreScope.list = scoreScope.list.filter((i) => {
+      return row.id != i.id;
+    });
+  }else{
+    ElMessage({
+            type: "warning",
+            showClose: true,
+            message: '该学期已评分,评分项不可删除',
+            center: true,
+          });
+  }
+};
 const confirmEditCriterion = (formEl) => {
 const confirmEditCriterion = (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   formEl.validate(async (valid, fields) => {
   formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
-      scoreScope.list.forEach((item, index) => {
-        if (item.id == editCriterionRuleForm.id) {
-          item.level = editCriterionRuleForm.level;
-          item.scoreRange =
+      if (editCriterionRuleForm.id) {
+        scoreScope.list.forEach((item, index) => {
+          if (item.id == editCriterionRuleForm.id) {
+            item.level = editCriterionRuleForm.level;
+            item.scoreRange =
+              editCriterionRuleForm.scoreMin +
+              "-" +
+              editCriterionRuleForm.scoreMax;
+          }
+          editCriterionVisible.value = false;
+        });
+      } else {
+        function generateRandomNumber() {
+          var randomNumber = Math.floor(Math.random() * 9 + 1);
+          for (var i = 0; i < 9; i++) {
+            randomNumber = randomNumber * 10 + Math.floor(Math.random() * 10);
+          }
+          return randomNumber;
+        }
+        scoreScope.list.push({
+          id: generateRandomNumber(),
+          level: editCriterionRuleForm.level,
+          scoreRange:
             editCriterionRuleForm.scoreMin +
             editCriterionRuleForm.scoreMin +
             "-" +
             "-" +
-            editCriterionRuleForm.scoreMax;
-        }
+            editCriterionRuleForm.scoreMax,
+        });
         editCriterionVisible.value = false;
         editCriterionVisible.value = false;
-      });
+      }
     }
     }
   });
   });
 };
 };
@@ -1424,6 +1500,7 @@ onUnmounted(() => {
         .selObject {
         .selObject {
           ul {
           ul {
             display: flex;
             display: flex;
+            justify-content: space-between;
             list-style: none;
             list-style: none;
             padding: 0;
             padding: 0;
             li {
             li {

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

@@ -312,7 +312,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  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) {
     loading.value = false;
     loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;

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

@@ -49,8 +49,11 @@
               @change="yearClassChange"
               @change="yearClassChange"
               :clearable="true"
               :clearable="true"
             >
             >
-              <el-option v-for="i in gradeData" 
-              :label="i.name" :value="`${i.name}-${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>
@@ -77,7 +80,7 @@
               </el-select>
               </el-select>
             </el-tooltip>
             </el-tooltip>
           </div>
           </div>
-          <div class="condition">
+          <!-- <div class="condition">
             <span class="title">教学学科 :</span>
             <span class="title">教学学科 :</span>
             <el-tooltip
             <el-tooltip
               class="box-item"
               class="box-item"
@@ -99,7 +102,7 @@
                   :value="i.name"
                   :value="i.name"
                 /> </el-select
                 /> </el-select
             ></el-tooltip>
             ></el-tooltip>
-          </div>
+          </div> -->
         </div>
         </div>
         <!-- 按钮列表 -->
         <!-- 按钮列表 -->
         <div class="gongneng">
         <div class="gongneng">
@@ -111,12 +114,19 @@
             >评分项管理</el-button
             >评分项管理</el-button
           >
           >
           <el-button
           <el-button
-              type="primary"
-              color="rgba(0, 97, 255, 1)"
-              @click="updateClick"
-              plain
-              >更新</el-button
-            >
+            type="primary"
+            color="rgba(0, 97, 255, 1)"
+            @click="updateClick"
+            plain
+            >更新</el-button
+          >
+          <el-button
+            type="primary"
+            color="rgba(0, 97, 255, 1)"
+            plain
+            @click="importExcel"
+            >导出</el-button
+          >
         </div>
         </div>
       </div>
       </div>
       <div class="scroll">
       <div class="scroll">
@@ -153,20 +163,9 @@
               </template>
               </template>
             </el-table-column>
             </el-table-column>
             <el-table-column align="center" prop="cardNo" label="职工号" />
             <el-table-column align="center" prop="cardNo" label="职工号" />
-            <el-table-column align="center" prop="subject" label="教学学科" />
             <el-table-column align="center" prop="className" label="带教班级" />
             <el-table-column align="center" prop="className" label="带教班级" />
             <el-table-column
             <el-table-column
               align="center"
               align="center"
-              prop="status"
-              :label="`“${i.label}”评分`"
-              v-for="i in evaluateDetail"
-            >
-              <template #default="scope">
-                <span>{{ i.value }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="center"
               prop="lowingScore"
               prop="lowingScore"
               label="“扣分”评分"
               label="“扣分”评分"
             />
             />
@@ -232,7 +231,9 @@
           <div class="title">{{ teacherRowInfo.term }}</div>
           <div class="title">{{ teacherRowInfo.term }}</div>
           <div class="score">
           <div class="score">
             <div class="score_left">
             <div class="score_left">
-              <img src="" alt="" />
+              <div v-viewer>
+                <img :src="teacherRowInfo.headImage" alt="" />
+              </div>
               <div class="info">
               <div class="info">
                 <div class="info_name">{{ teacherRowInfo.name }}</div>
                 <div class="info_name">{{ teacherRowInfo.name }}</div>
                 <div class="info_object">
                 <div class="info_object">
@@ -689,12 +690,17 @@ const semesterList = async () => {
     },
     },
     // params: data,
     // params: data,
   });
   });
-  console.log(
-    semester,
-    JSON.parse(eds.decryptDes(semester.data.data)),
-    "学期下拉数据"
-  );
-  semesterData.value = JSON.parse(eds.decryptDes(semester.data.data));
+  console.log(semester, "学期下拉数据");
+  if (semester.data.code == 200) {
+    semesterData.value = JSON.parse(eds.decryptDes(semester.data.data));
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: semester.data.message,
+      center: true,
+    });
+  }
 
 
   let grade = await axios({
   let grade = await axios({
     method: "get",
     method: "get",
@@ -715,32 +721,32 @@ const semesterList = async () => {
 
 
 // 学科下拉、班级下拉
 // 学科下拉、班级下拉
 const subjectDataList = async (value) => {
 const subjectDataList = async (value) => {
-  let subject = await axios({
-    method: "get",
-    url: api.value + "/wanzai/api/smartScore/querySubjects",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      user_head: sessionStorage.getItem("userhead"),
-    },
-    params: {
-      gradeId: value,
-    },
-  });
-  console.log(
-    subject,
-    JSON.parse(eds.decryptDes(subject.data.data)),
-    "学科下拉数据"
-  );
-  if (subject.data.code == 200) {
-    subjectData.value = JSON.parse(eds.decryptDes(subject.data.data));
-  } else {
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: subjectData.data.message,
-      center: true,
-    });
-  }
+  // let subject = await axios({
+  //   method: "get",
+  //   url: api.value + "/wanzai/api/smartScore/querySubjects",
+  //   headers: {
+  //     token: sessionStorage.getItem("token"),
+  //     user_head: sessionStorage.getItem("userhead"),
+  //   },
+  //   params: {
+  //     gradeId: value,
+  //   },
+  // });
+  // console.log(
+  //   subject,
+  //   JSON.parse(eds.decryptDes(subject.data.data)),
+  //   "学科下拉数据"
+  // );
+  // if (subject.data.code == 200) {
+  //   subjectData.value = JSON.parse(eds.decryptDes(subject.data.data));
+  // } else {
+  //   ElMessage({
+  //     type: "error",
+  //     showClose: true,
+  //     message: subjectData.data.message,
+  //     center: true,
+  //   });
+  // }
 
 
   let classs = await axios({
   let classs = await axios({
     method: "get",
     method: "get",
@@ -771,14 +777,14 @@ const subjectDataList = async (value) => {
 };
 };
 // 改变年级选择
 // 改变年级选择
 const yearClassChange = async (value) => {
 const yearClassChange = async (value) => {
-  console.log(value,111111111);
+  console.log(value, 111111111);
   if (value) {
   if (value) {
-    subjectDataList(value.split('-')[1]);
+    subjectDataList(value.split("-")[1]);
   } else {
   } else {
     subjectData.value = [];
     subjectData.value = [];
     classsData.value = [];
     classsData.value = [];
     searchInput.class = "";
     searchInput.class = "";
-    searchInput.subject=""
+    searchInput.subject = "";
   }
   }
   getList();
   getList();
 };
 };
@@ -800,6 +806,7 @@ const scoreEcharts = ref(); // 评分对比统计图
 
 
 // 查看教师
 // 查看教师
 const getList = async () => {
 const getList = async () => {
+  loading.value=true
   if (pageIndex.value == 1) {
   if (pageIndex.value == 1) {
     let params = {
     let params = {
       currentPage: currentPage.value,
       currentPage: currentPage.value,
@@ -810,10 +817,10 @@ const getList = async () => {
       name: searchInput.keyWord,
       name: searchInput.keyWord,
       term: searchInput.semester,
       term: searchInput.semester,
       className: searchInput.class,
       className: searchInput.class,
-      subject: searchInput.subject,
+      // subject: searchInput.subject,
     };
     };
-    if(searchInput.grade){
-      data.gradeName=searchInput.grade.split('-')[0]
+    if (searchInput.grade) {
+      data.gradeName = searchInput.grade.split("-")[0];
     }
     }
     let res = await axios({
     let res = await axios({
       method: "post",
       method: "post",
@@ -844,6 +851,7 @@ const getList = async () => {
       tableData.list = data.list;
       tableData.list = data.list;
       console.log(tableData.list);
       console.log(tableData.list);
       total.value = data.totalCount;
       total.value = data.totalCount;
+      loading.value=false
       // ElMessage({
       // ElMessage({
       //   type: "success",
       //   type: "success",
       //   showClose: true,
       //   showClose: true,
@@ -851,6 +859,7 @@ const getList = async () => {
       //   center: true,
       //   center: true,
       // });
       // });
     } else {
     } else {
+      loading.value=false
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -875,7 +884,7 @@ const getList = async () => {
       teacherList.value = JSON.parse(
       teacherList.value = JSON.parse(
         eds.decryptDes(res.data.data)
         eds.decryptDes(res.data.data)
       ).simpleScoreList.simpleScoreDetailList;
       ).simpleScoreList.simpleScoreDetailList;
-
+      loading.value=false
       // ElMessage({
       // ElMessage({
       //   type: "success",
       //   type: "success",
       //   showClose: true,
       //   showClose: true,
@@ -883,6 +892,7 @@ const getList = async () => {
       //   center: true,
       //   center: true,
       // });
       // });
     } else {
     } else {
+      loading.value=false
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -900,9 +910,9 @@ const getList = async () => {
       },
       },
       data: formData,
       data: formData,
     });
     });
-    console.log(ress,'评分对比');
-    // console.log(ress, JSON.parse(eds.decryptDes(ress.data.data)), "评分对比");
-    
+    console.log(ress, "评分对比");
+    console.log(ress, JSON.parse(eds.decryptDes(ress.data.data)), "评分对比");
+
     if (ress.data.code == 200) {
     if (ress.data.code == 200) {
       if (ress.data.data) {
       if (ress.data.data) {
         teacherComparison.name = [];
         teacherComparison.name = [];
@@ -930,32 +940,32 @@ const getList = async () => {
   }
   }
 };
 };
 // 更新按钮
 // 更新按钮
-const updateClick=async () => {
-    let res = await axios({
-      method: "get",
-      url: api.value + "/wanzai/api/smartSemester/pullSemesterTeacher",
-      headers: {
-        token: sessionStorage.getItem("token"),
-        user_head: sessionStorage.getItem("userhead"),
-      },
+const updateClick = async () => {
+  let res = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartSemester/pullSemesterTeacher",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+  });
+  console.log(res, "教师分页");
+  if (res.data.code == 200) {
+    getList();
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
     });
     });
-    console.log(res, "教师分页");
-    if (res.data.code == 200) {
-      getList()
-      ElMessage({
-        type: "success",
-        showClose: true,
-        message: res.data.message,
-        center: true,
-      });
-    } else {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: res.data.message,
-        center: true,
-      });
-    }
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 // 评分排行榜
 // 评分排行榜
 const rankSel = async () => {
 const rankSel = async () => {
@@ -996,55 +1006,49 @@ const handleSelectionChange = () => {};
 
 
 //导出功能 (-------------------------------------------------)
 //导出功能 (-------------------------------------------------)
 const importExcel = async () => {
 const importExcel = async () => {
-  // if (searchInput.createTime == null) {
-  //   searchInput.createTime = "";
-  // }
-  // let data = new FormData();
-  // data.set("car_number", searchInput.carnumber);
-  // data.set("create_time", searchInput.createTime);
-  // let res = await axios({
-  //   method: "post",
-  //   url: api.value + "/carBook/cinfotoExcel.action",
-  //  headers: {
-  // token: sessionStorage.getItem("token"),
-  //   user_head: sessionStorage.getItem("userhead"),
-  // },
-  //   data: data,
-  // });
-  // // console.log(res, "导出账号");
-  // if (res.data.code == 200) {
-  //   // const elt = document.createElement("a");
-  //   // elt.setAttribute(
-  //   //   "href",
-  //   //   "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
-  //   // );
-  //   // elt.setAttribute("download", "file.png");
-  //   // elt.style.display = "none";
-  //   // document.body.appendChild(elt);
-  //   // elt.click();
-  //   var downloadPath = "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl;
-  //   console.log("获得地址数据:", downloadPath);
-  //   var downloadLink = document.createElement("a");
-  //   downloadLink.style.display = "none"; // 使其隐藏
-  //   downloadLink.href = downloadPath;
-  //   downloadLink.download = "";
-  //   downloadLink.click();
-  //   document.body.appendChild(downloadLink);
-  //   document.body.removeChild(downloadLink);
-  //   ElMessage({
-  //     type: "success",
-  //     showClose: true,
-  //     message: res.data.message,
-  //     center: true,
-  //   });
-  // } else {
-  //   ElMessage({
-  //     type: "error",
-  //     showClose: true,
-  //     message: res.data.message,
-  //     center: true,
-  //   });
-  // }
+  let data = {
+    name: searchInput.keyWord,
+    term: searchInput.semester,
+    className: searchInput.class,
+  };
+  if (searchInput.grade) {
+    data.gradeName = searchInput.grade.split("-")[0];
+  }
+  let res = await axios({
+    method: "post",
+    url: api.value + "/wanzai/api/smartEvaluateTeacher/getTEvaluationExcel",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    data: data,
+    responseType: "blob",
+  });
+  console.log(res, "学生评价信息");
+  if (res.status == 200) {
+    let name = `教师评价信息`;
+    var content = res.data;
+    var datas = new Blob([content]);
+    var downloadUrl = window.URL.createObjectURL(datas);
+    var anchor = document.createElement("a");
+    anchor.href = downloadUrl;
+    anchor.download = name + ".xlsx";
+    anchor.click();
+    window.URL.revokeObjectURL(datas);
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: "导出成功",
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 
 
 // 点击老师查看老师详情 (---------------------------------------------)
 // 点击老师查看老师详情 (---------------------------------------------)
@@ -1373,13 +1377,13 @@ const scoringItemsClick = async () => {
   semesterName.value = semesterData.value[0].name;
   semesterName.value = semesterData.value[0].name;
   semestertermId.value = semesterData.value[0].id;
   semestertermId.value = semesterData.value[0].id;
   // console.log(semesterData.value,semesterName.value,semestertermId.value);
   // console.log(semesterData.value,semesterName.value,semestertermId.value);
-  getAllData({ name: semesterName.value, termId: semestertermId.value });
+  getAllData({ name: semesterName.value, id: semestertermId.value });
 };
 };
 // 获取评分项全部数据
 // 获取评分项全部数据
 const getAllData = async (termName) => {
 const getAllData = async (termName) => {
   console.log(termName);
   console.log(termName);
   semesterName.value = termName.name;
   semesterName.value = termName.name;
-  semestertermId.value = termName.termId;
+  semestertermId.value = termName.id;
   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({
@@ -1554,7 +1558,7 @@ const confirmAddItem = (formEl) => {
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getAllData({
           getAllData({
             name: semesterName.value,
             name: semesterName.value,
-            termId: semestertermId.value,
+            id: semestertermId.value,
           });
           });
           // addItemRef.value.resetFields();
           // addItemRef.value.resetFields();
           addItemVisible.value = false;
           addItemVisible.value = false;
@@ -1634,7 +1638,7 @@ const confirmAddItem = (formEl) => {
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getAllData({
           getAllData({
             name: semesterName.value,
             name: semesterName.value,
-            termId: semestertermId.value,
+            id: semestertermId.value,
           });
           });
           addItemVisible.value = false;
           addItemVisible.value = false;
           ElMessage({
           ElMessage({
@@ -1746,7 +1750,7 @@ const operateScore = async () => {
   });
   });
   console.log(res, "分管理操作-增加/删除/更新");
   console.log(res, "分管理操作-增加/删除/更新");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    getAllData({ name: semesterName.value, termId: semestertermId.value });
+    getAllData({ name: semesterName.value, id: semestertermId.value });
     // addItemRef.value.resetFields();
     // addItemRef.value.resetFields();
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
@@ -1771,6 +1775,8 @@ const secondaryItemClick = (row) => {
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.bigitem = row.scoreItem;
   addItemRuleForm.term = semesterName.value;
   addItemRuleForm.term = semesterName.value;
   addItemRuleForm.termId = semestertermId.value;
   addItemRuleForm.termId = semestertermId.value;
+  console.log(semestertermId.value);
+  
   addItemRuleForm.id = row.id;
   addItemRuleForm.id = row.id;
   addItemRuleForm.subitem = "";
   addItemRuleForm.subitem = "";
   addItemRuleForm.score = "";
   addItemRuleForm.score = "";
@@ -1832,7 +1838,7 @@ const delScoringItems = async (row) => {
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     getAllData({
     getAllData({
       name: semesterName.value,
       name: semesterName.value,
-      termId: semestertermId.value,
+      id: semestertermId.value,
     });
     });
     addItemVisible.value = false;
     addItemVisible.value = false;
     ElMessage({
     ElMessage({

+ 118 - 55
src/views/trackSearch/trackSearch.vue

@@ -51,6 +51,7 @@
             placeholder="请选择日期"
             placeholder="请选择日期"
             style="width: 280px"
             style="width: 280px"
             @change="searchBtn"
             @change="searchBtn"
+            :clearable="false"
           />
           />
         </div>
         </div>
       </div>
       </div>
@@ -74,13 +75,13 @@
         </el-timeline-item>
         </el-timeline-item>
       </el-timeline>
       </el-timeline>
     </div>
     </div>
-    <div class="scroll">
+    <div class="scroll" v-loading="loading">
       <div class="map" @click="xy">
       <div class="map" @click="xy">
         <svg width="1620" height="974" viewBox="0 0 1620 974">
         <svg width="1620" height="974" viewBox="0 0 1620 974">
           <!-- 绘制地铁线路 -->
           <!-- 绘制地铁线路 -->
           <path
           <path
             id="biking-road"
             id="biking-road"
-            d="M582,372 L652,402 L650,562 L760,233 L832,407 L810,590"
+            :d="route"
             stroke="#409EFF"
             stroke="#409EFF"
             stroke-width="3"
             stroke-width="3"
             fill="none"
             fill="none"
@@ -134,7 +135,22 @@
             stroke="#409EFF"
             stroke="#409EFF"
             stroke-width="2"
             stroke-width="2"
           />
           />
-
+          <circle
+            cx="760"
+            cy="539"
+            r="6"
+            fill="white"
+            stroke="#409EFF"
+            stroke-width="2"
+          />
+          <circle
+            cx="1002"
+            cy="573"
+            r="6"
+            fill="white"
+            stroke="#409EFF"
+            stroke-width="2"
+          />
           <!-- <text x="452" y="434" fill="#fff">探理楼</text>
           <!-- <text x="452" y="434" fill="#fff">探理楼</text>
           <text x="544" y="326" fill="#fff">探问楼</text>
           <text x="544" y="326" fill="#fff">探问楼</text>
           <text x="870" y="385" fill="#fff">探真楼</text>
           <text x="870" y="385" fill="#fff">探真楼</text>
@@ -142,7 +158,12 @@
           <text x="800" y="573" fill="#fff">学校大门</text>
           <text x="800" y="573" fill="#fff">学校大门</text>
           <text x="561" y="241" fill="#fff">地下停车场出口</text> -->
           <text x="561" y="241" fill="#fff">地下停车场出口</text> -->
         </svg>
         </svg>
-        <img id="circle" style="width: 24px;height: 24px;" src="@/assets/man.png" alt="">
+        <img
+          id="circle"
+          style="width: 24px; height: 24px"
+          src="@/assets/man.png"
+          alt=""
+        />
         <!-- <svg
         <!-- <svg
           t="1685007462176"
           t="1685007462176"
           class="icon"
           class="icon"
@@ -161,10 +182,8 @@
           ></path>
           ></path>
         </svg> -->
         </svg> -->
       </div>
       </div>
-     
     </div>
     </div>
   </div>
   </div>
- 
 </template>
 </template>
 
 
 <script setup>
 <script setup>
@@ -193,26 +212,27 @@ const loading = ref(false);
 const tableData = reactive({
 const tableData = reactive({
   list: [],
   list: [],
 });
 });
-const classId=ref() // 获取所管理的班级的id(0是所有班级)
+const classId = ref(); // 获取所管理的班级的id(0是所有班级)
 const searchInput = reactive({
 const searchInput = reactive({
   keyWord: "",
   keyWord: "",
   createTime: [], // 创建时间
   createTime: [], // 创建时间
 }); // 搜索按钮数据
 }); // 搜索按钮数据
 const keyWord = ref();
 const keyWord = ref();
-
+const gsapAnimate = ref(); // gsap动画
+const route = ref(); // 路径
 
 
 const gradeData = ref([{ name: "刘晓晓-七年级-学生", id: 1 }]); // 下拉学生数据
 const gradeData = ref([{ name: "刘晓晓-七年级-学生", id: 1 }]); // 下拉学生数据
 const currentPage = ref(1); // 当前页
 const currentPage = ref(1); // 当前页
-const pageCount = ref(100);
+const pageCount = ref(10);
 const total = ref(5); // 当前总数
 const total = ref(5); // 当前总数
 const totalPage = ref(100); // 总页数
 const totalPage = ref(100); // 总页数
 
 
-
 // 预约记录分页数据
 // 预约记录分页数据
 const getList = async () => {
 const getList = async () => {
+  loading.value = true;
   let data = {
   let data = {
-    currentPage: currentPage.value,
-    pageCount: pageCount.value,
+    // currentPage: currentPage.value,
+    // pageCount: pageCount.value,
     userId: searchInput.keyWord,
     userId: searchInput.keyWord,
   };
   };
   if (searchInput.createTime) {
   if (searchInput.createTime) {
@@ -230,9 +250,57 @@ const getList = async () => {
   });
   });
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "轨迹查询");
     console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "轨迹查询");
-    loading.value = false;
     tableData.list = JSON.parse(eds.decryptDes(res.data.data));
     tableData.list = JSON.parse(eds.decryptDes(res.data.data));
     // total.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
     // total.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
+    if (gsapAnimate.value) {
+      console.log("移出动画");
+      gsapAnimate.value.kill(); // 停止动画
+      // gsapAnimate.value.restart();// 重置动画
+      gsapAnimate.value = null; // 清除动画实例
+    }
+    if (tableData.list.length) {
+      let arr = [];
+      tableData.list.forEach((i, ind) => {
+        if (ind == 0) {
+          let str = "M" + i.x + "," + i.y;
+          arr.push(str);
+        } else {
+          let str = "L" + i.x + "," + i.y;
+          arr.push(str);
+        }
+      });
+      console.log(arr.join(" "));
+      route.value = arr.join(" ");
+      loading.value = false;
+      nextTick(() => {
+        let num = tableData.list.length / 2;
+        console.log(num, "秒数");
+
+        let timer = setTimeout(() => {
+          gsap.registerPlugin(MotionPathPlugin);
+          // bikingRoad.animation = "dash 10s linear forwards";
+          gsapAnimate.value = gsap.to("#circle", {
+            duration: num, // 多少时间完成动画
+            repeat: 0, // 重复次数 -1为无限次
+            ease: Linear.easeNone, //动画的运动方式(匀速)
+            motionPath: {
+              path: "#biking-road",
+              align: "#biking-road",
+              autoRotate: true,
+              alignOrigin: [0.5, 0.5],
+            },
+          });
+        },100);
+      });
+    } else {
+      loading.value = false;
+      route.value = "";
+      if (gsapAnimate.value) {
+        console.log("移出动画");
+        // gsapAnimate.value.kill(); // 停止动画
+        // gsapAnimate.value = null; // 清除动画实例
+      }
+    }
   } else {
   } else {
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
@@ -253,8 +321,8 @@ const gradeList = async () => {
     pageCount: pageCount.value,
     pageCount: pageCount.value,
     keyWord: keyWord.value,
     keyWord: keyWord.value,
   };
   };
-  if(classId.value!=0){
-    data.schoolClass=classId.value
+  if (classId.value != 0) {
+    data.schoolClass = classId.value;
   }
   }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
@@ -266,18 +334,22 @@ const gradeList = async () => {
     params: data,
     params: data,
   });
   });
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "用户下拉数据");
   console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "用户下拉数据");
-  let dataList=JSON.parse(eds.decryptDes(res.data.data))
-  gradeData.value = dataList.records;
+  let dataList = JSON.parse(eds.decryptDes(res.data.data));
+  gradeData.value = dataList.list;
   totalPage.value = dataList.pages;
   totalPage.value = dataList.pages;
-  searchInput.keyWord=gradeData.value[0].id
+  if (!searchInput.keyWord) {
+    searchInput.keyWord = gradeData.value[0].id;
+  }
   getList();
   getList();
 };
 };
 // 联系人下拉框搜索时加载
 // 联系人下拉框搜索时加载
 const keyWordMethod = (query) => {
 const keyWordMethod = (query) => {
   console.log(query);
   console.log(query);
-  keyWord.value = query;
-  currentPage.value = 1;
-  gradeList();
+  if (query) {
+    keyWord.value = query;
+    currentPage.value = 1;
+    gradeList();
+  }
 };
 };
 // 搜索框加载更多
 // 搜索框加载更多
 const addGradeMore = async () => {
 const addGradeMore = async () => {
@@ -312,7 +384,7 @@ const addGradeMore = async () => {
 };
 };
 
 
 // 判断为班主任 还是 超级管理员
 // 判断为班主任 还是 超级管理员
-const getAdminId=async ()=>{
+const getAdminId = async () => {
   // 获取所管理的班级的id(0是所有班级)
   // 获取所管理的班级的id(0是所有班级)
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
@@ -321,47 +393,37 @@ 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
-    gradeList()
-  } 
-}
+    let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
+    classId.value = classIds;
+    gradeList();
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
 
 
 const xy = (event) => {
 const xy = (event) => {
   console.log("X:" + event.offsetX);
   console.log("X:" + event.offsetX);
   console.log("Y:" + event.offsetY);
   console.log("Y:" + event.offsetY);
 };
 };
 
 
-
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  let dateEnd=dayjs().format('YYYY-MM-DD')
-  let dateStart=dayjs(dateEnd).subtract(7, 'day').format('YYYY-MM-DD')
-  searchInput.createTime=[dateStart,dateEnd]
-  console.log(dateStart,dateEnd);
+  let dateEnd = dayjs().format("YYYY-MM-DD");
+  let dateStart = dayjs(dateEnd).subtract(7, "day").format("YYYY-MM-DD");
+  searchInput.createTime = [dateStart, dateEnd];
+  console.log(dateStart, dateEnd);
   getAdminId();
   getAdminId();
-
-  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);
@@ -423,19 +485,19 @@ onUnmounted(() => {
         :deep(.el-select) {
         :deep(.el-select) {
           .el-select__wrapper {
           .el-select__wrapper {
             box-shadow: none;
             box-shadow: none;
-            background-color: rgba(133, 191, 242, 0.5);
+            background-color: rgba(133, 191, 242, 0.8);
           }
           }
           .el-select__selected-item {
           .el-select__selected-item {
-            color: rgba(255, 255, 255, 0.7);
+            color: rgba(255, 255, 255, 0.9);
           }
           }
           .el-select__suffix {
           .el-select__suffix {
             .el-icon {
             .el-icon {
-              color: rgba(255, 255, 255, 0.7);
+              color: rgba(255, 255, 255, 0.9);
             }
             }
           }
           }
         }
         }
         :deep(.el-date-editor) {
         :deep(.el-date-editor) {
-          background-color: rgba(133, 191, 242, 0.5);
+          background-color: rgba(133, 191, 242, 0.8);
           box-shadow: none;
           box-shadow: none;
           .el-icon {
           .el-icon {
             color: rgba(255, 255, 255, 0.7);
             color: rgba(255, 255, 255, 0.7);
@@ -527,6 +589,7 @@ onUnmounted(() => {
   .scroll {
   .scroll {
     width: calc(100% - 40px);
     width: calc(100% - 40px);
     height: calc(100% - 61px);
     height: calc(100% - 61px);
+    overflow: auto;
     margin: 0 auto;
     margin: 0 auto;
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;

+ 13 - 5
src/views/trafficRecord/trafficRecord.vue

@@ -4,8 +4,7 @@
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <span class="cameratxt">通行记录</span>
       <span class="cameratxt">通行记录</span>
     </div>
     </div>
-    <div class="scrollId">
-      <div class="middle">
+    <div class="middle">
         <div class="filter">
         <div class="filter">
           <div class="condition">
           <div class="condition">
             <el-input
             <el-input
@@ -165,6 +164,7 @@
           >
           >
         </div>
         </div>
       </div>
       </div>
+    <div class="scrollId">
       <div class="footer" v-loading="loading">
       <div class="footer" v-loading="loading">
         <el-table
         <el-table
           :row-class-name="tableRowClassName"
           :row-class-name="tableRowClassName"
@@ -678,6 +678,13 @@ const getAdminId = async () => {
     let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     let classIds = JSON.parse(eds.decryptDes(res.data.data)).schoolClass;
     classId.value = classIds;
     classId.value = classIds;
     adminClassDataList();
     adminClassDataList();
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
 };
 };
 
 
@@ -727,7 +734,7 @@ onUnmounted(() => {
   }
   }
   .scrollId {
   .scrollId {
     overflow: auto;
     overflow: auto;
-    height: calc(100% - 61px);
+    flex:1;
   }
   }
   .middle {
   .middle {
     width: 96%;
     width: 96%;
@@ -838,9 +845,9 @@ onUnmounted(() => {
 
 
   .footer {
   .footer {
     width: 96%;
     width: 96%;
-    height: calc(100% - 250px);
+    height: calc(100% - 60px);
     min-height: 300px;
     min-height: 300px;
-    margin: 10px auto 20px;
+    margin:0 auto;
 
 
     .el-table--fit {
     .el-table--fit {
       height: 100%;
       height: 100%;
@@ -959,6 +966,7 @@ onUnmounted(() => {
     align-items: center;
     align-items: center;
     justify-content: space-between;
     justify-content: space-between;
     margin: 0 30px;
     margin: 0 30px;
+    height: 60px;
 
 
     span {
     span {
       color: #000;
       color: #000;

File diff suppressed because it is too large
+ 900 - 139
src/views/user/user copy.vue


+ 33 - 31
src/views/user/user.vue

@@ -284,7 +284,7 @@
                 :disabled="addMemberTitle == '编辑成员' ? true : false"
                 :disabled="addMemberTitle == '编辑成员' ? true : false"
               >
               >
                 <el-option
                 <el-option
-                  v-for="i in identityData"
+                  v-for="i in identityData" 
                   :label="i.name"
                   :label="i.name"
                   :value="i.id"
                   :value="i.id"
                 />
                 />
@@ -356,8 +356,8 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="性别 :" prop="sex">
             <el-form-item label="性别 :" prop="sex">
               <el-radio-group v-model="addMemberRuleForm.sex">
               <el-radio-group v-model="addMemberRuleForm.sex">
-                <el-radio :label="1">男</el-radio>
-                <el-radio :label="2">女</el-radio>
+                <el-radio :value="1">男</el-radio>
+                <el-radio :value="2">女</el-radio>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
             <el-form-item label="部门 :" prop="department">
             <el-form-item label="部门 :" prop="department">
@@ -584,8 +584,8 @@
                 <el-option
                 <el-option
                   v-for="item in conteactListData"
                   v-for="item in conteactListData"
                   :key="item.id"
                   :key="item.id"
-                  :label="`${item.name}·${item.id}`"
-                  :value="`${item.name}·${item.id}`"
+                  :label="`${item.name}`"
+                  :value="`${item.id}`"
                 >
                 >
                   <span style="float: left">{{ item.name }}</span>
                   <span style="float: left">{{ item.name }}</span>
                   <span
                   <span
@@ -594,7 +594,7 @@
                       color: var(--el-text-color-secondary);
                       color: var(--el-text-color-secondary);
                       font-size: 13px;
                       font-size: 13px;
                     "
                     "
-                    >{{ item.id }}</span
+                    >{{ item.cardNo }}</span
                   >
                   >
                 </el-option>
                 </el-option>
                 <template #footer>
                 <template #footer>
@@ -2359,7 +2359,6 @@ const addMemberClick = () => {
   addMemberShow.value = true;
   addMemberShow.value = true;
   delRecordShow.value = false;
   delRecordShow.value = false;
   studentList();
   studentList();
-  // addStudentListScroll();
   addMemberRuleForm.serialNumber = "";
   addMemberRuleForm.serialNumber = "";
   addMemberRuleForm.name = "";
   addMemberRuleForm.name = "";
   addMemberRuleForm.identity = "";
   addMemberRuleForm.identity = "";
@@ -2399,7 +2398,7 @@ const editClick = (row) => {
   homeShow.value = false;
   homeShow.value = false;
   addMemberShow.value = true;
   addMemberShow.value = true;
   delRecordShow.value = false;
   delRecordShow.value = false;
-  studentList();
+  // studentList();
   // addStudentListScroll();
   // addStudentListScroll();
   console.log(row, "编辑");
   console.log(row, "编辑");
   addMemberRuleForm.serialNumber = row.cardNo; // 学号
   addMemberRuleForm.serialNumber = row.cardNo; // 学号
@@ -2431,7 +2430,11 @@ const editClick = (row) => {
   if (row.affiliate) {
   if (row.affiliate) {
     let arr = [];
     let arr = [];
     row.affiliates.forEach((item) => {
     row.affiliates.forEach((item) => {
-      arr.push(`${item.name}·${item.id}`);
+      studentList().then(res=>{
+        conteactListData.value.unshift(item);
+        console.log(conteactListData.value);
+      })
+      arr.push(`${item.id}`);
     });
     });
     addMemberRuleForm.contact = arr; // 联系人
     addMemberRuleForm.contact = arr; // 联系人
   } else {
   } else {
@@ -2473,8 +2476,7 @@ const confirmAddMember = async (formEl) => {
       console.log(addMemberRuleForm.contact);
       console.log(addMemberRuleForm.contact);
       let arr = [];
       let arr = [];
       addMemberRuleForm.contact.forEach((item) => {
       addMemberRuleForm.contact.forEach((item) => {
-        let index = item.split("·");
-        arr.push(index[1]);
+        arr.push(item);
       });
       });
       console.log(arr);
       console.log(arr);
       // 任课班级
       // 任课班级
@@ -2512,28 +2514,28 @@ const confirmAddMember = async (formEl) => {
       let res = "";
       let res = "";
       if (addMemberRuleForm.id) {
       if (addMemberRuleForm.id) {
         data.id = addMemberRuleForm.id;
         data.id = addMemberRuleForm.id;
-        (data.usr = teachingClassArr), // 任课班级
-          (res = await axios({
-            method: "post",
-            url: api.value + "/wanzai/api/smartUser/updateSmartUserById",
-            headers: {
-              token: sessionStorage.getItem("token"),
-              user_head: sessionStorage.getItem("userhead"),
-            },
-            data: data,
-          }));
+        data.usr = teachingClassArr // 任课班级
+        res = await axios({
+          method: "post",
+          url: api.value + "/wanzai/api/smartUser/updateSmartUserById",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("userhead"),
+          },
+          data: data,
+        });
         console.log(res, "编辑用户");
         console.log(res, "编辑用户");
       } else {
       } else {
-        (data.isr = teachingClassArr), // 任课班级
-          (res = await axios({
-            method: "post",
-            url: api.value + "/wanzai/api/smartUser/insertSmartUser",
-            headers: {
-              token: sessionStorage.getItem("token"),
-              user_head: sessionStorage.getItem("userhead"),
-            },
-            data: data,
-          }));
+        data.isr = teachingClassArr // 任课班级
+        res = await axios({
+          method: "post",
+          url: api.value + "/wanzai/api/smartUser/insertSmartUser",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("userhead"),
+          },
+          data: data,
+        });
         console.log(res, "新增用户");
         console.log(res, "新增用户");
       }
       }