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, setCurSprite) => { 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 commonList = common ? eval(common) : []; const pointList = point ? eval(point) : []; const mapItemList = [...commonList, ...pointList]; 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(pointList.length < 2000 ? 1 : 1.6); break default: break } mapContainer.addChild(sprite); Tool.beInsight(sprite, setCurSprite); } } }) } 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, errCallBack) => { 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); if (errCallBack) { errCallBack(); } } }).catch((error) => { notify.error(error.message); console.error(error.message); if (errCallBack) { errCallBack(); } }) } 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); }) } export const getFakeSign = async (param, callback) => { await request.get('/fake/sign/get').then((res) => { const { code, msg, data } = res.data; if (code === 200) { if (callback) { callback(data) } } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const setFakeSign = async (param, callback) => { await request.post('/fake/sign/set', { sign: param, }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then((res) => { const { code, msg, data } = res.data; if (code === 200) { if (data) { notify.success(msg); } if (callback) { callback(data) } } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const handleAgvPatrol = async (param) => { try { const res = await request.post('/handler/agv/patrol', param, { headers: { 'appKey': HANDLE_APP_KEY } }); const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); return true; } else { notify.error(msg); } } catch (error) { notify.error(error.message); console.error(error.message); } return false; } export const locateAllAgv = async (param) => { try { const res = await request.post('/handler/locateAllAgv', param, { headers: { 'appKey': HANDLE_APP_KEY } }); const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); return true; } else { notify.error(msg); } } catch (error) { notify.error(error.message); console.error(error.message); } return false; } export const startPatrolBatch = async (param) => { try { const res = await request.post('/handler/patrol/batch/startup', param, { headers: { 'appKey': HANDLE_APP_KEY } }); const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); return true; } else { notify.error(msg); } } catch (error) { notify.error(error.message); console.error(error.message); } return false; } export const cancelPatrolBatch = async (param) => { try { const res = await request.post('/handler/patrol/batch/shutdown', param, { headers: { 'appKey': HANDLE_APP_KEY } }); const { code, msg, data } = res.data; if (code === 200) { notify.success(msg); return true; } else { notify.error(msg); } } catch (error) { notify.error(error.message); console.error(error.message); } return false; }