From 7f6661cca40e3530111d628222fa25462022ec78 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 04 九月 2025 18:25:36 +0800
Subject: [PATCH] 2025.9.4

---
 src/utils/map/dialog.js |  136 ++++++++++++++++++++++++++-------------------
 1 files changed, 79 insertions(+), 57 deletions(-)

diff --git a/src/utils/map/dialog.js b/src/utils/map/dialog.js
index 443f87b..c7403eb 100644
--- a/src/utils/map/dialog.js
+++ b/src/utils/map/dialog.js
@@ -1,18 +1,17 @@
+import $ from 'jquery';
 import { factorName } from '@/constant/factor-name';
 import { factorUnit } from '@/constant/factor-unit';
 import { windDir } from '@/constant/wind-dir';
 import { map } from './index_old';
+import { checkboxOptions } from '@/constant/checkbox-options';
+import { useToolboxStore } from '@/stores/toolbox';
+
+const toolboxStore = useToolboxStore();
 
 export const DialogUtil = {
-  show: true,
-  toggleDataDialog() {
-    this.show = !this.show;
-    if (this.show) {
-      return '鏁版嵁寮规锛氬紑';
-    } else {
-      return '鏁版嵁寮规锛氬叧';
-    }
-  },
+  // 褰撳墠鎵撳紑鐨勫脊妗嗗強浣嶇疆鍧愭爣
+  marker: undefined,
+  lnglat: undefined,
   /**
    * 鍒涘缓寮瑰嚭妗�
    * @param {*} factorDatas 鐩戞祴鏁版嵁
@@ -20,8 +19,10 @@
    * @param {*} onClose 鍏抽棴寮瑰嚭妗嗗洖璋�
    * @returns
    */
-  createInfoWindow(factorDatas, i, onClose) {
+  createInfoWindow(deviceType, deviceCode, factorDatas, i, onClose) {
     let m = {
+      deviceType: deviceType,
+      deviceCode: deviceCode,
       data: factorDatas,
       index: i,
       window: '',
@@ -32,27 +33,12 @@
       isCustom: true, //浣跨敤鑷畾涔夌獥浣�
       content: this.createWindowContent(m),
       // eslint-disable-next-line no-undef
-      offset: new AMap.Pixel(16, -45)
+      offset: new AMap.Pixel(16, -45),
+      autoMove: false
     });
-    return m.window;
+    return m;
   },
 
-  createInfoWindow2(factorData, onClose) {
-    let m = {
-      time: factorData.time,
-      factorList: factorData.values,
-      window: '',
-      close: onClose
-    };
-    // eslint-disable-next-line no-undef
-    m.window = new AMap.InfoWindow({
-      isCustom: true, //浣跨敤鑷畾涔夌獥浣�
-      content: this.createWindowContent2(m),
-      // eslint-disable-next-line no-undef
-      offset: new AMap.Pixel(16, -45)
-    });
-    return m.window;
-  },
   /**
    * 绔欑偣鏍囪淇℃伅绐椾綋
    */
@@ -71,12 +57,13 @@
   },
 
   createWindowContent2(marker) {
+    const factorTypes = checkboxOptions(marker.deviceType);
     const time = marker.time;
     const factorList = marker.factorList;
     //瀹炰緥鍖栦俊鎭獥浣�
-    // var title = '<div>' + site.name + '</div>' + '<div class="sub-title">缂栧彿:' + site.code + '</div>',
-    var title = '',
-      content = '',
+    // var title = '<div class="time">缂栧彿:' + marker.deviceCode + '</div>';
+    var title = '缂栧彿:' + marker.deviceCode;
+    var content = '',
       tag = '';
 
     tag += "<div class='time'>" + '鏃堕棿: ' + time;
@@ -86,14 +73,17 @@
     var _contents = new Map();
     factorList.forEach((f) => {
       // 鍒犻�変笉鏄剧ず鐨勫洜瀛�
-      if (
-        f.factorName == 'NOI' ||
-        f.factorName == 'LNG' ||
-        f.factorName == 'LAT' ||
-        f.factorName == 'VELOCITY' ||
-        f.factorName == 'TIME' ||
-        f.factorName == 'HEIGHT'
-      ) {
+      // if (
+      //   f.factorName == 'NOI' ||
+      //   f.factorName == 'LNG' ||
+      //   f.factorName == 'LAT' ||
+      //   f.factorName == 'VELOCITY' ||
+      //   f.factorName == 'TIME' ||
+      //   f.factorName == 'HEIGHT'
+      // ) {
+      //   return;
+      // }
+      if (!factorTypes.find((v) => v.name == f.factorName)) {
         return;
       }
 
@@ -103,7 +93,7 @@
         n = 0;
       }
       var v = f.factorData.toFixed(n);
-      var unit = factorUnit[f.factorName];
+      var unit = factorUnit[f.factorName].unit;
       if (f.factorName == 'CO') {
         unit = '渭g/m鲁';
       }
@@ -125,6 +115,7 @@
     var orderList = [
       'VOC',
       'H2S',
+      'NO',
       'NO2',
       'CO',
       'SO2',
@@ -137,7 +128,10 @@
       'WIND_DIRECTION'
     ];
     orderList.forEach((e) => {
-      content += _contents.get(e);
+      const c = _contents.get(e);
+      if (c != undefined) {
+        content += c;
+      }
     });
 
     // content +=
@@ -160,14 +154,15 @@
     var top_t = document.createElement('div');
     top_t.className = 'ff-border-top';
     var top_c = document.createElement('div');
-    top_c.className = 'ff-border-content flexbox flex-space-between';
+    top_c.className = 'text-clz ff-border-content flexbox flex-space-between';
 
     var titleD = document.createElement('div');
-    var closeX = document.createElement('i');
-    titleD.innerHTML = title;
-    closeX.className = 'fa fa-times';
-    // eslint-disable-next-line no-undef
+    var closeX = document.createElement('div');
+    $(titleD).text(title);
+    // titleD.className = 'time';
+    closeX.className = 'text-close';
     $(closeX).attr('aria-hidden', 'true');
+    $(closeX).text('X');
     closeX.onclick = function () {
       marker.close();
       marker.window.close();
@@ -187,11 +182,8 @@
     refreshV.className = 'refresh-btn';
     var refresh = document.createElement('i');
     refresh.className = 'fa fa-refresh';
-    // eslint-disable-next-line no-undef
     $(refresh).attr('aria-hidden', 'true');
-    // eslint-disable-next-line no-undef
     $(refresh).css('color', '#ffffffc0');
-    // eslint-disable-next-line no-undef
     $(refresh).css('cursor', 'pointer');
     refresh.onclick = function () {
       //   $(this).addClass('fa-spin')
@@ -248,15 +240,45 @@
     return info;
   },
 
-  openNewWindow(factorDatas, i, onClose) {
-    if (!this.show) return;
-    const window = this.createInfoWindow(factorDatas, i, onClose);
-    window.open(map, factorDatas.lnglats_GD[i]);
+  /**
+   * 寮�鍚竴涓柊鐨勬暟鎹脊妗�
+   * @param {String} deviceType 璁惧绫诲瀷
+   * @param {String} deviceCode 璁惧缂栧彿
+   * @param {Array} factorDatas 鐩戞祴鏁版嵁
+   * @param {Number} i 鏁版嵁绱㈠紩
+   * @param {Function} onClose 寮规鍏抽棴鍥炶皟
+   * @returns
+   */
+  openNewWindow(deviceType, deviceCode, factorDatas, i, onClose) {
+    if (!toolboxStore.dataDialogStatus) return;
+    this.marker = this.createInfoWindow(
+      deviceType,
+      deviceCode,
+      factorDatas,
+      i,
+      onClose
+    );
+    this.marker.window.open(map, factorDatas.lnglats_GD[i]);
+    this.lnglat = factorDatas.lnglats_GD[i];
   },
 
-  openNewWindow2(factorData, position, onClose) {
-    if (!this.show) return;
-    const window = this.createInfoWindow2(factorData, onClose);
-    window.open(map, position);
+  /**
+   * 鎵撳紑缂撳瓨涓殑寮规
+   */
+  openWindow() {
+    if (this.marker && this.lnglat) {
+      // this.marker.close();
+      this.marker.window.open(map, this.lnglat);
+    }
+  },
+
+  /**
+   * 鍏抽棴宸插脊鍑虹殑寮规
+   */
+  closeWindow() {
+    if (this.marker) {
+      // this.marker.close();
+      this.marker.window.close();
+    }
   }
 };

--
Gitblit v1.9.3