feat: migrate static pages to native tabbar

This commit is contained in:
2026-04-23 21:25:24 +08:00
parent f3cd0c3a98
commit cd30f57f2c
116 changed files with 7143 additions and 311 deletions

View File

@@ -1,65 +1,105 @@
<view class="page-shell">
<view class="panel hero">
<text class="hero__eyebrow">Stable Native Architecture</text>
<text class="hero__title">玄志小程序基础骨架</text>
<text class="hero__summary">
原生小程序 + JS + npm + TDesign + 分包 + service/store 分层,保留微信原生性能和长期维护边界。
</text>
<app-button
block
text="{{isLoggedIn ? '进入业务工作台' : '前往登录页'}}"
bind:tap="handlePrimaryAction"
></app-button>
<app-button
wx:if="{{isLoggedIn}}"
block
text="清理登录态"
theme="default"
variant="outline"
bind:tap="handleLogout"
></app-button>
<view class="home-page">
<view class="home-page__brand">{{brandName}}</view>
<text class="home-page__greeting">{{greeting}}</text>
<text class="home-page__subtitle">{{subtitle}}</text>
<view class="search-card" bindtap="handleSearchTap">
<view class="search-card__leading">搜</view>
<text class="search-card__placeholder">{{searchPlaceholder}}</text>
<view class="search-card__badge">{{searchBadge}}</view>
</view>
<view class="panel session-card">
<text class="section-title">当前会话</text>
<view class="session-card__rows">
<view class="meta-row">
<text class="session-card__label">运行环境</text>
<text class="session-card__value">{{envName}}</text>
</view>
<view class="meta-row">
<text class="session-card__label">API 地址</text>
<text class="session-card__value session-card__value--mono">{{apiBaseUrl}}</text>
</view>
<view class="meta-row">
<text class="session-card__label">登录状态</text>
<text class="session-card__value">{{sessionView.statusLabel}}</text>
</view>
<view class="meta-row">
<text class="session-card__label">当前用户</text>
<text class="session-card__value">{{sessionView.userName}}</text>
</view>
<view class="meta-row">
<text class="session-card__label">Token</text>
<text class="session-card__value session-card__value--mono">{{sessionView.tokenLabel}}</text>
</view>
<view class="meta-row meta-row--top">
<text class="session-card__label">权限</text>
<text class="session-card__value session-card__value--mono">{{sessionView.permissionsLabel}}</text>
<view class="section-card">
<text class="section-card__title">{{encyclopediaTitle}}</text>
<view class="feature-grid feature-grid--four">
<view class="feature-grid__item" wx:for="{{encyclopediaCards}}" wx:key="key">
<view
class="feature-card"
data-route="{{item.route}}"
data-title="{{item.title}}"
bindtap="handleEncyclopediaTap"
>
<text class="feature-card__status" wx:if="{{item.status}}">{{item.status}}</text>
<view class="feature-card__icon">{{item.icon}}</view>
<text class="feature-card__title">{{item.title}}</text>
</view>
</view>
</view>
</view>
<view class="entry-list">
<entry-card
wx:for="{{quickEntries}}"
wx:key="actionPath"
title="{{item.title}}"
description="{{item.description}}"
badge="{{item.badge}}"
actionText="{{item.actionText}}"
actionPath="{{item.actionPath}}"
bind:action="handleEntryAction"
></entry-card>
<view class="section-card">
<text class="section-card__title">{{portalTitle}}</text>
<view class="portal-grid">
<view
class="portal-grid__item"
wx:for="{{portalCards}}"
wx:key="key"
>
<view class="portal-card" data-route="{{item.route}}" bindtap="handlePortalTap">
<text class="portal-card__badge">{{item.badge}}</text>
<text class="portal-card__title">{{item.title}}</text>
<text class="portal-card__subtitle">{{item.subtitle}}</text>
</view>
</view>
</view>
</view>
<view class="section-card">
<text class="section-card__title">{{toolsTitle}}</text>
<view class="feature-grid feature-grid--four">
<view class="feature-grid__item" wx:for="{{toolCards}}" wx:key="key">
<view
class="feature-card"
data-route="{{item.route}}"
data-title="{{item.title}}"
bindtap="handleToolTap"
>
<view class="feature-card__icon">{{item.icon}}</view>
<text class="feature-card__title">{{item.title}}</text>
</view>
</view>
</view>
</view>
<view class="section-card">
<text class="section-card__title">{{wellnessTitle}}</text>
<view class="feature-grid feature-grid--three">
<view class="feature-grid__item" wx:for="{{wellnessCards}}" wx:key="key">
<view
class="feature-card feature-card--wellness"
data-route="{{item.route}}"
data-title="{{item.title}}"
bindtap="handleWellnessTap"
>
<text class="feature-card__status" wx:if="{{item.status}}">{{item.status}}</text>
<view class="feature-card__emoji-box">
<text class="feature-card__emoji">{{item.icon}}</text>
</view>
<text class="feature-card__title feature-card__title--wellness">{{item.title}}</text>
</view>
</view>
</view>
</view>
<view class="section-card section-card--last">
<view class="section-card__header">
<text class="section-card__title">{{classicsTitle}}</text>
<text class="section-card__action" bindtap="handleClassicActionTap">{{classicsActionText}} →</text>
</view>
<view class="feature-grid feature-grid--four">
<view class="feature-grid__item" wx:for="{{classicsBooks}}" wx:key="key">
<view
class="feature-card feature-card--classic"
data-route="{{item.route}}"
data-title="{{item.title}}"
bindtap="handleClassicTap"
>
<view class="feature-card__book">
<text class="feature-card__book-char">{{item.coverText}}</text>
</view>
<text class="feature-card__title feature-card__title--classic">{{item.title}}</text>
</view>
</view>
</view>
</view>
</view>