From 7366b0a279425cb6218bec8ba19774e5e8399b91 Mon Sep 17 00:00:00 2001
From: liuyg <liuyg@qq.com>
Date: Tue, 15 Mar 2022 14:34:37 +0800
Subject: [PATCH] +把DC拉出vue实例中,解决vue内存溢出问题

---
 src/pcviews/tool/sign.vue |  358 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 190 insertions(+), 168 deletions(-)

diff --git a/src/pcviews/tool/sign.vue b/src/pcviews/tool/sign.vue
index c79594f..07f42b2 100644
--- a/src/pcviews/tool/sign.vue
+++ b/src/pcviews/tool/sign.vue
@@ -1,188 +1,210 @@
 <template>
-    <public-box class="tool-sign">
-        <template slot="public-box-header">
-            <div class="title">
-                <img class="icon deblurring" src="/img/icon/tool-sign.png" alt />
-                <span>地图标记</span>
-            </div>
-            <img class="btn-box deblurring" @click.stop="addSign" src="/img/navicon/add.png" alt />
-            <img class="close deblurring" src="/img/navicon/close.png" alt @click="closeModel" />
-        </template>
-        <template slot="public-box-content">
-            <div class="list-box" v-loading="loading">
-                <ul v-show="signShow">
-                    <li v-for="(item, index) in signList" :key="index" @click="dingw(item)">
-                        <img src="/img/icon/sign-list.png" alt />
-                        {{ item.name }}
-                        <el-button
-                            type="danger"
-                            size="mini"
-                            icon="el-icon-delete"
-                            circle
-                            @click.stop="deleteIcon(item.id)"
-                        ></el-button>
-                    </li>
-                </ul>
-                <div v-show="!signShow" class="no-data">
-                    <img src="/img/icon/no-data.png" alt />
-                    <div>暂无数据</div>
-                </div>
-            </div>
-        </template>
-    </public-box>
+  <public-box class="tool-sign">
+    <template slot="public-box-header">
+      <div class="title">
+        <img class="icon deblurring" src="/img/icon/tool-sign.png" alt />
+        <span>地图标记</span>
+      </div>
+      <img
+        class="btn-box deblurring"
+        @click.stop="addSign"
+        src="/img/navicon/add.png"
+        alt
+      />
+      <img
+        class="close deblurring"
+        src="/img/navicon/close.png"
+        alt
+        @click="closeModel"
+      />
+    </template>
+    <template slot="public-box-content">
+      <div class="list-box" v-loading="loading">
+        <ul v-show="signShow">
+          <li
+            v-for="(item, index) in signList"
+            :key="index"
+            @click="dingw(item)"
+          >
+            <img src="/img/icon/sign-list.png" alt />
+            {{ item.name }}
+            <el-button
+              type="danger"
+              size="mini"
+              icon="el-icon-delete"
+              circle
+              @click.stop="deleteIcon(item.id)"
+            ></el-button>
+          </li>
+        </ul>
+        <div v-show="!signShow" class="no-data">
+          <img src="/img/icon/no-data.png" alt />
+          <div>暂无数据</div>
+        </div>
+      </div>
+    </template>
+  </public-box>
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
-import { getlabel, deletelabel } from '@/api/pc/label'
+import { mapGetters } from "vuex";
+import { getlabel, deletelabel } from "@/api/pc/label";
 
 export default {
-    data () {
-        return {
-            loading: true,
-            signList: [],
-            signShow: true,
-            destroyedFlag: true
+  data() {
+    return {
+      loading: true,
+      signList: [],
+      signShow: true,
+      destroyedFlag: true,
+    };
+  },
+  computed: {
+    ...mapGetters(["addSignList"]),
+  },
+  mounted() {
+    this.$store.commit("initLabelLayer", global.viewer);
+    this.getData();
+  },
+  watch: {
+    addSignList() {
+      this.getData();
+    },
+  },
+  methods: {
+    dingw(item) {
+      const that = this;
+      // console.log(item);
+      // this.$store.dispatch("mapFlyTo", {
+      //   lntLat: [item.jd, item.wd, 120], //114.04020791, 27.62934732
+      //   heading: 0,
+      //   pitch: -90,
+      //   roll: 0,
+      //   noOpen: true,
+      //   mviewer: that.viewer,
+      // });
+      global.viewer.camera.setView({
+        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+        destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+          item.jd,
+          item.wd,
+          400.0
+        ),
+        orientation: {
+          // 指向
+          heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+          // 视角
+          pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+          roll: 0.0,
+        },
+      });
+    },
+    deleteIcon(id) {
+      const that = this;
+      deletelabel(id).then((res) => {
+        console.log(res);
+        if (res.data.code == 200) {
+          that.$message({
+            message: "删除标签成功",
+            type: "success",
+          });
+        } else {
+          that.$message({
+            message: "删除标签失败",
+            type: "warning",
+          });
         }
+        that.getData();
+      });
     },
-    computed: {
-        ...mapGetters(['addSignList'])
+    getData() {
+      const that = this;
+      that.loading = true;
+      let oks = setTimeout(() => {
+        that.loading = false;
+        that.signShow = false;
+      }, 5000);
+      getlabel().then((res) => {
+        clearTimeout(oks);
+        console.log(res);
+        const data = res.data.data.records;
+        that.signList = data;
+        that.signList.length > 0
+          ? (that.signShow = true)
+          : (that.signShow = false);
+        that.loading = false;
+        // that.$store.commit("clearLabelLayerIcon");
+        that.$store.dispatch("addLabelLayerIcon", {
+          list: data,
+          clear: true,
+        });
+      });
     },
-    mounted () {
-        this.$store.commit('initLabelLayer', global.viewer)
-        this.getData()
+    moveMessage(e, b) {
+      if (b == "") {
+        global.viewer.tooltip.enable = false;
+      } else {
+        global.viewer.tooltip.enable = true;
+        global.viewer.tooltip.showAt(e.windowPosition, b);
+      }
     },
-    watch: {
-        addSignList () {
-            this.getData()
-        }
+
+    addSign() {
+      var that = this;
+      this.$store.commit("set_closeMapClick", true);
+      // console.log("开始", "see");
+      global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
+        that.moveMessage(e, "点击确认标注位置")
+      );
+
+      global.viewer.once(global.DC.MouseEventType.CLICK, (e) => {
+        if (that.destroyedFlag == false) return;
+
+        global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
+          that.moveMessage(e, "")
+        );
+
+        // eslint-disable-next-line no-unused-vars
+        const popup = new global.DC.DivForms(global.viewer, {
+          domId: "AddTagBox",
+          position: [
+            global.DC.Transform.transformWGS84ToCartesian(
+              new global.DC.Position(
+                Number(e.wgs84SurfacePosition.lng),
+                Number(e.wgs84SurfacePosition.lat),
+                Number(e.wgs84SurfacePosition.alt)
+              )
+            ),
+          ],
+        });
+
+        that.$store.commit("SET_ADDTAGPOSITION", e.wgs84SurfacePosition);
+        that.$store.commit("SET_ADDTAGPOPUP", true);
+      });
     },
-    methods: {
-        dingw (item) {
-            const that = this
-            // console.log(item);
-            // this.$store.dispatch("mapFlyTo", {
-            //   lntLat: [item.jd, item.wd, 120], //114.04020791, 27.62934732
-            //   heading: 0,
-            //   pitch: -90,
-            //   roll: 0,
-            //   noOpen: true,
-            //   mviewer: that.viewer,
-            // });
-            global.viewer.camera.setView({
-                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                    item.jd,
-                    item.wd,
-                    400.0
-                ),
-                orientation: {
-                    // 指向
-                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0
-                }
-            })
-        },
-        deleteIcon (id) {
-            const that = this
-            deletelabel(id).then((res) => {
-                console.log(res)
-                if (res.data.code == 200) {
-                    that.$message({
-                        message: '删除标签成功',
-                        type: 'success'
-                    })
-                } else {
-                    that.$message({
-                        message: '删除标签失败',
-                        type: 'warning'
-                    })
-                }
-                that.getData()
-            })
-        },
-        getData () {
-            const that = this
-            getlabel().then((res) => {
-                console.log(res)
-                const data = res.data.data.records
-                that.signList = data
-                that.signList.length > 0 ? that.signShow = true : that.signShow = false
-                that.loading = false
-                // that.$store.commit("clearLabelLayerIcon");
-                that.$store.dispatch('addLabelLayerIcon', {
-                    list: data,
-                    clear: true
-                })
-            })
-        },
-        moveMessage (e, b) {
-            if (b == '') {
-                global.viewer.tooltip.enable = false
-            } else {
-                global.viewer.tooltip.enable = true
-                global.viewer.tooltip.showAt(e.windowPosition, b)
-            }
-        },
 
-        addSign () {
-            var that = this
-            this.$store.commit('set_closeMapClick', true)
-            // console.log("开始", "see");
-            global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
-                that.moveMessage(e, '点击确认标注位置')
-            )
-
-            global.viewer.once(global.DC.MouseEventType.CLICK, (e) => {
-                if (that.destroyedFlag == false) return
-
-                global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
-                    that.moveMessage(e, '')
-                )
-
-                // eslint-disable-next-line no-unused-vars
-                const popup = new global.DC.DivForms(global.viewer, {
-                    domId: 'AddTagBox',
-                    position: [
-                        global.DC.Transform.transformWGS84ToCartesian(
-                            new global.DC.Position(
-                                Number(e.wgs84SurfacePosition.lng),
-                                Number(e.wgs84SurfacePosition.lat),
-                                Number(e.wgs84SurfacePosition.alt)
-                            )
-                        )
-                    ]
-                })
-
-                that.$store.commit('SET_ADDTAGPOSITION', e.wgs84SurfacePosition)
-                that.$store.commit('SET_ADDTAGPOPUP', true)
-            })
-        },
-
-        closeModel () {
-            this.$store.dispatch('delVisitedViews', this.$route)
-            this.$router.push('/pcLayout/default')
-            this.$store.commit('clearLabelLayerIcon')
-        }
+    closeModel() {
+      this.$store.dispatch("delVisitedViews", this.$route);
+      this.$router.push("/pcLayout/default");
+      this.$store.commit("clearLabelLayerIcon");
     },
-    destroyed () {
-        var that = this
-        that.destroyedFlag = false
-        if (global.DC) {
-            global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
-                that.moveMessage(e, '')
-            )
-        }
-        this.$store.commit('clearLabelLayerIcon')
+  },
+  destroyed() {
+    var that = this;
+    that.destroyedFlag = false;
+    if (global.DC) {
+      global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) =>
+        that.moveMessage(e, "")
+      );
     }
-}
+    this.$store.commit("clearLabelLayerIcon");
+  },
+};
 </script>
 
 <style lang="scss" scoped>
 .move {
-    cursor: move;
+  cursor: move;
 }
 </style>

--
Gitblit v1.9.3