yudao-dev/src/views/core/analysis/yieldAnalysis/index.vue

256 lines
6.9 KiB
Vue
Raw Normal View History

2023-09-11 16:09:07 +08:00
<template>
2023-09-13 16:00:43 +08:00
<div class="app-container">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData" />
<line-chart ref="lineChart" />
<!-- <pagination
2023-09-11 16:09:07 +08:00
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
2023-09-13 16:00:43 +08:00
@pagination="getDataList" /> -->
</div>
2023-09-11 16:09:07 +08:00
</template>
<script>
2023-09-13 16:00:43 +08:00
// import basicPage from '../../mixins/basic-page';
2023-09-11 16:09:07 +08:00
import { parseTime } from '../../mixins/code-filter';
2023-09-13 16:00:43 +08:00
import { getYieldAnalysisPageData } from '@/api/core/analysis/index';
2023-09-11 16:09:07 +08:00
import { getProductionLinePage } from '@/api/core/base/productionLine';
2023-09-13 16:00:43 +08:00
import lineChart from '../LineChart'
// import { getWorkshopSectionPage } from '@/api/core/base/workshopSection';
2023-09-11 16:09:07 +08:00
2023-09-13 16:00:43 +08:00
// const tableProps = [
// // {
// // prop: 'lineName',
// // label: '产线',
// // align: 'center',
// // },
// // {
// // prop: 'sum',
// // label: '合计',
// // align: 'center',
// // },
// // {
// // prop: 'dynamicValue',
// // label: 'dynamicName',
// // align: 'center',
// // children:[
// // ]
// // }
// ];
2023-09-11 16:09:07 +08:00
export default {
2023-09-13 16:00:43 +08:00
components: {
lineChart,
},
// mixins: [basicPage],
2023-09-11 16:09:07 +08:00
data() {
return {
urlOptions: {
2023-09-13 16:00:43 +08:00
getDataListURL: getYieldAnalysisPageData,
2023-09-11 16:09:07 +08:00
},
2023-09-13 16:00:43 +08:00
tableProps:[],
dataListLoading:false,
tableData: [],
listQuery: {
lineIds: [],
time: ''
},
2023-10-08 16:59:09 +08:00
dateLabelList: [],
2023-09-13 16:00:43 +08:00
optionArrUrl: [getProductionLinePage ],
2023-09-11 16:09:07 +08:00
formConfig: [
{
type: 'select',
label: '产线',
selectOptions: [],
2023-09-13 16:00:43 +08:00
param: 'lineIds',
defaultSelect: '',
multiple:true,
2023-09-11 16:09:07 +08:00
filterable: true,
},
{
type: 'datePicker',
label: '时间',
2023-09-13 16:00:43 +08:00
dateType: 'datetime',
2023-09-11 16:09:07 +08:00
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
2023-09-13 16:00:43 +08:00
param: 'time',
2023-09-11 16:09:07 +08:00
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
2023-09-13 16:00:43 +08:00
}
2023-09-11 16:09:07 +08:00
],
};
},
created() {
this.getArr();
},
methods: {
getArr() {
const params = {
page: 1,
limit: 500,
};
this.optionArrUrl.forEach((item, index) => {
item(params).then((response) => {
2023-09-13 16:00:43 +08:00
this.formConfig[index].selectOptions = response.data.list
2023-09-11 16:09:07 +08:00
});
});
2023-09-13 16:00:43 +08:00
},
getData() {
// this.listQuery.lineIds = ['1672847052717821953']
// this.listQuery.productId = val.productId;
// this.listQuery.time = '1694486098000';
this.urlOptions.getDataListURL(this.listQuery).then(res => {
let arr = [
{
prop: 'lineName',
2023-10-08 16:59:09 +08:00
label: '产线'
2023-09-13 16:00:43 +08:00
},
{
prop: 'sum',
2023-10-08 16:59:09 +08:00
label: '合计'
2023-09-13 16:00:43 +08:00
},
{
2023-10-08 16:59:09 +08:00
prop: res.data ? res.data.nameData[0].name : undefined,
label: res.data ? res.data.nameData[0].name : undefined,
2023-09-13 16:00:43 +08:00
align: 'center',
children:[
]
}
]
2023-10-08 16:59:09 +08:00
// console.log(res.data.nameData.slice(1))
2023-09-13 16:00:43 +08:00
let xData = []
let yAllData = []
let lineName = []
2023-10-08 16:59:09 +08:00
if (res.data) {
let tempDateList = []
res.data.nameData.forEach(date => {
tempDateList.push(date.name)
})
this.dateLabelList = Array.from(new Set(tempDateList))
this.dateLabelList.forEach(item => {
if (item.indexOf('年') === -1) {
// 构造表头
const props = {
'prop': item,
'label': item
}
arr[2].children.push(props)
// 构造echarts横坐标
xData.push(item)
}
})
// res.data.nameData.slice(1).forEach(item => {
// const props = {
// 'prop': item.name,
// 'label': item.name,
// 'align': 'center'
// }
// arr[2].children.push(props)
// })
let tableDataArr =[]
res.data.data.forEach(item => {
let obj = {}
obj.lineName= item.lineName,
obj.sum= item.sum,
item.data.forEach((ele, index) => {
2023-09-13 16:00:43 +08:00
// console.log(ele)
2023-10-08 16:59:09 +08:00
ele.children.forEach((e) => {
console.log(e.dynamicName)
obj['' + e.dynamicName + ''] = e.dynamicValue
console.log(obj['' + e.dynamicName + '']);
2023-09-13 16:00:43 +08:00
})
})
2023-10-08 16:59:09 +08:00
tableDataArr.push(obj)
});
this.tableData = tableDataArr
this.tableProps = arr
// let tempList = []
// res.data.nameData.slice(1).forEach(item => {
// tempList.push(item.name)
// // arr[2].children.push(props)
// })
// xData = Array.from(new Set(tempList))
res.data.data.forEach(item => {
let yData = []
lineName.push(item.lineName)
// let obj = {}
// obj.lineName = item.lineName,
// obj.sum = item.sum,
item.data.forEach((ele, index) => {
// console.log(ele)
ele.children.forEach((e) => {
// let yData = []
yData.push(e.dynamicValue)
})
})
yAllData.push(yData)
});
console.log(lineName)
} else {
this.tableProps = arr
this.tableData = []
xData = []
yAllData = []
lineName = []
}
2023-09-13 16:00:43 +08:00
// res.data.data[0].data[0].children.forEach((item, index) => {
// // console.log(item)
// yData.push(item.dynamicValue)
// // let data = 'data' + Number(index+1)
// // obj['' + item.dynamicName + ''] = item.dynamicValue
// })
// console.log(this.yData)
this.$refs.lineChart.initChart(xData, yAllData, lineName)
// this.total = response.data.total;
// this.dataListLoading = false;
});
},
buttonClick(val) {
// console.log(val)
2023-09-11 16:09:07 +08:00
switch (val.btnName) {
2023-09-13 16:00:43 +08:00
case 'search':
this.listQuery.lineIds = val.lineIds ? val.lineIds :undefined
// this.listQuery.productId = val.productId;
this.listQuery.time = val.time ? new Date(val.time).getTime() : undefined
// this.listQuery.pageNo = 1;
// this.listQuery.pageSize = 10;
2023-10-08 16:59:09 +08:00
if (val.time) {
this.getData()
} else {
this.$message({
message: '请选择时间',
type: 'warning'
});
}
2023-09-11 16:09:07 +08:00
break;
case 'reset':
this.$refs.searchBarForm.resetForm();
this.listQuery = {
pageSize: 10,
pageNo: 1,
total: 1,
};
this.getDataList();
break;
default:
console.log(val);
}
},
},
};
</script>