| | |
| | | <script type="text/javascript" src="../static/vue/js/vue.min.js"></script> |
| | | <script type="text/javascript" src="../static/vue/element/element.js"></script> |
| | | <script src="../static/js/gsap.min.js"></script> |
| | | <script src="../static/js/pixi.min.js"></script> |
| | | <script src="../static/js/pixi-legacy.min.js"></script> |
| | | <style> |
| | | *{ |
| | | margin: 0; |
| | |
| | | <div class="floorBtnBox" v-for="(lev,idx) in floorList"> |
| | | <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changeFloor(lev)">{{lev}}F</el-button> |
| | | </div> |
| | | <div> |
| | | <el-button @click="testMove()">测试移动车</el-button> |
| | | </div> |
| | | <div style="margin-top: 10px;"> |
| | | <el-button @click="resetMap()">重置地图</el-button> |
| | | </div> |
| | | </el-drawer> |
| | | |
| | | <el-drawer |
| | |
| | | <div style="margin-top: 5px;">Y:{{drawerLocNoData.y}}</div> |
| | | <div style="margin-top: 5px;">Z:{{drawerLocNoData.z}}</div> |
| | | <div style="margin-top: 5px;">库位号:{{drawerLocNoData.locNo}}</div> |
| | | <div style="margin-top: 5px;">预计路径车辆:{{drawerLocNoData.moveAdvancePath}}</div> |
| | | <div style="margin-top: 5px;">路径锁定车辆:{{drawerLocNoData.lockPathShuttleNo}}</div> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | |
| | | let pixiStageList = []; |
| | | let pixiShuttleMap = new Map(); |
| | | let pixiShuttleMoveAdvancePathMap = new Map(); |
| | | let pixiShuttleMoveAdvancePathList = []; |
| | | let pixiShuttleLockPathMap = new Map(); |
| | | let pixiStaMap = new Map(); |
| | | let lockPathInfoMap = new Map(); |
| | | let objectsContainer; |
| | | let objectsContainer2; |
| | | let objectsContainer3; |
| | | let graphics0; |
| | | let graphics3; |
| | | let graphics4; |
| | |
| | | data: { |
| | | map: [], |
| | | currentLev: 1, |
| | | floorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], //当前项目楼层 |
| | | floorList: [], //当前项目楼层 |
| | | currentLevShuttleList: [],//当前楼层四向穿梭车集合 |
| | | shuttleColorList: [],//四向穿梭车颜色集合 |
| | | drawer: false, |
| | |
| | | deep: true, |
| | | handler(val) { |
| | | if (!val) { |
| | | var sprite = pixiStageList[this.drawerLocNoData.x][this.drawerLocNoData.y]; |
| | | var sprite = pixiStageList[this.drawerLocNoData.x - 1][this.drawerLocNoData.y]; |
| | | updateColor(sprite, 0xFFFFFF);//恢复颜色 |
| | | } |
| | | } |
| | |
| | | ws.onclose = this.webSocketClose |
| | | |
| | | this.getMap(this.currentLev) |
| | | this.initLev()//初始化楼层信息 |
| | | // this.getSystemRunningStatus() //获取系统运行状态 |
| | | |
| | | this.consoleInterval = setInterval(() => { |
| | | this.getMap(this.currentLev) //获取实时地图数据 |
| | | this.getShuttleStateInfo() //获取四向穿梭车信息 |
| | | this.getLiftStateInfo() //获取提升机信息 |
| | | this.getSiteInfo() //获取输送站点数据 |
| | | this.getMap(this.currentLev) //获取实时地图数据 |
| | | // this.getCodeData()//获取条码 |
| | | this.getMoveAdvancePath(this.currentLev) |
| | | this.getLockPath(this.currentLev) |
| | | }, 1000) |
| | | |
| | | }, |
| | |
| | | const shuttle = new PIXI.Sprite(resources.shuttle.texture); |
| | | shuttle.width = width |
| | | shuttle.height = height |
| | | shuttle.x = item.point.x * width;//更新坐标x |
| | | shuttle.y = item.point.y * height;//更新坐标y |
| | | shuttle.x = (item.point.y - 0) * width;//更新坐标x |
| | | shuttle.y = (item.point.x - 1) * height;//更新坐标y |
| | | shuttle.updateMoveStatus = true;//动画执行完成 |
| | | shuttle.interactive = true; // 必须要设置才能接收事件 |
| | | shuttle.buttonMode = true; // 让光标在hover时变为手型指针 |
| | |
| | | pixiShuttleMap.set(item.shuttleNo, shuttle); |
| | | }) |
| | | |
| | | if (item.moveAdvancePath != null && item.moveAdvancePath.length > 0) {//存在预计路径,进行渲染 |
| | | this.addMoveAdvancePath(item.moveAdvancePath, item.shuttleNo);//添加预计路径 |
| | | } |
| | | |
| | | }) |
| | | }else { |
| | | //小车不存在变动,渲染小车位置 |
| | | currentLevShuttle.forEach((item,index) => { |
| | | this.updateShuttleXY(item) |
| | | }) |
| | | |
| | | const resultPath = this.findShuttlePathDiffList(JSON.parse(JSON.stringify(this.currentLevShuttleList)), JSON.parse(JSON.stringify(currentLevShuttle))); |
| | | if (!resultPath) { |
| | | //预计路径存在变动,渲染路径 |
| | | currentLevShuttle.forEach((item,index) => { |
| | | //删除预计路径 |
| | | this.removeMoveAdvancePath(item.shuttleNo); |
| | | if (item.moveAdvancePath != null && item.moveAdvancePath.length > 0) {//存在预计路径,进行渲染 |
| | | this.addMoveAdvancePath(item.moveAdvancePath, item.shuttleNo);//添加预计路径 |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | that.currentLevShuttleList = currentLevShuttle; |
| | | } |
| | |
| | | this.reloadMap = true |
| | | this.reloadSta = true |
| | | this.getMap(lev) |
| | | |
| | | //清空占用路径 |
| | | objectsContainer3.removeChildren(); |
| | | pixiShuttleLockPathMap = new Map(); |
| | | |
| | | //清空预计路径 |
| | | objectsContainer2.removeChildren(); |
| | | pixiShuttleMoveAdvancePathMap = new Map(); |
| | | }, |
| | | createMap(){ |
| | | //Create a Pixi Application |
| | |
| | | // 创建一个容器来管理大批量的显示对象 |
| | | objectsContainer2 = new PIXI.Container(); |
| | | pixiApp.stage.addChild(objectsContainer2); |
| | | |
| | | // 创建一个容器来管理大批量的显示对象 |
| | | objectsContainer3 = new PIXI.Container(); |
| | | pixiApp.stage.addChild(objectsContainer3); |
| | | |
| | | //*******************拖动画布******************* |
| | | let stageOriginalPos; |
| | |
| | | this.openDrawerLift(val) |
| | | }else{ |
| | | //库位 |
| | | this.rightEvent(index, idx, e); |
| | | this.rightEvent(index + 1, idx, e); |
| | | updateColor(sprite, 0x9900ff); |
| | | } |
| | | }); |
| | |
| | | pixiStaMap.set(parseInt(val.data), sprite);//站点数据添加到map中 |
| | | } |
| | | |
| | | objectsContainer.addChild(sprite); |
| | | if (val.value == -999) { |
| | | pixiShuttleLockPathMap.set(this.getLocNoByXYZ(val.row, val.bay, this.currentLev), sprite); |
| | | objectsContainer3.addChild(sprite); |
| | | }else { |
| | | objectsContainer.addChild(sprite); |
| | | } |
| | | pixiStageList[index][idx] = sprite |
| | | } |
| | | }); |
| | | |
| | | //视角居中 |
| | | let containerWidth = (pixiApp.view.width - objectsContainer.width) / 2; |
| | | let containerHeight = (pixiApp.view.height - objectsContainer.height) / 2; |
| | | pixiApp.stage.position.set(containerWidth, containerHeight); |
| | | }else { |
| | | let diff = this.findDiffList(this.map, map); |
| | | diff.forEach((item, index) => { |
| | | //获取old元素 |
| | | let oldSprite = pixiStageList[item.x][item.y] |
| | | //移除old元素 |
| | | objectsContainer.removeChild(oldSprite) |
| | | if (item.originData == -999) { |
| | | //移除old路径元素 |
| | | objectsContainer3.removeChild(oldSprite); |
| | | }else { |
| | | //移除old元素 |
| | | objectsContainer.removeChild(oldSprite); |
| | | } |
| | | |
| | | let sprite = getSprite(item.data, item.y * width, item.x * height, (e) => { |
| | | this.rightEvent(item.x, item.y, e); |
| | | this.rightEvent(item.x + 1, item.y, e); |
| | | updateColor(sprite, 0x9900ff); |
| | | }); |
| | | |
| | | objectsContainer.addChild(sprite); |
| | | if (item.data == -999) { |
| | | //添加路径元素 |
| | | objectsContainer3.addChild(sprite); |
| | | }else { |
| | | //添加元素 |
| | | objectsContainer.addChild(sprite); |
| | | } |
| | | |
| | | //保存新元素 |
| | | pixiStageList[item.x][item.y] = sprite |
| | |
| | | |
| | | this.map = map; |
| | | }, |
| | | rightEvent(x, y, e) { |
| | | this.drawerLocNo = true |
| | | let locNo = this.getLocNoByXYZ(x, y, this.currentLev); |
| | | this.drawerLocNoData = {x:x, y: y, z: this.currentLev, locNo: locNo}; |
| | | }, |
| | | rightEvent(x, y, e) { |
| | | this.drawerLocNo = true |
| | | let locNo = this.getLocNoByXYZ(x, y, this.currentLev); |
| | | let tmpData = { |
| | | x: x, |
| | | y: y, |
| | | z: this.currentLev, |
| | | locNo: locNo |
| | | }; |
| | | |
| | | let moveAdvancePath = pixiShuttleMoveAdvancePathMap.get(locNo) |
| | | if (moveAdvancePath == null || moveAdvancePath == undefined) { |
| | | moveAdvancePath = ""; |
| | | }else { |
| | | moveAdvancePath = JSON.stringify(moveAdvancePath.shuttleNos); |
| | | } |
| | | tmpData.moveAdvancePath = moveAdvancePath; |
| | | |
| | | let lockPathShuttleNo = lockPathInfoMap.get(locNo) |
| | | if (lockPathShuttleNo == null || lockPathShuttleNo == undefined) { |
| | | lockPathShuttleNo = ""; |
| | | } |
| | | tmpData.lockPathShuttleNo = lockPathShuttleNo; |
| | | |
| | | this.drawerLocNoData = tmpData; |
| | | }, |
| | | findDiffList(arr1, arr2) { |
| | | let diff = [] |
| | | arr1.forEach((item,index) => { |
| | |
| | | diff.push({ |
| | | x: index, |
| | | y: idx, |
| | | data: arr2[index][idx].value |
| | | data: arr2[index][idx].value, |
| | | originData: val.value |
| | | }) |
| | | } |
| | | }) |
| | |
| | | }); |
| | | |
| | | return flag; |
| | | }, |
| | | findShuttlePathDiffList(list1, list2) { |
| | | //检测集合1里面的小车预计路径是否在集合2中有变动 |
| | | if (list1.length == 0) { |
| | | return false;//集合为空 |
| | | } |
| | | if (list1.length != list2.length) { |
| | | return false;//两个集合长度不一致 |
| | | } |
| | | |
| | | for (var index = 0; index < list1.length; index++) { |
| | | let item = list1[index]; |
| | | for (var i = 0; i < list2.length; i++) { |
| | | if (item.shuttleNo != list2[i].shuttleNo) { |
| | | continue;//找不到小车号 |
| | | } |
| | | |
| | | if (item.moveAdvancePath == null) { |
| | | item.moveAdvancePath = []; |
| | | } |
| | | |
| | | if (list2[i].moveAdvancePath == null) { |
| | | list2[i].moveAdvancePath = []; |
| | | } |
| | | |
| | | if (!(item.moveAdvancePath.length == list2[i].moveAdvancePath.length)) { |
| | | return false;//小车预计路径长度不一致 |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | }, |
| | | checkStaInListDiff(sta, list) { |
| | | //检测站点是否在集合中有变动 |
| | |
| | | this.setSiteInfo(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/map/auth") { |
| | | this.setMap(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/barcode/output/site") { |
| | | this.setCodeData(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/getMoveAdvancePath/auth") { |
| | | this.setMoveAdvancePath(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/getLockPath/auth") { |
| | | this.setLockPath(JSON.parse(result.data)) |
| | | } |
| | | }, |
| | | getMoveAdvancePath(lev) { |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/console/getMoveAdvancePath/auth", |
| | | "data": lev |
| | | })) |
| | | }, |
| | | setMoveAdvancePath(res) { |
| | | let data = res.data; |
| | | this.addMoveAdvancePath(data) |
| | | }, |
| | | getLockPath(lev) { |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/console/getLockPath/auth", |
| | | "data": lev |
| | | })) |
| | | }, |
| | | setLockPath(res) { |
| | | let data = res.data; |
| | | let tmpMap = new Map(); |
| | | data.forEach((item) => { |
| | | let locNo = this.getLocNoByXYZ(item.x,item.y,item.z) |
| | | tmpMap.set(locNo, item.shuttleNo); |
| | | }) |
| | | lockPathInfoMap = tmpMap; |
| | | }, |
| | | webSocketClose(e) { |
| | | console.log("close"); |
| | |
| | | const distance = Math.sqrt(Math.pow((item.point.x * width) - shuttle.x, 2) + Math.pow((item.point.y * height) - shuttle.y, 2)); |
| | | gsap.killTweensOf(shuttle); // 杀死所有针对".class"的动画 |
| | | gsap.to(shuttle, { |
| | | x: item.point.x * width, // 目标位置 |
| | | y: item.point.y * height, // 目标位置 |
| | | duration: distance / 100, // 动画持续时间(秒) |
| | | x: (item.point.y - 0) * width, // 目标位置 |
| | | y: (item.point.x - 1) * height, // 目标位置 |
| | | duration: 0.2, // 动画持续时间(秒) |
| | | ease: "power1.inOut", // 缓动类型 |
| | | onComplete: () => { |
| | | shuttle.updateMoveStatus = true;//动画执行完成 |
| | |
| | | })) |
| | | }, |
| | | setSiteInfo(res) { |
| | | |
| | | var test = "{\"msg\":\"操作成功\",\"code\":200,\"data\":[{\"siteId\":\"300\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"301\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"302\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"303\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"304\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"305\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"306\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"307\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"308\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"309\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"310\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"311\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"312\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"313\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"314\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"315\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"316\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"317\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"318\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"319\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"320\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"321\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"322\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"323\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"324\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"325\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"326\",\"siteStatus\":\"site-auto-id\",\"workNo\":5451},{\"siteId\":\"327\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"200\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"328\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"201\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"329\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"202\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"330\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"203\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"331\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"204\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"332\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"205\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"333\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"334\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"335\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"336\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"337\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"338\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"339\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":5447},{\"siteId\":\"340\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"341\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"342\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"343\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"344\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"345\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"346\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"100\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8851},{\"siteId\":\"101\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8855},{\"siteId\":\"102\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"103\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"104\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"105\",\"siteStatus\":\"site-auto\",\"workNo\":0}]}"; |
| | | res = JSON.parse(test) |
| | | |
| | | // var test = "{\"msg\":\"操作成功\",\"code\":200,\"data\":[{\"siteId\":\"300\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"301\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"302\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"303\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"304\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"305\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"306\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"307\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"308\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"309\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"310\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"311\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"312\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"313\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"314\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"315\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"316\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"317\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"318\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"319\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"320\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"321\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"322\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"323\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"324\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"325\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"326\",\"siteStatus\":\"site-auto-id\",\"workNo\":5451},{\"siteId\":\"327\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"200\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"328\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"201\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"329\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"202\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"330\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"203\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"331\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"204\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"332\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"205\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"333\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"334\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"335\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"336\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"337\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"338\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"339\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":5447},{\"siteId\":\"340\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"341\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"342\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"343\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"344\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"345\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"346\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"100\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8851},{\"siteId\":\"101\",\"siteStatus\":\"site-auto-run-id\",\"workNo\":8855},{\"siteId\":\"102\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"103\",\"siteStatus\":\"site-auto\",\"workNo\":0},{\"siteId\":\"104\",\"siteStatus\":\"site-auto-run\",\"workNo\":0},{\"siteId\":\"105\",\"siteStatus\":\"site-auto\",\"workNo\":0}]}"; |
| | | // res = JSON.parse(test) |
| | | //获取输送站点数据 |
| | | if (res.code === 200){ |
| | | var sites = res.data; |
| | |
| | | objectsContainer.removeChild(sta.statusObj) |
| | | sta.statusObj = null; |
| | | } |
| | | }else if (item.siteStatus == "site-auto-run") { |
| | | }else if (item.siteStatus == "site-auto-run" || item.siteStatus == "site-auto-run-id") { |
| | | //自动有物 |
| | | let graphics = getGraphics(0xfa51f6, width, height, sta.x, sta.y); |
| | | graphics.addChild(sta.textObj);//继承文字信息 |
| | |
| | | } |
| | | }, |
| | | getLocNoByXYZ(x, y, z) { |
| | | let locNo = ""; |
| | | if (x < 10) { |
| | | locNo += "0" + x; |
| | | }else { |
| | | locNo += x; |
| | | } |
| | | |
| | | if (y < 100) { |
| | | locNo += "0" + y; |
| | | }else if (y < 10) { |
| | | locNo += "00" + y; |
| | | }else { |
| | | locNo += y; |
| | | } |
| | | |
| | | if (z < 10) { |
| | | locNo += "0" + z; |
| | | }else { |
| | | locNo += z; |
| | | } |
| | | return locNo; |
| | | let locNo = x + "-" + y + "-" + z; |
| | | return locNo; |
| | | }, |
| | | addMoveAdvancePath(moveAdvancePath, shuttleNo) {//添加预计路径 |
| | | let that = this; |
| | | addMoveAdvancePath(moveAdvancePath) {//添加预计路径 |
| | | //清空预计路径 |
| | | objectsContainer2.removeChildren(); |
| | | pixiShuttleMoveAdvancePathMap = new Map(); |
| | | moveAdvancePath.forEach((path, idx) => { |
| | | let locNo = that.getLocNoByXYZ(path.x, path.y, path.z); |
| | | if (!pixiShuttleMoveAdvancePathMap.has(locNo)) { |
| | | let graphics = getGraphics(0x9966ff, width, height, path.y * width, path.x * height); |
| | | let shuttleNos = [shuttleNo]; |
| | | let locNo = this.getLocNoByXYZ(path.x, path.y, path.z); |
| | | let shuttleNos = path.shuttleNoList; |
| | | let graphics = getGraphics(0x9966ff, width, height, path.y * width, (path.x - 1) * height); |
| | | |
| | | // 创建文本对象 |
| | | const style = new PIXI.TextStyle({ |
| | | fontFamily: 'Arial', |
| | | fontSize: 10, |
| | | fill: '#000000', |
| | | fontFamily: 'Arial', |
| | | fontSize: 10, |
| | | fill: '#000000', |
| | | }); |
| | | const text = new PIXI.Text(JSON.stringify(shuttleNos), style); |
| | | text.anchor.set(0.5); // 设置文本锚点为中心点 |
| | |
| | | graphics.textObj = text; |
| | | objectsContainer2.addChild(graphics) |
| | | pixiShuttleMoveAdvancePathMap.set(locNo, { |
| | | path: path, |
| | | sprite: graphics, |
| | | textObj: text, |
| | | shuttleNos: shuttleNos |
| | | path: path, |
| | | sprite: graphics, |
| | | textObj: text, |
| | | shuttleNos: shuttleNos |
| | | }) |
| | | |
| | | if (pixiShuttleMoveAdvancePathList[shuttleNo] == null) { |
| | | let locNos = new Set() |
| | | locNos.add(locNo); |
| | | pixiShuttleMoveAdvancePathList[shuttleNo] = locNos; |
| | | }else { |
| | | pixiShuttleMoveAdvancePathList[shuttleNo].add(locNo); |
| | | } |
| | | }else { |
| | | let pathMap = pixiShuttleMoveAdvancePathMap.get(locNo) |
| | | let shuttleNos = pathMap.shuttleNos; |
| | | shuttleNos.push(shuttleNo); |
| | | pathMap.textObj.text = JSON.stringify(shuttleNos); |
| | | pixiShuttleMoveAdvancePathMap.set(locNo, pathMap); |
| | | if (pixiShuttleMoveAdvancePathList[shuttleNo] == null) { |
| | | let locNos = new Set() |
| | | locNos.add(locNo); |
| | | pixiShuttleMoveAdvancePathList[shuttleNo] = locNos; |
| | | }else { |
| | | pixiShuttleMoveAdvancePathList[shuttleNo].add(locNo); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | removeMoveAdvancePath(shuttleNo) {//删除预计路径 |
| | | let locNos = pixiShuttleMoveAdvancePathList[shuttleNo]; |
| | | if (locNos != null) { |
| | | locNos.forEach((locNo,index) => { |
| | | let pathMap = pixiShuttleMoveAdvancePathMap.get(locNo); |
| | | if (pathMap != null) { |
| | | let shuttleNos = pathMap.shuttleNos; |
| | | let shuttleNosNew = []; |
| | | shuttleNos.forEach((shuttle, idx) => { |
| | | if (shuttle != shuttleNo) { |
| | | shuttleNosNew.push(shuttle); |
| | | initLev(){ |
| | | let that = this |
| | | $.ajax({ |
| | | url: baseUrl + "/console/map/lev/list", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: {}, |
| | | method: 'get', |
| | | success: function(res) { |
| | | if (res.code === 200) { |
| | | that.floorList = res.data; |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | if (shuttleNosNew.length === 0) { |
| | | //预计路径没有小车,直接删除路径 |
| | | objectsContainer2.removeChild(pathMap.sprite); |
| | | pixiShuttleMoveAdvancePathMap.delete(locNo) |
| | | }else { |
| | | //预计路径存在其他小车,更新文字信息 |
| | | pathMap.textObj.text = JSON.stringify(shuttleNosNew); |
| | | pathMap.shuttleNos = shuttleNosNew; |
| | | pixiShuttleMoveAdvancePathMap.set(locNo, pathMap); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | }) |