From b890d1c574d3d8332def7f4590508a7918139ae0 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 07 十一月 2025 16:57:22 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/console.html |  850 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 622 insertions(+), 228 deletions(-)

diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index 74bdbab..6a06b46 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -13,72 +13,52 @@
 		<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>
+		<style>
+
+		</style>
 	</head>
 	<body>
 		<div id="app">
-			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;">
-				<div id="mapDataId" style="zoom: 0.7;position: relative;">
-					<div class="pointContainer" v-for="(row,index) in map" :key="index">
-						<div v-for="(col,idx) in row" :key="idx">
-							<div v-if="col.value == 0">
-								<!-- 瀛愯建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx) == null ? '':shuttleColorList[checkAdvancePath(index,idx)]}" class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div :style="{background: checkAdvancePath(index,idx) == null ? '':shuttleColorList[checkAdvancePath(index,idx)]}" class="item" v-else>{{checkAdvancePath(index,idx) == null ? idx:checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 3">
-								<!-- 姣嶈建閬� 璺緞涓虹┛姊溅棰勮璺緞鍒欐樉绀虹┛姊溅棰滆壊鍜岀┛姊溅鍙� -->
-								<div :style="{background: checkAdvancePath(index,idx) == null ? '#5af':shuttleColorList[checkAdvancePath(index,idx)]}" class="item">{{checkAdvancePath(index,idx) == null ? '&#x21c5;&#x21c4;':checkAdvancePath(index,idx)}}</div>
-							</div>
-							<div v-else-if="col.value == 4">
-								<!-- 绔欑偣 -->
-								<div class="site" @click="openSite(col.data)">{{col.data}}</div>
-							</div>
-							<div v-else-if="col.value == 5">
-								<!-- 鍏呯數妗� -->
-								<div class="item" style="font-size: 24px">&#9889;</div>
-							</div>
-							<div v-else-if="col.value < 0">
-								<!-- 绂佹鏄剧ず鍖哄煙 -->
-								<div class="item" style="visibility: hidden">{{idx}}</div>
-							</div>
-							<div v-else-if="col.value == -999">
-								<!-- 璺緞鍗犵敤鍖哄煙 -->
-								<div class="item" style="background:#f83333;color: #fff;">{{idx}}</div>
-							</div>
-							<div v-else>
-								<div class="item" v-if="col.data.length > 0">{{col.data}}</div>
-								<div class="item" v-else>{{idx}}-{{col.value}}</div>
-							</div>
-						</div>
+			<div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 30px;">
+				<div id="mapDataId" style="zoom: 0.6;position: relative;">
+					<table class="excel-table">
+						<tr v-for="(row,index) in map" :key="index">
+							<td
+									v-for="(col,idx) in row" :key="idx"
+									:rowspan="col.rowSpan"
+									:colspan="col.colSpan"
+									:style="{width: col.width}"
+									v-if="col.type != 'merge'"
+							>
+								<div v-if="col.type == 'none'">
+									<div class="item" style="visibility: hidden">{{idx}}</div>
+								</div>
+								<div v-else-if="col.type == 'shelf'">
+									<div class="shelf">{{col.shelfIdx}}</div>
+								</div>
+								<div v-else-if="col.type == 'devp'">
+									<div class="site" :style="{height: col.rowPx}" :id="'site-' + col.value" @click="openSite(col.value)">{{col.value}}</div>
+								</div>
+								<div v-else-if="col.type == 'rgv'" style="position: relative;">
+									<div class="rgv-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'rgv-' + getDeviceNo(col.value)" @click="openRgv(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+									<div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+									<div class="track-item" v-else :id="'rgvTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+								</div>
+								<div v-else-if="col.type == 'crn'">
+									<div class="crn-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'crn-' + getDeviceNo(col.value)" @click="openCrn(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+									<div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+									<div class="track-item" v-else :id="'crnTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+								</div>
+							</td>
 
-						<div>
-							<!-- 鏄剧ず琛屽彿 -->
-							<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
-						</div>
-					</div>
-
-					<!--杈撳嚭灏忚溅-->
-					<div v-for="(car,idx) in currentLevShuttleList"
-						 :style="{
-						 left: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[1]
-						 ,top: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[0]
-						 ,color: shuttleColorList[car.shuttleNo]
-						 }"
-						 class="sxcar" :id="'sxcar-' + car.shuttleNo">
-						{{car.shuttleNo}}
-					</div>
-
+							<td>
+								<!-- 鏄剧ず琛屽彿 -->
+								<div class="item" style="background: none;color: #000;">#{{index+1}}</div>
+							</td>
+						</tr>
+					</table>
 				</div>
 
