Просмотр исходного кода

Merge branch 'master' of http://223.75.76.159:9090/xiao547607/smart-community-server-portal

zhengqiang 5 лет назад
Родитель
Сommit
5c720b6651

+ 11 - 0
src/api/base/temperatureRecord.js

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

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

@@ -270,6 +270,18 @@ var routers = [
                 meta: {
                         roles: ["admin"]
                 }
+        },
+        {
+                //测温统计
+                path: '/base/temperatureRecord/list',
+                name: 'base-temperatureRecord-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/temperatureRecord-list.vue'),
+                meta: {
+                        roles: ["admin"]
+                }
         }
 ]
 

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

@@ -285,6 +285,8 @@ export default {
       this.$refs[name].resetFields();
       this.queryModel.timeRanges = "";
       this.queryModel.temperatureEnd = "";
+      this.queryModel.subordinate =false;
+      this.queryModel.distinct = false;
     },
     onDetailModalClose(refreshed) {
       //保存成功后回调

+ 14 - 3
src/views/base/personDeviceRelation-BoundList.vue

@@ -34,8 +34,20 @@
       >
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column prop="deviceInfo.aliasName" label="设备名称" width="220"></el-table-column>
-        <el-table-column prop="personInfo.name" label="人员名称" width="180"></el-table-column>
-        <el-table-column prop="createTime" label="绑定时间" width="180"></el-table-column>
+        <el-table-column prop="personInfo.name" label="人员名称" width="120"></el-table-column>
+        <el-table-column prop="isWrite" label="照片是否存在" width="120">
+          <template slot-scope="{row}">
+            <div
+              v-if="row.isWrite"
+              style="border-radius: 30px;background-color:#67C23A;width:20px;height:20px;"
+            ></div>
+            <div
+              v-if="!row.isWrite"
+              style="border-radius: 30px;background-color:#F56C6C;width:20px;height:20px;"
+            ></div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="绑定时间" width="150"></el-table-column>
         <el-table-column label="操作">
           <template slot-scope="{row}">
             <el-button size="mini" type="danger" @click="handleDelete(row)">解除绑定</el-button>
@@ -123,7 +135,6 @@ export default {
           self.loading = false;
 
           var jsonData = response.data.data;
-
           self.tableData = jsonData.data;
           self.totalPages = jsonData.totalPages;
           self.totalElements = jsonData.recordsTotal;

+ 32 - 5
src/views/base/personDeviceRelation-list.vue

@@ -14,6 +14,29 @@
       <!--
       要resetFields起作用,必须配置:model和prop
       -->
+      <el-form
+        ref="queryForm"
+        :model="queryModel"
+        inline
+        class="demo-form-inline"
+        label-width="100px"
+      >
+        <el-form-item label="设备编号" prop="deviceNo">
+          <el-input type="text" size="mini" v-model="queryModel.deviceNo" style="width:120px;"></el-input>
+        </el-form-item>
+        <el-form-item label="设备名称" prop="deviceName">
+          <el-input type="text" size="mini" v-model="queryModel.deviceName" style="width:120px;"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            size="mini"
+            icon="ios-search"
+            @click="changePage(1)"
+            :loading="loading"
+          >查询</el-button>&nbsp;
+        </el-form-item>
+      </el-form>
       <el-divider></el-divider>
       <el-row class="button-group">
         <el-button
@@ -24,13 +47,13 @@
           :disabled="multipleSelection.length==0"
           @click="handleBatchBound"
         >批量绑定</el-button>
-        <el-button
+        <!-- <el-button
           type="primary"
           size="small"
           plain
           icon="el-icon-remove"
           @click="handleRemoveAll"
-        >解绑所有设备</el-button>
+        >解绑所有设备</el-button>-->
       </el-row>
       <el-table
         :data="tableData"
@@ -63,9 +86,9 @@
             <span v-if="!row.isBindPerson">
               <el-button size="mini" type="success" @click="handleBound(row)">绑定设备</el-button>
             </span>
-            <span v-else>
+            <!-- <span v-else>
               <el-button size="mini" type="danger" @click="handleDelete(row)">解除绑定</el-button>
-            </span>
+            </span>-->
           </template>
         </el-table-column>
       </el-table>
@@ -101,7 +124,8 @@ export default {
     return {
       formModel: {},
       queryModel: {
-        deviceId: "",
+        deviceNo: "",
+        deviceName: "",
         personId: ""
       },
       loading: false,
@@ -144,6 +168,9 @@ export default {
 
       formData.append("personId", self.personId);
 
+      formData.append("deviceNo", self.queryModel.deviceNo);
+      formData.append("deviceName", self.queryModel.deviceName);
+
       if (this.field != null) {
         formData.append("field", this.field);
       }

+ 92 - 60
src/views/base/personInfo-list.vue

@@ -85,6 +85,23 @@
           </el-select>
         </el-form-item>
       </div>
+      <div>
+        <el-form-item v-if="position1Show" :label="position1" prop="position1">
+          <el-input type="text" size="mini" v-model="queryModel.position1"></el-input>
+        </el-form-item>
+        <el-form-item v-if="position2Show" :label="position2" prop="position2">
+          <el-input type="text" size="mini" v-model="queryModel.position2"></el-input>
+        </el-form-item>
+        <el-form-item v-if="position3Show" :label="position3" prop="position3">
+          <el-input type="text" size="mini" v-model="queryModel.position3"></el-input>
+        </el-form-item>
+        <el-form-item v-if="position4Show" :label="position4" prop="position4">
+          <el-input type="text" size="mini" v-model="queryModel.position4"></el-input>
+        </el-form-item>
+        <el-form-item v-if="position5Show" :label="position5" prop="position5">
+          <el-input type="text" size="mini" v-model="queryModel.position5"></el-input>
+        </el-form-item>
+      </div>
     </el-form>
     <el-divider></el-divider>
     <el-row class="button-group">
@@ -173,11 +190,11 @@
       <el-table-column prop="phone" label="手机号" width="180"></el-table-column>
       <el-table-column prop="idCard" label="身份证" width="100" show-overflow-tooltip></el-table-column>
       <el-table-column prop="deviceName" label="绑定设备" width="150" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="position1" :label="position1" width="250" v-if="position1Show"></el-table-column>
-      <el-table-column prop="position2" :label="position2" width="250" v-if="position2Show"></el-table-column>
-      <el-table-column prop="position3" :label="position3" width="250" v-if="position3Show"></el-table-column>
-      <el-table-column prop="position4" :label="position4" width="250" v-if="position4Show"></el-table-column>
-      <el-table-column prop="position5" :label="position5" width="250" v-if="position5Show"></el-table-column>
+      <el-table-column prop="position1" :label="position1" width="180" v-if="position1Show"></el-table-column>
+      <el-table-column prop="position2" :label="position2" width="180" v-if="position2Show"></el-table-column>
+      <el-table-column prop="position3" :label="position3" width="180" v-if="position3Show"></el-table-column>
+      <el-table-column prop="position4" :label="position4" width="180" v-if="position4Show"></el-table-column>
+      <el-table-column prop="position5" :label="position5" width="180" v-if="position5Show"></el-table-column>
       <el-table-column prop="openId" label="是否绑定公众号" width="180">
         <template slot-scope="{row}">{{row.openId == null ? "否" : "是"}}</template>
       </el-table-column>
@@ -450,7 +467,12 @@ export default {
         idCard: "",
         faceBound: "",
         isUploadPhoto: "",
-        subordinate: false
+        subordinate: false,
+        position1: "",
+        position2: "",
+        position3: "",
+        position4: "",
+        position5: ""
       },
       loading: false,
       tableData: [],
@@ -567,6 +589,12 @@ export default {
       formData.append("faceBound", self.queryModel.faceBound);
       formData.append("isUploadPhoto", self.queryModel.isUploadPhoto);
 
+      formData.append("position1", self.queryModel.position1);
+      formData.append("position2", self.queryModel.position2);
+      formData.append("position3", self.queryModel.position3);
+      formData.append("position4", self.queryModel.position4);
+      formData.append("position5", self.queryModel.position5);
+
       if (this.field != null) {
         formData.append("field", this.field);
       }
@@ -584,7 +612,7 @@ export default {
 
           self.tableData = jsonData.data;
           self.totalPages = jsonData.totalPages;
-          self.totalElements = jsonData.recordsTotal;          
+          self.totalElements = jsonData.recordsTotal;
           self.tableHeight = window.innerHeight - 320;
         })
         .catch(error => {
@@ -781,7 +809,12 @@ export default {
       formData.append("idCard", self.queryModel.idCard);
       formData.append("faceBound", self.queryModel.faceBound);
       formData.append("isUploadPhoto", self.queryModel.isUploadPhoto);
-
+      
+      formData.append("position1", self.queryModel.position1);
+      formData.append("position2", self.queryModel.position2);
+      formData.append("position3", self.queryModel.position3);
+      formData.append("position4", self.queryModel.position4);
+      formData.append("position5", self.queryModel.position5);
 
       self.xlsLoading = true;
 
@@ -790,11 +823,11 @@ export default {
         var jsonData = response.data;
         if (jsonData.result) {
           if (jsonData.data != null) {
-            //下载有错误信息提示的报表
             self.$message({
               showClose: true,
+              type: "success",
               dangerouslyUseHTMLString: true,
-              message: `<a href="${jsonData.data}" target="_blank">点击下载报表</a>&nbsp;`,
+              message: `报表已生成,<a href="${jsonData.data}" target="_blank">点击下载报表</a>&nbsp;`,
               duration: 30000
             });
           }
@@ -804,63 +837,62 @@ export default {
     enabledTo(row, type, value) {
       var self = this;
 
-      if(type=="wechatNotice"){
+      if (type == "wechatNotice") {
         var formData = new FormData();
         formData.append("id", row.id);
 
         personInfoApi.enabledWechatNotice(formData);
-      }
-      else{
-      this.$confirm("该操作会对设备上的信息进行操作,请确认?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      })
-        .then(() => {
-          //self.loading = true;
-          if (!self.disabled) {
-            var formData = new FormData();
-            formData.append("id", row.id);
-            if ("face" == type) {
-              personInfoApi.enabledFace(formData);
-            } else if ("card" == type) {
-              personInfoApi.enabledCard(formData);
-            } else if ("app" == type) {
-              personInfoApi.enabledApp(formData);
-            } else if ("guest" == type) {
-              personInfoApi.enabledGuest(formData);
-            }else if ("wechatNotice" == type) {
-              personInfoApi.enabledWechatNotice(formData);
-            }
+      } else {
+        this.$confirm("该操作会对设备上的信息进行操作,请确认?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            //self.loading = true;
+            if (!self.disabled) {
+              var formData = new FormData();
+              formData.append("id", row.id);
+              if ("face" == type) {
+                personInfoApi.enabledFace(formData);
+              } else if ("card" == type) {
+                personInfoApi.enabledCard(formData);
+              } else if ("app" == type) {
+                personInfoApi.enabledApp(formData);
+              } else if ("guest" == type) {
+                personInfoApi.enabledGuest(formData);
+              } else if ("wechatNotice" == type) {
+                personInfoApi.enabledWechatNotice(formData);
+              }
 
-            //关闭开关,是自动同步到服务器
-            //打开开关需要手动同步服务器
-            // if (!value) {
-            //   //如果是打开开关,则修改状态
-            //   row.faceBound = false;
-            // }
+              //关闭开关,是自动同步到服务器
+              //打开开关需要手动同步服务器
+              // if (!value) {
+              //   //如果是打开开关,则修改状态
+              //   row.faceBound = false;
+              // }
 
-            self.disabled = true;
+              self.disabled = true;
 
-            setTimeout(function() {
-              self.disabled = false;
-              //self.loading = false;
-            }, 1000); //一秒内不能重复点击
-          } else {
-            self.$message({
-              type: "success",
-              message: "操作过快!"
-            });
-          }
-        })
-        .catch(() => {
-          // self.loading = false;
-          if (row.faceEnabled) {
-            row.faceEnabled = false;
-          } else {
-            row.faceEnabled = true;
-          }
-        });
+              setTimeout(function() {
+                self.disabled = false;
+                //self.loading = false;
+              }, 1000); //一秒内不能重复点击
+            } else {
+              self.$message({
+                type: "success",
+                message: "操作过快!"
+              });
+            }
+          })
+          .catch(() => {
+            // self.loading = false;
+            if (row.faceEnabled) {
+              row.faceEnabled = false;
+            } else {
+              row.faceEnabled = true;
+            }
+          });
       }
     },
     uploadData(record) {

+ 331 - 0
src/views/base/temperatureRecord-list.vue

@@ -0,0 +1,331 @@
+<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="#">测温统计</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"
+            size="mini"
+            type="date"
+            placeholder="选择日期"
+            value-format="yyyy-MM-dd"
+            align="right"
+            :picker-options="pickerOptions"
+          ></el-date-picker>
+        </el-form-item>
+        <!-- <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>&nbsp;
+          <el-checkbox v-model="queryModel.subordinate">是否包含下级单位</el-checkbox>
+          <el-checkbox v-model="queryModel.distinct">是否去重</el-checkbox>
+        </el-form-item>-->
+        <!-- <el-form-item label="人员姓名" prop="personName">
+          <el-input type="text" size="mini" v-model="queryModel.personName"></el-input>
+        </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>-->
+    <el-table
+      ref="tablesssssss"
+      :data="tableData"
+      style="min-height:400px;"
+      v-loading="loading"
+      show-summary
+      :summary-method="getSummaries"
+      stripe
+      :height="tableHeight"
+      tooltip-effect="light"
+      @sort-change="sortChange"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column prop="companyName" label="单位名称" width="220"></el-table-column>
+      <el-table-column prop="personTotal" label="应测人数" width="100"></el-table-column>
+      <el-table-column prop="checkPersonTotal" label="已测人数" width="100"></el-table-column>
+      <el-table-column label="漏测人数" width="100">
+        <template slot-scope="{row}">{{row.personTotal - row.checkPersonTotal}}</template>
+      </el-table-column>
+      <el-table-column type="expand" width="40">
+        <template slot-scope="props">
+          <el-form label-position="left" inline class="demo-table-expand">
+            <el-form-item label="漏测人员名单">
+              <span v-if="props.row.unCheckPersonName != ''">{{ props.row.unCheckPersonName }}</span>
+              <span v-else>无</span>
+            </el-form-item>
+          </el-form>
+        </template>
+      </el-table-column>
+      <el-table-column prop="unCheckPersonName" label="漏测名单" width="700" show-overflow-tooltip></el-table-column>
+    </el-table>
+  </div>
+</template>
+<script>
+import Constant from "@/constant";
+import temperatureRecordApi from "@/api/base/temperatureRecord";
+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 {
+      queryModel: {
+        personName: "",
+        timeRanges: "",
+        companyId: "",
+        subordinate: false,
+        distinct: false
+      },
+      loading: false,
+      tableData: [],
+      field: "",
+      direction: "",
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      downloadLoading: false,
+      tableHeight: "",
+      timeRangesDefaultTime: [],
+      companyResult: "",
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        },
+        shortcuts: [
+          {
+            text: "今天",
+            onClick(picker) {
+              picker.$emit("pick", new Date());
+            }
+          },
+          {
+            text: "昨天",
+            onClick(picker) {
+              const date = new Date();
+              date.setTime(date.getTime() - 3600 * 1000 * 24);
+              picker.$emit("pick", date);
+            }
+          },
+          {
+            text: "一周前",
+            onClick(picker) {
+              const date = new Date();
+              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+              picker.$emit("pick", date);
+            }
+          }
+        ]
+      }
+    };
+  },
+  created() {
+    var self = this;
+    this.getCurrentMonthFirst();
+  },
+  methods: {
+    changePage(pageIndex) {
+      var self = this;
+
+      self.loading = true;
+
+      var formData = new FormData();
+
+      formData.append("pageIndex", self.pageIndex);
+      formData.append("pageSize", self.pageSize);
+
+      var times =
+        self.queryModel.timeRanges +
+        " 00:00:00," +
+        self.queryModel.timeRanges +
+        " 23:59:59";
+
+      formData.append("timeRanges", times);
+      formData.append("personName", self.queryModel.personName);
+
+      formData.append("companyId", self.queryModel.companyId);
+      formData.append("subordinate", self.queryModel.subordinate);
+      formData.append("distinct", self.queryModel.distinct);
+
+      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);
+      }
+
+      temperatureRecordApi
+        .getCompanyRecordReport(formData)
+        .then(function(response) {
+          self.loading = false;
+
+          var jsonData = response.data.data.list;
+
+          self.tableData = jsonData;
+          self.tableHeight = window.innerHeight - 320;
+        })
+        .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 = "";
+      this.queryModel.temperatureEnd = "";
+      this.queryModel.subordinate = false;
+      this.queryModel.distinct = false;
+    },
+    onDetailModalClose(refreshed) {
+      //保存成功后回调
+      this.showModal = false;
+
+      if (refreshed) {
+        this.changePage(this.pageIndex);
+      }
+    },
+    //初始化日期
+    getCurrentMonthFirst() {
+      var self = this;
+      var date = new Date();
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      if (month < 10) {
+        month = "0" + month;
+      }
+      var data = date.getDate();
+      if (data < 10) {
+        data = "0" + data;
+      }
+
+      var startTime = year + "-" + month + "-" + data;
+
+      self.queryModel.timeRanges = startTime;
+    },
+
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "总人数";
+          return;
+        }
+        const values = data.map(item => Number(item[column.property]));
+        if (!values.every(value => isNaN(value))) {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr);
+            if (!isNaN(value)) {
+              return prev + curr;
+            } else {
+              return prev;
+            }
+          }, 0);
+          sums[index] += " 人";
+        } else {
+          sums[index] = "";
+        }
+
+        if (index >= 5) {
+          sums[index] = "";
+        }
+      });
+
+      return sums;
+    }
+  },
+  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>

+ 138 - 84
src/views/business/workAttendance-list.vue

@@ -5,7 +5,7 @@
     <el-breadcrumb separator=">">
       <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
       <el-breadcrumb-item>
-        <a href="#">系统管理</a>
+        <a href="#">门禁管理</a>
       </el-breadcrumb-item>
       <el-breadcrumb-item>
         <a href="/workAttendance">考勤统计</a>
@@ -24,58 +24,72 @@
     >
       <div>
         <el-row>
-        <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 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-row>
         <el-row>
-        <el-form-item label="姓名" prop="name">
-          <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
+          <el-form-item label="姓名" prop="name">
+            <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
+          </el-form-item>
+          <el-form-item v-if="position1Show" :label="position1" prop="position1">
+          <el-input type="text" size="mini" v-model="queryModel.position1"></el-input>
         </el-form-item>
-        <el-form-item label="工号" prop="jobNumber">
-          <el-input type="text" size="mini" v-model="queryModel.jobNumber"></el-input>
+        <el-form-item v-if="position2Show" :label="position2" prop="position2">
+          <el-input type="text" size="mini" v-model="queryModel.position2"></el-input>
         </el-form-item>
-        <el-form-item>
-           <el-button
-            type="primary"
-            size="mini"
-            style="margin-left: 8px"
-            @click="handleQuery('queryForm')"
-          >查询</el-button>&nbsp;
-          <el-button
-            type="info"
-            size="mini"
-            style="margin-left: 8px"
-            @click="handleReset('queryForm')"
-          >重置</el-button>
+        <el-form-item v-if="position3Show" :label="position3" prop="position3">
+          <el-input type="text" size="mini" v-model="queryModel.position3"></el-input>
         </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              size="mini"
+              style="margin-left: 8px"
+              @click="handleQuery('queryForm')"
+            >查询</el-button>&nbsp;
+            <el-button
+              type="info"
+              size="mini"
+              style="margin-left: 8px"
+              @click="handleReset('queryForm')"
+            >重置</el-button>
+          </el-form-item>
         </el-row>
       </div>
+      <div>
+        <el-form-item v-if="position4Show" :label="position4" prop="position4">
+          <el-input type="text" size="mini" v-model="queryModel.position4"></el-input>
+        </el-form-item>
+        <el-form-item v-if="position5Show" :label="position5" prop="position5">
+          <el-input type="text" size="mini" v-model="queryModel.position5"></el-input>
+        </el-form-item>
+      </div>
     </el-form>
     <el-divider></el-divider>
     <el-row class="button-group">
@@ -96,9 +110,11 @@
       style="width: 100%">
       <el-table-column label="序号" fixed="left" type="index" :index="indexMethod"></el-table-column>
       <el-table-column label="姓名" fixed="left" prop="name"></el-table-column>
-      <el-table-column label="单位" prop="company"></el-table-column>
-      <el-table-column label="部门" prop="department"></el-table-column>
-      <el-table-column label="工号" prop="jobNumber"></el-table-column>
+      <el-table-column prop="position1" :label="position1" v-if="position1Show"></el-table-column>
+      <el-table-column prop="position2" :label="position2" v-if="position2Show"></el-table-column>
+      <el-table-column prop="position3" :label="position3" v-if="position3Show"></el-table-column>
+      <el-table-column prop="position4" :label="position4" v-if="position4Show"></el-table-column>
+      <el-table-column prop="position5" :label="position5" v-if="position5Show"></el-table-column>
       <el-table-column label="出勤天数" prop="workDays"></el-table-column>
       <el-table-column label="休息天数" prop="restDays"></el-table-column>
       <el-table-column label="迟到次数" prop="lateNum"></el-table-column>
@@ -110,11 +126,11 @@
         <el-table-column :label="col.label" :prop="col.name" :key="col.name" width="200px">
           <template slot-scope="{row}">
             <div style="display:flex;flex-direction:column;">
-            <template v-for="(item,index) in row.workAttendanceMap[col.name]">
+              <template v-for="(item,index) in row.workAttendanceMap[col.name]">
                 <div v-html="showItem(item)" :key="index"></div>
-            </template>
+              </template>
             </div>
-          </template> 
+          </template>
         </el-table-column>
       </template>
     </el-table>
@@ -131,6 +147,7 @@
 <script>
 import Constant from "@/constant";
 import workAttendanceApi from "@/api/business/workAttendance";
+import companyPositionApi from "@/api/base/companyPosition";
 import companyInfoApi from "@/api/base/companyInfo";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
@@ -149,8 +166,13 @@ export default {
       queryModel: {
         companyId: "",
         timeRanges: "",
-        name:"",
-        jobNumber:""
+        name: "",
+        jobNumber: "",
+        position1: "",
+        position2: "",
+        position3: "",
+        position4: "",
+        position5: ""
       },
       loading: false,
       tableData: [],
@@ -178,7 +200,17 @@ export default {
       },
       downloadUrl: "",
       dayColumns: [],
-      tmplKey: ""
+      tmplKey: "",
+      position1: "",
+      position2: "",
+      position3: "",
+      position4: "",
+      position5: "",
+      position1Show: false,
+      position2Show: false,
+      position3Show: false,
+      position4Show: false,
+      position5Show: false
     };
   },
   created() {
@@ -192,6 +224,30 @@ export default {
       }
     });
 
