Compare commits
10 Commits
fad6028469
...
03dd862cb4
Author | SHA1 | Date | |
---|---|---|---|
|
03dd862cb4 | ||
|
f14e9d7408 | ||
7232486f8d | |||
2ab8acd4ca | |||
9adeb160c1 | |||
05b5814907 | |||
3d7e3d828c | |||
5f98f4a361 | |||
76c95f7048 | |||
ae520f84d0 |
BIN
src/assets/images/map.png
Normal file
BIN
src/assets/images/map.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 MiB |
@ -378,10 +378,14 @@ function splitCurrentAndPreviousA(factoryListResponse, targetListResponse, prodO
|
|||||||
transformRate.target[fId] = componentConversionEfficiency
|
transformRate.target[fId] = componentConversionEfficiency
|
||||||
}
|
}
|
||||||
// 芯片OEE
|
// 芯片OEE
|
||||||
chipOeeRate.current[fId] = factory.oee;
|
if (factory.glassType === 0) {
|
||||||
|
chipOeeRate.current[fId] = factory.oee;
|
||||||
|
}
|
||||||
// chipOeeRate.previous[fId] = factory.previousYearOee;
|
// chipOeeRate.previous[fId] = factory.previousYearOee;
|
||||||
// 转化效率
|
// 转化效率
|
||||||
transformRate.current[fId] = factory.componentConversionEfficiency;
|
if (factory.glassType === 1) {
|
||||||
|
transformRate.current[fId] = factory.componentConversionEfficiency;
|
||||||
|
}
|
||||||
// transformRate.previous[fId] = factory.previousYearComponentConversionEfficiency ;
|
// transformRate.previous[fId] = factory.previousYearComponentConversionEfficiency ;
|
||||||
// 芯片良率 与 标准组件良率
|
// 芯片良率 与 标准组件良率
|
||||||
if (![0, 1].includes(factory.glassType)) continue;
|
if (![0, 1].includes(factory.glassType)) continue;
|
||||||
@ -448,8 +452,11 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
|
|||||||
if (factoryListResponse && factoryListResponse[0] != null) {
|
if (factoryListResponse && factoryListResponse[0] != null) {
|
||||||
for (const factory of factoryListResponse) {
|
for (const factory of factoryListResponse) {
|
||||||
const fId = getFactoryId(factory);
|
const fId = getFactoryId(factory);
|
||||||
|
console.log('factory.inputNumber', factory, fId);
|
||||||
|
if (factory.glassType === 0) {
|
||||||
|
chipInvest.current[fId] = factory.inputNumber
|
||||||
|
}
|
||||||
// const preFId = getPreFactoryId(factory);
|
// const preFId = getPreFactoryId(factory);
|
||||||
|
|
||||||
// 获取目标值
|
// 获取目标值
|
||||||
if (targetListResponse) {
|
if (targetListResponse) {
|
||||||
const { chipYield, componentYield, bipvProductOutput } =
|
const { chipYield, componentYield, bipvProductOutput } =
|
||||||
@ -459,7 +466,6 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
|
|||||||
bipvOutput.target[fId] = bipvProductOutput;
|
bipvOutput.target[fId] = bipvProductOutput;
|
||||||
}
|
}
|
||||||
// 芯片投入
|
// 芯片投入
|
||||||
chipInvest.current[fId] = factory.inputNumber;
|
|
||||||
|
|
||||||
// 产出数据, 0 - (玻璃)芯片产出, 1 - 标准组件产出, 2 - BIPV产出
|
// 产出数据, 0 - (玻璃)芯片产出, 1 - 标准组件产出, 2 - BIPV产出
|
||||||
// 因为后端写的垃圾数据,所以这里要做一下判断
|
// 因为后端写的垃圾数据,所以这里要做一下判断
|
||||||
@ -467,6 +473,7 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
|
|||||||
const _t = [chipOutput, stdOutput, bipvOutput][factory.glassType];
|
const _t = [chipOutput, stdOutput, bipvOutput][factory.glassType];
|
||||||
_t.current[fId] = factory.outputNumber;
|
_t.current[fId] = factory.outputNumber;
|
||||||
}
|
}
|
||||||
|
console.log('chipInvest',chipInvest);
|
||||||
return {
|
return {
|
||||||
chipInvest,
|
chipInvest,
|
||||||
// ftoInvest,
|
// ftoInvest,
|
||||||
@ -475,15 +482,6 @@ function splitCurrentAndPrevious(factoryListResponse, targetListResponse, prodOu
|
|||||||
stdOutput,
|
stdOutput,
|
||||||
bipvOutput,
|
bipvOutput,
|
||||||
};
|
};
|
||||||
}else{
|
|
||||||
return {
|
|
||||||
chipInvest,
|
|
||||||
// ftoInvest,
|
|
||||||
ftoInvest,
|
|
||||||
chipOutput,
|
|
||||||
stdOutput,
|
|
||||||
bipvOutput,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ export default {
|
|||||||
legend() {
|
legend() {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -60,13 +63,13 @@ export default {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日`, color: "#12f7f1" },
|
{ label: `${year - 1}年${yesterday}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日`, color: "#12f7f1" },
|
{ label: `${dayBeYes}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
@ -96,7 +99,7 @@ export default {
|
|||||||
items = [
|
items = [
|
||||||
{ label: `${year - 1}年`, color: "#12f7f1" },
|
{ label: `${year - 1}年`, color: "#12f7f1" },
|
||||||
{ label: `${year}年`, color: "#58adfa" },
|
{ label: `${year}年`, color: "#58adfa" },
|
||||||
{ label: `${year}年`, color: "#58adfa" },
|
{ label: `${year}年目标`, color: "#58adfa" },
|
||||||
|
|
||||||
// { label: `${year}年目标`, value: valueTuple[2] },
|
// { label: `${year}年目标`, value: valueTuple[2] },
|
||||||
];
|
];
|
||||||
@ -163,8 +166,11 @@ function getTemplate(period, dataList, than) {
|
|||||||
// console.log('dataList',dataList);
|
// console.log('dataList',dataList);
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -177,11 +183,11 @@ function getTemplate(period, dataList, than) {
|
|||||||
if (period === '日' && than === '同比') {
|
if (period === '日' && than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${year-1}年${month}月${today}日`,
|
name: `${year - 1}年${yesterday}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
@ -189,11 +195,11 @@ function getTemplate(period, dataList, than) {
|
|||||||
} else if (period === '日' && than === '环比') {
|
} else if (period === '日' && than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${yesterday}日`,
|
name: `${dayBeYes}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
|
@ -47,8 +47,11 @@ export default {
|
|||||||
legend() {
|
legend() {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -60,13 +63,13 @@ export default {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日`, color: "#12f7f1" },
|
{ label: `${year - 1}年${yesterday}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日`, color: "#12f7f1" },
|
{ label: `${dayBeYes}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
@ -96,7 +99,7 @@ export default {
|
|||||||
items = [
|
items = [
|
||||||
{ label: `${year - 1}年`, color: "#12f7f1" },
|
{ label: `${year - 1}年`, color: "#12f7f1" },
|
||||||
{ label: `${year}年`, color: "#58adfa" },
|
{ label: `${year}年`, color: "#58adfa" },
|
||||||
{ label: `${year}年`, color: "#58adfa" },
|
{ label: `${year}年目标`, color: "#58adfa" },
|
||||||
|
|
||||||
// { label: `${year}年目标`, value: valueTuple[2] },
|
// { label: `${year}年目标`, value: valueTuple[2] },
|
||||||
];
|
];
|
||||||
@ -154,8 +157,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
// console.log('dataList',dataList);
|
// console.log('dataList',dataList);
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -168,11 +174,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
if (period === '日' && than === '同比') {
|
if (period === '日' && than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${year-1}年${month}月${today}日`,
|
name: `${year - 1}年${yesterday}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
@ -180,11 +186,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
} else if (period === '日' && than === '环比') {
|
} else if (period === '日' && than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${yesterday}日`,
|
name: `${dayBeYes}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2024-05-07 13:22:43
|
* @Date: 2024-05-07 13:22:43
|
||||||
* @LastEditTime: 2024-06-06 15:12:58
|
* @LastEditTime: 2024-06-14 10:05:37
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
|
@ -87,8 +87,11 @@ export default {
|
|||||||
const vt = this.valueTuple;
|
const vt = this.valueTuple;
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -100,13 +103,13 @@ export default {
|
|||||||
// const year = new Date().getFullYear();
|
// const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${month}月${today}日良率`, },
|
{ label: `${yesterday}日良率`, },
|
||||||
{ label: `${year-1}年${month}月${today}日良率` },
|
{ label: `${year - 1}年${yesterday}日良率` },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${month}月${today}日良率` },
|
|
||||||
{ label: `${yesterday}日良率` },
|
{ label: `${yesterday}日良率` },
|
||||||
|
{ label: `${dayBeYes}日良率` },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
@ -139,7 +142,7 @@ export default {
|
|||||||
}
|
}
|
||||||
let titleValue = vt[1] === null ? 0 + '%' : this.formatNumber(vt[1]) + '%',
|
let titleValue = vt[1] === null ? 0 + '%' : this.formatNumber(vt[1]) + '%',
|
||||||
subtitle = {
|
subtitle = {
|
||||||
日: "本日良率",
|
日: "昨日良率",
|
||||||
周: "本周良率",
|
周: "本周良率",
|
||||||
月: `${month}月良率`,
|
月: `${month}月良率`,
|
||||||
年: `${year}良率`,
|
年: `${year}良率`,
|
||||||
@ -161,8 +164,11 @@ export default {
|
|||||||
legend() {
|
legend() {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -174,13 +180,13 @@ export default {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日良率`, value: isNaN(this.valueTuple[0]) || this.valueTuple[0] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[0]) ) + "%" },
|
{ label: `${year - 1}年${yesterday}日良率`, value: isNaN(this.valueTuple[0]) || this.valueTuple[0] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[0]) ) + "%" },
|
||||||
{ label: `${month}月${today}日良率`, value: isNaN(this.valueTuple[1]) || this.valueTuple[1] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[1])) + "%" },
|
{ label: `${yesterday}日良率`, value: isNaN(this.valueTuple[1]) || this.valueTuple[1] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[1])) + "%" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日良率`, value: isNaN(this.valueTuple[0]) || this.valueTuple[0] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[0])) + "%" },
|
{ label: `${dayBeYes}日良率`, value: isNaN(this.valueTuple[0]) || this.valueTuple[0] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[0])) + "%" },
|
||||||
{ label: `${month}月${today}日良率`, value: isNaN(this.valueTuple[1]) || this.valueTuple[1] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[1])) + "%" },
|
{ label: `${yesterday}日良率`, value: isNaN(this.valueTuple[1]) || this.valueTuple[1] == null ? 0 + "%" : (this.formatNumber(this.valueTuple[1])) + "%" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2024-05-07 10:25:10
|
* @Date: 2024-05-07 10:25:10
|
||||||
* @LastEditTime: 2024-06-06 15:14:29
|
* @LastEditTime: 2024-06-14 09:58:01
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -69,16 +69,19 @@ export default {
|
|||||||
titlePre() {
|
titlePre() {
|
||||||
console.log(this.city);
|
console.log(this.city);
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
const today = new Date().getDate();
|
const today = new Date().getDate();
|
||||||
const month = new Date().getMonth() + 1;
|
const month = new Date().getMonth() + 1;
|
||||||
const lastMonth = new Date().getMonth() + 1 === 12 ? 1 : new Date().getMonth() + 1 - 1;
|
const lastMonth = new Date().getMonth() + 1 === 12 ? 1 : new Date().getMonth() + 1 - 1;
|
||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
return `${year-1}年${month}月${today}日`
|
return `${year - 1}年${yesterday}日`
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
return `${yesterday}日`
|
return `${dayBeYes}日`
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
return `${year-1}年本周`
|
return `${year-1}年本周`
|
||||||
} else if (this.period === '周' && this.than === '环比') {
|
} else if (this.period === '周' && this.than === '环比') {
|
||||||
@ -93,14 +96,18 @@ export default {
|
|||||||
},
|
},
|
||||||
title() {
|
title() {
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
const today = new Date().getDate();
|
const today = new Date().getDate();
|
||||||
const month = new Date().getMonth() + 1;
|
const month = new Date().getMonth() + 1;
|
||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
return `${month}月${today}日`
|
return `${yesterday}日`
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
return `${month}月${today}日`
|
return `${yesterday}日`
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
return `本周`
|
return `本周`
|
||||||
} else if (this.period === '周' && this.than === '环比') {
|
} else if (this.period === '周' && this.than === '环比') {
|
||||||
|
@ -45,8 +45,11 @@ export default {
|
|||||||
legend() {
|
legend() {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -58,13 +61,13 @@ export default {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日`, color: "#12f7f1" },
|
{ label: `${year - 1}年${yesterday}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日`, color: "#12f7f1" },
|
{ label: `${dayBeYes}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
@ -149,8 +152,11 @@ export default {
|
|||||||
function getTemplate(period, dataList,than) {
|
function getTemplate(period, dataList,than) {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -163,11 +169,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
if (period === '日' && than === '同比') {
|
if (period === '日' && than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${year-1}年${month}月${today}日`,
|
name: `${year - 1}年${yesterday}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
@ -175,11 +181,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
} else if (period === '日' && than === '环比') {
|
} else if (period === '日' && than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${yesterday}日`,
|
name: `${dayBeYes}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
|
@ -45,8 +45,11 @@ export default {
|
|||||||
legend() {
|
legend() {
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -58,13 +61,13 @@ export default {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日`, color: "#12f7f1" },
|
{ label: `${year - 1}年${yesterday}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日`, color: "#12f7f1" },
|
{ label: `${dayBeYes}日`, color: "#12f7f1" },
|
||||||
{ label: `${month}月${today}日`, color: "#58adfa" },
|
{ label: `${yesterday}日`, color: "#58adfa" },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
@ -150,9 +153,15 @@ export default {
|
|||||||
|
|
||||||
function getTemplate(period, dataList,than) {
|
function getTemplate(period, dataList,than) {
|
||||||
let items = [];
|
let items = [];
|
||||||
|
// var day1 = new Date();
|
||||||
|
// day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
||||||
|
// var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -165,11 +174,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
if (period === '日' && than === '同比') {
|
if (period === '日' && than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${year-1}年${month}月${today}日`,
|
name: `${year - 1}年${yesterday}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
@ -177,11 +186,11 @@ function getTemplate(period, dataList,than) {
|
|||||||
} else if (period === '日' && than === '环比') {
|
} else if (period === '日' && than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{
|
{
|
||||||
name: `${yesterday}日`,
|
name: `${dayBeYes}日`,
|
||||||
data: dataList ? dataList[0] : [],
|
data: dataList ? dataList[0] : [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: `${month}月${today}日`,
|
name: `${yesterday}日`,
|
||||||
data: dataList ? dataList[1] : [],
|
data: dataList ? dataList[1] : [],
|
||||||
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
// : Array.from({ length: 7 }, () => Math.floor(Math.random() * 1000)),
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2024-05-20 13:32:59
|
* @Date: 2024-05-20 13:32:59
|
||||||
* @LastEditTime: 2024-06-06 08:42:04
|
* @LastEditTime: 2024-06-14 09:44:42
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -78,13 +78,13 @@ export default {
|
|||||||
valueTuple() {
|
valueTuple() {
|
||||||
// [previousValue, currentValue, sumValue?]
|
// [previousValue, currentValue, sumValue?]
|
||||||
const getter = this.$store.getters.copilot.yield[this.dataSourceField];
|
const getter = this.$store.getters.copilot.yield[this.dataSourceField];
|
||||||
if (this.period === "日" || this.period === "周") {
|
// if (this.period === "日" || this.period === "周") {
|
||||||
console.log(this.period)
|
// console.log(this.period)
|
||||||
return [
|
// return [
|
||||||
getter.previous[this.factoryId],
|
// getter.previous[this.factoryId],
|
||||||
getter.current[this.factoryId],
|
// getter.current[this.factoryId],
|
||||||
];
|
// ];
|
||||||
}
|
// }
|
||||||
// [100, 200, 200]
|
// [100, 200, 200]
|
||||||
return [
|
return [
|
||||||
getter.previous[this.factoryId],
|
getter.previous[this.factoryId],
|
||||||
@ -100,8 +100,11 @@ export default {
|
|||||||
const vt = this.valueTuple;
|
const vt = this.valueTuple;
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -113,14 +116,14 @@ export default {
|
|||||||
// const year = new Date().getFullYear();
|
// const year = new Date().getFullYear();
|
||||||
if (this.period === '日' && this.than === '同比') {
|
if (this.period === '日' && this.than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${month}月${today}日累计`,},
|
{ label: `${yesterday}日累计`,},
|
||||||
{ label: `${year-1}年${month}月${today}日累计` },
|
{ label: `${year - 1}年${yesterday}累计` },
|
||||||
{ label: `${month}月${today}日目标`, },
|
{ label: `${month}月${today}日目标`, },
|
||||||
];
|
];
|
||||||
} else if (this.period === '日' && this.than === '环比') {
|
} else if (this.period === '日' && this.than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${month}月${today}日累计`},
|
{ label: `${yesterday}日累计`},
|
||||||
{ label: `${yesterday}日累计` },
|
{ label: `${dayBeYes}日累计` },
|
||||||
{ label: `${month}月${today}日目标`, },
|
{ label: `${month}月${today}日目标`, },
|
||||||
];
|
];
|
||||||
} else if (this.period === '周' && this.than === '同比') {
|
} else if (this.period === '周' && this.than === '同比') {
|
||||||
@ -160,9 +163,9 @@ export default {
|
|||||||
: (vt[1] != 0 && vt[1] != null) && vt[2] == 0
|
: (vt[1] != 0 && vt[1] != null) && vt[2] == 0
|
||||||
? "100%" : '0%',
|
? "100%" : '0%',
|
||||||
subtitle =
|
subtitle =
|
||||||
this.period == "日" ? `${month}月${today}日累计完成值` : this.period == "周" ? `本周累计完成值` : this.period == "月" ? `${month}月累计完成值` : `${year}年累计完成值`;
|
this.period == "日" ? `${yesterday}日累计完成值` : this.period == "周" ? `本周累计完成值` : this.period == "月" ? `${month}月累计完成值` : `${year}年累计完成值`;
|
||||||
console.log(this.valueTuple[0], this.valueTuple[1], this.valueTuple[2],)
|
console.log('titleValue', items)
|
||||||
console.log(this.valueTuple[2]- this.valueTuple[1])
|
// console.log(this.valueTuple[2]- this.valueTuple[1])
|
||||||
return getOptions({
|
return getOptions({
|
||||||
titleValue,
|
titleValue,
|
||||||
subtitle,
|
subtitle,
|
||||||
@ -221,8 +224,12 @@ function calculateItems(period, valueTuple, than) {
|
|||||||
console.log('valueTuple', valueTuple);
|
console.log('valueTuple', valueTuple);
|
||||||
let items = [];
|
let items = [];
|
||||||
var day1 = new Date();
|
var day1 = new Date();
|
||||||
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
|
var day2 = new Date();
|
||||||
|
day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000)
|
||||||
|
day2.setTime(day2.getTime() - 48 * 60 * 60 * 1000)
|
||||||
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
var yesterday = (day1.getMonth() + 1) + "月" + day1.getDate()
|
||||||
|
var dayBeYes = (day2.getMonth() + 1) + "月" + day2.getDate()
|
||||||
|
|
||||||
//今天的时间
|
//今天的时间
|
||||||
// var day2 = new Date();
|
// var day2 = new Date();
|
||||||
// day2.setTime(day2.getTime());
|
// day2.setTime(day2.getTime());
|
||||||
@ -234,14 +241,14 @@ function calculateItems(period, valueTuple, than) {
|
|||||||
const year = new Date().getFullYear();
|
const year = new Date().getFullYear();
|
||||||
if (period === '日' && than === '同比') {
|
if (period === '日' && than === '同比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${year-1}年${month}月${today}日累计`, value: valueTuple[0] },
|
{ label: `${year - 1}年${yesterday}累计`, value: valueTuple[0] },
|
||||||
{ label: `${month}月${today}日累计`, value: valueTuple[1] },
|
{ label: `${yesterday}累计`, value: valueTuple[1] },
|
||||||
{ label: `${month}月${today}日目标`, value: valueTuple[2] },
|
{ label: `${month}月${today}日目标`, value: valueTuple[2] },
|
||||||
];
|
];
|
||||||
} else if (period === '日' && than === '环比') {
|
} else if (period === '日' && than === '环比') {
|
||||||
items = [
|
items = [
|
||||||
{ label: `${yesterday}日累计`, value: valueTuple[0] },
|
{ label: `${dayBeYes}日累计`, value: valueTuple[0] },
|
||||||
{ label: `${month}月${today}日累计`, value: valueTuple[1] },
|
{ label: `${yesterday}日累计`, value: valueTuple[1] },
|
||||||
{ label: `${month}月${today}日目标`, value: valueTuple[2] },
|
{ label: `${month}月${today}日目标`, value: valueTuple[2] },
|
||||||
];
|
];
|
||||||
} else if (period === '周' && than === '同比') {
|
} else if (period === '周' && than === '同比') {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2024-04-28 13:42:51
|
* @Date: 2024-04-28 13:42:51
|
||||||
* @LastEditTime: 2024-06-05 14:12:31
|
* @LastEditTime: 2024-06-14 09:03:26
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -221,6 +221,7 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
actualOptions() {
|
actualOptions() {
|
||||||
|
console.log('this.output.current / this.output.target', this.output.current/this.output.target);
|
||||||
const year = new Date().getFullYear()
|
const year = new Date().getFullYear()
|
||||||
const options = JSON.parse(JSON.stringify(this.options));
|
const options = JSON.parse(JSON.stringify(this.options));
|
||||||
// console.log('options', options);
|
// console.log('options', options);
|
||||||
@ -228,7 +229,7 @@ export default {
|
|||||||
if (!this.output.target) options.title.text = "0%";
|
if (!this.output.target) options.title.text = "0%";
|
||||||
else
|
else
|
||||||
options.title.text =
|
options.title.text =
|
||||||
(this.output.current / this.output.target) * 100 + "%";
|
((this.output.current / this.output.target).toFixed(2)) * 100 + "%";
|
||||||
// 外环
|
// 外环
|
||||||
if (
|
if (
|
||||||
this.output.current == this.output.target &&
|
this.output.current == this.output.target &&
|
||||||
|
@ -59,7 +59,7 @@ export default {
|
|||||||
actualOptions: null,
|
actualOptions: null,
|
||||||
options: {
|
options: {
|
||||||
grid: {
|
grid: {
|
||||||
left: "3%",
|
left: "5%",
|
||||||
right: "4%",
|
right: "4%",
|
||||||
bottom: "0",
|
bottom: "0",
|
||||||
top: "15%",
|
top: "15%",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2024-04-28 13:42:51
|
* @Date: 2024-04-28 13:42:51
|
||||||
* @LastEditTime: 2024-06-04 15:35:54
|
* @LastEditTime: 2024-06-14 09:16:09
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -65,7 +65,7 @@ export default {
|
|||||||
isFullscreen: false,
|
isFullscreen: false,
|
||||||
options: {
|
options: {
|
||||||
grid: {
|
grid: {
|
||||||
left: "3%",
|
left: "5%",
|
||||||
right: "4%",
|
right: "4%",
|
||||||
bottom: "0",
|
bottom: "0",
|
||||||
top: "18%",
|
top: "18%",
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
style="
|
style="
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 12%;
|
top: 12%;
|
||||||
left: 20%;
|
left: 15%;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<p
|
<p
|
||||||
style="
|
style="
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 26px;
|
font-size: 24px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
color: #26b9de;
|
color: #26b9de;
|
||||||
opacity: 75%;
|
opacity: 75%;
|
||||||
@ -52,8 +52,8 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src="../assets/images/login.png"
|
src="../assets/images/map.png"
|
||||||
style="position: absolute; top: 30%; left: 15%; width: 40vw"
|
style="position: absolute; top: 00%; left: 11%; width: 50vw"
|
||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
253
src/views/report/chipOEEBM/index.vue
Normal file
253
src/views/report/chipOEEBM/index.vue
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">芯片OEE对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "ChipOEEBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 57.5 },
|
||||||
|
{ name: "%", value: 21.66 },
|
||||||
|
{ name: "%", value: 18.4 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [-18, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 23.33 },
|
||||||
|
{ name: "%", value: 7.02 },
|
||||||
|
{ name: "%", value: 80.2 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "chipOEEBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "ChipOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "ChipOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "ChipOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
244
src/views/report/chipOutputBM/index.vue
Normal file
244
src/views/report/chipOutputBM/index.vue
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">芯片产量对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "ChipOutputBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/片",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "chipOutputBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "ChipOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "ChipOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "ChipOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
244
src/views/report/chipPerCapitaBM/index.vue
Normal file
244
src/views/report/chipPerCapitaBM/index.vue
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">芯片人均产量对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "ChipPerCapitaBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/片",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "chipPerCapitaBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "ChipPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "ChipPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "ChipPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
253
src/views/report/chipYieldBM/index.vue
Normal file
253
src/views/report/chipYieldBM/index.vue
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">芯片良率对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "ChipYieldBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 57.5 },
|
||||||
|
{ name: "%", value: 21.66 },
|
||||||
|
{ name: "%", value: 18.4 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [-18, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 23.33 },
|
||||||
|
{ name: "%", value: 7.02 },
|
||||||
|
{ name: "%", value: 80.2 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "chipYieldBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "ChipYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "ChipYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "ChipYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
213
src/views/report/components/bmLineBar.vue
Normal file
213
src/views/report/components/bmLineBar.vue
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 暂无数据 -->
|
||||||
|
<div
|
||||||
|
class="no-data-bg"
|
||||||
|
style="position: relative; left: 50%; transform: translateX(-50%)"
|
||||||
|
v-show="this.chartMsg.series.length === 0"
|
||||||
|
></div>
|
||||||
|
<!-- 图例 -->
|
||||||
|
<div v-show="this.chartMsg.series.length > 0">
|
||||||
|
<div class="legend">
|
||||||
|
<span class="item" v-for="item in legendList" :key="item.id">
|
||||||
|
<span
|
||||||
|
v-if="item.type === 1"
|
||||||
|
class="block"
|
||||||
|
:style="{ backgroundColor: item.color }"
|
||||||
|
></span>
|
||||||
|
<span
|
||||||
|
v-if="item.type === 2"
|
||||||
|
class="line"
|
||||||
|
:style="{ backgroundColor: item.color }"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="line-block"
|
||||||
|
:style="{ backgroundColor: item.color }"
|
||||||
|
></span>
|
||||||
|
</span>
|
||||||
|
{{ item.name }}</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
:id="chartId"
|
||||||
|
:style="{ width: '100%', height: chartHeight + 'px' }"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
import { debounce } from "@/utils/debounce";
|
||||||
|
export default {
|
||||||
|
name: "bmLineBar",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
myChart: "",
|
||||||
|
option: {
|
||||||
|
color: [],
|
||||||
|
// color: ["#8EF0AB", "#63BDFF", "#288AFF"],
|
||||||
|
grid: {
|
||||||
|
left: 100,
|
||||||
|
right: 10,
|
||||||
|
bottom: 30,
|
||||||
|
top: 30,
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: "axis",
|
||||||
|
axisPointer: {
|
||||||
|
// type: "cross",
|
||||||
|
crossStyle: {
|
||||||
|
color: "rgba(237,237,237,0.5)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
var res = `<span style='color:rgba(0,0,0,0.8)'>${params[0].axisValueLabel}</span>`;
|
||||||
|
for (var i = 0, l = params.length; i < l; i++) {
|
||||||
|
res +=
|
||||||
|
"<br/>" +
|
||||||
|
`<span style='display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${params[i].color}'></span>` +
|
||||||
|
`<span style='display:inline-block;width:150px;color:rgba(0,0,0,0.8);font-size:14px;'>${params[i].seriesName}</span>` +
|
||||||
|
`<span style='color:rgba(0,0,0,0.48);font-size:14px;'>${
|
||||||
|
params[i].name === "%"
|
||||||
|
? (params[i].value ? params[i].value.toFixed(2) : 0.0) +
|
||||||
|
params[i].name
|
||||||
|
: params[i].value
|
||||||
|
}</span>`;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: "category",
|
||||||
|
data: [],
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
axisPointer: {
|
||||||
|
type: "shadow",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: "value",
|
||||||
|
name: "",
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 12,
|
||||||
|
align: "right",
|
||||||
|
},
|
||||||
|
axisLabel: {},
|
||||||
|
},
|
||||||
|
series: [],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
chartHeight: {
|
||||||
|
type: Number,
|
||||||
|
default: 300,
|
||||||
|
},
|
||||||
|
legendList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
chartMsg: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
chartId: {
|
||||||
|
type: String,
|
||||||
|
default: "bmChart",
|
||||||
|
},
|
||||||
|
chartNum: {
|
||||||
|
type: Number,
|
||||||
|
default: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
chartHeight: {
|
||||||
|
handler(newVal) {
|
||||||
|
this.chartHeight = newVal;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
chartNum(val) {
|
||||||
|
this.canvasReset();
|
||||||
|
},
|
||||||
|
chartMsg: {
|
||||||
|
handler(newVal) {
|
||||||
|
this.canvasReset();
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.canvasReset();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
canvasReset() {
|
||||||
|
debounce(() => {
|
||||||
|
this.getMes();
|
||||||
|
}, 500)();
|
||||||
|
},
|
||||||
|
getMes() {
|
||||||
|
if (this.myChart) {
|
||||||
|
this.myChart.dispose();
|
||||||
|
}
|
||||||
|
var chartDom = document.getElementById(this.chartId);
|
||||||
|
this.myChart = echarts.init(chartDom);
|
||||||
|
this.option.color = this.chartMsg.color;
|
||||||
|
this.option.xAxis.data = this.chartMsg.xData;
|
||||||
|
this.option.yAxis.name = this.chartMsg.yName;
|
||||||
|
if (
|
||||||
|
this.chartMsg.series.length > 0 &&
|
||||||
|
this.chartMsg.series[0].data[0].name === "%"
|
||||||
|
) {
|
||||||
|
this.option.yAxis.axisLabel = {
|
||||||
|
formatter: function (value) {
|
||||||
|
return value + ".00%";
|
||||||
|
},
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
this.option.yAxis.axisLabel = {
|
||||||
|
formatter: function (value) {
|
||||||
|
return value;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// this.option.yAxis.axisLabel = this.chartMsg.yAxisLabel;
|
||||||
|
this.option.series = this.chartMsg.series;
|
||||||
|
this.myChart.setOption(this.option);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.legend {
|
||||||
|
text-align: right;
|
||||||
|
.item {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #8c8c8c;
|
||||||
|
.block {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
.line {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 4px;
|
||||||
|
position: relative;
|
||||||
|
.line-block {
|
||||||
|
position: absolute;
|
||||||
|
width: 20px;
|
||||||
|
height: 2px;
|
||||||
|
left: -5px;
|
||||||
|
top: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
136
src/views/report/components/bmSearchBar.vue
Normal file
136
src/views/report/components/bmSearchBar.vue
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
<template>
|
||||||
|
<el-form :model="form" :inline="true" ref="bmSearchBarForm" class="blueTip">
|
||||||
|
<el-form-item label="时间维度" prop="type">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="form.type"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 100px"
|
||||||
|
>
|
||||||
|
<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 v-show="form.type === 1" label="时间" prop="dayTime">
|
||||||
|
<el-date-picker
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
v-model="form.dayTime"
|
||||||
|
type="date"
|
||||||
|
placeholder="选择日期"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-show="form.type === 2" label="时间" prop="weekTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="form.weekTime"
|
||||||
|
type="week"
|
||||||
|
format="yyyy 第 WW 周"
|
||||||
|
placeholder="选择周"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-show="form.type === 3" label="时间" prop="monthTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="form.monthTime"
|
||||||
|
type="month"
|
||||||
|
placeholder="选择月份"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-show="form.type === 4" label="时间" prop="yearTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="form.yearTime"
|
||||||
|
type="year"
|
||||||
|
placeholder="选择年份"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工厂" prop="factory">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
multiple
|
||||||
|
v-model="form.factory"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 250px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in factoryList"
|
||||||
|
: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="handleExport"
|
||||||
|
>导出</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "bmSearchBar",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: {
|
||||||
|
type: 1,
|
||||||
|
dayTime: "",
|
||||||
|
weekTime: "",
|
||||||
|
monthTime: "",
|
||||||
|
yearTime: "",
|
||||||
|
factory: "",
|
||||||
|
},
|
||||||
|
typeList: [
|
||||||
|
{ id: 1, name: "日" },
|
||||||
|
{ id: 2, name: "周" },
|
||||||
|
{ id: 3, name: "月" },
|
||||||
|
{ id: 4, name: "年" },
|
||||||
|
],
|
||||||
|
factoryList: [
|
||||||
|
{ id: 1, name: "瑞昌" },
|
||||||
|
{ id: 2, name: "邯郸" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getDataList() {
|
||||||
|
console.log(this.form);
|
||||||
|
this.$emit("getSearch", this.form);
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
this.$emit("handleExport");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-divider--vertical {
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
.blueTip::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "";
|
||||||
|
width: 4px;
|
||||||
|
height: 18px;
|
||||||
|
background: #0b58ff;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
</style>
|
253
src/views/report/conversionEfficiencyBM/index.vue
Normal file
253
src/views/report/conversionEfficiencyBM/index.vue
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">稼动率对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "ConversionEfficiencyBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 57.5 },
|
||||||
|
{ name: "%", value: 21.66 },
|
||||||
|
{ name: "%", value: 18.4 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [-18, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 23.33 },
|
||||||
|
{ name: "%", value: 7.02 },
|
||||||
|
{ name: "%", value: 80.2 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "conversionEfficiencyBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "ConversionEfficiencyBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "ConversionEfficiencyBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "ConversionEfficiencyBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
292
src/views/report/ftoOutputBM/index.vue
Normal file
292
src/views/report/ftoOutputBM/index.vue
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">产量对标FTO</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "FtoOutputBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/片",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "ftoOutputBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "FtoOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "FtoOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "FtoOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("==========下面是测试代码,需删除");
|
||||||
|
this.chartMsg.series = [];
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出=====下面是测试代码,需删除");
|
||||||
|
this.chartMsg.series = [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值1",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
253
src/views/report/packageOEEBM/index.vue
Normal file
253
src/views/report/packageOEEBM/index.vue
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">封装OEE对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "PackageOEEBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 57.5 },
|
||||||
|
{ name: "%", value: 21.66 },
|
||||||
|
{ name: "%", value: 18.4 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [-18, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 23.33 },
|
||||||
|
{ name: "%", value: 7.02 },
|
||||||
|
{ name: "%", value: 80.2 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "packageOEEBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "PackageOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "PackageOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "PackageOEEBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
244
src/views/report/scOutputBM/index.vue
Normal file
244
src/views/report/scOutputBM/index.vue
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">标准组件产量对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "SCOutputBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/片",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "scOutputBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "SCOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "SCOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "SCOutputBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
244
src/views/report/scPerCapitaBM/index.vue
Normal file
244
src/views/report/scPerCapitaBM/index.vue
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">组件人均产量对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "SCPerCapitaBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/片",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
// data: [3000, 2000, 3000],
|
||||||
|
// data: [6800, 5000, 8900],
|
||||||
|
// data: [12000, 17000, 19000],
|
||||||
|
data: [560000, 540000, 600000],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
// data: [2100, 800, 1500],
|
||||||
|
// data: [9500, 7200, 9901],
|
||||||
|
// data: [14666, 15000, 17888],
|
||||||
|
data: [550000, 456666, 590000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-5, -16],
|
||||||
|
// position: [-10, -16],
|
||||||
|
position: [-17, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
// data: [2100, 900, 1300],
|
||||||
|
// data: [9100, 7300, 9700],
|
||||||
|
// data: [14666, 15300, 18000],
|
||||||
|
data: [556666, 456666, 650000],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "scPerCapitaBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "SCPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "SCPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "SCPerCapitaBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
253
src/views/report/scYieldBM/index.vue
Normal file
253
src/views/report/scYieldBM/index.vue
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">芯片良率对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "SCYieldBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月目标值", type: 2, color: "#FFCE6A" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 3, name: "2024年4月", type: 1, color: "#288AFF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#FFCE6A", "#8EF0AB", "#288AFF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
{ name: "%", value: 85 },
|
||||||
|
],
|
||||||
|
type: "line",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 6,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: "#FFAE17",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 57.5 },
|
||||||
|
{ name: "%", value: 21.66 },
|
||||||
|
{ name: "%", value: 18.4 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [-18, -16],
|
||||||
|
color: "#68C483",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 23.33 },
|
||||||
|
{ name: "%", value: 7.02 },
|
||||||
|
{ name: "%", value: 80.2 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: [0, -16],
|
||||||
|
color: "#288AFF",
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "scYieldBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "SCYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "SCYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "SCYieldBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
283
src/views/report/turnoverRateBM/index.vue
Normal file
283
src/views/report/turnoverRateBM/index.vue
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="containerTop">
|
||||||
|
<bmSearchBar @getSearch="getSearch" @handleExport="handleExport" />
|
||||||
|
<bm-line-bar
|
||||||
|
:chartHeight="chartHeight"
|
||||||
|
:legendList="legendList"
|
||||||
|
:chartMsg="chartMsg"
|
||||||
|
:chartId="chartId"
|
||||||
|
:chartNum="chartNum"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="containerBottom">
|
||||||
|
<div class="smallTitle">封装OEE对标</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.current"
|
||||||
|
:limit="listQuery.size"
|
||||||
|
:table-data="tableData"
|
||||||
|
:max-height="tableH"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import bmSearchBar from "../components/bmSearchBar.vue";
|
||||||
|
import BmLineBar from "../components/bmLineBar.vue";
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: "factory",
|
||||||
|
label: "工厂名称",
|
||||||
|
// filter: (val) => factoryList[val],
|
||||||
|
minWidth: 200,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "name",
|
||||||
|
label: "科目",
|
||||||
|
minWidth: 120,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "unit",
|
||||||
|
label: "单位",
|
||||||
|
minWidth: 80,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time1",
|
||||||
|
label: "时间1",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "time2",
|
||||||
|
label: "时间2",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao",
|
||||||
|
label: "月目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "mubiao2",
|
||||||
|
label: "年目标值",
|
||||||
|
minWidth: 150,
|
||||||
|
showOverflowtooltip: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
name: "TurnoverRateBM",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableProps,
|
||||||
|
listQuery: {
|
||||||
|
current: 1,
|
||||||
|
size: 1000,
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
{ factory: "工厂1" },
|
||||||
|
],
|
||||||
|
chartHeight: this.tableHeight(137) / 2 - 111,
|
||||||
|
tableH: this.tableHeight(137) / 2 - 70,
|
||||||
|
legendList: [
|
||||||
|
{ id: 1, name: "2024年4月", type: 1, color: "#8EF0AB" },
|
||||||
|
{ id: 2, name: "2023年4月", type: 1, color: "#63BDFF" },
|
||||||
|
{ id: 3, name: "2024年4月目标值", type: 1, color: "#288AFF" },
|
||||||
|
{ id: 4, name: "2024年目标值", type: 1, color: "#7164FF" },
|
||||||
|
],
|
||||||
|
chartMsg: {
|
||||||
|
color: ["#8EF0AB", "#63BDFF", "#288AFF", "#7164FF"],
|
||||||
|
xData: ["成都", "邯郸", "瑞昌"],
|
||||||
|
yName: "单位/%",
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "2023年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 12.64444444 },
|
||||||
|
{ name: "%", value: 12.29 },
|
||||||
|
{ name: "%", value: 12.33 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
barGap: 0.5,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
color: "#68C483",
|
||||||
|
fontSize: 9,
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 14.92 },
|
||||||
|
{ name: "%", value: 15.31 },
|
||||||
|
{ name: "%", value: 15.36 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
color: "#63BDFF",
|
||||||
|
fontSize: 9,
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年4月目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 15.36 },
|
||||||
|
{ name: "%", value: 15.52 },
|
||||||
|
{ name: "%", value: 15.63 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
color: "#288AFF",
|
||||||
|
fontSize: 9,
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2024年目标值",
|
||||||
|
data: [
|
||||||
|
{ name: "%", value: 15.63 },
|
||||||
|
{ name: "%", value: 15.69 },
|
||||||
|
{ name: "%", value: 15.78 },
|
||||||
|
],
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 20,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
color: "#7164FF",
|
||||||
|
fontSize: 9,
|
||||||
|
formatter: function (params) {
|
||||||
|
return params.value.toFixed(2) + "%";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chartId: "turnoverRateBMChart",
|
||||||
|
chartNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
bmSearchBar,
|
||||||
|
BmLineBar,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isOpen() {
|
||||||
|
return this.$store.getters.sidebar.opened;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听左侧菜单栏是否展开
|
||||||
|
isOpen(val) {
|
||||||
|
if (this.$route.name === "TurnoverRateBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
window.addEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener("resize", this._setTableHeight);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
// 图重新加载,为了防止窗口变化后尺寸图显示不佳,数据不更新
|
||||||
|
if (this.$route.name === "TurnoverRateBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_setTableHeight() {
|
||||||
|
this.tableH = this.tableHeight(137) / 2 - 70;
|
||||||
|
this.chartHeight = this.tableHeight(137) / 2 - 111;
|
||||||
|
if (this.$route.name === "TurnoverRateBM") {
|
||||||
|
this.chartNum++;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSearch(val) {
|
||||||
|
console.log(val);
|
||||||
|
console.log("=========================");
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
console.log("导出");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.containerTop,
|
||||||
|
.containerBottom {
|
||||||
|
height: calc((100vh - 137px) / 2);
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.containerBottom {
|
||||||
|
margin-top: 8px;
|
||||||
|
.smallTitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.smallTitle::before {
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background: #0b58ff;
|
||||||
|
content: "";
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user