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.3, 0.3);
|
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) {
|
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);
|
})
|
}
|