董国庆
2026-01-30 3ea367398d83cc5774fec08dee8279d137802cbd
修改
5个文件已修改
130 ■■■■■ 已修改文件
screen/.env.development 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/hiddenDanger/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/planOfAudit/index.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/projectHome/index.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/projectList/service.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/.env.development
@@ -1,7 +1,7 @@
# 开发环境配置
# 主API地址
VUE_APP_BASE_URL=http://192.168.110.64:9908
VUE_APP_BASE_URL=http://221.182.45.100:8180
# 图片回显地址
VUE_APP_IMAGE_BASE_URL=http://221.182.45.100:8180
screen/src/view/hiddenDanger/index.vue
@@ -863,7 +863,7 @@
          return;
        }
        const res = await getProjectList({ clientId: clientId, projectCategory: ["ongoing", "fixed"][localStorage.getItem('activeTab') - 1] });
        const res = await getProjectList({ clientId: clientId, projectCategory: this.projectCategory });
        if (res && res) {
          this.projectList = res.map((item) => ({
            label: item.name,
@@ -972,8 +972,8 @@
    // 获取隐患等级文本
    getLevelText(level) {
      return this.levelOptions[level].label || '-'
    },
screen/src/view/planOfAudit/index.vue
@@ -445,6 +445,9 @@
      loading: false,
      showPreview: false, // 是否显示预览
      // 图片基础路径
      VUE_APP_IMAGE_BASE_URL: process.env.VUE_APP_IMAGE_BASE_URL,
      // 枚举映射
      planTypeMap: planTypeMap, // 计划类型映射
      riskLevelMap: {
@@ -585,7 +588,7 @@
    // 打开检查资料列表弹窗
    async openCheckMaterialDialog(row) {
      this.currentRow = row;
      this.currentPlanId = row.id;
      this.currentPlanId = row.planId;
      this.projectVisible = true;
      await this.getCheckMaterialList();
    },
@@ -888,15 +891,32 @@
      return "-";
    },
    // 处理图片数组(字符串转数组)
    // 处理图片数组(字符串转数组,并拼接完整URL)
    parseImages(imgStr) {
      if (!imgStr) return [];
      if (Array.isArray(imgStr)) return imgStr;
      try {
        return imgStr.split(",").filter((item) => item);
      } catch (error) {
        return [];
      let imgArray = [];
      // 如果已经是数组,直接使用
      if (Array.isArray(imgStr)) {
        imgArray = imgStr;
      } else {
        // 如果是字符串,按逗号分割
        try {
          imgArray = imgStr.split(",").filter((item) => item);
        } catch (error) {
          return [];
        }
      }
      // 拼接完整的图片URL(参考header的方式)
      return imgArray.map((img) => {
        // 如果已经是完整URL(http或https开头),直接返回
        if (img.startsWith('http://') || img.startsWith('https://')) {
          return img;
        }
        // 否则拼接基础路径
        return this.VUE_APP_IMAGE_BASE_URL + '/project/download/' + img;
      });
    },
    // 预览图片
screen/src/view/projectHome/index.vue
@@ -17,10 +17,10 @@
          <template #content>
            <div class="project-info">
              <div class="info-item">
                <!-- <div class="flex2 flex">
                  <div class="label">项目编号</div>
                  <div class="value">{{ projectInfo.code || '-' }}</div>
                </div> -->
                <div class="flex2 flex">
                  <div class="label">项目规模</div>
                  <div class="value">{{ `${projectInfo.scale}平方米` || '-' }}</div>
                </div>
                <div class="flex1 flex">
                  <div class="label">工程类型</div>
                  <div class="value">{{ ['房建工程','市政工程','固定资产'][projectInfo.type] }}</div>
@@ -399,6 +399,7 @@
    return {
      mapView: null,
      mapPromise: null,
      currentMarker: null, // 保存当前的 marker 实例
      dateRange: [moment().subtract(5, 'months').startOf("month"), moment().endOf("month")], //默认近6个月
      markers: [],
      projectId: '',
@@ -520,7 +521,7 @@
      this.projectId = this.$route.query.projectId || ''
      // 添加错误处理,确保登录信息获取失败不影响其他模块
      getLoginInfo({ id: this.projectId, type: 2 }).then(res => {
        this.projectName = res.name
        const permissions = res.permissionProject ? res.permissionProject.split(",") : []
        this.permissionProject = permissions
@@ -544,9 +545,14 @@
  mounted() {
    this.setMapload()
    setTimeout(() => {
      this.initRiskChart()
    }, 1000)
  },
  activated() {
    // 当从其他页面返回时,重新设置地图 marker
    if (this.mapView && this.projectInfo.type !== undefined) {
      this.updateMapMarker()
    }
  },
  beforeDestroy() { },
  methods: {
@@ -663,7 +669,7 @@
        });
        const contentType = response.headers.get('Content-Type') || '';
        // 判断是否为视频
        if (contentType.startsWith('video/')) {
@@ -731,7 +737,12 @@
          developmentCompanyInfo: developmentCompanyInfo,
          supervisorCompanyInfo: supervisorCompanyInfo,
        }
        // 项目信息加载完成后,更新地图 marker
        this.$nextTick(() => {
          this.updateMapMarker()
        })
      }).catch(err => {
        console.error('获取项目详情失败:', err)
        // 设置默认值
@@ -768,7 +779,7 @@
      // 隐患数量 - 添加错误处理
      getDangerCount(this.projectId).then(res => {
        this.dangerCount = res
      }).catch(err => {
        console.error('获取隐患数量失败:', err)
        this.dangerCount = {
@@ -935,25 +946,44 @@
            layers: [satellite],
          });
          // 在地图中心添加marker
          const marker = new AMap.Marker({
            position: [104.065617, 30.65695], // 使用地图中心点坐标
            icon: new AMap.Icon({
              image:[require('../../assets/img/home/f4.png'),require('../../assets/img/home/s4.png'),require('../../assets/img/home/z4.png')][this.projectInfo.type] ,
              size: new AMap.Size(30, 30),
              imageSize: new AMap.Size(30, 30)
            }),
            offset: new AMap.Pixel(-15, -15) // 设置偏移量,使图标中心对准坐标点
          });
          // 将marker添加到地图
          this.mapView.add(marker);
          // 初始化时不立即添加 marker,等待项目信息加载完成后再添加
          // this.initCategoryMarkers(AMap);
        })
        .catch((e) => {
          console.error(e); //加载错误提示
        });
    },
    // 更新地图 marker
    updateMapMarker() {
      if (!this.mapView) return;
      // 清除旧的 marker
      if (this.currentMarker) {
        this.mapView.remove(this.currentMarker);
      }
      // 根据项目类型选择图标
      const iconImages = [
        require('../../assets/img/home/f4.png'),
        require('../../assets/img/home/s4.png'),
        require('../../assets/img/home/z4.png')
      ];
      const iconImage = iconImages[this.projectInfo.type] || iconImages[0];
      // 创建新的 marker
      this.currentMarker = new AMap.Marker({
        position: [104.065617, 30.65695],
        icon: new AMap.Icon({
          image: iconImage,
          size: new AMap.Size(30, 30),
          imageSize: new AMap.Size(30, 30)
        }),
        offset: new AMap.Pixel(-15, -15)
      });
      // 将 marker 添加到地图
      this.mapView.add(this.currentMarker);
    },
    // 初始化 3D 环饼图(echarts-gl)
    initPie3D() {
@@ -1323,7 +1353,7 @@
      // 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
      for (let i = 0; i < series.length; i++) {
        endValue = startValue + series[i].pieData.value;
        series[i].pieData.startRatio = startValue / sumValue;
        series[i].pieData.endRatio = endValue / sumValue;
        series[i].parametricEquation = this.getParametricEquation(
@@ -1407,7 +1437,7 @@
      try {
        const res = await getProjectDangerousTrend(params);
        if (res && Array.isArray(res)) {
          // 处理接口返回的数据
@@ -1415,7 +1445,7 @@
          // 将A、B、C转换为数值 3、2、1
          this.riskTrendData.seriesData = res.map(item => {
            const value = this.levelToValue(item.level);
            return value;
          });
@@ -2298,13 +2328,13 @@
        .progress-num {
          font-weight: 800;
          font-size: 18px;
          font-size: 14px;
          color: #66ffff;
        }
        .progress-unit {
          font-weight: 800;
          font-size: 12px;
          font-size: 10px;
          color: #66ffff;
          margin-left: 2px;
        }
screen/src/view/projectList/service.js
@@ -40,7 +40,7 @@
          // 抛出错误信息
          return Promise.reject({
            message: errorData.message || errorData.msg || '操作失败',
            message: errorData.errorMsg || errorData.msg || '操作失败',
            data: errorData
          })
        } catch (e) {