Vue.component("watch-rgv-card", {
|
template: `
|
<div>
|
<div style="display: flex;margin-bottom: 10px;">
|
<div style="width: 100%;">RGV监控</div>
|
<div style="width: 100%;text-align: right;display: flex;">
|
<el-input size="mini" v-model="searchRgvNo" placeholder="请输入RGV号"></el-input>
|
<el-button @click="getRgvStateInfo" 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.rgvNo" placeholder="RGV号"></el-input></div>
|
<div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.sourcePos" placeholder="源点"></el-input></div>
|
<div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.targetPos" 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 rgvList" :name="item.rgvNo">
|
<template slot="title">
|
<div style="width: 100%;display: flex;">
|
<div style="width: 50%;">{{ item.rgvNo }}号RGV</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.rgvNo }}</el-descriptions-item>
|
<el-descriptions-item label="工作号">{{ item.taskNo }}</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.trackSiteNo }}</el-descriptions-item>
|
<el-descriptions-item label="是否有物">{{ item.loading }}</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 {
|
rgvList: [],
|
activeNames: "",
|
searchRgvNo: "",
|
showControl: false,
|
controlParam: {
|
rgvNo: "",
|
sourcePos: "",
|
targetPos: ""
|
}
|
};
|
},
|
created() {
|
setInterval(() => {
|
this.getRgvStateInfo();
|
}, 1000);
|
},
|
watch: {
|
param: {
|
handler(newVal) {
|
if (newVal && newVal.rgvNo != 0) {
|
this.activeNames = newVal.rgvNo;
|
}
|
},
|
deep: true,
|
immediate: true
|
},
|
},
|
methods: {
|
getRgvStateInfo() {
|
let that = this;
|
$.ajax({
|
url: baseUrl + "/rgv/table/rgv/state",
|
headers: {
|
token: localStorage.getItem("token"),
|
},
|
method: "post",
|
success: (res) => {
|
if (res.code == 200) {
|
let list = res.data || [];
|
if (that.searchRgvNo == "") {
|
that.rgvList = list;
|
} else {
|
let tmp = [];
|
list.forEach((item) => {
|
if (item.rgvNo == that.searchRgvNo) {
|
tmp.push(item);
|
}
|
});
|
that.rgvList = tmp;
|
}
|
}
|
},
|
});
|
},
|
openControl() {
|
this.showControl = !this.showControl;
|
},
|
controlCommandTransport() {
|
let that = this;
|
$.ajax({
|
url: baseUrl + "/rgv/command/transport",
|
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 + "/rgv/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 + "/rgv/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",
|
});
|
}
|
},
|
});
|
},
|
},
|
});
|