机械分厂设备大屏 隐藏故障率
This commit is contained in:
hzz 2023-08-07 15:34:23 +08:00
parent 44fa4b00fe
commit c4d68a6771
3 changed files with 206 additions and 201 deletions

View File

@ -2,214 +2,214 @@ import { ref, computed } from 'vue'
import { Names } from "@/store/storeName"; import { Names } from "@/store/storeName";
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
// import { sensor, shuiyaData } from '@/utils/sensor' // import { sensor, shuiyaData } from '@/utils/sensor'
import {newPoint} from '@/mock/newPoint' import { newPoint } from '@/mock/newPoint'
export const useFactoryStore = defineStore(Names.Factory, () => { export const useFactoryStore = defineStore(Names.Factory, () => {
const sensorList =ref<any>([]) //ref<any>(JSON.parse(localStorage.getItem('sensorList') || '[]')) const sensorList = ref<any>([]) //ref<any>(JSON.parse(localStorage.getItem('sensorList') || '[]'))
const objSensor = {} const objSensor = {}
const devdataList = ref<any>([]) const devdataList = ref<any>([])
//要更新的传感器数据 //要更新的传感器数据
const updateSensorData= ref<any>({}) const updateSensorData = ref<any>({})
//传感器数量列表 //传感器数量列表
const temp_iconList = [ const temp_iconList = [
{ {
id: 1,
name: "icon-icon-temperature",
i18n:'messages.humitureSensor',
value: "温湿度传感器",
iconType:"温湿度",
counts: 0,
allnum: 0,
},
{
id: 2,
name: "icon-shengyin",
i18n:'messages.noiseSensor',
value: "噪音传感器",
iconType:"噪音",
counts: 0,
allnum: 0,
},
{
id: 3,
name: "icon-dianliu",
i18n:'messages.powerSensor',
value: "电力传感器",
iconType:"电力",
counts: 0,
allnum: 0,
},
{
id: 4,
name: "icon-weibiaoti1",
i18n:'messages.sparkSensor',
value: "火花传感器",
iconType:"火花",
counts: 0,
allnum: 0,
},
{
id: 5,
name: "icon-fenchen",
i18n:'messages.dustSensor',
value: "粉尘传感器",
iconType:"粉尘",
counts: 0,
allnum: 0,
},
{
id: 6,
name: "icon-app_icons--",
i18n:'messages.TVOC_CH2OSensor',
value: "TVOC/甲醛传感器",
iconType:"TVOC/甲醛",
counts: 0,
allnum: 0,
},
{
id: 7,
name: "icon-yanwubaojingqi",
i18n:'messages.smokeSensor',
value: "烟雾传感器",
iconType:"烟雾",
counts: 0,
allnum: 0,
},
{
id: 8,
name: "icon-ranqi",
i18n:'messages.gasSensor',
value: "燃气传感器",
iconType:"燃气",
counts: 0,
allnum: 0,
},
{
id: 9,
name: "icon-shuiya",
i18n:'messages.waterPressureSensor',
value: "水压传感器",
iconType:"水压",
counts: 0,
allnum: 0,
},{
id: 10,
name: "icon-qiya",
i18n:'messages.gasPressureSensor',
value: "气压传感器",
iconType:"气压",
counts: 0,
allnum: 0,
},
{
id: 11,
name: "icon-beikongshuiwupingtaimenhu-tubiao_zhinengwangguan",
i18n:'messages.gateway',
value: "网关",
iconType:"网关",
counts: 0,
allnum: 0,
},
]
const temp_devList = [ {
id: 1, id: 1,
name: "icon-shebeiditu", name: "icon-icon-temperature",
i18n:'messages.Dev', i18n: 'messages.humitureSensor',
value: "设备", value: "温湿度传感器",
iconType: "温湿度",
counts: 0, counts: 0,
allnum: 0, allnum: 0,
},] },
const iconList = ref(JSON.parse(JSON.stringify(temp_iconList))) {
//设备数量列表 id: 2,
const devList = ref(JSON.parse(JSON.stringify(temp_devList))) name: "icon-shengyin",
i18n: 'messages.noiseSensor',
value: "噪音传感器",
iconType: "噪音",
counts: 0,
allnum: 0,
},
{
id: 3,
name: "icon-dianliu",
i18n: 'messages.powerSensor',
value: "电力传感器",
iconType: "电力",
counts: 0,
allnum: 0,
},
{
id: 4,
name: "icon-weibiaoti1",
i18n: 'messages.sparkSensor',
value: "火花传感器",
iconType: "火花",
counts: 0,
allnum: 0,
},
{
id: 5,
name: "icon-fenchen",
i18n: 'messages.dustSensor',
value: "粉尘传感器",
iconType: "粉尘",
counts: 0,
allnum: 0,
},
{
id: 6,
name: "icon-app_icons--",
i18n: 'messages.TVOC_CH2OSensor',
value: "TVOC/甲醛传感器",
iconType: "TVOC/甲醛",
counts: 0,
allnum: 0,
},
{
id: 7,
name: "icon-yanwubaojingqi",
i18n: 'messages.smokeSensor',
value: "烟雾传感器",
iconType: "烟雾",
counts: 0,
allnum: 0,
},
{
id: 8,
name: "icon-ranqi",
i18n: 'messages.gasSensor',
value: "燃气传感器",
iconType: "燃气",
counts: 0,
allnum: 0,
},
{
id: 9,
name: "icon-shuiya",
i18n: 'messages.waterPressureSensor',
value: "水压传感器",
iconType: "水压",
counts: 0,
allnum: 0,
}, {
id: 10,
name: "icon-qiya",
i18n: 'messages.gasPressureSensor',
value: "气压传感器",
iconType: "气压",
counts: 0,
allnum: 0,
},
{
id: 11,
name: "icon-beikongshuiwupingtaimenhu-tubiao_zhinengwangguan",
i18n: 'messages.gateway',
value: "网关",
iconType: "网关",
counts: 0,
allnum: 0,
},
]
const temp_devList = [{
id: 1,
name: "icon-shebeiditu",
i18n: 'messages.Dev',
value: "设备",
counts: 0,
allnum: 0,
},]
const iconList = ref(JSON.parse(JSON.stringify(temp_iconList)))
//设备数量列表
const devList = ref(JSON.parse(JSON.stringify(temp_devList)))
//更新传感器数据方法 //更新传感器数据方法
const updateSensorList= (data:any) => { const updateSensorList = (data: any) => {
// console.log(objSensor,'updateSensorList'); // console.log(objSensor,'updateSensorList');
// objSensor.hasOwnProperty(data.id) && (objSensor[data.id].status = data.status) // objSensor.hasOwnProperty(data.id) && (objSensor[data.id].status = data.status)
data.status = data.status === 'true' ? true : false data.status = data.status === 'true' ? true : false
if (objSensor.hasOwnProperty(data.id)&&objSensor[data.id].status != data.status) { if (objSensor.hasOwnProperty(data.id) && objSensor[data.id].status != data.status) {
objSensor[data.id].status = data.status objSensor[data.id].status = data.status
updateSensorData.value[data.id] = objSensor[data.id] updateSensorData.value[data.id] = objSensor[data.id]
}
// updateSensorData.value[data.id] = data
}
//更新后清除 更新传感器数据
const clearupdateSensorData = () => {
updateSensorData.value = {}
}
const setDataList = (sensor: any) => {
const data: any[] = []
sensorList.value = []
iconList.value = JSON.parse(JSON.stringify(temp_iconList))
for (let i in sensor) {
let iconListKey = iconList.value.findIndex(item => item.iconType == i)
let items = sensor[i].map((item: any) => {
item.icon = i
//传感器数量
iconList.value[iconListKey].allnum++
//在线传感器数量
if (item.status == "true") {
iconList.value[iconListKey].counts++
} }
// updateSensorData.value[data.id] = data return item
})
data.push(...items)
} }
//更新后清除 更新传感器数据 let newData: object[] = []
const clearupdateSensorData= () => { data.forEach(item => {
updateSensorData.value = {} let { id, x, y, name, status, icon } = item
} if (x !== 0 && y !== 0) {
const listItem = {
const setDataList = (sensor:any) => { id,
const data:any[] = [] x,
sensorList.value = [] y,
iconList.value = JSON.parse(JSON.stringify(temp_iconList)) name,
status: status === 'true' ? true : false,
for(let i in sensor) { icon
let iconListKey = iconList.value.findIndex(item=>item.iconType == i)
let items = sensor[i].map((item:any)=>{
item.icon = i
//传感器数量
iconList.value[iconListKey].allnum++
//在线传感器数量
if (item.status == "true") {
iconList.value[iconListKey].counts++
}
return item
})
data.push(...items)
} }
let newData:object[] = [] // if (newPoint.hasOwnProperty(id)) {
data.forEach(item => { // listItem.x = newPoint[id].x
let {id, x, y, name, status,icon } = item // listItem.y = newPoint[id].y
if (x !== 0 && y !== 0) { // }
const listItem = { newData.push(listItem)
id, objSensor[id] = listItem
x, }
y, })
name, //localStorage.setItem('sensorList', JSON.stringify(newData))
status: status === 'true' ? true : false, sensorList.value = newData;
icon }
} const setdevList = (data: any) => {
// if (newPoint.hasOwnProperty(id)) { devList.value = JSON.parse(JSON.stringify(temp_devList))
// listItem.x = newPoint[id].x devdataList.value = []
// listItem.y = newPoint[id].y for (let i in data) {
// } data[i].forEach(element => {
newData.push(listItem) element.icon = '设备'
objSensor[id] = listItem element.status = element.status === 'true' ? true : false
} // if (newPoint.hasOwnProperty(element.id)) {
}) // element.x = newPoint[element.id].x
//localStorage.setItem('sensorList', JSON.stringify(newData)) // element.y = newPoint[element.id].y
sensorList.value = newData; // }
} devdataList.value.push(element)
const setdevList = (data:any) => { objSensor[element['id']] = element
devList.value = JSON.parse(JSON.stringify(temp_devList)) //设备数量
devdataList.value = [] devList.value[0].allnum++
for(let i in data) { if (element.status) {
data[i].forEach(element => { // 在线设备数量
element.icon = '设备' devList.value[0].counts++
element.status = element.status === 'true' ? true : false
// if (newPoint.hasOwnProperty(element.id)) {
// element.x = newPoint[element.id].x
// element.y = newPoint[element.id].y
// }
devdataList.value.push(element)
objSensor[element['id']] = element
//设备数量
devList.value[0].allnum++
if (element.status) {
// 在线设备数量
devList.value[0].counts++
}
});
} }
});
} }
//保存新点位坐标
function saveNewPoint(id:string,x:number,y:number) {
newPoint.value[id] = {x,y}
}
return { sensorList,devdataList,devList,iconList,updateSensorData,updateSensorList,clearupdateSensorData,setDataList,setdevList,saveNewPoint } }
//保存新点位坐标
function saveNewPoint(id: string, x: number, y: number) {
newPoint.value[id] = { x, y }
}
return { sensorList, devdataList, devList, iconList, updateSensorData, updateSensorList, clearupdateSensorData, setDataList, setdevList, saveNewPoint }
}) })

