<!-- * @Author: zhp * @Date: 2024-04-18 10:01:33 * @LastEditTime: 2024-04-25 13:40:36 * @LastEditors: zhp * @Description: --> <template> <div class="app-container"> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <el-table :header-cell-style="{ background: '#F2F4F9', color: '#606266' }" class="baseTable" border :max-height="tableH" id="exportTable" :data="tableData" style="width: 100%" :span-method="objectSpanMethod"> <el-table-column :width="item.width" v-for="item in tableProps" :prop="item.prop" :label="item.label" align="center"> </el-table-column> </el-table> <!-- <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 { getOriginalData, getOriginalLineDataList } from '@/api/report/qcReport'; import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; import { width } from '@antv/x6-common/lib/dom/position'; import FileSaver from 'file-saver' // import { getList, } from "@/api/base/qualityScrapType"; const tableProps = [ // { // prop: 'createTime', // label: '添加时间', // filter: parseTime // }, { prop: 'lineName', label: '产线', width:'100' }, { prop: 'equipmentName', label: '', width: '200' }, { prop: 'num', label: '片数' }, { prop: 'area', label: '面积' }, { prop: 'countNum', label: '托数', // filter: (val) => val == false ? '不合格' : '合格', }, { prop: 'size', label: '规格', // filter: (val) => val == 1 ? 'A' : val == 2 ? 'B' : 'C', }, // { // prop: 'checkerName', // label: '检测人员' // }, // { // prop: 'checkTime', // label: '检测时间', // filter: parseTime // }, ]; export default { mixins: [ tableHeightMixin], data() { return { urlOptions: { getDataListURL: getOriginalData, // deleteURL: deleteQualityHotMaterial, // exportURL: exportFactoryExcel, }, tableProps, tableData: [], mergeArr: [],//记录合并行数 pos: 0, listQuery: { startTime: undefined, endTime: undefined, lineId:null, }, 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', valueFormat: "timestamp", rangeSeparator: '-', startPlaceholder: '开始时间', endPlaceholder: '结束时间', param: 'checkTime', defaultSelect: [new Date(new Date(Date.now()).setHours(7, 0, 0, 0)).getTime(), new Date(new Date(Date.now()).setHours(6, 59, 59)).getTime() + 24 * 60 * 60 * 1000], width: 350 }, { type: 'select', label: '产线', selectOptions: [], labelField: 'name', valueField: 'id', param: 'lineId', filterable: true }, { type:'button', btnName: '查询', name: 'search', color: 'primary', }, // { // type: this.$auth.hasPermi('base:quality-hot-material:create') ? 'separate' : '', // // type: 'separate', // }, { type:'button', btnName: '导出', name: 'export', color: 'primary', plain: true }, ], }; }, components: { // AddOrUpdate, }, created() { }, mounted() { // this.formConfig[1].defaultSelect[] this.listQuery.startTime = new Date(new Date(Date.now()).setHours(7, 0, 0, 0)).getTime() this.listQuery.endTime = new Date(new Date(Date.now()).setHours(6, 59, 59)).getTime() + 24 * 60 * 60 * 1000 // this.formConfig[0].defaultSelect[0] = Date.now()-24*60*60-1000 this.getDataList() this.getDict() // this.getSpanArr(this.tableData) // this.getDict(); }, methods: { async getDict() { const res = await getOriginalLineDataList() 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 } } }, handleExport() { // 处理查询参数 console.log(this.$refs); 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; // this.listQuery.startTime = '1711095616000'; // this.listQuery.endTime = '1711183743000'; this.urlOptions.getDataListURL(this.listQuery).then(response => { // 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(); // // } // }) this.tableData = response.data.map((ele) => { return { area:ele.area, countNum: ele.countNum, equipmentName: ele.equipmentName, lineName: ele.lineName, num: ele.num, // size: typeof (ele.size) size: ele.size.match(/\[(.+?)\]/g) ? ele.size.substring(1, ele.size.length - 1) : ele.size } }) 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); // 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 ? new Date(new Date(val.checkTime[0]).setHours(7, 0, 0, 0)).getTime() : undefined; this.listQuery.endTime = val.checkTime ? new Date(new Date(val.checkTime[1]).setHours(6, 59, 59)).getTime() + 24 * 60 * 60 * 1000 : undefined; this.listQuery.lineId = val.lineId ? val.lineId : undefined 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> <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>