Vue.component("watch-crn-card", {
|
template: `
|
<div>
|
<div style="display: flex;margin-bottom: 10px;">
|
<div style="width: 100%;">堆垛机监控</div>
|
<div style="width: 100%;text-align: right;display: flex;"><el-input size="mini" v-model="searchCrnNo" placeholder="请输入堆垛机号"></el-input><el-button @click="getCrnStateInfo" size="mini">查询</el-button></div>
|
</div>
|
<div style="margin-bottom: 10px;">
|
<div style="margin-bottom: 5px;">
|
<el-button v-if="showControl" @click="openControl" size="mini">关闭控制中心</el-button>
|
<el-button v-else @click="openControl" size="mini">打开控制中心</el-button>
|
</div>
|
<div v-if="showControl" style="display: flex;justify-content: space-between;flex-wrap: wrap;">
|
<div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.crnNo" placeholder="堆垛机号"></el-input></div>
|
<div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.sourceLocNo" placeholder="源点"></el-input></div>
|
<div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.targetLocNo" placeholder="目标点"></el-input></div>
|
<div style="margin-bottom: 10px;"><el-button @click="controlCommandTransport()" size="mini">取放货</el-button></div>
|
<div style="margin-bottom: 10px;"><el-button @click="controlCommandMove()" size="mini">移动</el-button></div>
|
<div style="margin-bottom: 10px;"><el-button @click="controlCommandTaskComplete()" size="mini">任务完成</el-button></div>
|
</div>
|
</div>
|
<el-collapse v-model="activeNames">
|
<el-collapse-item v-for="(item) in crnList" :name="item.crnNo">
|
<template slot="title">
|
<div style="width: 100%;display: flex;">
|
<div style="width: 50%;">{{ item.crnNo }}号堆垛机</div>
|
<div style="width: 50%;text-align: right;">
|
<el-tag v-if="item.deviceStatus == 'AUTO'" type="success" size="small">自动</el-tag>
|
<el-tag v-else-if="item.deviceStatus == 'WORKING'" size="small">作业中</el-tag>
|
<el-tag v-else-if="item.deviceStatus == 'ERROR'" type="danger" size="small">故障</el-tag>
|
<el-tag v-else type="warning" size="small">离线</el-tag>
|
</div>
|
</div>
|
</template>
|
<el-descriptions border direction="vertical">
|
<el-descriptions-item label="编号">{{ item.crnNo }}</el-descriptions-item>
|
<el-descriptions-item label="工作号">{{ item.workNo }}</el-descriptions-item>
|
<el-descriptions-item label="模式">{{ item.mode }}</el-descriptions-item>
|
<el-descriptions-item label="状态">{{ item.status }}</el-descriptions-item>
|
<el-descriptions-item label="源库位">{{ item.sourceLocNo }}</el-descriptions-item>
|
<el-descriptions-item label="目标库位">{{ item.locNo }}</el-descriptions-item>
|
<el-descriptions-item label="是否有物">{{ item.loading }}</el-descriptions-item>
|
<el-descriptions-item label="列">{{ item.bay }}</el-descriptions-item>
|
<el-descriptions-item label="层">{{ item.lev }}</el-descriptions-item>
|
<el-descriptions-item label="货叉定位">{{ item.forkOffset }}</el-descriptions-item>
|
<el-descriptions-item label="载货台定位">{{ item.liftPos }}</el-descriptions-item>
|
<el-descriptions-item label="走行在定位">{{ item.walkPos }}</el-descriptions-item>
|
<el-descriptions-item label="走行速度(m/min)">{{ item.xspeed }}</el-descriptions-item>
|
<el-descriptions-item label="升降速度(m/min)">{{ item.yspeed }}</el-descriptions-item>
|
<el-descriptions-item label="叉牙速度(m/min)">{{ item.zspeed }}</el-descriptions-item>
|
<el-descriptions-item label="走行距离(Km)">{{ item.xdistance }}</el-descriptions-item>
|
<el-descriptions-item label="升降距离(Km)">{{ item.ydistance }}</el-descriptions-item>
|
<el-descriptions-item label="走行时长(H)">{{ item.xDuration }}</el-descriptions-item>
|
<el-descriptions-item label="升降时长(H)">{{ item.yduration }}</el-descriptions-item>
|
<el-descriptions-item label="故障代码">{{ item.warnCode }}</el-descriptions-item>
|
<el-descriptions-item label="故障描述">{{ item.alarm }}</el-descriptions-item>
|
</el-descriptions>
|
</el-collapse-item>
|
</el-collapse>
|
</div>
|
`,
|
props: ["param"],
|
data() {
|
return {
|
crnList: [],
|
activeNames: "",
|
searchCrnNo: "",
|
showControl: false,
|
controlParam: {
|
crnNo: "",
|
sourceLocNo: "",
|
targetLocNo: "",
|
},
|
};
|
},
|
created() {
|
setInterval(() => {
|
this.getCrnStateInfo();
|
}, 1000);
|
},
|
watch: {
|
param: {
|
handler(newVal, oldVal) {
|
if (newVal.crnNo != 0) {
|
this.activeNames = newVal.crnNo;
|
}
|
},
|
deep: true, // 深度监听嵌套属性
|
immediate: true, // 立即触发一次(可选)
|
},
|
},
|
methods: {
|
getCrnStateInfo() {
|
let that = this;
|
$.ajax({
|
url: baseUrl + "/crn/table/crn/state",
|
headers: {
|
token: localStorage.getItem("token"),
|
},
|
method: "post",
|
success: (res) => {
|
// 堆垛机信息表获取
|
if (res.code == 200) {
|
let list = res.data;
|
|
if (that.searchCrnNo == "") {
|
that.crnList = list;
|
} else {
|
let tmp = [];
|
list.forEach((item) => {
|
if (item.crnNo == that.searchCrnNo) {
|
tmp.push(item);
|
}
|
});
|
that.crnList = tmp;
|
}
|
}
|
},
|
});
|
},
|
openControl() {
|
this.showControl = !this.showControl;
|
},
|
controlCommandTransport() {
|
let that = this;
|
//取放货
|
$.ajax({
|
url: baseUrl + "/crn/command/take",
|
headers: {
|
token: localStorage.getItem("token"),
|
},
|
contentType: "application/json",
|
method: "post",
|
data: JSON.stringify(that.controlParam),
|
success: (res) => {
|
if (res.code == 200) {
|
that.$message({
|
message: res.msg,
|
type: "success",
|
});
|
} else {
|
that.$message({
|
message: res.msg,
|
type: "warning",
|
});
|
}
|
},
|
});
|
},
|
controlCommandMove() {
|
let that = this;
|
$.ajax({
|
url: baseUrl + "/crn/command/move",
|
headers: {
|
token: localStorage.getItem("token"),
|
},
|
contentType: "application/json",
|
method: "post",
|
data: JSON.stringify(that.controlParam),
|
success: (res) => {
|
if (res.code == 200) {
|
that.$message({
|
message: res.msg,
|
type: "success",
|
});
|
} else {
|
that.$message({
|
message: res.msg,
|
type: "warning",
|
});
|
}
|
},
|
});
|
},
|
controlCommandTaskComplete() {
|
let that = this;
|
$.ajax({
|
url: baseUrl + "/crn/command/taskComplete",
|
headers: {
|
token: localStorage.getItem("token"),
|
},
|
contentType: "application/json",
|
method: "post",
|
data: JSON.stringify(that.controlParam),
|
success: (res) => {
|
if (res.code == 200) {
|
that.$message({
|
message: res.msg,
|
type: "success",
|
});
|
} else {
|
that.$message({
|
message: res.msg,
|
type: "warning",
|
});
|
}
|
},
|
});
|
},
|
},
|
});
|