View File

@ -92,7 +92,7 @@ let devFaultTipData = ref([])
let devStatusTipData = ref([]) let devStatusTipData = ref([])
let ringData = ref([]) let ringData = ref([])
let scrollBoardConfig = reactive({ let scrollBoardConfig = reactive({
header: ['序号', '设备名称', '所属车间', '设备状态', '稼动率', '故障率'], header: ['序号', '设备名称', '所属车间', '设备状态', '稼动率'],//, ''
headerBGC: 'rgb(52, 105, 243)', headerBGC: 'rgb(52, 105, 243)',
oddRowBGC: '#100c2a', oddRowBGC: '#100c2a',
evenRowBGC: '#100c2a', evenRowBGC: '#100c2a',
@ -172,7 +172,7 @@ async function reqDeviceTotelListMFfun() {
item.dept, item.dept,
compare[item.status] ? compare[item.status] : '停机', compare[item.status] ? compare[item.status] : '停机',
item.activation + '%', item.activation + '%',
item.failure + '%' // item.failure + '%'
] ]
}) })
scrollBoardConfig.rawData = result.data; scrollBoardConfig.rawData = result.data;

View File

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<dv-border-box-6 :color="['#20aec5', '#20aec5']"> <dv-border-box-6 :color="['#20aec5', '#20aec5']">
<div class="content"> <div class="content">
<div class="status online">{{ prop.data.status }}</div> <div class="status" :class="statusClass">{{ prop.data.status }}</div>
<div class="right-top"> <div class="right-top">
<div class="num">{{ prop.data.count }}</div> <div class="num">{{ prop.data.count }}</div>
<div class="name">当日总针数</div> <div class="name">当日总针数</div>
@ -19,7 +19,7 @@
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import { getCurrentInstance, ref, onMounted,watch } from 'vue'; import { getCurrentInstance, ref, onMounted,watch, computed } from 'vue';
const { proxy } = getCurrentInstance()! as any; const { proxy } = getCurrentInstance()! as any;
const chart = ref(null); const chart = ref(null);
let myChart: any = null; let myChart: any = null;
@ -41,6 +41,11 @@ const prop = defineProps({
} }
} }
}) })
let statusClass = computed(() => {
return prop.data.status == '在线' ? 'online' : 'outline'
})
const init = () => { const init = () => {
if (!myChart) { if (!myChart) {
myChart = proxy.$echarts.init(chart.value); myChart = proxy.$echarts.init(chart.value);