|
@@ -1,7 +1,9 @@
|
|
|
<template>
|
|
|
- <div v-loading="downloadLoading"
|
|
|
+ <div
|
|
|
+ v-loading="downloadLoading"
|
|
|
element-loading-text="加载中"
|
|
|
- element-loading-spinner="el-icon-loading">
|
|
|
+ element-loading-spinner="el-icon-loading"
|
|
|
+ >
|
|
|
<el-breadcrumb separator=">">
|
|
|
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
|
|
|
<el-breadcrumb-item>
|
|
@@ -25,7 +27,7 @@
|
|
|
<div>
|
|
|
<el-row>
|
|
|
<el-form-item label="单位" prop="companyId">
|
|
|
- <el-select
|
|
|
+ <!-- <el-select
|
|
|
v-model="queryModel.companyId"
|
|
|
size="mini"
|
|
|
filterable
|
|
@@ -38,7 +40,14 @@
|
|
|
:label="company.name"
|
|
|
:value="company.id"
|
|
|
></el-option>
|
|
|
- </el-select>
|
|
|
+ </el-select>-->
|
|
|
+ <el-select-tree
|
|
|
+ :props="props"
|
|
|
+ :options="optionData"
|
|
|
+ :value="queryModel.companyId"
|
|
|
+ @getValue="getSelectedValue($event)"
|
|
|
+ height="200"
|
|
|
+ ></el-select-tree>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="统计区间" prop="timeRanges">
|
|
|
<el-date-picker
|
|
@@ -58,14 +67,14 @@
|
|
|
<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 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-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>
|
|
|
<el-button
|
|
|
type="primary"
|
|
@@ -102,12 +111,7 @@
|
|
|
@click="exportXls"
|
|
|
>导出数据</el-button>
|
|
|
</el-row>
|
|
|
- <el-table
|
|
|
- ref="table"
|
|
|
- stripe
|
|
|
- :data="tableData"
|
|
|
- :height="tableHeight"
|
|
|
- style="width: 100%">
|
|
|
+ <el-table ref="table" stripe :data="tableData" :height="tableHeight" 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 prop="position1" :label="position1" v-if="position1Show"></el-table-column>
|
|
@@ -149,6 +153,8 @@ import Constant from "@/constant";
|
|
|
import workAttendanceApi from "@/api/business/workAttendance";
|
|
|
import companyPositionApi from "@/api/base/companyPosition";
|
|
|
import companyInfoApi from "@/api/base/companyInfo";
|
|
|
+import SelectTree from "@/components/SelectTree";
|
|
|
+
|
|
|
import NProgress from "nprogress"; // progress bar
|
|
|
import "nprogress/nprogress.css"; // progress bar style
|
|
|
|
|
@@ -190,7 +196,7 @@ export default {
|
|
|
downloadLoading: false,
|
|
|
tableHeight: "",
|
|
|
timeRangesDefaultTime: [],
|
|
|
- companyResult: "",
|
|
|
+ companyResult: [],
|
|
|
editorOption: {
|
|
|
modules: {
|
|
|
toolbar: "title" // 设置文本编辑器的头部是否展示
|
|
@@ -210,9 +216,28 @@ export default {
|
|
|
position2Show: false,
|
|
|
position3Show: false,
|
|
|
position4Show: false,
|
|
|
- position5Show: false
|
|
|
+ position5Show: false,
|
|
|
+ treeData: [],
|
|
|
+ props: {
|
|
|
+ // 配置项(必选)
|
|
|
+ value: "id",
|
|
|
+ label: "name",
|
|
|
+ children: "children"
|
|
|
+ }
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ /* 转树形数据 */
|
|
|
+ optionData() {
|
|
|
+ let cloneData = JSON.parse(JSON.stringify(this.companyResult)); // 对源数据深度克隆
|
|
|
+ return cloneData.filter(father => {
|
|
|
+ // 循环所有项,并添加children属性
|
|
|
+ let branchArr = cloneData.filter(child => father.id == child.parentId); // 返回每一项的子级数组
|
|
|
+ branchArr.length > 0 ? (father.children = branchArr) : ""; //给父级添加一个children属性,并赋值
|
|
|
+ return father.parentId == null; //返回第一层
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
created() {
|
|
|
var self = this;
|
|
|
companyInfoApi.list().then(function(response) {
|
|
@@ -249,10 +274,43 @@ export default {
|
|
|
});
|
|
|
|
|
|
this.getCurrentMonthFirst();
|
|
|
+ this.loadTree();
|
|
|
},
|
|
|
methods: {
|
|
|
- indexMethod(index){
|
|
|
- return (this.pageIndex-1)*this.pageSize + (index+1);
|
|
|
+ getSelectedValue(value) {
|
|
|
+ this.queryModel.companyId = value;
|
|
|
+ },
|
|
|
+ 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 + "");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ loadChildren(tree, treeNode, resolve) {
|
|
|
+ console.log(tree);
|
|
|
+
|
|
|
+ var formData = new FormData();
|
|
|
+ formData.append("parentId", tree.id);
|
|
|
+
|
|
|
+ companyInfoApi.loadChildren(formData).then(resp => {
|
|
|
+ var jsonData = resp.data;
|
|
|
+
|
|
|
+ if (jsonData.result) {
|
|
|
+ resolve(jsonData.data);
|
|
|
+ } else {
|
|
|
+ this.$message.error(jsonData.message + "");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ indexMethod(index) {
|
|
|
+ return (this.pageIndex - 1) * this.pageSize + (index + 1);
|
|
|
},
|
|
|
changePage(pageIndex) {
|
|
|
var self = this;
|
|
@@ -263,6 +321,9 @@ export default {
|
|
|
formData.append("pageIndex", self.pageIndex);
|
|
|
formData.append("pageSize", self.pageSize);
|
|
|
|
|
|
+ if (self.queryModel.companyId == null) {
|
|
|
+ self.queryModel.companyId = "";
|
|
|
+ }
|
|
|
formData.append("companyId", self.queryModel.companyId);
|
|
|
formData.append("name", self.queryModel.name);
|
|
|
|
|
@@ -283,14 +344,14 @@ export default {
|
|
|
formData.append("position3", self.queryModel.position3);
|
|
|
formData.append("position4", self.queryModel.position4);
|
|
|
formData.append("position5", self.queryModel.position5);
|
|
|
-
|
|
|
+
|
|
|
self.downloadLoading = true;
|
|
|
|
|
|
workAttendanceApi.statList(formData).then(function(response) {
|
|
|
var jsonData = response.data;
|
|
|
|
|
|
self.downloadLoading = false;
|
|
|
-
|
|
|
+
|
|
|
if (jsonData.result) {
|
|
|
self.tableData = jsonData.data.data;
|
|
|
self.totalPages = jsonData.data.totalPage;
|
|
@@ -311,7 +372,7 @@ export default {
|
|
|
this.pageSize = pageSize;
|
|
|
this.changePage(1);
|
|
|
},
|
|
|
- showItem(item){
|
|
|
+ showItem(item) {
|
|
|
var content = [];
|
|
|
|
|
|
var arr = item.recordTime.split(" ");
|
|
@@ -368,6 +429,9 @@ export default {
|
|
|
|
|
|
var formData = new FormData();
|
|
|
|
|
|
+ if (self.queryModel.companyId == null) {
|
|
|
+ self.queryModel.companyId = "";
|
|
|
+ }
|
|
|
formData.append("companyId", self.queryModel.companyId);
|
|
|
formData.append("name", self.queryModel.name);
|
|
|
|
|
@@ -428,7 +492,11 @@ export default {
|
|
|
self.queryModel.timeRanges = [startTime, endTime];
|
|
|
}
|
|
|
},
|
|
|
- mounted: function() {}
|
|
|
+ mounted: function() {},
|
|
|
+
|
|
|
+ components: {
|
|
|
+ "el-select-tree": SelectTree
|
|
|
+ }
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|