Преглед на файлове

新增轨迹管理菜单项,请假管理完成

hzj18279462576@163.com преди 2 години
родител
ревизия
daa63699a1

+ 3 - 12
src/layout/sidebar/SidevarItem.vue

@@ -351,7 +351,7 @@ const roleListChange = async () => {
             item.routeName == "trackSearch" ||
             item.routeName == "trackSearch" ||
             item.routeName == "trafficRecord" ||
             item.routeName == "trafficRecord" ||
             item.routeName == "attendanceRecord" ||
             item.routeName == "attendanceRecord" ||
-            item.routeName == "safety"
+            item.routeName == "faceRecord"
           ) {
           ) {
             trackArr.push({
             trackArr.push({
               name: item.routeName,
               name: item.routeName,
@@ -398,11 +398,6 @@ const roleListChange = async () => {
         // console.log(systemArr, "系统设置");
         // console.log(systemArr, "系统设置");
 
 
         if (classArr.length != 0) {
         if (classArr.length != 0) {
-          // arr.push({
-          //   name: "classGrade",
-          //   meta: { isAuth: true, title: "年级管理" },
-          //   children: classArr,
-          // });
           arr.splice(3, 0, {
           arr.splice(3, 0, {
             name: "classGrade",
             name: "classGrade",
             meta: { isAuth: true, title: "年级管理" },
             meta: { isAuth: true, title: "年级管理" },
@@ -410,17 +405,13 @@ const roleListChange = async () => {
           });
           });
         }
         }
         if (trackArr.length != 0) {
         if (trackArr.length != 0) {
-          // arr.push({
-          //   name: "classGrade",
-          //   meta: { isAuth: true, title: "年级管理" },
-          //   children: classArr,
-          // });
-          arr.splice(8, 0, {
+          arr.splice(9, 0, {
             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",

+ 150 - 166
src/views/attendanceRecord/attendanceRecord.vue

@@ -4,11 +4,11 @@
       <!-- <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>
-    <el-tabs v-model="recordType" class="demo-tabs" @tab-click="handleClick">
+    <!-- <el-tabs v-model="recordType" class="demo-tabs" @tab-click="handleClick">
       <el-tab-pane label="学生" :name="1">学生</el-tab-pane>
       <el-tab-pane label="学生" :name="1">学生</el-tab-pane>
       <el-tab-pane label="教师" :name="2">教师</el-tab-pane>
       <el-tab-pane label="教师" :name="2">教师</el-tab-pane>
-    </el-tabs>
-    <div class="scrollId" v-if="recordType == 1">
+    </el-tabs> -->
+    <div class="scrollId" >
       <div class="middle">
       <div class="middle">
         <div class="filter">
         <div class="filter">
           <div class="condition">
           <div class="condition">
@@ -33,25 +33,25 @@
             查询</el-button
             查询</el-button
           >
           >
           <!-- 年级 -->
           <!-- 年级 -->
-          <div class="condition">
+          <div class="condition" v-if="classId==0">
             <span class="title">年级 : </span>
             <span class="title">年级 : </span>
             <el-select
             <el-select
               v-model="searchInput.grade"
               v-model="searchInput.grade"
               placeholder="请选择年级"
               placeholder="请选择年级"
               style="width: 160px"
               style="width: 160px"
-              @change="searchBtn"
+              @change="gradeChange"
               :clearable="true"
               :clearable="true"
             >
             >
               <el-option
               <el-option
                 v-for="i in gradeData"
                 v-for="i in gradeData"
                 :label="i.name"
                 :label="i.name"
-                :value="`${i.name}-${i.id}`"
+                :value="i.id"
               >
               >
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </div>
           </div>
           <!-- 班级 -->
           <!-- 班级 -->
-          <div class="condition">
+          <div class="condition" v-if="classId==0">
             <span class="title">班级 : </span>
             <span class="title">班级 : </span>
             <el-tooltip
             <el-tooltip
               class="box-item"
               class="box-item"
@@ -67,15 +67,48 @@
                 :clearable="true"
                 :clearable="true"
               >
               >
                 <el-option
                 <el-option
-                  v-for="i in classsData"
+                  v-for="i in classData"
                   :label="i.name"
                   :label="i.name"
-                  :value="i.name"
+                  :value="i.id"
                 />
                 />
               </el-select>
               </el-select>
             </el-tooltip>
             </el-tooltip>
           </div>
           </div>
+
+          <!-- 年级 -->
+          <div class="condition" v-if="classId!=0">
+            <span class="title">年级 : </span>
+            <el-select
+              v-model="searchInput.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="searchInput.class"
+                placeholder="请选择班级"
+                style="width: 160px"
+                @change="searchBtn"
+              >
+                <el-option
+                  v-for="i in classData"
+                  :label="i.name"
+                  :value="i.id"
+                />
+              </el-select>
+          </div>
           <!-- 部门 -->
           <!-- 部门 -->
-          <div class="condition">
+          <!-- <div class="condition">
             <span class="title">部门 : </span>
             <span class="title">部门 : </span>
             <el-select
             <el-select
               v-model="searchInput.department"
               v-model="searchInput.department"
@@ -90,7 +123,7 @@
                 :value="i.id"
                 :value="i.id"
               />
               />
             </el-select>
             </el-select>
-          </div>
+          </div> -->
           <!-- 识别分组 -->
           <!-- 识别分组 -->
           <div class="condition">
           <div class="condition">
             <span class="title">识别分组 : </span>
             <span class="title">识别分组 : </span>
@@ -206,7 +239,7 @@
         />
         />
       </div>
       </div>
     </div>
     </div>
-    <div class="scrollId" v-if="recordType == 2">
+    <!-- <div class="scrollId" v-if="recordType == 2">
       <div class="middle">
       <div class="middle">
         <div class="filter">
         <div class="filter">
           <div class="condition">
           <div class="condition">
@@ -225,12 +258,8 @@
             class="search"
             class="search"
             @click="searchBtn"
             @click="searchBtn"
           >
           >
-            <!-- <el-icon>
-              <Search />
-            </el-icon> -->
             查询</el-button
             查询</el-button
           >
           >
-          <!-- 部门 -->
           <div class="condition">
           <div class="condition">
             <span class="title">部门 : </span>
             <span class="title">部门 : </span>
             <el-select
             <el-select
@@ -247,7 +276,6 @@
               />
               />
             </el-select>
             </el-select>
           </div>
           </div>
-          <!-- 状态 -->
           <div class="condition">
           <div class="condition">
             <span class="title">状态 : </span>
             <span class="title">状态 : </span>
             <el-select
             <el-select
@@ -265,7 +293,6 @@
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </div>
           </div>
-          <!-- 时间 -->
           <div class="condition">
           <div class="condition">
             <span class="title">时间 : </span>
             <span class="title">时间 : </span>
             <el-date-picker
             <el-date-picker
@@ -283,7 +310,6 @@
             />
             />
           </div>
           </div>
         </div>
         </div>
-        <!-- 按钮列表 -->
         <div class="gongneng">
         <div class="gongneng">
           <el-button
           <el-button
             type="primary"
             type="primary"
@@ -321,15 +347,9 @@
           <el-table-column align="center" prop="score" label="班次" />
           <el-table-column align="center" prop="score" label="班次" />
           <el-table-column align="center" prop="score" label="打卡时间" />
           <el-table-column align="center" prop="score" label="打卡时间" />
           <el-table-column align="center" prop="score" label="状态" />
           <el-table-column align="center" prop="score" label="状态" />
-          <!-- <el-table-column align="center" prop="status" label="操作">
-            <template #default="scope">
-              <div class="look" @click="editClick(scope.row)">编辑</div>
-            </template>
-          </el-table-column> -->
         </el-table>
         </el-table>
       </div>
       </div>
 
 
-      <!-- 分页组件 -->
       <div class="pageSize">
       <div class="pageSize">
         <span></span>
         <span></span>
         <el-pagination
         <el-pagination
@@ -343,7 +363,7 @@
           @update:current-page="teacherPageChange"
           @update:current-page="teacherPageChange"
         />
         />
       </div>
       </div>
-    </div>
+    </div> -->
   </div>
   </div>
 </template>
 </template>
 
 
@@ -370,11 +390,12 @@ const api = ref("");
 const router = useRouter();
 const router = useRouter();
 // 表格数据
 // 表格数据
 const loading = ref(false);
 const loading = ref(false);
+const classId=ref() // 获取所管理的班级的id(0是所有班级)
 const tableData = reactive({
 const tableData = reactive({
   list: [],
   list: [],
 });
 });
 const gradeData = ref(); //年级下拉数据
 const gradeData = ref(); //年级下拉数据
-const classsData = ref(); //班级下拉数据
+const classData = ref(); //班级下拉数据
 const departmentData = ref([{ name: "发财部", id: 1 }]); //部门下拉数据
 const departmentData = ref([{ name: "发财部", id: 1 }]); //部门下拉数据
 const recognitionData = ref([
 const recognitionData = ref([
   { name: "全部", id: 1 },
   { name: "全部", id: 1 },
@@ -397,177 +418,127 @@ const studentData = reactive({
   pageSize: ref(10),
   pageSize: ref(10),
   total: ref(5), // 当前总数
   total: ref(5), // 当前总数
 });
 });
-
-const recordType = ref(2); // 判断是学生还是教师界面
+const bgImg = ref(false);
+const showImg=ref('')
+// const recordType = ref(2); // 判断是学生还是教师界面
 
 
 // 教师(------------------------------------------------------------)
 // 教师(------------------------------------------------------------)
-const teacherData = reactive({
-  keyWord: ref(''),
-  department: ref(''), // 部门
-  passType: ref(''), // 通行状态
-  createTime: ref(''), // 时间
-  currentPage: ref(1), // 当前页
-  pageSize: ref(10),
-  total: ref(5), // 当前总数
-});
+// const teacherData = reactive({
+//   keyWord: ref(''),
+//   department: ref(''), // 部门
+//   passType: ref(''), // 通行状态
+//   createTime: ref(''), // 时间
+//   currentPage: ref(1), // 当前页
+//   pageSize: ref(10),
+//   total: ref(5), // 当前总数
+// });
 
 
 // 年级数据下拉
 // 年级数据下拉
-const classDataList = async () => {
-  let grade = await axios({
-    method: "get",
-    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)),
-    "年级下拉数据"
-  );
-  gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
-  // classInfoList()// 班级下拉数据
-};
-// 改变年级选择
-const yearClassChange = async (value) => {
-  console.log(value);
-  editRuleForm.class = "";
-  let arr = value.split("-");
-  classInfoList(arr[1]);
-};
-// 班级数据下拉
-const classInfoList = 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)),
-      "班级下拉数据"
-    );
-    classsData.value = JSON.parse(eds.decryptDes(classs.data.data));
-  } else {
-    classsData.value = [];
-  }
-};
-// 部门下拉数据数据
-const departmentList = async (value) => {
-  if (searchInput.grade) {
-    let examType = await axios({
+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/smartScore/queryExamTypes",
+      url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
       headers: {
       headers: {
         token: sessionStorage.getItem("token"),
         token: sessionStorage.getItem("token"),
         user_head: sessionStorage.getItem("userhead"),
         user_head: sessionStorage.getItem("userhead"),
       },
       },
-      params: {
-        gradeId: value,
-      },
+      // params: data,
     });
     });
-    console.log(value);
-
     console.log(
     console.log(
-      examType,
-      JSON.parse(eds.decryptDes(examType.data.data)),
-      "考试类型下拉数据"
+      grade,
+      JSON.parse(eds.decryptDes(grade.data.data)),
+      "年级下拉数据"
     );
     );
-    if (examType.data.code == 200) {
-      examTypeData.value = JSON.parse(eds.decryptDes(examType.data.data));
-    }
-  } else {
-    examTypeData.value = [];
-  }
-};
-// 识别分组数据数据
-const recognitionList = async (value) => {
-  if (searchInput.grade) {
-    let examType = await axios({
+    gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
+  }else{
+    let grade = await axios({
       method: "get",
       method: "get",
-      url: api.value + "/wanzai/api/smartScore/queryExamTypes",
+      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: {
-        gradeId: value,
+        schoolClass:classId.value
       },
       },
     });
     });
-    console.log(value);
-
     console.log(
     console.log(
-      examType,
-      JSON.parse(eds.decryptDes(examType.data.data)),
-      "考试类型下拉数据"
+      grade,
+      JSON.parse(eds.decryptDes(grade.data.data)),
+      "年级下拉数据"
     );
     );
-    if (examType.data.code == 200) {
-      examTypeData.value = JSON.parse(eds.decryptDes(examType.data.data));
-    }
+    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
+    }]
+    searchInput.grade=data.gradeId
+    searchInput.class=data.classId
+  }
+};
+// 管理员 改变年级选择
+const gradeChange = (value) => {
+  console.log(value);
+  if (value) {
+    adminClassInfoList(value);
   } else {
   } else {
-    examTypeData.value = [];
+    classData.value = [];
+    searchInput.class=""
   }
   }
+  getList();
 };
 };
-// 通行状态数据
-const passTypeList = async (value) => {
-  if (searchInput.grade) {
-    let examType = await axios({
-      method: "get",
-      url: api.value + "/wanzai/api/smartScore/queryExamTypes",
-      headers: {
-        token: sessionStorage.getItem("token"),
-        user_head: sessionStorage.getItem("userhead"),
-      },
-      params: {
-        gradeId: value,
-      },
-    });
-    console.log(value);
+// 管理员 班级数据下拉
+const adminClassInfoList = async (value) => {
+  let data = {
+    gradeId: value,
+  };
+  let res = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartClass/querySmartClasss",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
+  });
 
 
+  if (res.data.code == 200) {
     console.log(
     console.log(
-      examType,
-      JSON.parse(eds.decryptDes(examType.data.data)),
-      "考试类型下拉数据"
+      res,
+      JSON.parse(eds.decryptDes(res.data.data)),
+      "班级下拉数据"
     );
     );
-    if (examType.data.code == 200) {
-      examTypeData.value = JSON.parse(eds.decryptDes(examType.data.data));
-    }
+    classData.value = JSON.parse(eds.decryptDes(res.data.data));
   } else {
   } else {
-    examTypeData.value = [];
+    classData.value = [];
   }
   }
 };
 };
 
 
 // 获取成绩分页数据 (----------------------------------------------------------------)
 // 获取成绩分页数据 (----------------------------------------------------------------)
 const getList = async () => {
 const getList = async () => {
   loading.value = true;
   loading.value = true;
-  if (searchInput.grade) {
-    classInfoList(searchInput.grade.split("-")[1]);
-  } else {
-    searchInput.class = "";
-    classsData.value = [];
-  }
   let data = {
   let data = {
     currentPage: studentData.currentPage,
     currentPage: studentData.currentPage,
     pageCount: studentData.pageSize,
     pageCount: studentData.pageSize,
-    name: searchInput.keyWord, // 用户名称
+    keyWord: searchInput.keyWord, // 用户名称
+    gradeId:searchInput.grade,
+    classId:searchInput.class,
+    openType:searchInput.openType,// 开门方式
+    resultStatus:searchInput.resultStatus,// 通行状态
   };
   };
-  if (searchInput.grade) {
-    data.grade = searchInput.grade.split("-")[0];
+  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/smartScore/querySmartScorePage",
+    url: api.value + "/wanzai/api/smartAttendance/queryPage",
     headers: {
     headers: {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
@@ -594,15 +565,7 @@ const getList = async () => {
 const searchBtn = lodash.debounce(async () => {
 const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
 }, 300);
 }, 300);
-// 搜索 清除年级数据时
-const nianJiClear = () => {
-  if (searchInput.grade) {
-    classInfoList(searchInput.grade.split("-")[1]);
-    getList();
-  } else {
-    classsData.value = [];
-  }
-};
+
 
 
 //导出功能 (-----------------------------------------------------------------)
 //导出功能 (-----------------------------------------------------------------)
 const importExcel = async () => {
 const importExcel = async () => {
@@ -681,11 +644,32 @@ const teacherPageChange = (value) => {
   teacherData.currentPage = value;
   teacherData.currentPage = value;
   getList();
   getList();
 };
 };
+// 判断为班主任 还是 超级管理员
+const getAdminId=async ()=>{
+  // 获取所管理的班级的id(0是所有班级)
+  let res = await axios({
+    method: "get",
+    url: api.value + "/wanzai/api/smartAuthorGroup/getClassById",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params:{
+      userHead:sessionStorage.getItem("userhead")
+    },
+  });
+  console.log(res,JSON.parse(eds.decryptDes(res.data.data)),"获取所管理的班级的id(0是所有班级)");
+  if (res.data.code == 200) {
+    let classIds=JSON.parse(eds.decryptDes(res.data.data)).schoolClass
+    classId.value = classIds
+     adminClassDataList()
+  } 
+}
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   getList();
   getList();
-  classDataList();
+  getAdminId();
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);

Файловите разлики са ограничени, защото са твърде много
+ 991 - 713
src/views/caller/caller.vue


+ 27 - 15
src/views/energy/energy.vue

@@ -7,7 +7,7 @@
     <div class="middle">
     <div class="middle">
       <div class="echarts">
       <div class="echarts">
         <div class="echarts1">
         <div class="echarts1">
-          <div class="title">用户类别占比</div>
+          <div class="title">水电量统计</div>
           <div id="annulus"></div>
           <div id="annulus"></div>
           <div class="quantity_title">
           <div class="quantity_title">
             <div class="quantity">
             <div class="quantity">
@@ -16,8 +16,8 @@
                 <!-- <el-col>
                 <!-- <el-col>
                   <el-statistic title="" :value="getWaterTj" />
                   <el-statistic title="" :value="getWaterTj" />
                 </el-col> -->
                 </el-col> -->
-                <span class="unit">{{ getWaterTj }}</span>
-                <div class="units">kw/h</div>
+                <span class="unit">{{ getElcTj }}</span>
+                <div class="units">kw.h</div>
               </div>
               </div>
             </div>
             </div>
             <div class="quantity">
             <div class="quantity">
@@ -26,7 +26,7 @@
                 <!-- <el-col>
                 <!-- <el-col>
                   <el-statistic title="" :value="getElcTj" />
                   <el-statistic title="" :value="getElcTj" />
                 </el-col> -->
                 </el-col> -->
-                <span class="unit">{{ getElcTj }}</span>
+                <span class="unit">{{ getWaterTj }}</span>
                 <div class="units">L</div>
                 <div class="units">L</div>
               </div>
               </div>
             </div>
             </div>
@@ -118,6 +118,10 @@
           <div class="title">实时抄表</div>
           <div class="title">实时抄表</div>
           <div class="table1Data">
           <div class="table1Data">
             <div class="selInput">
             <div class="selInput">
+              <el-button-group style="margin-right:15px">
+                <el-button @click="table2Change(0)" :type="table2Type==0?'primary':''">水</el-button>
+                <el-button @click="table2Change(1)" :type="table2Type==1?'primary':''">电</el-button>
+              </el-button-group>
               <span>通讯时间 : </span>
               <span>通讯时间 : </span>
               <el-date-picker
               <el-date-picker
                 v-model="tableSearch2"
                 v-model="tableSearch2"
@@ -145,10 +149,11 @@
                 type="index"
                 type="index"
                 label="序号"
                 label="序号"
               />
               />
-              <el-table-column align="center" prop="eNum" label="电(kw/h)" />
-              <el-table-column align="center" prop="wNum" label="水(L)" />
-              <el-table-column align="center" prop="name" label="楼栋" />
-              <el-table-column align="center" prop="date" label="通讯时间" />
+              <el-table-column align="center" prop="buildAddress" 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="meterNo" label="表号" />
+              <el-table-column align="center" prop="createTime" label="通讯时间" />
             </el-table>
             </el-table>
             <!-- 分页组件 -->
             <!-- 分页组件 -->
             <div class="pageSize">
             <div class="pageSize">
@@ -305,6 +310,7 @@ const pageSize1 = ref(4);
 const total1 = ref(5); // 当前总数
 const total1 = ref(5); // 当前总数
 
 
 // 实时抄表
 // 实时抄表
+const table2Type=ref(0); // 切换 0水 或 1电
 const tableSearch2 = ref(); // 月份搜索
 const tableSearch2 = ref(); // 月份搜索
 const table2Data = reactive({
 const table2Data = reactive({
   list: [],
   list: [],
@@ -401,7 +407,7 @@ const echarts1 = async () => {
     series: [
     series: [
       {
       {
         type: "pie",
         type: "pie",
-        radius: ["50%", "66%"],
+        radius: ["40%", "56%"],
         center: ["35%", "35%"],
         center: ["35%", "35%"],
         color: ["rgba(67, 181, 244, 1)", "#D4EDFB"],
         color: ["rgba(67, 181, 244, 1)", "#D4EDFB"],
         hoverAnimation: false,
         hoverAnimation: false,
@@ -461,7 +467,7 @@ const getWaterElc = async () => {
   }
   }
   let ress = await axios({
   let ress = await axios({
     method: "post",
     method: "post",
-    url: api.value + "/wanzai/api/wechat/getWaterTj",
+    url: api.value + "/wanzai/api/wechat/getElcTj",
     headers: {
     headers: {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
@@ -531,7 +537,7 @@ const getMonWaterElc = async () => {
           type: "bar",
           type: "bar",
           data: arr1,
           data: arr1,
           itemStyle: {
           itemStyle: {
-            color: "#43B5F4",
+            color: "rgb(67, 181, 244)",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
@@ -544,7 +550,7 @@ const getMonWaterElc = async () => {
           type: "bar",
           type: "bar",
           data: arr2,
           data: arr2,
           itemStyle: {
           itemStyle: {
-            color: "#89CFF5",
+            color: "rgb(158, 207, 142)",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
@@ -557,7 +563,7 @@ const getMonWaterElc = async () => {
           type: "bar",
           type: "bar",
           data: arr3,
           data: arr3,
           itemStyle: {
           itemStyle: {
-            color: "#B4E2FB",
+            color: "rgb(242, 204, 118)",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
@@ -603,7 +609,7 @@ const getMonWaterElc = async () => {
           type: "bar",
           type: "bar",
           data: arr1,
           data: arr1,
           itemStyle: {
           itemStyle: {
-            color: "#43B5F4",
+            color: "rgb(67, 181, 244)",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
@@ -616,7 +622,7 @@ const getMonWaterElc = async () => {
           type: "bar",
           type: "bar",
           data: arr2,
           data: arr2,
           itemStyle: {
           itemStyle: {
-            color: "#89CFF5",
+            color: "rgb(158, 207, 142)",
           },
           },
           barGap: "0%", // 同一列柱子的间距
           barGap: "0%", // 同一列柱子的间距
           barWidth: 20, // 柱子的宽度
           barWidth: 20, // 柱子的宽度
@@ -828,13 +834,19 @@ const handleCurrentChange1 = (value) => {
   energyDissipation();
   energyDissipation();
 };
 };
 // 实时抄表 (44444444444444444444444444)
 // 实时抄表 (44444444444444444444444444)
+const table2Change=(flag)=>{
+  table2Type.value=flag
+  meterReading()
+}
 const meterReading = async () => {
 const meterReading = async () => {
   let paramsData = {
   let paramsData = {
     currentPage: currentPage2.value,
     currentPage: currentPage2.value,
     pageCount: pageSize2.value,
     pageCount: pageSize2.value,
+    
   };
   };
   let data = {
   let data = {
     date: tableSearch2.value,
     date: tableSearch2.value,
+    type:table2Type.value
   };
   };
   let res = await axios({
   let res = await axios({
     method: "post",
     method: "post",

Файловите разлики са ограничени, защото са твърде много
+ 1328 - 0
src/views/faceRecord/faceRecord.vue


+ 42 - 9
src/views/leave/leave.vue

@@ -155,22 +155,22 @@
             width="120"
             width="120"
           >
           >
             <template #default="scope">
             <template #default="scope">
-              <div class="edit">
-                <div class="look" v-if="scope.row.ifVerification == 0" @click="editClick(scope.row)">核销</div>
-                <!-- <el-popconfirm
+              <div class="edit" v-if="scope.row.ifVerification == 0">
+                <!-- <div class="look" v-if="scope.row.ifVerification == 0" @click="editClick(scope.row)">核销</div> -->
+                <el-popconfirm
                     width="220"
                     width="220"
                     confirm-button-text="确认"
                     confirm-button-text="确认"
                     cancel-button-text="取消"
                     cancel-button-text="取消"
                     :icon="InfoFilled"
                     :icon="InfoFilled"
                     icon-color="#f89626"
                     icon-color="#f89626"
-                    title="删除后数据将无法恢复,确定对选中的访问数据进行删除吗?"
-                    @confirm="del(scope.row)"
-                    @cancel="cancelEvent"
+                    title="是否需要核销此数据?"
+                    @confirm="verificationClick(scope.row)"
+                    @cancel="cancelVerification"
                   >
                   >
                     <template #reference>
                     <template #reference>
-                      <div class="del">删除</div>
+                      <div class="del">核销</div>
                     </template>
                     </template>
-                  </el-popconfirm> -->
+                  </el-popconfirm>
               </div>
               </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
@@ -297,7 +297,7 @@ const getList = async () => {
     currentPage: currentPage.value,
     currentPage: currentPage.value,
     pageCount: pageCount.value,
     pageCount: pageCount.value,
     cardNo: searchInput.studentId,
     cardNo: searchInput.studentId,
-    keyWord: searchInput.keyWord,
+    name: searchInput.keyWord,
     ifVerification: searchInput.type,
     ifVerification: searchInput.type,
     classId: searchInput.class,
     classId: searchInput.class,
   };
   };
@@ -444,6 +444,39 @@ const editCancel = () => {
   editVisible.value = false;
   editVisible.value = false;
 };
 };
 
 
+// 核销按钮
+const verificationClick=async (row)=>{
+  let data = {
+    id:row.id, //id
+  }
+  let res = await axios({
+     method: "get",
+     url: api.value + "/wanzai/api/smartAttendance/verification",
+     headers: {
+       token: sessionStorage.getItem("token"),
+       user_head: sessionStorage.getItem("userhead"),
+     },
+     params: data,
+   });
+   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,
+    });
+  }
+}
+
 // 多选框功能
 // 多选框功能
 const handleSelectionChange = (val) => {
 const handleSelectionChange = (val) => {
   console.log(val);
   console.log(val);

Файловите разлики са ограничени, защото са твърде много
+ 313 - 958
src/views/trafficRecord/trafficRecord.vue


+ 9 - 6
src/views/user/user.vue

@@ -170,7 +170,7 @@
                 @click="exportSettingsClick"
                 @click="exportSettingsClick"
                 :disabled="isManage != 1"
                 :disabled="isManage != 1"
                 plain
                 plain
-                style="margin-right: 0;border-right: 0px ;"
+                style="margin-right: 0;"
                 >导出用户</el-button
                 >导出用户</el-button
               >
               >
           </el-tooltip>
           </el-tooltip>
@@ -282,6 +282,7 @@
                 style="width: 500px"
                 style="width: 500px"
                 @change="identityChange"
                 @change="identityChange"
                 clearable
                 clearable
+                :disabled="addMemberTitle == '编辑成员' ? true : false"
               >
               >
                 <el-option
                 <el-option
                   v-for="i in identityData"
                   v-for="i in identityData"
@@ -319,7 +320,7 @@
             <el-form-item
             <el-form-item
               :key="addMemberRuleForm.identity"
               :key="addMemberRuleForm.identity"
               label="学号 :"
               label="学号 :"
-              :prop="addMemberRuleForm.identity == 1 ? '' : 'serialNumber'"
+              :prop="(addMemberRuleForm.identity == 1 || addMemberRuleForm.identity == 14) ? '' : 'serialNumber'"
             >
             >
               <el-input
               <el-input
                 :disabled="addMemberTitle == '编辑成员' ? true : false"
                 :disabled="addMemberTitle == '编辑成员' ? true : false"
@@ -2461,10 +2462,12 @@ const confirmAddMember = async (formEl) => {
       console.log(arr);
       console.log(arr);
 // 任课班级
 // 任课班级
       let teachingClassArr=[]
       let teachingClassArr=[]
-      addMemberRuleForm.teachingClass.forEach(item=>{
-        teachingClassArr.push({ids:item})
-      })
-
+      if(addMemberRuleForm.teachingClass){
+        addMemberRuleForm.teachingClass.forEach(item=>{
+          teachingClassArr.push({ids:item})
+        })
+      }
+      
       let data = {
       let data = {
         cardNo: addMemberRuleForm.serialNumber, // 学号
         cardNo: addMemberRuleForm.serialNumber, // 学号
         name: addMemberRuleForm.name, // 姓名
         name: addMemberRuleForm.name, // 姓名