From a3dbb8fe40e06f9abd9718f14aaa7311bddbc150 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 13 二月 2025 21:46:05 +0800
Subject: [PATCH] 除了项目中心,其它项目页面都不显示审核状态

---
 src/views/components/Map/index.vue |  296 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 172 insertions(+), 124 deletions(-)

diff --git a/src/views/components/Map/index.vue b/src/views/components/Map/index.vue
index 8a2312c..c81f182 100644
--- a/src/views/components/Map/index.vue
+++ b/src/views/components/Map/index.vue
@@ -1,43 +1,42 @@
 <template>
-  <div>
-    <div :id="id" ref="contentRef" class="w-full h-full">
+  <div :id="id" ref="contentRef" style="height: 100%; width: 100%">
+    <div
+      v-if="isShowControl"
+      :class="controlPosition"
+      class="control-container bottom-right"
+    >
       <div
-        v-if="isShowControl"
-        :class="controlPosition"
-        class="control-container bottom-right"
+        v-for="item in controlMapping"
+        :key="item.id"
+        class="control-content"
       >
-        <div
-          v-for="item in controlMapping"
-          :key="item.id"
-          class="control-content"
-        >
-          <template v-if="item.children">
-            <div
-              v-for="child in item.children"
-              :key="child.id"
-              class="control-item"
-              @click="child.event"
-            >
-              <img :src="child.img" />
-            </div>
-          </template>
-          <template v-else>
-            <div class="control-item" @click="item.event">
-              <img :src="item.img" />
-            </div>
-          </template>
-        </div>
+        <template v-if="item.children">
+          <div
+            v-for="child in item.children"
+            :key="child.id"
+            class="control-item"
+            @click="child.event"
+          >
+            <img :src="child.img" />
+          </div>
+        </template>
+        <template v-else>
+          <div class="control-item" @click="item.event">
+            <img :src="item.img" />
+          </div>
+        </template>
       </div>
     </div>
   </div>
 </template>
-<script setup>
+<script>
 import Location from "@/assets/images/location.png";
 import FileImg from "@/assets/images/file1.png";
 import MinusImg from "@/assets/images/minus.png";
 import PlusImg from "@/assets/images/plus.png";
 import FullScreenImg from "@/assets/images/fullScreen.png";
 import PositionImg from "@/assets/images/position.png";
