diff --git a/src/views/home/accountsReceivable/accountsReceivable.vue b/src/views/home/accountsReceivable/accountsReceivable.vue
new file mode 100644
index 00000000..2b71b5ce
--- /dev/null
+++ b/src/views/home/accountsReceivable/accountsReceivable.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/Header.vue b/src/views/home/accountsReceivableComponents/Header.vue
new file mode 100644
index 00000000..a43a8a72
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/Header.vue
@@ -0,0 +1,419 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/container.vue b/src/views/home/accountsReceivableComponents/container.vue
new file mode 100644
index 00000000..1a680670
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/container.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+ something test....
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/dataTrend.vue b/src/views/home/accountsReceivableComponents/dataTrend.vue
new file mode 100644
index 00000000..d5252997
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/dataTrend.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/dataTrendBar.vue b/src/views/home/accountsReceivableComponents/dataTrendBar.vue
new file mode 100644
index 00000000..cb869cb0
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/dataTrendBar.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/electricityGauge.vue b/src/views/home/accountsReceivableComponents/electricityGauge.vue
new file mode 100644
index 00000000..05e898fa
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/electricityGauge.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ {{ detailData.rate || 0 }}%
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/monthlyOverview.vue b/src/views/home/accountsReceivableComponents/monthlyOverview.vue
new file mode 100644
index 00000000..892bc82b
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/monthlyOverview.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+ {{ month }}月完成率
+
+
+
+ {{ monthData?.rate || 0 }}%
+
+
+ 环比{{ monthData?.momRate }}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/monthlyRelatedMetrics.vue b/src/views/home/accountsReceivableComponents/monthlyRelatedMetrics.vue
new file mode 100644
index 00000000..2477de1a
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/monthlyRelatedMetrics.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{monthAnalysis[0].rate}}%
+ 差值:{{monthAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{monthAnalysis[1].rate}}%
+ 差值:{{monthAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingBar.vue b/src/views/home/accountsReceivableComponents/operatingBar.vue
new file mode 100644
index 00000000..8429afc9
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingBar.vue
@@ -0,0 +1,503 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingBottomLineBar.vue b/src/views/home/accountsReceivableComponents/operatingBottomLineBar.vue
new file mode 100644
index 00000000..968af949
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingBottomLineBar.vue
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineBar.vue b/src/views/home/accountsReceivableComponents/operatingLineBar.vue
new file mode 100644
index 00000000..cb9a9cc7
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineBar.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineBarSale.vue b/src/views/home/accountsReceivableComponents/operatingLineBarSale.vue
new file mode 100644
index 00000000..5c46ad38
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineBarSale.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineBarSaleGroup.vue b/src/views/home/accountsReceivableComponents/operatingLineBarSaleGroup.vue
new file mode 100644
index 00000000..91e81381
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineBarSaleGroup.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineBarSaleSingle.vue b/src/views/home/accountsReceivableComponents/operatingLineBarSaleSingle.vue
new file mode 100644
index 00000000..f4d6d502
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineBarSaleSingle.vue
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineChart.vue b/src/views/home/accountsReceivableComponents/operatingLineChart.vue
new file mode 100644
index 00000000..d58d92bd
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineChart.vue
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingLineChartCumulative.vue b/src/views/home/accountsReceivableComponents/operatingLineChartCumulative.vue
new file mode 100644
index 00000000..7b048e33
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingLineChartCumulative.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingSingleBar.vue b/src/views/home/accountsReceivableComponents/operatingSingleBar.vue
new file mode 100644
index 00000000..3cc111f7
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingSingleBar.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/operatingTopBar.vue b/src/views/home/accountsReceivableComponents/operatingTopBar.vue
new file mode 100644
index 00000000..06a86285
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/operatingTopBar.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/totalOverview.vue b/src/views/home/accountsReceivableComponents/totalOverview.vue
new file mode 100644
index 00000000..acc15d77
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/totalOverview.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ 累计完成率
+
+
+
+ {{ ytdData?.rate || 0}}%
+
+
+ 同比{{ ytdData?.yoyRate || 0}}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/verticalBarChart.vue b/src/views/home/accountsReceivableComponents/verticalBarChart.vue
new file mode 100644
index 00000000..ec9643f0
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/verticalBarChart.vue
@@ -0,0 +1,226 @@
+
+
+
+ 完成率:{{detailData.rate}}%
+ 差值:{{detailData.diff}}
+
+
+
+
+
diff --git a/src/views/home/accountsReceivableComponents/yearRelatedMetrics.vue b/src/views/home/accountsReceivableComponents/yearRelatedMetrics.vue
new file mode 100644
index 00000000..eb71709c
--- /dev/null
+++ b/src/views/home/accountsReceivableComponents/yearRelatedMetrics.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{ytdAnalysis[0].rate}}%
+ 差值:{{ytdAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{ytdAnalysis[1].rate}}%
+ 差值:{{ytdAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/basicInfoConfiguration/customerInfoConfiguration.vue b/src/views/home/basicInfoConfiguration/customerInfoConfiguration.vue
new file mode 100644
index 00000000..cc4dc4bc
--- /dev/null
+++ b/src/views/home/basicInfoConfiguration/customerInfoConfiguration.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/home/basicInfoConfiguration/groupKeyTaskConfiguration.vue b/src/views/home/basicInfoConfiguration/groupKeyTaskConfiguration.vue
new file mode 100644
index 00000000..4149ce5e
--- /dev/null
+++ b/src/views/home/basicInfoConfiguration/groupKeyTaskConfiguration.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/home/basicInfoConfiguration/productInfoConfiguration.vue b/src/views/home/basicInfoConfiguration/productInfoConfiguration.vue
new file mode 100644
index 00000000..cd93deaa
--- /dev/null
+++ b/src/views/home/basicInfoConfiguration/productInfoConfiguration.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/home/depreciationAnalysis/depreciationAnalysis.vue b/src/views/home/depreciationAnalysis/depreciationAnalysis.vue
new file mode 100644
index 00000000..8db2c2c6
--- /dev/null
+++ b/src/views/home/depreciationAnalysis/depreciationAnalysis.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/Header.vue b/src/views/home/depreciationAnalysisComponents/Header.vue
new file mode 100644
index 00000000..a43a8a72
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/Header.vue
@@ -0,0 +1,419 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/container.vue b/src/views/home/depreciationAnalysisComponents/container.vue
new file mode 100644
index 00000000..1a680670
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/container.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+ something test....
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/dataTrend.vue b/src/views/home/depreciationAnalysisComponents/dataTrend.vue
new file mode 100644
index 00000000..d5252997
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/dataTrend.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/dataTrendBar.vue b/src/views/home/depreciationAnalysisComponents/dataTrendBar.vue
new file mode 100644
index 00000000..cb869cb0
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/dataTrendBar.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/electricityGauge.vue b/src/views/home/depreciationAnalysisComponents/electricityGauge.vue
new file mode 100644
index 00000000..05e898fa
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/electricityGauge.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ {{ detailData.rate || 0 }}%
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/monthlyOverview.vue b/src/views/home/depreciationAnalysisComponents/monthlyOverview.vue
new file mode 100644
index 00000000..892bc82b
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/monthlyOverview.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+ {{ month }}月完成率
+
+
+
+ {{ monthData?.rate || 0 }}%
+
+
+ 环比{{ monthData?.momRate }}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/monthlyRelatedMetrics.vue b/src/views/home/depreciationAnalysisComponents/monthlyRelatedMetrics.vue
new file mode 100644
index 00000000..2477de1a
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/monthlyRelatedMetrics.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{monthAnalysis[0].rate}}%
+ 差值:{{monthAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{monthAnalysis[1].rate}}%
+ 差值:{{monthAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingBar.vue b/src/views/home/depreciationAnalysisComponents/operatingBar.vue
new file mode 100644
index 00000000..8429afc9
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingBar.vue
@@ -0,0 +1,503 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingBottomLineBar.vue b/src/views/home/depreciationAnalysisComponents/operatingBottomLineBar.vue
new file mode 100644
index 00000000..968af949
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingBottomLineBar.vue
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineBar.vue b/src/views/home/depreciationAnalysisComponents/operatingLineBar.vue
new file mode 100644
index 00000000..cb9a9cc7
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineBar.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineBarSale.vue b/src/views/home/depreciationAnalysisComponents/operatingLineBarSale.vue
new file mode 100644
index 00000000..5c46ad38
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineBarSale.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleGroup.vue
new file mode 100644
index 00000000..91e81381
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleSingle.vue b/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleSingle.vue
new file mode 100644
index 00000000..f4d6d502
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineBarSaleSingle.vue
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineChart.vue b/src/views/home/depreciationAnalysisComponents/operatingLineChart.vue
new file mode 100644
index 00000000..d58d92bd
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineChart.vue
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingLineChartCumulative.vue b/src/views/home/depreciationAnalysisComponents/operatingLineChartCumulative.vue
new file mode 100644
index 00000000..7b048e33
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingLineChartCumulative.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingSingleBar.vue b/src/views/home/depreciationAnalysisComponents/operatingSingleBar.vue
new file mode 100644
index 00000000..3cc111f7
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingSingleBar.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/operatingTopBar.vue b/src/views/home/depreciationAnalysisComponents/operatingTopBar.vue
new file mode 100644
index 00000000..06a86285
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/operatingTopBar.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/totalOverview.vue b/src/views/home/depreciationAnalysisComponents/totalOverview.vue
new file mode 100644
index 00000000..acc15d77
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/totalOverview.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ 累计完成率
+
+
+
+ {{ ytdData?.rate || 0}}%
+
+
+ 同比{{ ytdData?.yoyRate || 0}}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/verticalBarChart.vue b/src/views/home/depreciationAnalysisComponents/verticalBarChart.vue
new file mode 100644
index 00000000..ec9643f0
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/verticalBarChart.vue
@@ -0,0 +1,226 @@
+
+
+
+ 完成率:{{detailData.rate}}%
+ 差值:{{detailData.diff}}
+
+
+
+
+
diff --git a/src/views/home/depreciationAnalysisComponents/yearRelatedMetrics.vue b/src/views/home/depreciationAnalysisComponents/yearRelatedMetrics.vue
new file mode 100644
index 00000000..eb71709c
--- /dev/null
+++ b/src/views/home/depreciationAnalysisComponents/yearRelatedMetrics.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{ytdAnalysis[0].rate}}%
+ 差值:{{ytdAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{ytdAnalysis[1].rate}}%
+ 差值:{{ytdAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysis/electricityCostAnalysis.vue b/src/views/home/electricityCostAnalysis/electricityCostAnalysis.vue
new file mode 100644
index 00000000..ce457430
--- /dev/null
+++ b/src/views/home/electricityCostAnalysis/electricityCostAnalysis.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/Header.vue b/src/views/home/electricityCostAnalysisComponents/Header.vue
new file mode 100644
index 00000000..a43a8a72
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/Header.vue
@@ -0,0 +1,419 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/container.vue b/src/views/home/electricityCostAnalysisComponents/container.vue
new file mode 100644
index 00000000..1a680670
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/container.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+ something test....
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/dataTrend.vue b/src/views/home/electricityCostAnalysisComponents/dataTrend.vue
new file mode 100644
index 00000000..d5252997
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/dataTrend.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/dataTrendBar.vue b/src/views/home/electricityCostAnalysisComponents/dataTrendBar.vue
new file mode 100644
index 00000000..cb869cb0
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/dataTrendBar.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/electricityGauge.vue b/src/views/home/electricityCostAnalysisComponents/electricityGauge.vue
new file mode 100644
index 00000000..05e898fa
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/electricityGauge.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ {{ detailData.rate || 0 }}%
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/monthlyOverview.vue b/src/views/home/electricityCostAnalysisComponents/monthlyOverview.vue
new file mode 100644
index 00000000..892bc82b
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/monthlyOverview.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+ {{ month }}月完成率
+
+
+
+ {{ monthData?.rate || 0 }}%
+
+
+ 环比{{ monthData?.momRate }}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/monthlyRelatedMetrics.vue b/src/views/home/electricityCostAnalysisComponents/monthlyRelatedMetrics.vue
new file mode 100644
index 00000000..2477de1a
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/monthlyRelatedMetrics.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{monthAnalysis[0].rate}}%
+ 差值:{{monthAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{monthAnalysis[1].rate}}%
+ 差值:{{monthAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingBar.vue b/src/views/home/electricityCostAnalysisComponents/operatingBar.vue
new file mode 100644
index 00000000..8429afc9
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingBar.vue
@@ -0,0 +1,503 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingBottomLineBar.vue b/src/views/home/electricityCostAnalysisComponents/operatingBottomLineBar.vue
new file mode 100644
index 00000000..968af949
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingBottomLineBar.vue
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineBar.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineBar.vue
new file mode 100644
index 00000000..cb9a9cc7
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineBar.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineBarSale.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSale.vue
new file mode 100644
index 00000000..5c46ad38
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSale.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleGroup.vue
new file mode 100644
index 00000000..91e81381
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleSingle.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleSingle.vue
new file mode 100644
index 00000000..f4d6d502
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineBarSaleSingle.vue
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineChart.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineChart.vue
new file mode 100644
index 00000000..d58d92bd
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineChart.vue
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingLineChartCumulative.vue b/src/views/home/electricityCostAnalysisComponents/operatingLineChartCumulative.vue
new file mode 100644
index 00000000..7b048e33
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingLineChartCumulative.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingSingleBar.vue b/src/views/home/electricityCostAnalysisComponents/operatingSingleBar.vue
new file mode 100644
index 00000000..3cc111f7
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingSingleBar.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/operatingTopBar.vue b/src/views/home/electricityCostAnalysisComponents/operatingTopBar.vue
new file mode 100644
index 00000000..06a86285
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/operatingTopBar.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/totalOverview.vue b/src/views/home/electricityCostAnalysisComponents/totalOverview.vue
new file mode 100644
index 00000000..acc15d77
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/totalOverview.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ 累计完成率
+
+
+
+ {{ ytdData?.rate || 0}}%
+
+
+ 同比{{ ytdData?.yoyRate || 0}}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/verticalBarChart.vue b/src/views/home/electricityCostAnalysisComponents/verticalBarChart.vue
new file mode 100644
index 00000000..ec9643f0
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/verticalBarChart.vue
@@ -0,0 +1,226 @@
+
+
+
+ 完成率:{{detailData.rate}}%
+ 差值:{{detailData.diff}}
+
+
+
+
+
diff --git a/src/views/home/electricityCostAnalysisComponents/yearRelatedMetrics.vue b/src/views/home/electricityCostAnalysisComponents/yearRelatedMetrics.vue
new file mode 100644
index 00000000..eb71709c
--- /dev/null
+++ b/src/views/home/electricityCostAnalysisComponents/yearRelatedMetrics.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{ytdAnalysis[0].rate}}%
+ 差值:{{ytdAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{ytdAnalysis[1].rate}}%
+ 差值:{{ytdAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/expenseAnalysisComponents/monthlyOverview.vue b/src/views/home/expenseAnalysisComponents/monthlyOverview.vue
index f2a5efc6..38017803 100644
--- a/src/views/home/expenseAnalysisComponents/monthlyOverview.vue
+++ b/src/views/home/expenseAnalysisComponents/monthlyOverview.vue
@@ -19,9 +19,9 @@
-
+
@@ -142,33 +142,27 @@ export default {
}
.number {
- display: flex;
- align-items: center;
- gap: 6px;
- // width: 190px;
- height: 32px;
font-family: YouSheBiaoTiHei;
- font-size: 32px;
+ font-size: 46px;
color: #0B58FF;
- line-height: 32px;
letter-spacing: 2px;
- text-align: left;
+ text-align: center;
font-style: normal;
white-space: nowrap;
+ margin-top: 20px;
}
.mom {
- // width: 97px;
height: 18px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
- font-size: 18px;
+ font-size: 20px;
color: #000000;
line-height: 18px;
letter-spacing: 1px;
- text-align: left;
+ text-align: center;
font-style: normal;
- z-index: 1000;
+ margin-top: 20px;
}
}
diff --git a/src/views/home/expenseAnalysisComponents/monthlyRelatedMetrics.vue b/src/views/home/expenseAnalysisComponents/monthlyRelatedMetrics.vue
index 1cc190d5..c1b3e1f9 100644
--- a/src/views/home/expenseAnalysisComponents/monthlyRelatedMetrics.vue
+++ b/src/views/home/expenseAnalysisComponents/monthlyRelatedMetrics.vue
@@ -2,33 +2,21 @@
-
-
-
+
+
- 管理费用·万元
+ {{ item.name }}·{{ item.unit }}
-
-
-
-
-
-
-
-
-
- 财务费用·万元
-
-
-
+
+ 完成率:{{item.detailData.rate}}%
+ 差值:{{item.detailData.diff}}
+
@@ -63,69 +51,66 @@ export default {
},
},
data() {
- return {
- // 初始化费用数据(包含flag字段)
- manageCostData: { title: "管理费用", budget: 0, real: 0, rate: 0, diff: 0, flag: 0 },
- saleCostData: { title: "销售费用", budget: 0, real: 0, rate: 0, diff: 0, flag: 0 },
- financeCostData: { title: "财务费用", budget: 0, real: 0, rate: 0, diff: 0, flag: 0 }
- }
+ return {}
+ },
+ computed: {
+ indicatorDefs() {
+ return [
+ { key: 'mgmtFee', name: '管理费用', unit: '万元'},
+ { key: 'salesFee', name: '销售费用', unit: '万元'},
+ { key: 'finFee', name: '财务费用', unit: '万元'}
+ ]
+ },
+ indicators() {
+ let _this = this
+ const fallback = { budget: 0, real: 0, rate: 0, diff: 0, flag: 0 }
+ const list = (Array.isArray(_this.monthAnalysis) ? _this.monthAnalysis : [])
+ return _this.indicatorDefs.map(def => {
+ const data = list.find(item => item && item.title === def.name) || fallback
+ const detailData = {
+ ...data,
+ flag: _this.getRateFlag(data.rate, data.real, data.budget),
+ }
+ return {
+ ...def,
+ detailData,
+ sortValue: Number((data && data.real) ?? 0)
+ }
+ })
+ },
+ sortedIndicators() {
+ const unitOrder = ['万元']
+ const unitRank = (u) => {
+ const idx = unitOrder.indexOf(u)
+ return idx === -1 ? 999 : idx
+ }
+
+ return this.indicators.slice().sort((a, b) => {
+ const ur = unitRank(a.unit) - unitRank(b.unit)
+ if (ur !== 0) return ur
+ const vr = (b.sortValue ?? -Infinity) - (a.sortValue ?? -Infinity)
+ if (vr !== 0) return vr
+ return String(a.key).localeCompare(String(b.key))
+ })
+ },
},
watch: {
monthAnalysis: {
- handler(newVal) {
- this.updateCostData(newVal)
- },
+ handler(newVal) {},
deep: true,
immediate: true // 初始化立即执行
}
},
- mounted() {
- this.updateCostData(this.monthAnalysis)
- },
+ mounted() {},
methods: {
- // 达标标识判断(≥100返回1,<100返回0)
-getRateFlag(rate, real, target) {
- if (isNaN(rate) || rate === null || rate === undefined) return 0;
-
- // 1. 完成率 >= 100 => 达标
- if (rate >= 100) return 1;
-
- // 2. 完成率 = 0 且 (目标值=0 或 实际值=目标值=0) => 达标
- if (rate === 0 && target === 0) return 1;
-
- // 其他情况 => 未达标
- return 0;
-},
-
- // 处理费用数据
- updateCostData(data) {
- // 数据兜底:确保是数组且长度≥3
- const validData = Array.isArray(data) && data.length >= 3
- ? data
- : this.$props.monthAnalysis;
-
- // 提取三个费用项数据(兜底处理)
- const manageItem = validData[0] || { title: "管理费用", budget: 0, real: 0, rate: 0, diff: 0 };
- const saleItem = validData[1] || { title: "销售费用", budget: 0, real: 0, rate: 0, diff: 0 };
- const financeItem = validData[2] || { title: "财务费用", budget: 0, real: 0, rate: 0, diff: 0 };
-
- // 整合flag字段
- this.manageCostData = {
- ...manageItem,
- flag: this.getRateFlag(manageItem.rate, manageItem.real, manageItem.budget)
- };
- this.saleCostData = {
- ...saleItem,
- flag: this.getRateFlag(saleItem.rate, saleItem.real, saleItem.budget)
- };
- this.financeCostData = {
- ...financeItem,
- flag: this.getRateFlag(financeItem.rate, financeItem.real, financeItem.budget)
- };
- // 调试日志
- console.log('管理费用数据:', this.manageCostData);
- console.log('销售费用数据:', this.saleCostData);
- console.log('财务费用数据:', this.financeCostData);
+ getRateFlag(rate, real, target) {
+ if (isNaN(rate) || rate === null || rate === undefined) return 0;
+ // 1. 完成率 >= 100 => 达标
+ if (rate >= 100) return 1;
+ // 2. 完成率 = 0 且 (目标值=0 或 实际值=目标值=0) => 达标
+ if (rate === 0 && target === 0) return 1;
+ // 其他情况 => 未达标
+ return 0;
}
}
}
@@ -169,7 +154,6 @@ getRateFlag(rate, real, target) {
line-height: 18px;
letter-spacing: 2px;
text-align: left;
- margin-bottom: 12px;
}
// 图表容器:适配高度
diff --git a/src/views/home/expenseAnalysisComponents/operatingBar.vue b/src/views/home/expenseAnalysisComponents/operatingBar.vue
index 55261062..d1666bd1 100644
--- a/src/views/home/expenseAnalysisComponents/operatingBar.vue
+++ b/src/views/home/expenseAnalysisComponents/operatingBar.vue
@@ -39,7 +39,7 @@
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/expenseAnalysisComponents/operatingLineBarSale.vue b/src/views/home/expenseAnalysisComponents/operatingLineBarSale.vue
index d47b65f1..bdda1094 100644
--- a/src/views/home/expenseAnalysisComponents/operatingLineBarSale.vue
+++ b/src/views/home/expenseAnalysisComponents/operatingLineBarSale.vue
@@ -133,11 +133,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/expenseAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/expenseAnalysisComponents/operatingLineBarSaleGroup.vue
index e943f869..e92bab84 100644
--- a/src/views/home/expenseAnalysisComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/expenseAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+
@@ -155,31 +155,27 @@ getRateFlag(rate, real, target) {
}
.number {
- display: flex;
- align-items: center;
- gap: 6px;
- height: 32px;
font-family: YouSheBiaoTiHei;
- font-size: 32px;
+ font-size: 46px;
color: #0B58FF;
- line-height: 32px;
letter-spacing: 2px;
+ text-align: center;
+ font-style: normal;
white-space: nowrap;
+ margin-top: 20px;
}
.mom {
- width: fit-content; // 自适应宽度,避免文字溢出
height: 18px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
- font-size: 18px;
+ font-size: 20px;
color: #000000;
line-height: 18px;
letter-spacing: 1px;
- display: flex;
- align-items: center; // 箭头和文字垂直居中
- gap: 4px; // 文字和箭头间距
- z-index: 1000;
+ text-align: center;
+ font-style: normal;
+ margin-top: 20px;
}
// 箭头样式优化
diff --git a/src/views/home/fullCostAnalysisComponents/operatingBar.vue b/src/views/home/fullCostAnalysisComponents/operatingBar.vue
index bef7d9f4..c0a3abdb 100644
--- a/src/views/home/fullCostAnalysisComponents/operatingBar.vue
+++ b/src/views/home/fullCostAnalysisComponents/operatingBar.vue
@@ -39,7 +39,7 @@
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/fullCostAnalysisComponents/operatingLineBarSale.vue b/src/views/home/fullCostAnalysisComponents/operatingLineBarSale.vue
index d85b10ea..e6299c85 100644
--- a/src/views/home/fullCostAnalysisComponents/operatingLineBarSale.vue
+++ b/src/views/home/fullCostAnalysisComponents/operatingLineBarSale.vue
@@ -136,11 +136,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/fullCostAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/fullCostAnalysisComponents/operatingLineBarSaleGroup.vue
index e6be8ad1..f0f8c359 100644
--- a/src/views/home/fullCostAnalysisComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/fullCostAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+
@@ -155,7 +158,6 @@ getRateFlag(rate, real, target) {
line-height: 18px;
letter-spacing: 2px;
text-align: left;
- margin-bottom: 12px;
}
// 图表容器:适配高度
diff --git a/src/views/home/inputOutputRatioComponents/operatingBar.vue b/src/views/home/inputOutputRatioComponents/operatingBar.vue
index 63a06d00..61daf973 100644
--- a/src/views/home/inputOutputRatioComponents/operatingBar.vue
+++ b/src/views/home/inputOutputRatioComponents/operatingBar.vue
@@ -39,7 +39,7 @@
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/inputOutputRatioComponents/operatingLineBarSale.vue b/src/views/home/inputOutputRatioComponents/operatingLineBarSale.vue
index c54ee4d9..45ed3e81 100644
--- a/src/views/home/inputOutputRatioComponents/operatingLineBarSale.vue
+++ b/src/views/home/inputOutputRatioComponents/operatingLineBarSale.vue
@@ -136,11 +136,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/inputOutputRatioComponents/operatingLineBarSaleGroup.vue b/src/views/home/inputOutputRatioComponents/operatingLineBarSaleGroup.vue
index acebbd5f..ad093103 100644
--- a/src/views/home/inputOutputRatioComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/inputOutputRatioComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+
@@ -155,7 +158,6 @@ getRateFlag(rate, real, target) {
line-height: 18px;
letter-spacing: 2px;
text-align: left;
- margin-bottom: 12px;
}
// 图表容器:适配高度
diff --git a/src/views/home/inventoryAnalysis/inventoryAnalysis.vue b/src/views/home/inventoryAnalysis/inventoryAnalysis.vue
new file mode 100644
index 00000000..dadd2077
--- /dev/null
+++ b/src/views/home/inventoryAnalysis/inventoryAnalysis.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/Header.vue b/src/views/home/inventoryAnalysisComponents/Header.vue
new file mode 100644
index 00000000..a43a8a72
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/Header.vue
@@ -0,0 +1,419 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/container.vue b/src/views/home/inventoryAnalysisComponents/container.vue
new file mode 100644
index 00000000..1a680670
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/container.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+ something test....
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/dataTrend.vue b/src/views/home/inventoryAnalysisComponents/dataTrend.vue
new file mode 100644
index 00000000..d5252997
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/dataTrend.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/dataTrendBar.vue b/src/views/home/inventoryAnalysisComponents/dataTrendBar.vue
new file mode 100644
index 00000000..cb869cb0
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/dataTrendBar.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/electricityGauge.vue b/src/views/home/inventoryAnalysisComponents/electricityGauge.vue
new file mode 100644
index 00000000..05e898fa
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/electricityGauge.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ {{ detailData.rate || 0 }}%
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/monthlyOverview.vue b/src/views/home/inventoryAnalysisComponents/monthlyOverview.vue
new file mode 100644
index 00000000..892bc82b
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/monthlyOverview.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+ {{ month }}月完成率
+
+
+
+ {{ monthData?.rate || 0 }}%
+
+
+ 环比{{ monthData?.momRate }}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/monthlyRelatedMetrics.vue b/src/views/home/inventoryAnalysisComponents/monthlyRelatedMetrics.vue
new file mode 100644
index 00000000..2477de1a
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/monthlyRelatedMetrics.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{monthAnalysis[0].rate}}%
+ 差值:{{monthAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{monthAnalysis[1].rate}}%
+ 差值:{{monthAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingBar.vue b/src/views/home/inventoryAnalysisComponents/operatingBar.vue
new file mode 100644
index 00000000..8429afc9
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingBar.vue
@@ -0,0 +1,503 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingBottomLineBar.vue b/src/views/home/inventoryAnalysisComponents/operatingBottomLineBar.vue
new file mode 100644
index 00000000..968af949
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingBottomLineBar.vue
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineBar.vue b/src/views/home/inventoryAnalysisComponents/operatingLineBar.vue
new file mode 100644
index 00000000..cb9a9cc7
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineBar.vue
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineBarSale.vue b/src/views/home/inventoryAnalysisComponents/operatingLineBarSale.vue
new file mode 100644
index 00000000..5c46ad38
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineBarSale.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleGroup.vue
new file mode 100644
index 00000000..86919e72
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -0,0 +1,170 @@
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleSingle.vue b/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleSingle.vue
new file mode 100644
index 00000000..f4d6d502
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineBarSaleSingle.vue
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineChart.vue b/src/views/home/inventoryAnalysisComponents/operatingLineChart.vue
new file mode 100644
index 00000000..d58d92bd
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineChart.vue
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingLineChartCumulative.vue b/src/views/home/inventoryAnalysisComponents/operatingLineChartCumulative.vue
new file mode 100644
index 00000000..7b048e33
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingLineChartCumulative.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+ 集团情况
+
+
+ 完成率:{{chartData.group.rate[0]}}%
+ 差值:{{chartData.group.diff[0]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingSingleBar.vue b/src/views/home/inventoryAnalysisComponents/operatingSingleBar.vue
new file mode 100644
index 00000000..3cc111f7
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingSingleBar.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/operatingTopBar.vue b/src/views/home/inventoryAnalysisComponents/operatingTopBar.vue
new file mode 100644
index 00000000..06a86285
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/operatingTopBar.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/totalOverview.vue b/src/views/home/inventoryAnalysisComponents/totalOverview.vue
new file mode 100644
index 00000000..acc15d77
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/totalOverview.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ 累计完成率
+
+
+
+ {{ ytdData?.rate || 0}}%
+
+
+ 同比{{ ytdData?.yoyRate || 0}}%
+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/verticalBarChart.vue b/src/views/home/inventoryAnalysisComponents/verticalBarChart.vue
new file mode 100644
index 00000000..ec9643f0
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/verticalBarChart.vue
@@ -0,0 +1,226 @@
+
+
+
+ 完成率:{{detailData.rate}}%
+ 差值:{{detailData.diff}}
+
+
+
+
+
diff --git a/src/views/home/inventoryAnalysisComponents/yearRelatedMetrics.vue b/src/views/home/inventoryAnalysisComponents/yearRelatedMetrics.vue
new file mode 100644
index 00000000..eb71709c
--- /dev/null
+++ b/src/views/home/inventoryAnalysisComponents/yearRelatedMetrics.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+ 销量·万㎡
+
+
+ 完成率:{{ytdAnalysis[0].rate}}%
+ 差值:{{ytdAnalysis[0].diff}}
+
+
+
+
+
+
+
+
+
+
+ 单价·元/㎡
+
+
+ 完成率:{{ytdAnalysis[1].rate}}%
+ 差值:{{ytdAnalysis[1].diff}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/home/netPriceAnalysisComponents/monthlyOverview.vue b/src/views/home/netPriceAnalysisComponents/monthlyOverview.vue
index 889771da..2b045b61 100644
--- a/src/views/home/netPriceAnalysisComponents/monthlyOverview.vue
+++ b/src/views/home/netPriceAnalysisComponents/monthlyOverview.vue
@@ -17,10 +17,9 @@
-
-
+
@@ -154,31 +153,27 @@ getRateFlag(rate, real, target) {
}
.number {
- display: flex;
- align-items: center;
- gap: 6px;
- height: 32px;
font-family: YouSheBiaoTiHei;
- font-size: 32px;
+ font-size: 46px;
color: #0B58FF;
- line-height: 32px;
letter-spacing: 2px;
+ text-align: center;
+ font-style: normal;
white-space: nowrap;
+ margin-top: 20px;
}
.mom {
- width: fit-content; // 自适应宽度,避免文字溢出
height: 18px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
- font-size: 18px;
+ font-size: 20px;
color: #000000;
line-height: 18px;
letter-spacing: 1px;
- display: flex;
- align-items: center; // 箭头和文字垂直居中
- gap: 4px; // 文字和箭头间距
- z-index: 1000;
+ text-align: center;
+ font-style: normal;
+ margin-top: 20px;
}
// 箭头样式优化
diff --git a/src/views/home/netPriceAnalysisComponents/monthlyRelatedMetrics.vue b/src/views/home/netPriceAnalysisComponents/monthlyRelatedMetrics.vue
index 38e6d5da..66a49b45 100644
--- a/src/views/home/netPriceAnalysisComponents/monthlyRelatedMetrics.vue
+++ b/src/views/home/netPriceAnalysisComponents/monthlyRelatedMetrics.vue
@@ -9,6 +9,10 @@
单价·万㎡
+
+ 完成率:{{relatedMon.单价.completeRate}}%
+ 差值:{{relatedMon.单价.diff}}
+
运费·万元
+
+ 完成率:{{relatedMon.运费.completeRate}}%
+ 差值:{{relatedMon.运费.diff}}
+
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/netPriceAnalysisComponents/operatingLineBarSale.vue b/src/views/home/netPriceAnalysisComponents/operatingLineBarSale.vue
index 5f718035..db9a6032 100644
--- a/src/views/home/netPriceAnalysisComponents/operatingLineBarSale.vue
+++ b/src/views/home/netPriceAnalysisComponents/operatingLineBarSale.vue
@@ -135,11 +135,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/netPriceAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/netPriceAnalysisComponents/operatingLineBarSaleGroup.vue
index 15f4041e..f9ada08b 100644
--- a/src/views/home/netPriceAnalysisComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/netPriceAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+
@@ -155,7 +158,6 @@ getRateFlag(rate, real, target) {
line-height: 18px;
letter-spacing: 2px;
text-align: left;
- margin-bottom: 12px;
}
// 图表容器:适配高度
diff --git a/src/views/home/rawSheetYieldComponents/operatingBar.vue b/src/views/home/rawSheetYieldComponents/operatingBar.vue
index 63a06d00..61daf973 100644
--- a/src/views/home/rawSheetYieldComponents/operatingBar.vue
+++ b/src/views/home/rawSheetYieldComponents/operatingBar.vue
@@ -39,7 +39,7 @@
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/rawSheetYieldComponents/operatingLineBarSale.vue b/src/views/home/rawSheetYieldComponents/operatingLineBarSale.vue
index a4499519..cb99f56e 100644
--- a/src/views/home/rawSheetYieldComponents/operatingLineBarSale.vue
+++ b/src/views/home/rawSheetYieldComponents/operatingLineBarSale.vue
@@ -133,11 +133,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/rawSheetYieldComponents/operatingLineBarSaleGroup.vue b/src/views/home/rawSheetYieldComponents/operatingLineBarSaleGroup.vue
index f4682343..67632b4d 100644
--- a/src/views/home/rawSheetYieldComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/rawSheetYieldComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+
@@ -155,7 +158,6 @@ getRateFlag(rate, real, target) {
line-height: 18px;
letter-spacing: 2px;
text-align: left;
- margin-bottom: 12px;
}
// 图表容器:适配高度
diff --git a/src/views/home/salesVolumeAnalysisComponents/monthlyOverview.vue b/src/views/home/salesVolumeAnalysisComponents/monthlyOverview.vue
index 889771da..a14896c4 100644
--- a/src/views/home/salesVolumeAnalysisComponents/monthlyOverview.vue
+++ b/src/views/home/salesVolumeAnalysisComponents/monthlyOverview.vue
@@ -17,10 +17,10 @@
-
+
-
-
+
+
@@ -154,31 +154,27 @@ getRateFlag(rate, real, target) {
}
.number {
- display: flex;
- align-items: center;
- gap: 6px;
- height: 32px;
font-family: YouSheBiaoTiHei;
- font-size: 32px;
+ font-size: 46px;
color: #0B58FF;
- line-height: 32px;
letter-spacing: 2px;
+ text-align: center;
+ font-style: normal;
white-space: nowrap;
+ margin-top: 20px;
}
.mom {
- width: fit-content; // 自适应宽度,避免文字溢出
height: 18px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
- font-size: 18px;
+ font-size: 20px;
color: #000000;
line-height: 18px;
letter-spacing: 1px;
- display: flex;
- align-items: center; // 箭头和文字垂直居中
- gap: 4px; // 文字和箭头间距
- z-index: 1000;
+ text-align: center;
+ font-style: normal;
+ margin-top: 20px;
}
// 箭头样式优化
diff --git a/src/views/home/salesVolumeAnalysisComponents/operatingBar.vue b/src/views/home/salesVolumeAnalysisComponents/operatingBar.vue
index 0bc5537c..fcf36efa 100644
--- a/src/views/home/salesVolumeAnalysisComponents/operatingBar.vue
+++ b/src/views/home/salesVolumeAnalysisComponents/operatingBar.vue
@@ -39,7 +39,7 @@
-
+
@@ -152,7 +152,7 @@ export default {
name: '预算',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
itemStyle: {
color: {
type: 'linear',
@@ -172,13 +172,13 @@ export default {
name: '实际',
type: 'bar',
yAxisIndex: 0,
- barWidth: 14,
+ barWidth: 40,
label: {
show: true,
position: 'top',
- offset: [30, 0],
- width: 68,
- height: 20,
+ offset: [32, 0],
+ width: 100,
+ height: 22,
formatter: (params) => {
const diff = data.diff || [];
const flags = data.flags || [];
@@ -212,23 +212,21 @@ export default {
borderRadius: 4,
borderColor: '#BFCBD577',
borderWidth: 0,
- lineHeight: 20,
+ lineHeight: 26,
rich: {
text: {
width: 'auto',
padding: [5, 10, 5, 0],
align: 'center',
color: '#464646',
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
achieved: {
width: 'auto',
padding: [5, 0, 5, 10],
align: 'center',
color: '#76DABE', // 与达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
},
// 未达标样式
unachieved: {
@@ -236,8 +234,7 @@ export default {
padding: [5, 0, 5, 10],
align: 'center',
color: '#F9A44A', // 与未达标的 offset: 1 颜色一致
- fontSize: 11,
- lineHeight: 20
+ fontSize: 14
}
}
},
diff --git a/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSale.vue b/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSale.vue
index 4a8c63af..3a2f4135 100644
--- a/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSale.vue
+++ b/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSale.vue
@@ -136,11 +136,12 @@ export default {
}
}
},
- grid: {
+ grid: {
top: 30,
- bottom: 30,
- right: 70,
- left: 60
+ bottom: 5,
+ right: 20,
+ left: 25,
+ containLabel: true
},
xAxis: [
{
diff --git a/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSaleGroup.vue b/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSaleGroup.vue
index ba01ba8a..a38a8907 100644
--- a/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSaleGroup.vue
+++ b/src/views/home/salesVolumeAnalysisComponents/operatingLineBarSaleGroup.vue
@@ -1,5 +1,5 @@
-
+