| | |
| | | import request from '@/utils/request'; |
| | | import * as Tool from './tool'; |
| | | import { DEVICE_TYPE } from './constants'; |
| | | |
| | | let notify; |
| | | let mapContainer; |
| | | |
| | | export function setNotify(param) { |
| | | notify = param; |
| | | } |
| | | |
| | | export function setMapContainer(param) { |
| | | mapContainer = param; |
| | | } |
| | | |
| | | export const fetchMapData = async (zoneId) => { |
| | | Tool.clearMapData(); |
| | | await request.post('/map/data', { |
| | | await request.post('/map/data/fetch', { |
| | | zoneId: zoneId |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/x-www-form-urlencoded' |
| | | } |
| | | }).then((res) => { |
| | | const { code, msg, data } = res.data; |
| | | const { code, msg, data: { common, point } } = res.data; |
| | | if (code === 200) { |
| | | const mapItemList = eval(data); |
| | | const mapItemList = eval(common); |
| | | mapItemList.forEach(item => { |
| | | if (item.type !== DEVICE_TYPE.AGV) { |
| | | const sprite = Tool.generateSprite(item.type); |
| | | if (sprite) { |
| | | Tool.initSprite(sprite, item.type); |
| | | // data |
| | | sprite.data.uuid = item.uuid; |
| | | sprite.data.no = item.no; |
| | | |
| | | // dynamical data |
| | | Object.assign(sprite.data, item.property); |
| | | |
| | | // graph |
| | | setTimeout(() => { |
| | | sprite.position.set(item.positionX, item.positionY); |
| | | sprite.scale.set(item.scaleX, item.scaleY); |
| | | sprite.rotation = Tool.rotationParseNum(item.rotation); |
| | | }, 50); |
| | | |
| | | mapContainer.addChild(sprite); |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | notify(msg, "error") |
| | | notify.error(msg); |
| | | } |
| | | |
| | | // mapItemList.forEach(item => { |
| | | // if (!( |
| | | // item.type === SENSOR_TYPE.SHUTTLE |
| | | // || item.type === SENSOR_TYPE.AGV |
| | | // )) { |
| | | // const sprite = generateSprite(item.type); |
| | | // if (sprite) { |
| | | // initSprite(sprite, item.type); |
| | | // // data |
| | | // sprite.data.uuid = item.uuid; |
| | | // sprite.data.no = item.no; |
| | | |
| | | // // dynamical data |
| | | // Object.assign(sprite.data, item.property); |
| | | |
| | | // showSheflType(sprite); |
| | | // // graph |
| | | // setTimeout(() => { |
| | | // sprite.position.set(item.positionX, item.positionY); |
| | | // sprite.scale.set(item.scaleX, item.scaleY); |
| | | // sprite.rotation = rotationParseNum(item.rotation); |
| | | // }, 50); |
| | | |
| | | // mapContainer.addChild(sprite); |
| | | // } |
| | | // } |
| | | // }) |
| | | |
| | | }).catch((error) => { |
| | | notify(error.message, "error") |
| | | notify.error(error.message); |
| | | console.error(error.message); |
| | | }) |
| | | } |
| | | |
| | | export const saveMapData = async (zone) => { |
| | | if (!mapContainer) { |
| | | return; |
| | | } |
| | | |
| | | const sprites = []; |
| | | mapContainer.children.forEach(child => { |
| | | if (child.data?.uuid) { |
| | | const { type, uuid, no, ...property } = child.data; |
| | | if (type !== DEVICE_TYPE.AGV) { |
| | | sprites.push({ |
| | | // graph |
| | | positionX: child.position.x, |
| | | positionY: child.position.y, |
| | | scaleX: child.scale.x, |
| | | scaleY: child.scale.y, |
| | | rotation: Tool.rotationToNum(child.rotation), |
| | | // data |
| | | type: type, |
| | | uuid: uuid, |
| | | no: no, |
| | | property: property, |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | |
| | | await request.post('/map/data/save', { |
| | | zoneId: zone, |
| | | itemList: sprites |
| | | }).then(res => { |
| | | const { code, msg, data } = res.data; |
| | | if (code === 200) { |
| | | notify.success(msg); |
| | | } else { |
| | | notify.error(msg); |
| | | } |
| | | }).catch((error) => { |
| | | notify.error(error.message); |
| | | console.error(error.message); |
| | | }) |
| | | } |