+var infoWin;
 export default {
   data() {
     return {
@@ -131,9 +130,10 @@
     initTianMap() {
       var T = window.T;
       setTimeout(async () => {
-        this.map = new T.Map(this.id, {
-          projection: "EPSG:4326",
-        });
+        // this.map = new T.Map(this.id, {
+        //     projection: "EPSG:4326",
+        // });
+        this.map = new T.Map(this.id);
         this.map.centerAndZoom(
           new T.LngLat(this.defaultMaskInfo.lon, this.defaultMaskInfo.lat),
           this.zoom
@@ -157,7 +157,7 @@
         } else {
           this.$props.mapList.length && this.makeAllMask(this.$props.mapList);
         }
-      }, 0);
+      }, 1500);
     },
 
     zoomIn() {
@@ -173,33 +173,32 @@
     },
 
     getCurrentPosition() {
-      if (navigator.geolocation) {
-        ElMessage.warning("璇ュ姛鑳芥殏鏈紑鍙�");
-        // TODO 鍦板浘瀹氫綅
-        // navigator.geolocation.getCurrentPosition(function (position) {
-        //   var latitude = position.coords.latitude
-        //   var longitude = position.coords.longitude
-        //
-        //   moveTo(String(longitude), String(latitude))
-        // })
-      } else {
-        ElMessage.warning("褰撳墠娴忚鍣ㄤ笉鏀寔瀹氫綅鍔熻兘");
-      }
+      //   if (navigator.geolocation) {
+      //     ElMessage.warning("璇ュ姛鑳芥殏鏈紑鍙�");
+      //     // TODO 鍦板浘瀹氫綅
+      //     // navigator.geolocation.getCurrentPosition(function (position) {
+      //     //   var latitude = position.coords.latitude
+      //     //   var longitude = position.coords.longitude
+      //     //
+      //     //   moveTo(String(longitude), String(latitude))
+      //     // })
+      //   } else {
+      //     ElMessage.warning("褰撳墠娴忚鍣ㄤ笉鏀寔瀹氫綅鍔熻兘");
+      //   }
     },
 
     moveTo(lon, lat) {
       this.map && this.map.panTo(new T.LngLat(lon, lat));
     },
-
     // 榛樿鐨勭偣鏍囪
     makeDefaultMask(mapInfo) {
-      const { name, lon, lat } = mapInfo
+      const { name, lon, lat } = mapInfo;
       const option = {
         text: name,
         offset: [-35, -45],
         labelBg: "#3369FF",
         labelColor: "#fff",
-        labelClick,
+        labelClick: this.labelClick,
       };
       // 娓呴櫎涔嬪墠鐨勬爣璁�
       this.map && this.map.clearOverLays();
@@ -214,12 +213,15 @@
       const { lat, lng: lon } = e.lnglat;
 
       this.makeDefaultMask({
-        ...defaultMaskInfo,
+        ...this.defaultMaskInfo,
         lon: String(lon),
         lat: String(lat),
       });
       this.getReverseGeocode(e).then((addr) => {
-        this.$emit("mapClick", { e, addr });
+        this.$emit("mapClick", {
+          e,
+          addr,
+        });
       });
       console.log("鐐瑰嚮浜嬩欢", e);
     },
@@ -259,15 +261,12 @@
           ${row.projectName ?? "鏆傛棤鏁版嵁"}
         </div>
         <div class='close-btn close-btn-${random}'>
-          脳
         </div>
       </div>
       <div class="detail-info">
-        <span class="truncate-content">鎬绘姇璧勶細${
-          row.totalMoney ?? "鏆傛棤鏁版嵁"
-        }</span>
+        <span class="truncate-content">鎬绘姇璧勶細${row.totalMoney || ""}</span>
         <span class="truncate-content">
-          椤圭洰鐘舵�侊細
+          椤圭洰鐘舵�侊細${this.showProjectStatusStr(row.projectStatus)}
         </span>
          <span class="truncate-content">
           椤圭洰鍦板潃锛�${row.projectAddr ?? "鏆傛棤鏁版嵁"}
@@ -280,22 +279,46 @@
     </div>`;
       }
     },
+    showProjectStatusStr(status) {
+      switch (status) {
+        case "1":
+          return "鍌ㄥ椤圭洰";
+        case "2":
+          return "鍓嶆湡椤圭洰";
+        case "3":
+          return "瀹炴柦椤圭洰";
+        case "4":
+          return "绔e伐椤圭洰";
+        case "5":
+          return "寮傚父椤圭洰";
 
+        default:
+          return "寮傚父椤圭洰";
+      }
+    },
     // 鍞竴鏍囪瘑
     getUniqueId() {
       return Math.random().toString(36).substr(2) + Date.now();
     },
 
-    markerMouseover(_e, infoWin, info, random) {
+    markerMouseover(_e, info, random, markerOptions) {
+      if (infoWin) this.map.removeOverLay(infoWin);
       // 鐐逛綅鏍囪绉诲叆鏄剧ず涓嶅悓鍐呭
       if (this.$props.isShowControl) {
+        infoWin = new T.InfoWindow();
         infoWin.setContent(this.generateContent(info, random));
-        const contentWrapper = document.querySelector(
-          ".tdt-infowindow-content-wrapper"
-        );
-        if (contentWrapper) {
-          contentWrapper.style.opacity = "1";
-        }
+        infoWin.setLngLat(_e.lnglat);
+        // 鍚戝湴鍥句笂娣诲姞淇℃伅绐楀彛
+        // if (this.$props.mapType) {
+        this.map && this.map.addOverLay(infoWin);
+        // }
+
+        // const contentWrapper = document.querySelector(
+        //   ".tdt-infowindow-content-wrapper"
+        // );
+        // if (contentWrapper) {
+        //   contentWrapper.style.opacity = "1";
+        // }
         // 鏌ユ壘鍒伴偅涓猧nfo 鐣岄潰
         // const allCloseBtn = document.querySelectorAll(`.close-btn-${random}`);
         // allCloseBtn[allCloseBtn.length - 1].onclick = (_e) => {
@@ -304,85 +327,109 @@
       }
     },
 
-    markerMouseout(_e, infoWin) {
-      infoWin.setContent(this.generateContent());
-      const contentWrapper = document.querySelector(
-        ".tdt-infowindow-content-wrapper"
-      );
-      if (contentWrapper) {
-        contentWrapper.style.opacity = "0";
-      }
+    markerMouseout(_e) {
+      // infoWin.setContent(this.generateContent());
+      // const contentWrapper = document.querySelector(
+      //   ".tdt-infowindow-content-wrapper"
+      // );
+      // if (contentWrapper) {
+      //   contentWrapper.style.opacity = "0";
+      // }
+      // this.map.removeOverLay(infoWin);
     },
 
     // 鎵撴爣璁�
     makeMask(lon, lat, options) {
-      const { markerOptions, labelOptions } = options;
-      console.log("options", markerOptions, labelOptions);
-      const icon = new T.Icon({
-        iconUrl: Location,
-        iconSize: new T.Point(19, 27),
-        iconAnchor: new T.Point(10, 25),
-      });
-      var marker = new T.Marker(new T.LngLat(lon, lat), {
-        icon,
-        id: markerOptions?.id,
-      });
-      this.map && this.map.addOverLay(marker);
-      const label = new T.Label({
-        text: labelOptions.text,
-        position: new T.LngLat(lon, lat),
-        offset: new T.Point(...labelOptions.offset),
-        id: labelOptions?.id,
-      });
+      if (lon && lat) {
+        const { markerOptions, labelOptions } = options;
 
-      labelOptions.labelBg && label.setBackgroundColor(labelOptions.labelBg);
-      labelOptions.labelColor && label.setFontColor(labelOptions.labelColor);
-      //鍒涘缓鍦板浘鏂囨湰瀵硅薄
-      if (!this.$props.mapType) {
-        this.map && this.map.addOverLay(label);
+        const icon = new T.Icon({
+          iconUrl: Location,
+          iconSize: new T.Point(19, 27),
+          iconAnchor: new T.Point(10, 25),
+        });
+
+        var marker = new T.Marker(new T.LngLat(lon, lat), {
+          icon,
+          id: markerOptions?.id,
+        });
+
+        this.map && this.map.addOverLay(marker);
+        const label = new T.Label({
+          text: labelOptions.text,
+          position: new T.LngLat(lon, lat),
+          offset: new T.Point(...labelOptions.offset),
+          id: labelOptions?.id,
+        });
+
+        labelOptions.labelBg && label.setBackgroundColor(labelOptions.labelBg);
+        labelOptions.labelColor && label.setFontColor(labelOptions.labelColor);
+        //鍒涘缓鍦板浘鏂囨湰瀵硅薄
+        if (!this.$props.mapType) {
+          this.map && this.map.addOverLay(label);
+        }
+        markerOptions?.markerClick &&
+          this.addEvent(marker, "click", (e) =>
+            markerOptions.markerClick(label, e)
+          );
+        labelOptions?.labelClick &&
+          this.addEvent(label, "click", (e) =>
+            labelOptions.labelClick(label, e)
+          );
+
+        this.addEvent(marker, "mouseover", (e) =>
+          this.markerMouseover(e, options, this.getUniqueId(), markerOptions)
+        );
+        this.addEvent(marker, "mouseout", (e) => this.markerMouseout(e));
       }
-      markerOptions?.markerClick &&
-        this.addEvent(marker, "click", (e) => markerOptions.markerClick(label, e));
-      labelOptions?.labelClick &&
-      this.addEvent(label, "click", (e) => labelOptions.labelClick(label, e));
-
-      const lnglat = new T.LngLat(lon, lat);
-      const infoWin = new T.InfoWindow(this.generateContent(), {
-        id: markerOptions?.id,
-        offset: new T.Point(0, -15),
-        closeButton: false,
-      });
-
-      infoWin.setLngLat(lnglat);
-      // 鍚戝湴鍥句笂娣诲姞淇℃伅绐楀彛
-      if (this.$props.mapType) {
-        this.map && this.map.addOverLay(infoWin);
-      }
-
-      this.addEvent(marker, "mouseover", (e) =>
-        markerMouseover(e, infoWin, labelOptions, getUniqueId())
-      );
-      this.addEvent(marker, "mouseout", (e) => markerMouseout(e, infoWin));
     },
 
     // 鏍囪鎵�鏈夌偣
     makeAllMask(mapList) {
+      // 娓呴櫎涔嬪墠鐨勬爣璁�
+      this.map && this.map.clearOverLays();
+      var minX = mapList[0].longitude;
+      var maxX = mapList[0].longitude;
+      var minY = mapList[0].latitude;
+      var maxY = mapList[0].latitude;
       var _this = this;
-      this.mapList.map((item) => {
+      mapList.map((item) => {
         const config = {
           markerOptions: {
             id: item.id,
-            markerClick: _this.markerClick,
+            //  markerClick: _this.markerClick,
           },
           labelOptions: {
-            text: item.name,
+            text: item.projectName,
             offset: [-45, -45],
             id: item.id,
-            markerClick: _this.labelClick,
+            //   markerClick: _this.labelClick,
           },
+          projectName: item.projectName,
+          totalMoney: item.yearInvestAmount
+            ? item.yearInvestAmount + "鍏�"
+            : "鏆傛棤鏁版嵁",
+          projectAddr: item.projectAddress,
+          projectStatus: item.usedStatus,
         };
-        _this.makeMask(item.lon, item.lat, config);
+        _this.makeMask(item.longitude, item.latitude, config);
+        if (item.longitude && item.longitude > maxX) {
+          maxX = item.longitude;
+        }
+        if (item.longitude && item.longitude < minX) {
+          minX = item.longitude;
+        }
+        if (item.latitude && item.latitude > maxY) {
+          maxY = item.latitude;
+        }
+        if (item.latitude && item.latitude < minY) {
+          minY = item.latitude;
+        }
       });
+      this.moveTo(
+        (parseFloat(maxX) + parseFloat(minX)) / 2,
+        (parseFloat(maxY) + parseFloat(minY)) / 2
+      );
     },
 
     // 閫氱敤娣诲姞浜嬩欢鐨勬柟娉�
@@ -401,7 +448,7 @@
     //鏍囪鐐瑰嚮浜嬩欢
     markerClick(currentLabel, e) {
       const id = e.target.options.id;
-      currentLabelStyleChange(currentLabel);
+      this.currentLabelStyleChange(currentLabel);
       console.log("鐐瑰嚮浜嬩欢", e, currentLabel);
       this.getReverseGeocode(e).then((addr) => {
         this.$emit(
@@ -415,9 +462,10 @@
 
     // label鐐瑰嚮浜嬩欢
     labelClick(currentLabel, e) {
+      console.log("瑙﹀彂鐐瑰嚮浜嬩欢");
       const id = e.target.options.id;
-      currentLabelStyleChange(currentLabel);
-      getReverseGeocode(e).then((addr) => {
+      this.currentLabelStyleChange(currentLabel);
+      this.getReverseGeocode(e).then((addr) => {
         this.$emit(
           "labelClick",
           id
@@ -449,7 +497,7 @@
       },
     },
   },
-  beforeUnmount() {
+  beforeDestroy() {
     this.map = null;
   },
 };
@@ -576,10 +624,10 @@
 //}
 
 .tdt-infowindow-tip-container {
-  opacity: 0;
+  opacity: 1;
 }
 
 .tdt-infowindow-content-wrapper {
-  opacity: 0;
+  opacity: 1;
 }
 </style>

--
Gitblit v1.8.0