新增报表

This commit is contained in:
‘937886381’
2024-04-22 17:14:59 +08:00
parent 29c3a9fb72
commit 5ea4c219ed
12 changed files with 449 additions and 102 deletions

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2024-01-24 15:15:24
* @LastEditTime: 2024-04-18 16:49:31
* @LastEditTime: 2024-04-22 16:14:19
* @LastEditors: zhp
* @Description:
-->
@@ -12,8 +12,7 @@
</el-alert> -->
<el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
<el-form-item label="日" prop="time">
<el-date-picker v-model="listQuery.time" value-format="timestamp" type="datetime"
placeholder="选择日期">
<el-date-picker v-model="listQuery.time" value-format="timestamp" type="datetime" placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item>
@@ -24,8 +23,15 @@
</el-form-item>
</el-form>
</div>
<inputTable :date="date" :data="tableData" :time="[startTimeStamp]" :sum="all" :type="listQuery.reportType"
@refreshDataList="getDataList" />
<el-col :span="16">
<inputTable :date="date" :data="tableData" :time="[startTimeStamp]" :sum="all" :type="listQuery.reportType"
@refreshDataList="getDataList" />
</el-col>
<el-col :span="8">
<inputTableTwo :data="tableDataChild" :time="[startTimeStamp]" :sum="all" :type="listQuery.reportType"
@refreshDataList="getDataList" />
</el-col>
<!-- <pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
@@ -36,18 +42,21 @@
<script>
// import { parseTime } from '../../core/mixins/code-filter';
import { getAutoDailyData } from '@/api/report/qcReport';
import { getAutoDailyData, getProductChildData } from '@/api/report/qcReport';
import inputTable from './inputTable.vue';
import inputTableTwo from './inputTableTwo.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 },
components: { inputTable, inputTableTwo },
data() {
return {
urlOptions: {
getDataListURL: getAutoDailyData,
getChildDataListURL: getProductChildData,
// exportURL: exportGlasscExcel
},
listQuery: {
@@ -62,6 +71,7 @@ export default {
startTimeStamp: '',
endTimeStamp: '',
tableData: [],
tableDataChild:[],
proLineList: [],
all: {}
};
@@ -119,12 +129,45 @@ export default {
console.log(res.data.datas);
let arr = res.data.datas
let obj = res.data.reportAutoYdailyRespVO
obj.lineName = '合计'
obj.lineName = '压延线产量合计'
arr.push(obj)
// this.tableData.push(res.data.reportAutoYdailyRespVO)
this.tableData = arr
this.listQuery.total = res.data.length;
this.dataListLoading = false;
})
await this.urlOptions.getChildDataListURL(this.listQuery).then(res => {
console.log(res.data.datas)
// res.data.datas.sort((a, b) => {
// if (a['lineName'] != b['lineName']) {
// return a['lineName'].localeCompare(b['lineName']);
// }
// // if (a['groupClasses'] == '白班' && b['groupClasses'] == '夜班' ) {
// // return a['groupClasses'].localeCompare(b['groupClasses']);
// // }
// // if (a['groupClasses'] == '夜班') {
// // return a['groupClasses'].localeCompare(b['groupClasses']);
// // }
// })
console.log(res.data.datas);
let arr = res.data.datas
this.tableData.forEach(ele => {
res.data.datas.forEach(item => {
if (ele.lineName === item.lineName && item.groupClasses != '小计') {
item.width = ele.width
item.thick = ele.thick
item.length = ele.length
}
});
});
let obj = res.data.reportAutoYdailyDetRespVO
// obj.lineName = '合计'
arr.push(obj)
// this.tableChildData.push(res.data.reportAutoYdailyRespVO)
this.tableDataChild = arr
console.log(this.tableDataChild);
// this.listQuery.total = res.data.length;
this.dataListLoading = false;
});
},
add0(m) {

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2024-04-18 15:49:48
* @LastEditTime: 2024-04-18 16:30:42
* @LastEditTime: 2024-04-22 16:15:08
* @LastEditors: zhp
* @Description:
-->
@@ -13,18 +13,21 @@
<el-button v-if="edit" size="small" @click="handleReturn()">返回</el-button>
<el-button v-if="edit" size="small" @click="updateData">保存</el-button>
</el-row>
<el-table :id="id" :data="data" border style="width: 100%">
<el-table :span-method="objectSpanMethod" :id="id" :data="data" border style="width: 100%">
<el-table-column v-for="(item, index) in cols" :key="index" :prop="item.prop" :label="item.label"
:align="item.align ? item.align : 'left'">
<el-table-column v-for="(it, index1) in item.children" :key="index1" :prop="it.prop" :label="it.label"
:align="item.align ? item.align : 'left'">
<template slot-scope="scope">
<span v-if="!edit">{{ scope.row[it.prop] }}</span>
<el-input @change="handleChange"
:disabled="it.label == '生产线' || it.label == '良品重量(吨)' || it.label == '月累计面积'" v-else
v-model="scope.row[it.prop]">
</el-input>
</template>
<el-table-column v-for="(y, index2) in it.children" :key="index2" :prop="y.prop" :label="y.label">
<template slot-scope="scope">
<span v-if="!edit">{{ scope.row[y.prop] }}</span>
<el-input type="number" @change="handleChange" :disabled="y.prop == 'dailyOutputTrend' || y.prop === 'originalGlassStatisticsTrend'
|| y.prop === 'actualProductTrend' || y.prop === 'originalGlassPassTrend' || y.prop === 'originalGlassPassNow' || y.prop === 'originalGlassPassHis'
" v-else v-model="scope.row[y.prop]"></el-input>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
@@ -35,7 +38,8 @@
</template>
<script>
import { updateGlass, updateGlassRemark } from '@/api/report/glass';
import { updateAutoDailyData } from '@/api/report/qcReport';
const cols = [
{
@@ -227,6 +231,45 @@ const cols = [
// }
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
let spanOneArr = [], concatOne = 0;
this.data.map((item, index) => {
if (index === 0) {
spanOneArr.push(1);
} else {
//第一列需合并相同内容的判断条件
if (item.lineName === this.data[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
}
}
// if (columnIndex == 0 ) {
// // if (rowIndex == this.data.length-1) {
// // console.log(rowIndex)
// return {
// rowspan: this.data.length - 1,
// colspan: 3
// };
// // } else {
// // return {
// // rowspan: 0,
// // colspan: 0
// // };
// }
// }
},
handleReturn() {
this.edit = false
console.log(this.$parent.getDataList());
@@ -234,19 +277,8 @@ const cols = [
handleChange(e) {
},
updateData() {
// let obj = {}
// this.data.forEach((ele, index) => {
// if (ele.det === false) {
// this.data[index].lineId = ''
// this.data[index].remark = this.remark
// obj = ele
// delete this.data[index].dailyOutputTrend
// delete this.data[index].originalGlassStatisticsTrend
// delete this.data[index].actualProductTrend
// delete this.data[index].originalGlassPassTrend
// this.data.splice(index, 1)
// }
// })
let data = this.data.slice(0, -1)
// console.log(obj)
// let updateArr = this.data
// updateArr.forEach((ele, index) => {
// delete ele.dailyOutputTrend
@@ -260,12 +292,12 @@ const cols = [
// delete ele.actualProductTrend
// delete ele.originalGlassPassTrend
// });
updateGlass(updateArr).then(response => {
updateGlassRemark(obj).then(res => {
this.$modal.msgSuccess("修改成功");
this.edit = false;
this.$emit("refreshDataList");
});
updateAutoDailyData(data).then(response => {
// updateGlassRemark(obj).then(res => {
this.$modal.msgSuccess("修改成功")
this.edit = false
// this.$emit("refreshDataList");
// });
});
}
}

View File

@@ -0,0 +1,252 @@
<!--
* @Author: zhp
* @Date: 2024-04-22 13:18:59
* @LastEditTime: 2024-04-22 16:15:14
* @LastEditors: zhp
* @Description:
-->
<template>
<div>
<el-row style="float: right; margin-bottom: 5px">
<!-- <el-button v-if="!edit && this.$auth.hasPermi('base:report-auto-original-glass:update')" :disabled="noData"
size="small" @click="edit = true">编辑</el-button>
<el-button v-if="edit" size="small" @click="handleReturn()">返回</el-button>
<el-button v-if="edit" size="small" @click="updateData">保存</el-button> -->
</el-row>
<el-table style="margin-top:38px;width: 100%" :span-method="objectSpanMethod" :data="data" :id="id" border>
<el-table-column v-for="(item, index) in cols" :key="index" :prop="item.prop" :label="item.label"
:align="item.align ? item.align : 'left'">
<el-table-column v-for="(it, index1) in item.children" :key="index1" :prop="it.prop" :label="it.label"
:align="item.align ? item.align : 'left'">
<el-table-column v-for="(y, index2) in it.children" :key="index2" :prop="y.prop" :label="y.label">
<template slot-scope="scope">
<span v-if="!edit">{{ scope.row[y.prop] }}</span>
<el-input type="number" @change="handleChange" :disabled="false" v-else v-model="scope.row[y.prop]">
</el-input>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
<!-- <el-input type="textarea" v-model="remark" placeholder="备注" :disabled="!edit" :autosize="{ minRows: 2, maxRows: 6}">
</el-input> -->
</div>
</template>
<script>
import { updateGlass, updateGlassRemark } from '@/api/report/glass';
const cols = [
{
prop: 'xc',
// label: '许昌安彩新能科技有限公司2024年4月份生产日报',
align: 'center',
children: [
{
prop: 'lineName',
label: '产线',
},
{
prop: 'groupClasses',
label: '班次',
},
{
prop: 'tractionSpeed',
label: '拉引速度(米/分)',
},
{
prop: 'width',
label: '板宽(mm)',
},
{
prop: 'weight',
label: '板重(g)',
},
{
prop: 'pullWeight',
label: '拉引速度(吨/班)',
},
{
prop: 'pullArea',
label: '拉引面积(平方米)',
},
{
prop: 'm',
label: '尺寸(长、宽、厚)毫米',
align: 'center',
children: [
{
prop: 'length',
label: '长',
},
{
prop: 'width',
label: '宽',
},
{
prop: 'thick',
label: '高',
}
]
}
]
}
]
export default {
props: {
data: {
type: Array,
default: () => [],
},
id: {
type: String,
default:'exportTable'
},
time: {
type: Array,
default: () => [],
},
date: {
type: String,
default:''
},
sum: {
type: Object,
default: () => {},
},
type: {
type: Number,
default: 3,
}
},
data() {
return {
cols,
remark:null,
edit: false,
noData:false,
};
},
watch: {
data: {
handler(newv, oldv) {
if (newv.length != 0) {
this.noData = false
} else {
this.noData = true
}
}
},
time: {
immediate: true,
handler(newv, oldv) {
if (newv[0] !== '') {
this.cols[0].label = this.date + '(' + newv[0] + '-' + newv[1] + ')'
} else {
this.cols[0].label = this.date
}
}
},
// type: {
// immediate: true,
// handler(newv, oldv) {
// let text1 = '', text2 = '', text3 = ''
// if (newv === 3) {
// text1 = '本周'
// text2 = '上周'
// text3 = '原片合计(片/周)'
// } else if (newv === 4) {
// text1 = '本月'
// text2 = '上月'
// text3 = '原片合计(片/月)'
// } else if (newv === 2) {
// text1 = '今日'
// text2 = '昨日'
// text3 = '原片合计(片/日)'
// } else {
// text1 = '本年'
// text2 = '上年'
// text3 = '原片合计(片/年)'
// }
// this.cols[0].children[1].children[0].label = text1
// this.cols[0].children[1].children[1].label = text2
// this.cols[0].children[2].children[0].label = text1
// this.cols[0].children[2].children[1].label = text2
// this.cols[0].children[3].children[0].label = text1
// this.cols[0].children[3].children[1].label = text2
// this.cols[0].children[4].children[0].label = text1
// this.cols[0].children[4].children[1].label = text2
// this.cols[0].children[2].label = text3
// }
// }
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
let spanOneArr = [], concatOne = 0;
this.data.map((item, index) => {
if (index === 0) {
spanOneArr.push(1);
} else {
//第一列需合并相同内容的判断条件
if (item.lineName === this.data[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
}
}
},
handleReturn() {
this.edit = false
console.log(this.$parent.getDataList());
},
handleChange(e) {
},
updateData() {
// let obj = {}
// this.data.forEach((ele, index) => {
// if (ele.det === false) {
// this.data[index].lineId = ''
// this.data[index].remark = this.remark
// obj = ele
// delete this.data[index].dailyOutputTrend
// delete this.data[index].originalGlassStatisticsTrend
// delete this.data[index].actualProductTrend
// delete this.data[index].originalGlassPassTrend
// this.data.splice(index, 1)
// }
// })
// let updateArr = this.data
// updateArr.forEach((ele, index) => {
// delete ele.dailyOutputTrend
// delete ele.originalGlassStatisticsTrend
// delete ele.actualProductTrend
// delete ele.originalGlassPassTrend
// });
// this.data.forEach((ele, index) => {
// delete ele.dailyOutputTrend
// delete ele.originalGlassStatisticsTrend
// delete ele.actualProductTrend
// delete ele.originalGlassPassTrend
// });
// updateGlass(updateArr).then(response => {
// updateGlassRemark(obj).then(res => {
// this.$modal.msgSuccess("修改成功");
// this.edit = false;
// this.$emit("refreshDataList");
// });
// });
}
}
};
</script>