| | |
| | | initLight(this.scene); |
| | | |
| | | this.animate(); |
| | | this.build(); |
| | | } |
| | | |
| | | animate = () => { |
| | |
| | | }, false); |
| | | } |
| | | |
| | | build = () => { |
| | | buildShelf(this.scene); |
| | | buildPallet(this.scene); |
| | | generateMesh = (fn) => { |
| | | fn(this.scene); |
| | | } |
| | | |
| | | handleClick = () => { |
| | |
| | | if (help) { |
| | | scene.add(new THREE.SpotLightHelper(spotLight)); |
| | | } |
| | | } |
| | | |
| | | const buildShelf = (scene) => { |
| | | const boxGeometry = new THREE.BoxGeometry(100, 40, 100); |
| | | const boxMaterial = new THREE.MeshStandardMaterial({ |
| | | color: '#222f3e', |
| | | }); |
| | | const boxMesh = new THREE.Mesh(boxGeometry, boxMaterial); |
| | | boxMesh.position.set(0, 20, 0); |
| | | scene.add(boxMesh) |
| | | return boxMesh; |
| | | } |
| | | |
| | | const buildPallet = (scene) => { |
| | | const boxGeometry = new THREE.BoxGeometry(100, 60, 100); |
| | | const boxMaterial = new THREE.MeshStandardMaterial({ |
| | | color: '#b33939', |
| | | }); |
| | | const boxMesh = new THREE.Mesh(boxGeometry, boxMaterial); |
| | | boxMesh.position.set(0, 70, 0); |
| | | scene.add(boxMesh) |
| | | return boxMesh; |
| | | } |
| | |
| | | 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'; |
| | |
| | | const [loading, setLoading] = React.useState(false); |
| | | |
| | | const [shelfList, setShelfList] = React.useState([]); |
| | | |
| | | |
| | | const [curLocNo, setCurLocNo] = React.useState(props.locNo); |
| | | |
| | | useEffect(() => { |
| | | // locNo data |
| | | setCurLocNo(props.locNo) |
| | | endThree(); |
| | | setLoading(true); |
| | | |
| | | const fetchShelfInfo = async (locNo) => { |
| | | const res = await Http.doGet('/api/map/shelf/info', { locNo: locNo }); |
| | | if (res?.data) { |
| | | console.log(res.data); |
| | | } |
| | | } |
| | | fetchShelfInfo(props.locNo); |
| | | if (res?.data && shelfThree) { |
| | | shelfThree.generateMesh((scene) => { |
| | | for (const item of res.data) { |
| | | console.log(item); |
| | | // shelf |
| | | const shelfMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 40, 100), new THREE.MeshStandardMaterial({ |
| | | color: '#222f3e', |
| | | })); |
| | | shelfMesh.position.set(0, 20, 0); |
| | | scene.add(shelfMesh) |
| | | |
| | | // 3d |
| | | setLoading(true); |
| | | endThree(); |
| | | // pallet |
| | | const palletMesh = new THREE.Mesh(new THREE.BoxGeometry(100, 60, 100), new THREE.MeshStandardMaterial({ |
| | | color: '#b33939', |
| | | })); |
| | | palletMesh.position.set(0, 70, 0); |
| | | scene.add(palletMesh) |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | setTimeout(() => { |
| | | setLoading(false); |
| | | startThree(refContainer.current); |
| | | fetchShelfInfo(props.locNo); |
| | | setLoading(false); |
| | | }, 300) |
| | | |
| | | return endThree; |
| | | }, [props.data.uuid]); |
| | | }, [props.data.uuid, props.locNo]); |
| | | |
| | | return ( |
| | | <> |
| | |
| | | { |
| | | key: '1', |
| | | label: intl.formatMessage({ id: 'map.loc.no', defaultMessage: '库位号' }), |
| | | children: props.locNo, |
| | | children: curLocNo, |
| | | }, |
| | | { |
| | | key: '2', |