-				<!--杈撳嚭妤煎眰-->
-				<div style="height: 100%;">
-					<div class="floorBtnBox" v-for="(lev,idx) in floorList">
-						<el-button @click="changFloor(lev)">{{lev}}F</el-button>
-					</div>
-					<div>
-						<el-button @click="testMove()">娴嬭瘯绉诲姩杞�</el-button>
-					</div>
-				</div>
 			</div>
 
 			<div class="footer">
@@ -103,63 +83,41 @@
 						</div>
 					</div>
 				</div>
-				<!-- 鍥涘悜绌挎杞︾姸鎬� -->
+				<!-- 鍫嗗灈鏈虹姸鎬� -->
 				<div class="line-status">
-					<div class="body-head">绌挎杞︾姸鎬�</div>
+					<div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
 					<div class="shuttle-status-box">
-						<div v-for="(item,idx) in shuttleList" class="state">
-							<span :style="{color: shuttleColorList[item.shuttleNo]}">鍥涘悜绌挎杞� {{item.shuttleNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss shuttle-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss shuttle-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss shuttle-charging">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 5"
-								class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 6"
-								class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 7"
-								class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
+						<div v-for="(item,idx) in crnList" class="state">
+							<span>鍫嗗灈鏈� {{item.crnNo}}</span>
+							<span v-if="item.crnStatus == 'machine-auto'"
+								class="state-ss machine-auto-flag">鑷姩</span>
+							<span v-else-if="item.crnStatus == 'machine-un-auto'"
+								class="state-ss machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
+							<span v-else-if="item.crnStatus == 'machine-error'"
+								class="state-ss machine-error-flag">寮傚父</span>
+							<span v-else-if="item.crnStatus == 'machine-p-move'"
+								class="state-ss machine-p-move-flag">PToP</span>
+							<span v-else-if="item.crnStatus == 'machine-site-move'"
+								class="state-ss machine-site-move-flag">绔欏埌绔�</span>
+							<span v-else-if="item.crnStatus == 'machine-stock-move'"
+								class="state-ss machine-stock-move-flag">搴撳埌搴�</span>
+							<span v-else-if="item.crnStatus == 'machine-pakout'"
+								class="state-ss machine-take-flag">鍑哄簱</span>
+							<span v-else-if="item.crnStatus == 'machine-pakin'"
+								  class="state-ss machine-put-flag">鍏ュ簱</span>
+							<span v-else class="state-ss">{{item.crnStatus}}</span>
 						</div>
 					</div>
 					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
 					<div class="allStatus item-group">
-						<span class="shuttle-idle">绌洪棽</span>
-						<span class="shuttle-working">浣滀笟涓�</span>
-						<span class="shuttle-waiting">绛夊緟纭</span>
-						<span class="shuttle-charging">鍏呯數涓�</span>
-						<span class="shuttle-charging-waiting">鍏呯數浠诲姟绛夊緟纭</span>
-						<span class="shuttle-fixing">鏁呴殰淇涓�</span>
-						<span class="shuttle-offline">绂荤嚎</span>
-					</div>
-				</div>
-				<!-- 鎻愬崌鏈虹姸鎬� -->
-				<div class="line-status">
-					<div class="body-head">鎻愬崌鏈虹姸鎬�</div>
-					<div class="lift-status-box">
-						<div v-for="(item,idx) in liftList" class="state states">
-							<span>鎻愬崌鏈� {{item.liftNo}}</span>
-							<span v-if="item.protocolStatus == 1"
-								class="state-ss lift-idle">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 2"
-								class="state-ss lift-working">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 3"
-								class="state-ss lift-waiting">{{item.protocolStatus$}}</span>
-							<span v-else-if="item.protocolStatus == 4"
-								class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-							<span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span>
-						</div>
-					</div>
-					<div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
-					<div class="allStatus item-group">
-						<span class="lift-idle">绌洪棽</span>
-						<span class="lift-working">浣滀笟涓�</span>
-						<span class="lift-waiting">绛夊緟纭</span>
-						<span class="lift-offline">绂荤嚎</span>
+						<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>
 				<!-- 杈撻�佺嚎鐘舵�� -->
@@ -186,7 +144,7 @@
 							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
 						</div>
 						<div id="barcode1" class="table-body">
-
+							<li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
 						</div>
 					</div>
 					<div class="tablebox">
@@ -194,14 +152,14 @@
 							<li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
 						</div>
 						<div id="barcode2" class="table-body">
-
+							<li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
 						</div>
 					</div>
 				</div>
 			</div>
 
 			<!-- 杈撻�佽澶囧脊绐� -->
-			<div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn">
+			<div id="siteWindow" :style="{display:siteWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
 				<!-- 琛ㄥご -->
 				<div id="siteWindow-head">
 					<div class="detailed"></div>
@@ -324,21 +282,223 @@
 				</div>
 			</div>
 
+			<!-- 鍫嗗灈鏈哄脊绐� -->
+			<div id="crnWindow" :style="{display:crnWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+				<div id="crnWindow-head">
+					<div class='detailed'></div>
+					<button @click="crnWindow = false"></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>
+
+			<!-- RGV寮圭獥 -->
+			<div id="rgvWindow" :style="{display:rgvWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+				<div id="rgvWindow-head">
+					<div class='detailed'></div>
+					<button @click="rgvWindow = false"></button>
+				</div>
+				<form>
+					<!-- RGV鍙� -->
+					<div class="form-item">
+						<div class="form-item-label" style>
+							<span>RGV鍙凤細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="rgvNo" 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>
+					<!-- RGV鐘舵�� -->
+					<div class="form-item">
+						<div class="form-item-label">
+							<span>RGV鐘舵�侊細</span>
+						</div>
+						<div class="form-item-input">
+							<input type="text" name="rgvStatus" 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>
 		<script>
 			var app = new Vue({
 				el: '#app',
 				data: {
 					map: [],//鍦板浘鏁版嵁
-					currentLev: 1,//鍦板浘褰撳墠妤煎眰
 					siteWindow: false, //绔欑偣寮圭獥鏄剧ず榛樿涓嶆樉绀�
-					floorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], //褰撳墠椤圭洰妤煎眰
-					shuttleList: [], //鍥涘悜绌挎杞﹂泦鍚�
-					currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
-					shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
+					crnWindow: false, //鍫嗗灈鏈哄脊绐楁樉绀洪粯璁や笉鏄剧ず
+					rgvWindow: false, //rgv寮圭獥鏄剧ず榛樿涓嶆樉绀�
+					crnList: [], //鍫嗗灈鏈洪泦鍚�
 					liftList: [], //鎻愬崌鏈洪泦鍚�
 					systemStatus: true,//绯荤粺杩愯鐘舵��
 					consoleInterval: null,//瀹氭椂鍣ㄥ瓨鍌ㄥ彉閲�
+					codeList1: [],//鏉$爜List
+					codeList2: [],//鏉$爜List
+					crnInitPosition: [],
+					rgvPosition: [],
 				},
 				created() {
 					this.init()
@@ -348,31 +508,94 @@
 				},
 				methods: {
 					init() {
-						this.getMap(this.currentLev)
+						this.getMap()
 						this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
 
 						this.consoleInterval = setInterval(() => {
-							this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-							this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
-							console.log('interval')
+							this.getCrnInfo() //鑾峰彇鍫嗗灈鏈烘暟鎹�
+							this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
+							this.getRgvInfo() //鑾峰彇RGV鏁版嵁
+							// this.getCodeData()//鑾峰彇鏉$爜
 						}, 1000)
 					},
 					//鑾峰彇鍦板浘鏁版嵁
-					getMap(lev) {
+					getMap() {
+						let rowPx = 35;
+						let colPx = 35;
+
 						$.ajax({
-							type: "get",
-							url: baseUrl + "/console/map/" + lev + "/auth",
+							url: "./test.json",
+							method: "get",
+							success: (res) => {
+								let data = res.data;
+								let mapData = JSON.parse(data)
+								mapData.forEach((row) => {
+									let shelfIdx = 1;
+									row.forEach((col) => {
+										if (col.type == 'shelf') {
+											col.shelfIdx = shelfIdx;
+											shelfIdx++;
+										}
+
+										col.rowPx = (col.rowSpan * rowPx) + "px";
+										col.colPx = (col.colSpan * colPx) + "px";
+
+										col.width = (col.cellWidth / 30) + "px";
+									})
+								})
+								this.map = mapData;
+							}
+						})
+					},
+					openCrn(id) {
+						this.crnWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
+						$(".detailed").empty();
+						$('.detailed').append(id + '鍙峰爢鍨涙満');
+						$.ajax({
+							url: baseUrl + "/console/crn/detail",
 							headers: {
 								'token': localStorage.getItem('token')
 							},
-							success: (res) => {
-								let data = res.data
-								let tmp = []
-								for (let i = 1; i < data.length - 1; i++) {
-									tmp.push(data[i])
+							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');
+									}
 								}
-								this.map = tmp
 							}
+						})
+					},
+					openRgv(id) {
+						this.rgvWindow = true; //鎵撳紑RGV淇℃伅寮圭獥
+						$(".detailed").empty();
+						$('.detailed').append(id + '鍙稲GV');
+						$.ajax({
+							url: baseUrl + "/console/rgv/detail",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: {
+								rgvNo: id
+							},
+							method: 'post',
+							success: function(res) {
+								for (var val in res.data) {
+									var find = $("#rgvWindow").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');
+									}
+								}
+							}
+
 						})
 					},
 					openSite(id) {
@@ -401,54 +624,167 @@
 
 						})
 					},
-					changFloor(lev) {
-						this.currentLev = lev
-						this.currentLevShuttleList = []
-						this.getMap(lev)
-					},
-					getShuttleStateInfo() {
-						// 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇
-						let that = this
+					getSiteInfo() {
+						//鑾峰彇杈撻�佺珯鐐规暟鎹�
 						$.ajax({
-							url: baseUrl + "/shuttle/table/shuttle/state",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
+							url: baseUrl + "/console/latest/data/site",
+							headers: {'token': localStorage.getItem('token')},
 							method: 'POST',
-							success: function(res) {
-								if (res.code == 200) {
-									let currentLevShuttle = []//褰撳墠妤煎眰灏忚溅闆嗗悎
-									res.data.forEach((item,idx) => {
-										if (item.point.z == that.currentLev) {
-											currentLevShuttle.push(item)
+							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);
 										}
-									})
-									that.currentLevShuttleList = currentLevShuttle
-									that.shuttleList = res.data
-
-									if (that.shuttleColorList.length == 0) {
-										let colorList = []//闅忔満灏忚溅棰滆壊
-										res.data.forEach((item,idx) => {
-											colorList[item.shuttleNo] = that.colorRGB()
-										})
-										that.shuttleColorList = colorList
 									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
 								}
 							}
 						});
 					},
-					getLiftStateInfo() {
-						// 鎻愬崌鏈轰俊鎭〃鑾峰彇
+					getCrnInfo() {
 						let that = this
+						//鑾峰彇鍫嗗灈鏈烘暟鎹�
 						$.ajax({
-							url: baseUrl + "/lift/table/lift/state",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
+							url: baseUrl + "/console/latest/data/crn",
+							headers: {'token': localStorage.getItem('token')},
 							method: 'POST',
-							success: function(res) {
-								if (res.code == 200) {
-									that.liftList = res.data
+							success: function (res) {
+								if (res.code === 200) {
+									var crns = res.data;
+
+									if (that.crnInitPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < crns.length; i++) {
+											var crnEl = $("#crn-" + crns[i].crnId);
+											position.push({
+												id: crns[i].crnId,
+												left: crnEl.offset().left + crnEl.width()
+											})
+										}
+										that.crnInitPosition = position
+										return;
+									}
+
+									let crnList = []
+									for (var i = 0; i < crns.length; i++) {
+										var crnEl = $("#crn-" + crns[i].crnId);
+										crnEl.attr("class", "crn-item " + crns[i].crnStatus);
+
+										if (crns[i].bay < 0 || crns[i].bay === -2) {
+											crns[i].bay = 1
+										}
+
+										let basePosition = 0;
+										that.crnInitPosition.forEach((item) => {
+											if (item.id == crns[i].crnId) {
+												basePosition = item.left
+											}
+										})
+
+										var offSet = crns[i].offset;
+										let finalOffset = basePosition + offSet;
+										if (finalOffset < basePosition) {
+											finalOffset = basePosition;
+										}
+										crnEl.animate({left: finalOffset + 'px'}, 1000);
+
+										crnList.push({
+											crnNo: crns[i].crnId,
+											crnStatus: crns[i].crnStatus
+										})
+									}
+									that.crnList = crnList;
+
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
+								}
+							}
+						});
+					},
+					getRgvInfo() {
+						let that = this
+						//鑾峰彇RGV鏁版嵁
+						$.ajax({
+							url: baseUrl + "/console/latest/data/rgv",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var rgvs = res.data;
+
+									if (that.rgvPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < rgvs.length; i++) {
+											var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+											position.push({
+												id: rgvs[i].rgvId,
+												trackSiteNo: rgvs[i].trackSiteNo,
+												initLeft: rgvEl.offset().left
+											})
+										}
+										that.rgvPosition = position
+										return;
+									}
+
+									for (var i = 0; i < rgvs.length; i++) {
+										var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+										if (rgvs[i].rgvStatus == 'IDLE') {
+											rgvEl.attr("class", "rgv-item");
+										}else if (rgvs[i].rgvStatus == 'WORKING') {
+											rgvEl.attr("class", "rgv-item machine-working");
+										}
+
+										let trackSiteNo = rgvs[i].trackSiteNo;
+										let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+										let flag = false;
+										that.rgvPosition.forEach((item) => {
+											if (item.id == rgvs[i].rgvId) {
+												if (item.trackSiteNo != trackSiteNo) {
+													flag = true
+												}
+											}
+										})
+
+										if (flag) {
+											let finalOffset = 0;
+											let targetPosition = trackSiteEl.parent().parent().position().left;
+											let rgvPosition = rgvEl.position().left;
+											let calcResult = targetPosition - rgvPosition
+											if (calcResult > 0) {
+												finalOffset = targetPosition + trackSiteEl.width();
+											}else {
+												finalOffset = targetPosition;
+											}
+
+											rgvEl.animate({left: finalOffset + "px"}, 500);
+
+											let position = []
+											that.rgvPosition.forEach((item) => {
+												if (item.id == rgvs[i].rgvId) {
+													item.trackSiteNo = trackSiteNo
+												}
+												position.push(item)
+											})
+											that.rgvPosition = position
+										}
+
+									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
 								}
 							}
 						});
@@ -489,10 +825,12 @@
 										$('#system-toggle-checked').attr("checked", true);
 										$('#system-run-desc').html("绯荤粺杩愯涓�...");
 										that.systemStatus = true;
+										parent.systemRunning = true;
 									} else {
 										$('#system-toggle-checked').attr("checked", false);
 										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
 										that.systemStatus = false;
+										parent.systemRunning = false;
 									}
 								} else if (res.code === 403) {
 									parent.location.href = baseUrl + "/login";
@@ -520,10 +858,12 @@
 										$('#system-toggle-checked').attr("checked", true);
 										$('#system-run-desc').html("绯荤粺杩愯涓�...");
 										that.systemStatus = true;
+										parent.systemRunning = true;
 									} else {
 										$('#system-toggle-checked').attr("checked", false);
 										$('#system-run-desc').html("绯荤粺宸插仠姝�!");
 										that.systemStatus = false;
+										parent.systemRunning = false;
 									}
 								} else if (res.code === 403) {
 									parent.location.href = baseUrl + "/login";
@@ -536,74 +876,128 @@
 							}
 						});
 					},
