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/fetch', { zoneId: zoneId }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data: { common, point } } = res.data; if (code === 200) { const mapItemList = [...eval(common), ...eval(point)]; 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); // support switch (item.type) { case DEVICE_TYPE.POINT: sprite.tint = 0xCACDCF; sprite.scale.set(0.65, 0.65); break default: break } }, 50); mapContainer.addChild(sprite); } } }) } else { notify.error(msg); } }).catch((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 && type !== DEVICE_TYPE.POINT) { 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); }) }