From da407d4525cd6ea211d952fc2fd96f5ba30510e8 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 27 十一月 2024 15:43:28 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/insight/shelf/ShelfMain.jsx | 151 +++++++++++++++++++++++++-------------------------
1 files changed, 76 insertions(+), 75 deletions(-)
diff --git a/zy-acs-flow/src/map/insight/shelf/ShelfMain.jsx b/zy-acs-flow/src/map/insight/shelf/ShelfMain.jsx
index 7c93b4c..545c0bf 100644
--- a/zy-acs-flow/src/map/insight/shelf/ShelfMain.jsx
+++ b/zy-acs-flow/src/map/insight/shelf/ShelfMain.jsx
@@ -15,77 +15,6 @@
import { grey } from '@mui/material/colors';
import ConfirmButton from '../../../page/components/ConfirmButton';
-let shelfThree;
-
-const startThree = (dom) => {
- shelfThree = new ShelfThree(dom);
- shelfThree.startup();
-}
-
-const endThree = () => {
- if (shelfThree) {
- shelfThree.destroy();
- shelfThree = null;
- }
-}
-
-const renderThree = (info, curLocNo) => {
- if (info && shelfThree) {
- shelfThree.generateMesh((loader, addObject) => {
- const promises = [];
- const singleHeight = 123;
- for (const item of info) {
- const { lev } = item;
- promises.push(new Promise((resolve) => {
- 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((child) => {
- if (child.isMesh) {
- switch (child.name) {
- case '璐ф灦':
- child.material.color.set(0x4680BF);
- break;
- case '鎵樼洏':
- child.visible = item.locStsEl === 'STOCK' || item.locStsEl === 'PAKOUT';
- child.material.color.set(0xBEBEBE);
- break;
- case '涓嶈鍒�':
- child.visible = item.locStsEl === 'STOCK' || item.locStsEl === 'PAKOUT';
- child.material.color.set(0xE8B67E);
- break;
- default:
- break;
- }
- child.name = item.locNo
- child.castShadow = true;
- child.receiveShadow = true;
- }
- });
- addObject(mesh);
- resolve();
- })
- }));
-
- }
-
- Promise.all(promises).then(() => {
- if (shelfThree) {
- if (typeof shelfThree.setNewSelectedMesh === 'function') {
- shelfThree.setNewSelectedMesh(curLocNo);
- }
- if (typeof shelfThree.rePerspective === 'function') {
- shelfThree.rePerspective(singleHeight * info.length, 500);
- }
- }
- }).catch(error => {
- console.error(error);
- });
- })
- }
-}
-
const ShelfMain = (props) => {
const { row, bay, curLocNo, curShelfInfo: info, setCurLocNo } = props;
const translate = useTranslate();
@@ -96,20 +25,92 @@
const [selectedLoc, setSelectedLoc] = useState(null); // loc obj
const [loading, setLoading] = useState(true);
+ const shelfThreeRef = useRef(null);
+
+ const startThree = (dom) => {
+ if (shelfThreeRef.current) {
+ shelfThreeRef.current.destroy();
+ }
+ shelfThreeRef.current = new ShelfThree(dom);
+ shelfThreeRef.current.startup();
+ };
+
+ const endThree = () => {
+ if (shelfThreeRef.current) {
+ shelfThreeRef.current.destroy();
+ shelfThreeRef.current = null;
+ }
+ };
+
+ const renderThree = (info, curLocNo) => {
+ if (info && shelfThreeRef.current) {
+ shelfThreeRef.current.generateMesh((loader, addObject) => {
+ const promises = [];
+ const singleHeight = 123;
+ for (const item of info) {
+ const { lev } = item;
+ promises.push(new Promise((resolve) => {
+ 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((child) => {
+ if (child.isMesh) {
+ switch (child.name) {
+ case '璐ф灦':
+ child.material.color.set(0x4680BF);
+ break;
+ case '鎵樼洏':
+ child.visible = item.locStsEl === 'STOCK' || item.locStsEl === 'PAKOUT';
+ child.material.color.set(0xBEBEBE);
+ break;
+ case '涓嶈鍒�':
+ child.visible = item.locStsEl === 'STOCK' || item.locStsEl === 'PAKOUT';
+ child.material.color.set(0xE8B67E);
+ break;
+ default:
+ break;
+ }
+ child.name = item.locNo;
+ child.castShadow = true;
+ child.receiveShadow = true;
+ }
+ });
+ addObject(mesh);
+ resolve();
+ });
+ }));
+ }
+
+ Promise.all(promises).then(() => {
+ if (shelfThreeRef.current) {
+ if (typeof shelfThreeRef.current.setNewSelectedMesh === 'function') {
+ shelfThreeRef.current.setNewSelectedMesh(curLocNo);
+ }
+ if (typeof shelfThreeRef.current.rePerspective === 'function') {
+ shelfThreeRef.current.rePerspective(singleHeight * info.length, 500);
+ }
+ }
+ }).catch(error => {
+ console.error(error);
+ });
+ });
+ }
+ };
+
useEffect(() => {
if (info) {
setSelectedLoc(info[0]);
- endThree();
setLoading(true);
setTimeout(() => {
startThree(containerRef.current);
- shelfThree.handleClick = (objName) => {
+ shelfThreeRef.current.handleClick = (objName) => {
setCurLocNo(objName);
setSelectedLoc(info.find(loc => objName === loc.locNo));
};
renderThree(info, curLocNo);
setLoading(false);
- }, 200)
+ }, 200);
}
return endThree;
}, [info]);
@@ -127,7 +128,7 @@
notify.success(translate('common.response.fail'));
console.error(`Error: ${error.message}`);
});
- }
+ };
return (
<Box display="flex" height="100%">
--
Gitblit v1.9.1