From bc6c7076fec44fd5f078824e916a3d54c20f4751 Mon Sep 17 00:00:00 2001 From: v6ole Date: Sun, 12 Jul 2026 19:58:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E9=87=8D=E6=9E=84=20=E2=80=94=204=20Tab=20+=20?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E4=B8=AD=E5=BF=83=20+=20=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TabBar 新增「工作」标签(首页/工作/拜访/纪要) - 新增工作中心页(/m/work),四卡片入口显示各模块记录数 - 新增三个列表页:工作计划/商机跟单/要客拜访(卡片流+删除) - 首页精简:移除快捷 chip,入口统一到工作中心 - 路由新增: /m/work, /m/plans, /m/mini-biz, /m/key-visits Co-Authored-By: Claude --- frontend/src/components/MobileLayout.vue | 25 +++--- frontend/src/router/index.ts | 4 + frontend/src/views/mobile/Home.vue | 32 ------- frontend/src/views/mobile/KeyVisitsList.vue | 94 +++++++++++++++++++++ frontend/src/views/mobile/MiniBizList.vue | 94 +++++++++++++++++++++ frontend/src/views/mobile/PlansList.vue | 92 ++++++++++++++++++++ frontend/src/views/mobile/WorkCenter.vue | 78 +++++++++++++++++ 7 files changed, 372 insertions(+), 47 deletions(-) create mode 100644 frontend/src/views/mobile/KeyVisitsList.vue create mode 100644 frontend/src/views/mobile/MiniBizList.vue create mode 100644 frontend/src/views/mobile/PlansList.vue create mode 100644 frontend/src/views/mobile/WorkCenter.vue diff --git a/frontend/src/components/MobileLayout.vue b/frontend/src/components/MobileLayout.vue index 944d253..70f91f0 100644 --- a/frontend/src/components/MobileLayout.vue +++ b/frontend/src/components/MobileLayout.vue @@ -8,25 +8,15 @@ const router = useRouter() const auth = useAuthStore() const tabs = [ - { - path: '/m', - label: '首页', - icon: 'home', - }, - { - path: '/m/visit/new', - label: '拜访', - icon: 'visit', - }, - { - path: '/m/note/new', - label: '纪要', - icon: 'note', - }, + { path: '/m', label: '首页', icon: 'home' }, + { path: '/m/work', label: '工作', icon: 'work' }, + { path: '/m/visit/new', label: '拜访', icon: 'visit' }, + { path: '/m/note/new', label: '纪要', icon: 'note' }, ] const activeTab = computed(() => { if (route.path === '/m') return '/m' + if (route.path === '/m/work' || route.path.startsWith('/m/plans') || route.path.startsWith('/m/mini-biz') || route.path.startsWith('/m/key-visits') || route.path.startsWith('/m/leaves') || route.path.startsWith('/m/leave')) return '/m/work' if (route.path.includes('/visit')) return '/m/visit/new' if (route.path.includes('/note')) return '/m/note/new' return route.path @@ -76,6 +66,11 @@ const activeTab = computed(() => { + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index d6807f8..f3893cc 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -35,6 +35,7 @@ const router = createRouter({ component: () => import('@/components/MobileLayout.vue'), children: [ { path: '', name: 'MobileHome', component: () => import('@/views/mobile/Home.vue') }, + { path: 'work', name: 'WorkCenter', component: () => import('@/views/mobile/WorkCenter.vue') }, { path: 'visit/new', name: 'VisitForm', component: () => import('@/views/mobile/VisitForm.vue') }, { path: 'visit/:id/edit', name: 'VisitEdit', component: () => import('@/views/mobile/VisitForm.vue') }, { path: 'work-plan/new', name: 'WorkPlanForm', component: () => import('@/views/mobile/WorkPlanForm.vue') }, @@ -42,6 +43,9 @@ const router = createRouter({ { path: 'key-visit/new', name: 'KeyVisitForm', component: () => import('@/views/mobile/KeyVisitForm.vue') }, { path: 'note/new', name: 'DailyNoteForm', component: () => import('@/views/mobile/DailyNoteForm.vue') }, { path: 'note/:id/edit', name: 'DailyNoteEdit', component: () => import('@/views/mobile/DailyNoteForm.vue') }, + { path: 'plans', name: 'PlansList', component: () => import('@/views/mobile/PlansList.vue') }, + { path: 'mini-biz', name: 'MiniBizList', component: () => import('@/views/mobile/MiniBizList.vue') }, + { path: 'key-visits', name: 'KeyVisitsList', component: () => import('@/views/mobile/KeyVisitsList.vue') }, { path: 'leaves', name: 'LeavesList', component: () => import('@/views/mobile/LeavesList.vue') }, { path: 'leave/new', name: 'LeaveForm', component: () => import('@/views/mobile/LeaveForm.vue') }, { path: 'leave/:id/edit', name: 'LeaveEdit', component: () => import('@/views/mobile/LeaveForm.vue') }, diff --git a/frontend/src/views/mobile/Home.vue b/frontend/src/views/mobile/Home.vue index f7d4bb8..0fbcd6e 100644 --- a/frontend/src/views/mobile/Home.vue +++ b/frontend/src/views/mobile/Home.vue @@ -99,38 +99,6 @@ onMounted(loadToday) - - -
今日记录 diff --git a/frontend/src/views/mobile/KeyVisitsList.vue b/frontend/src/views/mobile/KeyVisitsList.vue new file mode 100644 index 0000000..b026e7e --- /dev/null +++ b/frontend/src/views/mobile/KeyVisitsList.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/frontend/src/views/mobile/MiniBizList.vue b/frontend/src/views/mobile/MiniBizList.vue new file mode 100644 index 0000000..ca87c9a --- /dev/null +++ b/frontend/src/views/mobile/MiniBizList.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/frontend/src/views/mobile/PlansList.vue b/frontend/src/views/mobile/PlansList.vue new file mode 100644 index 0000000..477efcd --- /dev/null +++ b/frontend/src/views/mobile/PlansList.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/frontend/src/views/mobile/WorkCenter.vue b/frontend/src/views/mobile/WorkCenter.vue new file mode 100644 index 0000000..441780b --- /dev/null +++ b/frontend/src/views/mobile/WorkCenter.vue @@ -0,0 +1,78 @@ + + + + +