| 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(0.85, 0.85); | 
|                                 break | 
|                             default: | 
|                                 break | 
|                         } | 
|                         // }, 50); | 
|   | 
|                         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) => { | 
|     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); | 
|     }) | 
| } | 
|   | 
| 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; | 
| } |