This commit is contained in:
‘937886381’
2024-06-21 16:04:50 +08:00
parent 0eb17fa08b
commit 670d7e5600
12 changed files with 1214 additions and 903 deletions

View File

@@ -13,54 +13,41 @@
</el-select>
</el-form-item>
<el-form-item v-show="listQuery.date === 0 || listQuery.date === ''" label="时间范围" prop="reportTime">
<el-date-picker size="small" clearable v-model="listQuery.reportTime" type="daterange" range-separator="至"
start-placeholder="开始日期" value-format="yyyy-MM-dd" @change="changeDayTime" end-placeholder="结束日期">
<el-date-picker size="small" clearable v-model="listQuery.reportTime" type="datetimerange" range-separator="至"
start-placeholder="开始日期" value-format="yyyy-MM-dd" format="yyyy-MM-dd" @change="changeDayTime"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item v-show="listQuery.date === 1" label="时间范围" prop="reportTime">
<el-date-picker size="small" clearable v-model="start" type="week" format="yyyy 第 WW 周" placeholder="选择周"
style="width: 180px" @change="onValueChange">
<el-date-picker size="small" clearable v-model="listQuery.start" type="week" format="yyyy 第 WW 周"
placeholder="选择周" style="width: 180px" @change="onValueChange">
</el-date-picker>
<el-date-picker size="small" clearable v-model="end" type="week" format="yyyy 第 WW 周" placeholder="选择周"
style="width: 180px" @change="onValueChange">
<el-date-picker size="small" clearable v-model="listQuery.end" type="week" format="yyyy 第 WW 周"
placeholder="选择周" style="width: 180px" @change="onValueChange">
</el-date-picker>
<!-- <span v-if="start && end" style="margin-left: 10px">
<!-- <span v-if="listQuery.start && listQuery.end" style="margin-left: 10px">
{{ date1 }} {{ date2 }} {{ weekNum }}
</span> -->
</el-form-item>
<el-form-item v-show="listQuery.date === 2" label="时间" prop="reportTime">
<el-date-picker size="small" v-model="listQuery.reportTime" type="monthrange" value-format="yyyy-MM-DD"
range-separator="" start-placeholder="开始月份" end-placeholder="结束月份" @change="changeTime">
<el-form-item v-show="listQuery.date === 2" label="时间范围" prop="reportTime">
<el-date-picker size="small" clearable v-model="listQuery.reportTime" type="monthrange"
value-format="yyyy-MM-dd" range-separator="" start-placeholder="开始月份" end-placeholder="结束月份"
@change="changeTime">
</el-date-picker>
</el-form-item>
<el-form-item v-show="listQuery.date === 3" label="时间" prop="reportTime">
<el-date-picker size="small" clearable v-model="listQuery.reportTime[0]" value-format="yyyy" type="year"
<el-form-item v-show="listQuery.date === 3" label="时间范围" prop="reportTime">
<el-date-picker size="small" clearable v-model="listQuery.start" value-format="yyyy-MM-dd" type="year"
placeholder="开始时间">
</el-date-picker>
~
<el-date-picker size="small" clearable v-model="listQuery.reportTime[1]" value-format="yyyy" type="year"
<el-date-picker size="small" clearable v-model="listQuery.end" value-format="yyyy-MM-dd" type="year"
placeholder="结束时间" @change="getYear">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="玻璃类型" prop="type">
<el-select v-model="listQuery.type" placeholder="请选择玻璃类型">
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="玻璃类型" prop="type">
<el-select v-model="listQuery.type" placeholder="请选择玻璃类型">
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button type="primary" size="small" @click="getDataList">查询</el-button>
<el-divider direction="vertical"></el-divider>
<!-- <el-button type="primary" size="small" plain @click="handleImport">导入</el-button> -->
<el-button type="primary" size="small" plain @click="handleExport">导出</el-button>
<!-- <el-button type="success" size="small" plain @click="addFactory">新增</el-button> -->
</el-form-item>
</el-form>
</div>
@@ -77,7 +64,7 @@
<div class="blueTip">
{{ title }}
</div>
<produce-line-bar-year-target :chartHeight="chartHeight" :legendList="legendList"
<produce-line-bar-year-target :chartHeight="chartHeight" :legendList="legendListTarget"
:chartMsg="chartMsgYearTarget" :chartId=" 'yearData'" :chartNum="chartNum" />
</el-col>
</el-row>
@@ -97,8 +84,8 @@
:chartMsg="chartMsgYearTarget" :chartId=" 'yearData'" :chartNum="chartNum" />
</el-col> -->
</el-row>
<base-table :table-props="tableProps" :page="listQuery.current" :limit="listQuery.size" :table-data="tableData"
:max-height="tableH" />
<base-table :span-method="objectSpanMethod" :table-props="tableProps" :page="listQuery.current"
:limit="listQuery.size" :table-data="tableData" :max-height="tableH" />
</div>
<!-- <div class="containerBottom">
@@ -110,7 +97,7 @@
import { getProduceTransData, exportProduceTransData } from '@/api/report';
import bmSearchBar from "./components/bmSearchBar";
import BmLineBar from "./components/produceLineBar.vue";
import produceLineBarYearTarget from "./components/produceLineBarYearTarget.vue";
import produceLineBarYearTarget from "./components/produceLineYieldBarTarget.vue";
import ButtonNav from '@/components/ButtonNav'
import moment from 'moment'
@@ -119,13 +106,10 @@ export default {
data() {
return {
otherProps: [],
start: undefined,
end: undefined,
title:'',
listQuery: {
pageNo: 1,
pageSize: 999,
// size: 10,
// current: 1,
start: undefined,
end: undefined,
factorys: null,
// total: 0,
date: 2,
@@ -156,19 +140,34 @@ export default {
tableH: this.tableHeight(137) / 2 - 70,
legendList: [
{
id: 1, name: "综合良率", type: 2, color: "#FFCE6A"
id: 2, name: "芯片总功率", type: 1, color: "#8EF0AB"
},
{ id: 3, name: "标准组件总功率", type: 1, color: "#288AFF" },
{
id: 1, name: "转化效率", type: 2, color: "#FFCE6A"
},
// {
// id: 3, name: "", type: 1, color: "#288AFF"
// },
],
legendListTarget: [
{
id: 2, name: "芯片总功率", type: 1, color: "#8EF0AB"
},
{
id: 2, name: "FTO投入", type: 1, color: "#8EF0AB"
id: 3, name: "标准组件总功率", type: 1, color: "#288AFF"
},
{ id: 3, name: "芯片产量", type: 1, color: "#288AFF" },
{
id: 3, name: "标准组件产量", type: 1, color: "#288AFF"
id: 1, name: "转化效率", type: 1, color: "#64BDFF"
},
// {
// id: 3, name: "", type: 1, color: "#288AFF"
// },
],
chartMsgYearTarget: {
color: ["#8EF0AB", "#288AFF", '#64BDFF', "#FFCE6A",],
xData: [],
color: ["#8EF0AB", "#288AFF","#64BDFF",],
xData: ['芯片总功率', '标准组件总功率','转化效率'],
// yName: "单位/%",
yAxis: [
{
@@ -208,17 +207,11 @@ export default {
color: '#288AFF'
}
},
{
value: 3,
itemStyle: {
color: '#64BDFF'
}
},
{
value: 0,
yAxisIndex: 1,
itemStyle: {
color: '#FFCE6A'
color: '#64BDFF'
}
}],
type: "bar",
@@ -228,35 +221,36 @@ export default {
position: [-18, -16],
color: "#68C483",
formatter: function (params) {
return params.value + "";
return params.value + "MW";
},
},
},
{
name: '销量折线图',
name: '',
type: 'bar',
data: [0, 0, 0,
{
value: 5,
itemStyle: {
color: '#FFCE6A'
color: '#68C483'
}
}],
barWith: "40%",
type: "bar",
barWidth: 20,
label: {
show: true,
position: "top",
formatter: "{c}%"
},
lineStyle: {
color: "#ffb122"
position: [-18, -16],
color: "#68C483",
formatter: function (params) {
return params.value + "%";
},
},
yAxisIndex: 1
}
],
},
chartMsg: {
color: ["#8EF0AB", "#288AFF", '#64BDFF', "#FFCE6A",],
color: ["#8EF0AB", "#288AFF","#FFCE6A",],
xData: [],
yName: "",
yAxis: [
@@ -281,11 +275,8 @@ export default {
],
series: [
{
name: "FTO投入",
name: "芯片总功率",
data: [
{ name: "%", value: 57.5 },
{ name: "%", value: 21.66 },
{ name: "%", value: 18.4 },
],
type: "bar",
barWidth: 20,
@@ -294,16 +285,13 @@ export default {
position: [-18, -16],
color: "#68C483",
formatter: function (params) {
return params.value.toFixed(2) + "%";
return params.value.toFixed(2) + "MW";
},
},
},
{
name: "芯片产量",
name: "标准组件总功率",
data: [
{ name: "%", value: 23.33 },
{ name: "%", value: 7.02 },
{ name: "%", value: 80.2 },
],
type: "bar",
barWidth: 20,
@@ -312,34 +300,13 @@ export default {
position: [0, -16],
color: "#288AFF",
formatter: function (params) {
return params.value.toFixed(2) + "%";
return params.value.toFixed(2) + "MW";
},
},
},
{
name: "标准组件产量",
name: "转化效率",
data: [
{ name: "%", value: 23.33 },
{ name: "%", value: 7.02 },
{ name: "%", value: 80.2 },
],
type: "bar",
barWidth: 20,
label: {
show: true,
position: [0, -16],
color: "#64BDFF",
formatter: function (params) {
return params.value.toFixed(2) + "%";
},
},
},
{
name: "综合良率",
data: [
{ name: "%", value: 85 },
{ name: "%", value: 85 },
{ name: "%", value: 85 },
],
type: "line",
symbol: "circle",
@@ -423,67 +390,69 @@ export default {
},
mounted() {
// this.getOverView()
const currentMonth = new Date()
this.listQuery.reportTime = [moment(currentMonth).format('yyyy-MM-DD'), moment(currentMonth).format('yyyy-MM-DD')]
this.changeTime()
const today = new Date()
const sevenDaysAgo = new Date(today.getTime() - (7 * 24 * 60 * 60 * 1000))
this.listQuery.beginTime = moment(sevenDaysAgo).format('yyyy-MM-DD')
this.listQuery.endTime = moment(today).format('yyyy-MM-DD')
this.listQuery.reportTime = [this.listQuery.beginTime, this.listQuery.endTime]
this.getDataList()
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
let spanOneArr = [], concatOne = 0;
// let spanTwoArr = [], concatTwo = 0;
this.tableData.map((item, index) => {
// console.log(inde);
if (index === 0) {
spanOneArr.push(1);
} else {
//第一列需合并相同内容的判断条件
if (item.factory === this.tableData[index - 1].factory) {
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
}
}
},
getYear(e) {
if (this.end && Number(this.end) - Number(this.start) > 10) {
if (this.listQuery.end - this.listQuery.start > 10 * 365 * 24 * 60 * 60 * 1000) {
this.$message({
message: '年份起止时间不能超过十年',
type: 'warning'
});
this.start = undefined
this.end = undefined
this.listQuery.reportTime = []
this.listQuery.start = undefined
this.listQuery.end = undefined
// console.log();
} else {
if (Number(this.end) < Number(this.start)) {
this.$message({
message: '结束年份不能小于开始年份',
type: 'warning'
});
this.start = undefined
this.end = undefined
} else {
this.listQuery.beginTime = Number(this.start)
this.listQuery.endTime = Number(this.end)
}
this.listQuery.beginTime = this.listQuery.start
this.listQuery.endTime = this.listQuery.end
}
if (!this.start && !this.end) {
if (!this.listQuery.start && !this.listQuery.end) {
this.listQuery.beginTime = undefined
this.listQuery.endTime = undefined
}
// console.log(e);
},
changeTime() {
if (this.listQuery.reportTime) {
console.log(this.listQuery.reportTime)
let start = new Date(this.listQuery.reportTime[0])
let end = new Date(this.listQuery.reportTime[1])
// const years = Number(this.listQuery.reportTime[1].slice(0, 4)) - Number(this.listQuery.reportTime[0].slice(0, 4))
// const months = Number(this.listQuery.reportTime[1].slice(4)) - Number(this.listQuery.reportTime[0].slice(4))
// console.log(years);
if ((end - start) > 31104000000) {
this.$message({
message: '时间范围不能超过24个月',
type: 'warning'
});
this.listQuery.reportTime = [];
} else {
this.listQuery.beginTime = this.listQuery.reportTime[0]
this.listQuery.endTime = this.listQuery.reportTime[1]
}
} else {
this.listQuery.beginTime = undefined
this.listQuery.endTime = undefined
}
},
onValueChange(picker, k) { // 选中近k周后触发的操作
if (this.start && this.end) {
this.date1 = moment(this.start.getTime() - 24 * 60 * 60 * 1000).format('YYYY-MM-DD')
this.date2 = moment(this.end.getTime() + 5 * 24 * 60 * 60 * 1000).format('YYYY-MM-DD')
// console.log(this.listQuery.reportTime[0], this.listQuery.reportTime[1])
if (this.listQuery.start && this.listQuery.end) {
console.log(this.listQuery.reportTime)
this.date1 = moment(this.listQuery.start.getTime() - 24 * 60 * 60 * 1000).format('YYYY-MM-DD HH:mm:ss')
this.date2 = moment(this.listQuery.end.getTime() + 5 * 24 * 60 * 60 * 1000).format('YYYY-MM-DD HH:mm:ss')
const numDays = (new Date(this.date2).getTime() - new Date(this.date1).getTime()) / (24 * 3600 * 1000);
if (numDays > 168) {
console.log(numDays)
@@ -492,20 +461,21 @@ export default {
type: 'warning'
});
} else {
this.listQuery.beginTime = this.date1
this.listQuery.endTime = this.date2
// this.listQuery.beginTime = Number(moment(this.start.getTime()).format('YYYYWW'))
// this.listQuery.endTime = Number(moment(this.end.getTime()).format('YYYYWW'))
this.listQuery.beginTime = moment(this.listQuery.start.getTime() - 24 * 60 * 60 * 1000).format('YYYY-MM-DD')
this.listQuery.endTime = moment(this.listQuery.end.getTime() + 5 * 24 * 60 * 60 * 1000).format('YYYY-MM-DD')
}
}
if (!this.start && !this.end) {
if (!this.listQuery.start && !this.listQuery.end) {
this.listQuery.beginTime = undefined
this.listQuery.endTime = undefined
}
},
changeDayTime() {
if (this.listQuery.reportTime) {
const numDays = Number(this.listQuery.reportTime[1]) - Number(this.listQuery.reportTime[0])
// this.createbeginTime = moment(new Date(this.listQuery.reportTime[0]), 'yyyy-MM-dd hh:mm:ss');
// this.createendTime = moment(new Date(this.listQuery.reportTime[1]), 'yyyy-MM-dd hh:mm:ss');
console.log(this.listQuery.reportTime[1])
const numDays = (this.listQuery.reportTime[1] - this.listQuery.reportTime[0]) / (24 * 3600 * 1000);
if (numDays > 30) {
this.$message({
message: '时间范围不能超过30天',
@@ -521,18 +491,23 @@ export default {
this.listQuery.endTime = undefined
}
},
getOverView() {
// getOverView().then(res => {
// this.data = res.data
// console.log('aa', res.data)
// })
},
otherMethods(val) {
this.detailOrUpdateVisible = true;
// this.addOrEditTitle = "详情";
this.$nextTick(() => {
// this.$refs.detailOrUpdate.init(val.data.id);
});
changeTime(value) {
if (this.listQuery.reportTime) {
const numDays = this.listQuery.reportTime[1] - this.listQuery.reportTime[0];
if (numDays > 2 * 365 * 24 * 60 * 60 * 1000) {
this.$message({
message: '时间范围不能超过24个月',
type: 'warning'
});
this.listQuery.reportTime = [];
} else {
this.listQuery.beginTime = this.listQuery.reportTime[0]
this.listQuery.endTime = this.listQuery.reportTime[1]
}
} else {
this.listQuery.beginTime = undefined
this.listQuery.endTime = undefined
}
},
async getDataList() {
this.otherProps = []
@@ -563,30 +538,48 @@ export default {
}
]
res.data.forEach(element => {
element.list.forEach((ele, index) => {
element.list.reverse().forEach((ele, index) => {
let i = index + 1
this.chartMsg.xData.push(ele.reportTimep)
this.otherProps.push({
label: ele.reportTimep,
props: 'value' + i
prop: 'value' + i
})
})
});
console.log(this.otherProps)
})
this.chartMsg.xData.push(res.data[0].list[0].reportTimep + '目标')
if (this.listQuery.date === 0 || this.listQuery.date === 1 || this.listQuery.date === 2) {
this.otherProps.push({
label: res.data[0].list[0].reportTimep + '目标',
prop: 'dayData'
})
dataArr[0]['dayData'] = res.data[0].chipTarget
dataArr[1]['dayData'] = res.data[0].standTarget
dataArr[2]['dayData'] = res.data[0].conversionEfficiencyTarget
}
if (this.listQuery.date === 2 || this.listQuery.date === 3) {
this.otherProps.push({
label: res.data[0].yearTarget.targetTime,
prop: 'yearData'
})
dataArr[0]['yearData'] = res.data[0].yearTarget.chipTotalPower
dataArr[1]['yearData'] = res.data[0].yearTarget.componentTotalPower
dataArr[2]['yearData'] = res.data[0].yearTarget.componentConversionEfficiency
}
res.data.forEach((ele, index) => {
let i = index + 1
let m = 'value' + i
// let i = index + 1
// let m = 'value' + i
ele.list.forEach((item, index) => {
let i = index + 1
let m = 'value' + i
// ele.productionSituationDataVOList.forEach((item) => {
dataArr[0]['' + m + ''] = item.chipTotalPowers
dataArr[1]['' + m + ''] = item.scTotalPowers
dataArr[2]['' + m + ''] = item.conversionEfficiency
dataArr[0].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
dataArr[1].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
dataArr[2].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
dataArr[3].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
dataArr[1]['' + m + ''] = ele.scTotalPowers
dataArr[2]['' + m + ''] = ele.conversionEfficiency
// dataArr[3]['' + m + ''] = ele.comprehensiveYieldRate
// })
// ele.titleValue
@@ -595,74 +588,47 @@ export default {
// props: 'value' + index + 1,
// })
})
// ele.productionSituationDataVOList.forEach((item) => {
// dataArr[0]['' + m + ''] = item.chipTotalPowers
// dataArr[0].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
// dataArr[1].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
// dataArr[2].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
// dataArr[3].factory = ele.factory === 1 ? '邯郸' : '瑞昌'
// dataArr[1]['' + m + ''] = ele.scTotalPowers
// dataArr[2]['' + m + ''] = ele.conversionEfficiency
// dataArr[3]['' + m + ''] = ele.comprehensiveYieldRate
// })
// ele.titleValue
// .push({
// label: ele.titleValue,
// props: 'value' + index + 1,
// })
})
for (let i in dataArr[0]) {
this.chartMsg.series[0].name = dataArr[0]['item']
if (i.search('value') === 0) {
this.chartMsg.series[0].data.push({
name: dataArr[0]['item'],
name: dataArr[0][i]
})
}
}
for (let i in dataArr[1]) {
this.chartMsg.series[1].name = dataArr[1]['item']
if (i.search('value') === 0) {
this.chartMsg.series[1].data.push({
name: dataArr[1]['item'],
name: dataArr[1][i]
})
}
}
for (let i in dataArr[2]) {
this.chartMsg.series[2].name = dataArr[2]['item']
if (i.search('value') === 0) {
this.chartMsg.series[2].data.push({
name: dataArr[2]['item'],
name: dataArr[2][i]
})
}
}
for (let i in dataArr[3]) {
this.chartMsg.series[3].name = dataArr[3]['item']
if (i.search('value') === 0) {
this.chartMsg.series[3].data.push({
name: dataArr[3]['item'],
name: dataArr[3][i]
})
}
}
// this.tableProps = otherProps
// res.data.list.forEach((ele) => {
// console.log(ele);
// ele.productionSituationDataVOList.forEach((item) => {
// let obj = {
// bipvProductOutput: item.bipvProductOutput,
// chipYield: item.chipYield,
// componentYield: item.componentYield,
// factory: item.factory,
// ftoInput: item.ftoInput,
// titleValue:ele.titleValue
// }
// dataArr.push(obj)
// })
// })
this.title = res.data[0].yearTarget.targetTime + '目标值'
this.chartMsgYearTarget.series[0].data = [
{
value: res.data[0].yearTarget.chipTotalPower,
itemStyle: {
color: '#8EF0AB'
}
},
{
value: res.data[0].yearTarget.componentTotalPower,
itemStyle: {
color: '#288AFF'
}
},
{
value: null,
itemStyle: {
color: '#64BDFF'
}
}]
this.chartMsgYearTarget.series[1].data = [
{
value: null,
itemStyle: {
color: '#8EF0AB'
}
},
{
value: null,
itemStyle: {
color: '#288AFF'
}
},
{
value: res.data[0].yearTarget.componentConversionEfficiency,
itemStyle: {
color: '#64BDFF'
}
}]
console.log(dataArr);
for (let i in dataArr[0]) {
this.chartMsg.series[0].name = dataArr[0]['item']
if (i.search('value') === 0) {
@@ -699,16 +665,7 @@ export default {
// })
// }
// }
console.log(dataArr)
this.tableData = dataArr
// this.tableProps.push()
this.listQuery.total = res.data.total
if (this.listQuery.total > 0) {
this.tableData.forEach(item => {
item.beginTime = item.beginTime ? item.beginTime[0] + '-' + item.beginTime[1] + '-' + item.beginTime[2] : '--'
item.endTime = item.endTime ? item.endTime[0] + '-' + item.endTime[1] + '-' + item.endTime[2] : '--'
})
}
},
_setTableHeight() {
this.tableH = this.tableHeight(137) / 2 - 70;