diff --git a/src/components/dashboard/BannerSection.vue b/src/components/dashboard/BannerSection.vue
new file mode 100644
index 0000000..3e5dd8e
--- /dev/null
+++ b/src/components/dashboard/BannerSection.vue
@@ -0,0 +1,324 @@
+
+
+
+
+ {{ t('dashboard.welcome') }}
+ {{ t('dashboard.subtitle') }}
+
+
+
+
+
+
+
+
+
+ {{ badgeText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/dashboard/NavSection.vue b/src/components/dashboard/NavSection.vue
new file mode 100644
index 0000000..7962fc2
--- /dev/null
+++ b/src/components/dashboard/NavSection.vue
@@ -0,0 +1,95 @@
+
+
+ {{ t('dashboard.functionNav') }}
+
+
+
+ {{ item.icon }}
+
+ {{ t(`dashboard.${item.key}`) }}
+
+
+
+
+
+
+
+
diff --git a/src/components/dashboard/PlanSection.vue b/src/components/dashboard/PlanSection.vue
new file mode 100644
index 0000000..341f27d
--- /dev/null
+++ b/src/components/dashboard/PlanSection.vue
@@ -0,0 +1,675 @@
+
+
+
+
+
+ {{ currentFilterLabel }}
+ ▼
+
+
+ {{ currentRangeLabel }}
+ ▼
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatNumber(trendData.baogongNum) }}
+ {{ t('dashboard.baogongNum') }}
+
+
+ {{ formatNumber(trendData.passNum) }}
+ {{ t('dashboard.passNum') }}
+
+
+ {{ formatNumber(trendData.noPassNum) }}
+ {{ t('dashboard.noPassNum') }}
+
+
+ {{ formatPercent(trendData.passRate) }}
+ {{ t('dashboard.passRate') }}
+
+
+
+ {{ t('dashboard.baogongNum') }}
+
+
+
+
+
+ {{ t('dashboard.passRate') }}
+
+
+
+
+
+
+
+
+ {{ formatNumber(taskTrendData.totalNum) }}
+ {{ t('dashboard.totalTask') }}
+
+
+ {{ formatNumber(taskTrendData.waitingProductionNum) }}
+ {{ t('dashboard.waitingProduction') }}
+
+
+ {{ formatNumber(taskTrendData.producingNum) }}
+ {{ t('dashboard.producing') }}
+
+
+ {{ formatNumber(taskTrendData.completedNum) }}
+ {{ t('dashboard.completed') }}
+
+
+
+ {{ t('dashboard.taskTrend') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/dashboard/StatsSection.vue b/src/components/dashboard/StatsSection.vue
new file mode 100644
index 0000000..0498d18
--- /dev/null
+++ b/src/components/dashboard/StatsSection.vue
@@ -0,0 +1,135 @@
+
+
+ {{ t('dashboard.productionOverview') }}
+
+
+ {{ formatNumber(stat.value) }}
+ {{ t(`dashboard.${stat.labelKey}`) }}
+
+
+
+
+
+
+
+
diff --git a/src/pages/index.vue b/src/pages/index.vue
index f8286aa..1d46ebc 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -1,601 +1,35 @@
-
-
-
- {{ t('dashboard.welcome') }}
- {{ t('dashboard.subtitle') }}
-
-
-
-
-
-
-
-
-
- {{ badgeText }}
-
-
-
-
-
-
+
-
- {{ t('dashboard.functionNav') }}
-
-
-
- {{ item.icon }}
-
- {{ t(`dashboard.${item.key}`) }}
-
-
-
-
+
-
- {{ t('dashboard.productionOverview') }}
-
-
- {{ stat.value }}
- {{ t(`dashboard.${stat.labelKey}`) }}
-
-
-
-
-
-
-
-
-
- {{ currentFilterLabel }}
- ▼
-
-
- {{ currentRangeLabel }}
- ▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ formatNumber(trendData.baogongNum) }}
- {{ t('dashboard.baogongNum') }}
-
-
- {{ formatNumber(trendData.passNum) }}
- {{ t('dashboard.passNum') }}
-
-
- {{ formatNumber(trendData.noPassNum) }}
- {{ t('dashboard.noPassNum') }}
-
-
- {{ formatPercent(trendData.passRate) }}
- {{ t('dashboard.passRate') }}
-
-
-
- {{ t('dashboard.baogongNum') }}
-
-
-
-
-
- {{ t('dashboard.passRate') }}
-
-
-
-
-
-
-
-
- {{ formatNumber(taskTrendData.totalNum) }}
- {{ t('dashboard.totalTask') }}
-
-
- {{ formatNumber(taskTrendData.waitingProductionNum) }}
- {{ t('dashboard.waitingProduction') }}
-
-
- {{ formatNumber(taskTrendData.producingNum) }}
- {{ t('dashboard.producing') }}
-
-
- {{ formatNumber(taskTrendData.completedNum) }}
- {{ t('dashboard.completed') }}
-
-
-
- {{ t('dashboard.taskTrend') }}
-
-
-
-
-
-
+
+
+
↑
-
-
-
-
-
-
-
-