From 2fb2947a3b2a487d7205e106dd6bdad37493d43f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 三月 2024 15:11:04 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js |   30 +-------------
 zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx      |   41 ++++++++++++++------
 2 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
index 52f2d8a..d78e531 100644
--- a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
+++ b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
@@ -24,7 +24,6 @@
         initLight(this.scene);
 
         this.animate();
-        this.build();
     }
 
     animate = () => {
@@ -162,9 +161,8 @@
         }, false);
     }
 
-    build = () => {
-        buildShelf(this.scene);
-        buildPallet(this.scene);
+    generateMesh = (fn) => {
+        fn(this.scene);
     }
 
     handleClick = () => {
@@ -232,26 +230,4 @@
     if (help) {
         scene.add(new THREE.SpotLightHelper(spotLight));
     }
-}
-
-const buildShelf = (scene) => {
-    const boxGeometry = new THREE.BoxGeometry(100, 40, 100);
-    const boxMaterial = new THREE.MeshStandardMaterial({
-        color: '#222f3e',
-    });
-    const boxMesh = new THREE.Mesh(boxGeometry, boxMaterial);
-    boxMesh.position.set(0, 20, 0);
-    scene.add(boxMesh)
-    return boxMesh;
-}
-
-const buildPallet = (scene) => {
-    const boxGeometry = new THREE.BoxGeometry(100, 60, 100);
-    const boxMaterial = new THREE.MeshStandardMaterial({
-        color: '#b33939',
-    });
-    const boxMesh = new THREE.Mesh(boxGeometry, boxMaterial);
-    boxMesh.position.set(0, 70, 0);
-    scene.add(boxMesh)
-    return boxMesh;
-}
+}
\ No newline at end of file
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 94cd383..8688226 100644
--- a/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
+++ b/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
@@ -1,4 +1,5 @@
 import React, { useState, useRef, useEffect } from 'react';
+import * as THREE from 'three'
 import { Spin, Descriptions, Button } from 'antd';
 import { FormattedMessage, useIntl, useModel } from '@umijs/max';
 import { LoadingOutlined } from '@ant-design/icons';
@@ -62,29 +63,45 @@
     const [loading, setLoading] = React.useState(false);
 
     const [shelfList, setShelfList] = React.useState([]);
-
-
+    const [curLocNo, setCurLocNo] = React.useState(props.locNo);
 
     useEffect(() => {
-        // locNo data
+        setCurLocNo(props.locNo)
+        endThree();
+        setLoading(true);
+
         const fetchShelfInfo = async (locNo) => {
             const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
-            if (res?.data) {
-                console.log(res.data);
+            if (res?.data && shelfThree) {
+                shelfThree.generateMesh((scene) => {
+                    for (const item of res.data) {
+                        console.log(item);
+                        // shelf
+                        const shelfMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 40, 100), new THREE.MeshStandardMaterial({
+                            color: '#222f3e',
+                        }));
+                        shelfMesh.position.set(0, 20, 0);
+                        scene.add(shelfMesh)
+
+                        // pallet
+                        const palletMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 60, 100), new THREE.MeshStandardMaterial({
+                            color: '#b33939',
+                        }));
+                        palletMesh.position.set(0, 70, 0);
+                        scene.add(palletMesh)
+                    }
+                });
             }
         }
-        fetchShelfInfo(props.locNo);
 
-        // 3d
-        setLoading(true);
-        endThree();
         setTimeout(() => {
-            setLoading(false);
             startThree(refContainer.current);
+            fetchShelfInfo(props.locNo);
+            setLoading(false);
         }, 300)
 
         return endThree;
-    }, [props.data.uuid]);
+    }, [props.data.uuid, props.locNo]);
 
     return (
         <>
@@ -109,7 +126,7 @@
                                 {
                                     key: '1',
                                     label: intl.formatMessage({ id: 'map.loc.no', defaultMessage: '搴撲綅鍙�' }),
-                                    children: props.locNo,
+                                    children: curLocNo,
                                 },
                                 {
                                     key: '2',

--
Gitblit v1.9.1