Browse Source

人员健康情况上报

yanliming 4 years ago
parent
commit
b80261939a

+ 5 - 1
src/api/base/personHealthLedger.js

@@ -58,6 +58,10 @@ function gpsHistoryList(formData) {
   return request.post(constant.serverUrl + "/base/personHealthLedger/gpsHistoryList", formData);
 }
 
+function healthLedgerDateExportXls(formData) {
+  return request.post(constant.serverUrl + "/base/personHealthLedger/healthLedgerDateExportXls", formData);
+}
+
 export default {
-  pageList, create, edit, add, update, remove, batchRemove, exportXls, pageListAll,exportXlsAll,gpsHistoryList
+  pageList, create, edit, add, update, remove, batchRemove, exportXls, pageListAll,exportXlsAll,gpsHistoryList,healthLedgerDateExportXls
 }

+ 143 - 0
src/views/base/personHealthLedger-list-detalExport.vue

@@ -0,0 +1,143 @@
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    :append-to-body="true"
+    width="40%"
+    style="text-align:left;"
+    @close="closeDialog"
+  >
+    <div class="user-panel" v-loading="loading">
+      <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
+      <el-form-item label="所属公司" prop="schoolId">
+          <el-select-tree
+            :props="props"
+            :options="companyResult"
+            v-model="formModel.schoolId"
+            height="200"
+          ></el-select-tree>
+        </el-form-item>
+        <el-form-item label="时间范围" prop="timeRanges">
+        <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="exportXls" :loading="submitting">导出</el-button>
+    </span>
+  </el-dialog>
+
+</template>
+<script>
+import companyInfoApi from "@/api/base/companyInfo";
+import personHealthLedgerApi from "@/api/base/personHealthLedger";
+import SelectTree from "@/components/SelectTree";
+export default {
+  props: ["businessKey", "title"],
+  data() {
+      return{
+        formModel: {},
+        ruleValidate: {
+          schoolId: [{ required: true, message: "公司不能为空", trigger: "blur" }],
+          timeRanges: [{ required: true, message: "时间范围不能为空", trigger: "blur" }],
+        },
+        showDialog: true,
+        companyResult: [],
+        loading: false,
+        submitting: false,
+        downloadLoading: false,
+        props: {
+          // 配置项(必选)
+          value: "id",
+          label: "name",
+          children: "children",
+        },
+      }
+  },
+  methods:{
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    loadTree() {
+      var formData = new FormData();
+      companyInfoApi.loadChildren(formData).then((resp) => {
+        var jsonData = resp.data;
+
+        if (jsonData.result) {
+          this.treeData = jsonData.data;
+        } else {
+          this.$message.error(jsonData.message + "");
+        }
+      });
+    },
+    exportXls() {
+      var self = this;
+
+      //导出
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          self.downloadLoading = true;
+          self.loading = true;
+
+          var formData = new FormData();
+
+          formData.append("type", "student");
+          formData.append("classId", self.formModel.schoolId);
+          formData.append("timeRanges", this.formModel.timeRanges);
+
+          personHealthLedgerApi.healthLedgerDateExportXls(formData).then(function(response) {
+            var jsonData = response.data;
+
+            self.downloadLoading = false;
+            self.loading = false;
+
+            if (jsonData.result) {
+              self.$message({
+                type: "success",
+                showClose: true,
+                message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
+                dangerouslyUseHTMLString: true,
+                duration: 30000
+              });
+            } else {
+              self.$message({
+                type: "warning",
+                message: jsonData.message
+              });
+            }
+          });
+        }
+      });
+    }
+  },
+  created() {
+    var self = this;
+    companyInfoApi.list().then(function (response) {
+      var jsonData = response.data;
+      if (jsonData.result) {
+        self.companyResult = jsonData.data;
+      }
+    });
+
+    this.loadTree();
+  },
+  components: {
+    "el-select-tree": SelectTree
+  }
+}
+</script>

+ 28 - 1
src/views/base/personHealthLedger-list.vue

@@ -89,6 +89,14 @@
         :loading="downloadLoading"
         @click="exportXls"
       >导出健康打卡情况</el-button>
+      <el-button
+        type="success"
+        size="small"
+        plain
+        icon="el-icon-download"
+        :loading="downloadLoading"
+        @click="handleExportDetail"
+      >导出健康信息明细表</el-button>
     </el-row>
     <el-table
       ref="formTable"
@@ -161,6 +169,12 @@
       :title="modalTitle"
       @close="onDetailModalClose"
     ></personHealthLedger-detail>
+    <personHealthLedger-list-detalExport
+      v-if="showModal2"
+      :businessKey="businessKey"
+      :title="modalTitle2"
+      @close="onDetailModalClose2"
+    ></personHealthLedger-list-detalExport>
     <el-dialog
         :visible.sync="showMapDialog"
         title="历史位置"
@@ -208,6 +222,7 @@ import SelectTree from "@/components/SelectTree";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
 import pageUtil from "@/utils/page";
+import personHealthLedgerListDetalExport from "./personHealthLedger-list-detalExport";
 import VehicleHistoryList from './vehicleHistory-list';
 
 export default {
@@ -239,7 +254,9 @@ export default {
       pageSizeList: [10, 20, 30],
       multipleSelection: [],
       showModal: false,
+      showModal2: false,
       modalTitle: "",
+      modalTitle2: "",
       businessKey: "",
       healthData: [],
       companyResult: [],
@@ -333,6 +350,11 @@ export default {
         }
       });
     },
+    handleExportDetail() {
+      this.modalTitle2 = "导出健康信息明细表";
+      this.businessKey = "";
+      this.showModal2 = true;
+    },
     changePage(pageIndex) {
       var self = this;
 
@@ -416,6 +438,10 @@ export default {
         this.changePage(this.pageIndex);
       }
     },
+    onDetailModalClose2(refreshed) {
+      //保存成功后回调
+      this.showModal2 = false;
+    },
     setDefaultTime() {
       var self = this;
       var date = new Date();
@@ -477,7 +503,8 @@ export default {
   },
   components: {
     "el-select-tree": SelectTree,
-    "vehicle-history-list" : VehicleHistoryList
+    "vehicle-history-list" : VehicleHistoryList,
+    "personHealthLedger-list-detalExport": personHealthLedgerListDetalExport,
   }
 };
 </script>