From ba94ceae1315174798ae1967ef62268c6d16cd5b Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期一, 06 十月 2025 22:07:06 +0800
Subject: [PATCH] feat: 评审与活动相关改动 - backend(GraphQL): Activity schema 增加 updateActivityState(id, state);实现 resolver/service 仅更新 state=2 作为逻辑删除 - backend(GraphQL): region.graphqls 新增 Query leafRegions - backend(GraphQL): player.graphqls 的 projectReviewApplications 增加可选参数 regionId - backend(Service): listProjectReviewApplications 绑定 regionId 参数,修复 QueryParameterException - frontend(web): 新增 api/activity.js 的 updateActivityState 并接入 activity-list 删除逻辑 - frontend(web): review-list.vue 权限仅校验登录,移除角色限制;查询参数修正为 name/regionId - frontend(web): 删除未引用的 ActivityList.vue - frontend(web): projectReviewNew.js GraphQL 查询增加 name 参数
---
wx/pages/index/index.wxml | 120 +++++++++++++----------------------------------------------
1 files changed, 27 insertions(+), 93 deletions(-)
diff --git a/wx/pages/index/index.wxml b/wx/pages/index/index.wxml
index 30c38b7..9018761 100644
--- a/wx/pages/index/index.wxml
+++ b/wx/pages/index/index.wxml
@@ -1,3 +1,4 @@
+<wxs src="./filters.wxs" module="filters" />
<!--pages/index/index.wxml-->
<view class="container">
<!-- 鎼滅储鏍� - 鏆傛椂闅愯棌 -->
@@ -50,8 +51,9 @@
<view wx:else class="banner-placeholder">
<text class="placeholder-text">{{item.title}}</text>
</view>
-
- <view class="banner-overlay">
+
+ <!-- 瑕嗙洊灞傞殣钘� -->
+ <view class="banner-overlay" style="display: none;">
<view class="banner-title">{{item.title}}</view>
<view class="banner-desc">{{item.content}}</view>
</view>
@@ -59,107 +61,39 @@
</swiper>
</view>
- <!-- 绛涢�夋爮 -->
- <view class="filter-bar">
+ <!-- 妯″潡鏍囬 -->
+ <view class="section-title">姣旇禌淇℃伅</view>
+
+ <!-- 绛涢�夋爮锛堥殣钘忥紝淇濈暀閫昏緫锛� -->
+ <view class="filter-bar" wx:if="{{false}}">
<view class="filter-tabs">
- <view
- class="filter-tab {{filterStatus === 'all' ? 'active' : ''}}"
- bindtap="onFilterChange"
- data-status="all"
- >
- 鍏ㄩ儴
- </view>
- <view
- class="filter-tab {{filterStatus === 'SIGNUP' ? 'active' : ''}}"
- bindtap="onFilterChange"
- data-status="SIGNUP"
- >
- 鎶ュ悕涓�
- </view>
- <view
- class="filter-tab {{filterStatus === 'PLAYING' ? 'active' : ''}}"
- bindtap="onFilterChange"
- data-status="PLAYING"
- >
- 杩涜涓�
- </view>
- <view
- class="filter-tab {{filterStatus === 'ENDED' ? 'active' : ''}}"
- bindtap="onFilterChange"
- data-status="ENDED"
- >
- 宸茬粨鏉�
- </view>
+ <view class="filter-tab {{filterStatus === 'all' ? 'active' : ''}}" bindtap="onFilterChange" data-status="all">鍏ㄩ儴</view>
+ <view class="filter-tab {{filterStatus === 'SIGNUP' ? 'active' : ''}}" bindtap="onFilterChange" data-status="SIGNUP">鎶ュ悕涓�</view>
+ <view class="filter-tab {{filterStatus === 'PLAYING' ? 'active' : ''}}" bindtap="onFilterChange" data-status="PLAYING">杩涜涓�</view>
+ <view class="filter-tab {{filterStatus === 'ENDED' ? 'active' : ''}}" bindtap="onFilterChange" data-status="ENDED">宸茬粨鏉�</view>
</view>
</view>
- <!-- 璧涗簨鍒楄〃 -->
+ <!-- 璧涗簨鍒楄〃锛氭柊鐗堟按骞冲崱鐗囷紙宸﹀浘鍙虫枃锛屾寜閽潬鍙筹級 -->
<view class="activity-list">
<view
- class="activity-card card"
- wx:for="{{activities}}"
+ class="activity-card-horizontal"
+ wx:for="{{activities}}"
wx:key="id"
- bindtap="onActivityTap"
- data-index="{{index}}"
>
- <!-- 璧涗簨灏侀潰 -->
- <view class="activity-cover">
- <image wx:if="{{item.coverImage && item.coverImage.fullUrl}}" class="cover-image" src="{{item.coverImage.fullUrl}}" mode="aspectFill" />
- <view wx:else class="cover-placeholder">
- <text class="cover-placeholder-text">{{item.nameText}}</text>
+ <view class="activity-row">
+ <view class="thumb-col">
+ <image wx:if="{{item.coverImage && item.coverImage.fullUrl}}" class="thumb-image" src="{{item.coverImage.fullUrl}}" mode="aspectFill" />
+ <view wx:else class="thumb-placeholder">{{item.nameText}}</view>
</view>
- <view class="status-badge {{getStatusClass(item.state)}}">
- {{item.stateName}}
- </view>
- </view>
-
- <!-- 璧涗簨淇℃伅 -->
- <view class="activity-info">
- <view class="activity-title">{{item.name}}</view>
- <view class="activity-desc">{{item.description}}</view>
-
- <!-- 鏃堕棿淇℃伅 -->
- <view class="time-info">
- <view class="time-item">
- <text class="time-label">娲诲姩鏃堕棿锛�</text>
- <text class="time-value">{{formatDate(item.matchTime)}}</text>
+ <view class="info-col">
+ <view class="activity-title-lg">{{item.name}}</view>
+
+ <view class="deadline">鎶ュ悕鎴锛歿{filters.formatDateYYYYMMDD(item.signupDeadline)}}</view>
+ <view class="registered">宸叉姤鍚嶏細{{item.playerCount}}浜�</view>
+ <view class="btn-row">
+ <button class="ghost-btn" catchtap="onDetailTap" data-id="{{item.id}}">鏌ョ湅璇︽儏</button>
</view>
- <view class="time-item" wx:if="{{item.signupDeadline}}">
- <text class="time-label">鎶ュ悕鎴锛�</text>
- <text class="time-value">{{formatDate(item.signupDeadline)}}</text>
- </view>
- </view>
-
- <!-- 鍦扮偣淇℃伅 -->
- <view class="location-info" wx:if="{{item.address}}">
- <text class="location-icon">馃搷</text>
- <text class="location-text">{{item.address}}</text>
- </view>
-
- <!-- 鎶ュ悕杩涘害鍜屾搷浣滄寜閽� -->
- <view class="bottom-info">
- <view class="registration-info" wx:if="{{item.playerMax > 0}}">
- <text class="progress-text">鎶ュ悕浜烘暟锛歿{item.playerCount}}/{{item.playerMax}}</text>
- <view class="progress-bar">
- <view
- class="progress-fill"
- style="width: {{getRegistrationProgress(item.playerCount, item.playerMax)}}%"
- ></view>
- </view>
- </view>
- <view class="activity-actions">
- <view class="action-btn btn btn-primary" wx:if="{{canRegister(item)}}">
- 绔嬪嵆鎶ュ悕
- </view>
- <view class="action-btn btn btn-secondary" wx:else>
- 鏌ョ湅璇︽儏
- </view>
- </view>
- </view>
-
- <!-- 鏍囩 -->
- <view class="tags" wx:if="{{item.tags && item.tags.length > 0}}">
- <text class="tag" wx:for="{{item.tags}}" wx:key="*this">{{item}}</text>
</view>
</view>
</view>
--
Gitblit v1.8.0