|
|
|
@ -65,23 +65,12 @@
|
|
|
|
|
<div class="yieldname">当日计划产量</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="yieldnumber">
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
<div
|
|
|
|
|
class="numberbox"
|
|
|
|
|
:key="index"
|
|
|
|
|
v-for="(n, index) in planProduction"
|
|
|
|
|
>
|
|
|
|
|
<div class="number">{{ n }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
@ -90,20 +79,12 @@
|
|
|
|
|
<div class="yieldname">产线目前产量</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="yieldnumber">
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="numberbox">
|
|
|
|
|
<div class="number">8</div>
|
|
|
|
|
<div
|
|
|
|
|
class="numberbox"
|
|
|
|
|
:key="index"
|
|
|
|
|
v-for="(n, index) in actProduction"
|
|
|
|
|
>
|
|
|
|
|
<div class="number">{{ n }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
@ -267,7 +248,9 @@
|
|
|
|
|
产线编码/名称
|
|
|
|
|
</td>
|
|
|
|
|
<!-- <td style="width: 8%;">{{ n.orderNo }}</td> -->
|
|
|
|
|
<td style="width: 8%">XL01 简装蚊香包装手工1线</td>
|
|
|
|
|
<td style="width: 8%">
|
|
|
|
|
{{ workOrder.equCode }}/{{ workOrder.equName }}
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr style="height: 36px">
|
|
|
|
|
<td
|
|
|
|
@ -280,7 +263,7 @@
|
|
|
|
|
产品编码
|
|
|
|
|
</td>
|
|
|
|
|
<!-- <td style="width: 8%;">{{ n.orderNo }}</td> -->
|
|
|
|
|
<td style="width: 8%">CP0000000008</td>
|
|
|
|
|
<td style="width: 8%">{{ workOrder.productCode }}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr style="height: 36px">
|
|
|
|
|
<td
|
|
|
|
@ -293,7 +276,7 @@
|
|
|
|
|
产品名称
|
|
|
|
|
</td>
|
|
|
|
|
<!-- <td style="width: 8%;">{{ n.orderNo }}</td> -->
|
|
|
|
|
<td style="width: 8%">菊儿宝健蚊香3+1家庭特惠装(18装)工</td>
|
|
|
|
|
<td style="width: 8%">{{ workOrder.productName }}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr style="height: 36px">
|
|
|
|
|
<td
|
|
|
|
@ -306,7 +289,7 @@
|
|
|
|
|
工单号
|
|
|
|
|
</td>
|
|
|
|
|
<!-- <td style="width: 8%;">{{ n.orderNo }}</td> -->
|
|
|
|
|
<td style="width: 8%">000800000131</td>
|
|
|
|
|
<td style="width: 8%">{{ workOrder.workorderCodeSap }}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr style="height: 36px">
|
|
|
|
|
<td
|
|
|
|
@ -319,7 +302,9 @@
|
|
|
|
|
数量/单位
|
|
|
|
|
</td>
|
|
|
|
|
<!-- <td style="width: 8%;">{{ n.orderNo }}</td> -->
|
|
|
|
|
<td style="width: 8%">7000产品/KAR</td>
|
|
|
|
|
<td style="width: 8%">
|
|
|
|
|
{{ workOrder.totalNum }}/{{ workOrder.unit }}
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
@ -422,7 +407,9 @@ import {
|
|
|
|
|
getMonthOfYearContrast,
|
|
|
|
|
} from "@/api/kanban/quality";
|
|
|
|
|
import {
|
|
|
|
|
getDictData,getProduction15Days,
|
|
|
|
|
getDictData,
|
|
|
|
|
getProduction15Days,
|
|
|
|
|
getProductionLineInfo,
|
|
|
|
|
} from "@/api/kanban/Packagingline";
|
|
|
|
|
import { getDeviceRefreshTime } from "@/api/kanban/equipment";
|
|
|
|
|
import * as echarts from "echarts";
|
|
|
|
@ -449,6 +436,8 @@ export default {
|
|
|
|
|
optionDatalist2: [],
|
|
|
|
|
optionDatalist3: [],
|
|
|
|
|
optionDatalist4: [],
|
|
|
|
|
optionDatalist5: [],
|
|
|
|
|
optionDatalist6: [],
|
|
|
|
|
colorlist: ["#005aff", "#f8b551"],
|
|
|
|
|
datetime: null,
|
|
|
|
|
time1: null,
|
|
|
|
@ -463,6 +452,11 @@ export default {
|
|
|
|
|
dictDatatype: [],
|
|
|
|
|
Realtimebox: [{}, {}, {}, {}],
|
|
|
|
|
Realtimebox2: [{}, {}, {}, {}],
|
|
|
|
|
workOrder: {},
|
|
|
|
|
// 当日计划产量
|
|
|
|
|
planProduction: [],
|
|
|
|
|
// 当日实际产量
|
|
|
|
|
actProduction: [],
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
created() {},
|
|
|
|
@ -497,15 +491,13 @@ export default {
|
|
|
|
|
_this.getLineList = response.data;
|
|
|
|
|
_this.selectxt = _this.getLineList[0].parentName;
|
|
|
|
|
_this.getDictData();
|
|
|
|
|
_this.initChart1();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getDeviceRefreshTime() {
|
|
|
|
|
const _this = this;
|
|
|
|
|
getDeviceRefreshTime().then((response) => {
|
|
|
|
|
if (response.data) {
|
|
|
|
|
console.log(response.data);
|
|
|
|
|
if (response) {
|
|
|
|
|
this.RefreshTime = response.data;
|
|
|
|
|
this.time1 = setInterval(() => {
|
|
|
|
|
_this.getdatalist(_this.selectxt);
|
|
|
|
@ -519,30 +511,23 @@ export default {
|
|
|
|
|
factoryCode: "ds_" + _this.selectxt,
|
|
|
|
|
equipmentTypeCode: "equ_type_bzx",
|
|
|
|
|
}).then((response) => {
|
|
|
|
|
_this.getdatalist();
|
|
|
|
|
if (response.data) {
|
|
|
|
|
console.log(response);
|
|
|
|
|
if (response) {
|
|
|
|
|
this.dictDatatype = response;
|
|
|
|
|
_this.selectxtclasses = _this.dictDatatype[0].equCode;
|
|
|
|
|
_this.getdatalist();
|
|
|
|
|
// _this.getDeviceRefreshTime();
|
|
|
|
|
_this.getDeviceRefreshTime();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getdatalist() {
|
|
|
|
|
const _this = this;
|
|
|
|
|
getProduction15Days({
|
|
|
|
|
_this.initChart1();
|
|
|
|
|
getProductionLineInfo({
|
|
|
|
|
equCode: _this.selectxtclasses,
|
|
|
|
|
factoryCode: "ds_" + _this.selectxt,
|
|
|
|
|
}).then((response) => {
|
|
|
|
|
if (response) {
|
|
|
|
|
_this.optionDatalist2 = [];
|
|
|
|
|
response.forEach((item) => {
|
|
|
|
|
let a = {};
|
|
|
|
|
a.name = item.projectName;
|
|
|
|
|
a.value = item.quality;
|
|
|
|
|
_this.optionDatalist2.push(a);
|
|
|
|
|
});
|
|
|
|
|
_this.workOrder = response.data.workOrder;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
@ -550,21 +535,20 @@ export default {
|
|
|
|
|
selectline() {
|
|
|
|
|
const _this = this;
|
|
|
|
|
this.optionDatalist1 = [];
|
|
|
|
|
this.optionDatalist2 = [];
|
|
|
|
|
this.optionDatalist3 = [];
|
|
|
|
|
this.optionDatalist4 = [];
|
|
|
|
|
this.optionDatalist5 = [];
|
|
|
|
|
this.optionDatalist6 = [];
|
|
|
|
|
_this.getDictData(_this.selectxt);
|
|
|
|
|
},
|
|
|
|
|
selectline2() {
|
|
|
|
|
const _this = this;
|
|
|
|
|
this.optionDatalist1 = [];
|
|
|
|
|
this.optionDatalist2 = [];
|
|
|
|
|
this.optionDatalist3 = [];
|
|
|
|
|
this.optionDatalist4 = [];
|
|
|
|
|
this.optionDatalist5 = [];
|
|
|
|
|
this.optionDatalist6 = [];
|
|
|
|
|
_this.getdatalist(_this.selectxt);
|
|
|
|
|
},
|
|
|
|
|
initChart1() {
|
|
|
|
|
const _this = this;
|
|
|
|
|
var data6 = this.optionDatalist6;
|
|
|
|
|
var myChart1 = echarts.init(document.querySelector("#echart1"));
|
|
|
|
|
var fontColor = "#D0DEEE";
|
|
|
|
|
var xData = (function () {
|
|
|
|
@ -952,7 +936,7 @@ export default {
|
|
|
|
|
// nameTextStyle:{
|
|
|
|
|
// color: '#D0DEEE'
|
|
|
|
|
// },
|
|
|
|
|
data: ["不合格比例", "不合格数量", "浏览量"],
|
|
|
|
|
data: ["实际产量", "计划产量"],
|
|
|
|
|
},
|
|
|
|
|
xAxis: [
|
|
|
|
|
{
|
|
|
|
@ -1009,75 +993,10 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: "value",
|
|
|
|
|
name: "比例",
|
|
|
|
|
nameTextStyle: {
|
|
|
|
|
color: "#D0DEEE",
|
|
|
|
|
},
|
|
|
|
|
min: 0,
|
|
|
|
|
max: 100,
|
|
|
|
|
axisLabel: {
|
|
|
|
|
formatter: "{value} %",
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: "#D0DEEE",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
axisLine: {
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: "#27b4c2",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
show: false,
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
show: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: "#2B3241",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
name: "不合格比例",
|
|
|
|
|
type: "line",
|
|
|
|
|
stack: "总量",
|
|
|
|
|
symbol: "circle",
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
yAxisIndex: 1,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
normal: {
|
|
|
|
|
color: "#5260CE",
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: "#5260CE",
|
|
|
|
|
width: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "不合格比例",
|
|
|
|
|
type: "line",
|
|
|
|
|
stack: "总量",
|
|
|
|
|
symbol: "circle",
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
yAxisIndex: 1,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
normal: {
|
|
|
|
|
color: "#88E4E3",
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: "#88E4E3",
|
|
|
|
|
width: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "不合格数量",
|
|
|
|
|
name: "实际产量",
|
|
|
|
|
data: [],
|
|
|
|
|
type: "bar",
|
|
|
|
|
showBackground: true,
|
|
|
|
@ -1095,7 +1014,7 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "不合格数量",
|
|
|
|
|
name: "计划产量",
|
|
|
|
|
data: [],
|
|
|
|
|
type: "bar",
|
|
|
|
|
showBackground: true,
|
|
|
|
@ -1115,31 +1034,23 @@ export default {
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
myChart6.setOption(option6);
|
|
|
|
|
getMonthOfYearContrast({
|
|
|
|
|
typeCode: "produce",
|
|
|
|
|
getProduction15Days({
|
|
|
|
|
equCode: _this.selectxtclasses,
|
|
|
|
|
factoryCode: "ds_" + _this.selectxt,
|
|
|
|
|
}).then((response) => {
|
|
|
|
|
if (response) {
|
|
|
|
|
let seriesdata1 = response[0].dataBarArrays;
|
|
|
|
|
let seriesdata2 = response[0].dataLineArrays;
|
|
|
|
|
let xAxisdata = response[0].dayStr;
|
|
|
|
|
let seriesdata3 = response[1].dataBarArrays;
|
|
|
|
|
let seriesdata4 = response[1].dataLineArrays;
|
|
|
|
|
let max1 = Math.max(...seriesdata1) + 5;
|
|
|
|
|
let max2 = Math.max(...seriesdata3) + 5;
|
|
|
|
|
let max3 = Math.max(...seriesdata2) + 5;
|
|
|
|
|
let max4 = Math.max(...seriesdata4) + 5;
|
|
|
|
|
this.planProduction = response.data.planProduction.split("");
|
|
|
|
|
this.actProduction = response.data.actProduction.split("");
|
|
|
|
|
let seriesdata1 = response.data.acts;
|
|
|
|
|
let seriesdata2 = response.data.plans;
|
|
|
|
|
let xAxisdata = response.data.days;
|
|
|
|
|
let max1 = Math.max(...seriesdata1) + 200;
|
|
|
|
|
let max3 = Math.max(...seriesdata2) + 200;
|
|
|
|
|
let yAxismax1 = 0;
|
|
|
|
|
let yAxismax2 = 0;
|
|
|
|
|
if (max1 > max2) {
|
|
|
|
|
if (max1 > max3) {
|
|
|
|
|
yAxismax1 = max1;
|
|
|
|
|
} else {
|
|
|
|
|
yAxismax1 = max2;
|
|
|
|
|
}
|
|
|
|
|
if (max3 > max4) {
|
|
|
|
|
yAxismax2 = max3;
|
|
|
|
|
} else {
|
|
|
|
|
yAxismax2 = max4;
|
|
|
|
|
yAxismax1 = max3;
|
|
|
|
|
}
|
|
|
|
|
option6 = {
|
|
|
|
|
xAxis: [
|
|
|
|
@ -1151,22 +1062,13 @@ export default {
|
|
|
|
|
{
|
|
|
|
|
max: yAxismax1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
max: yAxismax2,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
data: seriesdata2,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
data: seriesdata4,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
data: seriesdata1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
data: seriesdata3,
|
|
|
|
|
data: seriesdata2,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
@ -1648,7 +1550,7 @@ export default {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
width: 88px;
|
|
|
|
|
width: 300px;
|
|
|
|
|
margin-left: 25px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|