You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
6.4 KiB
Vue
209 lines
6.4 KiB
Vue
<template>
|
|
<!-- 员工工资 -->
|
|
<div>
|
|
<div class="staffRanking_header padding-bottom-xs">
|
|
<div>
|
|
<span class="demonstration padding-left-xs">选择日</span>
|
|
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
|
|
</el-date-picker>
|
|
<el-button type="primary" size="mini" @click="getData">查询</el-button>
|
|
</div>
|
|
<div class="block">
|
|
</div>
|
|
</div>
|
|
<div class="padding-left-xs">
|
|
<Forms :lists='tableDate' :pay='payLists' ref="form"></Forms>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { storeDailys, exportachi, exportachiwhole } from "@/api/statistics.js";
|
|
import { partten } from "../../../../partten/index";
|
|
import perform from "./examine/index";
|
|
import Forms from './form.vue'
|
|
export default {
|
|
name:"storeDaily",
|
|
components: { perform ,Forms},
|
|
data() {
|
|
return {
|
|
headOffice: sessionStorage.getItem("headOffice") * 1,
|
|
days: "",
|
|
payLists:[],
|
|
tableDate: [],
|
|
month: partten.months,
|
|
queryForm: {},
|
|
pickerOptions: {
|
|
//组件限制方法
|
|
onPick: ({ maxDate, minDate }) => {
|
|
this.choiceDate = minDate.getTime();
|
|
if (maxDate) {
|
|
this.choiceDate = "";
|
|
}
|
|
},
|
|
disabledDate: (time) => {
|
|
const self = this;
|
|
if (!!self.choiceDate) {
|
|
const startDay =
|
|
(new Date(self.choiceDate).getDate() - 1) * 24 * 3600 * 1000;
|
|
const endDay =
|
|
(new Date(
|
|
new Date(self.choiceDate).getFullYear(),
|
|
new Date(self.choiceDate).getMonth() + 1,
|
|
0
|
|
).getDate() -
|
|
new Date(self.choiceDate).getDate()) *
|
|
24 *
|
|
3600 *
|
|
1000;
|
|
let minTime = self.choiceDate - startDay;
|
|
let maxTime = self.choiceDate + endDay;
|
|
return time.getTime() < minTime || time.getTime() > maxTime;
|
|
}
|
|
},
|
|
},
|
|
};
|
|
},
|
|
methods: {
|
|
//导出方法
|
|
exit() {
|
|
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD");
|
|
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD");
|
|
let form = { startDate: date1, endDate: date2 };
|
|
exportachi(form).then((res) => {
|
|
let blob = new Blob([res]);
|
|
var a = document.createElement("a");
|
|
var url = window.URL.createObjectURL(blob);
|
|
console.log(url);
|
|
a.href = url;
|
|
a.download = "员工业绩导出表.xlsx";
|
|
a.click();
|
|
window.URL.revokeObjectURL(url);
|
|
});
|
|
},
|
|
exits() {
|
|
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD");
|
|
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD");
|
|
let form = { startDate: date1, endDate: date2 };
|
|
exportachiwhole(form).then((res) => {
|
|
let blob = new Blob([res]);
|
|
var a = document.createElement("a");
|
|
var url = window.URL.createObjectURL(blob);
|
|
console.log(url);
|
|
a.href = url;
|
|
a.download = "员工工资明细导出表.xlsx";
|
|
a.click();
|
|
window.URL.revokeObjectURL(url);
|
|
});
|
|
},
|
|
changeMonth(res) {
|
|
if(!res){
|
|
this.payLists = null
|
|
this.tableDate = []
|
|
return
|
|
}
|
|
this.days = res;
|
|
this.getData();
|
|
},
|
|
getData() {
|
|
this.$refs.form.loading = true
|
|
this.queryForm.startDate = this.days[0];
|
|
this.queryForm.endDate = this.days[1];
|
|
this.queryForm.storeId = sessionStorage.getItem("storeId");
|
|
storeDailys(this.queryForm).then((res) => {
|
|
this.$refs.form.loading = false
|
|
if (res.code == "000000") {
|
|
console.log('这是什么----->',res.data.payLists)
|
|
this.tableDate = res.data.lists;
|
|
this.payLists = res.data.payLists
|
|
if(this.payLists == null){
|
|
this.payLists = []
|
|
}
|
|
console.log('this.payLists---->',this.payLists)
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
//指定列求和
|
|
//数组按对应字段合计返回方法
|
|
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 (column.property == "baseSalary") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return (prev + curr).toFixed(2) * 1;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else if (column.property == "zyj") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return (prev + curr).toFixed(2) * 1;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else if (column.property == "totalWages") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return (prev + curr).toFixed(2) * 1;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else if (column.property == "totaltc") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return (prev + curr).toFixed(2) * 1;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
});
|
|
return sums;
|
|
},
|
|
},
|
|
created() {
|
|
let sDate = this.formatTime(new Date(), "YYYY-MM-DD");
|
|
let eDate = this.formatTime(new Date(), "YYYY-MM-DD");
|
|
this.days = [sDate, eDate];
|
|
this.$nextTick(()=>{
|
|
this.getData();
|
|
})
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
.staffRanking_header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
</style>
|