xiao547607 5 éve
szülő
commit
5d27cdb9c1

+ 11 - 0
src/api/business/workAttendance.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function exportXls(formData){
+  return request.post(constant.serverUrl + "/business/workAttendance/exportXls", formData);
+}
+
+
+export default {
+  exportXls
+}

+ 3 - 1
src/routers/index.js

@@ -3,6 +3,7 @@ import Router from 'vue-router'
 import Layout from '@/views/layout'
 import Home from '@/views/Home.vue'
 import baseRouters from './modules/base'
+import businessRouters from './modules/business'
 import sysRouters from './modules/sys'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
@@ -24,7 +25,8 @@ var routes = [
         component: Home
       },
       ...sysRouters,
-      ...baseRouters
+      ...baseRouters,
+      ...businessRouters
     ]
   },
   {

+ 0 - 12
src/routers/modules/base.js

@@ -223,18 +223,6 @@ var routers = [
                         roles: ["admin"]
                 }
         },
-        {
-                //考勤记录
-                path: '/base/personAttendance/list',
-                name: 'base-personAttendance-list',
-                // route level code-splitting
-                // this generates a separate chunk (about.[hash].js) for this route
-                // which is lazy-loaded when the route is visited.
-                component: () => import('@/views/base/personAttendance-list.vue'),
-                meta: {
-                        roles: ["admin"]
-                }
-        },
         {
                 //检测预警上报人员管理
                 path: '/base/warningPusher/list',

+ 16 - 0
src/routers/modules/business.js

@@ -0,0 +1,16 @@
+var routers = [
+        {
+                //考勤记录
+                path: '/business/workAttendance/list',
+                name: 'business-workAttendance-list',
+                // route level code-splitting
+                // this generates a separate chunk (about.[hash].js) for this route
+                // which is lazy-loaded when the route is visited.
+                component: () => import('@/views/business/workAttendance-list.vue'),
+                meta: {
+                        roles: ["admin"]
+                }
+        }
+]
+
+export default routers;

+ 0 - 269
src/views/base/personAttendance-list.vue

@@ -1,269 +0,0 @@
-<template>
-  <div>
-    <el-breadcrumb separator=">">
-      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
-      <el-breadcrumb-item>
-        <a href="#">系统管理</a>
-      </el-breadcrumb-item>
-      <el-breadcrumb-item>
-        <a href="/personDeviceLog">考勤记录</a>
-      </el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-divider></el-divider>
-    <!--
-      要resetFields起作用,必须配置:model和prop
-    -->
-    <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
-      <div>
-        <el-form-item label="统计区间" prop="timeRanges">
-          <el-date-picker
-            v-model="queryModel.timeRanges"
-            type="datetimerange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            :default-time="timeRangesDefaultTime"
-            size="mini"
-          ></el-date-picker>
-          <!-- <el-date-picker
-            v-model="queryModel.timeRanges"
-            type="datetimerange"
-            align="right"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            :default-time="['12:00:00', '08:00:00']"
-          ></el-date-picker> -->
-        </el-form-item>
-        <el-form-item>
-          <el-button
-            type="primary"
-            size="mini"
-            icon="ios-search"
-            @click="changePage(1)"
-            :loading="loading"
-          >查询</el-button>&nbsp;
-          <el-button
-            type="info"
-            size="mini"
-            style="margin-left: 8px"
-            @click="handleReset('queryForm')"
-          >重置</el-button>&nbsp;
-        </el-form-item>
-      </div>
-    </el-form>
-    <el-divider></el-divider>
-    <el-row class="button-group">
-      <el-button
-        type="primary"
-        size="small"
-        plain
-        icon="el-icon-download"
-        :loading="downloadLoading"
-        @click="downloadXls"
-      >导出数据</el-button>
-    </el-row>
-    
-  </div>
-</template>
-<script>
-import Constant from "@/constant";
-import personDeviceLogApi from "@/api/base/personDeviceLog";
-import NProgress from "nprogress"; // progress bar
-import "nprogress/nprogress.css"; // progress bar style
-
-export default {
-  data() {
-    var self = this;
-
-    return {
-      queryModel: {
-        companyId: "",
-        deviceNo: "",
-        aliasName: "",
-        personName: "",
-        matchStatus: "",
-        timeRanges: "",
-        faceImage: "",
-        position: "",
-        temperatureBegin: "",
-        temperatureEnd: "",
-        temperatureRanges: "",
-        matchMsg:""
-      },
-      loading: false,
-      tableData: [],
-      pageIndex: 1,
-      pageSize: 10,
-      totalPages: 0,
-      totalElements: 0,
-      field: "",
-      direction: "",
-      pageSizeList: [10, 20, 30],
-      multipleSelection: [],
-      showModal: false,
-      modalTitle: "",
-      businessKey: "",
-      downloadLoading: false,
-      tableHeight: "",
-      timeRangesDefaultTime:[]
-    };
-  },
-  created() {
-    var self = this;
-    this.tableHeight = window.innerHeight - 320;
-    this.getCurrentMonthFirst();
-  },
-  methods: {
-    changePage(pageIndex) {
-      var self = this;
-
-      self.loading = true;
-
-      self.pageIndex = pageIndex;
-      var formData = new FormData();
-
-      formData.append("pageIndex", self.pageIndex);
-      formData.append("pageSize", self.pageSize);
-
-      formData.append("faceImage", self.queryModel.faceImage);
-      formData.append("timeRanges", self.queryModel.timeRanges);
-      formData.append("matchStatus", self.queryModel.matchStatus);
-      formData.append("personName", self.queryModel.personName);
-      formData.append("deviceNo", self.queryModel.deviceNo);
-      formData.append("aliasName", self.queryModel.aliasName);
-      formData.append("companyId", self.queryModel.companyId);
-      formData.append("position", self.queryModel.position);
-      formData.append("matchMsg", self.queryModel.matchMsg);
-
-      // formData.append(
-      //   "temperatureRanges",
-      //   self.queryModel.temperatureBegin + "," + self.queryModel.temperatureEnd
-      // );
-
-      if (this.field != null) {
-        formData.append("field", this.field);
-      }
-
-      if (this.direction != null) {
-        formData.append("direction", this.direction);
-      }
-
-      personDeviceLogApi
-        .pageList(formData)
-        .then(function(response) {
-          self.loading = false;
-
-          var jsonData = response.data.data;
-
-          self.tableData = jsonData.data;
-          self.totalPages = jsonData.totalPages;
-          self.totalElements = jsonData.recordsTotal;
-        })
-        .catch(error => {
-          self.loading = false;
-          // self.$message.error(error + "");
-        });
-    },
-    pageSizeChange(pageSize) {
-      this.pageSize = pageSize;
-    },
-    sortChange(data) {
-      this.field = data.column.field;
-      this.direction = data.order;
-
-      this.changePage(this.pageIndex);
-    },
-    handleSelectionChange(val) {
-      this.multipleSelection = val;
-    },
-    handleReset(name) {
-      this.$refs[name].resetFields();
-      this.queryModel.timeRanges = "";
-    },
-    onDetailModalClose(refreshed) {
-      //保存成功后回调
-      this.showModal = false;
-
-      if (refreshed) {
-        this.changePage(this.pageIndex);
-      }
-    },
-    downloadXls() {
-      //导出
-      var self = this;
-      self.downloadLoading = true;
-      var formData = new FormData();
-
-      formData.append("faceImage", self.queryModel.faceImage);
-      formData.append("timeRanges", self.queryModel.timeRanges);
-      formData.append("matchStatus", self.queryModel.matchStatus);
-      formData.append("personName", self.queryModel.personName);
-      formData.append("deviceNo", self.queryModel.deviceNo);
-      formData.append("aliasName", self.queryModel.aliasName);
-      formData.append("companyId", self.queryModel.companyId);
-      formData.append("position", self.queryModel.position);
-
-      personDeviceLogApi.exportXls(formData).then(function(response) {
-        var jsonData = response.data;
-        self.downloadLoading = false;
-        if (jsonData.result) {
-          if (jsonData.data != null) {
-            //下载有错误信息提示的报表
-            self.$message({
-              showClose: true,
-              dangerouslyUseHTMLString: true,
-              message: `<a href="${jsonData.data}" target="_blank">点击下载报表</a>&nbsp;`,
-              duration: 30000
-            });
-          }
-        }
-      });
-    },
-    //初始化日期
-    getCurrentMonthFirst() {
-      var self = this;
-      var date = new Date();
-      date.setDate(1);
-      var month = parseInt(date.getMonth() + 1);
-      var day = date.getDate();
-      if (month < 10) month = "0" + month;
-      if (day < 10) day = "0" + day;
-      var startTime = date.getFullYear() + "-" + month + "-" + day + " 00:00:00";
-
-      var lastDate = new Date();
-      lastDate.setMonth(date.getMonth() + 1);
-      //设置当前月份+1
-      lastDate.setDate(0);
-      //获取上个月最后一天=本月最后一天
-      var lastDay = lastDate.getDate();
-      var endTime = date.getFullYear() + "-" + month + "-" + lastDay + " 23:59:59";
-
-      self.queryModel.timeRanges = [startTime, endTime];
-    }
-  },
-  mounted: function() {
-    //this.changePage(1);
-  }
-};
-</script>
-<style lang="scss" scoped>
-.el-breadcrumb {
-  margin: 10px;
-  line-height: 20px;
-}
-
-.el-divider {
-  margin: 5px 0;
-}
-
-.demo-form-inline {
-  margin-left: 10px;
-  text-align: left;
-}
-
-.button-group {
-  margin-left: 10px;
-  text-align: left;
-}
-</style>

+ 2 - 1
src/views/base/personDeviceLog-list.vue

@@ -88,6 +88,7 @@
       >导出数据</el-button>
     </el-row>
     <el-table
+    ref="tablesssssss"
       :data="tableData"
       style="min-height:400px;"
       v-loading="loading"
@@ -180,7 +181,6 @@ export default {
   },
   created() {
     var self = this;
-    this.tableHeight = window.innerHeight - 320;
     this.getCurrentMonthFirst();
   },
   methods: {
@@ -228,6 +228,7 @@ export default {
           self.tableData = jsonData.data;
           self.totalPages = jsonData.totalPages;
           self.totalElements = jsonData.recordsTotal;
+          self.tableHeight = window.innerHeight - 320;
         })
         .catch(error => {
           self.loading = false;

+ 220 - 0
src/views/business/workAttendance-list.vue

@@ -0,0 +1,220 @@
+<template>
+  <div v-loading="downloadLoading">
+    <el-breadcrumb separator=">">
+      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="#">系统管理</a>
+      </el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="/workAttendance">考勤记录</a>
+      </el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-divider></el-divider>
+    <!--
+      要resetFields起作用,必须配置:model和prop
+    -->
+    <el-form
+      ref="queryForm"
+      :model="queryModel"
+      :rules="ruleValidate" 
+      inline
+      class="demo-form-inline"
+    >
+      <div>
+        <el-form-item label="单位" prop="companyId">
+          <el-select
+            v-model="queryModel.companyId"
+            size="mini"
+            filterable
+            placeholder="请选择"
+            style="width:220px"
+          >
+            <el-option
+              v-for="company in companyResult"
+              :key="company.id"
+              :label="company.name"
+              :value="company.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="统计区间" prop="timeRanges">
+          <el-date-picker
+            v-model="queryModel.timeRanges"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            value-format="yyyy-MM-dd"
+            :default-time="timeRangesDefaultTime"
+            size="mini"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="info"
+            size="mini"
+            style="margin-left: 8px"
+            @click="handleReset('queryForm')"
+          >重置</el-button>&nbsp;
+        </el-form-item>
+      </div>
+    </el-form>
+    <el-divider></el-divider>
+    <el-row class="button-group">
+      <el-button
+        type="primary"
+        size="small"
+        plain
+        icon="el-icon-download"
+        :loading="downloadLoading"
+        @click="downloadXls"
+      >导出数据</el-button>
+    </el-row>
+  </div>
+</template>
+<script>
+import Constant from "@/constant";
+import workAttendanceApi from "@/api/business/workAttendance";
+import companyInfoApi from "@/api/base/companyInfo";
+import NProgress from "nprogress"; // progress bar
+import "nprogress/nprogress.css"; // progress bar style
+
+export default {
+  data() {
+    var self = this;
+
+    return {
+      ruleValidate: {
+        companyId: [{ required: true, message: "不能为空", trigger: "blur" }],
+        timeRanges: [{ required: true, message: "请选择事件范围", trigger: "blur" }]
+      },
+      queryModel: {
+        companyId: "",
+        timeRanges: ""
+      },
+      loading: false,
+      tableData: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPages: 0,
+      totalElements: 0,
+      field: "",
+      direction: "",
+      pageSizeList: [10, 20, 30],
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      downloadLoading: false,
+      tableHeight: "",
+      timeRangesDefaultTime: [],
+      companyResult: ""
+    };
+  },
+  created() {
+    var self = this;
+    companyInfoApi.list().then(function(response) {
+      var jsonData = response.data;
+      if (jsonData.result) {
+        if (jsonData.data != null && jsonData.data != "") {
+          self.companyResult = jsonData.data;
+        }
+      }
+    });
+
+    this.getCurrentMonthFirst();
+  },
+  methods: {
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    downloadXls() {
+      //导出
+      var self = this;
+      this.$refs["queryForm"].validate(valid => {
+        if (valid) {
+          self.downloadLoading = true;
+          var formData = new FormData();
+
+          formData.append("companyId", self.queryModel.companyId);
+
+          var startDate = "";
+          var endDate = "";
+          var timeRanges = self.queryModel.timeRanges + "";
+
+          if (timeRanges != "" && timeRanges != null) {
+            timeRanges = timeRanges.split(",");
+            startDate = timeRanges[0];
+            endDate = timeRanges[1];
+          }
+
+          formData.append("startDate", startDate);
+          formData.append("endDate", endDate);
+
+          workAttendanceApi.exportXls(formData).then(function(response) {
+            var jsonData = response.data;
+            self.downloadLoading = false;
+            if (jsonData.result) {
+              if (jsonData.data != null) {
+                self.$message({
+                  showClose: true,
+                  dangerouslyUseHTMLString: true,
+                  message: `导出成功,<a href="${jsonData.data}" target="_blank">请点击下载考勤报表</a>&nbsp;`,
+                  duration: 30000
+                });
+              }
+            } else {
+              self.$message({
+                type: "success",
+                message: jsonData.message
+              });
+            }
+          });
+        }
+      });
+    },
+    //初始化日期
+    getCurrentMonthFirst() {
+      var self = this;
+      var date = new Date();
+      date.setDate(1);
+      var month = parseInt(date.getMonth() + 1);
+      var day = date.getDate();
+      if (month < 10) month = "0" + month;
+      if (day < 10) day = "0" + day;
+      var startTime = date.getFullYear() + "-" + month + "-" + day;
+
+      var lastDate = new Date();
+      lastDate.setMonth(date.getMonth() + 1);
+      //设置当前月份+1
+      lastDate.setDate(0);
+      //获取上个月最后一天=本月最后一天
+      var lastDay = lastDate.getDate();
+      var endTime = date.getFullYear() + "-" + month + "-" + lastDay;
+
+      self.queryModel.timeRanges = [startTime, endTime];
+    }
+  },
+  mounted: function() {}
+};
+</script>
+<style lang="scss" scoped>
+.el-breadcrumb {
+  margin: 10px;
+  line-height: 20px;
+}
+
+.el-divider {
+  margin: 5px 0;
+}
+
+.demo-form-inline {
+  margin-left: 10px;
+  text-align: left;
+}
+
+.button-group {
+  margin-left: 10px;
+  text-align: left;
+}
+</style>