Koishi 4 месяцев назад
Родитель
Сommit
efedd9c5c7

BIN
public/static/model/dixing/model.glb


+ 1 - 0
src/App.vue

@@ -9,6 +9,7 @@
 </template>
 
 <script>
+// "cesium": "^1.132.0",
 // import menuCom from "@/views/menuCom.vue"
 import cesiumImg from "/cesiumIco.png"
 export default {

+ 938 - 0
src/components/modelUnpack - 左右布局.vue

@@ -0,0 +1,938 @@
+
+<template>
+  <div
+    class="modelBox"
+    v-loading="modelLoading"
+    element-loading-text="模型加载中...请稍等..."
+    :element-loading-spinner="loadingSvg"
+    element-loading-svg-view-box="-10, -10, 50, 50"
+    element-loading-background="rgba(0, 0, 0, 0.5)"
+  >
+    <div class="l">
+      <div
+        ref="threeCanvas"
+        class="threeCanvas"
+        style="width: 100%; height: 100%"
+      ></div>
+    </div>
+    <div class="r">
+      <div
+        ref="threeToushi"
+        class="threeToushi"
+        style="width: 100%; height: 100%"
+      ></div>
+    </div>
+    <div class="bjSelectBox">
+      <el-select
+        v-model="bj"
+        placeholder="完整展示"
+        style="width: 300px"
+        clearable
+        filterable
+        @change="bjChange"
+      >
+        <el-option
+          v-for="item in bjList"
+          :key="item.id"
+          :label="item.name"
+          :value="item.uuid"
+        />
+      </el-select>
+    </div>
+    <div class="sliderBarBox">
+      <el-slider v-model="splitWidth" size="small" @input="sliderChange" />
+    </div>
+  </div>
+</template>
+ 
+<script>
+// import * as THREE from "../Three/Three.js";
+
+// import { TEngine } from "../threeTool/ThreeEngine";
+// import { allBaseObject } from "../threeTool/ThreeBaseObject";
+// import { allLights } from "../threeTool/ThreeLights";
+// import { getColor } from "../threeTool/ThreeColor";
+// import { ThreeAxes } from "../threeTool/ThreeAxes";
+
+// import { GLTFLoader } from "../Three/examples/jsm/loaders/GLTFLoader";
+// import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader";
+
+import * as THREE from "three";
+
+import {
+  WebGLRenderer,
+  Scene,
+  PerspectiveCamera,
+  Vector3,
+  MOUSE,
+  Raycaster,
+  Vector2,
+} from "three";
+
+import { OrbitControls } from "three/addons/controls/OrbitControls.js";
+import { TransformControls } from "three/examples/jsm/controls/TransformControls";
+import {
+  CSS3DRenderer,
+  CSS3DObject,
+} from "three/examples/jsm/renderers/CSS3DRenderer";
+
+import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
+import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
+import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
+import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
+import { TDSLoader } from "three/examples/jsm/loaders/TDSLoader";
+import { MTLLoader } from "three-obj-mtl-loader";
+
+import { Color } from "../Three/Three.js";
+
+import WebGL from "../threeTool/WebGL";
+
+import axios from "axios";
+
+THREE.Cache.enabled = true;
+
+export default {
+  name: "ThreeScene",
+
+  props: {
+    modelUnpackType: {
+      type: String,
+      default: () => {
+        return "";
+      },
+    },
+    showModelMsg: {
+      type: Boolean,
+      default: true,
+    },
+  },
+
+  data() {
+    return {
+      splitWidth: 50,
+      modelLoading: false,
+      loadingSvg: `<path class="path" d="
+          M 30 15
+          L 28 17
+          M 25.61 25.61
+          A 15 15, 0, 0, 1, 15 30
+          A 15 15, 0, 1, 1, 27.99 7.5
+          L 15 15
+        " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>`,
+      modelUnpackMap: {
+        fengji: "fengji",
+        guangfu: "gfSolo",
+        dixing: "dixing",
+      },
+      ThreeEngine: null,
+      scene: null,
+      camera: null,
+      renderer: null,
+      scene_Toushi: null,
+      camera_Toushi: null,
+      renderer_Toushi: null,
+      loader: null,
+      baseWidth: 0,
+      baseHeight: 0,
+      orbitControls: null,
+      css3DRenderer: null,
+      orbitControls_Toushi: null,
+      css3DRenderer_Toushi: null,
+      animationId: null,
+      basicModel: null,
+      bj: "",
+      bjList: [],
+      modleMap: {
+        fengji: {
+          dizuo13: {
+            name: "底座",
+          },
+          tadiyiceng14: {
+            name: "塔底一层",
+          },
+          zhuzhou15: {
+            name: "主轴",
+          },
+        },
+      },
+    };
+  },
+
+  created() {
+    // this.test();
+  },
+  mounted() {},
+  methods: {
+    init() {
+      this.$nextTick(() => {
+        this.initLoader();
+        this.initThree({
+          dom: this.$refs.threeCanvas,
+          dom_Toushi: this.$refs.threeToushi,
+          showGridHelper: true,
+        });
+      });
+    },
+
+    async test() {
+      const res = await axios.get(
+        `https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p50.pl`,
+        {
+          file: "gfs.t18z.pgrb2full.0p50.f000",
+          leftlon: 0,
+          rightlon: 360,
+          toplat: 90,
+          bottomlat: -90,
+          dir: `/gfs.20250827/18/atmos`,
+          "lev_PV=1e-06_(Km^2/kg/s)_surface": "on",
+          var_TMP: "on",
+        }
+      );
+      console.log(1111111111, res);
+      return;
+      // 获取 gfs 文件列表
+      const rootRes = await axios.get("/nomads");
+      const gfsList = this.extractDOM(rootRes.data, "body p");
+      const firstGfsName = gfsList[1].querySelector("a").innerHTML;
+
+      // 获取首个文件内的日期列表
+      const dateRes = await axios.get(`/nomads?dir=/${firstGfsName}`);
+      const gfsFileDateList = this.extractDOM(dateRes.data, "body td a");
+      const firstDate = gfsFileDateList[0].innerHTML;
+
+      // 获取 gfs 文件详情
+      const gfsRes = await axios.get(
+        `/nomads?dir=/${firstGfsName}/${firstDate}/atmos`
+      );
+      const gfsDetailPage = this.extractDOM(gfsRes.data, "body form p");
+
+      // 获取 gfs 模型列表
+      const gfsModelList = gfsDetailPage[1].querySelectorAll("option");
+      let model = [];
+      for (let i = 0; i < gfsModelList.length; i++) {
+        model.push(gfsModelList[i].innerHTML.replace(/\n/g, ""));
+      }
+
+      // 获取级别
+      const levelsList = gfsDetailPage[4];
+      const levelInputList = levelsList.querySelectorAll("input");
+      let lvl = [];
+      for (let i = 0; i < levelInputList.length; i++) {
+        const ipt = levelInputList[i];
+        const lvlStr = ipt
+          .getAttribute("name")
+          .replace(/^lev_/, "")
+          .replace(/\\/g, "");
+        lvl.push(lvlStr);
+      }
+
+      lvl.shift();
+
+      // 获取变量
+      const variablesList = gfsDetailPage[5];
+      const varInputList = variablesList.querySelectorAll("input");
+      let variables = [];
+      for (let i = 0; i < varInputList.length; i++) {
+        const ipt = varInputList[i];
+        const varStr = ipt
+          .getAttribute("name")
+          .replace(/^var_/, "")
+          .replace(/\\/g, "");
+        variables.push(varStr);
+      }
+
+      variables.shift();
+    },
+
+    // 提取DOM元素函数
+    extractDOM(htmlString, selector) {
+      if (!htmlString.trim()) {
+        showMessage("请输入HTML字符串", "error");
+        return;
+      }
+
+      if (!selector.trim()) {
+        showMessage("请输入CSS选择器", "error");
+        return;
+      }
+
+      try {
+        // 使用DOMParser解析HTML字符串
+        const parser = new DOMParser();
+        const doc = parser.parseFromString(htmlString, "text/html");
+
+        // 使用选择器查找元素
+        const element = doc.querySelectorAll(selector);
+
+        if (element) {
+          // 输出元素的outerHTML
+          return element;
+        } else {
+          console.log("未匹配到元素:", selector);
+        }
+      } catch (error) {
+        console.log("解析HTML时出错: ", error.message);
+      }
+    },
+
+    bjChange(uuid) {
+      let modelBjList = this.scene.children.find((modelEle) => {
+        return !modelEle.isLight && !modelEle.isLineSegments;
+      });
+      if (uuid) {
+        modelBjList.children.forEach((ele) => {
+          if (ele.uuid === uuid) {
+            this.focusOnPart(ele);
+            ele.visible = true;
+          } else {
+            ele.visible = false;
+          }
+        });
+      } else {
+        this.focusOnPart(this.basicModel);
+        modelBjList.children.forEach((ele) => {
+          ele.visible = true;
+        });
+      }
+    },
+
+    sliderChange(value) {
+      const rBox_Toushi = document.querySelector(".r");
+      const canvasStyle_Toushi = document.querySelector(".threeToushi canvas");
+
+      if (value >= 50) {
+        rBox_Toushi.style.width = `${value}%`;
+        rBox_Toushi.style.left = `${value}%`;
+        canvasStyle_Toushi.style.left = `-100%`;
+      } else {
+        const leftFix = 50 - value;
+        canvasStyle_Toushi.style.left = `-${100 - this.calcFixBeiLv(leftFix)}%`;
+        rBox_Toushi.style.width = `${100 - value}%`;
+        rBox_Toushi.style.left = `${value}%`;
+      }
+    },
+
+    calcFixBeiLv(value) {
+      return 4 * value;
+      switch (value) {
+        case 1:
+          return 96;
+        case 2:
+          return 92.4;
+        case 3:
+          return 88.75;
+        case 4:
+          return 85.25;
+        case 5:
+          return 81.75;
+        case 6:
+          return 78.4;
+        case 7:
+          return 75.5;
+        default:
+          return 4 * value;
+      }
+    },
+
+    initThree(options) {
+      this.$nextTick(() => {
+        const parentDom = getComputedStyle(
+          document.querySelector(".el-drawer__body"),
+          null
+        );
+
+        this.baseWidth = parentDom.width ? parseInt(parentDom.width) : 0;
+        this.baseHeight = parentDom.height ? parseInt(parentDom.height) : 0;
+
+        // 创建3D场景对象Scene
+        const scene = new THREE.Scene();
+        scene.background = this.getColor("#93bcd3");
+        const scene_Toushi = new THREE.Scene();
+        scene_Toushi.background = this.getColor("#bbd591");
+
+        // 相机
+        const camera = new PerspectiveCamera(
+          // 视野角度(fov)
+          options?.cameraOptions?.fov || 75,
+          // 长宽比(aspect ratio)
+          options?.cameraOptions?.aspectRatio ||
+            this.baseWidth / this.baseHeight,
+          // 近截面(near)
+          options?.cameraOptions?.near || 0.1,
+          // 远截面(far)
+          options?.cameraOptions?.far || 1000
+        );
+        const camera_Toushi = new PerspectiveCamera(
+          // 视野角度(fov)
+          options?.cameraOptions?.fov || 75,
+          // 长宽比(aspect ratio)
+          options?.cameraOptions?.aspectRatio ||
+            this.baseWidth / this.baseHeight,
+          // 近截面(near)
+          options?.cameraOptions?.near || 0.1,
+          // 远截面(far)
+          options?.cameraOptions?.far || 1000
+        );
+
+        // 设置摄像机位置和朝向
+        camera.position.set(80, 100, 200); // 调整摄像机位置
+        camera.lookAt(new THREE.Vector3(0, 0, 0)); // 设置摄像机朝向场景中心
+        camera_Toushi.position.set(80, 100, 200); // 调整摄像机位置
+        camera_Toushi.lookAt(new THREE.Vector3(0, 0, 0)); // 设置摄像机朝向场景中心
+
+        // 渲染器
+        const renderer = new WebGLRenderer({
+          antialias: true, // 开启抗锯齿
+        });
+        const renderer_Toushi = new WebGLRenderer({
+          antialias: true, // 开启抗锯齿
+        });
+
+        // 添加灯光
+        const ambientLight = new THREE.AmbientLight(0xffffff, 5);
+        scene.add(ambientLight);
+        const directionalLight1 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight1.position.set(0, 0, 1);
+        scene.add(directionalLight1);
+        const directionalLight2 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight2.position.set(0, 0, -1);
+        scene.add(directionalLight2);
+        const directionalLight3 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight3.position.set(1, 0, 0);
+        scene.add(directionalLight3);
+        const directionalLight4 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight4.position.set(-1, 0, 0);
+        scene.add(directionalLight4);
+        const directionalLight5 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight5.position.set(0, 1, 0);
+        scene.add(directionalLight5);
+        const directionalLight6 = new THREE.DirectionalLight(0xffffff, 3);
+        directionalLight6.position.set(0, -1, 0);
+        scene.add(directionalLight6);
+
+        const ambientLight_Toushi = new THREE.AmbientLight(0xffffff, 5);
+        scene_Toushi.add(ambientLight_Toushi);
+        const directionalLight1_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight1_Toushi.position.set(0, 0, 1);
+        scene_Toushi.add(directionalLight1_Toushi);
+        const directionalLight2_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight2_Toushi.position.set(0, 0, -1);
+        scene_Toushi.add(directionalLight2_Toushi);
+        const directionalLight3_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight3_Toushi.position.set(1, 0, 0);
+        scene_Toushi.add(directionalLight3_Toushi);
+        const directionalLight4_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight4_Toushi.position.set(-1, 0, 0);
+        scene_Toushi.add(directionalLight4_Toushi);
+        const directionalLight5_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight5_Toushi.position.set(0, 1, 0);
+        scene_Toushi.add(directionalLight5_Toushi);
+        const directionalLight6_Toushi = new THREE.DirectionalLight(
+          0xffffff,
+          3
+        );
+        directionalLight6_Toushi.position.set(0, -1, 0);
+        scene_Toushi.add(directionalLight6_Toushi);
+
+        // renderer.setSize(window.innerWidth, window.innerHeight);
+        const rendererBox = getComputedStyle(options.dom, null);
+        const renderSizeWidth = parseFloat(rendererBox.width);
+        const renderSizeHeight = parseFloat(rendererBox.height);
+        renderer.setSize(renderSizeWidth, renderSizeHeight);
+
+        const rendererBox_Toushi = getComputedStyle(options.dom_Toushi, null);
+        const renderSizeWidth_Toushi = parseFloat(rendererBox_Toushi.width);
+        const renderSizeHeight_Toushi = parseFloat(rendererBox_Toushi.height);
+        renderer_Toushi.setSize(
+          renderSizeWidth_Toushi,
+          renderSizeHeight_Toushi
+        );
+
+        options?.dom?.appendChild(renderer.domElement);
+        options?.dom_Toushi?.appendChild(renderer_Toushi.domElement);
+
+        const css3DRenderer = new CSS3DRenderer();
+        css3DRenderer.setSize(renderSizeWidth, renderSizeHeight);
+        css3DRenderer.render(scene, camera);
+        css3DRenderer.domElement.style.position = "absolute";
+        css3DRenderer.domElement.style.top = 0;
+        css3DRenderer.domElement.style.pointerEvents = "none";
+        options.dom.appendChild(css3DRenderer.domElement);
+
+        const css3DRenderer_Toushi = new CSS3DRenderer();
+        css3DRenderer_Toushi.setSize(
+          renderSizeWidth_Toushi,
+          renderSizeHeight_Toushi
+        );
+        css3DRenderer_Toushi.render(scene_Toushi, camera_Toushi);
+        css3DRenderer_Toushi.domElement.style.position = "absolute";
+        css3DRenderer_Toushi.domElement.style.top = 0;
+        css3DRenderer_Toushi.domElement.style.pointerEvents = "none";
+        options.dom_Toushi.appendChild(css3DRenderer_Toushi.domElement);
+
+        // 设置鼠标功能键(轨道控制器)
+        const orbitControls = new OrbitControls(camera, renderer.domElement);
+        // 移动带阻尼
+        orbitControls.enableDamping = options.enableDamping || false;
+        // 设置阻尼系数
+        orbitControls.dampingFactor = options.dampingFactor || 0;
+        // 自动旋转
+        orbitControls.autoRotate = options.autoRotate || false;
+
+        orbitControls.mouseButtons = {
+          LEFT: MOUSE.ROTATE, // 左键无功能
+          MIDDLE: MOUSE.PAN, // 中键移动
+          RIGHT: null, // 右键旋转
+        };
+
+        orbitControls.addEventListener("change", () => {
+          // 复制位置
+          camera_Toushi.position.copy(camera.position);
+
+          // 复制旋转
+          camera_Toushi.rotation.copy(camera.rotation);
+
+          // 复制up向量
+          camera_Toushi.up.copy(camera.up);
+
+          camera_Toushi.updateMatrixWorld();
+
+          orbitControls_Toushi.target.copy(orbitControls.target);
+          // orbitControls.update();
+          // orbitControls_Toushi.update();
+        });
+
+        const orbitControls_Toushi = new OrbitControls(
+          camera_Toushi,
+          renderer_Toushi.domElement
+        );
+        // 移动带阻尼
+        orbitControls_Toushi.enableDamping = options.enableDamping || false;
+        // 设置阻尼系数
+        orbitControls_Toushi.dampingFactor = options.dampingFactor || 0;
+        // 自动旋转
+        orbitControls_Toushi.autoRotate = options.autoRotate || false;
+
+        orbitControls_Toushi.mouseButtons = {
+          LEFT: MOUSE.ROTATE, // 左键无功能
+          MIDDLE: MOUSE.PAN, // 中键移动
+          RIGHT: null, // 右键旋转
+        };
+
+        orbitControls_Toushi.addEventListener("change", () => {
+          // 复制位置
+          camera.position.copy(camera_Toushi.position);
+
+          // 复制旋转
+          camera.rotation.copy(camera_Toushi.rotation);
+
+          // 复制up向量
+          camera.up.copy(camera_Toushi.up);
+
+          camera.updateMatrixWorld();
+
+          orbitControls.target.copy(orbitControls_Toushi.target);
+          // orbitControls_Toushi.update();
+          // orbitControls.update();
+        });
+
+        if (options.showGridHelper) {
+          // 底图网格 (总长宽,分多少个网格,颜色,轴线颜色,和网格颜色 #e6e8ed)
+          const gridHelper = new THREE.GridHelper(
+            2000,
+            100,
+            this.getColor("#dedede"),
+            this.getColor("#dedede")
+          );
+          gridHelper.name = "网格地板";
+          gridHelper.disalbedDelete = true;
+          scene.add(gridHelper);
+
+          const gridHelper_Toushi = new THREE.GridHelper(
+            2000,
+            100,
+            this.getColor("#dedede"),
+            this.getColor("#dedede")
+          );
+          gridHelper_Toushi.name = "网格地板透视";
+          gridHelper_Toushi.disalbedDelete = true;
+          scene_Toushi.add(gridHelper_Toushi);
+        }
+
+        const rBox_Toushi = document.querySelector(".r");
+        rBox_Toushi.style.width = `${this.splitWidth}%`;
+        rBox_Toushi.style.left = `${this.splitWidth}%`;
+
+        const canvasStyle_Toushi = document.querySelector(
+          ".threeToushi canvas"
+        );
+        canvasStyle_Toushi.style.position = "absolute";
+        canvasStyle_Toushi.style.left = `-100%`;
+        // 初始化射线发射器
+        let raycaster = new Raycaster();
+
+        // 渲染循环
+        const animate = () => {
+          requestAnimationFrame(animate);
+          orbitControls.update();
+          css3DRenderer.render(scene, camera);
+          renderer.render(scene, camera);
+        };
+
+        const animate_Toushi = () => {
+          requestAnimationFrame(animate_Toushi);
+          orbitControls_Toushi.update();
+          css3DRenderer_Toushi.render(scene_Toushi, camera_Toushi);
+          renderer_Toushi.render(scene_Toushi, camera_Toushi);
+        };
+
+        this.scene = scene;
+        this.camera = camera;
+        this.renderer = renderer;
+        this.orbitControls = orbitControls;
+        this.css3DRenderer = css3DRenderer;
+
+        this.scene_Toushi = scene_Toushi;
+        this.camera_Toushi = camera_Toushi;
+        this.renderer_Toushi = renderer_Toushi;
+        this.orbitControls_Toshi = orbitControls_Toushi;
+        this.css3DRenderer_Toushi = css3DRenderer_Toushi;
+
+        if (WebGL.isWebGLAvailable()) {
+          animate();
+          animate_Toushi();
+          // 窗口调整大小时更新渲染器
+          window.addEventListener("resize", () => {
+            renderer.setSize(window.innerWidth, window.innerHeight);
+            camera.aspect = window.innerWidth / window.innerHeight;
+            camera.updateProjectionMatrix();
+            renderer_Toushi.setSize(window.innerWidth, window.innerHeight);
+            camera_Toushi.aspect = window.innerWidth / window.innerHeight;
+            camera_Toushi.updateProjectionMatrix();
+          });
+        } else {
+          const warning = WebGL.getWebGLErrorMessage();
+          options?.dom?.appendChild(warning);
+          dom_Toushi?.appendChild(warning);
+        }
+
+        this.addModel({
+          fileType: "glb",
+          fileName: this.modelUnpackMap[this.modelUnpackType],
+        });
+      });
+    },
+
+    // 初始化模型加载器
+    initLoader() {
+      this.loader = {
+        glb: new GLTFLoader(),
+        gltf: new GLTFLoader(),
+        obj: new OBJLoader(),
+        fbx: new FBXLoader(),
+        "3ds": new TDSLoader(),
+      };
+    },
+
+    // 获取颜色
+    getColor(colorHex) {
+      return new Color(colorHex);
+    },
+
+    // 添加模型
+    addModel({ fileType = "glb", fileName }) {
+      this.modelLoading = true;
+      const loader = this.loader[fileType];
+      loader.setResourcePath(`./static/model/${fileName}/`);
+      loader.load(`./static/model/${fileName}/model.${fileType}`, (result) => {
+        if (fileType === "fbx") {
+          this.basicModel = this.formatModel(result);
+        } else if (fileType === "glb") {
+          this.basicModel = this.formatModel(result.scene);
+        }
+        this.basicModel.isCurrentAddModel = true;
+
+        let bjList = [];
+        this.basicModel.children.forEach((bj) => {
+          if (
+            bj.name.indexOf("Particle_View") === -1 &&
+            bj.name !== "34" &&
+            bj.name !== "_35"
+          ) {
+            bjList.push({ id: bj.id, uuid: bj.uuid, name: bj.name });
+          }
+        });
+
+        this.bjList = bjList;
+        console.log(1122, bjList);
+
+        this.collectMaterialInfo(this.basicModel);
+        this.scene.add(this.basicModel);
+        this.scene_Toushi.add(this.basicModel.clone());
+        this.modelLoading = false;
+      });
+    },
+
+    // 调整视角到选中部件
+    focusOnPart(part) {
+      const box = new THREE.Box3().setFromObject(part);
+      const size = box.getSize(new THREE.Vector3());
+      const center = box.getCenter(new THREE.Vector3());
+      const speed = 0.5;
+
+      // 计算最佳相机距离
+      const maxDim = Math.max(size.x, size.y, size.z);
+      const cameraDistance = maxDim * parseFloat(speed);
+
+      // 计算相机位置
+      const direction = this.orbitControls.target
+        .clone()
+        .sub(this.camera.position)
+        .normalize();
+      const cameraPosition = center
+        .clone()
+        .sub(direction.multiplyScalar(cameraDistance));
+
+      // 是否启用平滑过渡
+      const smooth = true;
+
+      if (smooth) {
+        // 平滑过渡到新位置
+        this.animateCamera(
+          this.camera.position,
+          cameraPosition,
+          this.orbitControls.target,
+          center,
+          speed
+        );
+
+        setTimeout(() => {
+          // 复制位置
+          this.camera_Toushi.position.copy(this.camera.position);
+
+          // 复制旋转
+          this.camera_Toushi.rotation.copy(this.camera.rotation);
+
+          // 复制up向量
+          this.camera_Toushi.up.copy(this.camera.up);
+
+          this.camera_Toushi.updateMatrixWorld();
+
+          this.orbitControls_Toushi.target.copy(this.orbitControls.target);
+          this.orbitControls.update();
+          this.orbitControls_Toushi.update();
+        }, 1000);
+      } else {
+        // 直接设置新位置
+        this.camera.position.copy(cameraPosition);
+        this.orbitControls.target.copy(center);
+        this.orbitControls.update();
+      }
+    },
+
+    // 平滑移动相机
+    animateCamera(fromPosition, toPosition1, fromTarget, toTarget, speed) {
+      const that = this;
+      const duration = 1000; // 动画持续时间(ms)
+      const startTime = Date.now();
+
+      const toPosition = toPosition1;
+      toPosition.x *= 1.03;
+      toPosition.y *= 1.01;
+      toPosition.z *= 1.03;
+
+      // 缓动函数
+      let easeInOutCubic = (t) => {
+        return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
+      };
+
+      function update() {
+        const elapsed = Date.now() - startTime;
+        const progress = Math.min(elapsed / duration, 1);
+
+        // 使用缓动函数
+        const easeProgress = easeInOutCubic(progress);
+
+        // 插值计算相机位置和目标位置
+        that.camera.position.lerpVectors(
+          fromPosition,
+          toPosition,
+          easeProgress
+        );
+        that.orbitControls.target.lerpVectors(
+          fromTarget,
+          toTarget,
+          easeProgress
+        );
+        that.orbitControls.update();
+
+        if (progress < 1) {
+          requestAnimationFrame(update);
+        }
+      }
+
+      update();
+    },
+
+    formatModel(model) {
+      console.log("model", model);
+      this.renderer.outputColorSpace = THREE.SRGBColorSpace;
+      const camera = this.camera;
+
+      // model.traverse((child) => {
+      //   if (child.material) {
+      //     child.material.emissive = child.material.color;
+      //     child.material.emissiveMap = child.material.map;
+      //   }
+      // });
+
+      // model.children.forEach((item, index) => {
+      //   item.castShadow = true;
+      //   item.receiveShadow = true;
+      // });
+
+      const baseBoxSize = new THREE.Vector3(100, 100, 100);
+      // 计算模型的包围盒(bounding box)
+      const boundingBox = new THREE.Box3().setFromObject(model);
+      const modelSize = new THREE.Vector3();
+      boundingBox.getSize(modelSize);
+
+      // 计算模型的最大尺寸
+      const maxModelSize = Math.max(modelSize.x, modelSize.y, modelSize.z);
+
+      // 计算缩放比例,使模型尺寸不超过基准盒子的尺寸
+      const scaleFactor = baseBoxSize.clone().divideScalar(maxModelSize);
+
+      // 将模型等比例缩放到适应基准盒子大小
+      model.scale.set(scaleFactor.x, scaleFactor.y, scaleFactor.z);
+
+      camera.position.z = 200;
+      return model;
+    },
+
+    collectMaterialInfo(model) {
+      if (!model) return;
+
+      const info = [];
+      const originalMaterials = new Map();
+
+      let materialCount = 0;
+
+      model.traverse((node) => {
+        if (node.isMesh && node.material) {
+          materialCount++;
+          const materials = Array.isArray(node.material)
+            ? node.material
+            : [node.material];
+
+          materials.forEach((material, index) => {
+            if (material.name === "Mesh_225") {
+            }
+            info.push(`材质 ${materialCount}-${index + 1}: ${material.type}`);
+            info.push(`  名称: ${material.name || "未命名"}`);
+            info.push(
+              `  颜色: ${material.color ? material.color.getHexString() : "无"}`
+            );
+            info.push(`  贴图: ${material.map ? "有" : "无"}`);
+            info.push(`  自发光贴图: ${material.emissiveMap ? "有" : "无"}`);
+            info.push(
+              `  金属粗糙度贴图: ${material.metalnessMap ? "有" : "无"}`
+            );
+            info.push(`  法线贴图: ${material.normalMap ? "有" : "无"}`);
+            info.push("---");
+
+            // 保存原始材质引用
+            originalMaterials.set(node.uuid + "-" + index, material);
+          });
+        }
+      });
+      // console.log(333, info);
+    },
+
+    overrideMaterials() {
+      if (!model) return;
+
+      model.traverse((node) => {
+        if (node.isMesh) {
+          // 创建新的基本材质
+          const newMaterial = new THREE.MeshStandardMaterial({
+            color: 0x4488ff,
+            metalness: metalness.value,
+            roughness: roughness.value,
+            emissive: new THREE.Color(0x888888).multiplyScalar(
+              emissiveIntensity.value
+            ),
+            wireframe: wireframe.value,
+          });
+
+          node.material = newMaterial;
+        }
+      });
+    },
+  },
+  watch: {
+    showModelMsg: {
+      handler(val) {
+        if (val) {
+          this.init();
+        }
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.modelBox {
+  width: 100%;
+  height: 100%;
+  position: relative;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+
+  .l,
+  .r {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+  }
+
+  .threeToushi {
+    z-index: 10;
+  }
+
+  .bjSelectBox {
+    position: absolute;
+    left: 5px;
+    top: 25px;
+  }
+
+  .sliderBarBox {
+    width: 100%;
+    position: absolute;
+    left: 5px;
+    top: 5px;
+    width: calc(100% - 10px);
+  }
+}
+</style>

+ 358 - 63
src/components/modelUnpack.vue

@@ -15,7 +15,7 @@
         style="width: 100%; height: 100%"
       ></div>
     </div>
-    <div class="r">
+    <div class="r" :style="`opacity: ${splitOpacity / 100}`">
       <div
         ref="threeToushi"
         class="threeToushi"
@@ -36,11 +36,68 @@
           :key="item.id"
           :label="item.name"
           :value="item.uuid"
-        />
+        >
+          <span
+            :style="
+              item.warnType ? `color: ${selectWarnType[item.warnType]}` : ''
+            "
+            >{{ item.name }}</span
+          >
+        </el-option>
       </el-select>
     </div>
     <div class="sliderBarBox">
-      <el-slider v-model="splitWidth" size="small" @input="sliderChange" />
+      <el-slider
+        v-model="splitOpacity"
+        :min="0"
+        :max="75"
+        size="small"
+        :format-tooltip="sliderFormatTooltip"
+      />
+    </div>
+    <div class="alertBox" v-if="yujingList?.length || baojingList?.length">
+      <el-alert title="" type="warning" v-if="yujingList.length">
+        <template #default>
+          <div class="alertItem">
+            {{ yujingList.length }}条部件预警信息:
+            <span v-for="item in yujingList" :key="item.uuid">
+              <span
+                class="name"
+                @click="
+                  () => {
+                    bj = item.uuid;
+                    bjChange(item.uuid);
+                  }
+                "
+                >[{{ item.name }}]</span
+              >
+              :
+              <span class="desc">{{ item.desc }}</span>
+            </span>
+          </div>
+        </template>
+      </el-alert>
+      <el-alert title="" type="error" v-if="baojingList.length">
+        <template #default>
+          <div class="alertItem">
+            {{ baojingList.length }}条部件预警信息:
+            <span v-for="item in baojingList" :key="item.uuid">
+              <span
+                class="name"
+                @click="
+                  () => {
+                    bj = item.uuid;
+                    bjChange(item.uuid);
+                  }
+                "
+                >[{{ item.name }}]</span
+              >
+              :
+              <span class="desc">{{ item.desc }}</span>
+            </span>
+          </div>
+        </template>
+      </el-alert>
     </div>
   </div>
 </template>
@@ -76,6 +133,10 @@ import {
   CSS3DObject,
 } from "three/examples/jsm/renderers/CSS3DRenderer";
 
+import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
+import { RenderPass } from "three/examples/jsm/postprocessing/RenderPass.js";
+import { OutlinePass } from "three/examples/jsm/postprocessing/OutlinePass.js";
+
 import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
 import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
 import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
@@ -102,14 +163,20 @@ export default {
       },
     },
     showModelMsg: {
-        type: Boolean,
-        default: true
-    }
+      type: Boolean,
+      default: true,
+    },
   },
 
   data() {
     return {
-      splitWidth: 50,
+      selectWarnType: {
+        warn: "#e6a23c",
+        error: "#f56c6c",
+      },
+      yujingList: [],
+      baopjingList: [],
+      splitOpacity: 25,
       modelLoading: false,
       loadingSvg: `<path class="path" d="
           M 30 15
@@ -122,6 +189,7 @@ export default {
       modelUnpackMap: {
         fengji: "fengji",
         guangfu: "gfSolo",
+        dixing: "dixing",
       },
       ThreeEngine: null,
       scene: null,
@@ -130,6 +198,8 @@ export default {
       scene_Toushi: null,
       camera_Toushi: null,
       renderer_Toushi: null,
+      composer: null,
+      outlinePass: null,
       loader: null,
       baseWidth: 0,
       baseHeight: 0,
@@ -152,28 +222,113 @@ export default {
           zhuzhou15: {
             name: "主轴",
           },
+          zhengliuzhao16: {
+            name: "整流罩",
+          },
+          jicangzhao0117: {
+            name: "机舱罩01",
+          },
+          pati18: {
+            name: "爬梯",
+          },
+          tadierceng19: {
+            name: "塔底二层",
+          },
+          tadisanceng20: {
+            name: "塔底三层",
+          },
+          miehuoqi21: {
+            name: "灭火器",
+          },
+          chilunxiang22: {
+            name: "齿轮箱",
+          },
+          diaoji23: {
+            name: "吊机",
+          },
+          qita24: {
+            name: "其他",
+          },
+          jicanggui25: {
+            name: "机舱柜",
+          },
+          dianji26: {
+            name: "电机",
+          },
+          lianzhouqi27: {
+            name: "联轴器",
+          },
+          men28: {
+            name: "门",
+          },
+          xiangbian29: {
+            name: "箱变",
+          },
+          tatong0230: {
+            name: "塔筒02",
+          },
+          tatong0331: {
+            name: "塔筒03",
+          },
+          pianhangxitong32: {
+            name: "偏航系统",
+          },
+          tajia33: {
+            name: "塔架",
+          },
+          tatong0136: {
+            name: "塔筒01",
+          },
+          dianlanxian37: {
+            name: "电缆线",
+          },
+          yeyazhan38: {
+            name: "液压站",
+          },
+          bianjiangxitong39: {
+            name: "变桨系统",
+          },
+          shanye0240: {
+            name: "扇叶02",
+          },
+          shanye0141: {
+            name: "扇叶01",
+          },
+          shanye0342: {
+            name: "扇叶03",
+          },
+          jicangzhao0243: {
+            name: "机舱罩02",
+          },
         },
       },
     };
   },
 
   created() {
-    this.test();
-  },
-  mounted() {
-    
+    // this.test();
   },
+  mounted() {},
   methods: {
     init() {
-        this.$nextTick(() =>{
-            this.initLoader();
-            this.initThree({
-            dom: this.$refs.threeCanvas,
-            dom_Toushi: this.$refs.threeToushi,
-            showGridHelper: true,
-            });
-        })
+      this.$nextTick(async () => {
+        await this.initLoader();
+        await this.initThree({
+          dom: this.$refs.threeCanvas,
+          dom_Toushi: this.$refs.threeToushi,
+          showGridHelper: true,
+        });
+        await this.addModel({
+          fileType: "glb",
+          fileName: this.modelUnpackMap[this.modelUnpackType],
+        });
+      });
+    },
+
+    sliderFormatTooltip(value) {
+      return `透视透明度: ${value}% `;
     },
+
     async test() {
       const res = await axios.get(
         `https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p50.pl`,
@@ -243,6 +398,7 @@ export default {
 
       variables.shift();
     },
+
     // 提取DOM元素函数
     extractDOM(htmlString, selector) {
       if (!htmlString.trim()) {
@@ -274,6 +430,111 @@ export default {
       }
     },
 
+    enableFallbackOutline() {
+      console.log("启用备用描边方案 (EdgesGeometry)");
+
+      let yujingList = [];
+      let baojingList = [];
+
+      this.basicModel.children.forEach((bj) => {
+        if (bj.name === "变桨系统" || bj.name === "齿轮箱") {
+          bj.name === "变桨系统"
+            ? yujingList.push({ name: bj.name, uuid: bj.uuid, desc: "三相电流不平衡度超过10%且持续120秒" })
+            : bj.name === "齿轮箱"
+            ? baojingList.push({
+                name: bj.name,
+                uuid: bj.uuid,
+                desc: "齿箱油温功率超限",
+              })
+            : "";
+
+          bj.traverse((child) => {
+            if (child.isMesh) {
+              // 移除可能存在的旧描边
+              if (child.userData.outline) {
+                child.remove(child.userData.outline);
+              }
+              // 创建边缘几何体
+              const edges = new THREE.EdgesGeometry(child.geometry, 15); // 角度阈值
+              const lineMaterial = new THREE.LineBasicMaterial({
+                color: this.getColor(
+                  this.selectWarnType[bj.name === "齿轮箱" ? "error" : "warn"]
+                ),
+                linewidth: 2,
+              });
+              const outline = new THREE.LineSegments(edges, lineMaterial);
+              // 添加到网格
+              child.add(outline);
+              child.userData.outline = outline;
+              child.userData.outline.visible = false;
+              // 确保描边随父级变换
+              outline.matrixAutoUpdate = false;
+            }
+          });
+        }
+      });
+
+      this.yujingList = yujingList;
+      this.baojingList = baojingList;
+
+      // this.basicModel.traverse((child) => {
+      //   if (child.isMesh) {
+      //     // 移除可能存在的旧描边
+      //     if (child.userData.outline) {
+      //       child.remove(child.userData.outline);
+      //     }
+
+      //     // 创建边缘几何体
+      //     const edges = new THREE.EdgesGeometry(child.geometry, 15); // 角度阈值
+      //     const lineMaterial = new THREE.LineBasicMaterial({
+      //       color: this.getColor("red"),
+      //       linewidth: 2,
+      //     });
+      //     const outline = new THREE.LineSegments(edges, lineMaterial);
+
+      //     // 添加到网格
+      //     child.add(outline);
+      //     child.userData.outline = outline;
+      //     child.userData.outline.visible = false;
+
+      //     // 确保描边随父级变换
+      //     outline.matrixAutoUpdate = false;
+      //   }
+      // });
+    },
+
+    showOutlineForSelected(selectedPart) {
+      // 隐藏所有描边
+      this.basicModel.traverse((child) => {
+        if (child.userData.outline) {
+          child.userData.outline.visible = false;
+        }
+      });
+
+      // 显示选中部件的描边
+      selectedPart.traverse((child) => {
+        if (child.userData.outline) {
+          child.userData.outline.visible = true;
+        }
+      });
+    },
+
+    hideOutline(part) {
+      part.traverse((child) => {
+        if (child.userData.outline) {
+          child.userData.outline.visible = false;
+        }
+      });
+    },
+
+    showOutline(part) {
+      part.traverse((child) => {
+        if (child.userData.outline) {
+          child.userData.outline.visible = true;
+        }
+      });
+    },
+
     bjChange(uuid) {
       let modelBjList = this.scene.children.find((modelEle) => {
         return !modelEle.isLight && !modelEle.isLineSegments;
@@ -283,8 +544,11 @@ export default {
           if (ele.uuid === uuid) {
             this.focusOnPart(ele);
             ele.visible = true;
+            // 显示选中部件的描边,隐藏其他的
+            this.showOutlineForSelected(ele);
           } else {
             ele.visible = false;
+            this.hideOutline(ele);
           }
         });
       } else {
@@ -295,22 +559,6 @@ export default {
       }
     },
 
-    sliderChange(value) {
-      const rBox_Toushi = document.querySelector(".r");
-      const canvasStyle_Toushi = document.querySelector(".threeToushi canvas");
-
-      if (value >= 50) {
-        rBox_Toushi.style.width = `${value}%`;
-        rBox_Toushi.style.left = `${value}%`;
-        canvasStyle_Toushi.style.left = `-100%`;
-      } else {
-        const leftFix = 50 - value;
-        canvasStyle_Toushi.style.left = `-${100 - this.calcFixBeiLv(leftFix)}%`;
-        rBox_Toushi.style.width = `${100 - value}%`;
-        rBox_Toushi.style.left = `${value}%`;
-      }
-    },
-
     calcFixBeiLv(value) {
       return 4 * value;
       switch (value) {
@@ -347,7 +595,7 @@ export default {
         const scene = new THREE.Scene();
         scene.background = this.getColor("#93bcd3");
         const scene_Toushi = new THREE.Scene();
-        scene_Toushi.background = this.getColor("#bbd591");
+        scene_Toushi.background = this.getColor("#93bcd3");
 
         // 相机
         const camera = new PerspectiveCamera(
@@ -573,18 +821,6 @@ export default {
           scene_Toushi.add(gridHelper_Toushi);
         }
 
-        const rBox_Toushi = document.querySelector(".r");
-        rBox_Toushi.style.width = `${this.splitWidth}%`;
-        rBox_Toushi.style.left = `${this.splitWidth}%`;
-
-        const canvasStyle_Toushi = document.querySelector(
-          ".threeToushi canvas"
-        );
-        canvasStyle_Toushi.style.position = "absolute";
-        canvasStyle_Toushi.style.left = `-100%`;
-        // 初始化射线发射器
-        let raycaster = new Raycaster();
-
         // 渲染循环
         const animate = () => {
           requestAnimationFrame(animate);
@@ -609,7 +845,7 @@ export default {
         this.scene_Toushi = scene_Toushi;
         this.camera_Toushi = camera_Toushi;
         this.renderer_Toushi = renderer_Toushi;
-        this.orbitControls_Toshi = orbitControls_Toushi;
+        this.orbitControls_Toushi = orbitControls_Toushi;
         this.css3DRenderer_Toushi = css3DRenderer_Toushi;
 
         if (WebGL.isWebGLAvailable()) {
@@ -623,14 +859,15 @@ export default {
             renderer_Toushi.setSize(window.innerWidth, window.innerHeight);
             camera_Toushi.aspect = window.innerWidth / window.innerHeight;
             camera_Toushi.updateProjectionMatrix();
+
+            // 修复:更新 composer 尺寸
+            composer.setSize(window.innerWidth, window.innerHeight);
           });
         } else {
           const warning = WebGL.getWebGLErrorMessage();
           options?.dom?.appendChild(warning);
           dom_Toushi?.appendChild(warning);
         }
-
-        this.addModel({ fileName: this.modelUnpackMap[this.modelUnpackType] });
       });
     },
 
@@ -656,27 +893,46 @@ export default {
       const loader = this.loader[fileType];
       loader.setResourcePath(`./static/model/${fileName}/`);
       loader.load(`./static/model/${fileName}/model.${fileType}`, (result) => {
-        this.basicModel = this.formatModel(result.scene);
+        if (fileType === "fbx") {
+          this.basicModel = this.formatModel(result);
+        } else if (fileType === "glb") {
+          this.basicModel = this.formatModel(result.scene);
+        }
         this.basicModel.isCurrentAddModel = true;
 
         let bjList = [];
+
         this.basicModel.children.forEach((bj) => {
           if (
             bj.name.indexOf("Particle_View") === -1 &&
             bj.name !== "34" &&
-            bj.name !== "_35"
+            bj.name !== "_35" &&
+            this.modleMap?.[fileName]?.[bj.name]
           ) {
-            bjList.push({ id: bj.id, uuid: bj.uuid, name: bj.name });
+            bj.name = this.modleMap?.[fileName]?.[bj.name]?.name || bj.name;
+            const warnType =
+              bj.name === "齿轮箱"
+                ? "error"
+                : bj.name === "变桨系统"
+                ? "warn"
+                : "";
+            bjList.push({
+              id: bj.id,
+              uuid: bj.uuid,
+              name: bj.name,
+              warnType,
+            });
           }
         });
 
         this.bjList = bjList;
-        console.log(1122, bjList);
 
         this.collectMaterialInfo(this.basicModel);
         this.scene.add(this.basicModel);
         this.scene_Toushi.add(this.basicModel.clone());
         this.modelLoading = false;
+
+        this.enableFallbackOutline();
       });
     },
 
@@ -782,6 +1038,7 @@ export default {
     },
 
     formatModel(model) {
+      console.log("model", model);
       this.renderer.outputColorSpace = THREE.SRGBColorSpace;
       const camera = this.camera;
 
@@ -813,7 +1070,6 @@ export default {
       model.scale.set(scaleFactor.x, scaleFactor.y, scaleFactor.z);
 
       camera.position.z = 200;
-      console.log("model", model);
       return model;
     },
 
@@ -879,13 +1135,13 @@ export default {
   },
   watch: {
     showModelMsg: {
-        handler(val) {
-            if (val) {
-                this.init()
-            }
-        },
-        immediate: true,
-    }
+      handler(val) {
+        if (val) {
+          this.init();
+        }
+      },
+      immediate: true,
+    },
   },
 };
 </script>
@@ -909,8 +1165,15 @@ export default {
     overflow: hidden;
   }
 
+  .r {
+    pointer-events: none;
+  }
+
   .threeToushi {
     z-index: 10;
+    position: absolute;
+    left: 0;
+    top: 0;
   }
 
   .bjSelectBox {
@@ -926,5 +1189,37 @@ export default {
     top: 5px;
     width: calc(100% - 10px);
   }
+
+  .alertBox {
+    width: calc(100% - 24px);
+    margin: 0 12px;
+    position: absolute;
+    left: 0;
+    bottom: 12px;
+
+    .el-alert {
+      margin-bottom: 4px;
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+
+    .alertItem {
+      .name {
+        color: #1890ff;
+        cursor: pointer;
+
+        &:hover {
+          color: #409eff;
+          text-decoration: underline;
+        }
+      }
+
+      .desc {
+        font-weight: 700;
+      }
+    }
+  }
 }
 </style>

+ 1 - 1
src/views/cesium.vue

@@ -453,7 +453,7 @@ export default {
         }
       );
 
-      this.viewer.scene.verticalExaggeration = 14.0;
+      this.viewer.scene.verticalExaggeration = 10.0;
       this.viewer.scene.verticalExaggerationRelativeHeight = 2400.0;
 
       this.viewer.terrainProvider = terrainProvider;

+ 1546 - 0
src/views/cesiumComponents/fjLonLat1.json

@@ -0,0 +1,1546 @@
+{
+    "code": 0,
+    "datanx": [
+        {
+            "id": "NX_FGS_HA_F_WT_0001_EQ",
+            "nemCode": "1101",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.746412,
+            "latitude": 37.496537,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1101号风机",
+            "aname": "1101",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "1",
+            "spare3": "1449",
+            "spare4": null,
+            "orderNum": 1,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0002_EQ",
+            "nemCode": "1102",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.741624,
+            "latitude": 37.492328,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1102号风机",
+            "aname": "1102",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "2",
+            "spare3": "1441",
+            "spare4": null,
+            "orderNum": 2,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0003_EQ",
+            "nemCode": "1103",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.735163,
+            "latitude": 37.492811,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1103号风机",
+            "aname": "1103",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "3",
+            "spare3": "1440",
+            "spare4": null,
+            "orderNum": 3,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0004_EQ",
+            "nemCode": "1104",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.744138,
+            "latitude": 37.48543,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1104号风机",
+            "aname": "1104",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "4",
+            "spare3": "1441",
+            "spare4": null,
+            "orderNum": 4,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0005_EQ",
+            "nemCode": "1105",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.748874,
+            "latitude": 37.481063,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1105号风机",
+            "aname": "1105",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "5",
+            "spare3": "1445",
+            "spare4": null,
+            "orderNum": 5,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0006_EQ",
+            "nemCode": "1106",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.731319,
+            "latitude": 37.478113,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1106号风机",
+            "aname": "1106",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "6",
+            "spare3": "1448",
+            "spare4": null,
+            "orderNum": 6,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0007_EQ",
+            "nemCode": "1107",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.735563,
+            "latitude": 37.476261,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1107号风机",
+            "aname": "1107",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "7",
+            "spare3": "1447",
+            "spare4": null,
+            "orderNum": 7,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0008_EQ",
+            "nemCode": "1108",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.72927,
+            "latitude": 37.472602,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1108号风机",
+            "aname": "1108",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "8",
+            "spare3": "1441",
+            "spare4": null,
+            "orderNum": 8,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0009_EQ",
+            "nemCode": "1109",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.729235,
+            "latitude": 37.468559,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1109号风机",
+            "aname": "1109",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "9",
+            "spare3": "1432",
+            "spare4": null,
+            "orderNum": 9,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0010_EQ",
+            "nemCode": "1110",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.727167,
+            "latitude": 37.465253,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1110号风机",
+            "aname": "1110",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "10",
+            "spare3": "1430",
+            "spare4": null,
+            "orderNum": 10,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0011_EQ",
+            "nemCode": "1111",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.732237,
+            "latitude": 37.465023,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1111号风机",
+            "aname": "1111",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "11",
+            "spare3": "1450",
+            "spare4": null,
+            "orderNum": 11,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0012_EQ",
+            "nemCode": "1112",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.739645,
+            "latitude": 37.466982,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1112号风机",
+            "aname": "1112",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "12",
+            "spare3": "1437",
+            "spare4": null,
+            "orderNum": 12,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0013_EQ",
+            "nemCode": "1113",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.737633,
+            "latitude": 37.459564,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF01_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1113号风机",
+            "aname": "1113",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "13",
+            "spare3": "1435",
+            "spare4": null,
+            "orderNum": 13,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0014_EQ",
+            "nemCode": "1201",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.749585,
+            "latitude": 37.475633,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1201号风机",
+            "aname": "1201",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "14",
+            "spare3": "1427",
+            "spare4": null,
+            "orderNum": 14,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0015_EQ",
+            "nemCode": "1202",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.738819,
+            "latitude": 37.473768,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1202号风机",
+            "aname": "1202",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "15",
+            "spare3": "1438",
+            "spare4": null,
+            "orderNum": 15,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0016_EQ",
+            "nemCode": "1203",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.749178,
+            "latitude": 37.47019,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1203号风机",
+            "aname": "1203",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "16",
+            "spare3": "1429",
+            "spare4": null,
+            "orderNum": 16,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0017_EQ",
+            "nemCode": "1204",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.749934,
+            "latitude": 37.45629,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1204号风机",
+            "aname": "1204",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "17",
+            "spare3": "1411",
+            "spare4": null,
+            "orderNum": 17,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0018_EQ",
+            "nemCode": "1205",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.741812,
+            "latitude": 37.452802,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1205号风机",
+            "aname": "1205",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "18",
+            "spare3": "1433",
+            "spare4": null,
+            "orderNum": 18,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0019_EQ",
+            "nemCode": "1206",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.748904,
+            "latitude": 37.45046,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1206号风机",
+            "aname": "1206",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "19",
+            "spare3": "1428",
+            "spare4": null,
+            "orderNum": 19,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0020_EQ",
+            "nemCode": "1207",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.742638,
+            "latitude": 37.44609,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1207号风机",
+            "aname": "1207",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "20",
+            "spare3": "1449",
+            "spare4": null,
+            "orderNum": 20,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0021_EQ",
+            "nemCode": "1208",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.737531,
+            "latitude": 37.445886,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1208号风机",
+            "aname": "1208",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "21",
+            "spare3": "1440",
+            "spare4": null,
+            "orderNum": 21,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0022_EQ",
+            "nemCode": "1209",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.732242,
+            "latitude": 37.445485,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1209号风机",
+            "aname": "1209",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "22",
+            "spare3": "1434",
+            "spare4": null,
+            "orderNum": 22,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0023_EQ",
+            "nemCode": "1210",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.726019,
+            "latitude": 37.446099,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1210号风机",
+            "aname": "1210",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "23",
+            "spare3": "1422",
+            "spare4": null,
+            "orderNum": 23,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0024_EQ",
+            "nemCode": "1211",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.721148,
+            "latitude": 37.447939,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1211号风机",
+            "aname": "1211",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "24",
+            "spare3": "1418",
+            "spare4": null,
+            "orderNum": 24,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0025_EQ",
+            "nemCode": "1212",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.718456,
+            "latitude": 37.44546,
+            "modelId": "WT2000D121H85",
+            "status": null,
+            "projectId": "NX_FGS_HAF01_EG",
+            "lineId": "NX_FGS_HAF02_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "1212号风机",
+            "aname": "1212",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "25",
+            "spare3": "1437",
+            "spare4": null,
+            "orderNum": 25,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0026_EQ",
+            "nemCode": "2301",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.776271,
+            "latitude": 37.469756,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2301号风机",
+            "aname": "2301",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "26",
+            "spare3": "1434",
+            "spare4": null,
+            "orderNum": 26,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0027_EQ",
+            "nemCode": "2302",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.784178,
+            "latitude": 37.463058,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2302号风机",
+            "aname": "2302",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "27",
+            "spare3": "1472",
+            "spare4": null,
+            "orderNum": 27,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0028_EQ",
+            "nemCode": "2303",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.784231,
+            "latitude": 37.47168,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2303号风机",
+            "aname": "2303",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "28",
+            "spare3": "1454",
+            "spare4": null,
+            "orderNum": 28,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0029_EQ",
+            "nemCode": "2304",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.793426,
+            "latitude": 37.470403,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2304号风机",
+            "aname": "2304",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "29",
+            "spare3": "1467",
+            "spare4": null,
+            "orderNum": 29,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0030_EQ",
+            "nemCode": "2305",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.78797,
+            "latitude": 37.478704,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2305号风机",
+            "aname": "2305",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "30",
+            "spare3": "1452",
+            "spare4": null,
+            "orderNum": 30,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0031_EQ",
+            "nemCode": "2306",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.790915,
+            "latitude": 37.482621,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2306号风机",
+            "aname": "2306",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "31",
+            "spare3": "1437",
+            "spare4": null,
+            "orderNum": 31,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0032_EQ",
+            "nemCode": "2307",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.80545,
+            "latitude": 37.466728,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2307号风机",
+            "aname": "2307",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "32",
+            "spare3": "1475",
+            "spare4": null,
+            "orderNum": 32,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0033_EQ",
+            "nemCode": "2308",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.811585,
+            "latitude": 37.47125,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2308号风机",
+            "aname": "2308",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "33",
+            "spare3": "1449",
+            "spare4": null,
+            "orderNum": 33,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0034_EQ",
+            "nemCode": "2309",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.801009,
+            "latitude": 37.473251,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2309号风机",
+            "aname": "2309",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "34",
+            "spare3": "1463",
+            "spare4": null,
+            "orderNum": 34,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0035_EQ",
+            "nemCode": "2310",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.800376,
+            "latitude": 37.479943,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2310号风机",
+            "aname": "2310",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "35",
+            "spare3": "1447",
+            "spare4": null,
+            "orderNum": 35,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0036_EQ",
+            "nemCode": "2311",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.806073,
+            "latitude": 37.477536,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2311号风机",
+            "aname": "2311",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "36",
+            "spare3": "1451",
+            "spare4": null,
+            "orderNum": 36,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0037_EQ",
+            "nemCode": "2312",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.812118,
+            "latitude": 37.479865,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2312号风机",
+            "aname": "2312",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "37",
+            "spare3": "1446",
+            "spare4": null,
+            "orderNum": 37,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0038_EQ",
+            "nemCode": "2313",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.806282,
+            "latitude": 37.483176,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF03_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2313号风机",
+            "aname": "2313",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "38",
+            "spare3": "1443",
+            "spare4": null,
+            "orderNum": 38,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0039_EQ",
+            "nemCode": "2401",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.778491,
+            "latitude": 37.463124,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2401号风机",
+            "aname": "2401",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "39",
+            "spare3": "1454",
+            "spare4": null,
+            "orderNum": 39,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0040_EQ",
+            "nemCode": "2402",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.779438,
+            "latitude": 37.457516,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2402号风机",
+            "aname": "2402",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "40",
+            "spare3": "1437",
+            "spare4": null,
+            "orderNum": 40,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0041_EQ",
+            "nemCode": "2403",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.787187,
+            "latitude": 37.455668,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2403号风机",
+            "aname": "2403",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "41",
+            "spare3": "1450",
+            "spare4": null,
+            "orderNum": 41,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0042_EQ",
+            "nemCode": "2404",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.793099,
+            "latitude": 37.458289,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2404号风机",
+            "aname": "2404",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "42",
+            "spare3": "1465",
+            "spare4": null,
+            "orderNum": 42,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0043_EQ",
+            "nemCode": "2405",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.794923,
+            "latitude": 37.462898,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2405号风机",
+            "aname": "2405",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "43",
+            "spare3": "1491",
+            "spare4": null,
+            "orderNum": 43,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0044_EQ",
+            "nemCode": "2406",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.801416,
+            "latitude": 37.461866,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2406号风机",
+            "aname": "2406",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "44",
+            "spare3": "1494",
+            "spare4": null,
+            "orderNum": 44,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0045_EQ",
+            "nemCode": "2407",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.782684,
+            "latitude": 37.451605,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2407号风机",
+            "aname": "2407",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "45",
+            "spare3": "1441",
+            "spare4": null,
+            "orderNum": 45,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0046_EQ",
+            "nemCode": "2408",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.790352,
+            "latitude": 37.45145,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2408号风机",
+            "aname": "2408",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "46",
+            "spare3": "1451",
+            "spare4": null,
+            "orderNum": 46,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0047_EQ",
+            "nemCode": "2409",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.796626,
+            "latitude": 37.451343,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2409号风机",
+            "aname": "2409",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "47",
+            "spare3": "1463",
+            "spare4": null,
+            "orderNum": 47,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0048_EQ",
+            "nemCode": "2410",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.800217,
+            "latitude": 37.455828,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2410号风机",
+            "aname": "2410",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "48",
+            "spare3": "1467",
+            "spare4": null,
+            "orderNum": 48,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0049_EQ",
+            "nemCode": "2411",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.802425,
+            "latitude": 37.45132,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2411号风机",
+            "aname": "2411",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "49",
+            "spare3": "1464",
+            "spare4": null,
+            "orderNum": 49,
+            "substationId": "NX_FGS_HAF01_SBS"
+        },
+        {
+            "id": "NX_FGS_HA_F_WT_0050_EQ",
+            "nemCode": "2412",
+            "windpowerstationId": "NX_FGS_HA_FDC_STA",
+            "longitude": 106.811332,
+            "latitude": 37.451284,
+            "modelId": "UP2000-130",
+            "status": null,
+            "projectId": "NX_FGS_HAF02_EG",
+            "lineId": "NX_FGS_HAF04_LN",
+            "firstIntegratedTime": null,
+            "photo": null,
+            "name": "2412号风机",
+            "aname": "2412",
+            "isStandard": 0,
+            "regionId": "NX_FGS",
+            "companyId": "NX_FGS",
+            "isable": 1,
+            "equipmentCategory": -1,
+            "parentId": null,
+            "squareId": null,
+            "spare1": "WT",
+            "spare2": "50",
+            "spare3": "1485",
+            "spare4": null,
+            "orderNum": 50,
+            "substationId": "NX_FGS_HAF01_SBS"
+        }
+    ],
+    "data": [
+        {
+            "nemCode": "F01",
+            "longitude": 107.064407,
+            "latitude": 37.300002,
+            "name": "F01号风机",
+            "aname": "F01",
+            "status": 1
+        },
+        {
+            "nemCode": "F02",
+            "longitude": 107.060974,
+            "latitude": 37.290272,
+            "name": "F02号风机",
+            "aname": "F02",
+            "status": 2,
+            "height": 13500
+        },
+        {
+            "nemCode": "F03",
+            "longitude": 107.054536,
+            "latitude": 37.304318,
+            "name": "F03号风机",
+            "aname": "F03",
+            "status": 7,
+            "height": 13500
+        },
+        {
+            "nemCode": "F04",
+            "longitude": 107.248872,
+            "latitude": 37.303857,
+            "name": "F04号风机",
+            "aname": "F04",
+            "status": 3,
+            "height": 7500
+        },
+        {
+            "nemCode": "F05",
+            "longitude": 106.94561,
+            "latitude": 37.287527,
+            "name": "F05号风机",
+            "aname": "F05",
+            "status": 7,
+            "height": 14000
+        },
+        {
+            "nemCode": "F06",
+            "longitude": 107.040932,
+            "latitude": 37.200258,
+            "name": "F06号风机",
+            "aname": "F06",
+            "status": 3,
+            "height": 11000
+        },
+        {
+            "nemCode": "F07",
+            "longitude": 107.137435,
+            "latitude": 37.313826,
+            "name": "F07号风机",
+            "aname": "F07",
+            "status": 4,
+            "height": 10000
+        },
+        {
+            "nemCode": "F08",
+            "longitude": 107.032521,
+            "latitude": 37.3063,
+            "name": "F08号风机",
+            "aname": "F08",
+            "status": 5,
+            "height": 14500
+        },
+        {
+            "nemCode": "F09",
+            "longitude": 107.054945,
+            "latitude": 37.359099,
+            "name": "F09号风机",
+            "aname": "F09",
+            "status": 4,
+            "height": 15500
+        },
+        {
+            "nemCode": "F10",
+            "longitude": 107.078616,
+            "latitude": 37.30956,
+            "name": "F10号风机",
+            "aname": "F10",
+            "status": 5,
+            "height": 13000
+        },
+        {
+            "nemCode": "F11",
+            "longitude": 107.023852,
+            "latitude": 37.211062,
+            "name": "F11号风机",
+            "aname": "F11",
+            "status": 7,
+            "height": 12500
+        },
+        {
+            "nemCode": "F12",
+            "longitude": 107.0049,
+            "latitude": 37.27543,
+            "name": "F12号风机",
+            "aname": "F12",
+            "status": 6,
+            "height": 14500
+        },
+        {
+            "nemCode": "F13",
+            "longitude": 107.052777,
+            "latitude": 37.30543,
+            "name": "F13号风机",
+            "aname": "F13",
+            "status": 5
+        },
+        {
+            "nemCode": "F14",
+            "longitude": 107.048614,
+            "latitude": 37.30432,
+            "name": "F14号风机",
+            "aname": "F14",
+            "status": 6
+        },
+        {
+            "nemCode": "F15",
+            "longitude": 107.045696,
+            "latitude": 37.308195,
+            "name": "F15号风机",
+            "aname": "F15",
+            "status": 7
+        },
+        {
+            "nemCode": "F16",
+            "longitude": 107.041447,
+            "latitude": 37.311301,
+            "name": "F16号风机",
+            "aname": "F16",
+            "status": 7
+        }
+    ]
+}

+ 1 - 1
src/views/cesiumComponents/windMap2D.vue

@@ -1028,7 +1028,7 @@ export default {
           maxAge: 60,
           globalAlpha: 0.8,
           velocityScale: 1 / 30,// 粒子移动速度缩放因子(控制动画快慢)
-          paths: 2000,
+          paths: 500,
           lineWidth: 2,
         });
         this.windLayer.addTo(this.viewer);

Разница между файлами не показана из-за своего большого размера
+ 461 - 337
src/views/cesiumComponents/windMap3D.vue


Некоторые файлы не были показаны из-за большого количества измененных файлов