hookehuyr

feat: 完善首页导航功能并更新项目文档

- 为首页网格导航添加跳转功能(计划书、入职相关、签单相关、家办相关、产品知识库)
- 为产品卡片按钮添加跳转(产品资料→知识库、计划书→计划书页面)
- 为"查看更多"链接添加跳转到知识库
- 工具箱暂时显示"功能开发中"提示
- 更新 CLAUDE.md 以反映当前项目架构和开发规范

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This diff is collapsed. Click to expand it.
...@@ -22,7 +22,12 @@ ...@@ -22,7 +22,12 @@
22 <!-- Grid Icons --> 22 <!-- Grid Icons -->
23 <view class="bg-white rounded-[32rpx] shadow-sm p-[40rpx] mb-[24rpx]"> 23 <view class="bg-white rounded-[32rpx] shadow-sm p-[40rpx] mb-[24rpx]">
24 <view class="flex flex-wrap"> 24 <view class="flex flex-wrap">
25 - <view class="flex flex-col items-center w-1/3 mb-[40rpx]" v-for="(item, index) in loopData0" :key="index"> 25 + <view
26 + class="flex flex-col items-center w-1/3 mb-[40rpx]"
27 + v-for="(item, index) in loopData0"
28 + :key="index"
29 + @tap="handleGridNav(item)"
30 + >
26 <view class="w-[88rpx] h-[88rpx] rounded-[24rpx] bg-blue-50 flex items-center justify-center mb-[16rpx]"> 31 <view class="w-[88rpx] h-[88rpx] rounded-[24rpx] bg-blue-50 flex items-center justify-center mb-[16rpx]">
27 <IconFont :name="item.icon" class="text-blue-600" size="24" /> 32 <IconFont :name="item.icon" class="text-blue-600" size="24" />
28 </view> 33 </view>
...@@ -35,7 +40,7 @@ ...@@ -35,7 +40,7 @@
35 <view class="bg-white rounded-[32rpx] shadow-sm p-[32rpx] mb-[24rpx]"> 40 <view class="bg-white rounded-[32rpx] shadow-sm p-[32rpx] mb-[24rpx]">
36 <view class="flex justify-between items-center mb-[24rpx]"> 41 <view class="flex justify-between items-center mb-[24rpx]">
37 <text class="text-gray-900 text-[32rpx] font-bold">热卖产品:</text> 42 <text class="text-gray-900 text-[32rpx] font-bold">热卖产品:</text>
38 - <view class="flex items-center text-blue-600"> 43 + <view class="flex items-center text-blue-600" @tap="go('/pages/knowledge-base/index')">
39 <text class="text-[26rpx] mr-[4rpx]">查看更多</text> 44 <text class="text-[26rpx] mr-[4rpx]">查看更多</text>
40 <IconFont name="RectRight" size="12" /> 45 <IconFont name="RectRight" size="12" />
41 </view> 46 </view>
...@@ -56,9 +61,21 @@ ...@@ -56,9 +61,21 @@
56 </view> 61 </view>
57 </view> 62 </view>
58 <view class="flex justify-between gap-[24rpx]"> 63 <view class="flex justify-between gap-[24rpx]">
59 - <nut-button plain color="#2563EB" 64 + <nut-button
60 - class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0 !border-blue-600">产品资料</nut-button> 65 + plain
61 - <nut-button color="#2563EB" class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0">计划书</nut-button> 66 + color="#2563EB"
67 + class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0 !border-blue-600"
68 + @tap="go('/pages/knowledge-base/index')"
69 + >
70 + 产品资料
71 + </nut-button>
72 + <nut-button
73 + color="#2563EB"
74 + class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0"
75 + @tap="go('/pages/plan/index')"
76 + >
77 + 计划书
78 + </nut-button>
62 </view> 79 </view>
63 </view> 80 </view>
64 81
...@@ -77,9 +94,21 @@ ...@@ -77,9 +94,21 @@
77 </view> 94 </view>
78 </view> 95 </view>
79 <view class="flex justify-between gap-[24rpx]"> 96 <view class="flex justify-between gap-[24rpx]">
80 - <nut-button plain color="#2563EB" 97 + <nut-button
81 - class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0 !border-blue-600">产品资料</nut-button> 98 + plain
82 - <nut-button color="#2563EB" class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0">计划书</nut-button> 99 + color="#2563EB"
100 + class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0 !border-blue-600"
101 + @tap="go('/pages/knowledge-base/index')"
102 + >
103 + 产品资料
104 + </nut-button>
105 + <nut-button
106 + color="#2563EB"
107 + class="flex-1 !h-[64rpx] !rounded-[16rpx] !text-[26rpx] !m-0"
108 + @tap="go('/pages/plan/index')"
109 + >
110 + 计划书
111 + </nut-button>
83 </view> 112 </view>
84 </view> 113 </view>
85 </view> 114 </view>
...@@ -88,7 +117,7 @@ ...@@ -88,7 +117,7 @@
88 <view class="bg-white rounded-[32rpx] shadow-sm p-[32rpx]"> 117 <view class="bg-white rounded-[32rpx] shadow-sm p-[32rpx]">
89 <view class="flex justify-between items-center mb-[24rpx]"> 118 <view class="flex justify-between items-center mb-[24rpx]">
90 <text class="text-gray-900 text-[32rpx] font-bold">本周热门资料</text> 119 <text class="text-gray-900 text-[32rpx] font-bold">本周热门资料</text>
91 - <view class="flex items-center text-blue-600"> 120 + <view class="flex items-center text-blue-600" @tap="go('/pages/knowledge-base/index')">
92 <text class="text-[26rpx] mr-[4rpx]">查看更多</text> 121 <text class="text-[26rpx] mr-[4rpx]">查看更多</text>
93 <IconFont name="RectRight" size="12" /> 122 <IconFont name="RectRight" size="12" />
94 </view> 123 </view>
...@@ -150,19 +179,33 @@ import { useGo } from '@/hooks/useGo'; ...@@ -150,19 +179,33 @@ import { useGo } from '@/hooks/useGo';
150 import TabBar from '@/components/TabBar.vue'; 179 import TabBar from '@/components/TabBar.vue';
151 import IconFont from '@/components/IconFont.vue'; 180 import IconFont from '@/components/IconFont.vue';
152 181
153 -// Data 182 +// Grid navigation data with routes
154 const loopData0 = shallowRef([ 183 const loopData0 = shallowRef([
155 - { icon: 'Order', lanhutext0: '计划书' }, 184 + { icon: 'Order', lanhutext0: '计划书', route: '/pages/plan/index' },
156 - { icon: 'My', lanhutext0: '入职相关' }, 185 + { icon: 'My', lanhutext0: '入职相关', route: '/pages/onboarding/index' },
157 - { icon: 'Cart', lanhutext0: '签单相关' }, 186 + { icon: 'Cart', lanhutext0: '签单相关', route: '/pages/signing/index' },
158 - { icon: 'Home', lanhutext0: '家办相关' }, 187 + { icon: 'Home', lanhutext0: '家办相关', route: '/pages/family-office/index' },
159 - { icon: 'Category', lanhutext0: '产品知识库' }, 188 + { icon: 'Category', lanhutext0: '产品知识库', route: '/pages/knowledge-base/index' },
160 - { icon: 'Star', lanhutext0: '工具箱' }, 189 + { icon: 'Star', lanhutext0: '工具箱', route: null }, // 待开发
161 ]); 190 ]);
162 191
163 // Navigation 192 // Navigation
164 const go = useGo(); 193 const go = useGo();
165 194
195 +// Handle grid navigation click
196 +const handleGridNav = (item) => {
197 + if (!item.route) {
198 + Taro.showToast({
199 + title: '功能开发中',
200 + icon: 'none',
201 + duration: 2000
202 + });
203 + return;
204 + }
205 +
206 + go(item.route);
207 +};
208 +
166 useShareAppMessage(() => { 209 useShareAppMessage(() => {
167 return { 210 return {
168 title: '臻奇智荟圈', 211 title: '臻奇智荟圈',
......