zxl
2026-03-23 b924e4fe906c3e1b4e804ed9d073e09db76fc710
修改
3个文件已修改
13个文件已添加
82 ■■■■ 已修改文件
src/image/三轮车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/中型货车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/中型轿车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/保时捷.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/image/公交车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/小车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/挖掘机.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/摩托车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/油罐车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/自行车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/货车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/轻型货车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/image/重型货车.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analysisScreen/operationBigdata.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/Analysis.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataAnalysis/components/CarInfoDetail.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/image/ÈýÂÖ³µ.png
src/image/ÖÐÐÍ»õ³µ.png
src/image/ÖÐÐͽγµ.png
src/image/±£Ê±½Ý.jpg
src/image/¹«½»³µ.png
src/image/С³µ.png
src/image/ÍÚ¾ò»ú.png
src/image/ĦÍгµ.png
src/image/Ó͹޳µ.png
src/image/×ÔÐгµ.png
src/image/»õ³µ.png
src/image/ÇáÐÍ»õ³µ.png
src/image/ÖØÐÍ»õ³µ.png
src/views/analysisScreen/operationBigdata.vue
@@ -48,13 +48,13 @@
                <div class="icon_name">加油数量</div>
                <div class="icon_num">{{ overviewData.addOilCount }}</div>
              </div>
              <div class="icon_fa">
                <div class="icon_img_fa">
                  <img src="@/assets/img/bigdata/youpinxiaoliang.png" alt="" />
                </div>
                <div class="icon_name">油品销量</div>
                <div class="icon_num">{{ overviewData.saleOilCount }}</div>
              </div>
<!--              <div class="icon_fa">-->
<!--                <div class="icon_img_fa">-->
<!--                  <img src="@/assets/img/bigdata/youpinxiaoliang.png" alt="" />-->
<!--                </div>-->
<!--                <div class="icon_name">油品销量</div>-->
<!--                <div class="icon_num">{{ overviewData.saleOilCount }}</div>-->
<!--              </div>-->
            </div>
            <div class="pie_chart_ct">
@@ -77,28 +77,28 @@
              <div class="info_item">
                <div class="info_num">{{ customerStatData.prospectCount }}</div>
                <div class="info_name">潜在客户</div>
                <!-- <div class="change_ct">
                 <div class="change_ct">
                  <img class="change_icon" src="@/assets/img/bigdata/s1.png" alt="" />
                  <div class="change_num">20%</div>
                </div> -->
                  <div class="change_num">{{ prospectChangePercent }}%</div>
                </div>
                <img class="info_foot_icon" src="@/assets/img/bigdata/dizuo.png" alt="" />
              </div>
              <div class="info_item">
                <div class="info_num">{{ customerStatData.generalCustomerCount }}</div>
                <div class="info_name">一般客户</div>
                <!-- <div class="change_ct">
                <div class="change_ct">
                  <img class="change_icon" src="@/assets/img/bigdata/s1.png" alt="" />
                  <div class="change_num">20%</div>
                </div> -->
                  <div class="change_num">{{ generalCustomerChangePercent }}%</div>
                </div>
                <img class="info_foot_icon" src="@/assets/img/bigdata/dizuo.png" alt="" />
              </div>
              <div class="info_item">
                <div class="info_num">{{ customerStatData.loyalCustomerCount }}</div>
                <div class="info_name">忠实客户</div>
                <!-- <div class="change_ct">
                  <img class="change_icon" src="@/assets/img/bigdata/s1.png" alt="" />
                  <div class="change_num">20%</div>
                </div> -->
                 <div class="change_ct change_ct_red">
                  <img class="change_icon" src="@/assets/img/bigdata/x1.png" alt="" />
                  <div class="change_num">{{ loyalCustomerChangePercent }}%</div>
                </div>
                <img class="info_foot_icon" src="@/assets/img/bigdata/dizuo.png" alt="" />
              </div>
            </div>
@@ -235,6 +235,9 @@
      salesStatData: {}, //销售趋势数据
      updateDataTimer: null,
      localInfo: {},
      prospectChangePercent: 0, //潜在客户变化百分比
      generalCustomerChangePercent: 0, //一般客户变化百分比
      loyalCustomerChangePercent: 0, //忠实客户变化百分比
    }
  },
  created() {
@@ -244,6 +247,7 @@
    }, 1000)
    this.localInfo = JSON.parse(localStorage.getItem('localInfo'))
    document.title = this.localInfo.operationViewName
    this.generateRandomChangePercents()
  },
  mounted() {
    this.initData()
@@ -260,6 +264,11 @@
    })
  },
  methods: {
    generateRandomChangePercents() {
      this.prospectChangePercent = 20
      this.generalCustomerChangePercent = 12
      this.loyalCustomerChangePercent = 16
    },
    initData() {
      this.getOverviewData()
      this.getCustomerStatData()
@@ -1675,6 +1684,10 @@
              margin-right: 4px;
            }
          }
          .change_ct_red {
            border: 1px solid #9f5e5e;
            background: #7a3131;
          }
          .info_foot_icon {
            margin-top: -3vh;
          }
src/views/dashboard/Analysis.vue
@@ -198,10 +198,15 @@
        .then((imageRes) => {
          if (imageRes.code === 200 && Array.isArray(imageRes.result) && imageRes.result.length) {
            return recordList.map((item, index) => {
              return {
              const newItem = {
                ...item,
                imgPath: imageRes.result[index % imageRes.result.length],
              }
              if (item.videoPath && item.videoPath.startsWith('/video/')) {
                const baseUrl = window.location.origin
                newItem.videoPath = baseUrl + '/cube/jyz/video/stream/' + item.videoPath.replace('/video/', '')
              }
              return newItem
            })
          }
          return recordList
src/views/dataAnalysis/components/CarInfoDetail.vue
@@ -14,8 +14,7 @@
        <a-col :span="6" style="border-right: 1px solid #343a44">
          <div class="flex" style="justify-content: space-between">
            <viewer>
              <!-- <img class="car_img" :src="detailData.imgPath2" alt="" /> -->
              <img class="car_img" :src="getImgUrl(detailData.imgPath2)" alt="" />
              <img class="car_img" :src="getCarModelImgUrl()" alt="" />
            </viewer>
            <div class="flex flex-column" style="justify-content: space-between; height: 90px; align-items: flex-start">
              <div class="blue_text" style="font-size: 16px">{{ detailData.licenseNum }}</div>
@@ -204,6 +203,21 @@
      detailData: {
        labelName: '',
      },
      // è½¦åž‹ID到图片的映射
      carModelImageMap: {
        '1': '小车.png',
        '2': '货车.png',
        '3': '油罐车.png',
        '4': '摩托车.png',
        '5': '三轮车.png',
        '6': '公交车.png',
        '7': '自行车.png',
        '8': '挖掘机.png',
        '9': '中型货车.png',
        '10': '中型轿车.png',
        '11': '轻型货车.png',
        '12': '重型货车.png',
      },
      columns: [
        // {
        //   title: '进站图片',
@@ -275,6 +289,16 @@
  },
  props: ['orgCode'],
  methods: {
    getCarModelImgUrl() {
      if (this.detailData.modelId && this.carModelImageMap[this.detailData.modelId]) {
        try {
          return require('@/image/' + this.carModelImageMap[this.detailData.modelId])
        } catch (e) {
          return this.symIng
        }
      }
      return this.symIng
    },
    getImgUrl(path) {
      if (!path) return this.symIng
      if (path.startsWith('http://') || path.startsWith('https://')) return path