yudao-dev/src/views/report/qcReport/cutDayReport/index.vue

418 lines
12 KiB
Vue
Raw Normal View History

2024-04-23 13:52:10 +08:00
<!--
* @Author: zhp
* @Date: 2024-04-18 10:01:33
2024-04-23 15:23:43 +08:00
* @LastEditTime: 2024-04-23 15:15:22
2024-04-23 13:52:10 +08:00
* @LastEditors: zhp
* @Description:
-->
2024-04-19 11:07:14 +08:00
<template>
<div class="app-container">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
2024-04-23 13:52:10 +08:00
<el-table :header-cell-style="{
background: '#F2F4F9',
color: '#606266'
}" class="baseTable" :max-height="tableH" id="exportTable" :data="tableData" style="width: 100%">
<el-table-column v-for="item in tableProps" :prop="item.prop" :label="item.label" align="center">
<el-table-column v-for="it in item.children" :prop="it.prop" :label="it.label" align="center">
</el-table-column>
</el-table-column>
</el-table>
2024-04-19 11:07:14 +08:00
<!-- <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
@pagination="getDataList" /> -->
<!-- <base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width="30%"> -->
<!-- <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" /> -->
<!-- </base-dialog> -->
</div>
</template>
<script>
// import AddOrUpdate from './add-or-updata';
// import basicPage from '../../../core/mixins/basic-page';
// import { parseTime } from '../../../core/mixins/code-filter';
import {
2024-04-23 15:23:43 +08:00
getOriginalLineDataList,
2024-04-23 13:52:10 +08:00
getCuttingReportDataList
2024-04-19 11:07:14 +08:00
} from '@/api/report/qcReport';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import FileSaver from 'file-saver'
// import { getList, } from "@/api/base/qualityScrapType";
const tableProps = [
// {
// prop: 'createTime',
// label: '添加时间',
// filter: parseTime
// },
{
2024-04-23 13:52:10 +08:00
prop: '',
label: '切割堆垛日报',
children:[
{
prop: 'lineName',
label: '产线'
},
{
prop: 'className',
label: '班组'
},
{
prop: 'groupName',
label: '班次'
},
{
prop: 'size',
label: '规格 mm 长*宽'
},
{
prop: 'thickness',
label: '厚度'
},
{
prop: 'glassCode',
label: '周转编号',
},
{
prop: 'stackingType',
label: '堆垛方式',
filter: (val) => val == 1 ? '集装架' : '堵头箱',
},
{
prop: 'pieces',
label: '片数',
},
{
prop: 'originCode',
label: '堆垛工位',
},
{
prop: 'endTime',
label: '堆垛时间',
},
{
prop: 'dusting',
label: '堆垛情况',
},
{
prop: 'palletNumber',
label: '堆垛时间',
},
{
prop: 'endTime',
label: '集装架号',
},
]
}
2024-04-19 11:07:14 +08:00
];
export default {
2024-04-23 13:52:10 +08:00
mixins: [tableHeightMixin],
2024-04-19 11:07:14 +08:00
data() {
return {
urlOptions: {
2024-04-23 13:52:10 +08:00
getDataListURL: getCuttingReportDataList,
2024-04-19 11:07:14 +08:00
// deleteURL: deleteQualityHotMaterial,
// exportURL: exportFactoryExcel,
},
tableProps,
tableData: [],
2024-04-23 13:52:10 +08:00
mergeArr: [],//记录合并行数
pos: 0,
2024-04-19 11:07:14 +08:00
listQuery: {
startTime: undefined,
2024-04-23 13:52:10 +08:00
endTime: undefined,
lineId: null,
2024-04-19 11:07:14 +08:00
},
formConfig: [
// {
// type: 'input',
// label: '报废原因',
// placeholder: '报废原因',
// param: 'content',
// },
// {
// type: 'select',
// label: '原料名称',
// selectOptions: [],
// labelField: 'name',
// valueField: 'id',
// param: 'materialId',
// filterable: true
// },
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange',
format: 'yyyy-MM-dd HH:mm:ss',
2024-04-23 13:52:10 +08:00
valueFormat: "timestamp",
2024-04-19 11:07:14 +08:00
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'checkTime',
2024-04-23 13:52:10 +08:00
defaultSelect: [Date.now() - 24 * 60 * 60 - 1000, Date.now()],
2024-04-23 15:09:07 +08:00
width: 350
2024-04-19 11:07:14 +08:00
},
{
2024-04-23 13:52:10 +08:00
type: 'select',
label: '产线',
selectOptions: [],
labelField: 'name',
valueField: 'id',
param: 'lineId',
filterable: true
},
{
type: 'button',
2024-04-19 11:07:14 +08:00
btnName: '查询',
name: 'search',
color: 'primary',
},
// {
// type: this.$auth.hasPermi('base:quality-hot-material:create') ? 'separate' : '',
// // type: 'separate',
// },
{
2024-04-23 13:52:10 +08:00
type: 'button',
2024-04-19 11:07:14 +08:00
btnName: '导出',
name: 'export',
color: 'success',
plain: true
},
],
};
},
components: {
// AddOrUpdate,
},
created() { },
mounted() {
2024-04-23 13:52:10 +08:00
// this.formConfig[1].defaultSelect[]
this.listQuery.startTime = this.formConfig[0].defaultSelect[0]
this.listQuery.endTime = this.formConfig[0].defaultSelect[1]
// this.formConfig[0].defaultSelect[0] = Date.now()-24*60*60-1000
2024-04-19 11:07:14 +08:00
this.getDataList()
2024-04-23 13:52:10 +08:00
this.getDict()
// this.getSpanArr(this.tableData)
2024-04-19 11:07:14 +08:00
// this.getDict();
},
methods: {
2024-04-23 13:52:10 +08:00
async getDict() {
2024-04-23 15:23:43 +08:00
const res = await getOriginalLineDataList()
2024-04-23 13:52:10 +08:00
console.log(res)
this.formConfig[1].selectOptions = res.data
},
// getSummaries(param) {
// console.log(columns)
// 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]));
// // const data = data.map(item => !Number(item[column.property]));
// if (!values.every(value => isNaN(value))) {
// sums[index] = values.reduce((prev, curr) => {
// const value = Number(curr);
// if (!isNaN(value)) {
// return prev + curr;
// } else {
// return prev;
// }
// }, 0);
// sums[index] += ' ';
// } else {
// sums[index] = '-';
// }
// });
// return sums;
// },
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
let spanOneArr = [], concatOne = 0;
this.tableData.map((item, index) => {
if (index === 0) {
spanOneArr.push(1);
} else {
//第一列需合并相同内容的判断条件
if (item.lineName === this.tableData[index - 1].lineName) {
spanOneArr[concatOne] += 1;
spanOneArr.push(0);
} else {
spanOneArr.push(1);
concatOne = index;
};
}
});
if (columnIndex === 0) {
const _row = spanOneArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
}
}
},
2024-04-19 11:07:14 +08:00
handleExport() {
// 处理查询参数
2024-04-23 13:52:10 +08:00
console.log(this.$refs);
2024-04-19 11:07:14 +08:00
var xlsxParam = { raw: true };
/* 从表生成工作簿对象 */
import('xlsx').then(excel => {
var wb = excel.utils.table_to_book(
document.querySelector("#exportTable"),
xlsxParam
);
/* 获取二进制字符串作为输出 */
var wbout = excel.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;
//do something......
})
},
// otherMethods(val) {
// if (val.type === 'detail') {
// this.addOrUpdateVisible = true;
// this.addOrEditTitle = "详情";
// this.$nextTick(() => {
// this.$refs.addOrUpdate.init(val.data.id, true);
// });
// }
// },
// 获取数据列表
getDataList() {
this.dataListLoading = true;
2024-04-23 13:52:10 +08:00
// this.listQuery.startTime = '1711095616000';
// this.listQuery.endTime = '1711183743000';
2024-04-19 11:07:14 +08:00
this.urlOptions.getDataListURL(this.listQuery).then(response => {
2024-04-23 13:52:10 +08:00
// this.getSpanArr(this.tableData)
// response.data.forEach((ele) => {
// console.log(ele.size.substring(2, ele.size.length - 2))
// // console.log(Object.prototype.toString.call(ele.size))
// // // if (Object.prototype.toString.call(ele.size) === Array) {
// // console.log(11111)
// // console.log();
// // }
// })
2024-04-19 11:07:14 +08:00
this.tableData = response.data
2024-04-23 13:52:10 +08:00
// let obj = {}
// response.data.reduce((prev, curr) => {
// console.log(prev, curr)
// })
// this.tableData.forEach((ele) => {
// ele.size.substring(2, ele.size.length - 2)
// // console.log(Object.prototype.toString.call(ele.size))
// // // if (Object.prototype.toString.call(ele.size) === Array) {
// // console.log(11111)
// // console.log();
// // }
// })
// let obj = {}
// this.tableData.forEach(ele => {
// obj.num += ele.num
// obj.area += ele.num
// obj.count += ele.num
// })
// console.log(obj);
2024-04-19 11:07:14 +08:00
// this.listQuery.total = response.data.total;
this.dataListLoading = false;
});
},
// deleteHandle(id, name, index, data) {
// this.$confirm(`确认要删除序号${index}?`, "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// })
// .then(() => {
// this.urlOptions.deleteURL(id).then(({ data }) => {
// this.$message({
// message: "操作成功",
// type: "success",
// duration: 1500,
// onClose: () => {
// this.getDataList();
// },
// });
// });
// })
// .catch(() => { });
// },
// async getDict() {
// // 物料列表
// const res = await getHotMaterialAllList();
// this.formConfig[0].selectOptions = res.data;
// },
buttonClick(val) {
switch (val.btnName) {
case 'search':
// this.listQuery.pageNo = 1;
// this.listQuery.pageSize = 20;
// this.listQuery.materialId = val.materialId ? val.materialId : undefined;
// this.listQuery.startTime = '1706144404000';
// this.listQuery.endTime = '1706230804000';
this.listQuery.startTime = val.checkTime ? val.checkTime[0] : undefined;
this.listQuery.endTime = val.checkTime ? val.checkTime[1] : undefined;
2024-04-23 13:52:10 +08:00
this.listQuery.lineId = val.lineId ? val.lineId : undefined
2024-04-19 11:07:14 +08:00
this.getDataList();
break;
// case 'reset':
// this.$refs.searchBarForm.resetForm();
// this.listQuery = {
// pageSize: 20,
// pageNo: 1,
// total: 1,
// };
// this.getDataList();
// break;
// case 'add':
// this.addOrEditTitle = '新增';
// this.addOrUpdateVisible = true;
// this.addOrUpdateHandle();
// break;
case 'export':
this.handleExport();
break;
default:
console.log(val);
}
},
},
};
</script>
2024-04-23 13:52:10 +08:00
<style>
.baseTable .el-table__body tr.current-row>td.el-table__cell {
background-color: #EAF1FC;
}
.baseTable .el-table .el-table__cell {
padding: 0;
height: 35px;
}
</style>