Files
50-XiAn204-MacroinfManage_MES/src/views/SearchData/FTTTrendChart/index.vue
2022-10-24 08:33:42 +08:00

375 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--物料ANDON统计-->
<template>
<div class="app-container">
<el-card class="topCard">
<div class="topDiv">
<span style="margin-left: 10px">时间</span>
<el-date-picker
v-model="dateTime"
size="small"
type="daterange"
align="center"
style="width: 240px;"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="JudgeDateTime"/>
<span style="margin-left: 10px">工位号</span>
<el-select v-model="stationNumberValue" placeholder="请选择工位号" clearable filterable size="small" style="width: 200px; margin-left: 13px">
<el-option
v-for="item in stationNumber"
:key="item.value"
:label="item.label"
:value="item.value"
size="mini"/>
</el-select>
<el-button type="primary" plain size="small" icon="el-icon-search" style="margin-left: 5px" @click="pageSize=15;pageCurrent=1;searchOrder();searchOrder1()">查询</el-button>
<!-- <el-button type="info" size="small" icon="el-icon-download" @click="exportExcel()">Excel</el-button>-->
</div>
<div style="border: 1px solid #EBEEF5;width: 100%;height: 400px;">
<div id="myChart" style="width: 100%;height: 380px;float: right;"/>
</div>
<el-table
v-loading="loading"
ref="multipleTable"
:data="tableData"
:header-cell-style="{background:'#eef1f6',color:'#606266'}"
:cell-class-name="tableRowClassName"
element-loading-text="数据加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.2)"
class="main"
tooltip-effect="dark"
height="450px"
style="width: 100%;"
border
size="mini">
<el-table-column align="center" width="60px" type="index" label="序号"/>
<el-table-column align="center" label="工厂">
<template slot-scope="scope">
{{ scope.row.Factory }}
</template>
</el-table-column>
<el-table-column align="center" label="工作中心">
<template slot-scope="scope">
{{ scope.row.WorkCenter }}
</template>
</el-table-column>
<el-table-column align="center" label="工位号">
<template slot-scope="scope">
{{ scope.row.OpCode }}
</template>
</el-table-column>
<el-table-column align="center" label="工艺描述">
<template slot-scope="scope">
{{ scope.row.OpName }}
</template>
</el-table-column>
<el-table-column align="center" label="装配总数">
<template slot-scope="scope">
{{ scope.row.SUMCount }}
</template>
</el-table-column>
<el-table-column align="center" label="不合格数">
<template slot-scope="scope">
{{ scope.row.RJCount }}
</template>
</el-table-column>
<el-table-column align="center" label="工位FTT">
<template slot-scope="scope">
{{ scope.row.OpFTT }}
</template>
</el-table-column>
<el-table-column align="center" label="产线FTT">
<template slot-scope="scope">
{{ scope.row.SumFTT }}
</template>
</el-table-column>
<el-table-column align="center" width="280px" label="操作时间">
<template slot-scope="scope">
{{ scope.row.Time }}
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top: 10px;">
<el-pagination
v-if="!loading"
:current-page="pageCurrent"
:page-sizes="[15, 30, 40]"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
</div>
</el-card>
</div>
</template>
<!--<script src="../../../utils/setMethods.js"></script>-->
<script>
export default {
data() {
return {
number: [],
tableData: [], // 总数据数组
tableData1: [], // 总数据数组
xData: [], // echars x轴
yData: [], // echars y轴
// engineTypeValue: '', // 产品型号
// engineType: [], // 产品型号数组
// orderNumber: [], // 订单号
// orderNumberValue: '', // 订单号
stationNumberValue: '', // 工位号
stationNumber: [], // 工位号
statePlan: [], // 计划状态数组
statePlanValue: '', // 计划状态
importTime: '', // 计划状态
releaseTime: '', // 计划状态
dateTime: '',
total: 0, // 总条数
pageList: 15, // 每页显示条数
pageSize: 15, // 每页显示条数
pageCurrent: 1, // 后台获取页
mid: [], // id
loading: false,
timer_1: null,
MIDGroup: []
}
},
created() {
this.initialization()
this.getStationNumber()
},
mounted() {
},
methods: {
initialization() {
var year, month, day, audiTime
this.date = new Date() // 修改数据date
year = new Date().getFullYear()
month = new Date().getMonth() + 1 < 10 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1
day = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate()
audiTime = year + '-' + month + '-' + day
console.log(audiTime, 'audiTime')
this.dateTime = [audiTime, audiTime]
},
DateDiff(sDate1, sDate2) {
// sDate1和sDate2是2022-08-18格式
var aDate1, aDate2, oDate1, oDate2, iDays
aDate1 = sDate1.split('-')
oDate1 = new Date(aDate1[1] + '/' + aDate1[2] + '/' + aDate1[0])
aDate2 = sDate2.split('-')
oDate2 = new Date(aDate2[1] + '/' + aDate2[2] + '/' + aDate2[0])
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24)
return iDays
},
JudgeDateTime() {
var n = this.DateDiff(this.dateTime[0], this.dateTime[1])
console.log(n, '时间差')
if (n > 31) {
this.$message.error('时间范围不得超过31天!')
this.initialization()
}
},
// 表格颜色变化
tableRowClassName({ row, rowIndex }) {
// console.log(row, rowIndex)
if (rowIndex % 2 === 0) {
return 'black'
} else {
return 'red'
}
},
// 工位号
getStationNumber() {
this.stationNumber = []
this.xData = []
var param = []
var Data = this.CreateData('11', 'MES_计划BOM_工位与名称_查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length) this.stationNumberValue = response.data[0].工位号
for (let i = 0; i < response.data.length; i++) {
this.stationNumber.push({
label: response.data[i].工位号,
value: response.data[i].工位号
})
this.xData.push(response.data[i].工位号)
}
})
},
// 实时扭矩曲线
drawLine() {
// 基于准备好的dom初始化echarts实例
const myChart = this.$echarts.init(document.getElementById('myChart'))
myChart.clear()
myChart.setOption({
title: {
left: 'center',
text: 'FTT趋势图'
},
toolbox: {// echart保存为图片
show: true,
feature: {
mark: {
show: true
},
saveAsImage: {
show: true,
pixelRatio: 1,
title: '保存为图片',
type: 'png',
lang: ['点击保存']
}
}
},
xAxis: {
type: 'category',
data: this.xData,
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: 30
}
},
yAxis: {
type: 'value'
},
series: [
{
name: 'NO',
data: this.yData,
type: 'line',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
},
itemStyle: { // 上方显示数值
normal: {
label: {
show: true, // 开启显示
position: 'top', // 在上方显示
textStyle: { // 数值样式
color: 'black',
fontSize: 16
}
}
}
}
}
]
})
},
// 查询订单
searchOrder() {
this.tableData = []
let stationNumberValue_check
// this.engineTypeValue ? engineTypeValue_check = 1 : (engineTypeValue_check = 0, this.engineTypeValue = '')
this.stationNumberValue ? stationNumberValue_check = 1 : (stationNumberValue_check = 0, this.stationNumberValue = '')
// this.orderNumberValue ? orderNumberValue_check = 1 : (orderNumberValue_check = 0, this.orderNumberValue = '')
var param = []
param[0] = ['StartTime', this.dateTime[0]]
param[1] = ['EndTime', this.dateTime[1]]
param[2] = ['OpName_ischeck', stationNumberValue_check]
param[3] = ['OpName', this.stationNumberValue]
// param[4] = ['订单号_ischeck', orderNumberValue_check]
// param[5] = ['订单号', this.orderNumberValue]
// param[6] = ['产品型号_ischeck', engineTypeValue_check]
// param[7] = ['产品型号', this.engineTypeValue]
param[4] = ['PageCurrent', this.pageCurrent]
param[5] = ['PageSize', this.pageSize]
param[6] = ['PageCount', '1111', 'int', '1']
param[7] = ['ItemCount', '1111', 'int', '1']
var Data = this.CreateData('11', 'Data_WorkStationFTT_Statistic_Form', param)
this.ExecDatabase(Data).then(response => {
console.log(response, 66)
if (response.data.result.length !== 0) {
this.tableData = response.data.result
}
this.total = parseInt(response.data.output[0].ItemCount)
this.loading = false
})
},
// 查询订单
searchOrder1() {
this.yData = []
this.xData = []
this.tableData1 = []
let stationNumberValue_check
// this.engineTypeValue ? engineTypeValue_check = 1 : (engineTypeValue_check = 0, this.engineTypeValue = '')
this.stationNumberValue ? stationNumberValue_check = 1 : (stationNumberValue_check = 0, this.stationNumberValue = '')
// this.orderNumberValue ? orderNumberValue_check = 1 : (orderNumberValue_check = 0, this.orderNumberValue = '')
var param = []
param[0] = ['StartTime', this.dateTime[0]]
param[1] = ['EndTime', this.dateTime[1]]
param[2] = ['OpName_ischeck', stationNumberValue_check]
param[3] = ['OpName', this.stationNumberValue]
var Data = this.CreateData('11', 'Data_WorkStationFTT_Statistic_Graph', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length !== 0) {
console.log(response.data)
for (let i = 0; i < response.data.length; i++) {
this.xData.push((response.data[i].AddTime).slice(0, 10))
this.yData.push(response.data[i].FTTValue)
}
console.log(this.xData, 'this.xData')
}
}).then(() => {
this.drawLine()
})
},
// 分页
handleSizeChange(val) {
this.pageCurrent = 1
this.pageSize = val
this.searchOrder()
},
handleCurrentChange(val) {
this.pageCurrent = val
this.searchOrder()
}
}
}
</script>
<style scoped>
.topCard{
margin: 5px;
}
.topDiv{
margin-bottom: 10px;
}
.el-select{
width:200px
}
.el-input{
width:200px
}
.text {
font-size: 14px;
}
.item {
padding: 18px 0;
}
.box-card {
position: absolute;
right: 6px;
top: 80px;
width: 300px;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>