You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<view class="notice-page"> <!-- 背景 --> <view class="bg-blur"></view> <!-- 主内容区 --> <view class="content"> <!-- 头部标题 & 搜索栏一体化 --> <view class="header"> <text class="title">📋 公告·通知</text> <view class="search-box"> <text class="icon">🔍</text> <input type="text" placeholder="搜索标题或摘要..." placeholder-class="placeholder" bindinput="onSearchInput" value="{{searchKeyword}}" confirm-type="search" bindconfirm="handleSearch" /> <text class="clear-icon" wx:if="{{searchKeyword}}" bindtap="clearSearch">✕</text> </view> </view>
<!-- 分类导航--> <scroll-view class="category-scroll" scroll-x show-scrollbar="{{false}}" enhanced> <view class="category-list"> <view class="category-item {{currentCategory === '全部' ? 'active' : ''}}" bindtap="switchCategory" data-category="全部" data-type="" > <text>全部</text> <text class="dot" wx:if="{{currentCategory === '全部'}}"></text> </view> <view wx:for="{{categories}}" wx:key="index" class="category-item {{currentCategory === item.dictLabel ? 'active' : ''}}" bindtap="switchCategory" data-category="{{item.dictLabel}}" data-type="{{item.dictValue}}" > <text>{{item.dictLabel}}</text> <text class="dot" wx:if="{{currentCategory === item.dictLabel}}"></text> </view> </view> </scroll-view>
<!-- 列表内容区域 --> <view class="list-container"> <!-- 骨架屏 / 加载提示 --> <block wx:if="{{loading && noticeList.length === 0}}"> <view class="skeleton-list"> <view wx:for="{{4}}" wx:key="*this" class="skeleton-item"></view> </view> </block>
<!-- 列表渲染 --> <scroll-view class="notice-scroll" scroll-y enhanced show-scrollbar="{{false}}" bindscrolltolower="loadMore" lower-threshold="50" refresher-enabled refresher-triggered="{{refreshing}}" bindrefresherrefresh="onRefresh" > <view class="notice-list"> <view wx:for="{{noticeList}}" wx:key="id" class="notice-card" bindtap="viewDetail" data-id="{{item.id}}" > <!-- 重要性标记装饰 --> <view class="card-left-bar" style="background: {{getImportanceColor(item.warningLevel)}};"></view> <view class="card-content"> <view class="card-header"> <text class="notice-title">{{item.title}}</text> <text class="notice-tag" style="background: {{getTagBg(item.warningLevel)}};">{{item.warningType}}</text> </view> <view class="notice-abstract">{{item.responseMeasures || '暂无摘要'}}</view> <view class="card-footer"> <view class="date-time"> <text class="date-icon">📅</text> <text>{{item.createdTime}}</text> </view> <view class="warning-level" style="color: {{getLevelColor(item.warningLevel)}}; background: {{getLevelBg(item.warningLevel)}};"> {{item.warningLevel || '一般'}} </view> </view> </view> </view> </view>
<!-- 上拉加载更多状态 --> <view class="load-more" wx:if="{{noticeList.length > 0}}"> <block wx:if="{{loading}}"> <text class="loading-icon">⋯</text> <text>加载中...</text> </block> <block wx:elif="{{hasMore}}"> <text class="loading-icon">↓</text> <text>上拉加载更多</text> </block> <block wx:else> <text>—— 已经到底了 ——</text> </block> </view>
<!-- 空状态展示 --> <view class="empty-state" wx:if="{{!loading && noticeList.length === 0}}"> <text>📭 暂无相关公告</text> <text style="font-size: 28rpx; color: #999; margin-top: 16rpx;"> {{searchKeyword ? '试试其他关键词' : currentCategory !== '全部' ? '试试其他分类' : '暂无数据'}} </text> </view> </scroll-view> </view> </view></view>
|