From 1ae2f3acafa9d036dfe4f14f8dcc5c4b5815c46a Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期一, 01 十二月 2025 16:33:09 +0800
Subject: [PATCH] #
---
src/main/webapp/views/watch/console2.html | 948 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 948 insertions(+), 0 deletions(-)
diff --git a/src/main/webapp/views/watch/console2.html b/src/main/webapp/views/watch/console2.html
new file mode 100644
index 0000000..a986fc8
--- /dev/null
+++ b/src/main/webapp/views/watch/console2.html
@@ -0,0 +1,948 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>搴撲綅鍦板浘</title>
+ <link rel="stylesheet" href="../../static/css/animate.min.css">
+ <link rel="stylesheet" href="../../static/vue/element/element.css">
+ <link rel="stylesheet" href="../../static/css/console_vue.css">
+ <link rel="stylesheet" href="../../static/css/toggle-switch.css">
+ <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+ <script type="text/javascript" src="../../static/layui/layui.js"></script>
+ <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+ <script type="text/javascript" src="../../static/js/common.js"></script>
+ <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-legacy.min.js"></script>
+ <style>
+ *{
+ margin: 0;
+ padding: 0;
+ }
+ </style>
+</head>
+<body>
+<div id="app">
+ <div id="pixiView">
+
+ </div>
+
+ <!--杈撳嚭鎿嶄綔鍜孎PS-->
+ <div style="position: absolute;top: 20px;right: 50px;">
+ <div>FPS:{{mapFps}}</div>
+ <el-button @click="drawer = true">鎿嶄綔</el-button>
+ </div>
+
+ <el-drawer
+ title="鎿嶄綔鍖哄煙"
+ :visible.sync="drawer"
+ :with-header="true"
+ :modal="false"
+ >
+ <div class="floorBtnBox" v-for="(lev,idx) in floorList">
+ <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changeFloor(lev)">{{lev}}F</el-button>
+ </div>
+ </el-drawer>
+
+ <el-drawer
+ title="搴撲綅璇︽儏"
+ :visible.sync="drawerLocNo"
+ :with-header="true"
+ :modal="false"
+ >
+ <div v-if="drawerLocNoData!=null">
+ <div style="margin: 10px;">
+ <div style="margin-top: 5px;">鎺掞細{{drawerLocNoData.row}}</div>
+ <div style="margin-top: 5px;">鍒楋細{{drawerLocNoData.bay}}</div>
+ <div style="margin-top: 5px;">灞傦細{{drawerLocNoData.lev}}</div>
+ <div style="margin-top: 5px;">搴撲綅鍙凤細{{drawerLocNoData.locNo}}</div>
+ <div style="margin-top: 5px;">搴撲綅鐘舵�侊細{{drawerLocNoData.locSts}}</div>
+ </div>
+ </div>
+ </el-drawer>
+
+ <el-drawer
+ title="灏忚溅淇℃伅"
+ :visible.sync="drawerShuttle"
+ :with-header="true"
+ :modal="false"
+ >
+ <div v-if="drawerShuttleData!=null">
+ <div style="margin: 10px;">
+ <div style="margin-top: 5px;">灏忚溅锛歿{drawerShuttleData.shuttleNo}}</div>
+ <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{drawerShuttleData.wrkNo}}</div>
+ <div style="margin-top: 5px;">鐘舵�侊細{{drawerShuttleData}}</div>
+ </div>
+ </div>
+ </el-drawer>
+
+ <el-drawer
+ title="绔欑偣淇℃伅"
+ :visible.sync="drawerSta"
+ :with-header="true"
+ :modal="false"
+ >
+ <div v-if="drawerStaData!=null">
+ <div style="margin: 10px;">
+ <div style="margin-top: 5px;">绔欑偣锛歿{drawerStaData.siteId}}</div>
+ <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{drawerStaData.workNo}}</div>
+ <div style="margin-top: 5px;">宸ヤ綔鐘舵�侊細{{drawerStaData.wrkSts}}</div>
+ <div style="margin-top: 5px;">宸ヤ綔绫诲瀷锛歿{drawerStaData.ioType}}</div>
+ <div style="margin-top: 5px;">婧愮珯锛歿{drawerStaData.sourceStaNo}}</div>
+ <div style="margin-top: 5px;">鐩爣绔欙細{{drawerStaData.staNo}}</div>
+ <div style="margin-top: 5px;">婧愬簱浣嶏細{{drawerStaData.sourceLocNo}}</div>
+ <div style="margin-top: 5px;">鐩爣搴撲綅锛歿{drawerStaData.locNo}}</div>
+ <div style="margin-top: 5px;">鑷姩锛歿{drawerStaData.autoing}}</div>
+ <div style="margin-top: 5px;">鏈夌墿锛歿{drawerStaData.loading}}</div>
+ <div style="margin-top: 5px;">鑳藉叆锛歿{drawerStaData.canining}}</div>
+ <div style="margin-top: 5px;">鑳藉嚭锛歿{drawerStaData.canouting}}</div>
+ <div style="margin-top: 5px;">鑳藉嚭锛歿{drawerStaData.canouting}}</div>
+ </div>
+ </div>
+ </el-drawer>
+
+ <el-drawer
+ title="鎻愬崌鏈轰俊鎭�"
+ :visible.sync="drawerLift"
+ :with-header="true"
+ :modal="false"
+ >
+ <div v-if="drawerLiftData!=null">
+ <div style="margin: 10px;">
+ <div style="margin-top: 5px;">鎻愬崌鏈猴細{{liftList[drawerLiftData-1].liftNo}}</div>
+ <div style="margin-top: 5px;">宸ヤ綔鍙凤細{{liftList[drawerLiftData-1].taskNo}}</div>
+ <div style="margin-top: 5px;">鐘舵�侊細{{liftList[drawerLiftData-1]}}</div>
+ </div>
+ </div>
+ </el-drawer>
+
+</div>
+<script>
+ let width = 25;
+ let height = 25;
+ let pixiApp;
+ let pixiStageList = [];
+ let pixiShuttleMap = new Map();
+ let pixiShuttleMoveAdvancePathMap = new Map();
+ let pixiShuttleMoveAdvancePathList = [];
+ let pixiShuttleLockPathMap = new Map();
+ let pixiStaMap = new Map();
+ let objectsContainer;
+ let objectsContainer2;
+ let objectsContainer3;
+ let graphics0;
+ let graphics3;
+ let graphics4;
+ let graphics5;
+ let graphics9;
+ let graphics67;
+ let graphicsLock;
+ let ws;
+
+ var app = new Vue({
+ el: '#app',
+ data: {
+ map: [],
+ currentLev: 1,
+ floorList: [], //褰撳墠椤圭洰妤煎眰
+ currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
+ shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
+ drawer: false,
+ drawerLocNo: false,
+ drawerLocNoData: null,
+ drawerLocDetls: [],
+ reloadMap: true,
+ mapFps: 0,
+ drawerShuttle: false,
+ drawerShuttleData: null,
+ currentLevStaList: [],//褰撳墠妤煎眰绔欑偣list
+ reloadSta: true,
+ drawerSta: false,
+ drawerStaData: null,
+ drawerLift: false,
+ drawerLiftData: null,
+ liftList: [],
+ },
+ mounted() {
+ this.init()
+ this.createMap()
+ },
+ watch: {
+ map: {
+ deep: true,
+ handler(val) {
+
+ }
+ },
+ drawerLocNo: {
+ deep: true,
+ handler(val) {
+ if (!val) {
+ var sprite = pixiStageList[this.drawerLocNoData.x][this.drawerLocNoData.y];
+ updateColor(sprite, 0xFFFFFF);//鎭㈠棰滆壊
+ }
+ }
+ }
+ },
+ methods: {
+ init(){
+ let that = this
+ ws = new WebSocket("ws://" + window.location.host + baseUrl + "/console/websocket");
+ ws.onopen = this.webSocketOnOpen
+ ws.onerror = this.webSocketOnError
+ ws.onmessage = this.webSocketOnMessage
+ ws.onclose = this.webSocketClose
+
+
+ this.initLev()//鍒濆鍖栨ゼ灞備俊鎭�
+ setTimeout(() => {
+ that.getMap(this.currentLev)
+ }, 1000);
+
+ // this.consoleInterval = setInterval(() => {
+ // this.getMap(this.currentLev) //鑾峰彇瀹炴椂鍦板浘鏁版嵁
+ // this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ // this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
+ // this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
+ // // this.getCodeData()//鑾峰彇鏉$爜
+ // }, 1000)
+
+ },
+ 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'
+ });
+ }
+ }
+ });
+ },
+ //鑾峰彇鍦板浘鏁版嵁
+ getMap(lev) {
+ let that = this;
+ $.ajax({
+ url: baseUrl + "/console/map/" + lev + "/auth",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {},
+ method: 'get',
+ success: function(res) {
+ //鑾峰彇鍦板浘鏁版嵁
+ let data = res.data
+ that.createMapData(data)
+ }
+ })
+ },
+ changeFloor(lev) {
+ this.currentLev = lev
+ this.currentLevShuttleList = []
+ this.reloadMap = true
+ this.reloadSta = true
+ this.getMap(lev)
+
+ //娓呯┖鍗犵敤璺緞
+ objectsContainer3.removeChildren();
+ pixiShuttleLockPathMap = new Map();
+
+ //娓呯┖棰勮璺緞
+ objectsContainer2.removeChildren();
+ pixiShuttleMoveAdvancePathMap = new Map();
+ pixiShuttleMoveAdvancePathList = []
+ },
+ createMap(){
+ //Create a Pixi Application
+ pixiApp = new PIXI.Application({
+ // width: 1500,
+ // height: 800,
+ backgroundColor: 0xF5F7F9FF,
+ resizeTo: window
+ });
+ //Add the canvas that Pixi automatically created for you to the HTML document
+ $("#pixiView").append(pixiApp.view)
+
+ //鍔犺浇灏忚溅璧勬簮
+ pixiApp.loader.add('shuttle', '../static/images/sxcar.png');
+
+ // 浠嶨raphics瀵硅薄鍒涘缓涓�涓汗鐞�
+ graphicsF = pixiApp.renderer.generateTexture(getContainer(1000));
+ graphics0 = pixiApp.renderer.generateTexture(getContainer(0));
+ graphics3 = pixiApp.renderer.generateTexture(getContainer(3));
+ graphics4 = pixiApp.renderer.generateTexture(getContainer(4));
+ graphics5 = pixiApp.renderer.generateTexture(getContainer(5));
+ graphics9 = pixiApp.renderer.generateTexture(getContainer(9));
+ graphics67 = pixiApp.renderer.generateTexture(getContainer(67));
+ graphicsLock = pixiApp.renderer.generateTexture(getContainer(-999));
+
+ // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
+ objectsContainer = new PIXI.Container();
+ pixiApp.stage.addChild(objectsContainer);
+
+ // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
+ objectsContainer2 = new PIXI.Container();
+ pixiApp.stage.addChild(objectsContainer2);
+
+ // 鍒涘缓涓�涓鍣ㄦ潵绠$悊澶ф壒閲忕殑鏄剧ず瀵硅薄
+ objectsContainer3 = new PIXI.Container();
+ pixiApp.stage.addChild(objectsContainer3);
+
+ //*******************鎷栧姩鐢诲竷*******************
+ let stageOriginalPos;
+ let mouseDownPoint;
+ let touchBlank = false;
+ pixiApp.renderer.plugins.interaction.on(
+ 'pointerdown',
+ (event) => {
+ const globalPos = event.data.global;
+ // 璁板綍涓媠tage鍘熸潵鐨勪綅缃�
+ stageOriginalPos = [pixiApp.stage.position._x, pixiApp.stage.position._y];
+ // 璁板綍涓媘ouse down鐨勪綅缃�
+ mouseDownPoint = [globalPos.x, globalPos.y];
+ if (!event.target) {
+ // 鐐瑰埌浜嗙敾甯冪殑绌虹櫧浣嶇疆
+ touchBlank = true;
+ }
+ }
+ );
+
+ pixiApp.renderer.plugins.interaction.on(
+ 'pointermove',
+ (event) => {
+ const globalPos = event.data.global;
+
+ if (touchBlank) {
+ // 鎷栨嫿鐢诲竷
+ const dx = globalPos.x - mouseDownPoint[0];
+ const dy = globalPos.y - mouseDownPoint[1];
+ pixiApp.stage.position.set(
+ stageOriginalPos[0] + dx,
+ stageOriginalPos[1] + dy
+ );
+ }
+ }
+ );
+
+ pixiApp.renderer.plugins.interaction.on(
+ 'pointerup',
+ (event) => {
+ touchBlank = false;
+ }
+ );
+ //*******************鎷栧姩鐢诲竷*******************
+
+ //*******************缂╂斁鐢诲竷*******************
+ pixiApp.view.addEventListener('wheel', (event) => {
+ event.stopPropagation();
+ event.preventDefault();
+ // 鍥犱负鐢诲竷鏄厖婊¤绐楃殑锛屾墍浠lientX绛変簬mouse point鍦╮enderer涓婄殑x鍧愭爣
+ const globalPos = [event.clientX, event.clientY];
+ const delta = event.deltaY;
+ const oldZoom = pixiApp.stage.scale.x;
+ let newZoom = oldZoom * 0.999 ** delta;
+
+ // const oldStageMatrix = app.stage.localTransform.clone();
+ // const oldStagePos = oldStageMatrix.applyInverse(pointerGlobalPos);
+ const oldStagePos = globalPos;
+ const dx = oldStagePos[0] * oldZoom - oldStagePos[0] * newZoom;
+ const dy = oldStagePos[1] * oldZoom - oldStagePos[1] * newZoom;
+
+ pixiApp.stage.setTransform(
+ pixiApp.stage.position.x + dx,
+ pixiApp.stage.position.y + dy,
+ newZoom,
+ newZoom,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ );
+
+ });
+ //*******************缂╂斁鐢诲竷*******************
+
+ //*******************FPS*******************
+ var g_Time=0;
+ pixiApp.ticker.add((delta) => {
+ var timeNow = (new Date()).getTime();
+ var timeDiff = timeNow - g_Time;
+ g_Time = timeNow;
+ var fps = 1000 / timeDiff;
+ this.mapFps = parseInt(fps)
+ });
+ //*******************FPS*******************
+
+ },
+ createMapData(map) {
+ if (this.reloadMap) {
+ this.reloadMap = false
+ pixiStageList = [map.length]//鍒濆鍖栧垪琛�
+ pixiStaMap = new Map();//閲嶇疆
+ objectsContainer.removeChildren()
+ map.forEach((item,index) => {
+ pixiStageList[index] = [item.length]
+ for (let idx = 0; idx < item.length; idx++) {
+ let val = item[idx]
+ if (val.value < 0 && (val.value != -999)) {
+ continue;
+ }
+
+ let sprite = getSprite(val.value, idx * width, index * height, val, (e) => {
+ if (val.value == 4) {
+ //绔欑偣
+ this.openDrawerSta(val)
+ } else if (val.value == 67) {
+ //鎻愬崌鏈�
+ this.openDrawerLift(val)
+ } else {
+ //搴撲綅
+ this.rightEvent(index, idx, e);
+ updateColor(sprite, 0x9900ff);
+ }
+ });
+
+ if (val.value == 4) {
+ // 鍒涘缓鏂囨湰瀵硅薄
+ const style = new PIXI.TextStyle({
+ fontFamily: 'Arial',
+ fontSize: 10,
+ fill: '#000000',
+ });
+ const text = new PIXI.Text(val.data, style);
+ text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
+ text.position.set(sprite.width / 2, sprite.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
+ // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
+ sprite.addChild(text);
+ sprite.textObj = text;
+ pixiStaMap.set(parseInt(val.data), sprite);//绔欑偣鏁版嵁娣诲姞鍒癿ap涓�
+ }else if (val.value == 67) {
+ // 鍒涘缓鎻愬崌鏈烘枃鏈璞�
+ const style = new PIXI.TextStyle({
+ fontFamily: 'Arial',
+ fontSize: 10,
+ fill: '#000000',
+ });
+ const text = new PIXI.Text(val.data, style);
+ text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
+ text.position.set(sprite.width / 2, sprite.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
+ // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
+ sprite.addChild(text);
+ sprite.textObj = text;
+ pixiStaMap.set(parseInt(val.data), sprite);//绔欑偣鏁版嵁娣诲姞鍒癿ap涓�
+ }
+
+ if (val.value == -999) {
+ pixiShuttleLockPathMap.set(val.locNo, 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]
+ if (item.originData == -999) {
+ //绉婚櫎old璺緞鍏冪礌
+ objectsContainer3.removeChild(oldSprite);
+ }else {
+ //绉婚櫎old鍏冪礌
+ objectsContainer.removeChild(oldSprite);
+ }
+
+ let sprite = getSprite(item.data, item.y * width, item.x * height, item, (e) => {
+ this.rightEvent(item.x, item.y, e);
+ updateColor(sprite, 0x9900ff);
+ });
+
+ 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
+ this.drawerLocNoData = {x:x, y: y, z: this.currentLev, locNo: this.map[x][y].locNo,
+ locSts: this.map[x][y].locSts,row:this.map[x][y].row, bay: this.map[x][y].bay, lev: this.currentLev};
+ },
+ findDiffList(arr1, arr2) {
+ let diff = []
+ arr1.forEach((item,index) => {
+ item.forEach((val,idx) => {
+ if(val.value != arr2[index][idx].value){
+ diff.push({
+ x: index,
+ y: idx,
+ data: arr2[index][idx].value,
+ originData: val.value,
+ locSts: val.locSts
+ })
+ }
+ })
+ })
+
+ return diff;
+ },
+ findShuttleDiffList(list1, list2) {
+ //妫�娴嬮泦鍚�1閲岄潰鐨勫皬杞︽槸鍚﹀湪闆嗗悎2涓湁鍙樺姩
+ if (list1.length == 0) {
+ return false;//闆嗗悎涓虹┖
+ }
+ if (list1.length != list2.length) {
+ return false;//涓や釜闆嗗悎闀垮害涓嶄竴鑷�
+ }
+
+ let flag = false;
+ list1.forEach((item,index) => {
+ for (var i = 0; i < list2.length; i++) {
+ if (item.shuttleNo == list2[i].shuttleNo) {
+ flag = true;
+ break;
+ }
+ }
+ });
+
+ 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) {
+ //妫�娴嬬珯鐐规槸鍚﹀湪闆嗗悎涓湁鍙樺姩
+ if (list.length == 0) {
+ return false;//闆嗗悎涓虹┖
+ }
+
+ let tmp = null;
+ for (var i = 0; i < list.length; i++) {
+ if (sta.siteId == list[i].siteId) {
+ tmp = list[i];//鎵惧埌鐩稿悓绔欑偣
+ break
+ }
+ }
+
+ if (tmp == null) {
+ return false;//娌℃湁鎵惧埌鐩稿悓绔欑偣
+ }
+
+ if (sta.siteStatus != tmp.siteStatus) {
+ return false;//绔欑偣鐘舵�佷笉鐩稿悓
+ }
+
+ if (sta.workNo != tmp.workNo) {
+ return false;//绔欑偣宸ヤ綔鍙蜂笉鐩稿悓
+ }
+
+ return true;//鏃犲彉鍖�
+ },
+ webSocketOnOpen(e) {
+ console.log("open");
+ },
+ webSocketOnError(e) {
+ console.log(e);
+ },
+ webSocketOnMessage(e) {
+ const result = JSON.parse(e.data);
+ if (result.url == "/shuttle/table/shuttle/state") {
+ this.setShuttleStateInfo(JSON.parse(result.data))
+ }else if (result.url == "/lift/table/lift/state") {
+ this.setLiftStateInfo(JSON.parse(result.data))
+ }else if (result.url == "/console/latest/data/site") {
+ this.setSiteInfo(JSON.parse(result.data))
+ }else if (result.url == "/console/map/auth") {
+ this.setMap(JSON.parse(result.data))
+ }else if (result.url == "/console/locMap/auth") {
+ this.setMap(JSON.parse(result.data))
+ }else if (result.url == "/console/barcode/output/site") {
+ this.setCodeData(JSON.parse(result.data))
+ }
+ },
+ webSocketClose(e) {
+ console.log("close");
+ },
+ sendWs(message) {
+ if (ws.readyState == WebSocket.OPEN) {
+ ws.send(message)
+ }
+ },
+ colorRGB(){
+ //闅忔満棰滆壊
+ const r = Math.floor(Math.random()*256);
+ const g = Math.floor(Math.random()*256);
+ const b = Math.floor(Math.random()*256);
+ return `rgb(${r},${g},${b})`;
+ },
+ updateShuttleXY(item) {
+ const shuttle = pixiShuttleMap.get(item.shuttleNo);
+ if (shuttle.updateMoveStatus) {//鍔ㄧ敾鎵ц瀹屾垚鎵嶅彲缁х画鎵ц鍔ㄧ敾
+ shuttle.updateMoveStatus = false;//鍔ㄧ敾鎵ц涓�
+ // 璁$畻涓ょ偣涔嬮棿鐨勮窛绂�1
+ const distance = Math.sqrt(Math.pow((item.wcsPoint.x * width) - shuttle.x, 2) + Math.pow((item.wcsPoint.y * height) - shuttle.y, 2));
+ gsap.killTweensOf(shuttle); // 鏉�姝绘墍鏈夐拡瀵�".class"鐨勫姩鐢�
+ gsap.to(shuttle, {
+ x: (item.wcsPoint.y - 0) * width, // 鐩爣浣嶇疆
+ y: (item.wcsPoint.x - 1) * height, // 鐩爣浣嶇疆
+ duration: 0.2, // 鍔ㄧ敾鎸佺画鏃堕棿锛堢锛�
+ ease: "power1.inOut", // 缂撳姩绫诲瀷
+ onComplete: () => {
+ shuttle.updateMoveStatus = true;//鍔ㄧ敾鎵ц瀹屾垚
+ }
+ });
+ }
+ },
+ getSiteInfo() {
+ //鑾峰彇杈撻�佺珯鐐规暟鎹�
+ this.sendWs(JSON.stringify({
+ "url": "/console/latest/data/site",
+ "data": {}
+ }))
+ },
+ 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)
+ //鑾峰彇杈撻�佺珯鐐规暟鎹�
+ if (res.code === 200){
+ var sites = res.data;
+ if (this.reloadSta && pixiStaMap.size > 0) {
+ //閲嶆柊娓叉煋鎵�鏈夎緭閫佺珯鐐�
+ this.currentLevStaList = sites;
+ this.reloadSta = false;
+ sites.forEach((item, index) => {
+ let sta = pixiStaMap.get(parseInt(item.siteId));
+ if (sta != undefined) {
+ if (item.workNo > 0) {
+ sta.textObj.text = item.siteId + "(" + item.workNo + ")";
+ }
+
+ //鍒涘缓閬僵灞�
+ if (item.siteStatus == "site-auto") {
+ //鑷姩鐘舵�侊紝绉婚櫎閬僵灞�
+ if (sta.statusObj != null) {
+ objectsContainer.removeChild(sta.statusObj)
+ sta.statusObj = null;
+ }
+ }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);//缁ф壙鏂囧瓧淇℃伅
+ sta.statusObj = graphics;
+ objectsContainer.addChild(graphics);
+ }else if (item.siteStatus == "site-unauto") {
+ //闈炶嚜鍔�
+ let graphics = getGraphics(0xb8b8b8, width, height, sta.x, sta.y);
+ graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
+ sta.statusObj = graphics;
+ objectsContainer.addChild(graphics);
+ }
+ }
+ });
+ } else {
+ //妫�娴嬩笉鐩稿悓绔欑偣杩涜灞�閮ㄦ洿鏂�
+ this.currentLevStaList.forEach((item, index) => {
+ let result = this.checkStaInListDiff(item, sites);
+ if (!result) {
+ //闇�瑕佹洿鏂�
+ let sta = pixiStaMap.get(parseInt(item.siteId));
+ if (item.workNo > 0) {
+ sta.textObj.text = item.siteId + "(" + item.workNo + ")";
+ }else {
+ sta.textObj.text = item.siteId;
+ }
+
+ //鍒涘缓閬僵灞�
+ if (item.siteStatus == "site-auto") {
+ //鑷姩鐘舵�侊紝绉婚櫎閬僵灞�
+ if (sta.statusObj != null) {
+ objectsContainer.removeChild(sta.statusObj)
+ sta.statusObj = null;
+ }
+ }else if (item.siteStatus == "site-auto-run") {
+ //鑷姩鏈夌墿
+ let graphics = getGraphics(0xfa51f6, width, height, sta.x, sta.y);
+ graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
+ sta.statusObj = graphics;
+ objectsContainer.addChild(graphics);
+ }else if (item.siteStatus == "site-unauto") {
+ //闈炶嚜鍔�
+ let graphics = getGraphics(0xb8b8b8, width, height, sta.x, sta.y);
+ graphics.addChild(sta.textObj);//缁ф壙鏂囧瓧淇℃伅
+ sta.statusObj = graphics;
+ objectsContainer.addChild(graphics);
+ }
+ }
+ });
+ }
+ } else if (res.code === 403){
+ parent.location.href = baseUrl+"/login";
+ } else {
+ console.log(res.msg);
+ }
+ },
+ openDrawerSta(data) {
+ let that = this
+ this.drawerSta = true;
+ $.ajax({
+ url: baseUrl + "/console/site/detail",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {
+ siteId: data.data
+ },
+ method: 'post',
+ success: function(res) {
+ //瑙f瀽鏁版嵁
+ let siteInfo = res.data;
+ if (res.code == 200) {
+ that.drawerStaData = siteInfo;
+ }
+ }
+ })
+ },
+ openDrawerLift(data) {
+ this.drawerLift = true;
+ this.drawerLiftData = parseInt(data.data)
+ },
+ getLiftStateInfo() {
+ // 鎻愬崌鏈轰俊鎭〃鑾峰彇
+ this.sendWs(JSON.stringify({
+ "url": "/lift/table/lift/state",
+ "data": {}
+ }))
+ },
+ setLiftStateInfo(res) {
+ // 鎻愬崌鏈轰俊鎭〃鑾峰彇
+ if (res.code == 200) {
+ this.liftList = res.data
+ }
+ },
+ addMoveAdvancePath(moveAdvancePath, shuttleNo) {//娣诲姞棰勮璺緞
+ let that = this;
+ moveAdvancePath.forEach((path, idx) => {
+ let locNo = this.map[path.x, path.y];
+ if (!pixiShuttleMoveAdvancePathMap.has(locNo)) {
+ let graphics = getGraphics(0x9966ff, width, height, path.y * width, (path.x - 1) * height);
+ let shuttleNos = [shuttleNo];
+ // 鍒涘缓鏂囨湰瀵硅薄
+ const style = new PIXI.TextStyle({
+ fontFamily: 'Arial',
+ fontSize: 10,
+ fill: '#000000',
+ });
+ const text = new PIXI.Text(JSON.stringify(shuttleNos), style);
+ text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
+ text.position.set(graphics.width / 2, graphics.height / 2); // 灏嗘枃鏈綅缃缃负Graphics瀵硅薄鐨勪腑蹇冪偣
+ // 灏嗘枃鏈璞℃坊鍔犲埌Graphics瀵硅薄涓�
+ graphics.addChild(text);
+ graphics.textObj = text;
+ objectsContainer2.addChild(graphics)
+ pixiShuttleMoveAdvancePathMap.set(locNo, {
+ 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);
+ }
+ });
+
+ 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);
+ }
+ }
+ })
+ }
+ },
+ }
+ })
+
+ function getContainer(value) {
+ let graphics = new PIXI.Graphics();
+ if (value === 0) {
+ graphics.beginFill(0x55aaff);
+ } else if (value === 3) {//姣嶈建閬�
+ graphics.beginFill(0x00ff7f);
+ graphics.visible = true;
+ } else if (value === 4) {//绔欑偣
+ graphics.beginFill(0xffff00);
+ graphics.visible = true;
+ } else if (value === 5) {//鍏呯數妗�
+ graphics.beginFill(0xffaa7f);
+ graphics.visible = true;
+ } else if (value === 9) {//杞ㄨ抗
+ graphics.beginFill(0xff0000);
+ }else if (value === 67) {//鎻愬崌鏈�
+ graphics.beginFill(0xaaffff);
+ }else if (value === -999) {//璺緞閿佸畾
+ graphics.beginFill(0xf83333);
+ }else if (value === 1000) {//婊″簱浣�
+ graphics.beginFill(0xf83333);
+ }
+ graphics.lineStyle(1, 0xffffff, 1);
+ graphics.drawRect(0, 0, width, height);
+ graphics.endFill();
+
+ return graphics;
+ }
+
+ function getGraphics(color, width, height, x, y) {
+ let graphics = new PIXI.Graphics();
+ graphics.beginFill(color);
+ graphics.lineStyle(1, 0xffffff, 1);
+ graphics.drawRect(0, 0, width, height);
+ graphics.position.set(x, y);
+ graphics.endFill();
+ return graphics;
+ }
+
+ function getSprite(value, x, y, item, pointerDownEvent) {
+ let sprite;
+ if (value == 0) {
+ if(item.locSts == 'O') {
+ sprite = new PIXI.Sprite(graphics0);
+ }else if(item.locSts == 'F') {
+ sprite = new PIXI.Sprite(graphicsF);
+ }else {
+ sprite = new PIXI.Sprite(graphics0);
+ }
+ } else if (value == 3) {
+ sprite = new PIXI.Sprite(graphics3);
+ } else if (value == 4) {
+ sprite = new PIXI.Sprite(graphics4);
+ } else if (value == 5) {
+ sprite = new PIXI.Sprite(graphics5);
+ } else if (value == 9) {
+ sprite = new PIXI.Sprite(graphics9);
+ } else if (value == 67) {
+ sprite = new PIXI.Sprite(graphics67);
+ } else if (value == -999) {
+ sprite = new PIXI.Sprite(graphicsLock);
+ } else {
+ sprite = new PIXI.Sprite(graphics0);
+ }
+ sprite.position.set(x, y);
+ sprite.interactive = true; // 蹇呴』瑕佽缃墠鑳芥帴鏀朵簨浠�
+ sprite.buttonMode = true; // 璁╁厜鏍囧湪hover鏃跺彉涓烘墜鍨嬫寚閽�
+
+ sprite.on('pointerdown', (e) => {
+ pointerDownEvent(e)
+ })
+
+ return sprite;
+ }
+
+ /**
+ * 鏇存柊棰滆壊
+ */
+ function updateColor(sprite, color) {
+ // graphics.clear()
+ // graphics.beginFill(color);
+ // graphics.drawRect(0, 0, width, height);
+ sprite.tint = color;
+ }
+
+</script>
+</body>
+</html>
\ No newline at end of file
--
Gitblit v1.9.1