|
|
|
|
@ -103,15 +103,15 @@
|
|
|
|
|
form.isSimulate ? form.text11 : runningData.TOTALCOUNT
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="text2" style="top: 41%;left: 84.7%;">总维修次数: <span style="color: #EF241E">{{
|
|
|
|
|
form.isSimulate ? form.text12 : deviceStatusData.repairCount
|
|
|
|
|
<div class="text2" style="top: 41%;left: 84.7%;">当日总停机次数: <span style="color: #EF241E">{{
|
|
|
|
|
form.isSimulate ? form.text12 : shutDownList.length
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="text3" style="top: 35.15%;left: 5.5%;">生产进度</div>
|
|
|
|
|
<div class="text3" style="top: 35.15%;left: 75%;">累计维修分析</div>
|
|
|
|
|
<div class="text3" style="top: 35.15%;left: 75%;">累计停机分析</div>
|
|
|
|
|
<div class="text3" style="top: 63.05%;left: 5.5%;">质量追溯</div>
|
|
|
|
|
<div class="text3" style="top: 63.05%;left: 30.2%;">设备总产量</div>
|
|
|
|
|
<div class="text3" style="top: 63.05%;left: 75%;">当日维修趋势</div>
|
|
|
|
|
<!-- <div class="text3" style="top: 63.05%;left: 75%;">当日维修趋势</div>-->
|
|
|
|
|
<div class="deviceError" v-if="form.isSimulate ? form.view1 : alarmInfoData.hasAlarm ">
|
|
|
|
|
<div class="icon"></div>
|
|
|
|
|
<div class="text" style="left: 18%">{{ form.isSimulate ? form.info1.text1 : alarmInfoData.deviceName }}</div>
|
|
|
|
|
@ -215,22 +215,70 @@
|
|
|
|
|
</div>
|
|
|
|
|
</vue-seamless-scroll>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="repairTimes">
|
|
|
|
|
<div class="item" v-for="(i,k) in form.isSimulate ? form.table2 : repairAnalysisList ">
|
|
|
|
|
<div class="num">{{ k + 1 }}</div>
|
|
|
|
|
<div class="deviceName">{{ form.isSimulate ? i.text1 : i.deviceName }}</div>
|
|
|
|
|
<div class="schedule">
|
|
|
|
|
<div class="progressBar" :style="{width: (form.isSimulate ? i.text2: i.percent) + '%'}"></div>
|
|
|
|
|
<div class="scrollTable2">
|
|
|
|
|
<div style="background-color: #05346044">
|
|
|
|
|
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
|
|
|
|
|
设备名称
|
|
|
|
|
</div>
|
|
|
|
|
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
|
|
|
|
|
停机原因
|
|
|
|
|
</div>
|
|
|
|
|
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
|
|
|
|
|
开始时间
|
|
|
|
|
</div>
|
|
|
|
|
<div class="scrollTableItem" style="font-weight: bold;width: 25%">
|
|
|
|
|
结束时间
|
|
|
|
|
</div>
|
|
|
|
|
<div class="times">{{ form.isSimulate ? i.text3 : i.repairCount }}次</div>
|
|
|
|
|
</div>
|
|
|
|
|
<vue-seamless-scroll
|
|
|
|
|
:class-option="scrollTableOption"
|
|
|
|
|
:data="form.isSimulate ? form.table1 : shutDownList"
|
|
|
|
|
class="case-item"
|
|
|
|
|
:key="key"
|
|
|
|
|
style="height: calc(100% - 20px - 1vw - 0.4vw);overflow: hidden;"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
v-for="(item, index) in form.isSimulate ? form.table1 : shutDownList"
|
|
|
|
|
:key="index"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
:style='"background-color:" +(item.shutEndTime ? ((index % 2 === 0)? "#05346022":"#05346044"):"#FFEB3B")'>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTableItem" style="width: 25%;font-size: 0.8vw">
|
|
|
|
|
{{ form.isSimulate ? item.text1 : item.deviceName }}
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTableItem" style="width: 25%;font-size: 0.8vw">
|
|
|
|
|
{{ form.isSimulate ? item.text2 : item.shutReason }}
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTableItem" style="width: 25%;font-size: 0.8vw">
|
|
|
|
|
{{ form.isSimulate ? item.text3 : item.shutBeginTime }}
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTableItem" style="width: 25%;font-size: 0.8vw">
|
|
|
|
|
{{ form.isSimulate ? item.text3 : item.shutEndTime }}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</vue-seamless-scroll>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- <div class="chart1">-->
|
|
|
|
|
<!-- <Chart ref="chart1"></Chart>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div class="chart4">-->
|
|
|
|
|
<!-- <Chart ref="chart4"></Chart>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div class="repairTimes">-->
|
|
|
|
|
<!-- <div class="item" v-for="(i,k) in form.isSimulate ? form.table2 : repairAnalysisList ">-->
|
|
|
|
|
<!-- <div class="num">{{ k + 1 }}</div>-->
|
|
|
|
|
<!-- <div class="deviceName">{{ form.isSimulate ? i.text1 : i.deviceName }}</div>-->
|
|
|
|
|
<!-- <div class="schedule">-->
|
|
|
|
|
<!-- <div class="progressBar" :style="{width: (form.isSimulate ? i.text2: i.percent) + '%'}"></div>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div class="times">{{ form.isSimulate ? i.text3 : i.repairCount }}次</div>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div class="chart1">-->
|
|
|
|
|
<!-- <Chart ref="chart1"></Chart>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div class="chart4">-->
|
|
|
|
|
<!-- <Chart ref="chart4"></Chart>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<div class="chart2">
|
|
|
|
|
<Chart ref="chart2"></Chart>
|
|
|
|
|
</div>
|
|
|
|
|
@ -288,7 +336,7 @@
|
|
|
|
|
<el-form-item label="设备总数">
|
|
|
|
|
<el-input v-model="form.text11" autocomplete="off"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="总维修次数">
|
|
|
|
|
<el-form-item label="当日总停机次数">
|
|
|
|
|
<el-input v-model="form.text12" autocomplete="off"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="是否报警">
|
|
|
|
|
@ -525,7 +573,10 @@ import {
|
|
|
|
|
getProductionTotal, getQualityStatistics, getQualityTraceList, getRepairAnalysisList, getRepairTrendList
|
|
|
|
|
} from "@/api/board/board4";
|
|
|
|
|
import {listQualityInspection} from "@/api/report/qualityInspection";
|
|
|
|
|
import {listShutDown} from "@/api/dms/shutDown";
|
|
|
|
|
import {parseTime} from "@/utils/ruoyi";
|
|
|
|
|
|
|
|
|
|
const now = new Date()
|
|
|
|
|
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
|
|
|
|
@ -618,8 +669,9 @@ export default {
|
|
|
|
|
qualityStatisticsData: {},
|
|
|
|
|
qualityTraceList: [],
|
|
|
|
|
deviceProductionList: [],
|
|
|
|
|
qualityInspectionList:[],
|
|
|
|
|
runningData: {}
|
|
|
|
|
qualityInspectionList: [],
|
|
|
|
|
runningData: {},
|
|
|
|
|
shutDownList: []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async mounted() {
|
|
|
|
|
@ -639,7 +691,24 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
async getData() {
|
|
|
|
|
listQualityInspection({pageSize:99999999}).then(res => {
|
|
|
|
|
listShutDown({
|
|
|
|
|
beginTime: parseTime(new Date(
|
|
|
|
|
now.getFullYear(),
|
|
|
|
|
now.getMonth(),
|
|
|
|
|
now.getDate(),
|
|
|
|
|
0, 0, 0
|
|
|
|
|
)),
|
|
|
|
|
endTime: parseTime(new Date(
|
|
|
|
|
now.getFullYear(),
|
|
|
|
|
now.getMonth(),
|
|
|
|
|
now.getDate(),
|
|
|
|
|
23, 59, 59
|
|
|
|
|
)),
|
|
|
|
|
pageSize: 99999999
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.shutDownList = res.rows
|
|
|
|
|
})
|
|
|
|
|
listQualityInspection({pageSize: 99999999}).then(res => {
|
|
|
|
|
this.qualityInspectionList = res.rows
|
|
|
|
|
})
|
|
|
|
|
getDeviceStatusStatistics().then(e => {
|
|
|
|
|
@ -883,89 +952,89 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
})
|
|
|
|
|
this.$refs.chart3.setData({
|
|
|
|
|
xAxis: {
|
|
|
|
|
data: this.form.isSimulate ? this.form.chart3.map(e => e.value1) : this.repairTrendList?.map(e => e.timeHour),
|
|
|
|
|
boundaryGap: false,
|
|
|
|
|
axisLine: {
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#377097',
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
fontSize: 12,
|
|
|
|
|
interval: 0,
|
|
|
|
|
color: '#4C95C1',
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
alignWithLabel: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#37709799',
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
show: true,
|
|
|
|
|
alignWithLabel: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#37709799',
|
|
|
|
|
type: 'dashed',
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
yAxis: {
|
|
|
|
|
axisLine: {
|
|
|
|
|
show: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#377097',
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
fontSize: 14,
|
|
|
|
|
color: '#4C95C1',
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
show: true,
|
|
|
|
|
alignWithLabel: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#37709799',
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
show: true,
|
|
|
|
|
alignWithLabel: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#37709799',
|
|
|
|
|
type: 'dashed',
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
grid: {
|
|
|
|
|
top: 20,
|
|
|
|
|
right: 20,
|
|
|
|
|
bottom: 40,
|
|
|
|
|
left: 50
|
|
|
|
|
},
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
type: "line",
|
|
|
|
|
symbolSize: 5,
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#FBFFFA', // 点填充颜色
|
|
|
|
|
borderColor: '#D8080C', // 点边框颜色
|
|
|
|
|
borderWidth: 2 // 边框宽度
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#CE0F06', // 折线颜色
|
|
|
|
|
width: 2
|
|
|
|
|
},
|
|
|
|
|
label: {
|
|
|
|
|
// show: false,
|
|
|
|
|
},
|
|
|
|
|
data: this.form.isSimulate ? this.form.chart3.map(e => e.value2) : this.repairTrendList.map(e => e.repairCount),
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
})
|
|
|
|
|
// this.$refs.chart3.setData({
|
|
|
|
|
// xAxis: {
|
|
|
|
|
// data: this.form.isSimulate ? this.form.chart3.map(e => e.value1) : this.repairTrendList?.map(e => e.timeHour),
|
|
|
|
|
// boundaryGap: false,
|
|
|
|
|
// axisLine: {
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#377097',
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// axisLabel: {
|
|
|
|
|
// fontSize: 12,
|
|
|
|
|
// interval: 0,
|
|
|
|
|
// color: '#4C95C1',
|
|
|
|
|
// },
|
|
|
|
|
// axisTick: {
|
|
|
|
|
// alignWithLabel: true,
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#37709799',
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// splitLine: {
|
|
|
|
|
// show: true,
|
|
|
|
|
// alignWithLabel: true,
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#37709799',
|
|
|
|
|
// type: 'dashed',
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// yAxis: {
|
|
|
|
|
// axisLine: {
|
|
|
|
|
// show: true,
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#377097',
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// axisLabel: {
|
|
|
|
|
// fontSize: 14,
|
|
|
|
|
// color: '#4C95C1',
|
|
|
|
|
// },
|
|
|
|
|
// axisTick: {
|
|
|
|
|
// show: true,
|
|
|
|
|
// alignWithLabel: true,
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#37709799',
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// splitLine: {
|
|
|
|
|
// show: true,
|
|
|
|
|
// alignWithLabel: true,
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#37709799',
|
|
|
|
|
// type: 'dashed',
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// grid: {
|
|
|
|
|
// top: 20,
|
|
|
|
|
// right: 20,
|
|
|
|
|
// bottom: 40,
|
|
|
|
|
// left: 50
|
|
|
|
|
// },
|
|
|
|
|
// series: [
|
|
|
|
|
// {
|
|
|
|
|
// type: "line",
|
|
|
|
|
// symbolSize: 5,
|
|
|
|
|
// symbol: 'circle',
|
|
|
|
|
// itemStyle: {
|
|
|
|
|
// color: '#FBFFFA', // 点填充颜色
|
|
|
|
|
// borderColor: '#D8080C', // 点边框颜色
|
|
|
|
|
// borderWidth: 2 // 边框宽度
|
|
|
|
|
// },
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: '#CE0F06', // 折线颜色
|
|
|
|
|
// width: 2
|
|
|
|
|
// },
|
|
|
|
|
// label: {
|
|
|
|
|
// // show: false,
|
|
|
|
|
// },
|
|
|
|
|
// data: this.form.isSimulate ? this.form.chart3.map(e => e.value2) : this.repairTrendList.map(e => e.repairCount),
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// })
|
|
|
|
|
// this.$refs.chart4.setData({
|
|
|
|
|
// radar: {
|
|
|
|
|
// center: ["30%", "50%"],
|
|
|
|
|
@ -1170,6 +1239,14 @@ export default {
|
|
|
|
|
height: 29%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.scrollTable2 {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 43%;
|
|
|
|
|
left: 72.8%;
|
|
|
|
|
width: 23.8%;
|
|
|
|
|
height: 52%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.scrollTableItem {
|
|
|
|
|
color: #65CDF9;
|
|
|
|
|
margin: auto 0px;
|
|
|
|
|
|