<template>
|
<div id="wrapper">
|
<main>
|
<el-row :gutter="10" class="padding-10">
|
<el-col :span="12">
|
<span class="title">执行日志</span>
|
|
<el-scrollbar :noresize="false" :native="false" wrap-class="log-container scrollbar-wrap" class="scrollbar-box">
|
<div class="content-box">
|
<div v-for="(item,index) in textarray" :key="index" class="row">
|
<span>{{ item.msg }}</span>
|
</div>
|
</div>
|
</el-scrollbar>
|
</el-col>
|
<el-col :span="12">
|
<el-form ref="form" :model="formData" label-width="120px" label-position="top">
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="选择输送机设备">
|
<el-select v-model="formData.transId" placeholder="请选择设备编号">
|
<el-option label="1" value="1"></el-option>
|
<el-option label="2" value="2"></el-option>
|
<el-option label="3" value="3"></el-option>
|
<el-option label="4" value="4"></el-option>
|
<el-option label="5" value="5"></el-option>
|
<el-option label="6" value="6"></el-option>
|
<el-option label="7" value="7"></el-option>
|
<el-option label="65" value="65"></el-option>
|
<el-option label="66" value="66"></el-option>
|
<el-option label="67" value="67"></el-option>
|
<el-option label="68" value="68"></el-option>
|
<el-option label="69" value="69"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="选择堆垛机设备">
|
<el-select v-model="formData.srmId" placeholder="请选择设备编号">
|
<el-option label="1" value="1"></el-option>
|
<el-option label="2" value="2"></el-option>
|
<el-option label="3" value="3"></el-option>
|
<el-option label="4" value="4"></el-option>
|
<el-option label="5" value="5"></el-option>
|
<el-option label="6" value="6"></el-option>
|
<el-option label="7" value="7"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="选择RGV设备">
|
<el-select v-model="formData.rgvId" placeholder="请选择设备编号">
|
<el-option label="1" value="1"></el-option>
|
<el-option label="2" value="2"></el-option>
|
<el-option label="3" value="3"></el-option>
|
<el-option label="4" value="4"></el-option>
|
<el-option label="5" value="5"></el-option>
|
<el-option label="6" value="6"></el-option>
|
<el-option label="7" value="7"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-form-item label="立库输送机操作">
|
<el-button type="primary" @click="getSrmConveyorStationInfo">设备详情</el-button>
|
<el-button type="primary" @click="getGoodsWeight">读取重量</el-button>
|
<el-button type="primary" @click="rgvIsPassed">外形检测</el-button>
|
</el-form-item>
|
<el-form-item label="RGV操作">
|
<el-button type="primary" @click="getRgvInfo">设备详情</el-button>
|
<el-button type="primary" @click="sendRgvCmd">发送RGV运送指令</el-button>
|
<el-button type="primary" @click="checkRgvFinished">检查任务完成</el-button>
|
<el-button type="primary" @click="sendRgvFinishConfirm">完成确认</el-button>
|
</el-form-item>
|
<el-form-item label="立库堆垛机操作">
|
<el-button type="primary" @click="getSrmInfo">设备详情</el-button>
|
<el-button type="primary" @click="sendSrmTask">发送移动任务</el-button>
|
<el-button type="primary" @click="srmIsTaskFinish">完成确认</el-button>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
</main>
|
</div>
|
</template>
|
|
<script>
|
import { srm, tran, rgv } from "@/utils/webServiceHelper";
|
|
export default {
|
name: "landing-page",
|
components: {},
|
data: () => ({
|
textarray: [
|
{
|
// msg: "系统监控开始..."
|
}
|
],
|
formData: {
|
// 当前堆垛机设备ID
|
srmId: "1",
|
// 当前rgv设备ID
|
rgvId: "1",
|
// 当前输送机ID
|
transId: "1",
|
// 任务ID
|
taskId: "1001"
|
}
|
}),
|
created() {
|
// this.initWS();
|
srm.common = this.common;
|
tran.common = this.common;
|
rgv.common = this.common;
|
},
|
methods: {
|
log(title, msg) {
|
if (typeof msg === "object") {
|
msg = JSON.stringify(msg);
|
}
|
this.textarray.push({
|
msg: title + (msg || ""),
|
color: "black"
|
});
|
},
|
logError(title, msg) {
|
if (typeof msg === "object") {
|
msg = JSON.stringify(msg);
|
}
|
this.textarray.push({
|
msg: title + (msg || ""),
|
color: "red"
|
});
|
},
|
// 开启websocket
|
initWS() {
|
this.log("启动websocket...");
|
const WebSocket = require("ws");
|
const wss = new WebSocket.Server({ port: 8020 });
|
wss.on("connection", function connection(ws) {
|
ws.on("message", function incoming(message) {
|
console.log("received: %s", message);
|
});
|
|
ws.send("something");
|
});
|
this.log("启动websocket成功");
|
},
|
// 获取输送机信息
|
async getSrmConveyorStationInfo() {
|
const result = await tran.getSrmConveyorStationInfo(this.formData.transId);
|
this.log("输送机设备状态:" + JSON.stringify(result));
|
},
|
// 获取堆垛机状态
|
async getSrmStatus() {
|
const result = await srm.isReady(this.formData.srmId);
|
this.log("设备状态:" + JSON.stringify(result));
|
},
|
// 获取堆垛机详细信息
|
async getSrmInfo() {
|
const result = await srm.getSrmInfo(this.formData.srmId);
|
this.log(`设备ID为 ${this.formData.srmId} 详情:` + JSON.stringify(result));
|
},
|
// 获取设备重量
|
async getGoodsWeight() {
|
const result = await tran.getGoodsWeight(this.formData.transId);
|
this.log("获取设备重量:" + JSON.stringify(result));
|
if (result.data && result.data.GetGoodsWeightResult) {
|
const datas = result.data.GetGoodsWeightResult.split(",");
|
this.log("称重器具编号:", datas);
|
const sizeInfo = await this.updatedYnamicWeight(datas[0], datas[1]);
|
this.log("获取到长宽高编号:", sizeInfo);
|
const sendSizeResult = await tran.sendGoodsSize(this.formData.transId, sizeInfo.data.length, sizeInfo.data.width, sizeInfo.data.height);
|
this.log("发送长宽高:", sendSizeResult);
|
const sendGoodsResult = await tran.sendGoodsReady(this.formData.transId, 66, 111);
|
this.log("通知输送线进料:", sendGoodsResult);
|
const isPassedResult = await tran.isPassed(this.formData.transId);
|
this.log("外形检测通过后:", isPassedResult);
|
}
|
},
|
// 外形检测
|
async rgvIsPassed() {
|
const isPassedResult = await tran.isPassed(this.formData.transId);
|
this.log("外形检测通过后:", isPassedResult);
|
},
|
// 更新入库标签打印中的“动态称重”
|
async updatedYnamicWeight(plateCode, dynamicWeight) {
|
return new Promise((resolve, reject) => {
|
const url = "/api/wcs/updatedYnamicWeight";
|
const params = {
|
plateCode: plateCode,
|
dynamicWeight: dynamicWeight,
|
transId: this.formData.transId
|
};
|
this.common.ajax(
|
url,
|
params,
|
async res => {
|
this.log(res.msg);
|
if (res.result) {
|
const data = res.data;
|
const isOverWeight = data.isOverWeight;
|
if (isOverWeight === 0) {
|
await tran.sendGoodsSize(this.formData.srmId, data);
|
}
|
}
|
resolve(res);
|
},
|
true
|
);
|
});
|
},
|
// 判断外形检测通过后
|
|
// 1.1.2.发送RGV运送指令
|
async sendRgvCmd() {
|
const isRgvReadyResult = await rgv.isRgvReady(this.formData.rgvId);
|
this.log("判断对应RGV是否空闲:" + JSON.stringify(isRgvReadyResult));
|
// int deviceId, int taskId, int sourcePlce, int toPlace, int taskType
|
const sendRgvTaskResult = await rgv.sendRgvTask(4, 1, 66, 58, 1);
|
this.log("RGV移动:" + JSON.stringify(sendRgvTaskResult));
|
const isTaskFinishResult = await rgv.isTaskFinish(this.formData.rgvId);
|
this.log("RGV运送任务完成:" + JSON.stringify(isTaskFinishResult));
|
if (isTaskFinishResult.data.IsTaskFinishResult === "true") {
|
const isRgvConfirmResult = await rgv.sendRgvFinishConfirm(this.formData.rgvId);
|
this.log("RGV运送任务完成确认:" + JSON.stringify(isRgvConfirmResult));
|
}
|
|
// let result = await tran.isPassed(this.formData.srmId);
|
// this.log("输送机外形检测是否完成:" + JSON.stringify(result));
|
|
// result = await this.getRgvEnable(this.formData.srmId);
|
// this.log("当前入库口RGV是否可用详情:" + JSON.stringify(result));
|
|
// result = await rgv.getRgvInfo(this.formData.srmId);
|
// this.log("对应RGV是否断线或报警详情:" + JSON.stringify(result));
|
|
// result = await rgv.isTaskFinish(this.rgvId, this.formData.taskId);
|
// this.log("对应RGV是否空闲详情:" + JSON.stringify(result));
|
},
|
// 获取RGV详细信息
|
async getRgvInfo() {
|
const result = await rgv.getRgvInfo(this.formData.rgvId);
|
this.log("RGV设备详情:" + JSON.stringify(result));
|
},
|
// 当前入库口RGV是否可用:是否可用由WMS的设备管理中读取对应入库口的RGV的是否可用为“是”的
|
async getRgvEnable(rgvId) {
|
const result = await rgv.getRgvEnable(this.formData.rgvId);
|
this.log("RGV设备详情:" + JSON.stringify(result));
|
},
|
// 1.1.2.4.RGV运送任务完成
|
async checkRgvFinished() {
|
const isTaskFinishResult = await rgv.isTaskFinish(this.formData.rgvId);
|
this.log("RGV运送任务完成:" + JSON.stringify(isTaskFinishResult));
|
},
|
// 1.1.2.4.RGV运送任务完成
|
async sendRgvFinishConfirm() {
|
const isTaskFinishResult = await rgv.isTaskFinish(this.formData.rgvId);
|
this.log("RGV运送任务完成:" + JSON.stringify(isTaskFinishResult));
|
if (isTaskFinishResult.data.IsTaskFinishResult === "true") {
|
const isRgvConfirmResult = await rgv.sendRgvFinishConfirm(this.formData.rgvId);
|
this.log("RGV运送任务完成确认:" + JSON.stringify(isRgvConfirmResult));
|
}
|
},
|
// 堆垛机移动
|
async sendSrmTask() {
|
const isReadyResult = await srm.isReady(this.formData.srmId);
|
this.log("先判断堆垛机是否空闲:" + JSON.stringify(isReadyResult));
|
const sendSrmTaskResult = await srm.sendSrmTask(2, 5930, "03-19-01", "03-19-03", 1);
|
this.log("堆垛机移动:" + JSON.stringify(sendSrmTaskResult));
|
const isTaskFinishResult = await srm.isTaskFinish(this.formData.srmId);
|
this.log("堆垛机上架任务完成:" + JSON.stringify(isTaskFinishResult));
|
if (isTaskFinishResult.data.IsTaskFinishResult === 1) {
|
const isSrmConfirmResult = await srm.sendSrmTaskFinishConfirm(this.formData.srmId);
|
this.log("堆垛机上架任务完成确认:" + JSON.stringify(isSrmConfirmResult));
|
}
|
},
|
// 堆垛机上架任务完成
|
async srmIsTaskFinish() {
|
const isTaskFinishResult = await srm.isTaskFinish(this.formData.srmId);
|
this.log("堆垛机上架任务完成:" + JSON.stringify(isTaskFinishResult));
|
if (isTaskFinishResult.data.IsTaskFinishResult === 1) {
|
const isSrmConfirmResult = await srm.sendSrmTaskFinishConfirm(this.formData.srmId);
|
this.log("堆垛机上架任务完成确认:" + JSON.stringify(isSrmConfirmResult));
|
}
|
}
|
}
|
};
|
</script>
|
|
<style lang="less" scoped>
|
@deep: ~">>>";
|
|
body {
|
font-family: "Source Sans Pro", sans-serif;
|
}
|
|
#wrapper {
|
padding: 10px;
|
}
|
|
#logo {
|
height: auto;
|
margin-bottom: 20px;
|
width: 420px;
|
}
|
|
.scrollbar-box {
|
border: 1px solid #efefef;
|
margin-top: 10px;
|
@{deep} .log-container.scrollbar-wrap {
|
max-height: 600px;
|
overflow-x: hidden;
|
padding: 0px;
|
.content-box {
|
padding: 10px;
|
}
|
}
|
}
|
|
.left-side {
|
display: flex;
|
flex-direction: column;
|
}
|
|
.welcome {
|
color: #555;
|
font-size: 23px;
|
margin-bottom: 10px;
|
}
|
|
.title {
|
color: #2c3e50;
|
font-size: 20px;
|
font-weight: bold;
|
margin-bottom: 6px;
|
}
|
|
.title.alt {
|
font-size: 18px;
|
margin-bottom: 10px;
|
}
|
.doc {
|
margin-bottom: 20px;
|
}
|
.doc p {
|
color: black;
|
margin-bottom: 10px;
|
}
|
.row {
|
word-wrap: break-word;
|
}
|
</style>
|