hejianhao
2026-01-24 2a36bd4af2af903919f3650055de03e9493fea5f
fix(home): 修复项目地图点位定位和悬浮窗显示问题

调整项目地图点位数据匹配逻辑,从使用 `id` 改为 `projectId`。
简化位置信息获取,直接使用 `longitude` 和 `latitude` 字段。
修复悬浮窗显示时传递的数据字段。
同时优化 `dateRange` 监听器,在日期变化时重新获取项目列表。
1个文件已修改
51 ■■■■■ 已修改文件
screen/src/view/home/index.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/home/index.vue
@@ -781,6 +781,18 @@
          this.dateTxt = "";
        }
        this.getScreenData();
        let params = {
          startDate: "",
          endDate: "",
          clientId: localStorage.getItem("clientId"),
        };
        if (newVal.length > 0) {
          params.startDate = moment(this.dateRange[0]).format("YYYY-MM-DD");
          params.endDate = moment(this.dateRange[1]).format("YYYY-MM-DD");
        }
        getProjectSelect(params).then((res) => {
          this.projectList = res;
        });
      },
      immediate: true,
    },
@@ -791,11 +803,6 @@
      version: "2.0",
    });
    this.getStoryData();
    getProjectSelect({ clientId: localStorage.getItem("clientId") }).then(
      (res) => {
        this.projectList = res;
      }
    );
    getWorkPresentationList({
      clientId: localStorage.getItem("clientId"),
      state: 1,
@@ -913,39 +920,27 @@
      if (!this.projectId) {
        return;
      }
      const target = this.screenData.projectMapPoints.find(
        (item) => item.id === this.projectId
        (item) => item.projectId === this.projectId
      );
      if (!target) {
      if (Object.keys(target).length == 0) {
        this.$message.warning("无此项目地图点位");
        return;
      }
      let position = null;
      if (target.addressInfo) {
        try {
          const info =
            typeof target.addressInfo === "string"
              ? JSON.parse(target.addressInfo)
              : target.addressInfo;
          if (info.gps && info.gps.length) {
            position = [Number(info.gps[0]), Number(info.gps[1])];
          }
        } catch (e) {
          console.error("解析项目地址信息失败", e);
        }
      }
      if (position) {
      if (target.longitude && target.latitude) {
        // 定位地图
        this.mapView.setZoomAndCenter(15, position);
        this.mapView.setZoomAndCenter(15, [
          Number(target.longitude),
          Number(target.latitude),
        ]);
        // 显示悬浮窗
        this.showTooltip(null, {
          id: target.id,
          position: position,
          projectId: target.projectId,
          position: [Number(target.longitude), Number(target.latitude)],
        });
      } else {
        this.$message.warning("该项目暂无位置信息");
@@ -1083,7 +1078,7 @@
          ...item,
          position: [Number(item.longitude), Number(item.latitude)],
          category: category,
          level: item.category ? item.category.splice(0, 1) : "",
          level: item.category,
        };
      });
      const markers = [];