From 8ef2bb5e46d84594e6ed632c07ea0b47a1bf6c4d Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 11 十二月 2024 16:15:17 +0800
Subject: [PATCH] #path similarity

---
 zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx |   62 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 17 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 a6b460b..ee7ac25 100644
--- a/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
+++ b/zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
@@ -7,6 +7,7 @@
 import * as Utils from '../../utils'
 import Http from '@/utils/http';
 import ShelfThree from './shelfThree'
+import BoolValueIcon from '@/components/BoolValueIcon';
 
 const useStyles = createStyles(({ token, css }) => {
     return {
@@ -56,31 +57,43 @@
     }
 }
 
-const fetchShelfInfo = async (locNo) => {
-    const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
+const fetchShelfGroup = async (locNo) => {
+    const res = await Http.doGet('/api/map/shelf/group', { locNo: locNo });
     if (res?.data && shelfThree) {
         shelfThree.generateMesh((loader, addObject) => {
             const promises = [];
+            const singleHeight = 123;
             for (const item of res.data) {
                 const { lev } = Utils.parseLocNo(item.locNo);
                 promises.push(new Promise((resolve) => {
-                    loader.load('model/04.fbx', (mesh) => {
-                        mesh.position.set(0, 123 * (lev - 1), 0);
+                    loader.load('model/shelf.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.visible = false;
-                                    child.material.color.set(0xE8B67E);
-                                }
                                 if (child.name === '璐ф灦') {
-                                    // child.visible = false;
                                     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 = false;
+                                    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;
@@ -95,6 +108,7 @@
 
             Promise.all(promises).then(() => {
                 shelfThree.setNewSelectedMesh(locNo);
+                shelfThree.rePerspective(singleHeight * res.data.length, 500);
             }).catch(error => {
                 console.error(error);
             });
@@ -109,6 +123,7 @@
 
     const { data, curFloor, curLocNo, setCurLocNo } = props;
     const [loading, setLoading] = React.useState(false);
+    const [info, setInfo] = React.useState(null);
 
     useEffect(() => {
         // init curLocNo
@@ -123,12 +138,25 @@
             shelfThree.handleClick = (objName) => {
                 setCurLocNo(objName);
             };
-            fetchShelfInfo(originLocNo);
+            fetchShelfGroup(originLocNo);
             setLoading(false);
         }, 300)
 
         return endThree;
     }, [data]);
+
+    useEffect(() => {
+        if (!curLocNo) {
+            return;
+        }
+        const fetchShelfInfo = async (locNo) => {
+            const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
+            if (res?.data) {
+                setInfo(res.data);
+            }
+        }
+        fetchShelfInfo(curLocNo);
+    }, [curLocNo])
 
     return (
         <>
@@ -151,22 +179,22 @@
                         items={
                             [
                                 {
-                                    key: '1',
                                     label: intl.formatMessage({ id: 'map.loc.no', defaultMessage: '搴撲綅鍙�' }),
                                     children: curLocNo,
                                 },
                                 {
-                                    key: '2',
+                                    label: intl.formatMessage({ id: 'map.loc.sts', defaultMessage: '搴撲綅鐘舵��' }),
+                                    children: info?.locSts,
+                                },
+                                {
                                     label: intl.formatMessage({ id: 'map.pallet.barcode', defaultMessage: '鎵樼洏鏉$爜' }),
-                                    children: '80000010',
+                                    children: info?.zpallet,
                                 },
                                 {
-                                    key: '3',
                                     label: intl.formatMessage({ id: 'map.is.enable', defaultMessage: '鏄惁鍚敤' }),
-                                    children: 'Disabled',
+                                    children: <BoolValueIcon value={info?.enable} />,
                                 },
                                 {
-                                    key: '4',
                                     label: intl.formatMessage({ id: 'map.loc.operation', defaultMessage: '搴撲綅鎿嶄綔' }),
                                     children: (
                                         <>

--
Gitblit v1.9.1