| // 库位图 | 
| let total = [], | 
|     rack = '', | 
|     racks = '', | 
|     rackDesc = '', | 
|     rackDescs = '', | 
|     crn = '', | 
|     crns = '', | 
|     track = '', | 
|     tracks = '', | 
|     stn = '', | 
|     stns = '', | 
|     stnArr = [], | 
|     floorBtn = '', | 
|     floorBtns = '', | 
|     floorBtnss = '', | 
|     floorInfo='';  // 库区信息 | 
| let rackss = mapInfo.racks, | 
|     rackDescss = mapInfo.rackDescs, | 
|     crnss = mapInfo.crns, | 
|     areas = mapInfo.areas[0].floors, | 
|     floorId; | 
| function getMap() { | 
|     // 货架 | 
|     for (let i = 0;i < rackss.length;i++) { | 
|         let bay ='' // 单个库位 | 
|         let bays = '' // 库位集合 | 
|         let bayWidth = rackss[i].width / (rackss[i].maxBayNo / rackss[i].minBayNo) | 
|         let maxBayNo = rackss[i].maxBayNo // 最大库位号 | 
|         let minBayNo = rackss[i].minBayNo // 最小库位号 | 
|         let bLen = maxBayNo / minBayNo // 库位个数 | 
|         let bNum // 库位号码 | 
|         // hpPosition 0 表示货架序号 左->右 1 表示货架序号 右->左 | 
|         if (mapInfo.hpPosition == 1) { | 
|             bNum = maxBayNo | 
|             for (let j = bLen; j > 0; j--) { | 
|                 bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>" | 
|                 bays = bays + bay | 
|                 bNum = bNum - minBayNo; | 
|             } | 
|         }else { | 
|             bNum = minBayNo | 
|             let hiddenArr = []; | 
|             if (rackss[i].hiddenArr != undefined) { | 
|                 hiddenArr = rackss[i].hiddenArr | 
|             } | 
|             for (let j = 0; j < bLen; j++) { | 
|                 bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>"; | 
|                 if (hiddenArr.indexOf(bNum) != -1) { | 
|                     bay = "<button class='item' style='width: "+ bayWidth +"px;visibility: hidden'>" + bNum + "</button>"; | 
|                 } | 
|                 bays = bays + bay; | 
|                 bNum = bNum + minBayNo; | 
|             } | 
|         } | 
|   | 
|         rack = "<div class='rack' id='" + rackss[i].id + | 
|             "'style='width:"+ rackss[i].width + | 
|             "px;height: "+ rackss[i].height+ | 
|             "px;top: "+ rackss[i].top + | 
|             "px;left: "+ rackss[i].left + | 
|             "px'>" + bays + "</div>" | 
|         racks = racks + rack | 
|         // getCrnInfo(minBayNo); | 
|     } | 
|     // 货架描述 | 
|     for (let i = 0;i < rackDescss.length;i++) { | 
|         rackDesc = "<div class='rackDescs' id='" + rackDescss[i].id + | 
|             "'style='width:"+ rackDescss[i].width + | 
|             "px;height: "+ rackDescss[i].height+ | 
|             "px;line-height: "+ rackDescss[i].height+ | 
|             "px;top: "+ rackDescss[i].top + | 
|             "px;left: "+ rackDescss[i].left + | 
|             "px'>" + rackDescss[i].text + "</div>" | 
|         rackDescs = rackDescs + rackDesc | 
|     } | 
|     // 堆垛机和地轨 | 
|     for (let i = 0;i < crnss.length;i++) { | 
|         if (crnss[i].type == "crane") { | 
|             crn = "<div class='machine' id='" + crnss[i].id + | 
|                 "'style='width:"+ crnss[i].width + | 
|                 "px;height: "+ crnss[i].height+ | 
|                 "px;top: "+ crnss[i].top + | 
|                 "px;left: "+ crnss[i].left + | 
|                 "px'></div>" | 
|             crns = crns + crn | 
|         } else { | 
|             track = "<div class='track' id='" + crnss[i].id + | 
|                 "'style='width:"+ crnss[i].width + | 
|                 "px;height: "+ crnss[i].height+ | 
|                 "px;top: "+ crnss[i].top + | 
|                 "px;left: "+ crnss[i].left + | 
|                 "px'>" + crnss[i].text + "</div>" | 
|             tracks = tracks + track | 
|         } | 
|     } | 
|     // 楼层 | 
|     for (let i = 0; i < areas.length;i++) { | 
|   | 
|         let stnss = areas[i].stns | 
|         let floor = areas[i].text | 
|         console.log(areas[i].top) | 
|         floorId = areas[i].id | 
|         var position = (i+1)*100 | 
|         floorBtn = | 
|             "<button class='floorBtn btn-16' onclick='changFloor("+i+")' style='top: "+position+"px;'>" + floor +"</button>" | 
|         console.log(mapInfo.areas[0].floors.length) | 
|         if (mapInfo.areas[0].floors.length == 1) { | 
|             floorBtnss = '' | 
|         } else { | 
|             floorBtnss =  floorBtnss + floorBtn | 
|         } | 
|         // 每层的 输送线站点 | 
|         var index = i | 
|         var n = 1 | 
|         stnArr[index] = '' | 
|         total[index] = '' | 
|         for (let j = 0; j < stnss.length; j++) { | 
|             if (stnss[j].type == "stn") { | 
|                 stn = "<div class='site' id='" + stnss[j].id + | 
|                     "'style='width:"+ stnss[j].width + | 
|                     "px;height: "+ stnss[j].height+ | 
|                     "px;line-height: "+ stnss[j].height+ | 
|                     "px;top: "+ stnss[j].top + | 
|                     "px;left: "+ stnss[j].left + | 
|                     "px'>" + stnss[j].text + "</div>" | 
|                 stnArr[i] = stnArr[i] + stn | 
|                 total[i] = n++ | 
|             } else if(stnss[j].type == "track"){ | 
|                 stn = "<div class='track' id='" + stnss[j].id + | 
|                     "'style='width:"+ stnss[j].width + | 
|                     "px;height: "+ stnss[j].height+ | 
|                     "px;line-height: "+ stnss[j].height+ | 
|                     "px;top: "+ stnss[j].top + | 
|                     "px;left: "+ stnss[j].left + | 
|                     "px'>" + stnss[j].text  + "</div>" | 
|                 stnArr[i] = stnArr[i] + stn | 
|             } | 
|   | 
|         } | 
|   | 
|     } | 
|     floorInfo = racks + rackDescs + tracks + crns + stnArr[0] + floorBtnss | 
|   | 
|     $(".main-part").append(floorInfo) | 
|     $("#line-total").html(total[0]) | 
|     // listenChange(); | 
|   | 
| } | 
| function changFloor(e) { | 
|     $(".main-part").empty()  // 清空节点 | 
|     floorInfo = racks  + stnArr[e] +rackDescs + crns + tracks + floorBtnss | 
|     $(".main-part").append(floorInfo) | 
|     $("#line-total").empty() | 
|     $("#line-total").html(total[e]) | 
|     // listenChange(); | 
| } | 
|   | 
|   | 
| layui.config({ | 
|     base: baseUrl + "/static/wms/layui/lay/modules/" | 
| }).use(['table', 'form'], function () { | 
|     var table = layui.table; | 
|     var $ = layui.jquery; | 
|     var cache; | 
|   | 
|     // 数据渲染 | 
|     tableIns = table.render({ | 
|         elem: '#deviceInfo', | 
|         headers: {token: localStorage.getItem('token')}, | 
|         url: baseUrl + '/console/deviceInfo', | 
|         page: false, | 
|         limit: 16, | 
|         limits: [16, 30, 50, 100, 200, 500], | 
|         even: true, | 
|         cellMinWidth: 50, | 
|         cols: [[ | 
|             {field: 'device', align: 'center', title: '设备'} | 
|             , {field: 'deviceId', align: 'center', title: '编号'} | 
|             , {field: 'battery', align: 'center', title: '电量'} | 
|             , {field: 'error', align: 'center', title: '异常', templet: '#errorTpl'} | 
|             , {field: 'status', align: 'center', title: '状态', width: 150} | 
|         ]], | 
|         request: { | 
|             pageName: 'curr', | 
|             pageSize: 'limit' | 
|         }, | 
|         parseData: function (res) { | 
|             return { | 
|                 'code': res.code, | 
|                 'msg': res.msg, | 
|                 'count': res.data.total, | 
|                 'data': res.data.records | 
|             } | 
|         }, | 
|         response: { | 
|             statusCode: 200 | 
|         }, | 
|         done: function (res, curr, count) { | 
|             $(".layui-table-tool").hide() | 
|             $(".layui-table-view").css({"margin":"0px"}) | 
|             $(".layui-table-box").css({"padding-bottom":"0px"}) | 
|   | 
|             cache = table.cache['deviceInfo']; | 
|         } | 
|     }); | 
|   | 
|     setInterval(() => { | 
|         tableReload() | 
|     },10000) | 
|   | 
|     function tableReload() { | 
|         $.ajax({ | 
|             url: baseUrl + "/console/deviceInfo", | 
|             headers: {'token': localStorage.getItem('token')}, | 
|             contentType: 'application/json;charset=UTF-8', | 
|             method: 'GET', | 
|             traditional: true, | 
|             success: function (res) { | 
|                 cache = res.data.records | 
|                 table.reload('deviceInfo',{ | 
|                     data: cache | 
|                 }) | 
|             } | 
|         }) | 
|     } | 
|   | 
| }); |