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 |  133 +++++++++++++++++++++++++++-----------------
 1 files changed, 81 insertions(+), 52 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 ba47e3c..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';
@@ -16,7 +17,7 @@
         },
         threeInfo: {
             height: '100%',
-            width: '50%',
+            width: '60%',
         },
         spinWrapper: {
             height: '100%',
@@ -28,14 +29,32 @@
         },
         tableInfo: {
             height: '100%',
-            width: '50%',
+            width: '40%',
             padding: '0 10px 0 15px',
             overflow: 'auto',
+        },
+        tableButton: {
+            width: '100%',
+            marginBottom: '10px',
+            fontWeight: 'bold',
+            letterSpacing: '1px',
         }
     }
 })
 
 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();
@@ -43,28 +62,51 @@
     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 (
         <>
@@ -88,48 +130,35 @@
                             [
                                 {
                                     key: '1',
-                                    label: 'Product',
-                                    children: 'Cloud Database',
+                                    label: intl.formatMessage({ id: 'map.loc.no', defaultMessage: '搴撲綅鍙�' }),
+                                    children: curLocNo,
                                 },
                                 {
                                     key: '2',
-                                    label: 'Billing Mode',
-                                    children: 'Prepaid',
-                                },
-                                {
-                                    key: '1',
-                                    label: 'Product',
-                                    children: 'Cloud Database',
-                                },
-                                {
-                                    key: '2',
-                                    label: 'Billing Mode',
-                                    children: 'Prepaid',
-                                },
-                                {
-                                    key: '1',
-                                    label: 'Product',
-                                    children: 'Cloud Database',
-                                },
-                                {
-                                    key: '2',
-                                    label: 'Billing Mode',
-                                    children: 'Prepaid',
-                                },
-                                {
-                                    key: '1',
-                                    label: 'Product',
-                                    children: 'Cloud Database',
-                                },
-                                {
-                                    key: '2',
-                                    label: 'Billing Mode',
-                                    children: 'Prepaid',
+                                    label: intl.formatMessage({ id: 'map.pallet.barcode', defaultMessage: '鎵樼洏鏉$爜' }),
+                                    children: '80000010',
                                 },
                                 {
                                     key: '3',
-                                    label: 'Automatic Renewal',
-                                    children: <Button> submit</Button>,
+                                    label: intl.formatMessage({ id: 'map.is.enable', defaultMessage: '鏄惁鍚敤' }),
+                                    children: 'Disabled',
+                                },
+                                {
+                                    key: '4',
+                                    label: intl.formatMessage({ id: 'map.loc.operation', defaultMessage: '搴撲綅鎿嶄綔' }),
+                                    children: (
+                                        <>
+                                            <Button className={styles.tableButton} size='large' type="primary" danger>
+                                                <FormattedMessage id='map.loc.lock' defaultMessage='閿佸畾' />
+                                            </Button>
+                                            <Button className={styles.tableButton} size='large' disabled>
+                                                <FormattedMessage id='map.loc.unlock' defaultMessage='瑙i攣' />
+                                            </Button>
+                                            <Button className={styles.tableButton} size='large'>
+                                                <FormattedMessage id='map.loc.reset' defaultMessage='娓呴櫎搴撲綅' />
+                                            </Button>
+                                        </>
+                                    )
                                 },
                             ]
                         }

--
Gitblit v1.9.1