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/judge/review.wxss |  444 +++++++++++++++---------------------------------------
 1 files changed, 127 insertions(+), 317 deletions(-)

diff --git a/wx/pages/judge/review.wxss b/wx/pages/judge/review.wxss
index fab5a9e..24f04d5 100644
--- a/wx/pages/judge/review.wxss
+++ b/wx/pages/judge/review.wxss
@@ -5,7 +5,7 @@
   padding-bottom: 120rpx;
 }
 
-/* 鍔犺浇鐘舵�� */
+/* Loading */
 .loading-container {
   display: flex;
   flex-direction: column;
@@ -34,12 +34,10 @@
   100% { transform: rotate(360deg); }
 }
 
-/* 璇勫鍐呭 */
 .review-content {
   padding: 30rpx;
 }
 
-/* 閫氱敤鏍峰紡 */
 .section-title {
   font-size: 32rpx;
   font-weight: 600;
@@ -48,8 +46,11 @@
   display: block;
 }
 
-/* 浣滃搧淇℃伅 */
-.submission-info {
+.submission-info,
+.media-section,
+.criteria-section,
+.comment-section,
+.existing-review {
   background-color: #fff;
   border-radius: 16rpx;
   padding: 30rpx;
@@ -87,12 +88,6 @@
   color: #155724;
 }
 
-.submission-detail {
-  display: flex;
-  flex-direction: column;
-  gap: 20rpx;
-}
-
 .submission-title {
   font-size: 30rpx;
   font-weight: 600;
@@ -128,15 +123,12 @@
   display: flex;
   align-items: center;
   gap: 8rpx;
-  padding: 8rpx 16rpx;
-  background-color: #007aff;
+  padding: 10rpx 24rpx;
+  background: linear-gradient(135deg, #34c759 0%, #2ea043 100%);
   color: #fff;
-  border-radius: 16rpx;
-  font-size: 22rpx;
-}
-
-.contact-icon {
-  font-size: 20rpx;
+  border-radius: 24rpx;
+  font-size: 24rpx;
+  box-shadow: 0 6rpx 16rpx rgba(46, 160, 67, 0.25);
 }
 
 .participant-detail {
@@ -146,13 +138,13 @@
 }
 
 .participant-avatar {
-  width: 80rpx;
-  height: 80rpx;
-  border-radius: 40rpx;
+  width: 96rpx;
+  height: 96rpx;
+  border-radius: 48rpx;
+  background-color: #f0f0f0;
 }
 
 .participant-text {
-  flex: 1;
   display: flex;
   flex-direction: column;
   gap: 8rpx;
@@ -160,196 +152,127 @@
 
 .participant-name {
   font-size: 28rpx;
-  font-weight: 500;
+  font-weight: 600;
   color: #333;
 }
 
-.participant-school {
+.participant-meta {
+  font-size: 24rpx;
+  color: #555;
+  line-height: 1.4;
+}
+
+.participant-field {
   font-size: 24rpx;
   color: #666;
+  line-height: 1.4;
 }
 
 .team-info {
   margin-top: 20rpx;
-  padding-top: 20rpx;
-  border-top: 1rpx solid #f0f0f0;
+  background-color: #f8f9fa;
+  border-radius: 12rpx;
+  padding: 20rpx;
 }
 
 .team-label {
   font-size: 26rpx;
-  color: #666;
-  font-weight: 500;
-  margin-bottom: 16rpx;
-  display: block;
+  font-weight: 600;
+  color: #333;
 }
 
 .team-members {
+  margin-top: 12rpx;
   display: flex;
-  flex-wrap: wrap;
-  gap: 16rpx;
+  flex-direction: column;
+  gap: 8rpx;
 }
 
 .team-member {
+  font-size: 24rpx;
+  color: #555;
+}
+
+.media-list {
   display: flex;
   flex-direction: column;
-  align-items: center;
-  padding: 12rpx 20rpx;
-  background-color: #f8f9fa;
-  border-radius: 12rpx;
-}
-
-.member-name {
-  font-size: 24rpx;
-  color: #333;
-  font-weight: 500;
-}
-
-.member-role {
-  font-size: 20rpx;
-  color: #666;
-  margin-top: 4rpx;
-}
-
-.submit-time {
-  font-size: 24rpx;
-  color: #999;
-  margin-top: 10rpx;
-}
-
-/* 濯掍綋灞曠ず */
-.media-section {
-  background-color: #fff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
-}
-
-.media-grid {
-  display: grid;
-  grid-template-columns: repeat(2, 1fr);
   gap: 20rpx;
 }
 
 .media-item {
-  position: relative;
-  border-radius: 12rpx;
-  overflow: hidden;
-  aspect-ratio: 1;
-}
-
-.media-image,
-.media-video {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.play-overlay {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  width: 60rpx;
-  height: 60rpx;
-  background-color: rgba(0, 0, 0, 0.6);
-  border-radius: 50%;
   display: flex;
   align-items: center;
-  justify-content: center;
-}
-
-.play-icon {
-  color: #fff;
-  font-size: 24rpx;
-  margin-left: 4rpx;
-}
-
-/* 鏂囦欢鍒楄〃 */
-.files-section {
-  background-color: #fff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
-}
-
-.file-list {
-  display: flex;
-  flex-direction: column;
-  gap: 20rpx;
-}
-
-.file-item {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
+  gap: 24rpx;
   padding: 20rpx;
   background-color: #f8f9fa;
   border-radius: 12rpx;
 }
 
-.file-info {
+.media-thumb-wrapper {
+  width: 120rpx;
+  height: 120rpx;
+  border-radius: 12rpx;
+  overflow: hidden;
+  position: relative;
+  background: #eaeaea;
+}
+
+.media-thumb {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
+
+.media-icon {
+  width: 100%;
+  height: 100%;
   display: flex;
   align-items: center;
-  gap: 16rpx;
-  flex: 1;
-  min-width: 0;
-}
-
-.file-icon {
+  justify-content: center;
   font-size: 32rpx;
+  font-weight: 600;
+  color: #fff;
 }
 
-.file-detail {
+.media-icon.pdf { background: #e74c3c; }
+.media-icon.doc { background: #1e88e5; }
+.media-icon.file { background: #6c757d; }
+
+.media-play {
+  position: absolute;
+  bottom: 8rpx;
+  right: 8rpx;
+  width: 44rpx;
+  height: 44rpx;
+  background: rgba(0, 0, 0, 0.6);
+  border-radius: 50%;
+  color: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 24rpx;
+}
+
+.media-info {
   flex: 1;
   min-width: 0;
   display: flex;
   flex-direction: column;
-  gap: 4rpx;
+  gap: 6rpx;
 }
 
-.file-name {
-  font-size: 26rpx;
+.media-name {
+  font-size: 28rpx;
+  font-weight: 600;
   color: #333;
-  font-weight: 500;
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
 }
 
-.file-size {
+.media-size {
   font-size: 22rpx;
   color: #666;
-}
-
-.download-btn {
-  display: flex;
-  align-items: center;
-  gap: 8rpx;
-  padding: 12rpx 20rpx;
-  background-color: #007aff;
-  color: #fff;
-  border-radius: 20rpx;
-  font-size: 22rpx;
-  transition: all 0.3s ease;
-}
-
-.download-btn.downloading {
-  background-color: #6c757d;
-}
-
-.download-icon {
-  font-size: 20rpx;
-}
-
-/* 璇勫鏍囧噯 */
-.criteria-section {
-  background-color: #fff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
 }
 
 .criteria-list {
@@ -392,33 +315,35 @@
   display: block;
 }
 
-.score-selector {
-  width: 100%;
-}
-
-.score-picker {
+.score-control {
   display: flex;
-  justify-content: space-between;
   align-items: center;
-  padding: 16rpx 20rpx;
-  background-color: #fff;
-  border: 2rpx solid #e0e0e0;
-  border-radius: 8rpx;
-  font-size: 26rpx;
+  gap: 20rpx;
+  margin-top: 16rpx;
 }
 
-.score-picker.disabled {
-  background-color: #f5f5f5;
-  color: #999;
+.score-btn {
+  width: 60rpx;
+  height: 60rpx;
+  border-radius: 12rpx;
+  background: #eef2ff;
+  color: #4c60ff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 36rpx;
+  font-weight: 600;
 }
 
-.score-text {
-  color: #333;
-}
-
-.picker-arrow {
-  color: #999;
-  font-size: 20rpx;
+.score-input {
+  flex: 1;
+  height: 60rpx;
+  border: 2rpx solid #dcdfe6;
+  border-radius: 12rpx;
+  text-align: center;
+  font-size: 28rpx;
+  padding: 0 12rpx;
+  background: #fff;
 }
 
 .total-score {
@@ -444,15 +369,6 @@
   font-weight: 700;
 }
 
-/* 璇勫鎰忚 */
-.comment-section {
-  background-color: #fff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
-}
-
 .comment-input {
   width: 100%;
   min-height: 200rpx;
@@ -466,29 +382,16 @@
   box-sizing: border-box;
 }
 
-.comment-input.disabled {
-  background-color: #f5f5f5;
-  color: #999;
-}
-
 .comment-counter {
-  display: flex;
-  justify-content: flex-end;
+  text-align: right;
   margin-top: 12rpx;
-}
-
-.counter-text {
   font-size: 22rpx;
   color: #999;
 }
 
-/* 宸叉湁璇勫璁板綍 */
 .existing-review {
-  background-color: #fff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
+  background-color: #fff7e6;
+  border: 2rpx solid #ffb347;
 }
 
 .review-info {
@@ -496,49 +399,35 @@
   justify-content: space-between;
   align-items: center;
   margin-bottom: 20rpx;
-  padding: 20rpx;
-  background-color: #f8f9fa;
-  border-radius: 12rpx;
-}
-
-.review-time,
-.review-total {
-  font-size: 24rpx;
+  font-size: 26rpx;
   color: #666;
 }
 
 .other-reviews-btn {
   display: flex;
   align-items: center;
-  justify-content: center;
-  gap: 12rpx;
-  padding: 16rpx;
-  background-color: #007aff;
+  gap: 8rpx;
+  padding: 14rpx 24rpx;
+  border-radius: 24rpx;
+  background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
   color: #fff;
-  border-radius: 12rpx;
   font-size: 26rpx;
 }
 
-.other-reviews-icon {
-  font-size: 24rpx;
-}
-
-/* 搴曢儴鎿嶄綔鏍� */
 .bottom-actions {
   position: fixed;
-  bottom: 0;
   left: 0;
   right: 0;
-  display: flex;
-  gap: 20rpx;
+  bottom: 0;
   padding: 20rpx 30rpx;
-  background-color: #fff;
-  border-top: 1rpx solid #e0e0e0;
-  box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.1);
+  background-color: rgba(255, 255, 255, 0.95);
+  box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.08);
+  display: flex;
+  justify-content: center;
+  align-items: stretch;
 }
 
 .action-btn {
-  flex: 1;
   display: flex;
   align-items: center;
   justify-content: center;
@@ -548,11 +437,8 @@
   font-size: 28rpx;
   font-weight: 500;
   transition: all 0.3s ease;
-}
-
-.draft-btn {
-  background-color: #6c757d;
-  color: #fff;
+  flex: 1;
+  width: 100%;
 }
 
 .submit-btn {
@@ -568,101 +454,25 @@
   font-size: 24rpx;
 }
 
-/* 瑙嗛棰勮妯℃�佹 */
-.media-preview-modal {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  z-index: 1000;
-}
-
-.modal-overlay {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, 0.8);
-}
-
-.modal-content {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  width: 90%;
-  max-width: 600rpx;
-  background-color: #fff;
-  border-radius: 16rpx;
-  overflow: hidden;
-}
-
-.modal-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 20rpx 30rpx;
-  border-bottom: 1rpx solid #e0e0e0;
-}
-
-.modal-title {
-  font-size: 30rpx;
-  font-weight: 600;
-  color: #333;
-}
-
-.close-btn {
-  width: 60rpx;
-  height: 60rpx;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border-radius: 50%;
-  background-color: #f8f9fa;
-}
-
-.close-icon {
-  font-size: 24rpx;
-  color: #666;
-}
-
-.modal-body {
-  padding: 30rpx;
-}
-
-.preview-video {
-  width: 100%;
-  height: 400rpx;
-  border-radius: 12rpx;
-}
-
-/* 鍝嶅簲寮忛�傞厤 */
 @media (max-width: 375px) {
   .container {
     padding-bottom: 100rpx;
   }
-  
+
   .review-content {
     padding: 20rpx;
   }
-  
+
   .submission-info,
   .media-section,
-  .files-section,
   .criteria-section,
   .comment-section,
   .existing-review {
     padding: 20rpx;
     margin-bottom: 20rpx;
   }
-  
-  .media-grid {
-    grid-template-columns: 1fr;
-  }
-  
+
   .bottom-actions {
     padding: 15rpx 20rpx;
   }
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0