feat(品牌): 替换 favicon、站内 logo,新增页面底部版权信息条,并修复顶栏头像 fallback
- 替换浏览器 favicon 为小鹏官方 ICO,index.html link 引用同步更新
- 站内 logo 全部替换为横版小鹏 logo (Logo / public-access 两处)
容器统一改为锁高、宽自适应,保持 2:1 比例不被压扁
- 新增 CopyrightFooter 组件,在 AppMain 顶层全局挂载;
主布局补 28px 底部内边距,避免遮挡末行内容
- 修复 UserCenter 头像无 src 时显示空灰圆的问题:
补充默认插槽 + 保留 fallback 插槽,空 / 加载失败两种场景都显示线条小人
Co-Authored-By: Claude <noreply@anthropic.com>
| | |
| | | |
| | | <head> |
| | | <meta charset="UTF-8" /> |
| | | <link rel="icon" href="/favicon.svg" /> |
| | | <link rel="icon" href="/favicon.ico" type="image/x-icon" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | | <title>RT后台</title> |
| | | </head> |
| | |
| | | <naive-provider> |
| | | <router-view /> |
| | | <Watermark :show-watermark="appStore.showWatermark" /> |
| | | <CopyrightFooter /> |
| | | </naive-provider> |
| | | </n-config-provider> |
| | | </template> |
| New file |
| | |
| | | <script setup lang="ts"> |
| | | // 全局版权信息底部条:固定在窗口底部 |
| | | const COPYRIGHT_TEXT = '© 2015-2026 广州小鹏汽车科技有限公司 粤ICP备15067788号' |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="copyright-footer"> |
| | | {{ COPYRIGHT_TEXT }} |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .copyright-footer { |
| | | position: fixed; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | z-index: 9; |
| | | height: 28px; |
| | | line-height: 28px; |
| | | text-align: center; |
| | | font-size: 12px; |
| | | color: rgba(0, 0, 0, 0.45); |
| | | background-color: var(--card-color, #fff); |
| | | border-top: 1px solid rgba(0, 0, 0, 0.06); |
| | | pointer-events: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <template> |
| | | <div class="h-68px flex-center cursor-pointer gap-2 p-x-2" @click="router.push('/')"> |
| | | <img src="/favicon.svg" alt="logo" class="w-24px h-24px" /> |
| | | <img src="/logo.png" alt="logo" class="h-24px w-auto" /> |
| | | <span v-show="!hidenLogoText" class="text-ellipsis overflow-hidden whitespace-nowrap title">{{ name }}</span> |
| | | </div> |
| | | </template> |
| | |
| | | class="cursor-pointer w-[24px] h-[24px]" |
| | | :src="userInfo?.avatar" |
| | | > |
| | | <!-- 无 avatar 时:走默认插槽 --> |
| | | <div class="wh-full flex-center"> |
| | | <icon-park-outline-user /> |
| | | </div> |
| | | <!-- avatar 加载失败时:走 fallback 插槽 --> |
| | | <template #fallback> |
| | | <div class="wh-full flex-center"> |
| | | <icon-park-outline-user /> |
| | |
| | | :sidebar-width="sidebarWidth" |
| | | :sidebar-collapsed-width="sidebarCollapsedWidth" |
| | | class="robotaxi-content" |
| | | style="padding-bottom: 28px;" |
| | | > |
| | | <template #logo> |
| | | <Logo /> |
| | |
| | | <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| | | <div class="flex justify-between items-center py-4"> |
| | | <div class="flex items-center space-x-4"> |
| | | <div class="w-10 h-10 flex items-center justify-center"> |
| | | <img src="/favicon.svg" alt="Nova Admin Logo" class="w-10 h-10"> |
| | | <div class="h-10 flex items-center justify-center"> |
| | | <img src="/logo.png" alt="Nova Admin Logo" class="h-10 w-auto"> |
| | | </div> |
| | | <span class="text-2xl font-bold text-gray-900">Nova Admin</span> |
| | | </div> |
| | |
| | | <div class="grid md:grid-cols-4 gap-8"> |
| | | <div> |
| | | <div class="flex items-center space-x-2 mb-4"> |
| | | <div class="w-10 h-10 flex items-center justify-center"> |
| | | <img src="/favicon.svg" alt="Nova Admin Logo" class="w-8 h-8"> |
| | | <div class="h-8 flex items-center justify-center"> |
| | | <img src="/logo.png" alt="Nova Admin Logo" class="h-8 w-auto"> |
| | | </div> |
| | | <span class="text-xl font-bold text-white">Nova Admin</span> |
| | | </div> |