import request from '@/utils/request'; import * as Tool from './tool'; import { DEVICE_TYPE } from './constants'; import { HANDLE_APP_KEY } from '@/config/setting'; let notify; let mapContainer; export function setNotify(param) { notify = param; } export function setMapContainer(param) { mapContainer = param; } export const fetchMapData = (zoneId, setRcsStatus) => { Tool.clearMapData(); return request.post('/map/data/fetch', { zoneId: zoneId }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data: { rcsStatus, common, point } } = res.data; if (code === 200) { setRcsStatus(rcsStatus); 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.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 && type !== DEVICE_TYPE.ROUTE) { 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); }) } export const startupOrShutdown = async (callback) => { try { const res = await request.post('/map/startupOrShutdown'); const { code, msg, data } = res.data; if (code === 200) { if (callback) { callback(); } } else { notify.error(msg); } } catch (error) { notify.error(error.message); console.error(error.message); } } export const getLocGroup = async (row, bay, callback) => { await request.post('/map/shelf/group', { row: row, bay: bay }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { callback(data) } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const getAgvInfo = async (agvNo, callback) => { await request.post('/map/agv/info', { agvNo: agvNo, }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { callback(data) } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const getPointInfo = async (point, callback) => { await request.post('/map/point/info', { codeData: point, }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { callback(data) } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const getRouteList = async (zoneId, callback) => { await request.post('/map/route/list', { zoneId: zoneId, }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { callback(data) } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const handleControlAgv = async (param, callback) => { await request.post('/handler/control/agv', param, { headers: { 'appKey': HANDLE_APP_KEY } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); if (callback) { callback(data) } } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const handleRestoreAgvAll = async (param, callback) => { await request.post('/handler/restore/agv', param, { headers: { 'appKey': HANDLE_APP_KEY } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); if (callback) { callback(data) } } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) }