| | |
| | | console.log("RFIDæ°æ®æ å°:", rfidDataMap); |
| | | |
| | | // æ´æ°è´§ä½æ°æ®ï¼å°RFIDä¿¡æ¯åå¹¶å°å¯¹åºçè´§ä½å¯¹è±¡ä¸ |
| | | |
| | | // å¤ç第1ææ°æ® |
| | | if (this.locationData.row1) { |
| | | this.locationData.row1.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | const rfidInfo = rfidDataMap[location.locationCode]; |
| | | if (rfidInfo) { |
| | | // æ´æ°è´§ä½å¯¹è±¡çåæ®µ |
| | | location.paperRoll = rfidInfo.paperRoll; |
| | | location.productName = rfidInfo.productName; // æ°å¢æååç§°åæ®µ |
| | | location.width = rfidInfo.width; |
| | | location.quantity = rfidInfo.quantity; // æ°å¢æåæ°éåæ®µ |
| | | location.barcode = rfidInfo.barcode; |
| | | location.rfid = rfidInfo.rfid; |
| | | location.rfidCode = rfidInfo.rfidCode; // æ°å¢rfidCodeåæ®µ |
| | | location.status = rfidInfo.status; |
| | | location.inDate = rfidInfo.inDate; |
| | | // æ´æ°rfidDataæ å°ï¼ä¿æååå
¼å®¹ï¼ |
| | | this.rfidData[location.locationCode] = rfidInfo.rfid || rfidInfo.rfidCode; // 使ç¨rfidærfidCodeä½ä¸ºæçå· |
| | | } |
| | | // éåææææ°æ®ï¼row1årow2ï¼ |
| | | Object.values(this.locationData).forEach(rowData => { |
| | | if (rowData && rowData.length > 0) { |
| | | rowData.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | const rfidInfo = rfidDataMap[location.locationCode]; |
| | | if (rfidInfo) { |
| | | // æ´æ°è´§ä½å¯¹è±¡çåæ®µ |
| | | location.paperRoll = rfidInfo.paperRoll; |
| | | location.productName = rfidInfo.productName; // æ°å¢æååç§°åæ®µ |
| | | location.width = rfidInfo.width; |
| | | location.quantity = rfidInfo.quantity; // æ°å¢æåæ°éåæ®µ |
| | | location.barcode = rfidInfo.barcode; |
| | | location.rfid = rfidInfo.rfid; |
| | | location.rfidCode = rfidInfo.rfidCode; // æ°å¢rfidCodeåæ®µ |
| | | location.status = rfidInfo.status; |
| | | location.inDate = rfidInfo.inDate; |
| | | // æ´æ°rfidDataæ å°ï¼ä¿æååå
¼å®¹ï¼ |
| | | this.rfidData[location.locationCode] = rfidInfo.rfid || rfidInfo.rfidCode; // 使ç¨rfidærfidCodeä½ä¸ºæçå· |
| | | } |
| | | }); |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // å¤ç第2ææ°æ® |
| | | if (this.locationData.row2) { |
| | | this.locationData.row2.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | const rfidInfo = rfidDataMap[location.locationCode]; |
| | | if (rfidInfo) { |
| | | // æ´æ°è´§ä½å¯¹è±¡çåæ®µ |
| | | location.paperRoll = rfidInfo.paperRoll; |
| | | location.productName = rfidInfo.productName; // æ°å¢æååç§°åæ®µ |
| | | location.width = rfidInfo.width; |
| | | location.quantity = rfidInfo.quantity; // æ°å¢æåæ°éåæ®µ |
| | | location.barcode = rfidInfo.barcode; |
| | | location.rfid = rfidInfo.rfid; |
| | | location.rfidCode = rfidInfo.rfidCode; // æ°å¢rfidCodeåæ®µ |
| | | location.status = rfidInfo.status; |
| | | location.inDate = rfidInfo.inDate; |
| | | // æ´æ°rfidDataæ å°ï¼ä¿æååå
¼å®¹ï¼ |
| | | this.rfidData[location.locationCode] = rfidInfo.rfid || rfidInfo.rfidCode; // 使ç¨rfidærfidCodeä½ä¸ºæçå· |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | console.log("æ´æ°åçè´§ä½æ°æ®:", this.locationData); |
| | | } else { |
| | |
| | | }, |
| | | |
| | | GetViewData() { |
| | | var _this = this; |
| | | |
| | | this.loading = true; |
| | | this.rfidData = {}; // æ¸
空ä¹åçRFIDæ°æ® |
| | | this.locationData = { row1: [], row2: [] }; // åå§åæ°çæ°æ®ç»æ |
| | |
| | | console.log(`å½åéæ©çä»åº: ${this.Area.warehouse}, 对åºçwarehouseId: ${warehouseId}`); |
| | | } |
| | | |
| | | console.log(`è°ç¨GetLocationStatus API: roadwayNo=${_this.Area.roadwayNo}, warehouseId=${warehouseId}`); |
| | | console.log(`è°ç¨GetLocationStatus API: roadwayNo=${this.Area.roadwayNo}, warehouseId=${warehouseId}`); |
| | | |
| | | this.http |
| | | .post(`/api/LocationInfo/GetLocationStatus?roadwayNo=${_this.Area.roadwayNo}&warehouseId=${warehouseId}`, {}, "æ¥è¯¢ä¸") |
| | | .post(`/api/LocationInfo/GetLocationStatus?roadwayNo=${this.Area.roadwayNo}&warehouseId=${warehouseId}`, {}, "æ¥è¯¢ä¸") |
| | | .then((x) => { |
| | | console.log("GetLocationStatus APIè¿åç»æ:", x); |
| | | if (x.data) { |
| | |
| | | // æå±å·ä»é«å°ä½æåº |
| | | rowData.sort((a, b) => parseInt(b.layer) - parseInt(a.layer)); |
| | | |
| | | // ç¡®å®æå¤§åæ°ï¼å设æ¯64åï¼ä»01-64ï¼ |
| | | const maxColumns = 64; |
| | | |
| | | // å¤çæ¯å±æ°æ® |
| | | rowData.forEach(layer => { |
| | | // 对æ¯å±å
çè´§ä½æåå·ä»åå°åæåºï¼01-64ï¼ |
| | | // 对æ¯å±å
çè´§ä½æåå·ä»åå°åæåº |
| | | layer.locationObj.sort((a, b) => { |
| | | // ç¡®ä¿åå·ææ°åé¡ºåºæå |
| | | const colA = parseInt(a.column); |
| | |
| | | return colA - colB; |
| | | }); |
| | | |
| | | // åå»ºå®æ´çåæ°ç» |
| | | // æ¾åºè¯¥å±å®é
åå¨çæå¤§åå· |
| | | let maxActualColumns = 0; |
| | | layer.locationObj.forEach(loc => { |
| | | const colNum = parseInt(loc.column); |
| | | if (colNum > maxActualColumns) { |
| | | maxActualColumns = colNum; |
| | | } |
| | | }); |
| | | |
| | | // åå»ºå®æ´çåæ°ç»ï¼åªæ¾ç¤ºå°å®é
çæå¤§åæ° |
| | | const completeColumns = []; |
| | | |
| | | // å½åå·²æçè´§ä½ï¼æåå·æ å° |
| | |
| | | existingLocations[parseInt(loc.column)] = loc; |
| | | }); |
| | | |
| | | // éåææå¯è½çåå·ï¼1-64ï¼ |
| | | for (let col = 1; col <= maxColumns; col++) { |
| | | // éåææå¯è½çåå·ï¼1å°å®é
æå¤§åæ°ï¼ |
| | | for (let col = 1; col <= maxActualColumns; col++) { |
| | | if (existingLocations[col]) { |
| | | // å¦æè¯¥åæè´§ä½æ°æ®ï¼ç´æ¥ä½¿ç¨ |
| | | completeColumns.push(existingLocations[col]); |
| | |
| | | ensureColumnsAlignment(this.locationData.row2); |
| | | } |
| | | |
| | | // æåææè´§ä½ç¼å· |
| | | let locationCodes = []; |
| | | |
| | | // æå第1æè´§ä½ç¼å· |
| | | if (this.locationData.row1) { |
| | | this.locationData.row1.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | locationCodes.push(location.locationCode); |
| | | // åå§åæ¯ä¸ªè´§ä½çRFIDç¸å
³å段 |
| | | if (!location.paperRoll) location.paperRoll = "æ "; |
| | | if (!location.productName) location.productName = "æ "; |
| | | if (!location.width) location.width = 0; |
| | | if (!location.quantity) location.quantity = 0; |
| | | if (!location.barcode) location.barcode = "æ "; |
| | | if (!location.rfid) location.rfid = "æ "; |
| | | if (!location.rfidCode) location.rfidCode = "æ "; |
| | | if (!location.inDate) location.inDate = null; |
| | | // æåææè´§ä½ç¼å·ååå§åè´§ä½å段 |
| | | const locationCodes = []; |
| | | // éåææææ°æ®ï¼row1årow2ï¼ |
| | | Object.values(this.locationData).forEach(rowData => { |
| | | if (rowData && rowData.length > 0) { |
| | | rowData.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | locationCodes.push(location.locationCode); |
| | | // åå§åæ¯ä¸ªè´§ä½çRFIDç¸å
³å段 |
| | | if (!location.paperRoll) location.paperRoll = "æ "; |
| | | if (!location.productName) location.productName = "æ "; |
| | | if (!location.width) location.width = 0; |
| | | if (!location.quantity) location.quantity = 0; |
| | | if (!location.barcode) location.barcode = "æ "; |
| | | if (!location.rfid) location.rfid = "æ "; |
| | | if (!location.rfidCode) location.rfidCode = "æ "; |
| | | if (!location.inDate) location.inDate = null; |
| | | }); |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // æå第2æè´§ä½ç¼å· |
| | | if (this.locationData.row2) { |
| | | this.locationData.row2.forEach(layer => { |
| | | layer.locationObj.forEach(location => { |
| | | locationCodes.push(location.locationCode); |
| | | // åå§åæ¯ä¸ªè´§ä½çRFIDç¸å
³å段 |
| | | if (!location.paperRoll) location.paperRoll = "æ "; |
| | | if (!location.productName) location.productName = "æ "; |
| | | if (!location.width) location.width = 0; |
| | | if (!location.quantity) location.quantity = 0; |
| | | if (!location.barcode) location.barcode = "æ "; |
| | | if (!location.rfid) location.rfid = "æ "; |
| | | if (!location.rfidCode) location.rfidCode = "æ "; |
| | | if (!location.inDate) location.inDate = null; |
| | | }); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | console.log(`ä»è´§ä½æ°æ®ä¸æåå°${locationCodes.length}个货ä½ç¼å·`); |
| | | console.log("æåçè´§ä½ç¼å·:", locationCodes); |
| | |
| | | this.currentLocation = location; |
| | | this.showTooltipFlag = true; |
| | | |
| | | // 设置æç¤ºæ¡ä½ç½®ï¼ç¨å¾®åç§»é¿å
鮿¡é¼ æ |
| | | // è·åæç¤ºæ¡å°ºå¯¸ï¼å设åºå®å®½åº¦320pxï¼é«åº¦æ ¹æ®å
容卿ååï¼è¿é使ç¨ä¼°è®¡å¼150pxï¼ |
| | | const tooltipWidth = 320; |
| | | const tooltipHeight = 250; |
| | | |
| | | // è·åå±å¹å°ºå¯¸ |
| | | const screenWidth = window.innerWidth; |
| | | const screenHeight = window.innerHeight; |
| | | |
| | | // 计ç®åå§ä½ç½® |
| | | let x = event.clientX + 10; |
| | | let y = event.clientY + 10; |
| | | |
| | | // è¾¹çæ£æµ - å³ä¾§ |
| | | if (x + tooltipWidth > screenWidth) { |
| | | x = event.clientX - tooltipWidth - 10; |
| | | } |
| | | |
| | | // è¾¹çæ£æµ - åºé¨ |
| | | if (y + tooltipHeight > screenHeight) { |
| | | y = event.clientY - tooltipHeight - 10; |
| | | } |
| | | |
| | | // ç¡®ä¿ä¸è¶
åºå±å¹å·¦ä¾§åé¡¶é¨ |
| | | x = Math.max(10, x); |
| | | y = Math.max(10, y); |
| | | |
| | | // 设置æç¤ºæ¡ä½ç½® |
| | | this.tooltipPosition = { |
| | | x: event.clientX + 10, |
| | | y: event.clientY + 10, |
| | | x: x, |
| | | y: y, |
| | | }; |
| | | }, |
| | | |
| | |
| | | // SC01_YL, 第1æ -> 11ï¼ç¬¬2æ -> 12 |
| | | 'SC01_YL': { |
| | | '01': '11', |
| | | '1': '11', |
| | | '02': '12', |
| | | '2': '12' |
| | | }, |
| | | // SC02_YL, 第1æ -> 21ï¼ç¬¬2æ -> 22 |
| | | 'SC02_YL': { |
| | | '01': '21', |
| | | '1': '21', |
| | | '02': '22', |
| | | '2': '22' |
| | | }, |
| | | // SC03_YLDual, 第1æ -> 31ï¼ç¬¬2æ -> 32 |
| | | 'SC03_YLDual': { |
| | | '01': '31', |
| | | '1': '31', |
| | | '02': '32', |
| | | '2': '32' |
| | | }, |
| | | // SC04_YLDual, 第1æ -> 41ï¼ç¬¬2æ -> 42 |
| | | 'SC04_YLDual': { |
| | | '01': '41', |
| | | '1': '41', |
| | | '02': '42', |
| | | '2': '42' |
| | | }, |
| | | // SC05_YLDual, 第1æ -> 51ï¼ç¬¬2æ -> 52 |
| | | 'SC05_YLDual': { |
| | | '01': '51', |
| | | '1': '51', |
| | | '02': '52', |
| | | '2': '52' |
| | | }, |
| | | // æååºå··éæ å° |
| | | // SC01_CP, 第1æ -> 11ï¼ç¬¬2æ -> 12 |
| | | 'SC01_CP': { |
| | | '01': '11', |
| | | '1': '11', |
| | | '02': '12', |
| | | '2': '12' |
| | | }, |
| | | // SC02_CP, 第1æ -> 21ï¼ç¬¬2æ -> 22 |
| | | 'SC02_CP': { |
| | | '01': '21', |
| | | '1': '21', |
| | | '02': '22', |
| | | '2': '22' |
| | | }, |
| | | // SC03_CP, 第1æ -> 31ï¼ç¬¬2æ -> 32 |
| | | 'SC03_CP': { |
| | | '01': '31', |
| | | '1': '31', |
| | | '02': '32', |
| | | '2': '32' |
| | | }, |
| | | // SC04_CP, 第1æ -> 41ï¼ç¬¬2æ -> 42 |
| | | 'SC04_CP': { |
| | | '01': '41', |
| | | '1': '41', |
| | | '02': '42', |
| | | '2': '42' |
| | | }, |
| | | // SC05_CP, 第1æ -> 51ï¼ç¬¬2æ -> 52 |
| | | 'SC05_CP': { |
| | | '01': '51', |
| | | '1': '51', |
| | | '02': '52', |
| | | '2': '52' |
| | | } |
| | | }; |
| | | |
| | |
| | | if (mainHeight) { |
| | | this.mian_height = mainHeight.offsetHeight - 40 + "px"; |
| | | } |
| | | var _this = this; |
| | | //å è½½ä¸æé项 |
| | | this.http.post("/api/LocationInfo/GetRow", {}, "æ¥è¯¢ä¸").then((x) => { |
| | | //ä¿åææå··é |
| | | _this.allRoadways = x.data; |
| | | this.allRoadways = x.data; |
| | | //æ ¹æ®å½åä»åºç±»åè¿æ»¤å··é |
| | | _this.filterRoadwaysByWarehouse(_this.Area.warehouse); |
| | | if (_this.scList.length > 0) { |
| | | _this.Area.roadwayNo = _this.scList[0]; |
| | | this.filterRoadwaysByWarehouse(this.Area.warehouse); |
| | | if (this.scList.length > 0) { |
| | | this.Area.roadwayNo = this.scList[0]; |
| | | } |
| | | _this.GetViewData(); |
| | | this.GetViewData(); |
| | | }); |
| | | }, |
| | | components: { ElButton } |
| | |
| | | |
| | | .location-view { |
| | | flex: 1; |
| | | width: 470%; |
| | | max-width: 470%; |
| | | overflow: auto; |
| | | width: auto; |
| | | max-width: none; |
| | | overflow: visible; |
| | | padding: 20px; |
| | | background-color: #f5f7fa; |
| | | border-radius: 8px; |
| | | white-space: nowrap; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .row { |
| | |
| | | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
| | | border: 1px solid #ccc; |
| | | background-color: #f9f9f9; |
| | | margin: 0 5px; |
| | | margin: 0 5px 5px 5px; |
| | | } |
| | | |
| | | /* 空å ä½ç¬¦æ ·å¼ */ |
| | |
| | | cursor: default; |
| | | } |
| | | |
| | | /* æ·»å è´§ä½ç½æ ¼å®¹å¨æ ·å¼ï¼ç¡®ä¿ææè¡å¯¹é½ */ |
| | | .roadway-section { |
| | | overflow-x: auto; |
| | | overflow-y: hidden; |
| | | } |
| | | |
| | | .location-cell { |
| | | width: 120px; |
| | | height: 50px; |
| | | text-align: center; |
| | | font-size: 16px; |
| | | border-radius: 4px; |
| | | line-height: 50px; |
| | | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
| | | border: 1px solid #ccc; |
| | | background-color: #f9f9f9; |
| | | margin: 0; |
| | | } |
| | | |
| | | /* å··éåºåæ ·å¼ */ |
| | | .roadway-section { |
| | | margin-bottom: 40px; |
| | |
| | | border-radius: 6px; |
| | | border: 1px solid #eaeaea; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); |
| | | overflow-x: auto; |
| | | overflow-y: hidden; |
| | | } |
| | | |
| | | .roadway-title { |