-					getCarPosition(x,y) {
-						//璁$畻鍥涘悜绌挎杞﹀浘鏍囦綅缃�
-						let top = (x * 35 - 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犻珮搴�
-						let left = (y * 35) + "px" //闇�瑕佸噺鍘诲皬杞﹁嚜宸辨墍鍗犲搴�
-						return [top,left];
-					},
-					testMove() {
+					getCodeData(){
+						this.sendWs(JSON.stringify({
+							"url": "/console/barcode/output/site",
+							"data": {}
+						}))
+
 						let that = this
-						clearInterval(this.consoleInterval)//娓呯悊瀹氭椂鍣�
-
-						let shuttleList = this.currentLevShuttleList
+						//鑾峰彇RGV鏁版嵁
 						$.ajax({
-							url: baseUrl + "/static/testMoveData.json",
-							headers: {
-								'token': localStorage.getItem('token')
-							},
-							method: 'GET',
-							success: function(res) {
-								shuttleList[0].moveAdvancePath = res
-								that.currentLevShuttleList = shuttleList
+							url: baseUrl + "/console/barcode/output/site",
+							headers: {'token': localStorage.getItem('token')},
+							method: 'POST',
+							success: function (res) {
+								if (res.code === 200) {
+									var rgvs = res.data;
 
-								let index = 0
-								let tmp = null
-								tmp = setInterval(() => {
-									if (index < res.length) {
-										that.currentLevShuttleList[0].wcsPoint.y = res[index].y
-										that.currentLevShuttleList[0].wcsPoint.x = res[index].x
-										index++
-									}else {
-										clearInterval(tmp)
-										that.init()
+									if (that.rgvPosition.length == 0) {
+										let position = []
+										for (var i = 0; i < rgvs.length; i++) {
+											var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+											position.push({
+												id: rgvs[i].rgvId,
+												trackSiteNo: rgvs[i].trackSiteNo,
+												initLeft: rgvEl.offset().left
+											})
+										}
+										that.rgvPosition = position
+										return;
 									}
-								},1000)
+
+									for (var i = 0; i < rgvs.length; i++) {
+										var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+										if (rgvs[i].rgvStatus == 'IDLE') {
+											rgvEl.attr("class", "rgv-item");
+										}else if (rgvs[i].rgvStatus == 'WORKING') {
+											rgvEl.attr("class", "rgv-item machine-working");
+										}
+
+										let trackSiteNo = rgvs[i].trackSiteNo;
+										let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+										let flag = false;
+										that.rgvPosition.forEach((item) => {
+											if (item.id == rgvs[i].rgvId) {
+												if (item.trackSiteNo != trackSiteNo) {
+													flag = true
+												}
+											}
+										})
+
+										if (flag) {
+											let finalOffset = 0;
+											let targetPosition = trackSiteEl.parent().parent().position().left;
+											let rgvPosition = rgvEl.position().left;
+											let calcResult = targetPosition - rgvPosition
+											if (calcResult > 0) {
+												finalOffset = targetPosition + trackSiteEl.width();
+											}else {
+												finalOffset = targetPosition;
+											}
+
+											rgvEl.animate({left: finalOffset + "px"}, 500);
+
+											let position = []
+											that.rgvPosition.forEach((item) => {
+												if (item.id == rgvs[i].rgvId) {
+													item.trackSiteNo = trackSiteNo
+												}
+												position.push(item)
+											})
+											that.rgvPosition = position
+										}
+
+									}
+								} else if (res.code === 403) {
+									parent.location.href = baseUrl + "/login";
+								} else {
+									console.log(res.msg);
+								}
 							}
 						});
 					},
-					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})`;
-					},
-					checkAdvancePath(x,y) {
-						//妫�娴嬭矾寰勬槸鍚︿负绌挎杞﹂璁¤矾寰勶紝濡倄鍜寉璺緞鏄┛姊溅棰勮璺緞锛屽垯杩斿洖灏忚溅鍙�
-						this.currentLevShuttleList.forEach((item,idx) => {
-							if (item.moveAdvancePath != null) {
-								item.moveAdvancePath.forEach((path,index) => {
-									if (path.x === x && path.y === y) {
-										return item.shuttleNo;
-									}
-								})
-							}
-						})
-						let shuttleList = this.currentLevShuttleList;
-						for (var i = 0; i < shuttleList.length; i++) {
-							let shuttle = shuttleList[i]
-							let moveAdvancePath = shuttle.moveAdvancePath
-							if (moveAdvancePath != null) {
-								for (var j = 0; j < moveAdvancePath.length; j++) {
-									let path = moveAdvancePath[j]
-									if (path.x-1 === x && path.y === y) {//璺緞绗﹀悎
-										return shuttle.shuttleNo;//杩斿洖灏忚溅鍙�
-									}
-								}
+					setCodeData(res) {
+						if(res.code === 200){
+							let data = JSON.parse(res.data)
+							if (data.length <= 5) {
+								this.codeList1 = data;
+							} else {
+								this.codeList1 = data.slice(0, 5);
+								this.codeList2 = data.splice(5, 10);
 							}
 						}
-						return null;
+					},
+					getDeviceNo(obj) {
+						if (this.isJson(obj)) {
+							let data = JSON.parse(obj)
+							if (data.deviceNo == null || data.deviceNo == undefined) {
+								return -1;
+							}
+							return data.deviceNo;
+						}else {
+							return -1;
+						}
+					},
+					getTrackSiteNo(obj) {
+						if (this.isJson(obj)) {
+							let data = JSON.parse(obj)
+							if (data.trackSiteNo == null || data.trackSiteNo == undefined) {
+								return -1;
+							}
+							return data.trackSiteNo;
+						}else {
+							return -1;
+						}
+					},
+					isJson(str) {
+						try {
+							JSON.parse(str);
+							return true;
+						} catch (e) {
+							return false;
+						}
 					}
 				}
 			})

--
Gitblit v1.9.1