From 9d0acfb65c80c4948c305ca01338f894b87346a0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 08 四月 2024 09:44:37 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack

---
 zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx |   71 ++++++++++++++++++++++++++---------
 1 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx b/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
index 3a2e75f..d020f2a 100644
--- a/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
+++ b/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
@@ -59,26 +59,59 @@
 const fetchShelfInfo = async (locNo) => {
     const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
     if (res?.data && shelfThree) {
-        shelfThree.generateMesh((addObject) => {
+        shelfThree.generateMesh((loader, addObject) => {
+            const promises = [];
+            const singleHeight = 123;
             for (const item of res.data) {
-                const { row, bay, lev } = Utils.parseLocNo(item.locNo);
-                // shelf
-                const shelfMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 40, 100), new THREE.MeshStandardMaterial({
-                    color: '#006266',
+                const { lev } = Utils.parseLocNo(item.locNo);
+                promises.push(new Promise((resolve) => {
+                    loader.load('model/04.fbx', (mesh) => {
+                        mesh.position.set(0, singleHeight * (lev - 1), 0);
+                        mesh.scale.set(5, 5, 5);
+                        mesh.name = item.locNo;
+                        mesh.traverse(function (child) {
+                            if (child.isMesh) {
+                                if (child.name === '璐ф灦') {
+                                    child.material.color.set(0x4680BF);
+                                }
+                                let palletVisible = true, cargoVisible = true;
+                                switch (item.locSts) {
+                                    case 'D':
+                                        cargoVisible = false;
+                                        break;
+                                    case 'O':
+                                        palletVisible = false;
+                                        cargoVisible = false;
+                                        break;
+                                    default:
+                                        break;
+                                }
+                                if (child.name === '鎵樼洏') {
+                                    child.visible = palletVisible;
+                                    child.material.color.set(0xBEBEBE);
+                                }
+                                if (child.name === '涓嶈鍒�') {
+                                    child.visible = cargoVisible;
+                                    child.material.color.set(0xE8B67E);
+                                }
+                                child.name = item.locNo
+                                child.castShadow = true;
+                                child.receiveShadow = true;
+                            }
+                        });
+                        addObject(mesh);
+                        resolve();
+                    })
                 }));
-                shelfMesh.name = item.locNo;
-                shelfMesh.position.set(0, 20 + 100 * (lev - 1), 0);
-                addObject(shelfMesh)
-
-                // pallet
-                const palletMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 60, 100), new THREE.MeshStandardMaterial({
-                    color: '#2c2c54',
-                }));
-                palletMesh.name = item.locNo;
-                palletMesh.position.set(0, 70 + 100 * (lev - 1), 0);
-                addObject(palletMesh)
             }
-        });
+
+            Promise.all(promises).then(() => {
+                shelfThree.setNewSelectedMesh(locNo);
+                shelfThree.rePerspective(singleHeight * res.data.length);
+            }).catch(error => {
+                console.error(error);
+            });
+        })
     }
 }
 
@@ -102,8 +135,8 @@
             startThree(refContainer.current);
             shelfThree.handleClick = (objName) => {
                 setCurLocNo(objName);
-            }
-            fetchShelfInfo(originLocNo);   // curLoc鏇存柊涓嶅強鏃�
+            };
+            fetchShelfInfo(originLocNo);
             setLoading(false);
         }, 300)
 

--
Gitblit v1.9.1