From e1e1a2d934f6bd630abb67784ba18d38f6bea28e Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期三, 03 十二月 2025 16:53:13 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/watch/console.html |  133 +++++++++++++++++++++++--------------------
 1 files changed, 71 insertions(+), 62 deletions(-)

diff --git a/src/main/webapp/views/watch/console.html b/src/main/webapp/views/watch/console.html
index 8f678de..54ba4b6 100644
--- a/src/main/webapp/views/watch/console.html
+++ b/src/main/webapp/views/watch/console.html
@@ -1,22 +1,24 @@
 <!DOCTYPE html>
 <html lang="en">
-	<head>
-		<meta charset="UTF-8">
-		<title>WCS鎺у埗涓績</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/watch/console_vue.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>
-	</head>
+		<head>
+			<meta charset="UTF-8">
+			<title>WCS鎺у埗涓績</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/watch/console_vue.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>
+		</head>
 	<body>
 		<div id="app">
-			<div style="display: flex;margin-top: 30px;margin-left: 20px;">
-				<div style="width: 20%;height: 60vh;margin-right: 20px;">
+			<div style="display: flex;margin-left: 20px;">
+				<div style="width: 20%;height: 60vh;margin-right: 20px;margin-top: 30px;">
 					<el-tabs type="border-card" v-model="activateCard" @tab-click="handleCardClick">
 						<el-tab-pane label="鍫嗗灈鏈�" name="crn">
 							<watch-crn-card :param="crnParam"></watch-crn-card>
@@ -27,51 +29,18 @@
 						<el-tab-pane label="RGV" name="rgv">
 							<watch-rgv-card :param="rgvParam"></watch-rgv-card>
 						</el-tab-pane>
-						<el-tab-pane label="鍦板浘閰嶇疆" name="mapSetting">
+						<!-- <el-tab-pane label="鍦板浘閰嶇疆" name="mapSetting">
 							<map-setting-card :param="mapSettingParam"></map-setting-card>
-						</el-tab-pane>
+						</el-tab-pane> -->
 					</el-tabs>
 				</div>
+
+				<map-canvas :lev="currentLev" :crn-param="crnParam" :rgv-param="rgvParam" :devp-param="devpParam" @crn-click="openCrn" @station-click="openSite" style="width: 80%; height: 100vh;"></map-canvas>
 
 				<div style="position: absolute;top: 15px;left: 50%;display: flex;">
 					<div v-if="levList.length > 1" v-for="(lev,index) in levList" :key="index" style="margin-right: 10px;">
 						<el-button :type="currentLev == lev ? 'primary' : ''" @click="switchLev(lev)" size="mini">{{ lev }}F</el-button>
 					</div>
-				</div>
-
-				<div id="mapDataId" style="position: relative;margin-top: 50px;" :style="{zoom: mapSettingParam.zoom / 100}">
-					<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-' + getStationId(col.value)" @click="openSite(getStationId(col.value))">{{getStationId(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 track-crn" v-if="getTrackSiteNo(col.value) == -1"></div>
-									<div class="track-item track-crn" v-else :id="'crnTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
-								</div>
-							</td>
-
-						</tr>
-					</table>
 				</div>
 			</div>
 
@@ -81,6 +50,7 @@
 		<script src="../../components/DevpCard.js"></script>
 		<script src="../../components/MapSettingCard.js"></script>
 		<script src="../../components/WatchRgvCard.js"></script>
+		<script src="../../components/MapCanvas.js"></script>
 		<script>
 			var app = new Vue({
 				el: '#app',
@@ -103,10 +73,13 @@
 					},
 					rgvParam: {
 						rgvNo: 0
-					}
+					},
+					locMastData: []//搴撲綅鏁版嵁
 				},
 				created() {
 					this.init()
+				},
+				mounted() {
 				},
 				watch: {
 
@@ -116,13 +89,9 @@
 						this.getMap()
 						this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
 						this.getLevList() //鑾峰彇鍦板浘灞傜骇鍒楄〃
-
-						this.consoleInterval = setInterval(() => {
-							this.getCrnInfo() //鑾峰彇鍫嗗灈鏈烘暟鎹�
-							this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
-							this.getRgvInfo() //鑾峰彇RGV鏁版嵁
-						}, 1000)
+						this.getLocMastData() //鑾峰彇搴撲綅鏁版嵁
 					},
+					
 					getLevList() {
 						let that = this;
 						$.ajax({
@@ -173,6 +142,7 @@
 					switchLev(lev) {
 						this.currentLev = lev;
 						this.getMap()
+						this.getLocMastData()
 					},
 					openCrn(id) {
 						this.crnParam.crnNo = id;
@@ -502,9 +472,48 @@
 					},
 					handleCardClick(tab, event) {
 
+					},
+					//鑾峰彇搴撲綅鏁版嵁
+					getLocMastData() {
+						let that = this;
+						$.ajax({
+							url: baseUrl + "/console/map/locList",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							method: "get",
+							data: {},
+							success: (res) => {
+								if (res.code === 200) {
+									that.locMastData = res.data;
+								}
+							}
+						})
+					},
+					//鏍规嵁鍦板浘鍧愭爣鑾峰彇搴撲綅鐨勬帓鍒椾俊鎭�
+					getShelfLocInfo(rowIdx, colIdx) {
+						if (!this.locMastData || this.locMastData.length === 0) {
+							return '';
+						}
+						// 鍦╨ocMastData涓煡鎵惧尮閰嶇殑搴撲綅
+						// locType瀛楁瀛樺偍鐨勬槸鍦板浘鍧愭爣淇℃伅
+						let locInfo = this.locMastData.find(loc => {
+							if (!loc.locType) return false;
+							// locType鏍煎紡绫讳技 "0-1-1" (mapX-mapY-lev)
+							let parts = loc.locType.split('-');
+							if (parts.length >= 2) {
+								return parseInt(parts[0]) === rowIdx && parseInt(parts[1]) === colIdx;
+							}
+							return false;
+						});
+
+						if (locInfo && locInfo.row1 && locInfo.bay1) {
+							return locInfo.row1 + '-' + locInfo.bay1;
+						}
+						return '';
 					}
 				}
 			})
-		</script>
-	</body>
-</html>
+			</script>
+		</body>
+		</html>

--
Gitblit v1.9.1