From af07272c650ee32cb3212151bdfb1ade34a5ffbd Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 01 四月 2026 17:56:32 +0800
Subject: [PATCH] 首页更改
---
src/views/index.vue | 166 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 139 insertions(+), 27 deletions(-)
diff --git a/src/views/index.vue b/src/views/index.vue
index bd0d274..2e8ed36 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -61,13 +61,21 @@
</section>
<section class="section-card flex-fill-card">
<div class="section-title-row">
- <div class="section-title">浠婂勾閿�鍞噾棰濆垎鏋�</div>
- <el-radio-group v-model="pendingFilter"
- size="small">
- <el-radio-button label="mine">鏉挎潗</el-radio-button>
- <el-radio-button label="high">鐮屽潡</el-radio-button>
+ <div class="section-title">鍖哄煙閿�鍞噾棰濆垎鏋�</div>
+ <el-radio-group v-model="chartProductType2"
+ size="small"
+ @change="fetchSalesAmountChartData">
+ <el-radio-button label="鏉挎潗">鏉挎潗</el-radio-button>
+ <el-radio-button label="鐮屽潡">鐮屽潡</el-radio-button>
</el-radio-group>
</div>
+ <Echarts :chartStyle="chartStyle"
+ :grid="grid"
+ :tooltip="barTooltip"
+ :xAxis="salesAmountXAxis"
+ :yAxis="salesAmountYAxis"
+ :series="salesAmountSeries"
+ style="height: 300px" />
</section>
</div>
<div class="right-col">
@@ -160,39 +168,28 @@
</section> -->
<section class="section-card mini-table-wrap"
v-if="isSectionVisible('planTable')">
- <div class="section-title">鐢熶骇璁″垝鎵ц鏄庣粏</div>
+ <div class="section-title">鏈�杩戞姤宸�</div>
<el-table :data="planTable"
size="small"
stripe>
<el-table-column prop="planNo"
- label="璁″垝鍗曞彿"
+ label="鐝"
min-width="150" />
<el-table-column prop="product"
- label="浜у搧"
+ label="鍒涘缓浜�"
+ min-width="120" />
+ <el-table-column prop="product"
+ label="鎶ュ伐鏃堕棿"
min-width="120" />
<el-table-column prop="qty"
- label="璁″垝閲�"
+ label="浜у搧"
min-width="90" />
<el-table-column prop="issued"
- label="宸蹭笅鍙�"
+ label="鐢熶骇鏁伴噺"
min-width="90" />
- <el-table-column prop="status"
- label="鐘舵��"
- min-width="100" />
- <el-table-column label="鎿嶄綔"
- min-width="120">
- <template #default="{ row }">
- <el-button link
- type="primary"
- @click="goTo(routePathMap.plan)">鏌ョ湅</el-button>
- <el-button v-if="row.status !== '宸插畬鎴�'"
- link
- type="success"
- @click="goTo(routePathMap.dispatch)">
- 涓嬪彂
- </el-button>
- </template>
- </el-table-column>
+ <el-table-column prop="issued"
+ label="鍚堟牸鏁伴噺"
+ min-width="90" />
</el-table>
</section>
</div>
@@ -274,6 +271,7 @@
nonComplianceWarning,
} from "@/api/viewIndex.js";
import { energyConsumptionDetailStatistics } from "@/api/energyManagement/energyType";
+ import { getSalesAmountAnalysis } from "@/api/reportAnalysis/salesStatistics";
const router = useRouter();
const userStore = useUserStore();
@@ -571,6 +569,119 @@
itemStyle: { color: "#67C23A" },
},
]);
+
+ // 閿�鍞噾棰濆浘琛�
+ const chartProductType2 = ref("鐮屽潡");
+ const salesAmountChartData = ref({
+ dates: [],
+ customerTrends: [],
+ });
+
+ const salesAmountXAxis = reactive({
+ type: "value",
+ axisLabel: {
+ interval: "auto",
+ formatter: value => {
+ // 鏍煎紡鍖栭噾棰濓紝鏄剧ず涓烘洿鏄撹鐨勫舰寮�
+ if (value >= 10000) {
+ return (value / 10000).toFixed(0) + "涓�";
+ }
+ return value;
+ },
+ },
+ axisTick: {
+ interval: "auto",
+ },
+ });
+
+ const salesAmountYAxis = reactive({
+ type: "category",
+ data: [],
+ axisLabel: {
+ rotate: 0,
+ },
+ });
+
+ const salesAmountSeries = reactive([]);
+
+ // 鑾峰彇閿�鍞噾棰濆垎鏋愬浘琛ㄦ暟鎹�
+ const fetchSalesAmountChartData = async () => {
+ try {
+ const response = await getSalesAmountAnalysis({
+ type: chartProductType2.value,
+ days: "骞�", // 榛樿骞�
+ });
+ if (response?.data) {
+ salesAmountChartData.value = response.data;
+ updateSalesAmountChart();
+ }
+ } catch (error) {
+ console.error("鑾峰彇閿�鍞噾棰濆垎鏋愬浘琛ㄦ暟鎹け璐�:", error);
+ // 浣跨敤妯℃嫙鏁版嵁
+ salesAmountChartData.value = {
+ dates: [
+ "2026-01-01",
+ "2025-01-01",
+ "2024-01-01",
+ "2023-01-01",
+ "2022-01-01",
+ ],
+ customerTrends: [
+ { 鍐呰挋鍙�: 100, 閾跺窛: 200, 鑷彁: 300, 鍏朵粬: 150, 鍏ㄩ儴: 750 },
+ { 鍐呰挋鍙�: 80, 閾跺窛: 180, 鑷彁: 280, 鍏朵粬: 130, 鍏ㄩ儴: 670 },
+ { 鍐呰挋鍙�: 90, 閾跺窛: 190, 鑷彁: 290, 鍏朵粬: 140, 鍏ㄩ儴: 710 },
+ { 鍐呰挋鍙�: 70, 閾跺窛: 170, 鑷彁: 270, 鍏朵粬: 120, 鍏ㄩ儴: 630 },
+ { 鍐呰挋鍙�: 110, 閾跺窛: 210, 鑷彁: 310, 鍏朵粬: 160, 鍏ㄩ儴: 790 },
+ ],
+ };
+ updateSalesAmountChart();
+ }
+ };
+
+ // 鏇存柊閿�鍞噾棰濆浘琛�
+ const updateSalesAmountChart = () => {
+ const { customerTrends = [] } = salesAmountChartData.value;
+
+ // 璁$畻姣忎釜閿�鍞尯鍩熺殑鎬婚攢鍞锛堣繃婊ゆ帀"鍏ㄩ儴"锛�
+ const areaTotalMap = new Map();
+ customerTrends.forEach(item => {
+ Object.keys(item).forEach(key => {
+ // 杩囨护鎺�"鍏ㄩ儴"閿�鍞尯鍩�
+ if (key !== "鍏ㄩ儴") {
+ const value = item[key] || 0;
+ if (areaTotalMap.has(key)) {
+ areaTotalMap.set(key, areaTotalMap.get(key) + value);
+ } else {
+ areaTotalMap.set(key, value);
+ }
+ }
+ });
+ });
+
+ // 杞崲涓烘暟缁�
+ const salesAreas = Array.from(areaTotalMap.keys());
+
+ const colors = [
+ "#00A4ED",
+ "#34D8F7",
+ "#4A8BFF",
+ "#8A6BFF",
+ "#C8C447",
+ "#FF6B6B",
+ ];
+
+ // 鏇存柊Y杞存暟鎹紙鐜板湪鏄攢鍞尯鍩燂級
+ salesAmountYAxis.data = salesAreas;
+
+ // 鏇存柊绯诲垪鏁版嵁锛堟瘡涓攢鍞尯鍩熺殑鎬婚攢鍞锛�
+ salesAmountSeries.splice(0, salesAmountSeries.length);
+ salesAmountSeries.push({
+ name: "閿�鍞噾棰�",
+ data: salesAreas.map(area => areaTotalMap.get(area)),
+ type: "bar",
+ itemStyle: { color: "#00A4ED" },
+ });
+ };
// 妯℃嫙鑳借�楁暟鎹�
const energyData = reactive({
@@ -1102,6 +1213,7 @@
// loadCostComposition();
// loadWarningCenter();
updateEnergyTypeChart();
+ fetchSalesAmountChartData();
lastUpdatedAt.value = new Date().toLocaleString();
};
--
Gitblit v1.9.3