- 后端: users表新增VIP字段, 4个VIP API (purchase/status/profile/members) - 后端: hot接口改按user_tracks阅读量排序 - 后端: orders表支持vip产品类型, migrate新增vip_fields迁移 - 小程序「我的」: 推广中心改为我的收益, 头像VIP标识, VIP入口卡片 - 小程序「我的」: 最近阅读显示真实章节名称 - 小程序首页: 去掉内容概览, 新增创业老板排行(4列网格) - 小程序首页: 精选推荐从hot接口获取, goToRead增加track记录 - 新增页面: VIP详情页, 会员详情页 - 开发文档精简为10个标准目录, 创建SKILL.md, 需求日志规范化 Co-authored-by: Cursor <cursoragent@cursor.com>
126 lines
5.0 KiB
Plaintext
126 lines
5.0 KiB
Plaintext
<!--Soul创业派对 - 首页-->
|
|
<view class="page page-transition">
|
|
<view class="nav-placeholder" style="height: {{statusBarHeight + 44}}px;"></view>
|
|
|
|
<view class="header" style="padding-top: {{statusBarHeight}}px;">
|
|
<view class="header-content">
|
|
<view class="logo-section">
|
|
<view class="logo-icon"><text class="logo-text">S</text></view>
|
|
<view class="logo-info">
|
|
<view class="logo-title">
|
|
<text class="text-white">Soul</text>
|
|
<text class="brand-color">创业派对</text>
|
|
</view>
|
|
<text class="logo-subtitle">来自派对房的真实故事</text>
|
|
</view>
|
|
</view>
|
|
<view class="header-right">
|
|
<view class="chapter-badge">{{totalSections}}章</view>
|
|
</view>
|
|
</view>
|
|
<view class="search-bar" bindtap="goToSearch">
|
|
<view class="search-icon"><view class="search-circle"></view><view class="search-handle"></view></view>
|
|
<text class="search-placeholder">搜索章节标题或内容...</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="main-content">
|
|
<!-- Banner - 最新章节 -->
|
|
<view class="banner-card" bindtap="goToRead" data-id="{{latestSection.id}}">
|
|
<view class="banner-glow"></view>
|
|
<view class="banner-tag">{{latestLabel}}</view>
|
|
<view class="banner-title">{{latestSection.title}}</view>
|
|
<view class="banner-part">{{latestSection.part}}</view>
|
|
<view class="banner-action">
|
|
<text class="banner-action-text">开始阅读</text>
|
|
<view class="banner-arrow">→</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 阅读进度卡 -->
|
|
<view class="progress-card card">
|
|
<view class="progress-header">
|
|
<text class="progress-title">我的阅读</text>
|
|
<text class="progress-count">{{purchasedCount}}/{{totalSections}}章</text>
|
|
</view>
|
|
<view class="progress-bar-wrapper">
|
|
<view class="progress-bar-bg">
|
|
<view class="progress-bar-fill" style="width: {{(purchasedCount / totalSections) * 100}}%;"></view>
|
|
</view>
|
|
</view>
|
|
<view class="progress-stats">
|
|
<view class="stat-item">
|
|
<text class="stat-value brand-color">{{purchasedCount}}</text>
|
|
<text class="stat-label">已读</text>
|
|
</view>
|
|
<view class="stat-item">
|
|
<text class="stat-value">{{totalSections - purchasedCount}}</text>
|
|
<text class="stat-label">待读</text>
|
|
</view>
|
|
<view class="stat-item">
|
|
<text class="stat-value">5</text>
|
|
<text class="stat-label">篇章</text>
|
|
</view>
|
|
<view class="stat-item">
|
|
<text class="stat-value">11</text>
|
|
<text class="stat-label">章节</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 精选推荐(按阅读量排序) -->
|
|
<view class="section">
|
|
<view class="section-header">
|
|
<text class="section-title">精选推荐</text>
|
|
<view class="section-more" bindtap="goToChapters">
|
|
<text class="more-text">查看全部</text><text class="more-arrow">→</text>
|
|
</view>
|
|
</view>
|
|
<view class="featured-list">
|
|
<view class="featured-item" wx:for="{{featuredSections}}" wx:key="id" bindtap="goToRead" data-id="{{item.id}}">
|
|
<view class="featured-content">
|
|
<view class="featured-meta">
|
|
<text class="featured-id brand-color">{{item.id}}</text>
|
|
<text class="tag {{item.tagClass || 'tag-pink'}}">{{item.tag || '热门'}}</text>
|
|
</view>
|
|
<text class="featured-title">{{item.title}}</text>
|
|
<text class="featured-part">{{item.part}}</text>
|
|
</view>
|
|
<view class="featured-arrow">→</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 创业老板排行(替代内容概览) -->
|
|
<view class="section" wx:if="{{vipMembers.length > 0}}">
|
|
<view class="section-header">
|
|
<text class="section-title">创业老板排行</text>
|
|
</view>
|
|
<view class="members-grid">
|
|
<view class="member-cell" wx:for="{{vipMembers}}" wx:key="id" bindtap="goToMemberDetail" data-id="{{item.id}}">
|
|
<view class="member-avatar-wrap">
|
|
<image class="member-avatar" wx:if="{{item.avatar}}" src="{{item.avatar}}" mode="aspectFill"/>
|
|
<view class="member-avatar-placeholder" wx:else>
|
|
<text>{{item.name[0] || '创'}}</text>
|
|
</view>
|
|
<view class="member-vip-dot">V</view>
|
|
</view>
|
|
<text class="member-name">{{item.name}}</text>
|
|
<text class="member-project" wx:if="{{item.project}}">{{item.project}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 序言入口 -->
|
|
<view class="preface-card" bindtap="goToRead" data-id="preface">
|
|
<view class="preface-content">
|
|
<text class="preface-title">序言</text>
|
|
<text class="preface-desc">为什么我每天早上6点在Soul开播?</text>
|
|
</view>
|
|
<view class="tag tag-free">免费</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="bottom-space"></view>
|
|
</view>
|