<!DOCTYPE html>
|
<html lang="en">
|
<head>
|
<meta charset="utf-8">
|
<title>WCS控制中心</title>
|
<link rel="stylesheet" href="../static/css/console.css">
|
<link rel="stylesheet" href="../static/css/animate.min.css">
|
<script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
|
<script src="../static/js/layer/layer.js"></script>
|
<script type="text/javascript" src="../static/js/common.js"></script>
|
</head>
|
<body>
|
<div class="root">
|
<header class="header">
|
<h1>自动仓库WCS监控图</h1>
|
<h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
|
</header>
|
<main class="main">
|
<!--楼层按钮-->
|
<div id="floorBtnBox">
|
<button class="floorBtn btn-16" onclick="changFloor(this,1)" style="margin-top: 150px">1F</button>
|
<button class="floorBtn btn-16" onclick="changFloor(this,2)" style="margin-top: 200px">2F</button>
|
<button class="floorBtn btn-16" onclick="changFloor(this,3)" style="margin-top: 250px">3F</button>
|
<button class="floorBtn btn-16" onclick="changFloor(this,4)" style="margin-top: 300px">4F</button>
|
</div>
|
<button class="floorBtn btn-16" onclick="testMove()" style="margin-top: 350px">测试移动车</button>
|
|
<!-- 货架 + 堆垛机 + 入库站点 -->
|
<div class="main-part">
|
<!-- 第一组 -->
|
<div class="lane" id="mapDataId" style="margin-bottom: 280px">
|
|
</div>
|
</div>
|
</main>
|
<footer class="footer">
|
<!-- 总开关 -->
|
<div class="system-state">
|
<div class="body-head">总开关</div>
|
<div class="switch">
|
<div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
|
<div class="switch_r">
|
<p>系统状态</p>
|
<p id="system-run-desc">系统运行中</p>
|
</div>
|
</div>
|
</div>
|
<!-- 堆垛机状态 -->
|
<div class="machine-status">
|
<div class="body-head">堆垛机状态</div>
|
<div class="state">
|
<span>堆垛机 1</span>
|
<span class="state-ss machine-put-flag ">入库</span>
|
</div>
|
<!-- <div class="state">-->
|
<!-- <span>堆垛机 2</span>-->
|
<!-- <span class="state-ss machine-auto-flag ">自动</span>-->
|
|
<!-- </div>-->
|
<div class="button"><span>所有状态</span></div>
|
<div class="button item-group">
|
<span class="machine-put-flag">入库</span>
|
<span class="machine-take-flag">出库</span>
|
<span class="machine-stock-move-flag">库到库</span>
|
<span class="machine-site-move-flag">站到站</span>
|
<span class="machine-p-move-flag">PToP</span>
|
<span class="machine-error-flag">异常</span>
|
<span class="machine-auto-flag">自动</span>
|
<span class="machine-unauto-flag">非自动/手动</span>
|
</div>
|
</div>
|
<!-- 输送线状态 -->
|
<div class="line-status">
|
<div class="body-head">输送线状态</div>
|
<div class="state states">
|
<span>运输线总数</span>
|
<span class="line-ss">9</span>
|
</div>
|
<div class="button"><span>所有状态</span></div>
|
<div class="button item-group">
|
<span class="site-auto-run-id">自动+有物+ID</span>
|
<span class="site-auto-run">自动+有物</span>
|
<span class="site-auto-id">自动+ID</span>
|
<span class="site-auto">自动</span>
|
<span class="site-unauto">非自动/手动</span>
|
</div>
|
</div>
|
<!-- 条码表格 -->
|
<div class="bar-code">
|
<div class="body-head" id="code">条码扫描器</div>
|
<div class="tablebox">
|
<div class="table-head">
|
<li><span>条码名称</span><span class="right">扫码时间</span></li>
|
</div>
|
<div id="barcode1" class="table-body">
|
|
</div>
|
</div>
|
<div class="tablebox">
|
<div class="table-head">
|
<li><span>条码名称</span><span class="right">扫码时间</span></li>
|
</div>
|
<div id="barcode2" class="table-body">
|
|
</div>
|
</div>
|
<div class="tablebox">
|
<div class="table-head">
|
<li><span>条码名称</span><span class="right">扫码时间</span></li>
|
</div>
|
<div id="barcode3" class="table-body">
|
|
</div>
|
</div>
|
</div>
|
</footer>
|
|
<!-- 堆垛机弹窗 -->
|
<div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
|
<div id="crnWindow-head">
|
<div class='detailed'></div>
|
<button></button>
|
</div>
|
<form>
|
<!-- 堆垛机号 -->
|
<div class="form-item">
|
<div class="form-item-label" style>
|
<span>堆垛机号:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="crnNo" value="">
|
</div>
|
</div>
|
<!-- 工作号 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>工作号:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="workNo" value="">
|
</div>
|
</div>
|
<!-- 站源 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>站源:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="sourceStaNo" value="">
|
</div>
|
</div>
|
<!-- 目标站 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>目标站:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="staNo" value="">
|
</div>
|
</div>
|
<!-- 工作状态 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>工作状态:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="wrkSts" value="">
|
</div>
|
</div>
|
<!-- 出入类型 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>出入类型:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="ioType" value="">
|
</div>
|
</div>
|
<!-- 源库位 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>源库位:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="sourceLocNo" value="">
|
</div>
|
</div>
|
<!-- 目标库位 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>目标库位:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="locNo" value="">
|
</div>
|
</div>
|
<!-- 堆垛机状态 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>堆垛机状态:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="crnStatus" value="">
|
</div>
|
</div>
|
<!-- 异常 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>异常:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="error" value="">
|
</div>
|
</div>
|
</form>
|
</div>
|
|
<!-- 输送设备弹窗 -->
|
<div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
|
<!-- 表头 -->
|
<div id="siteWindow-head">
|
<div class='detailed'></div>
|
<button></button>
|
</div>
|
<form>
|
<!-- 设备号 -->
|
<div class="form-item" >
|
<div class="form-item-label">
|
<span>设备号:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="siteId" value="">
|
</div>
|
</div>
|
<!-- 工作号 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>工作号:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="workNo" value="">
|
</div>
|
</div>
|
<!-- 工作状态 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>工作状态:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="wrkSts" value="">
|
</div>
|
</div>
|
<!-- 自动 -->
|
<div class="form-item-checkbox">
|
<div class="form-item-label-checkbox">
|
<span>自动</span>
|
</div>
|
<div class="form-item-input-checkbox">
|
<input type="checkbox" name="autoing">
|
</div>
|
</div>
|
<!-- 有物 -->
|
<div class="form-item-checkbox">
|
<div class="form-item-label-checkbox">
|
<span>有物</span>
|
</div>
|
<div class="form-item-input-checkbox">
|
<input type="checkbox" name="loading">
|
</div>
|
</div>
|
<!-- 能入 -->
|
<div class="form-item-checkbox">
|
<div class="form-item-label-checkbox">
|
<span>能入</span>
|
</div>
|
<div class="form-item-input-checkbox">
|
<input type="checkbox" name="canining">
|
</div>
|
</div>
|
<!-- 能出 -->
|
<div class="form-item-checkbox">
|
<div class="form-item-label-checkbox">
|
<span>能出</span>
|
</div>
|
<div class="form-item-input-checkbox">
|
<input type="checkbox" name="canouting">
|
</div>
|
</div>
|
<!-- 出入类型 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>出入类型:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="ioType" value="">
|
</div>
|
</div>
|
<!-- 源站 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>源站:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="sourceStaNo" value="">
|
</div>
|
</div>
|
<!-- 目标站 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>目标站:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="staNo" value="">
|
</div>
|
</div>
|
<!-- 源库位 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>源库位:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="sourceLocNo" value="">
|
</div>
|
</div>
|
<!-- 目标库位 -->
|
<div class="form-item">
|
<div class="form-item-label">
|
<span>目标库位:</span>
|
</div>
|
<div class="form-item-input">
|
<input type="text" name="locNo" value="">
|
</div>
|
</div>
|
|
</form>
|
</div>
|
</div>
|
</body>
|
</html>
|
<script>
|
var tData = []
|
var tData1 = []
|
var tData2 = []
|
var tData3 = []
|
var mapData = [] //地图数据
|
var currentLev = 1;//当前地图楼层
|
function getCodeData(){
|
$.ajax({
|
url:baseUrl +'/console/barcode/output/site',
|
method:'GET',
|
success:function (res) {
|
if(res.code === 200){
|
tData = eval(res.data);
|
if(tData.length<=5){
|
tData1 = tData
|
} else if (tData.length<=10){
|
tData1 = tData.slice(0,5)
|
// tData.splice(0,4)
|
tData2 = tData.splice(5,10)
|
} else if(tData.length<=15){
|
tData1 = tData.slice(0,5)
|
tData2 = tData.slice(5,10)
|
// tData.splice(0,10)
|
tData3 = tData.slice(10,15)
|
} else {
|
tData1 = tData.slice(0,5)
|
tData2 = tData.slice(5,10)
|
tData3 = tData.slice(10,15)
|
// tData = tData.slice(-15)
|
// tData1 = tData.slice(-15)
|
// tData2 = tData.slice(-10)
|
// tData3 = tData.slice(-5)
|
|
}
|
}
|
}
|
})
|
}
|
setInterval(function () {
|
getCodeData();
|
renderBarCode();
|
}, 1000)
|
|
|
function renderBarCode() {
|
for (var i = 0;i<tData1.length;i++){
|
var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
|
$('#barcode1').append(str1)
|
}
|
for(var j = 0;j<tData2.length;j++){
|
var str2 = '<li><span>' + tData2[j].barcode + '</span><span class="right">' + tData2[j].time + '</span></li>'
|
$('#barcode2').append(str2)
|
}
|
for(var k = 0;k<tData3.length;k++){
|
var str3 = '<li><span>' + tData3[k].barcode + '</span><span class="right">' + tData3[k].time + '</span></li>'
|
$('#barcode3').append(str3)
|
}
|
}
|
|
|
$(function (){
|
initMap(1)
|
})
|
|
setInterval(() => {
|
getShuttleStateInfo()
|
},1000)
|
|
// 四向穿梭车信息表获取
|
function getShuttleStateInfo() {
|
$.ajax({
|
url: baseUrl+ "/shuttle/table/shuttle/state",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
res.data.forEach((item,index) => {
|
if(item.locNoLev != currentLev){
|
//四向穿梭车楼层和当前地图楼层不一致,删除该车辆
|
$("#sxcar-" + item.shuttleNo).remove()
|
}else {
|
//移动四向穿梭车
|
moveCar(item.shuttleNo,item.locNoX,item.locNoY)
|
}
|
})
|
}
|
});
|
}
|
|
//计算四向穿梭车图标位置
|
function getCarPosition(x,y) {
|
let top = (x * 35 - 35) + "px" //需要减去小车自己所占高度
|
let left = (y * 70 - 70) + "px" //需要减去小车自己所占宽度
|
return [top,left];
|
}
|
|
//移动四向穿梭车图标
|
function moveCar(id,x,y) {
|
//获取具体位置top和left值
|
let position = getCarPosition(x,y)
|
let top = position[0]
|
let left = position[1]
|
$("#sxcar-" + id).animate({top: top,left: left}, 1000);
|
}
|
|
//初始化地图
|
function initMap(lev) {
|
//母轨道第一次索引,用于定位小车
|
let firstMotherIndex = [0,0];
|
$("#mapDataId").empty()
|
$.ajax({
|
type:"get",
|
url: baseUrl + "/static/js/map.json",
|
success: (data) => {
|
mapData = data
|
let content = ""
|
data.forEach((rowData,index) => {
|
//去掉上下边缘禁区
|
if(!(index == 0 || data.length - 1 == index)){
|
let row = '<div class="stock-group">';
|
rowData.forEach((colData,idx) => {
|
//去掉左右边缘禁区
|
if(!(idx == 0 || rowData.length - 1 == idx)){
|
let col;
|
switch (colData.value){
|
case -1:
|
col = '<button class="item" style="visibility: hidden">' + idx + '</button>';
|
break;
|
case 3:
|
//母轨道
|
col = '<button class="item" style="background: #5af;">⇅⇄</button>';
|
if (firstMotherIndex[0] === 0 && firstMotherIndex[1] === 0) {
|
//第一次遇到母轨道,则保存该轨道地址(用于小车初始化定位)
|
firstMotherIndex = [index,idx]
|
}
|
break;
|
case 4:
|
//站点
|
if (lev == 1) {
|
let data = colData.data;
|
col = '<div id="site-' + data + '" class="site">' + data + '(9991)</div>';
|
}else {
|
//其他楼层只有提升机能显示
|
let data = colData.data;
|
if (data == 109) {//其他楼层只有提升机能显示
|
col = '<div id="site-' + data + '" class="site">' + data + '(9991)</div>';
|
}else {
|
col = '<div style="visibility: hidden" id="site-' + data + '" class="site">' + data + '(9991)</div>';
|
}
|
}
|
break;
|
default:
|
col = '<button class="item">' + idx + '</button>';
|
}
|
|
if(rowData.length - 2 == idx){
|
//打上行数标记
|
col += '<span class="row-no">' + index + '#</span>';
|
}
|
row += col
|
}
|
})
|
row += '</div>';
|
content += row
|
}
|
})
|
|
$("#mapDataId").append(content)
|
}
|
})
|
|
$.ajax({
|
url: baseUrl+ "/shuttle/table/shuttle/state",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
res.data.forEach((item,index) => {
|
if(lev == item.locNoLev){
|
let carBox = '<div class="sxcar" id="sxcar-' + item.shuttleNo + '"></div>'
|
$("#mapDataId").append(carBox)
|
}
|
})
|
}
|
});
|
}
|
|
//将地图数据转换成int二维数组(后续用于请求计算路径时携带地图数据参数使用)
|
function getMap2TwoArr() {
|
let data = []
|
mapData.forEach((item,index) => {
|
let data2 = []
|
item.forEach((val,idx) => {
|
data2.push(val.value)
|
})
|
data.push(data2)
|
})
|
|
return data;
|
}
|
|
function testMove() {
|
getMap2TwoArr()//测试地图数据转换是否正常
|
let json = "[{\n" +
|
"\t\t\"x\": 5,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 6,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 7,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 8,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 9,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 10,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 11,\n" +
|
"\t\t\"y\": 5\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 11,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 12,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 13,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 14,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 15,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 16,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 17,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 18,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 19,\n" +
|
"\t\t\"y\": 6\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 19,\n" +
|
"\t\t\"y\": 7\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 19,\n" +
|
"\t\t\"y\": 8\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 20,\n" +
|
"\t\t\"y\": 8\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 21,\n" +
|
"\t\t\"y\": 8\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 22,\n" +
|
"\t\t\"y\": 8\n" +
|
"\t},\n" +
|
"\t{\n" +
|
"\t\t\"x\": 23,\n" +
|
"\t\t\"y\": 8\n" +
|
"\t}\n" +
|
"]";
|
json = JSON.parse(json)
|
json.forEach((item,index) => {
|
moveCar(1, item.x, item.y);
|
})
|
|
}
|
|
// 小车偏移动画
|
function carAnimate(id, target) {
|
if (id === 1000) {
|
let targetTop = 130;
|
switch (target) {
|
case 110:
|
targetTop += 0;
|
break;
|
case 109:
|
targetTop += 60;
|
break;
|
case 108:
|
targetTop += 100;
|
break;
|
case 107:
|
targetTop += 180;
|
break;
|
case 106:
|
targetTop += 220;
|
break;
|
default:
|
return;
|
}
|
$("#site-" + id).animate({top: targetTop+'px'}, 1000);
|
} else if (id === 2000) {
|
let targetTop = 130;
|
switch (target) {
|
case 226:
|
targetTop += 0;
|
break;
|
case 225:
|
targetTop += 60;
|
break;
|
case 224:
|
targetTop += 100;
|
break;
|
case 223:
|
targetTop += 180;
|
break;
|
case 222:
|
targetTop += 220;
|
break;
|
case 214:
|
targetTop += 280;
|
break;
|
case 220:
|
targetTop += 320;
|
break;
|
default:
|
return;
|
}
|
$("#site-" + id).animate({top: targetTop+'px'}, 1000);
|
}
|
}
|
</script>
|
<script type="text/javascript">
|
// 弹窗站点信息
|
$('#mapDataId').on('click','.site',function(){
|
var id = this.id.split("-")[1];
|
$("#siteWindow").attr("style","display:block;");//显示div
|
$("#crnWindow").attr("style","display:none;");
|
$(".detailed").empty();
|
$('.detailed').append(id+'站点详细信息');
|
$.ajax({
|
url:baseUrl+"/console/site/detail",
|
headers:{
|
'token': localStorage.getItem('token')
|
},
|
data:{
|
siteId: id
|
},
|
method:'post',
|
success:function (res) {
|
for (var val in res.data) {
|
var find = $("#siteWindow").find(":input[name='" + val + "']");
|
if (find[0].type==='text') {
|
find.val(res.data[val]);
|
} else if (find[0].type === 'checkbox') {
|
find.attr("checked", res.data[val] === 'Y');
|
}
|
}
|
}
|
|
})
|
|
});
|
// 堆垛机信息
|
$('.machine').on('click',function(){
|
var id = this.id.split("-")[1];
|
$("#crnWindow").attr('style','display:block;');
|
$("#siteWindow").attr("style","display:none;");
|
$('.detailed').empty();
|
$('.detailed').append(id+'号堆垛机');
|
$.ajax({
|
url:baseUrl+"/console/crn/detail",
|
headers:{
|
'token': localStorage.getItem('token')
|
},
|
data:{
|
crnNo: id
|
},
|
method:'post',
|
success:function (res) {
|
for (var val in res.data) {
|
var find = $("#crnWindow").find(":input[name='" + val + "']");
|
if (find[0].type==='text') {
|
find.val(res.data[val]);
|
} else if (find[0].type === 'checkbox') {
|
find.attr("checked", res.data[val] === 'Y');
|
}
|
}
|
}
|
|
})
|
|
})
|
// 弹窗关闭
|
$('button').on('click',function(){
|
$('#siteWindow').attr('style','display:none')
|
$('#crnWindow').attr('style','display:none')
|
})
|
|
|
|
var crn1Position = 0;
|
var crn2Position = 0;
|
var crn3Position = 0;
|
var crn4Position = 0;
|
var crn5Position = 0;
|
|
// 初始化
|
getSitesInfo();
|
getCrnInfo();
|
getSystemRunningStatus();
|
getBarcodeInfo();
|
getScaleInfo();
|
// 实时访问
|
setInterval(function () {
|
getCrnInfo();
|
getSystemRunningStatus();
|
getBarcodeInfo();
|
getScaleInfo();
|
}, 1000);
|
setInterval(function () {
|
getSitesInfo();
|
}, 3000);
|
|
// 系统运行开关
|
function systemSwitch() {
|
if (parent.systemRunning){
|
layer.prompt({title: '请输入口令,并停止 WCS 系统', formType: 1, shadeClose: true}, function(pass, idx){
|
layer.close(idx);
|
doSwitch(0, pass); // 停止wcs系统
|
});
|
} else {
|
doSwitch(1); // 启动wcs系统
|
}
|
}
|
|
// 请求服务器控制wcs系统运行状态
|
function doSwitch(operatorType, password) {
|
// 加载tips
|
var index = layer.load(1, {
|
shade: [0.1,'#fff']
|
});
|
$.ajax({
|
url: baseUrl+ "/console/system/switch",
|
headers: {'token': localStorage.getItem('token')},
|
// async: false,
|
data: {
|
operatorType: operatorType,
|
password: password
|
},
|
method: 'POST',
|
success: function (res) {
|
layer.close(index);
|
if (res.code === 200){
|
if (res.data.status) {
|
$('#system-icon').attr("class", "system-icon-open");
|
$('#system-run-desc').html("系统运行中...");
|
parent.systemRunning = true;
|
} else {
|
$('#system-icon').attr("class", "system-icon-close");
|
$('#system-run-desc').html("系统已停止!");
|
parent.systemRunning = false;
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
|
}
|
}
|
});
|
|
}
|
|
// 获取wcs系统运行状态
|
function getSystemRunningStatus() {
|
$.ajax({
|
url: baseUrl+ "/console/system/running/status",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200){
|
if (res.data.status) {
|
$('#system-icon').attr("class", "system-icon-open");
|
$('#system-run-desc').html("系统运行中...");
|
parent.systemRunning = true;
|
} else {
|
$('#system-icon').attr("class", "system-icon-close");
|
$('#system-run-desc').html("系统已停止!");
|
parent.systemRunning = false;
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
}
|
}
|
});
|
}
|
|
// 输送设备实时数据获取
|
function getSitesInfo(){
|
$.ajax({
|
url: baseUrl+ "/console/latest/data/site",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200){
|
var sites = res.data;
|
for (var i = 0; i < sites.length; i++){
|
var siteEl = $("#site-"+sites[i].siteId);
|
siteEl.attr("class", "site " + sites[i].siteStatus);
|
if (sites[i].workNo != null && sites[i].workNo>0) {
|
siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
|
} else {
|
siteEl.html(sites[i].siteId);
|
}
|
if (i+1===8) {
|
carAnimate(i+1, Number(sites[i].nearbySta));
|
}
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
}
|
}
|
});
|
}
|
|
// 堆垛机实时数据获取
|
function getCrnInfo(){
|
$.ajax({
|
url: baseUrl+ "/console/latest/data/crn",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200){
|
var crns = res.data;
|
for (var i = 0; i < crns.length; i++){
|
var crnEl = $("#crn-"+crns[i].crnId);
|
crnEl.attr("class", "machine " + crns[i].crnStatus);
|
var unit = ($('.item').eq(0).width()+4)/2;
|
crnEl.animate({left: (crns[i].bay * unit + 25) +'px'}, 1000);
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
}
|
}
|
});
|
}
|
|
// 扫码器实时数据获取
|
function getBarcodeInfo(){
|
$.ajax({
|
url: baseUrl+ "/console/latest/data/barcode",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200){
|
var barcodes = res.data;
|
for (var i = 0; i < barcodes.length; i++){
|
$("#code-decoder-data-"+barcodes[i].barcodeId).html(barcodes[i].codeValue);
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
}
|
}
|
});
|
}
|
|
// 磅秤实时数据获取
|
function getScaleInfo(){
|
$.ajax({
|
url: baseUrl+ "/console/latest/data/scale",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'POST',
|
success: function (res) {
|
|
if (res.code === 200){
|
var sclaes = res.data;
|
for (var i = 0; i < sclaes.length; i++){
|
console.log(sclaes[i].scaleId + ":" + sclaes[i].value)
|
$("#scale-data-"+sclaes[i].scaleId).text(sclaes[i].value);
|
}
|
} else if (res.code === 403){
|
parent.location.href = baseUrl+"/login";
|
} else {
|
console.log(res.msg);
|
}
|
}
|
});
|
}
|
|
// 堆垛机偏移动画
|
function crnAnimate(id, leftVal) {
|
switch (id) {
|
case 1:
|
$("#crn-1").animate({left: leftVal+'px'}, 1000);
|
crn1Position = leftVal;
|
break;
|
case 2:
|
$("#crn-2").animate({left: leftVal+'px'}, 1000);
|
crn2Position = leftVal;
|
break;
|
case 3:
|
$("#crn-3").animate({left: leftVal+'px'}, 1000);
|
crn3Position = leftVal;
|
break;
|
case 4:
|
$("#crn-4").animate({left: leftVal+'px'}, 1000);
|
crn4Position = leftVal;
|
break;
|
case 5:
|
$("#crn-5").animate({left: leftVal+'px'}, 1000);
|
crn5Position = leftVal;
|
break;
|
default:
|
break
|
}
|
}
|
|
// 小车偏移动画
|
function carAnimate(id, target) {
|
var targetTop = 122;
|
if (id === 8) {
|
switch (target) {
|
case 1:
|
targetTop += 160;
|
break;
|
case 2:
|
targetTop += 140;
|
break;
|
case 3:
|
targetTop += 80;
|
break;
|
case 4:
|
targetTop += 40;
|
break;
|
case 7:
|
targetTop += 0;
|
break;
|
default:
|
return;
|
}
|
} else {
|
return;
|
}
|
$("#site-" + id).animate({top: targetTop+'px'}, 1000);
|
}
|
|
//楼层切换按钮
|
function changFloor(e,x) {
|
$("#floorBtnBox button").each((index,item) => {
|
$(item).removeClass("btn-16-active")
|
})
|
$(e).addClass("btn-16-active")
|
currentLev = x
|
initMap(currentLev)
|
}
|
|
</script>
|