<template>
|
<div id="title">
|
<div id="bkuang" style="border-top: none">
|
<div class="skuang">
|
<div class="zhuname">PP仓堆垛机</div>
|
<div class="zhankuang">
|
<div class="xname">堆垛机状态:</div>
|
<div class="xzhi" :title="data.R_PP_Status">{{ data.R_PP_Status }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">堆垛机手自动状态:</div>
|
<div class="xzhi" :title="data.R_PP_AutoStatus">{{ data.R_PP_AutoStatus }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">正在执行的任务号:</div>
|
<div class="xzhi" :title="data.R_PP_TaskNum">{{ data.R_PP_TaskNum }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">堆垛机工作状态:</div>
|
<div class="xzhi" :title="data.R_PP_WorkStatus">{{ data.R_PP_WorkStatus }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">作业类型:</div>
|
<div class="xzhi" :title="data.R_PP_WorkType">{{ data.R_PP_WorkType }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">托盘类型:</div>
|
<div class="xzhi" :title="data.R_PP_TrayType">{{ data.R_PP_TrayType }}</div>
|
</div>
|
</div>
|
<div class="skuang">
|
<div class="zhuname">入库2004站台</div>
|
<div class="zhankuang">
|
<div class="xname">读取箱体码(读):</div>
|
<div class="xzhi" :title="data.R_PP_Boxcode">{{ data.R_PP_Boxcode }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">握手信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_HandShake4">{{ data.R_PP_HandShake4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否联机(读):</div>
|
<div class="xzhi" :title="data.R_PP_Online4">{{ data.R_PP_Online4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否空闲(读):</div>
|
<div class="xzhi" :title="data.R_PP_Free4">{{ data.R_PP_Free4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否有货(读):</div>
|
<div class="xzhi" :title="data.R_PP_Goods4">{{ data.R_PP_Goods4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否故障(读):</div>
|
<div class="xzhi" :title="data.R_PP_Alarm4">{{ data.R_PP_Alarm4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_STB4">{{ data.R_PP_STB4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_ACK4">{{ data.R_PP_ACK4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_STB4">{{ data.W_PP_STB4 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_ACK4">{{ data.W_PP_ACK4 }}</div>
|
</div>
|
|
<div class="zhuname">出库2005站台</div>
|
<div class="zhankuang">
|
<div class="xname">握手信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_HandShake5">{{ data.R_PP_HandShake5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否联机(读):</div>
|
<div class="xzhi" :title="data.R_PP_Online5">{{ data.R_PP_Online5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否空闲(读):</div>
|
<div class="xzhi" :title="data.R_PP_Free5">{{ data.R_PP_Free5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否有货(读):</div>
|
<div class="xzhi" :title="data.R_PP_Goods5">{{ data.R_PP_Goods5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否故障(读):</div>
|
<div class="xzhi" :title="data.R_PP_Alarm5">{{ data.R_PP_Alarm5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_STB5">{{ data.R_PP_STB5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_ACK5">{{ data.R_PP_ACK5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_STB5">{{ data.W_PP_STB5 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_ACK5">{{ data.W_PP_ACK5 }}</div>
|
</div>
|
</div>
|
|
<div class="skuang">
|
<div class="zhuname">出库2016站台</div>
|
<div class="zhankuang">
|
<div class="xname">握手信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_HandShake6">{{ data.R_PP_HandShake6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否联机(读):</div>
|
<div class="xzhi" :title="data.R_PP_Online6">{{ data.R_PP_Online6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否空闲(读):</div>
|
<div class="xzhi" :title="data.R_PP_Free6">{{ data.R_PP_Free6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否有货(读):</div>
|
<div class="xzhi" :title="data.R_PP_Goods6">{{ data.R_PP_Goods6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否故障(读):</div>
|
<div class="xzhi" :title="data.R_PP_Alarm6">{{ data.R_PP_Alarm6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_STB6">{{ data.R_PP_STB6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_ACK6">{{ data.R_PP_ACK6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_STB6">{{ data.W_PP_STB6 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_ACK6">{{ data.W_PP_ACK6 }}</div>
|
</div>
|
<div class="zhuname">出库2017站台</div>
|
<div class="zhankuang">
|
<div class="xname">握手信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_HandShake7">{{ data.R_PP_HandShake7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否联机(读):</div>
|
<div class="xzhi" :title="data.R_PP_Online7">{{ data.R_PP_Online7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否空闲(读):</div>
|
<div class="xzhi" :title="data.R_PP_Free7">{{ data.R_PP_Free7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否有货(读):</div>
|
<div class="xzhi" :title="data.R_PP_Goods7">{{ data.R_PP_Goods7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">是否故障(读):</div>
|
<div class="xzhi" :title="data.R_PP_Alarm7">{{ data.R_PP_Alarm7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_STB7">{{ data.R_PP_STB7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(读):</div>
|
<div class="xzhi" :title="data.R_PP_ACK7">{{ data.R_PP_ACK7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">请求信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_STB7">{{ data.W_PP_STB7 }}</div>
|
</div>
|
<div class="zhankuang">
|
<div class="xname">响应信号(写):</div>
|
<div class="xzhi" :title="data.W_PP_ACK7">{{ data.W_PP_ACK7 }}</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { ref, nextTick } from "vue";
|
import { useStore } from "vuex";
|
import { onMounted } from "vue";
|
|
export default {
|
data() {
|
return {
|
xuan: 0
|
};
|
},
|
methods: {
|
},
|
setup() {
|
const store = useStore();
|
const data = ref({});
|
|
// 1. 定义普通字段的映射规则
|
const statusMap = {
|
R_PP_Status: {
|
1: "正常",
|
2: "故障",
|
3: "急停",
|
},
|
R_PP_AutoStatus: {
|
0: "维修",
|
1: "手动",
|
2: "半自动",
|
3: "自动",
|
},
|
R_PP_WorkStatus: {
|
0: "待机",
|
1: "取货中",
|
2: "取货完成",
|
4: "放货中",
|
5: "放货完成",
|
6: "任务完成",
|
},
|
R_PP_WorkType: {
|
0: "无作业任务(0)",
|
1: "取放货作业(1)",
|
2: "只取货作业(2)",
|
3: "只放货作业(3)",
|
4: "移动到指定位置"
|
},
|
R_PP_TrayType: {
|
"-1": "空箱(-1)",
|
1: "小托盘(1)",
|
2: "中托盘(2)",
|
3: "大托盘(3)",
|
4: "特大托盘(4)",
|
}
|
};
|
const onlines = [
|
"R_PP_Online6","R_PP_Online4",
|
"R_PP_Online5","R_PP_Online7"
|
]
|
const online = {
|
true: "联机",
|
false: "脱机"
|
};
|
const alarms = [
|
"R_PP_Alarm6","R_PP_Alarm4",
|
"R_PP_Alarm5","R_PP_Alarm7"
|
]
|
const alarm = {
|
true: "故障",
|
false: "正常"
|
};
|
const frees = [
|
"R_PP_Free6","R_PP_Free4",
|
"R_PP_Free5","R_PP_Free7"
|
]
|
const free = {
|
true: "空闲",
|
false: "繁忙"
|
};
|
const goods = [
|
"R_PP_Goods6", "R_PP_Goods4",
|
"R_PP_Goods5","R_PP_Goods7"
|
]
|
const good = {
|
true: "有货",
|
false: "无货"
|
};
|
|
// 2. 定义需要共用映射规则的字段列表和对应的映射规则
|
const booleanFields = [
|
"R_PP_HandShake4", "R_PP_STB4",
|
"R_PP_ACK4", "W_PP_STB4",
|
"W_PP_ACK4",
|
"R_PP_HandShake5", "R_PP_STB5",
|
"R_PP_ACK5", "W_PP_STB5",
|
"W_PP_ACK5",
|
"R_PP_HandShake6", "R_PP_STB6",
|
"R_PP_ACK6", "W_PP_STB6",
|
"W_PP_ACK6",
|
"R_PP_HandShake7", "R_PP_STB7",
|
"R_PP_ACK7", "W_PP_STB7",
|
"W_PP_ACK7",
|
];
|
const booleanMap = {
|
true: "是",
|
false: "否"
|
};
|
|
// 处理数据,先处理普通映射,再批量处理共用映射的字段
|
const processData = (rawData) => {
|
if (!rawData) return {};
|
const processed = { ...rawData };
|
|
// 处理普通字段映射
|
Object.keys(statusMap).forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
const map = statusMap[key];
|
processed[key] = map[processed[key]] || processed[key];
|
}
|
});
|
|
// 批量处理共用映射规则的字段
|
booleanFields.forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
processed[key] = booleanMap[processed[key]] || processed[key];
|
}
|
});
|
onlines.forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
processed[key] = online[processed[key]] || processed[key];
|
}
|
});
|
alarms.forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
processed[key] = alarm[processed[key]] || processed[key];
|
}
|
});
|
frees.forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
processed[key] = free[processed[key]] || processed[key];
|
}
|
});
|
goods.forEach(key => {
|
if (processed.hasOwnProperty(key)) {
|
processed[key] = good[processed[key]] || processed[key];
|
}
|
});
|
|
return processed;
|
};
|
|
onMounted(() => {
|
nextTick(() => {
|
setInterval(() => {
|
const rawData = store.state.homedata;
|
data.value = processData(rawData);
|
const xian = document.getElementsByClassName("xzhi");
|
for (let i = 0; i < xian.length; i++) {
|
if (xian[i].innerHTML === "是") {
|
xian[i].style.color = "yellow";
|
} else if (xian[i].innerHTML === "否") {
|
xian[i].style.color = "red";
|
}
|
}
|
});
|
});
|
});
|
|
return {
|
data,
|
};
|
}
|
};
|
</script>
|
|
<style scoped>
|
.ding {
|
float: left;
|
width: 20px;
|
height: 20px;
|
margin-top: 7px;
|
}
|
.yan {
|
color: white;
|
float: left;
|
font-size: 25px;
|
}
|
.dakuang {
|
width: 250px;
|
height: 50px;
|
position: absolute;
|
top: 150px;
|
left: 200px;
|
}
|
#xiugai {
|
width: 100px;
|
height: 30px;
|
float: left;
|
border-radius: 5px;
|
text-align: center;
|
line-height: 30px;
|
cursor: pointer;
|
border: 1px solid white;
|
color: white;
|
background: rgba(255, 255, 255, 0.5);
|
font-size: 25px;
|
position: absolute;
|
top: 150px;
|
left: 450px;
|
}
|
#xiugai:hover {
|
background: #f60;
|
}
|
#shu1,
|
#shu2 {
|
width: 200px;
|
height: 30px;
|
float: left;
|
margin-top: 0px;
|
margin-right: 0px;
|
border-radius: 5px;
|
border: 1px solid white;
|
}
|
#guan {
|
width: 40px;
|
height: 40px;
|
float: left;
|
font-size: 1.1cqw;
|
text-align: center;
|
line-height: 40px;
|
cursor: pointer;
|
margin-left: 560px;
|
color: white;
|
position: absolute;
|
}
|
#ti {
|
width: 600px;
|
height: 300px;
|
position: relative;
|
background: rgba(255, 255, 255, 1);
|
border-radius: 10px;
|
top: 230px;
|
left: 35%;
|
display: none;
|
background-image: url("../../img/1.png");
|
background-repeat: no-repeat;
|
background-size: 170%;
|
background-position: -220px 0px;
|
}
|
.zhuname {
|
width: 100%;
|
height: 5vh;
|
float: left;
|
text-align: center;
|
line-height: 50px;
|
font-weight: 700;
|
font-size: 1.1cqw;
|
color: white;
|
}
|
.xname {
|
width: 70%;
|
height: 80px;
|
float: left;
|
line-height: 7vh;
|
font-size: 1.1cqw;
|
color: white;
|
}
|
.xzhi {
|
width: 30%;
|
height: 7vh;
|
float: left;
|
line-height: 50px;
|
font-size: 1.1cqw;
|
color: rgb(242, 242, 50);
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
}
|
.zhankuang {
|
width: 45%;
|
height: 3vh;
|
margin-top: 10px;
|
margin-left: 5%;
|
float: left;
|
}
|
#title {
|
float: left;
|
width: 95%;
|
height: 88vh;
|
margin-top: 40px;
|
margin-left: 3%;
|
background-image: url("../../img/1.png");
|
background-repeat: no-repeat;
|
background-size: 100%;
|
container-type: inline-size;
|
}
|
#bkuang {
|
width: 100%;
|
height: 55vh;
|
float: left;
|
}
|
.skuang {
|
width: 31%;
|
height: 55vh;
|
float: left;
|
border-top: none;
|
border-left: none;
|
border-bottom: none;
|
background: rgba(255, 255, 255, 0.2);
|
margin-left: 1.7%;
|
border-radius: 10px;
|
}
|
</style>
|