From 7c32ab19d3bf4c601212314a1617bbb51c5fdd2a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 三月 2024 16:01:36 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx |   66 +++++++++++++++++++++++++-------
 1 files changed, 51 insertions(+), 15 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 aa3a476..6b5e680 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';
@@ -43,34 +44,69 @@
 
 let shelfThree;
 
+const startThree = (dom) => {
+    shelfThree = new ShelfThree(dom);
+    shelfThree.startup();
+}
+
+const endThree = () => {
+    if (shelfThree) {
+        shelfThree.destroy();
+        shelfThree = null;
+    }
+}
+
 const ShelfView = (props) => {
     const intl = useIntl();
     const { styles } = useStyles();
     const refContainer = useRef();
     const [loading, setLoading] = React.useState(false);
 
-    const startThree = () => {
-        shelfThree = new ShelfThree(refContainer.current);
-        shelfThree.startup();
-    }
-
-    const endThree = () => {
-        if (shelfThree) {
-            shelfThree.destroy();
-            shelfThree = null;
-        }
-    }
+    const [shelfList, setShelfList] = React.useState([]);
+    const [curLocNo, setCurLocNo] = React.useState(props.locNo);
 
     useEffect(() => {
-        setLoading(true);
+        setCurLocNo(props.locNo)
         endThree();
+        setLoading(true);
+
+        const fetchShelfInfo = async (locNo) => {
+            const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
+            if (res?.data && shelfThree) {
+                shelfThree.generateMesh((addObject) => {
+                    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',
+                        }));
+                        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.position.set(0, 70 + 100 * (lev - 1), 0);
+                        addObject(palletMesh)
+                    }
+                });
+            }
+        }
+
         setTimeout(() => {
+            startThree(refContainer.current);
+
+            shelfThree.handleClick = (str) => {
+                console.log(str);
+            }
+
+            fetchShelfInfo(props.locNo);
             setLoading(false);
-            startThree();
         }, 300)
 
         return endThree;
-    }, [props.data.uuid]);
+    }, [props.data.uuid, props.locNo]);
 
     return (
         <>
@@ -95,7 +131,7 @@
                                 {
                                     key: '1',
                                     label: intl.formatMessage({ id: 'map.loc.no', defaultMessage: '搴撲綅鍙�' }),
-                                    children: props.locNo,
+                                    children: curLocNo,
                                 },
                                 {
                                     key: '2',

--
Gitblit v1.9.1