268 lines
9.9 KiB
Vue
268 lines
9.9 KiB
Vue
<!--
|
||
* @Author: zhp
|
||
* @Date: 2024-01-24 15:15:24
|
||
* @LastEditTime: 2024-03-22 10:14:23
|
||
* @LastEditors: zhp
|
||
* @Description:
|
||
-->
|
||
<template>
|
||
<div class="app-container">
|
||
<div>
|
||
<!-- <el-alert title="自定义 close-text" type="warning" close-text="知道了">
|
||
</el-alert> -->
|
||
<el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
|
||
<el-form-item label="日" prop="reportTime">
|
||
<el-date-picker v-model="reportTime" @change="changeTime" type="date" placeholder="选择日期">
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button v-if="this.$auth.hasPermi('report:glass-month:query')" type="primary" size="small"
|
||
@click="getDataList">查询</el-button>
|
||
<el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain
|
||
@click="handleExport">导出</el-button>
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
<inputTable :date="date" :data="tableData" :time="[startTimeStamp, endTimeStamp]" :sum="all"
|
||
:type="listQuery.reportType" @refreshDataList="getDataList" />
|
||
<!-- <pagination
|
||
:limit.sync="listQuery.pageSize"
|
||
:page.sync="listQuery.pageNo"
|
||
:total="listQuery.total"
|
||
@pagination="getDataList" /> -->
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { parseTime } from '../../core/mixins/code-filter';
|
||
import { getGlassPage, exportGlasscExcel } from '@/api/report/glass';
|
||
import inputTable from './inputTable.vue';
|
||
import { getCorePLList } from '@/api/base/coreProductionLine';
|
||
import moment from 'moment'
|
||
import FileSaver from 'file-saver'
|
||
import * as XLSX from 'xlsx'
|
||
export default {
|
||
components: { inputTable },
|
||
data() {
|
||
return {
|
||
urlOptions: {
|
||
getDataListURL: getGlassPage,
|
||
exportURL: exportGlasscExcel
|
||
},
|
||
listQuery: {
|
||
pageSize: 10,
|
||
pageNo: 1,
|
||
total: 0,
|
||
reportType: 2,
|
||
reportTime: []
|
||
},
|
||
date:'许昌安彩日原片生产汇总',
|
||
reportTime: '',
|
||
startTimeStamp: '',
|
||
endTimeStamp: '',
|
||
tableData: [],
|
||
proLineList: [],
|
||
all: {}
|
||
};
|
||
},
|
||
created() {
|
||
this.getDict()
|
||
this.getTodayStartTimeAndEndTime()
|
||
this.getDataList()
|
||
},
|
||
methods: {
|
||
getTodayStartTimeAndEndTime() {
|
||
this.reportTime = new Date()
|
||
this.changeTime(this.reportTime)
|
||
},
|
||
async getDict() {
|
||
// 产线列表
|
||
const res = await getCorePLList();
|
||
this.proLineList = res.data;
|
||
},
|
||
// 获取数据列表
|
||
multipliedByHundred(str) {
|
||
console.log(str);
|
||
// console.log(str)
|
||
if ( str != 0) {
|
||
let floatVal = parseFloat(str);
|
||
if (isNaN(floatVal)) {
|
||
return 0;
|
||
}
|
||
floatVal = Math.round(str * 10000) / 100;
|
||
let strVal = floatVal.toString();
|
||
let searchVal = strVal.indexOf('.');
|
||
if (searchVal < 0) {
|
||
searchVal = strVal.length;
|
||
strVal += '.';
|
||
}
|
||
while (strVal.length <= searchVal + 2) {
|
||
strVal += '0';
|
||
}
|
||
return parseFloat(strVal);
|
||
}
|
||
|
||
},
|
||
async getDataList() {
|
||
this.dataListLoading = true
|
||
if (this.listQuery.reportTime.length == 0) {
|
||
this.$message({
|
||
message: '请选择时间',
|
||
type: 'warning'
|
||
})
|
||
return false
|
||
}
|
||
await this.urlOptions.getDataListURL(this.listQuery).then(res => {
|
||
res.data.forEach((ele, index) => {
|
||
if (ele.det === false) {
|
||
res.data[index].lineName = '合计'
|
||
this.remark = res.data[index].remark
|
||
res.data[index].dailyOutputTrend = res.data[index].dailyOutputTrend && res.data[index].dailyOutputTrend != 0 ? this.multipliedByHundred(res.data[index].dailyOutputTrend) + '%' : res.data[index].dailyOutputTrend == 0 ? 0 : null
|
||
res.data[index].originalGlassStatisticsTrend = res.data[index].dailyOutputTrend && res.data[index].originalGlassStatisticsTrend != 0 ? this.multipliedByHundred(res.data[index].originalGlassStatisticsTrend) + '%' : res.data[index].originalGlassStatisticsTrend == 0 ? 0 : null
|
||
res.data[index].actualProductTrend = res.data[index].dailyOutputTrend && res.data[index].actualProductTrend != 0 ? this.multipliedByHundred(res.data[index].actualProductTrend) + '%' : res.data[index].actualProductTrend == 0 ? 0 : null
|
||
res.data[index].originalGlassPassTrend = res.data[index].dailyOutputTrend && res.data[index].originalGlassPassTrend != 0 ? this.multipliedByHundred(res.data[index].originalGlassPassTrend) + '%' : res.data[index].originalGlassPassTrend == 0 ? 0 : null
|
||
}
|
||
})
|
||
res.data.forEach(item => {
|
||
this.proLineList.forEach(it => {
|
||
if (item.lineId === it.id) {
|
||
console.log(item)
|
||
item.lineName = it.name
|
||
console.log(item.originalGlassStatisticsTrend);
|
||
// if (!item.dailyOutputTrend) {
|
||
// item.dailyOutputTrend = this.multipliedByHundred(item.dailyOutputTrend) + '%'
|
||
// } else {
|
||
// item.dailyOutputTrend = null
|
||
// }
|
||
item.dailyOutputTrend = item.dailyOutputTrend && item.dailyOutputTrend != 0 ? this.multipliedByHundred(item.dailyOutputTrend) + '%' : item.dailyOutputTrend == 0 ? 0 : null
|
||
item.originalGlassStatisticsTrend = item.dailyOutputTrend && item.originalGlassStatisticsTrend != 0 ? this.multipliedByHundred(item.originalGlassStatisticsTrend) + '%' : item.originalGlassStatisticsTrend == 0 ? 0 : null
|
||
item.actualProductTrend = item.dailyOutputTrend && item.actualProductTrend != 0 ? this.multipliedByHundred(item.actualProductTrend) + '%' : item.actualProductTrend == 0 ? 0 : null
|
||
item.originalGlassPassTrend = item.dailyOutputTrend && item.originalGlassPassTrend != 0 ? this.multipliedByHundred(item.originalGlassPassTrend) + '%' : item.originalGlassPassTrend == 0 ? 0 : null
|
||
}
|
||
})
|
||
})
|
||
this.tableData = res.data
|
||
// this.tableData = response.data.filter(item => {
|
||
// this.proLineList.forEach(it => {
|
||
// if (item.lineId === it.id) {
|
||
// item.lineName = it.name
|
||
|
||
// }
|
||
// })
|
||
// if (item.det === false) {
|
||
// this.all = {
|
||
// id: item.id,
|
||
// remark: item.remark
|
||
// }
|
||
// }
|
||
// return item.det === true
|
||
// });
|
||
this.listQuery.total = res.data.length;
|
||
this.dataListLoading = false;
|
||
});
|
||
},
|
||
add0(m) {
|
||
return m < 10 ? '0' + m : m
|
||
},
|
||
format(shijianchuo) {
|
||
//shijianchuo是整数,否则要parseInt转换
|
||
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss')
|
||
// console.log(time)
|
||
// var y = time.getFullYear();
|
||
// var m = time.getMonth() + 1;
|
||
// var d = time.getDate();
|
||
// var h = time.getHours();
|
||
// var mm = time.getMinutes();
|
||
// var s = time.getSeconds();
|
||
return time
|
||
},
|
||
changeTime(val) {
|
||
if (val) {
|
||
// console.log(val)
|
||
// console.log(val.setHours(7, 0, 0))
|
||
// console.log(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000)
|
||
// let time = this.format(val.setHours(7, 0, 0))
|
||
this.endTimeStamp = this.format(val.setHours(7, 0, 0)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
|
||
this.startTimeStamp = this.format(val.setHours(7, 0, 1) - 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
|
||
// console.log(this.listQuery.reportTime);
|
||
this.listQuery.reportTime[1] = this.format(val.setHours(7, 0, 1)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
|
||
this.listQuery.reportTime[0] = this.format(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
|
||
console.log(this.listQuery.reportTime);
|
||
} else {
|
||
this.listQuery.reportTime = []
|
||
}
|
||
},
|
||
|
||
//时间戳转为yy-mm-dd hh:mm:ss
|
||
timeFun(unixtimestamp) {
|
||
var unixtimestamp = new Date(unixtimestamp);
|
||
var year = 1900 + unixtimestamp.getYear();
|
||
var month = "0" + (unixtimestamp.getMonth() + 1);
|
||
var date = "0" + unixtimestamp.getDate();
|
||
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length)
|
||
},
|
||
buttonClick(val) {
|
||
this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined;
|
||
switch (val.btnName) {
|
||
case 'search':
|
||
this.listQuery.pageNo = 1;
|
||
this.listQuery.pageSize = 10;
|
||
this.getDataList();
|
||
break;
|
||
case 'export':
|
||
this.handleExport();
|
||
break;
|
||
default:
|
||
console.log(val);
|
||
}
|
||
},
|
||
/** 导出按钮操作 */
|
||
handleExport() {
|
||
// 处理查询参数
|
||
var xlsxParam = { raw: true };
|
||
/* 从表生成工作簿对象 */
|
||
var wb = XLSX.utils.table_to_book(
|
||
document.querySelector("#exportTable"),
|
||
xlsxParam
|
||
);
|
||
/* 获取二进制字符串作为输出 */
|
||
var wbout = XLSX.write(wb, {
|
||
bookType: "xlsx",
|
||
bookSST: true,
|
||
type: "array",
|
||
});
|
||
try {
|
||
FileSaver.saveAs(
|
||
//Blob 对象表示一个不可变、原始数据的类文件对象。
|
||
//Blob 表示的不一定是JavaScript原生格式的数据。
|
||
//File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
|
||
//返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
|
||
new Blob([wbout], { type: "application/octet-stream" }),
|
||
//设置导出文件名称
|
||
"许昌安彩日原片生产汇总.xlsx"
|
||
);
|
||
} catch (e) {
|
||
if (typeof console !== "undefined") console.log(e, wbout);
|
||
}
|
||
return wbout;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
/* .blueTip { */
|
||
/* padding-bottom: 10px; */
|
||
/* } */
|
||
.blueTip::before{
|
||
display: inline-block;
|
||
content: '';
|
||
width: 4px;
|
||
height: 18px;
|
||
background: #0B58FF;
|
||
border-radius: 1px;
|
||
margin-right: 8PX;
|
||
margin-top: 8px;
|
||
}
|
||
</style>
|