+    companyPositionApi.detailForCompany().then(function(response) {
+      var jsonData = response.data.data;
+      if (jsonData.position1Name != null && jsonData.position1Name != "") {
+        self.position1 = jsonData.position1Name;
+        self.position1Show = true;
+      }
+      if (jsonData.position2Name != null && jsonData.position2Name != "") {
+        self.position2 = jsonData.position2Name;
+        self.position2Show = true;
+      }
+      if (jsonData.position3Name != null && jsonData.position3Name != "") {
+        self.position3 = jsonData.position3Name;
+        self.position3Show = true;
+      }
+      if (jsonData.position4Name != null && jsonData.position4Name != "") {
+        self.position4 = jsonData.position4Name;
+        self.position4Show = true;
+      }
+      if (jsonData.position5Name != null && jsonData.position5Name != "") {
+        self.position5 = jsonData.position5Name;
+        self.position5Show = true;
+      }
+    });
+
     this.getCurrentMonthFirst();
   },
   methods: {
@@ -209,7 +265,6 @@ export default {
 
       formData.append("companyId", self.queryModel.companyId);
       formData.append("name", self.queryModel.name);
-      formData.append("jobNumber", self.queryModel.jobNumber);
 
       var startDate = "";
       var endDate = "";
@@ -223,6 +278,11 @@ export default {
 
       formData.append("startDate", startDate);
       formData.append("endDate", endDate);
+      formData.append("position1", self.queryModel.position1);
+      formData.append("position2", self.queryModel.position2);
+      formData.append("position3", self.queryModel.position3);
+      formData.append("position4", self.queryModel.position4);
+      formData.append("position5", self.queryModel.position5);
       
       self.downloadLoading = true;
 
@@ -254,44 +314,39 @@ export default {
     showItem(item){
       var content = [];
 
-      var arr = item.recordTime.split(' ');
+      var arr = item.recordTime.split(" ");
 
-      if(arr.length>1){
+      if (arr.length > 1) {
         content.push(arr[1]);
-      }
-      else{
+      } else {
         content.push(arr[0]);
       }
 
       content.push(" ");
 
-      if(item.classifier==1){
+      if (item.classifier == 1) {
         content.push("上班");
-      }
-      else{
+      } else {
         content.push("下班");
       }
 
       var fontColor = "";
 
-      if(item.result=="0"){
+      if (item.result == "0") {
         content.push("缺卡");
         fontColor = "red";
-      }
-      else if(item.result=="1"){
+      } else if (item.result == "1") {
         content.push("打卡");
         fontColor = "green";
-      }
-      else if(item.result=="2"){
+      } else if (item.result == "2") {
         content.push("迟到");
-      }
-      else if(item.result=="3"){
+      } else if (item.result == "3") {
         content.push("早退");
       }
 
-      return `<font color='${fontColor}'>` + content.join("") + '</font>';
+      return `<font color='${fontColor}'>` + content.join("") + "</font>";
     },
-    handleQuery(){
+    handleQuery() {
       var self = this;
 
       this.$refs["queryForm"].validate(valid => {
@@ -315,7 +370,6 @@ export default {
 
           formData.append("companyId", self.queryModel.companyId);
           formData.append("name", self.queryModel.name);
-          formData.append("jobNumber", self.queryModel.jobNumber);
 
           var startDate = "";
           var endDate = "";
@@ -329,12 +383,17 @@ export default {
 
           formData.append("startDate", startDate);
           formData.append("endDate", endDate);
-          
+          formData.append("position1", self.queryModel.position1);
+          formData.append("position2", self.queryModel.position2);
+          formData.append("position3", self.queryModel.position3);
+          formData.append("position4", self.queryModel.position4);
+          formData.append("position5", self.queryModel.position5);
+
           workAttendanceApi.exportXls(formData).then(function(response) {
             var jsonData = response.data;
 
             self.downloadLoading = false;
-            
+
             if (jsonData.result) {
               self.$message({
                 type: "success",
@@ -357,20 +416,15 @@ export default {
       var self = this;
       var date = new Date();
       date.setDate(1);
-      var month = parseInt(date.getMonth() + 1)
-      var startTime =
-        date.getFullYear() + "-" + month + "-" + date.getDate();
+      var month = parseInt(date.getMonth() + 1);
+      var startTime = date.getFullYear() + "-" + month + "-" + date.getDate();
 
       var lastDate = new Date();
       //设置为第一天
       lastDate.setDate(1);
-      var lastMonth = parseInt(lastDate.getMonth() + 2)
+      var lastMonth = parseInt(lastDate.getMonth() + 2);
       var endTime =
-        lastDate.getFullYear() +
-        "-" +
-        lastMonth +
-        "-" +
-        lastDate.getDate();
+        lastDate.getFullYear() + "-" + lastMonth + "-" + lastDate.getDate();
       self.queryModel.timeRanges = [startTime, endTime];
     }
   },