#
luxiaotao1123
2024-03-29 7c32ab19d3bf4c601212314a1617bbb51c5fdd2a
#
2个文件已修改
34 ■■■■■ 已修改文件
zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
@@ -57,7 +57,7 @@
    initScene = () => {
        const scene = new THREE.Scene();
        // scene.background = new THREE.Color(0xf0f0f0);
        // scene.background = new THREE.Color(0x333333);
        scene.background = new THREE.Color(0x333333);
        if (help) {
            scene.add(new THREE.AxesHelper(1000));
        }
@@ -126,10 +126,9 @@
        const raycaster = new THREE.Raycaster();
        const mouse = new THREE.Vector2();
        this.dom.addEventListener("click", (event) => {
            this.handleClick("null");
        })
        this.dom.addEventListener("dblclick", (event) => {
        })
        this.dom.addEventListener("click", (event) => {
            let x, y;
            if (event.changedTouches) {
                x = event.changedTouches[0].pageX;
@@ -139,34 +138,27 @@
                y = event.clientY;
            }
            event.preventDefault();
            // mouse.x = (x / this.getFullWidth()) * 2 - 1;
            // mouse.y = -(y / this.getFullHeight()) * 2 + 1;
            mouse.x = (x / window.innerWidth) * 2 - 1;
            mouse.y = -(y / window.innerHeight) * 2 + 1;
            raycaster.setFromCamera(mouse, that.camera);
            let intersects = raycaster.intersectObjects(that.objects, true);
            console.log(intersects);
            if (intersects.length === 0) {
                this.handleClick("null");
                return;
            }
            let objName = intersects[0].object.name;
            if (objName.startsWith("locNo")) {
                if (this.handleClick) {
                    this.handleClick(objName, x, y);
                }
            } else {
                this.handleClick("null");
            }
        }, false);
    }
    generateMesh = (fn) => {
        fn(this.scene);
    }
    handleClick = () => {
        fn(this.addObject);
    }
    destroy = () => {
zy-asrs-flow/src/pages/map/drawer/shelf/view.jsx
@@ -73,23 +73,22 @@
        const fetchShelfInfo = async (locNo) => {
            const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo });
            if (res?.data && shelfThree) {
                shelfThree.generateMesh((scene) => {
                shelfThree.generateMesh((addObject) => {
                    for (const item of res.data) {
                        const { row, bay, lev } = Utils.parseLocNo(item.locNo);
                        console.log(row, bay, lev);
                        // 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);
                        scene.add(shelfMesh)
                        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);
                        scene.add(palletMesh)
                        addObject(palletMesh)
                    }
                });
            }
@@ -97,6 +96,11 @@
        setTimeout(() => {
            startThree(refContainer.current);
            shelfThree.handleClick = (str) => {
                console.log(str);
            }
            fetchShelfInfo(props.locNo);
            setLoading(false);
        }, 300)