From 816a29c062eef68bc85ded60da24bdfc8e4cf574 Mon Sep 17 00:00:00 2001 From: Losita <2810873701@qq.com> Date: Tue, 5 May 2026 23:31:24 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=89=8D=E7=AB=AF=E5=81=9A?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E4=BA=9B=E6=94=B9=E5=96=84=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E4=B8=BB=E9=A1=B5demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package-lock.json | 5 +- frontend/package.json | 1 + frontend/src/App.vue | 78 +- frontend/src/assets/feature-ai.png | Bin 0 -> 527007 bytes frontend/src/assets/feature-schedule.png | Bin 0 -> 301354 bytes frontend/src/assets/feature-tools.png | Bin 0 -> 316589 bytes frontend/src/assets/hero-dashboard.png | Bin 0 -> 292277 bytes .../src/components/common/MainSidebar.vue | 9 +- .../components/dashboard/TaskQuadrantCard.vue | 5 + .../components/dashboard/TodayTimeline.vue | 76 +- frontend/src/router/index.ts | 29 +- frontend/src/views/DashboardView.vue | 21 +- frontend/src/views/ForumView.vue | 967 ++++++++++++++++++ frontend/src/views/HomeView.vue | 610 +++++++++++ frontend/src/views/PlanDetailView.vue | 868 ++++++++++++++++ frontend/src/views/StoreView.vue | 672 ++++++++++++ 16 files changed, 3281 insertions(+), 60 deletions(-) create mode 100644 frontend/src/assets/feature-ai.png create mode 100644 frontend/src/assets/feature-schedule.png create mode 100644 frontend/src/assets/feature-tools.png create mode 100644 frontend/src/assets/hero-dashboard.png create mode 100644 frontend/src/views/ForumView.vue create mode 100644 frontend/src/views/HomeView.vue create mode 100644 frontend/src/views/PlanDetailView.vue create mode 100644 frontend/src/views/StoreView.vue diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fa0f51f..6ec8c73 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,13 +1,14 @@ { - "name": "smartflow-frontend", + "name": "smartmate-frontend", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "smartflow-frontend", + "name": "smartmate-frontend", "version": "0.1.0", "dependencies": { + "@element-plus/icons-vue": "^2.3.0", "@vue/shared": "^3.5.0", "axios": "^1.8.0", "element-plus": "^2.9.0", diff --git a/frontend/package.json b/frontend/package.json index 6cf5a8c..ef38110 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,6 +12,7 @@ "@vue/shared": "^3.5.0", "axios": "^1.8.0", "element-plus": "^2.9.0", + "@element-plus/icons-vue": "^2.3.0", "highlight.js": "^11.11.1", "markdown-it": "^14.1.0", "pinia": "^2.2.0", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 4b2dcd5..a9a2613 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,16 +1,53 @@ @@ -187,16 +190,9 @@ const renderSlots = computed(() => flex-direction: column; justify-content: space-between; min-height: 140px; - transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); cursor: default; } -.pastel-item:hover { - transform: scale(1.03) translateY(-4px); - box-shadow: 0 15px 30px -10px rgba(0, 0, 0, 0.1); - z-index: 10; -} - .item-time { font-size: 12px; font-weight: 800; @@ -266,20 +262,16 @@ const renderSlots = computed(() => animation: pill-shimmer 1.5s infinite linear; } +.skeleton-pill.is-pause { + min-height: 80px; +} + @keyframes pill-shimmer { 0% { opacity: 0.5; } 50% { opacity: 1; } 100% { opacity: 0.5; } } -/* 动画效果 */ -.grid-pop-enter-active { - transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); -} -.grid-pop-enter-from { - opacity: 0; - transform: scale(0.9); -} @media (max-width: 1200px) { .pastel-grid { grid-template-columns: repeat(4, 1fr); } diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index b545505..cd87674 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -7,12 +7,15 @@ import DashboardView from '@/views/DashboardView.vue' import ScheduleView from '@/views/ScheduleView.vue' import AssistantReasoningDebug from '@/views/debug/AssistantReasoningDebug.vue' +import HomeView from '@/views/HomeView.vue' + const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', - redirect: '/dashboard', + name: 'home', + component: HomeView, }, { path: '/auth', @@ -46,6 +49,30 @@ const router = createRouter({ requiresAuth: true, }, }, + { + path: '/forum', + name: 'forum', + component: () => import('@/views/ForumView.vue'), + meta: { + requiresAuth: true, + }, + }, + { + path: '/forum/:id', + name: 'plan-detail', + component: () => import('@/views/PlanDetailView.vue'), + meta: { + requiresAuth: true, + }, + }, + { + path: '/store', + name: 'store', + component: () => import('@/views/StoreView.vue'), + meta: { + requiresAuth: true, + }, + }, { path: '/debug/tool-card', name: 'debug-tool-card', diff --git a/frontend/src/views/DashboardView.vue b/frontend/src/views/DashboardView.vue index f4ef3a4..6ef6e45 100644 --- a/frontend/src/views/DashboardView.vue +++ b/frontend/src/views/DashboardView.vue @@ -1,7 +1,7 @@ + + + + diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue new file mode 100644 index 0000000..9d4dd37 --- /dev/null +++ b/frontend/src/views/HomeView.vue @@ -0,0 +1,610 @@ + + + + + diff --git a/frontend/src/views/PlanDetailView.vue b/frontend/src/views/PlanDetailView.vue new file mode 100644 index 0000000..c68b4b5 --- /dev/null +++ b/frontend/src/views/PlanDetailView.vue @@ -0,0 +1,868 @@ + + + + + diff --git a/frontend/src/views/StoreView.vue b/frontend/src/views/StoreView.vue new file mode 100644 index 0000000..fd03b90 --- /dev/null +++ b/frontend/src/views/StoreView.vue @@ -0,0 +1,672 @@ + + + + +