Merge branch 'projects/mesxc-test' into projects/mesxc-zjl

This commit is contained in:
2024-03-28 08:13:38 +08:00
112 changed files with 828 additions and 13939 deletions

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-07-19 15:18:30
* @LastEditors: zhp
* @LastEditTime: 2024-03-26 09:57:35
* @LastEditTime: 2024-03-27 15:42:39
* @Description:
-->
<template>
@@ -16,7 +16,7 @@
许昌安彩AGV原片周转看板
<h3 class="unit">单位河南汇融数字科技有限公司</h3>
<h3 class="time">{{ times }}</h3>
<!-- <el-button
<el-button
type="text"
class="title-button"
:style="{ right: 33 + 'px', top: 37 + 'px' }"
@@ -24,7 +24,7 @@
>
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
<svg-icon v-else icon-class="fullScreenView" />
</el-button> -->
</el-button>
</el-row>
<el-row class="container-main flex-col" type="flex">
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15 * beilv" type="flex" class="flex-1">
@@ -383,18 +383,18 @@ export default {
this.isFullScreen = screenfull.isFullscreen
},
init() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.on('change', this.change)
}
},
destroy() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.off('change', this.change)
}
},
changeFullScreen() {
console.log(this.beilv);
if (!screenfull.enabled) {
if (!screenfull.isEnabled) {
this.$message({
message: 'you browser can not work',
type: 'warning'
@@ -410,6 +410,9 @@ export default {
<style lang="scss" scoped>
.visual-container {
width: 1920px;
height: 1080px;
@@ -418,25 +421,28 @@ export default {
// opacity: .8;
.container-title {
width: 100%;
background: url('../../assets/img/OperationalOverview/title.png') no-repeat;
background: url('../../assets/img/OperationalOverview/AGV.png') no-repeat;
background-size: 100% 100%;
color: #00fff0;
text-align: center;
word-spacing:8px;
letter-spacing: 8px;
// word-spacing: 8px;
position: relative;
.unit{
position: absolute;
left: 290px;
left: 240px;
top:25px;
color: rgba($color: #ffffff, $alpha: 8);
font-size: 20px;
letter-spacing: 0px;
}
.time{
position: absolute;
left: 1360px;
left: 1400px;
top:25px;
color: rgba($color: #ffffff, $alpha: 8);
font-size: 20px;
letter-spacing: 0px;
}
.title-button {
color: #00fff0;

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2024-01-29 16:50:26
* @LastEditTime: 2024-03-26 18:00:34
* @LastEditTime: 2024-03-27 17:02:27
* @LastEditors: zhp
* @Description:
-->
@@ -17,15 +17,11 @@
许昌安彩冷端看板
<h3 class="unit">单位河南汇融数字科技有限公司</h3>
<h3 class="time">{{ times }}</h3>
<!-- <el-button
type="text"
class="title-button"
:style="{ right: 33 + 'px', top: 37 + 'px' }"
@click="changeFullScreen"
>
<el-button type="text" class="title-button" :style="{ right: 33 + 'px', top: 37 + 'px' }"
@click="changeFullScreen">
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
<svg-icon v-else icon-class="fullScreenView" />
</el-button> -->
</el-button>
</el-row>
<el-row class="container-main flex-col" type="flex">
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1">
@@ -61,15 +57,26 @@
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="10" type="flex" class="flex-1">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-container :no-content-padding="true" :height="256" :title="'废片 缺陷数据'" :size="'middle'"
<base-container :no-content-padding="true" :height="256" :title="'废片 缺陷数据'" :size="'eqStatus'"
:title-icon="'scrap'">
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
<top-radio-group />
</div> -->
<!-- <el-row :gutter="9"> -->
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> -->
<pile-bar-chart ref="pileChart" :name-list="EnergyMonitoringNameList" :data-list="EnergyMonitoringList"
:height="359" />
<pile-bar-chart style="margin-bottom: -15px" ref="firstPileChart" :height="90" />
<second-pile-bar-chart style="margin-bottom: -15px" id=" 'second' " ref="secondPileChart" :height="90" />
<third-pile-bar-chart style="margin-bottom: -15px" id=" 'third' " ref="thirdPileChart" :height="90" />
<fourth-pile-bar-chart style="margin-bottom: -15px" id=" 'fourth' " ref="fourthPileChart" :height="90" />
<fifth-pile-bar-chart style="margin-bottom: -15px" id=" 'fifth' " ref="fifthPileChart" :height="100" />
<!-- <pile-bar-chart ref="secondPileChart"
:height="90" />
<pile-bar-chart ref="thirdPileChart"
:height="90" />
<pile-bar-chart ref="fourthPileChart"
:height="90" />
<pile-bar-chart ref="fifthPileChart"
:height="90" /> -->
<!-- </el-col> -->
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-table3
@@ -136,6 +143,11 @@ import baseContainer from './components/baseContainer'
import baseTable1 from './components/baseTable'
import screenfull from 'screenfull'
import pileBarChart from './components/pileBarChart'
import secondPileBarChart from './components/pileBarChart'
import thirdPileBarChart from './components/pileBarChart'
import fourthPileBarChart from './components/pileBarChart'
import fifthPileBarChart from './components/pileBarChart'
import colorDiv from './components/colorDiv'
import moment from "moment";
import doubleYChart from './components/coldDoubleYChart'
@@ -152,7 +164,11 @@ export default {
pileBarChart,
doubleYChart,
LinearBarChart,
ISRAChart
ISRAChart,
secondPileBarChart,
thirdPileBarChart ,
fourthPileBarChart,
fifthPileBarChart ,
},
data() {
return {
@@ -256,6 +272,13 @@ export default {
},
watch: {
isFullScreen: function (val) {
if (val) {
this.beilv = document.body.offsetWidth / 1920
} else {
this.beilv = document.getElementById('container').offsetWidth / 1920
}
},
clientWidth(val) {
if (!this.timer) {
this.clientWidth = val
@@ -287,21 +310,92 @@ export default {
}
},
mounted() {
console.log(moment(this.logoutTime - 28800000).format('HH:mm:ss'));
// let nameList = []
// let nameWasteList = []
// let topNameList = []
// let productList = []
// let wasteList = []
// // let sumAreaList = []
// // let yieldList = []
// // this.cutTableDataList =
// let coldDetData = [
// {
// "first": 0.8834,
// "lineName": "Y61",
// "product": 0.8834,
// "productArea": 35069.28,
// "second": 0,
// 'sumArea': 38400,
// 'wastArea': 3330.72,
// "waste": 0.1166
// },
// {
// "first": 0.847,
// "lineName": "Y62",
// "product": 0.847,
// "productArea": 26765.46,
// "second": 0,
// 'sumArea': 1111111,
// 'wastArea': 22222,
// "waste": 0.153
// },
// {
// "first": 0.8668,
// "lineName": "Y63",
// "product": 0.8668,
// "productArea": 26448.46,
// "second": 0,
// 'sumArea': 1111111,
// 'wastArea': 22222,
// "waste": 0.1332
// },
// {
// "first": 0.9064,
// "lineName": "Y64",
// "product": 0.9064,
// "productArea": 26667.32,
// "second": 0,
// 'sumArea': 1111111,
// 'wastArea': 22222,
// "waste": 0.0936
// },
// {
// "first": 0.8838,
// "lineName": "Y65",
// "product": 0.8838,
// "productArea": 26554.32,
// "second": 0,
// 'sumArea': 1111111,
// 'wastArea': 22222,
// "waste": 0.1162
// }
// ]
// coldDetData.forEach((ele, index) => {
// nameList.push(ele.lineName)
// topNameList.push('产线: ' + ele.lineName + ' ' + '总面积:' + ele.sumArea)
// productList.push(ele.productArea)
// wasteList.push(ele.wastArea)
// nameWasteList.push('缺陷面积:' + ele.wastArea)
// // sumAreaList.push(ele.sumArea)
// // yieldList.push((ele.yield * 100).toFixed(3))
// })
// this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
// this.$refs.secondPileChart.initChart(nameList, [topNameList[1]], [nameWasteList[1]], [productList[1]], [wasteList[1]])
// this.$refs.thirdPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
// this.$refs.fourthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
// this.$refs.fifthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
// this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
this.getTimes()
// console.log(moment(this.logoutTime - 28800000).format('HH:mm:ss'));
this.funInitWebSocket()
// if (num > 0) {
if (!this.wsIsOpen) {
getDcsMsg()
this.wsIsOpen = true
console.log('开启websocket==========')
}
// } else {
// }
this.CutInitWebSocket()
this.SJGInitWebSocket()
// this.getList()
this.getTimes()
const _this = this;
_this.beilv2 = document.documentElement.clientWidth / 1920
window.onresize = () => {
@@ -453,7 +547,11 @@ export default {
sumAreaList.push(ele.sumArea)
yieldList.push((ele.yield * 100).toFixed(3))
})
this.$refs.pileChart.initChart(nameList, topNameList, nameWasteList, productList, wasteList)
this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
this.$refs.secondPileChart.initChart(nameList, [topNameList[1]], [nameWasteList[1]], [productList[1]], [wasteList[1]])
this.$refs.thirdPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
this.$refs.fourthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
this.$refs.fifthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
}
};
@@ -495,7 +593,8 @@ export default {
</span>`,
`<span style="color:rgba(255,255,255,0.5)" >${i || ''}
</span>`,
`<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.annealFanInfo[i] || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)"><div style="${this.funWsData.data.annealFanInfo[i] == '3片' ? 'width:10px;height:10px;border-radius: 50%; background-color: blue;float:left;margin:12px 10px 0 0 ' : 'width:10px;height:10px;border-radius: 50%; background-color: yellow;float:left;margin:12px 10px 0 0 '}"></div> ${this.funWsData.data.annealFanInfo[i] || ''}</span>`,
// `<span style="color:rgba(255,255,255,0.5)"> ${this.funWsData.data.annealFanInfo[i] || ''}</span>`,
])
}
this.annealFunConfig.data = arr
@@ -509,7 +608,8 @@ export default {
arr.push([
`<span style="color:rgba(255,255,255,0.5)" >${index || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)" >${i || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.fanInfo[i] || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)"><div style="${this.funWsData.data.fanInfo[i] == '3片' ? 'width:10px;height:10px;border-radius: 50%; background-color: blue;float:left;margin:12px 10px 0 0 ' : 'width:10px;height:10px;border-radius: 50%; background-color: yellow;float:left;margin:12px 10px 0 0 '}"></div> ${this.funWsData.data.fanInfo[i] || ''}</span>`,
// `<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.fanInfo[i] || ''}</span>`,
])
}
this.funConfig.data = arr
@@ -672,21 +772,22 @@ export default {
this.beilv2 = this.clientWidth / 1920
},
change() {
console.log(this.isFullScreen);
this.isFullScreen = screenfull.isFullscreen
},
init() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.on('change', this.change)
}
},
destroy() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.off('change', this.change)
}
},
changeFullScreen() {
this.containerWidth = 223223223
if (!screenfull.enabled) {
if (!screenfull.isEnabled) {
this.$message({
message: 'you browser can not work',
type: 'warning'
@@ -714,14 +815,16 @@ export default {
background-size: 100% 100%;
color: rgba(0, 255, 247, 1);
text-align: center;
letter-spacing: 8px;
word-spacing: 8px;
.unit {
position: absolute;
left: 260px;
left: 290px;
top: 25px;
color: rgba(255, 255, 255, 0.80);
font-size: 20px;
}
letter-spacing: 0px;
}
.time {
position: absolute;
@@ -729,6 +832,7 @@ export default {
color: rgba(255, 255, 255, 0.80);
top: 25px;
font-size: 20px;
letter-spacing: 0px;
}
.title-button {

View File

@@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2022-01-19 15:58:17
* @LastEditors: zhp
* @LastEditTime: 2024-02-22 10:26:59
* @LastEditTime: 2024-03-27 10:26:35
* @Description: file content
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue
-->
@@ -158,6 +158,7 @@ export default {
<style lang="scss" scoped>
.base-container {
color: #fff;
width: 100%;
@@ -192,7 +193,7 @@ export default {
backdrop-filter: blur(5px);
}
&__eqStatus {
background: url(../../../../assets/img/high.png) no-repeat;
background: url(../../../../assets/img/large.png) no-repeat;
background-size: 100% 100%;
backdrop-filter: blur(5px);
}

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-09-21 09:06:28
* @LastEditTime: 2024-03-26 16:16:50
* @LastEditTime: 2024-03-27 14:37:35
* @LastEditors: zhp
* @Description:
-->
@@ -147,72 +147,40 @@ export default {
]
// const colors = ['#5470C6', '#91CC75', '#EE6666']
this.chart = echarts.init(document.getElementById(this.id))
this.chart.setOption({
// color: colors,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
grid: { top: 90, right: 60, bottom: 20, left: 90 },
legend: {
itemWidth: 10,
itemHeight: 10,
top: '0%',
right: '20px',
data: ['产线产量', '产线良品率'],
textStyle: {
fontSize: 12 * this.beilv,
color: '#ced1d5'
}
},
xAxis: {
type: 'category',
axisLine: {
lineStyle: {
type: 'solid',
color: '#25528f',
width: '1' // 坐标线的宽度
if (!nameList && !passRateList && !outputNumList) {
// 隐藏echarts图表
this.chart.clear(); // 清空图表
this.chart.setOption({ // 设置空的option
title: {
show: false
},
series: []
});
} else {
// 显示echarts图表
this.chart.setOption({
// color: colors,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}'
// textStyle: {
// color: 'rgba(255,255,255,0.5)' // 坐标值得具体的颜色
// }
},
splitLine: {
lineStyle: {
color: '#25528f'
grid: { top: 90, right: 60, bottom: 20, left: 90, containLabel: true },
legend: {
itemWidth: 10,
itemHeight: 10,
top: '0%',
right: '20px',
data: ['产线产量', '产线良品率'],
textStyle: {
fontSize: 12 * this.beilv,
color: '#ced1d5'
}
},
data: nameList
},
// yAxis: {
// },
yAxis: [
{
// min: function() { // 取最小值向下取整为最小刻度
// return 0
// },
// max: function(value) { // 取最大值向上取整为最大刻度
// return Math.ceil(value.max)
// },
scale: true,
type: 'value',
name: '良品率/%',
nameTextStyle: {// y轴上方单位的颜色
color: '#fff',
align: "left",
},
position: 'right',
alignTicks: true,
xAxis: {
type: 'category',
axisLine: {
show: true,
lineStyle: {
type: 'solid',
color: '#25528f',
@@ -223,72 +191,118 @@ export default {
color: "#fff",
fontSize: 12,
// formatter: '{value}'
formatter: '{value}%'
// }
},
splitLine: {
lineStyle: {
color: '#25528f'
}
}
// type: 'value'
// axisLine: {
// show: true,
// lineStyle: {
// color: colors[0]
// }
// },
},
{
// min: function() { // 取最小值向下取整为最小刻度
// return 0
// },
// max: function(value) { // 取最大值向上取整为最大刻度
// return Math.ceil(value.max)
// },
scale: true,
type: 'value',
name: '产量/片', // y轴上方的单位
nameTextStyle: {
color: "#fff",
// fontSize: 10,
align: "right",
},
// position: 'left',
alignTicks: true,
axisLine: {
show: true,
lineStyle: {
type: 'solid',
color: '#25528f', // 左边线的颜色
width: '1' // 坐标线的宽度
}
},
axisLabel: {
// textStyle: {
// color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
color: "#fff",
fontSize: 12,
// formatter: '{value}'
formatter: '{value} 片'
// color: 'rgba(255,255,255,0.5)' // 坐标值得具体的颜色
// }
},
splitLine: {
lineStyle: {
color: '#25528f'
}
},
data: nameList
},
// yAxis: {
// },
yAxis: [
{
// min: function() { // 取最小值向下取整为最小刻度
// return 0
// },
// max: function(value) { // 取最大值向上取整为最大刻度
// return Math.ceil(value.max)
// },
scale: true,
type: 'value',
name: '良品率/%',
nameTextStyle: {// y轴上方单位的颜色
color: '#fff',
align: "left",
},
position: 'right',
alignTicks: true,
axisLine: {
show: true,
lineStyle: {
// type: 'solid',
color: '#25528f',
// width: '1' // 坐标线的宽度
}
},
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}'
formatter: '{value}%'
// }
},
splitLine: {
lineStyle: {
color: '#25528f'
}
}
// type: 'value'
// axisLine: {
// show: true,
// lineStyle: {
// color: colors[0]
// }
// },
},
{
// min: function() { // 取最小值向下取整为最小刻度
// return 0
// },
// max: function(value) { // 取最大值向上取整为最大刻度
// return Math.ceil(value.max)
// },
scale: true,
type: 'value',
name: '产量/片', // y轴上方的单位
nameTextStyle: {
color: "#fff",
// fontSize: 10,
align: "right",
},
// position: 'left',
alignTicks: true,
axisLine: {
show: true,
lineStyle: {
// type: 'solid',
color: '#25528f', // 左边线的颜色
// width: '1' // 坐标线的宽度
}
},
axisLabel: {
// textStyle: {
// color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
color: "#fff",
// show: true,
lineStyle: {
color: "#25528f",
},
// }
},
splitLine: {
lineStyle: {
color: '#25528f'
}
}
// type: 'value'
// axisLine: {
// show: true,
// lineStyle: {
// color: colors[1]
// }jik078u7uut9890999999999999999999999999999999999999999999999999999999999999995u8
// },
}
// type: 'value'
// axisLine: {
// show: true,
// lineStyle: {
// color: colors[1]
// }jik078u7uut9890999999999999999999999999999999999999999999999999999999999999995u8
// },
}
],
series: series
})
],
series: series
})
}
}
}
}

View File

@@ -87,8 +87,17 @@ export default {
// console.log('1111', dataList);
// console.log(1)
this.chart = echarts.init(document.getElementById(this.id))
// if (dataList.length !== 0) {
// this.$set(this.series, "data", dataList);
if (!nameList && !dataList) {
// 隐藏echarts图表
this.chart.clear(); // 清空图表
this.chart.setOption({ // 设置空的option
title: {
show: false
},
series: []
});
} else {
// 显示echarts图表
this.series = [{
type: 'bar',
data: dataList,
@@ -111,90 +120,94 @@ export default {
},
barWidth: 12,
}]
// }
// if (nameList.length !== 0) {
// }
// if (nameList.length !== 0) {
this.nameList = nameList
// }
this.chart.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: { top: 90, right: 60, bottom: 20, left: 90 },
// legend: {
// itemWidth: 10,
// itemHeight: 10,
// // right: '20px',
// data: nameList,
// textStyle: {
// fontSize: 12 * this.beilv,
// color: '#ced1d5'
// }
// },
xAxis: {
type: 'category',
axisLine: {
lineStyle: {
type: 'solid',
color: '#25528f', // 左边线的颜色
width: '1' // 坐标线的宽度
// }
this.chart.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}'
grid: { top: 90, right: 60, bottom: 20, left: 90, containLabel: true },
// legend: {
// itemWidth: 10,
// itemHeight: 10,
// // right: '20px',
// data: nameList,
// textStyle: {
// fontSize: 12 * this.beilv,
// color: '#ced1d5'
// }
// },
xAxis: {
type: 'category',
axisLine: {
lineStyle: {
type: 'solid',
color: '#25528f', // 左边线的颜色
width: '1' // 坐标线的宽度
}
},
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}'
},
splitLine: {
lineStyle: {
color: '#25528f'
}
},
data: this.nameList
},
splitLine: {
lineStyle: {
color: '#25528f'
yAxis: {
name: '单位kwh',
nameTextStyle: {
color: '#fff',
fontSize: 10,
align: 'right',
},
type: 'value',
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}/kwh'
},
axisLine: {
show: true,
lineStyle: {
color: "#25528f",
},
},
splitLine: {
lineStyle: {
color: "#25528f",
},
}
},
data: this.nameList
},
yAxis: {
name: '单位kwh',
nameTextStyle: {
color: '#fff',
fontSize: 10,
align: 'right',
},
type: 'value',
axisLabel: {
color: "#fff",
fontSize: 12,
// formatter: '{value}/kwh'
},
axisLine: {
show: true,
lineStyle: {
color: "#25528f",
},
},
splitLine: {
lineStyle: {
color: "#25528f",
},
}
},
// legend: {
// itemHeight: 10,
// itemWidth: 10,
// x: 'center', // 可设定图例在左、右、居中
// y: 'top', // 可设定图例在上、下、居中
// show: this.showLegend,
// data: this.dataList,
// right: '1%',
// textStyle: {
// fontSize: 12 * this.beilv,
// color: '#ced1d5'
// }
// },
series: this.series
})
// legend: {
// itemHeight: 10,
// itemWidth: 10,
// x: 'center', // 可设定图例在左、右、居中
// y: 'top', // 可设定图例在上、下、居中
// show: this.showLegend,
// data: this.dataList,
// right: '1%',
// textStyle: {
// fontSize: 12 * this.beilv,
// color: '#ced1d5'
// }
// },
series: this.series
})
}
// if (dataList.length !== 0) {
// this.$set(this.series, "data", dataList);
}
}
}

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-12-27 13:54:52
* @LastEditTime: 2024-03-26 10:50:30
* @LastEditTime: 2024-03-27 16:50:04
* @LastEditors: zhp
* @Description:
-->
@@ -42,7 +42,7 @@ export default {
},
height: {
type: Number,
default: 200
default: 100
},
showLegend: {
type: Boolean,
@@ -127,23 +127,31 @@ export default {
) : []
};
});
// this.charts.resize({
// //width: width,
// //height: height,
// // es6解构
// width,
// height
// })
this.chart.setOption({
legend: {
itemWidth: 12,
itemHeight: 12,
top:'10',
bottom: '20',
left: '20',
icon: 'rect',
textStyle: {
color: '#ffffff'
}
},
grid: {
top:'80',
top:'0',
left: '3%',
right: '4%',
// bottom: '3%',
width: 'auto',
height: '300',
height: '95',
containLabel: true
},
yAxis: [
@@ -170,7 +178,7 @@ export default {
verticalAlign: 'bottom',
fontSize: 12,
align: 'left',
padding: [0, 0, 15, -5]
padding: [0, 0, 10, -5]
}
},
data: topNameList
@@ -198,7 +206,7 @@ export default {
verticalAlign: 'bottom',
fontSize: 12,
align: 'right',
padding: [0, 0, 15, -5]
padding: [0, 0, 10, -5]
}
},
data: nameWasteList
@@ -210,6 +218,10 @@ export default {
},
series:series
})
this.chart.resize({
width: 'auto',
height: 90
});;
}
}
}

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-07-19 15:18:30
* @LastEditors: zhp
* @LastEditTime: 2024-03-26 17:57:44
* @LastEditTime: 2024-03-27 16:13:14
* @Description:
-->
<template>
@@ -16,6 +16,11 @@
许昌安彩深加工看板
<h3 class="unit">单位河南汇融数字科技有限公司</h3>
<h3 class="time">{{ times }}</h3>
<el-button type="text" class="title-button" :style="{ right: 33 + 'px', top: 37 + 'px' }"
@click="changeFullScreen">
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
<svg-icon v-else icon-class="fullScreenView" />
</el-button>
</el-row>
<el-row class="container-main flex-col" type="flex">
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1" style="height: 50%;">
@@ -33,13 +38,13 @@
</el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
<base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'order'">
<base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'">
<div style="width:100%; overflow: hidden scroll;">
<el-row v-for="op in orderList" :key="op.id" style="margin-bottom: 1em">
<!-- <el-col :span="12"> -->
<p class="now-secondary-title">{{ op.name }}</p>
<el-progress define-back-color="rgba(32, 57, 96, 1)" text-color="white"
:percentage="op.progressRate * 100" class="custom-progress-bar" />
:percentage="op.progressRate" class="custom-progress-bar" />
</el-row>
</div>
<!-- </div> -->
@@ -49,8 +54,8 @@
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-container :show-yes-time="true" :no-content-padding="true" :height="256" :size="'middle'" :title="'能源监控'"
:title-icon="'energyMonitoring'">
<base-container :show-yes-time="true" :no-content-padding="true" :height="256" :size="'eqStatus'"
:title="'能源监控'" :title-icon="'energyMonitoring'">
<el-row :gutter="9">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
<linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList"
@@ -60,7 +65,7 @@
</base-container>
</el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-container :show-time="true" :no-content-padding="true" :height="318 + 338 + 16" :size="'middle'"
<base-container :show-time="true" :no-content-padding="true" :height="318 + 338 + 16" :size="'eqStatus'"
:title="'产线产量及良品率'" :title-icon="'productLine'">
<double-y-chart ref="productLineChart" :id=" 'doubleYChart' " :height="390" :show-legend="true" />
</base-container>
@@ -271,6 +276,52 @@ export default {
this.SJGWebsocketClose()
},
mounted() {
let detData = [
{
id:'1',
name: '测试工单',
progressRate:0.933333
},
{
id: '2',
name: '测试工单2',
progressRate: 0.932323
}, {
id: '3',
name: '测试工单3',
progressRate: 0.23232
}, {
id: '4',
name: '测试工单4',
progressRate: 0.32323
}, {
id: '5',
name: '测试工单',
progressRate: 0.5555
}, {
id: '6',
name: '测试工单',
progressRate: 0.66564
},
]
this.orderList = detData.map((ele, index) => {
if (ele.progressRate && ele.progressRate != 1) {
return {
id: ele.id,
name: ele.name,
progressRate: parseFloat((ele.progressRate * 100).toFixed(3))
}
}
});
let EnergyNameList = ['Y61', 'Y62', 'Y63', 'Y64', 'Y65',]
this.EnergyMonitoringNameList = EnergyNameList
let EnergyDataList = [1, 2, 3, 4, 5]
// this.wsData.data.forEach((ele) => {
// EnergyDataList.push(ele.useQuantity)
// })
this.EnergyMonitoringList = EnergyDataList
// console.log(EnergyDataList)
this.$refs.EnergyMonitoringChart.initChart(this.EnergyMonitoringNameList, this.EnergyMonitoringList)
let eqArr = this.qualityYearList.map((item, index) => [
`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
</span>`,
@@ -452,7 +503,7 @@ export default {
return {
id: ele.id,
name: ele.name,
progressRate: ele.progressRate.toFixed(3)
progressRate: parseFloat((ele.progressRate * 100).toFixed(3))
}
}
});
@@ -464,7 +515,7 @@ export default {
`<span style="color:rgba(255,255,255,0.5)" >${item.name || ''}
</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.code || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.status || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)"><span style="color:rgba(255,255,255,0.5)"></span> ${item.status || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.error || ''}</span>`,
])
this.eqConfig.data = eqArr
@@ -616,18 +667,18 @@ export default {
this.isFullScreen = screenfull.isFullscreen
},
init() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.on('change', this.change)
}
},
destroy() {
if (screenfull.enabled) {
if (screenfull.isEnabled) {
screenfull.off('change', this.change)
}
},
changeFullScreen() {
this.containerWidth = 223223223
if (!screenfull.enabled) {
if (!screenfull.isEnabled) {
this.$message({
message: 'you browser can not work',
type: 'warning'
@@ -654,7 +705,7 @@ export default {
background: url('../../assets/img/OperationalOverview/title.png') no-repeat;
background-size: 100% 100%;
color: #00fff0;
// word-spacing: 8px;
word-spacing: 8px;
letter-spacing: 8px;
text-align: center;
.unit {

View File

@@ -19,6 +19,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -115,6 +116,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import EquipmentDrawer from '../components/firefightingDrawer';
import BaseDialogWrapper from '../components/BaseDialogWrapper.vue';
@@ -135,7 +137,7 @@ export default {
EquipmentDrawer,
BaseDialog: BaseDialogWrapper,
},
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
searchBarKeys: ['name', 'code'],
@@ -160,17 +162,28 @@ export default {
: undefined,
].filter((v) => v),
tableProps: [
{ prop: 'name', label: '设备名称' },
{ width: 256, prop: 'code', label: '设备编码' },
{ prop: 'location', label: '位置' },
{ prop: 'responsiblePeopleName', label: '负责人' },
{ prop: 'name', label: '设备名称', showOverflowtooltip: true },
{
width: 200,
prop: 'code',
label: '设备编码',
showOverflowtooltip: true,
},
{ prop: 'location', label: '位置', showOverflowtooltip: true },
{
prop: 'responsiblePeopleName',
label: '负责人',
showOverflowtooltip: true,
},
{
prop: 'dueDate',
width: 200,
label: '有效期至',
howOverflowTooltip: true,
filter: (val) =>
val != null ? moment(val).format('yyyy-MM-DD HH:mm:ss') : '--',
},
{ prop: 'remark', label: '备注' },
{ prop: 'remark', label: '备注', showOverflowtooltip: true },
],
searchBarFormConfig: [
{
@@ -285,7 +298,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
code: '',
name: '',
},

View File

@@ -19,6 +19,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -115,6 +116,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import EquipmentDrawer from '../components/manageDrawer';
import BaseDialogWrapper from '../components/BaseDialogWrapper.vue';
@@ -133,9 +135,9 @@ export default {
components: {
Editor,
EquipmentDrawer,
BaseDialog: BaseDialogWrapper
BaseDialog: BaseDialogWrapper,
},
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
searchBarKeys: ['name', 'code'],
@@ -167,11 +169,20 @@ export default {
// width: 180,
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
{ prop: 'name', label: '设备名称' },
{ width: 256, prop: 'code', label: '设备编码' },
{ prop: 'location', label: '位置' },
{ prop: 'responsiblePeopleName', label: '负责人' },
{ prop: 'remark', label: '备注' },
{ prop: 'name', label: '设备名称', showOverflowtooltip: true },
{
width: 256,
prop: 'code',
label: '设备编码',
showOverflowtooltip: true,
},
{ prop: 'location', label: '位置', showOverflowtooltip: true },
{
prop: 'responsiblePeopleName',
label: '负责人',
showOverflowtooltip: true,
},
{ prop: 'remark', label: '备注', showOverflowtooltip: true },
],
searchBarFormConfig: [
{
@@ -277,7 +288,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
code: '',
name: '',
},
@@ -407,15 +418,15 @@ export default {
// this.title = '修改设备';
// });
},
handleDetail(row, mode='detail') {
const {id} = row;
handleDetail(row, mode = 'detail') {
const { id } = row;
this.form.id = id;
// 打开抽屉
this.editMode = mode;
this.editVisible = true;
this.$nextTick(() => {
this.$refs['drawer'].init();
})
});
// this.reset();
// this.showUploadComponents = false;
// const id = row.id;

View File

@@ -19,6 +19,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -115,6 +116,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import EquipmentDrawer from '../components/safetyDrawer';
import {
createEquipment,
@@ -134,7 +136,7 @@ export default {
EquipmentDrawer,
BaseDialog: BaseDialogWrapper,
},
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
searchBarKeys: ['name', 'code'],
@@ -166,11 +168,20 @@ export default {
// width: 180,
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
{ prop: 'name', label: '设备名称' },
{ width: 256, prop: 'code', label: '设备编码' },
{ prop: 'location', label: '位置' },
{ prop: 'responsiblePeopleName', label: '负责人' },
{ prop: 'remark', label: '备注' },
{ prop: 'name', label: '设备名称', showOverflowtooltip: true },
{
width: 200,
prop: 'code',
label: '设备编码',
showOverflowtooltip: true,
},
{ prop: 'location', label: '位置', showOverflowtooltip: true },
{
prop: 'responsiblePeopleName',
label: '负责人',
showOverflowtooltip: true,
},
{ prop: 'remark', label: '备注', showOverflowtooltip: true },
],
searchBarFormConfig: [
{
@@ -275,7 +286,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
code: '',
name: '',
},

View File

@@ -9,6 +9,7 @@
<el-table
:data="tableDataWithIndex"
:border="true"
:max-height="tableH"
@selection-change="handleSelectionChange"
style="width: 100%"
:header-cell-style="{
@@ -20,25 +21,40 @@
type="selection"
:width="50"
:selectable="checkSelectable" />
<el-table-column prop="_pageIndex" width="80" align="center">
<el-table-column
prop="_pageIndex"
width="80"
align="center">
<template slot="header">
<el-popover placement="bottom-start" width="300" trigger="click">
<div class="setting-box" style="max-height: 400px; overflow-y: auto">
<el-popover
placement="bottom-start"
width="300"
trigger="click">
<div
class="setting-box"
style="max-height: 400px; overflow-y: auto">
<el-checkbox
v-for="(item, index) in tablePropsLabelList"
:key="'cb' + index"
v-model="selectedBox[index]"
:label="item.label" />
</div>
<i slot="reference" class="el-icon-s-tools" />
<i
slot="reference"
class="el-icon-s-tools" />
</el-popover>
</template>
</el-table-column>
<el-table-column
v-if="selectedBox[0]"
label="巡检单名称"
:show-overflow-tooltip="true"
prop="name"></el-table-column>
<el-table-column v-if="selectedBox[1]" label="部门" prop="planName">
<el-table-column
v-if="selectedBox[1]"
label="部门"
:show-overflow-tooltip="true"
prop="planName">
<template slot-scope="scope">
{{ scope.row.department || '---' }}
</template>
@@ -46,12 +62,18 @@
<el-table-column
v-if="selectedBox[2]"
label="巡检时间"
width="160"
:show-overflow-tooltip="true"
prop="planCheckTime">
<template slot-scope="scope">
{{ scope.row.planCheckTime | timeFilter }}
</template>
</el-table-column>
<el-table-column v-if="selectedBox[3]" label="班次" prop="groupClass">
<el-table-column
v-if="selectedBox[3]"
label="班次"
:show-overflow-tooltip="true"
prop="groupClass">
<template slot-scope="scope">
{{ scope.row.groupClass || '---' }}
</template>
@@ -59,6 +81,8 @@
<el-table-column
v-if="selectedBox[4]"
label="确认截止时间"
width="160"
:show-overflow-tooltip="true"
prop="confirmDueTime">
<template slot-scope="scope">
{{ scope.row.confirmDueTime | timeFilter }}
@@ -66,17 +90,21 @@
</el-table-column>
<el-table-column
v-if="selectedBox[5]"
width="150"
label="备注"
:show-overflow-tooltip="true"
prop="remark">
<template slot-scope="scope">
{{ scope.row.remark }}
</template>
</el-table-column>
<el-table-column width="188" label="操作">
<el-table-column
width="188"
label="操作">
<template slot-scope="scope">
<el-tooltip content="确认" placement="top">
<el-tooltip
content="确认"
placement="top">
<el-button
type="text"
style="margin: 5px 0; padding: 0"
@@ -87,7 +115,9 @@
</el-tooltip>
<!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="查看详情" placement="top">
<el-tooltip
content="查看详情"
placement="top">
<el-button
type="text"
style="margin: 5px 0; padding: 0"
@@ -97,7 +127,9 @@
</el-tooltip>
<!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="编辑" placement="top">
<el-tooltip
content="编辑"
placement="top">
<el-button
type="text"
style="margin: 5px 0; padding: 0"
@@ -107,7 +139,9 @@
</el-tooltip>
<!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="删除" placement="top">
<el-tooltip
content="删除"
placement="top">
<el-button
type="text"
style="margin: 5px 0; padding: 0"
@@ -122,10 +156,12 @@
<script>
import moment from 'moment';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
export default {
name: 'CheckOrderListTable',
components: {},
mixins: [tableHeightMixin],
props: ['tableData', 'page', 'limit', 'permissionGuard'],
filters: {
timeFilter: (val) =>

View File

@@ -20,6 +20,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -62,11 +63,12 @@ import addOrUpdata from './add-or-updata.vue';
import add from './add.vue';
import { parseTime } from '../../core/mixins/code-filter';
import BaseDialogWrapperVue from '../components/BaseDialogWrapper.vue';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
export default {
name: 'SpecialEquipmentCheckConfig',
components: { addOrUpdata, add, BaseDialog: BaseDialogWrapperVue },
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
addOrUpdateVisible: false,
@@ -103,28 +105,30 @@ export default {
{
prop: 'name',
label: '巡检单名称',
width: 100,
minWidth: 100,
showOverflowtooltip: true,
},
{
prop: 'code',
width: 180,
label: '巡检单编码',
showOverflowtooltip: true,
},
{
prop: 'department',
label: '部门',
width: 100,
showOverflowtooltip: true,
},
{
prop: 'planCheckTime',
label: '计划巡检时间',
width: 160,
showOverflowtooltip: true,
filter: parseTime,
},
{
prop: 'checkPeriod',
width: 130,
label: '巡检频率(天/次)',
showOverflowtooltip: true,
},
@@ -142,6 +146,7 @@ export default {
{ prop: 'creator', label: '创建人', showOverflowtooltip: true },
{
prop: 'createTime',
width: 160,
label: '创建时间',
showOverflowtooltip: true,
filter: parseTime,
@@ -187,7 +192,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
name: null,
status: 0,
special: true,

View File

@@ -131,6 +131,7 @@ export default {
{
prop: 'confirmDueTime',
label: '确认截止时间',
width: 150,
showOverflowtooltip: true,
filter: parseTime,
// filter: (val) =>
@@ -185,7 +186,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
name: null,
status: 1,
special: true,

View File

@@ -19,7 +19,9 @@
<div class="drawer-body flex">
<div class="drawer-body__content">
<div class="form-part" style="margin-bottom: 32px">
<div
class="form-part"
style="margin-bottom: 32px">
<!-- <el-skeleton v-if="!showForm" animated /> -->
<el-form
class="equipment-info-form"
@@ -30,37 +32,49 @@
v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="巡检单名称" prop="name">
<el-form-item
label="巡检单名称"
prop="name">
<div style="">{{ form.name || '---' }}</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="部门" prop="department">
<el-form-item
label="部门"
prop="department">
<div style="">{{ form.department || '---' }}</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班次" prop="groupClass">
<el-form-item
label="班次"
prop="groupClass">
<div style="">{{ form.groupClass || '---' }}</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="巡检人" prop="checkPerson">
<el-form-item
label="巡检人"
prop="checkPerson">
<div style="">{{ form.checkPerson || '---' }}</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="巡检时间" prop="planCheckTime">
<div style="">{{ form.planCheckTime | parseTime }}</div>
<el-form-item
label="巡检时间"
prop="planCheckTime">
<div style="">{{ form.actualCheckTime | parseTime }}</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="确认人" prop="confirmPerson">
<el-form-item
label="确认人"
prop="confirmPerson">
<div style="">{{ form.confirmPerson || '---' }}</div>
</el-form-item>
</el-col>
@@ -81,7 +95,9 @@
<div
v-if="!disableEdit"
style="position: absolute; top: -40px; right: 0">
<el-button @click="handleAddAttr" type="text">
<el-button
@click="handleAddAttr"
type="text">
<i class="el-icon-plus"></i>
添加内容
</el-button>
@@ -112,7 +128,9 @@
</div>
<div class="drawer-body__footer">
<el-button v-if="!disableEdit" @click="handleCancel">
<el-button
v-if="!disableEdit"
@click="handleCancel">
{{ disableEdit ? '返回' : '取消' }}
</el-button>
<el-button

View File

@@ -18,6 +18,7 @@
:table-props="tableProps"
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:max-height="tableH"
:table-data="list"
@emitFun="handleEmitFun">
<method-btn
@@ -50,11 +51,12 @@ import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { parseTime } from '../../core/mixins/code-filter';
import RecordDetail from './Record-detail.vue';
import moment from 'moment';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
export default {
name: 'SpecialEquipmentCheckRecord',
components: { RecordDetail },
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
const today = new Date();
const twoDaysAgo = new Date(today.getTime() - 2 * 24 * 60 * 60 * 1000);
@@ -89,10 +91,16 @@ export default {
// : undefined,
].filter((v) => v),
tableProps: [
{ prop: 'name', label: '巡检单名称' },
{ prop: 'department', label: '部门' },
{ prop: 'planCheckTime', label: '巡检时间', filter: parseTime },
{ prop: 'groupClass', label: '班次' },
{ prop: 'name', label: '巡检单名称', showOverflowtooltip: true },
{ prop: 'department', label: '部门', showOverflowtooltip: true },
{
prop: 'actualCheckTime',
label: '巡检时间',
width: 160,
filter: parseTime,
showOverflowtooltip: true,
},
{ prop: 'groupClass', label: '班次', showOverflowtooltip: true },
// {
// prop: '_detail',
// label: '巡检内容',
@@ -122,26 +130,6 @@ export default {
{ prop: 'remark', label: '备注' },
],
searchBarFormConfig: [
// {
// type: 'select',
// label: '设备大类',
// placeholder: '请选择设备大类',
// param: 'specialType',
// onchange: true,
// selectOptions: [
// { id: 1, name: '安全设备' },
// { id: 2, name: '消防设备' },
// { id: 3, name: '特种设备' },
// ],
// filterable: true,
// },
// {
// type: 'select',
// label: '设备',
// placeholder: '请选择设备',
// param: 'equipmentId',
// filterable: true,
// },
{
type: 'input',
label: '巡检单名称',
@@ -196,7 +184,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
special: true,
status: 2,
actualCheckTime: t,

View File

@@ -19,16 +19,9 @@
:table-props="tableProps"
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:max-height="tableH"
:table-data="list"
@emitFun="handleEmitFun">
<!-- <method-btn
v-if="tableBtn.length"
slot="handleBtn"
label="操作"
:width="120"
:method-list="tableBtn"
@clickBtn="handleTableBtnClick" /> -->
</base-table>
@emitFun="handleEmitFun"></base-table>
<!-- 分页组件 -->
<pagination
@@ -61,74 +54,18 @@
</template>
<script>
// import { publicFormatter } from '@/utils/dict';
// import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record';
import { parseTime } from '@/utils/ruoyi';
import MonitorDetail from './Monitor--detail.vue';
const remainBox = {
name: 'RemainBox',
props: ['injectData'],
data() {
return {};
},
computed: {
value() {
return this.injectData[this.injectData.prop] || null;
},
color() {
if (this.value) {
const v = +this.value;
return v < 0 ? '#FF5454' : v >= 0 && v < 2 ? '#FFD767' : '#37D97F';
}
return 'unset';
},
},
render: function (h) {
return (
<div
style={`background: ${
this.color
}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
// this.color == 'red' ? '#fff' : 'unset'
'#fff'
}`}>
{this.injectData[this.injectData.prop]?.toFixed(0) || ''}
</div>
);
},
};
const btn = {
name: 'tableBtn',
props: ['injectData'],
data() {
return {};
},
methods: {
handleClick() {
this.$emit('emitData', {
action: this.injectData.label,
value: this.injectData,
});
},
},
render: function (h) {
return (
<el-button type="text" onClick={this.handleClick}>
{this.injectData.entryText}
</el-button>
);
},
};
import { RemainBox, TableBtn } from '@/components/tableInnerComponents';
export default {
name: 'SpecialEquipmentMaintainMonitor',
components: { MonitorDetail },
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
monitorDetailVisible: false,
@@ -189,13 +126,13 @@ export default {
prop: 'opt2',
label: '保养内容',
entryText: '详情',
subcomponent: btn,
subcomponent: TableBtn,
width: 100,
},
{
prop: 'remainDays',
label: '距离下次保养剩余时间(天)',
subcomponent: remainBox,
subcomponent: RemainBox,
minWidth: 210,
},
// {
@@ -307,7 +244,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
planId: null,
special: true,
},

View File

@@ -19,6 +19,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -62,6 +63,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import { deleteEqMaintainPlan } from '@/api/equipment/base/maintain/record';
import PlanConfigAdd from './PlanConfig--add.vue';
import PlanConfigAddContent from './PlanConfig--addContent.vue';
@@ -74,7 +76,7 @@ export default {
DialogForm: PlanConfigAdd,
PlanConfigAddContent,
},
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
const t = new Date();
const [y, m, d] = [t.getFullYear(), t.getMonth(), t.getDate()];
@@ -103,93 +105,62 @@ export default {
: undefined,
].filter((v) => v),
tableProps: [
{ prop: 'name', label: '保养计划名称' },
{ prop: 'departmentName', label: '部门' },
{ width: 144, prop: 'lineName', label: '产线名' },
{ width: 132, prop: 'maintenancePeriod', label: '保养频率(天/次)' },
{
width: 180,
minWidth: 120,
prop: 'name',
label: '保养计划名称',
showOverflowtooltip: true,
},
{ prop: 'departmentName', label: '部门', showOverflowtooltip: true },
{
prop: 'lineName',
label: '产线名',
showOverflowtooltip: true,
},
{
minWidth: 160,
prop: 'maintenancePeriod',
label: '保养频率(天/次)',
showOverflowtooltip: true,
},
{
minWidth: 160,
prop: 'firstMaintenanceTime',
label: '首次保养时间',
showOverflowtooltip: true,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
},
{ width: 144, prop: 'maintainDuration', label: '保养时长' },
{ prop: 'maintainer', label: '计划保养人员' },
{
width: 144,
minWidth: 100,
prop: 'maintainDuration',
label: '保养时长',
showOverflowtooltip: true,
},
{
minWidth: 144,
prop: 'maintainer',
label: '计划保养人员',
showOverflowtooltip: true,
},
{
minWidth: 144,
prop: 'confirmTimeLimit',
label: '确认时限',
showOverflowtooltip: true,
filter: (val) =>
val != null && val > 24
? `${(val - (val % 24)) / 24}${val % 24}小时`
: `${val}小时`,
},
{ prop: 'remark', label: '备注' },
// {
// prop: 'createTime',
// label: '添加时间',
// fixed: true,
// width: 180,
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
// { prop: 'code', label: '计划编号' },
// {
// prop: 'enabled',
// label: '启用状态',
// filter: (val) => ['停用', '启用'][val],
// },
// {
// prop: 'equipmentCategory',
// label: '设备大类',
// filter: (val) =>
// val != null ? ['-', '安全', '消防', '特种'][val] : '-',
// },
// { prop: 'equipmentName', label: '设备名称' },
// { width: 144, prop: 'maintainDuration', label: '计划保养用时(h)' },
// {
// prop: 'maintainType',
// label: '保养类型',
// filter: publicFormatter('maintain_type'),
// },
{ prop: 'remark', label: '备注', showOverflowtooltip: true },
],
searchBarFormConfig: [
// {
// type: 'select',
// label: '设备大类',
// selectOptions: [
// { id: 1, name: '安全设备' },
// { id: 2, name: '消防设备' },
// { id: 3, name: '特种设备' },
// ],
// placeholder: '请选择设备大类',
// param: 'specialType',
// },
{
type: 'input',
label: '保养计划名称',
placeholder: '请输入保养计划名称',
param: 'planName',
// selectOptions: [
// {name: 1, id: 1}
// ]
},
// {
// type: 'input',
// label: '设备名',
// placeholder: '请输入设备名称',
// param: 'equipmentName',
// },
// {
// type: 'datePicker',
// label: '时间段',
// dateType: 'daterange',
// format: 'yyyy-MM-dd',
// valueFormat: 'yyyy-MM-dd HH:mm:ss',
// rangeSeparator: '-',
// startPlaceholder: '开始时间',
// endPlaceholder: '结束时间',
// param: 'createTime',
// },
{
type: 'button',
btnName: '查询',
@@ -208,14 +179,6 @@ export default {
plain: true,
color: 'success',
},
// {
// type: this.$auth.hasPermi('base:quality-inspection-type:export')
// ? 'button'
// : '',
// btnName: '导出',
// name: 'export',
// color: 'warning',
// },
],
rows: [
[
@@ -316,7 +279,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
// equipmentName: null,
// createTime: null,
specialType: null,

View File

@@ -19,6 +19,7 @@
:table-props="tableProps"
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:max-height="tableH"
:table-data="list"
@emitFun="handleEmitFun">
<!-- <method-btn
@@ -51,9 +52,16 @@
ref="form"
v-model="form"
:disabled="mode == 'detail'" />
<el-row v-if="mode === 'detail'" slot="footer" type="flex" justify="end">
<el-row
v-if="mode === 'detail'"
slot="footer"
type="flex"
justify="end">
<el-col :span="12">
<el-button size="small" class="btnTextStyle" @click="cancel">
<el-button
size="small"
class="btnTextStyle"
@click="cancel">
关闭
</el-button>
</el-col>
@@ -70,6 +78,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import Editor from '@/components/Editor';
import DialogForm from './Record--add.vue';
import {
@@ -77,36 +86,15 @@ import {
exportMaintainLogExcel,
} from '@/api/equipment/base/maintain/record';
import RecordDetail from './Record--detail.vue';
import { TableBtn } from '@/components/tableInnerComponents';
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
const btn = {
name: 'tableBtn',
props: ['injectData'],
data() {
return {};
},
methods: {
handleClick() {
this.$emit('emitData', {
action: this.injectData.label,
value: this.injectData,
});
},
},
render: function (h) {
return (
<el-button type="text" onClick={this.handleClick}>
{this.injectData.name}
</el-button>
);
},
};
const timeFilter = (val) =>
val ? moment(val).format('yyyy-MM-DD HH:mm:ss') : '---';
export default {
name: 'SpecialEquipmentMaintainRecord',
components: { DialogForm, RecordDetail },
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
const today = new Date();
const twoDaysAgo = new Date(today.getTime() - 2 * 24 * 60 * 60 * 1000);
@@ -157,54 +145,54 @@ export default {
{
prop: 'maintainOrderNumber',
label: '设备保养单号',
width: 110,
minWidth: 110,
showOverflowtooltip: true,
},
{
prop: 'planName',
label: '保养计划名称',
width: 110,
minWidth: 110,
showOverflowtooltip: true,
filter: (val) => (val != null ? val : '---'),
},
{
prop: 'departmentName',
label: '部门',
width: 110,
minWidth: 110,
showOverflowtooltip: true,
},
{
prop: 'lineName',
label: '产线名',
width: 110,
minWidth: 110,
showOverflowtooltip: true,
},
{
prop: 'planStartTime',
label: '计划开始时间',
filter: timeFilter,
minWidth: 150,
minWidth: 130,
showOverflowtooltip: true,
},
{
prop: 'planEndTime',
label: '计划结束时间',
filter: timeFilter,
minWidth: 150,
minWidth: 130,
showOverflowtooltip: true,
},
{
prop: 'startTime',
label: '实际开始时间',
filter: timeFilter,
minWidth: 150,
minWidth: 130,
showOverflowtooltip: true,
},
{
prop: 'endTime',
label: '实际结束时间',
filter: timeFilter,
minWidth: 150,
minWidth: 130,
showOverflowtooltip: true,
},
{
@@ -218,78 +206,12 @@ export default {
{
prop: '_detail',
label: '详情',
name: '详情',
entryText: '详情',
minWidth: 60,
subcomponent: btn,
subcomponent: TableBtn,
},
// {
// prop: 'equipmentCategory',
// label: '设备大类',
// minWidth: 100,
// showOverflowtooltip: true,
// filter: (val) =>
// val != null ? ['-', '安全设备', '消防设备', '特种设备'][val] : '-',
// },
// {
// prop: 'equipmentName',
// label: '设备名称',
// minWidth: 100,
// showOverflowtooltip: true,
// },
// {
// prop: 'maintainWorker',
// label: '保养人员',
// minWidth: 100,
// showOverflowtooltip: true,
// },
// {
// prop: 'relatePlan',
// label: '是否计划保养',
// width: 120,
// filter: (v) => (v != null ? ['', '是', '否'][v] : ''),
// },
// {
// prop: 'planName',
// label: '保养计划名称',
// minWidth: 120,
// showOverflowtooltip: true,
// },
// {
// prop: 'maintainDuration',
// label: '计划保养用时(h)',
// minWidth: 130,
// showOverflowtooltip: true,
// },
// { prop: 'timeUsed', label: '实际保养用时(h)', minWidth: 130 },
// {
// prop: 'remark',
// label: '备注',
// minWidth: 100,
// showOverflowtooltip: true,
// },
],
searchBarFormConfig: [
// {
// type: 'select',
// label: '设备大类',
// placeholder: '请选择设备大类',
// param: 'specialType',
// onchange: true,
// selectOptions: [
// { id: 1, name: '安全设备' },
// { id: 2, name: '消防设备' },
// { id: 3, name: '特种设备' },
// ],
// filterable: true,
// defaultSelect: null
// },
// {
// type: 'select',
// label: '设备',
// placeholder: '请选择设备',
// param: 'equipmentId',
// defaultSelect: null
// },
{
type: 'select',
label: '保养计划名称',
@@ -297,7 +219,7 @@ export default {
param: 'maintainPlanId',
defaultSelect: null,
filterable: true,
clearable: true
clearable: true,
},
// 开始结束时间
{
@@ -314,16 +236,6 @@ export default {
defaultSelect: t,
// width: 350,
},
// {
// type: 'select',
// label: '是否计划保养',
// selectOptions: [
// { name: '是', id: 1 },
// { name: '否', id: 2 },
// ],
// defaultSelect: null,
// param: 'relatePlan',
// },
{
type: 'button',
btnName: '查询',
@@ -508,7 +420,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
maintainPlanId: null,
startTime: t,
// relatePlan: null,
@@ -574,11 +486,13 @@ export default {
getList() {
this.loading = true;
// 执行查询
this.recv({ ...this.queryParams, special: true }).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
this.recv({ ...this.queryParams, special: true, confirmed: true }).then(
(response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
}
);
},
/** 取消按钮 */
cancel() {

View File

@@ -20,6 +20,7 @@
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list"
:max-height="tableH"
@emitFun="handleEmitFun">
<method-btn
v-if="tableBtn.length"
@@ -63,6 +64,7 @@
<script>
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import DetailDrawer from './CustomDialogForm.vue';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
import {
deleteRepair,
exportRepairLogExcel,
@@ -75,7 +77,7 @@ import BaseDialogWrapperVue from '../components/BaseDialogWrapper.vue';
export default {
name: 'SpecialEquipmentRepair',
components: { DetailDrawer, DialogForm, BaseDialog: BaseDialogWrapperVue },
mixins: [basicPageMixin],
mixins: [basicPageMixin, tableHeightMixin],
data() {
return {
addOrUpdateVisible: false,
@@ -167,6 +169,7 @@ export default {
{
prop: 'maintenanceResult',
label: '维修结果',
minWidth: 110,
showOverflowtooltip: true,
filter: (v) => (v != null ? ['成功', '失败'][v] : ''),
},
@@ -174,7 +177,7 @@ export default {
prop: 'maintenanceDetail',
label: '维修描述',
showOverflowtooltip: true,
width: 110,
minWidth: 110,
subcomponent: htmls,
},
{
@@ -289,7 +292,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
// maintenanceStatus: null,
maintenanceResult: null,
createTime: null,

View File

@@ -456,7 +456,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
maintainPlanId: null,
startTime: null,
special: true,

View File

@@ -10,6 +10,7 @@
:data="tableDataWithIndex"
:border="true"
@selection-change="handleSelectionChange"
:max-height="tableH"
style="width: 100%"
:header-cell-style="{
background: '#f2f4f9',
@@ -46,13 +47,15 @@
</el-table-column>
<el-table-column
v-if="selectedBox[0]"
width="128"
min-width="144"
label="设备保养单号"
:show-overflow-tooltip="true"
prop="maintainOrderNumber"></el-table-column>
<el-table-column
v-if="selectedBox[1]"
width="128"
min-width="144"
label="保养计划名称"
:show-overflow-tooltip="true"
prop="planName">
<template slot-scope="scope">
{{ scope.row.planName || '---' }}
@@ -61,6 +64,7 @@
<el-table-column
v-if="selectedBox[2]"
label="部门"
:show-overflow-tooltip="true"
prop="departmentName">
<template slot-scope="scope">
{{ scope.row.departmentName || '---' }}
@@ -69,6 +73,7 @@
<el-table-column
v-if="selectedBox[3]"
label="产线名"
:show-overflow-tooltip="true"
prop="lineName">
<template slot-scope="scope">
{{ scope.row.lineName || '---' }}
@@ -76,8 +81,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[4]"
width="150"
min-width="144"
label="计划开始时间"
:show-overflow-tooltip="true"
prop="planStartTime">
<template slot-scope="scope">
{{ scope.row.planStartTime | timeFilter }}
@@ -85,8 +91,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[5]"
width="150"
min-width="144"
label="计划结束时间"
:show-overflow-tooltip="true"
prop="planEndTime">
<template slot-scope="scope">
{{ scope.row.planEndTime | timeFilter }}
@@ -94,8 +101,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[6]"
width="150"
min-width="144"
label="实际开始时间"
:show-overflow-tooltip="true"
prop="startTime">
<template slot-scope="scope">
{{ scope.row.startTime | timeFilter }}
@@ -103,8 +111,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[7]"
width="150"
min-width="144"
label="实际结束时间"
:show-overflow-tooltip="true"
prop="endTime">
<template slot-scope="scope">
{{ scope.row.endTime | timeFilter }}
@@ -112,8 +121,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[8]"
width="150"
min-width="144"
label="确认截止时间"
:show-overflow-tooltip="true"
prop="confirmDueTime">
<template slot-scope="scope">
{{ scope.row.confirmDueTime | timeFilter }}
@@ -121,8 +131,9 @@
</el-table-column>
<el-table-column
v-if="selectedBox[9]"
width="150"
min-width="144"
label="保养计划类型"
:show-overflow-tooltip="true"
prop="relatePlan">
<template slot-scope="scope">
{{ scope.row.relatePlan | relatePlanFilter }}
@@ -186,10 +197,12 @@
<script>
import moment from 'moment';
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
export default {
name: 'WaitingListTable',
components: {},
mixins: [tableHeightMixin],
props: ['tableData', 'page', 'limit'],
filters: {
timeFilter: (val) =>

View File

@@ -6,30 +6,30 @@
* @Description:
-->
<template>
<div v-html="content" />
<div v-html="content" />
</template>
<script>
export default {
props: {
injectData: {
type: Object,
default: () => ({})
}
},
data() {
return {
content: ''
}
},
mounted() {
this.getContent()
},
props: {
injectData: {
type: Object,
default: () => ({}),
},
},
data() {
return {
content: '',
};
},
mounted() {
this.getContent();
},
methods: {
getContent() {
this.content = this.injectData[this.injectData.prop] ?? ''
}
}
}
methods: {
getContent() {
this.content = this.injectData[this.injectData.prop] ?? '';
},
},
};
</script>