From bb61bc0c22ae4ef9963ca00d23b5cf0c412f26f5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 12 十月 2024 14:47:35 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/http.js |  106 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 73 insertions(+), 33 deletions(-)

diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index 7cdea35..89d6129 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -1,61 +1,101 @@
 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', {
+    await request.post('/map/data/fetch', {
         zoneId: zoneId
     }, {
         headers: {
             'Content-Type': 'application/x-www-form-urlencoded'
         }
     }).then((res) => {
-        const { code, msg, data } = res.data;
+        const { code, msg, data: { data } } = res.data;
         if (code === 200) {
             const mapItemList = eval(data);
+            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);
+                        }, 50);
+
+                        mapContainer.addChild(sprite);
+                    }
+                }
+            })
         } else {
-            notify(msg, "error")
+            notify.error(msg);
         }
-
-        // mapItemList.forEach(item => {
-        //     if (!(
-        //         item.type === SENSOR_TYPE.SHUTTLE
-        //         || item.type === SENSOR_TYPE.AGV
-        //     )) {
-        //         const sprite = generateSprite(item.type);
-        //         if (sprite) {
-        //             initSprite(sprite, item.type);
-        //             // data
-        //             sprite.data.uuid = item.uuid;
-        //             sprite.data.no = item.no;
-
-        //             // dynamical data
-        //             Object.assign(sprite.data, item.property);
-
-        //             showSheflType(sprite);
-        //             // graph
-        //             setTimeout(() => {
-        //                 sprite.position.set(item.positionX, item.positionY);
-        //                 sprite.scale.set(item.scaleX, item.scaleY);
-        //                 sprite.rotation = rotationParseNum(item.rotation);
-        //             }, 50);
-
-        //             mapContainer.addChild(sprite);
-        //         }
-        //     }
-        // })
-
     }).catch((error) => {
-        notify(error.message, "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);
+    })
+}

--
Gitblit v1.9.1