refactor: 重构项目分包结构与资源管理

1.  调整页面路由,将业务页面迁移到对应分包,主包仅保留首页
2.  拆分公共服务模块,将账户、融资相关逻辑移入对应分包
3.  统一资源路径,将专属静态资源放入各分包static目录,更新导航栏图标资源
4.  修复启动引导逻辑,实现仅首次冷启动显示引导页
5.  更新README文档,补充分包配置与开发规范说明
This commit is contained in:
hujun
2026-09-20 10:52:10 +08:00
parent 94a4558290
commit 69130d11e7
43 changed files with 278 additions and 180 deletions
+8 -6
View File
@@ -1,14 +1,13 @@
<template>
<view class="bottom-nav" :style="bottomStyle(14)">
<view class="nav-item" @click="go('/pages/home/home')"><view :class="active == 'home' ? 'nav-icon active-icon' : 'nav-icon'"><AppIcon name="home" :size="54" :muted="active != 'home'" /></view><text :class="active == 'home' ? 'nav-label active-label' : 'nav-label'">首页</text></view>
<view class="nav-item" @click="go('/pages/news/news')"><view :class="active == 'news' ? 'nav-icon active-icon' : 'nav-icon'"><AppIcon name="file-text" :size="54" :muted="active != 'news'" /></view><text :class="active == 'news' ? 'nav-label active-label' : 'nav-label'">新闻</text></view>
<view class="nav-item" @click="go('/pages/messages/messages')"><view :class="active == 'message' ? 'nav-icon active-icon' : 'nav-icon'"><AppIcon name="message" :size="54" :muted="active != 'message'" /></view><text :class="active == 'message' ? 'nav-label active-label' : 'nav-label'">消息</text></view>
<view class="nav-item" @click="go('/pages/profile/profile')"><view :class="active == 'profile' ? 'nav-icon active-icon' : 'nav-icon'"><AppIcon name="user" :size="54" :muted="active != 'profile'" /></view><text :class="active == 'profile' ? 'nav-label active-label' : 'nav-label'">我的</text></view>
<view class="nav-item" @click="go('/pages/home/home')"><view :class="active == 'home' ? 'nav-icon active-icon' : 'nav-icon'"><image class="nav-image" :class="active != 'home' ? 'muted-icon' : ''" src="/static/mobile/navigation/home.png" mode="aspectFit" /></view><text :class="active == 'home' ? 'nav-label active-label' : 'nav-label'">首页</text></view>
<view class="nav-item" @click="go('/packages/content/news/news')"><view :class="active == 'news' ? 'nav-icon active-icon' : 'nav-icon'"><image class="nav-image" :class="active != 'news' ? 'muted-icon' : ''" src="/static/mobile/navigation/file-text.png" mode="aspectFit" /></view><text :class="active == 'news' ? 'nav-label active-label' : 'nav-label'">新闻</text></view>
<view class="nav-item" @click="go('/packages/account/messages/messages')"><view :class="active == 'message' ? 'nav-icon active-icon' : 'nav-icon'"><image class="nav-image" :class="active != 'message' ? 'muted-icon' : ''" src="/static/mobile/navigation/message.png" mode="aspectFit" /></view><text :class="active == 'message' ? 'nav-label active-label' : 'nav-label'">消息</text></view>
<view class="nav-item" @click="go('/packages/account/profile/profile')"><view :class="active == 'profile' ? 'nav-icon active-icon' : 'nav-icon'"><image class="nav-image" :class="active != 'profile' ? 'muted-icon' : ''" src="/static/mobile/navigation/user.png" mode="aspectFit" /></view><text :class="active == 'profile' ? 'nav-label active-label' : 'nav-label'">我的</text></view>
</view>
</template>
<script setup lang="uts">
import AppIcon from '@/components/AppIcon.uvue'
import { usePageLayout } from '@/services/layout.uts'
const { bottomStyle } = usePageLayout()
defineProps({ active: { type: String, default: 'home' } })
@@ -23,7 +22,10 @@
.bottom-nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; min-height: 130rpx; background-color: #ffffff; border-top: 1rpx solid #e7edf6; flex-direction: row; box-shadow: 0 -6rpx 18rpx rgba(18, 38, 75, 0.04); }
.nav-item { flex: 1; height: 116rpx; align-items: center; justify-content: center; }
.nav-icon { width: 64rpx; height: 60rpx; border-radius: 18rpx; align-items: center; justify-content: center; }
/* 专用位图已统一图案边界,不再叠加 AppIcon 的整体缩放。 */
.nav-image { width: 58rpx; height: 58rpx; flex-shrink: 0; }
.muted-icon { opacity: .70; }
.active-icon { background-color: #edf5ff; }
.nav-label { margin-top: 7rpx; font-size: 24rpx; color: #64748b; }
.nav-label { margin-top: 7rpx; height: 34rpx; line-height: 34rpx; font-size: 24rpx; color: #64748b; text-align: center; }
.active-label { color: #0868f7; font-weight: 700; }
</style>