Files
Mycontent/miniprogram/pages/index/index.wxml
卡若 d48aba5047 chore: 以本地为准同步最新改动
提交当前本地未入库的前后端与发布脚本改动,作为本地主版本基线,用于全量覆盖同步到 GitHub。

Made-with: Cursor
2026-04-06 23:12:18 +08:00

200 lines
9.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--pages/index/index.wxml-->
<!--卡若创业派对 - 首页(按临时需求池/首页页面设计)-->
<view class="page page-transition">
<!-- 自定义导航栏占位 -->
<view class="nav-placeholder" style="height: {{statusBarHeight + 44}}px;"></view>
<!-- 顶部区域:中文标识 + 标题副标题 | 置顶@人物留资(无置顶不展示) -->
<view class="header">
<view class="header-content">
<view class="logo-section">
<view class="logo-icon">
<text class="logo-text">派</text>
</view>
<view class="logo-info">
<text class="logo-title-text">{{mpUiLogoTitle}}</text>
<text class="logo-subtitle">{{mpUiLogoSubtitle}}</text>
</view>
</view>
<!-- 右上角单一入口:由置顶超级个体决定,点击弹出横排礼物,点选即付 -->
<view class="header-right" wx:if="{{!auditMode && headerCornerAction.show}}">
<view class="contact-btn header-corner-btn" catchtap="onHeaderCornerTap" hover-class="none">
<image wx:if="{{headerCornerAction.avatar}}" class="contact-avatar" src="{{headerCornerAction.avatar}}" mode="aspectFill"/>
<text wx:elif="{{headerCornerAction.emoji}}" class="mic-entry-emoji">{{headerCornerAction.emoji}}</text>
<text class="contact-name">{{headerCornerAction.label}}</text>
</view>
</view>
</view>
<!-- 搜索栏(根据配置显示) -->
<view class="search-bar" wx:if="{{searchEnabled}}" bindtap="goToSearch">
<view class="search-icon-wrap">
<icon name="search" size="40" color="#8e8e93" customClass="search-icon-text"></icon>
</view>
<text class="search-placeholder">{{mpUiSearchPlaceholder}}</text>
</view>
</view>
<!-- 主内容区 -->
<view class="main-content">
<!-- Banner 推荐卡片(优先 recommended API 第一条) -->
<view class="banner-card" wx:if="{{bannerSection}}" bindtap="goToRead" data-id="{{bannerSection.id}}" data-mid="{{bannerSection.mid}}">
<view class="banner-glow"></view>
<view class="banner-tag">{{mpUiBannerTag}}</view>
<view class="banner-title">{{bannerSection.title}}</view>
<view class="banner-action">
<text class="banner-action-text">{{mpUiBannerReadMore}}</text>
<icon name="direction-right" size="32" color="#00CED1" customClass="banner-arrow"></icon>
</view>
</view>
<view class="banner-card banner-skeleton" wx:elif="{{bannerLoading}}" bindtap="goToChapters">
<view class="banner-glow"></view>
<view class="banner-tag">{{mpUiBannerTag}}</view>
<view class="banner-title">加载中...</view>
<view class="banner-action"><text class="banner-action-text">{{mpUiBannerReadMore}}</text><icon name="direction-right" size="32" color="#00CED1" customClass="banner-arrow"></icon></view>
</view>
<view class="banner-card banner-skeleton" wx:else bindtap="goToChapters">
<view class="banner-glow"></view>
<view class="banner-tag">{{mpUiBannerTag}}</view>
<view class="banner-title">暂无推荐,去目录看看 →</view>
<view class="banner-action"><text class="banner-action-text">{{mpUiBannerReadMore}}</text><icon name="direction-right" size="32" color="#00CED1" customClass="banner-arrow"></icon></view>
</view>
<!-- 超级个体:与匹配页一致,仅 VIP 横向列表(无首位特例) -->
<view class="section" wx:if="{{!auditMode}}">
<view class="section-header">
<text class="section-title">{{mpUiSuperTitle}}</text>
</view>
<!-- 加载中:骨架动画 -->
<view wx:if="{{superMembersLoading}}" class="super-loading">
<view class="super-loading-inner">
<view class="super-loading-item" wx:for="{{[1,2,3,4]}}" wx:key="*this">
<view class="super-loading-avatar"></view>
<view class="super-loading-name"></view>
</view>
</view>
</view>
<!-- 已加载有数据 -->
<scroll-view wx:elif="{{superMembers.length > 0}}" class="super-scroll" scroll-x>
<view class="super-scroll-inner">
<view
class="super-item-h"
wx:for="{{superMembers}}"
wx:key="id"
bindtap="goToMemberDetail"
data-id="{{item.id}}"
hover-class="super-item-hover"
hover-stay-time="80"
>
<view class="super-item-stack">
<view class="super-avatar {{item.isVip ? 'super-avatar-vip' : ''}}">
<image class="super-avatar-img" wx:if="{{item.avatar}}" src="{{item.avatar}}" mode="aspectFill"/>
<text class="super-avatar-text" wx:else>{{item.avatarLetter}}</text>
</view>
<text class="super-name">{{item.name}}</text>
</view>
</view>
</view>
</scroll-view>
<!-- 已加载无数据 -->
<view wx:else class="super-empty">
<text class="super-empty-text">成为会员,展示你的项目</text>
<view class="super-empty-btn" bindtap="goToVip">加入创业派对 →</view>
</view>
</view>
<!-- 精选推荐:默认 3 条,列表下三角展开更多(与最新新增一致) -->
<view class="section">
<view class="section-header">
<text class="section-title">{{mpUiPickTitle}}</text>
</view>
<view class="featured-list">
<view
class="featured-item"
wx:for="{{featuredSections}}"
wx:key="id"
bindtap="goToRead"
data-id="{{item.id}}"
data-mid="{{item.mid}}"
>
<view class="featured-content">
<view class="featured-meta" wx:if="{{item.tag}}">
<text class="featured-tag {{item.tagClass || 'tag-rec'}}">{{item.tag}}</text>
</view>
<text class="featured-title">{{item.title}}</text>
</view>
<icon name="chevron-right" size="28" color="rgba(255,255,255,0.6)" customClass="featured-arrow"></icon>
</view>
</view>
<view
class="latest-expand-hint"
wx:if="{{!featuredExpanded && featuredSectionsFull.length > 3}}"
bindtap="expandFeaturedChapters"
hover-class="latest-expand-hint-hover"
hover-stay-time="80"
>
<view class="latest-expand-triangle"></view>
</view>
</view>
<!-- 最新新增(时间线样式;超过 5 条时在列表下方点小三角展开,展开后随页面滚动看全部) -->
<view class="section" wx:if="{{latestChapters.length > 0}}">
<view class="section-header latest-header">
<text class="section-title">{{mpUiLatestTitle}}</text>
</view>
<view class="timeline-wrap">
<view class="timeline-line"></view>
<view class="timeline-list">
<view class="timeline-item {{index === 0 ? 'timeline-item-first' : ''}}" wx:for="{{displayLatestChapters}}" wx:key="id" bindtap="goToRead" data-id="{{item.id}}" data-mid="{{item.mid}}">
<view class="timeline-dot"></view>
<view class="timeline-content">
<view class="timeline-row">
<text class="timeline-title">{{item.title}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 仅文案「展开更多」去掉:下方居中轻点小三角,点一次展开剩余条目 -->
<view
class="latest-expand-hint"
wx:if="{{latestChapters.length > 5 && !latestExpanded}}"
bindtap="expandLatestChapters"
hover-class="latest-expand-hint-hover"
hover-stay-time="80"
>
<view class="latest-expand-triangle"></view>
</view>
</view>
</view>
<!-- 横排礼物弹层(上麦 / 打赏统一,与「申请上麦」截图一致,点选即付) -->
<view class="tip-modal-mask" wx:if="{{showTipModal}}" catchtap="closeTipModal">
<view class="tip-modal-panel tip-modal-panel--mic" catchtap="stopTipModalBubble">
<view class="mic-modal-head">
<text class="mic-modal-title">{{tipModalTitle}}</text>
<view class="mic-modal-x" catchtap="closeTipModal">×</view>
</view>
<text class="mic-modal-desc" wx:if="{{tipModalSubtitle}}">{{tipModalSubtitle}}</text>
<view class="mic-gift-row-h" wx:if="{{micHorizontalSlots.length > 0}}">
<view
wx:for="{{micHorizontalSlots}}"
wx:key="id"
class="mic-gift-card {{micDefaultGiftId === item.id ? 'mic-gift-card--default' : ''}} {{item.micIsCenterSlot ? 'mic-gift-card--mid' : ''}}"
data-id="{{item.id}}"
catchtap="onHorizontalTipPay"
>
<view class="mic-gift-default-tag" wx:if="{{micDefaultGiftId === item.id}}">默认</view>
<image wx:if="{{item.micShowIcon}}" class="mic-gift-icon-img" src="{{item.icon}}" mode="aspectFit" style="width: {{item.micEmojiRpx}}rpx; height: {{item.micEmojiRpx}}rpx;"/>
<text wx:else class="mic-gift-emoji" style="font-size: {{item.micEmojiRpx}}rpx;">{{item.emoji}}</text>
<text class="mic-gift-name">{{item.name}}</text>
<text class="mic-gift-price">¥{{item.price}}</text>
</view>
</view>
</view>
</view>
<!-- 底部留白 -->
<view class="bottom-space"></view>
</view>