From 1d44f1083701f0978baa2f1a0e1256dfa69c369c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 28 八月 2026 23:37:42 +0800
Subject: [PATCH] 天津_建诚恒商贸 1.备件管理-新增独立备件出库功能入口,支持直接完成备件领用出库操作。 2.设备保养-支持按日期分组折叠展示,分组条目可展开查看明细;单条明细行末尾增加【保养完成】操作按钮,可单独办结单条保养任务;折叠汇总状态下,新增【一键保养完成】批量操作按钮,快速办结当前分组全部保养项。 3.设备巡检-按日期分组折叠展示,分组支持展开查看明细;每条巡检明细后增设【巡检完成】按钮,支持单独办结单条巡检记录;分组折叠未展开状态下,提供【一键巡检完成】批量操作,统一办结该分组下所有巡检任务。 4.增值税对比-优化数据展示逻辑,列表展示各订单增值税明细;页面右侧新增柱状可视化图表,直观对比进销项增值税数据。 5.管理驾驶舱-指标修改:将顶部「销售产品数」调整为「销售订单数」;时间筛选:页面左上角新增日期范围下拉筛选控件,所有统计指标标注当前筛选时段;

---
 src/views/reportAnalysis/dataDashboard/components/basic/right-bottom.vue |   55 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/src/views/reportAnalysis/dataDashboard/components/basic/right-bottom.vue b/src/views/reportAnalysis/dataDashboard/components/basic/right-bottom.vue
index 3f18a50..7786c9a 100644
--- a/src/views/reportAnalysis/dataDashboard/components/basic/right-bottom.vue
+++ b/src/views/reportAnalysis/dataDashboard/components/basic/right-bottom.vue
@@ -1,6 +1,6 @@
 <template>
   <div>
-    <PanelHeader title="瀹㈡埛閲戦璐$尞鎺掑悕" />
+    <PanelHeader title="瀹㈡埛璐$尞鎺掑悕" />
     <div class="panel-item-customers">
       <div class="switch-container">
         <DateTypeSwitch v-model="dateType" @change="handleDateTypeChange" />
@@ -22,10 +22,13 @@
 </template>
 
 <script setup>
-import { ref, onMounted, computed } from 'vue'
+import { ref, onMounted, computed, inject, watch } from 'vue'
 import Echarts from '@/components/Echarts/echarts.vue'
 import PanelHeader from '../PanelHeader.vue'
 import DateTypeSwitch from '../DateTypeSwitch.vue'
+import { customerContributionRanking } from '@/api/viewIndex.js'
+
+const dateRange = inject('psiDateRange', null)
 
 const chartStyle = {
   width: '100%',
@@ -49,7 +52,6 @@
 // 鍘熷鏁版嵁锛堢粺涓�鎴� { NAME, NUM }锛�
 const dataArr = ref([])
 
-// 浠呬繚鐣欓噾棰濇渶楂樼殑 5 鏉★紙骞舵寜浠庡皬鍒板ぇ灞曠ず锛岃瑙変笂鏈�楂樺湪鏈�涓嬫柟锛�
 const dataArray = computed(() => {
   const sortedAsc = [...dataArr.value].sort((a, b) => a.NUM - b.NUM)
   return sortedAsc.length > 5 ? sortedAsc.slice(-5) : sortedAsc
@@ -104,7 +106,7 @@
   formatter: function (params) {
     let result = params[0].axisValueLabel + '<br/>'
     params.forEach((item) => {
-      result += `<div style="color: #B8C8E0">${item.marker} ${item.seriesName}: ${item.value}</div>`
+      result += `<div>${item.marker} ${item.seriesName}: ${item.value}鍏�</div>`
     })
     return result
   },
@@ -127,10 +129,20 @@
     inverse: false,
     data: xdataName.value,
     axisLabel: {
-      formatter: (params) => `{a|${params}}`,
+      formatter: (value) => {
+        if (!value) return ''
+        const maxLen = 6 // 姣忚鏈�澶氬瓧绗︽暟锛屽彲鎸夐渶璋冩暣
+        if (value.length <= maxLen) return `{a|${value}}`
+
+        const lines = []
+        for (let i = 0; i < value.length; i += maxLen) {
+          lines.push(value.slice(i, i + maxLen))
+        }
+        return lines.map((line) => `{a|${line}}`).join('\n')
+      },
       rich: {
         a: {
-          width: 160,
+          width: 120,
           fontSize: 14,
           color: '#fff',
           padding: [5, 4, 5, 0],
@@ -183,6 +195,7 @@
     z: 6,
     type: 'bar',
     barWidth: 25,
+    tooltip: { show: false },
     itemStyle: {
       color: 'rgba(255,255,255,.1)',
       barBorderRadius: [0, 20, 20, 0],
@@ -194,6 +207,7 @@
     type: 'bar',
     barWidth: 25,
     barGap: '-100%',
+    tooltip: { show: false },
     itemStyle: {
       color: {
         type: 'linear',
@@ -274,12 +288,37 @@
   dataArr.value = getMockListByType(type).map(normalizeItem)
 }
 
+const fetchCustomerRanking = () => {
+  customerContributionRanking({ type: dateType.value, ...(dateRange?.value || {}) })
+    .then((res) => {
+      if (res.code === 200 && Array.isArray(res.data)) {
+        dataArr.value = res.data.map(item => ({
+          NAME: item.customerName,
+          NUM: item.totalAmount
+        }))
+      } else {
+        setMockData(dateType.value)
+      }
+    })
+    .catch((error) => {
+      console.error('鑾峰彇瀹㈡埛閲戦璐$尞鎺掑悕澶辫触:', error)
+      setMockData(dateType.value)
+    })
+}
+
 const handleDateTypeChange = () => {
-  setMockData(dateType.value)
+  fetchCustomerRanking()
+}
+
+const dataDashboardRefreshTick = inject('dataDashboardRefreshTick', null)
+if (dataDashboardRefreshTick) {
+  watch(dataDashboardRefreshTick, () => {
+    fetchCustomerRanking()
+  })
 }
 
 onMounted(() => {
-  setMockData(dateType.value)
+  fetchCustomerRanking()
 })
 </script>
 

--
Gitblit v1.9.3