Explorar el Código

考勤完善。

zhengqiang hace 4 años
padre
commit
d99f14b840

+ 1 - 1
src/routers/modules/business.js

@@ -87,7 +87,7 @@ var routers = [
                 component: () => import('@/views/business/workScheduleReport.vue'),
                 meta: {
                         roles: ["admin"],
-                        title: '考勤记录'
+                        title: '班次考勤表'
                 }
         },
 ]

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

@@ -390,6 +390,7 @@ export default {
       formData.append("faceImage", self.queryModel.faceImage);
       formData.append("timeRanges", self.queryModel.timeRanges);
       formData.append("matchStatus", self.queryModel.matchStatus);
+      formData.append("personId", self.queryModel.personId);
       formData.append("personName", self.queryModel.personName);
       formData.append("deviceNo", self.queryModel.deviceNo);
       formData.append("aliasName", self.queryModel.aliasName);

+ 1 - 1
src/views/base/workSchedule-company.vue

@@ -142,7 +142,7 @@ export default {
   created() {
     var self = this;
 
-    companyInfoApi.list({scope:"all"}).then(function(response) {
+    companyInfoApi.list().then(function(response) {
       var jsonData = response.data;
       if (jsonData.result) {
         self.companyResult = jsonData.data;

+ 2 - 2
src/views/base/workSchedule-detail.vue

@@ -75,7 +75,7 @@
             placeholder="请输入上班延迟分钟"
             style="width: 200px"
           >
-            <template slot="append">分钟</template>
+            <template slot="append">分钟算迟到</template>
           </el-input>
         </el-form-item>
         <el-form-item label="下班时间" prop="endTime">
@@ -92,7 +92,7 @@
             placeholder="请输入下班提前分钟"
             style="width: 200px"
           >
-            <template slot="append">分钟</template>
+            <template slot="append">分钟算早退</template>
           </el-input>
         </el-form-item>
         <el-form-item label="下班延迟" prop="endDelayMinutes">

+ 37 - 1
src/views/base/workSchedule-list.vue

@@ -68,6 +68,15 @@
         @click="handleBatchDelete"
         >删除选中项</el-button
       >
+      <el-button
+        type="primary"
+        size="small"
+        plain
+        icon="el-icon-edit"
+        :loading="loading"
+        @click="handleBatchUpdate"
+        v-show="batchUpdateVisible"
+      >重新生成考勤数据</el-button>
     </el-row>
     <el-table
       :data="tableData"
@@ -157,19 +166,28 @@
       :title="modalTitle"
       @close="onDetailModalClose"
     ></workSchedule-company>
+    <workSchedule-update
+      v-if="showModal2"
+      title="更新考勤记录"
+      :multipleSelection="multipleSelection"
+      @close="showModal2=false"
+    ></workSchedule-update>
   </div>
 </template>
 <script>
 import Constant from "@/constant";
 import WorkScheduleDetail from "./workSchedule-detail";
 import WorkScheduleCompany from "./workSchedule-company";
+import WorkScheduleUpdate from "./workSchedule-update";
 import workScheduleApi from "@/api/base/workSchedule";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
 import companyInfoApi from "@/api/base/companyInfo";
 import SelectTree from "@/components/SelectTree";
+import permissionApi from "@/api/sys/permission";
 
 export default {
+  name: "baseWorkScheduleList",
   data() {
     var self = this;
 
@@ -213,6 +231,8 @@ export default {
         label: "name",
         children: "children"
       },
+      batchUpdateVisible: false,
+      showModal2: false
     };
   },
   created() {
@@ -224,6 +244,11 @@ export default {
         self.companyResult = jsonData.data;
       }
     });
+
+    permissionApi.hasPermission("post","/business/workScheduleReport/batchUpdate")
+    .then(response=>{
+      this.batchUpdateVisible = response.data.result;
+    });
   },
   methods: {
     changePage(pageIndex) {
@@ -358,7 +383,17 @@ export default {
       if (refreshed) {
         this.changePage(this.pageIndex);
       }
-    },
+    },    
+    handleBatchUpdate() {
+      var self = this;
+
+      if(this.multipleSelection.length==0){
+        self.$message.warning("请先选择考勤班次!");
+        return;
+      }
+
+      this.showModal2 = true;
+    }
   },
   mounted: function () {
     this.changePage(1);
@@ -366,6 +401,7 @@ export default {
   components: {
     "workSchedule-detail": WorkScheduleDetail,
     "workSchedule-company": WorkScheduleCompany,
+    "workSchedule-update": WorkScheduleUpdate,
     "el-select-tree": SelectTree
   },
 };

+ 160 - 0
src/views/base/workSchedule-update.vue

@@ -0,0 +1,160 @@
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align: left"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+  >
+    <div class="user-panel"
+    v-loading="loading"
+    :element-loading-text="loadingText">
+      <el-form
+        ref="form"
+        :model="formModel"
+        :rules="ruleValidate"
+        :label-width="'120px'"
+      >
+        <el-form-item label="更新班次">
+          <el-input :value="scheduleName" readonly></el-input>
+        </el-form-item>
+        <el-form-item label="考勤时段" prop="companyId">
+          <el-date-picker
+            v-model="formModel.timeRanges"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            value-format="yyyy-MM-dd"
+            size="mini"
+          ></el-date-picker>
+        </el-form-item>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="loading">更新</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import Constant from "@/constant";
+import workScheduleApi from "@/api/base/workSchedule";
+import companyInfoApi from "@/api/base/companyInfo";
+import workScheduleReportApi from "@/api/business/workScheduleReport";
+import SelectTree from "@/components/SelectTree";
+
+export default {
+  props: ["multipleSelection", "title"],
+  computed: {
+    scheduleName() {
+      return this.multipleSelection
+        .map((record) => {
+          return record.name;
+        })
+        .join(",");
+    },
+  },
+  data() {
+    return {
+      formModel: {
+        timeRanges: null,
+      },
+      ruleValidate: {
+        timeRanges: [
+          { required: true, message: "考勤时段不能为空", trigger: "blur" },
+        ],
+      },
+      showDialog: true,
+      loading: false,
+      loadingText: ""
+    };
+  },
+  created() {
+    var self = this;
+  },
+  methods: {
+    //初始化日期
+    getCurrentMonthFirst() {
+      var self = this;
+      var date = new Date();
+      date.setDate(1);
+      var month = parseInt(date.getMonth() + 1);
+      var startTime = date.getFullYear() + "-" + month + "-" + date.getDate();
+
+      date.setMonth(date.getMonth() + 1);
+      var lastDate = new Date(date.getTime() - 1000 * 60 * 60 * 24);
+
+      var endTime =
+        lastDate.getFullYear() + "-" + month + "-" + lastDate.getDate();
+
+      self.formModel.timeRanges = [startTime, endTime];
+    },
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    handleSubmit() {
+      var self = this;
+
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          // self
+          //   .$confirm("是否确认更新考勤数据?", "提示", {
+          //     confirmButtonText: "确定",
+          //     cancelButtonText: "取消",
+          //     type: "warning",
+          //   })
+          //   .then(() => {
+              var formData = new FormData();
+
+              var workScheduleIds = this.multipleSelection
+                .map((record) => {
+                  return record.id;
+                })
+                .join(",");
+
+              formData.append("workScheduleIds", workScheduleIds);
+              formData.append("startDate", this.formModel.timeRanges[0]);
+              formData.append("endDate", this.formModel.timeRanges[1]);
+
+              self.loading = true;
+              self.loadingText = "考勤数据生成中...";
+
+              workScheduleReportApi
+                .batchUpdate(formData)
+                .then(function (response) {
+                  var jsonData = response.data;
+
+                  self.loading = false;
+
+                  if (jsonData.result) {
+                    self.$message({
+                      type: "success",
+                      message: jsonData.data + "",
+                    });
+
+                    self.closeDialog();
+                  } else {
+                    self.$message({
+                      type: "warning",
+                      message: jsonData.message + "",
+                    });
+                  }
+                });
+            // });
+        }
+      });
+    },
+  },
+  mounted: function () {
+    var self = this;
+    this.getCurrentMonthFirst();
+  },
+};
+</script>

+ 1 - 1
src/views/business/workScheduleReport.vue

@@ -161,7 +161,7 @@ export default {
       ruleValidate: {
         companyId: [{ required: true, message: "不能为空", trigger: "blur" }],
         timeRanges: [
-          { required: true, message: "请选择事件范围", trigger: "blur" }
+          { required: true, message: "请选择时间范围", trigger: "blur" }
         ]
       },
       queryModel: {