From 915d80766dd8e0157e9b9510b3634ed758eb5c5a Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期日, 05 十月 2025 14:45:58 +0800
Subject: [PATCH] feat: 新增员工审核入口与审核页面

---
 wx/pages/profile/profile.wxss |  700 +++++++++++++++++++++++-----------------------------------
 1 files changed, 280 insertions(+), 420 deletions(-)

diff --git a/wx/pages/profile/profile.wxss b/wx/pages/profile/profile.wxss
index cdbf621..7889695 100644
--- a/wx/pages/profile/profile.wxss
+++ b/wx/pages/profile/profile.wxss
@@ -4,7 +4,7 @@
 /* 瀹瑰櫒鏍峰紡 */
 .container {
   min-height: 100vh;
-  background: #f8f9fa;
+  background: #f5f5f5;
   padding-bottom: 40rpx;
 }
 
@@ -31,518 +31,378 @@
   padding: 0 30rpx;
 }
 
-/* 鐢ㄦ埛淇℃伅鍗$墖 */
-.user-card {
-  background: linear-gradient(135deg, #1976d2, #42a5f5);
-  border-radius: 20rpx;
-  padding: 40rpx;
-  margin-bottom: 30rpx;
+/* 鐢ㄦ埛淇℃伅鍖哄煙 */
+.user-section {
   display: flex;
   align-items: center;
+  padding: 40rpx 30rpx;
+  margin-bottom: 40rpx;
   justify-content: space-between;
-  box-shadow: 0 8rpx 24rpx rgba(25, 118, 210, 0.3);
 }
 
-.user-info {
-  display: flex;
-  align-items: center;
-  flex: 1;
+.user-avatar-wrapper {
+  position: relative;
 }
 
-.avatar {
+.user-avatar {
   width: 120rpx;
   height: 120rpx;
-  border-radius: 50%;
-  margin-right: 30rpx;
-  border: 4rpx solid rgba(255, 255, 255, 0.3);
+  border-radius: 60rpx;
+  border: 4rpx solid #ffffff;
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
 }
 
-.avatar-placeholder {
+.user-avatar-placeholder {
   width: 120rpx;
   height: 120rpx;
-  border-radius: 50%;
-  margin-right: 30rpx;
-  border: 4rpx solid rgba(255, 255, 255, 0.3);
-  background: rgba(255, 255, 255, 0.2);
+  border-radius: 60rpx;
+  border: 4rpx solid #ffffff;
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   display: flex;
   align-items: center;
   justify-content: center;
 }
 
 .avatar-text {
-  color: #ffffff;
+  color: white;
   font-size: 48rpx;
   font-weight: bold;
 }
 
-.user-details {
+.avatar {
+  width: 120rpx;
+  height: 120rpx;
+  border-radius: 60rpx;
+  border: 4rpx solid #ffffff;
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
+}
+
+.user-info {
   flex: 1;
-}
-
-.username {
-  display: block;
-  font-size: 36rpx;
-  font-weight: bold;
-  color: #ffffff;
-  margin-bottom: 12rpx;
-}
-
-.user-desc {
-  display: block;
-  font-size: 24rpx;
-  color: rgba(255, 255, 255, 0.8);
-  margin-bottom: 16rpx;
-}
-
-.user-roles {
-  display: flex;
-  gap: 12rpx;
-}
-
-.role-tag {
-  padding: 6rpx 16rpx;
-  background: rgba(255, 255, 255, 0.2);
-  color: #ffffff;
-  border-radius: 20rpx;
-  font-size: 20rpx;
-  font-weight: 500;
-}
-
-.edit-btn {
-  width: 60rpx;
-  height: 60rpx;
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.edit-icon {
-  font-size: 28rpx;
-}
-
-/* 缁熻鏁版嵁鏍峰紡 */
-.stats-section {
-  background: #ffffff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
-}
-
-.stats-grid {
-  display: flex;
-  justify-content: space-between;
-}
-
-.stat-item {
+  margin-left: 30rpx;
   display: flex;
   flex-direction: column;
-  align-items: center;
-  flex: 1;
 }
 
-.stat-number {
-  font-size: 48rpx;
+.user-name {
+  font-size: 36rpx;
   font-weight: bold;
-  color: #1976d2;
+  color: #333333;
   margin-bottom: 8rpx;
 }
 
-.stat-label {
-  font-size: 24rpx;
-  color: #666666;
+.user-role {
+  font-size: 28rpx;
+  color: #999999;
 }
 
-/* 瑙掕壊涓撳尯鏍峰紡 */
-.role-section {
-  background: #ffffff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
-}
-
-.section-header {
+.settings-btn {
+  width: 80rpx;
+  height: 80rpx;
   display: flex;
-  justify-content: space-between;
   align-items: center;
-  margin-bottom: 30rpx;
+  justify-content: center;
+  background: rgba(0, 0, 0, 0.05);
+  border-radius: 40rpx;
+  transition: all 0.3s ease;
+}
+
+.settings-btn:active {
+  background: rgba(0, 0, 0, 0.1);
+  transform: scale(0.95);
+}
+
+.icon-settings {
+  font-size: 40rpx;
+}
+
+/* 椤圭洰鍖哄煙 */
+.projects-section {
+  margin-bottom: 40rpx;
 }
 
 .section-title {
   font-size: 32rpx;
   font-weight: bold;
   color: #333333;
+  margin-bottom: 30rpx;
+  display: block;
 }
 
-.judge-stats,
-.organizer-stats {
-  font-size: 24rpx;
-  color: #1976d2;
-  font-weight: 500;
-}
-
-.pending-count,
-.active-count {
-  padding: 8rpx 16rpx;
-  background: #e3f2fd;
-  border-radius: 20rpx;
-}
-
-.menu-grid {
+.project-list {
   display: flex;
-  flex-wrap: wrap;
+  flex-direction: column;
   gap: 20rpx;
 }
 
-.menu-item {
-  flex: 0 0 calc(33.333% - 14rpx);
+.project-card {
   display: flex;
-  flex-direction: column;
   align-items: center;
-  padding: 30rpx 20rpx;
-  background: #f8f9fa;
-  border-radius: 12rpx;
-  border: 2rpx solid transparent;
+  padding: 24rpx;
+  margin-bottom: 16rpx;
+  background: white;
+  border-radius: 16rpx;
+  box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
   transition: all 0.3s ease;
 }
 
-.menu-item:active {
-  background: #e9ecef;
-  border-color: #1976d2;
+.project-card:active {
   transform: scale(0.98);
-}
-
-.menu-icon-wrapper {
-  position: relative;
-  margin-bottom: 16rpx;
-}
-
-.menu-icon {
-  font-size: 48rpx;
-}
-
-.badge {
-  position: absolute;
-  top: -8rpx;
-  right: -8rpx;
-  min-width: 32rpx;
-  height: 32rpx;
-  background: #ff4757;
-  color: #ffffff;
-  border-radius: 16rpx;
-  font-size: 20rpx;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  padding: 0 8rpx;
-  font-weight: bold;
-}
-
-.menu-title {
-  font-size: 26rpx;
-  font-weight: bold;
-  color: #333333;
-  margin-bottom: 8rpx;
-  text-align: center;
-}
-
-.menu-desc {
-  font-size: 20rpx;
-  color: #666666;
-  text-align: center;
-  line-height: 1.4;
-}
-
-/* 鍔熻兘鑿滃崟鏍峰紡 */
-.menu-section {
-  background: #ffffff;
-  border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
-}
-
-.menu-list {
-  margin-top: 20rpx;
-}
-
-.menu-item-row {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  padding: 30rpx 0;
-  border-bottom: 1rpx solid #f0f0f0;
-  transition: background 0.3s ease;
-}
-
-.menu-item-row:last-child {
-  border-bottom: none;
-}
-
-.menu-item-row:active {
   background: #f8f9fa;
 }
 
-.menu-left {
+.project-card:last-child {
+  margin-bottom: 0;
+}
+
+.project-icon {
+  width: 80rpx;
+  height: 80rpx;
+  border-radius: 16rpx;
   display: flex;
   align-items: center;
-  flex: 1;
-}
-
-.menu-item-row .menu-icon {
-  font-size: 40rpx;
+  justify-content: center;
   margin-right: 24rpx;
+  font-size: 32rpx;
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+  overflow: hidden;
 }
 
-.menu-text {
-  flex: 1;
-}
-
-.menu-item-row .menu-title {
-  display: block;
-  font-size: 28rpx;
-  font-weight: 500;
-  color: #333333;
-  margin-bottom: 6rpx;
-}
-
-.menu-item-row .menu-desc {
-  display: block;
-  font-size: 22rpx;
-  color: #666666;
-}
-
-.menu-arrow {
-  font-size: 28rpx;
-  color: #cccccc;
-  font-weight: bold;
-}
-
-/* 鏈�杩戞姤鍚嶆牱寮� */
-.recent-section {
-  background: #ffffff;
+.project-thumbnail {
+  width: 100%;
+  height: 100%;
   border-radius: 16rpx;
-  padding: 30rpx;
-  margin-bottom: 30rpx;
-  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
 }
 
-.view-more {
+.icon-project {
+  color: white;
+}
+
+.project-info {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+}
+
+.project-title {
+  font-size: 32rpx;
+  font-weight: 600;
+  color: #1a1a1a;
+  margin-bottom: 8rpx;
+}
+
+.project-subtitle {
+  font-size: 26rpx;
+  color: #666;
+}
+
+.project-status {
+  margin-right: 16rpx;
+}
+
+.status-text {
   font-size: 24rpx;
-  color: #1976d2;
+  padding: 8rpx 16rpx;
+  border-radius: 12rpx;
   font-weight: 500;
 }
 
-.empty-state {
+/* 鍩轰簬web绔殑鐘舵�佹牱寮� */
+.status-text.status-warning {
+  background: #fff3e0;
+  color: #f57c00;
+}
+
+.status-text.status-success {
+  background: #e8f5e8;
+  color: #388e3c;
+}
+
+.status-text.status-danger {
+  background: #ffebee;
+  color: #d32f2f;
+}
+
+.status-text.status-info {
+  background: #e3f2fd;
+  color: #1976d2;
+}
+
+.status-text.status-primary {
+  background: #e3f2fd;
+  color: #1976d2;
+}
+
+/* 鍏煎鏃х殑瀛楃涓茬姸鎬佹牱寮� */
+.status-text.status-SUBMITTED {
+  background: #e3f2fd;
+  color: #1976d2;
+}
+
+.status-text.status-UNDER_REVIEW {
+  background: #fff3e0;
+  color: #f57c00;
+}
+
+.status-text.status-REVIEWED {
+  background: #e8f5e8;
+  color: #388e3c;
+}
+
+.status-text.status-REJECTED {
+  background: #ffebee;
+  color: #d32f2f;
+}
+
+.project-arrow {
+  font-size: 32rpx;
+  color: #ccc;
+  margin-left: 16rpx;
+}
+
+/* 绌虹姸鎬� */
+.empty-projects {
   display: flex;
   flex-direction: column;
   align-items: center;
-  padding: 80rpx 0;
+  padding: 80rpx 40rpx;
+  background: white;
+  border-radius: 16rpx;
+  box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
 }
 
 .empty-icon {
   font-size: 80rpx;
-  margin-bottom: 20rpx;
+  margin-bottom: 24rpx;
   opacity: 0.5;
 }
 
 .empty-text {
+  font-size: 32rpx;
+  font-weight: 600;
+  color: #666;
+  margin-bottom: 12rpx;
+}
+
+.empty-desc {
   font-size: 26rpx;
-  color: #999999;
-}
-
-.registration-list {
-  margin-top: 20rpx;
-}
-
-.registration-item {
-  display: flex;
-  align-items: center;
-  padding: 24rpx 0;
-  border-bottom: 1rpx solid #f0f0f0;
-  transition: background 0.3s ease;
-}
-
-.registration-item:last-child {
-  border-bottom: none;
-}
-
-.registration-item:active {
-  background: #f8f9fa;
-}
-
-.activity-cover {
-  width: 120rpx;
-  height: 80rpx;
-  border-radius: 8rpx;
-  margin-right: 20rpx;
-}
-
-.activity-cover-placeholder {
-  width: 120rpx;
-  height: 80rpx;
-  border-radius: 8rpx;
-  margin-right: 20rpx;
-  background: linear-gradient(135deg, #42a5f5 0%, #1976d2 100%);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.activity-cover-text {
-  color: #ffffff;
-  font-size: 24rpx;
-  font-weight: bold;
-}
-
-.registration-info {
-  flex: 1;
-}
-
-.activity-title {
-  display: block;
-  font-size: 28rpx;
-  font-weight: bold;
-  color: #333333;
-  margin-bottom: 8rpx;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.registration-time,
-.activity-time {
-  display: block;
-  font-size: 22rpx;
-  color: #666666;
-  margin-bottom: 6rpx;
-}
-
-.status-row {
-  display: flex;
-  align-items: center;
-  gap: 16rpx;
-}
-
-.registration-status,
-.activity-status {
-  padding: 4rpx 12rpx;
-  border-radius: 12rpx;
-  font-size: 20rpx;
-  font-weight: 500;
-}
-
-.registration-status.status-pending {
-  background: #fff3cd;
-  color: #856404;
-}
-
-.registration-status.status-approved {
-  background: #d4edda;
-  color: #155724;
-}
-
-.registration-status.status-rejected {
-  background: #f8d7da;
-  color: #721c24;
-}
-
-.registration-status.status-cancelled {
-  background: #f1f3f4;
-  color: #5f6368;
-}
-
-.activity-status {
-  background: #e3f2fd;
-  color: #1976d2;
-}
-
-.item-arrow {
-  font-size: 24rpx;
-  color: #cccccc;
-  font-weight: bold;
-  margin-left: 16rpx;
-}
-
-/* 閫�鍑虹櫥褰曟牱寮� */
-.logout-section {
-  margin-top: 40rpx;
-}
-
-.logout-btn {
-  background: #ffffff;
-  border: 2rpx solid #ff4757;
-  border-radius: 12rpx;
-  padding: 30rpx 0;
+  color: #999;
   text-align: center;
+  line-height: 1.5;
+}
+
+/* 璇勫鍖哄煙 */
+.review-section {
+  margin-bottom: 40rpx;
+}
+
+.section-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 30rpx;
+}
+
+.review-action-btn {
+  display: flex;
+  align-items: center;
+  padding: 12rpx 24rpx;
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+  border-radius: 24rpx;
   transition: all 0.3s ease;
 }
 
-.logout-btn:active {
-  background: #ff4757;
+.review-action-btn:active {
+  transform: scale(0.95);
+  opacity: 0.8;
 }
 
-.logout-text {
+.action-text {
   font-size: 28rpx;
-  color: #ff4757;
+  color: white;
+  font-weight: 500;
+  margin-right: 8rpx;
+}
+
+.action-arrow {
+  font-size: 24rpx;
+  color: white;
+}
+
+.review-stats {
+  display: flex;
+  align-items: center;
+  padding: 32rpx;
+  background: white;
+  border-radius: 16rpx;
+  box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
+}
+
+.stat-item {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.stat-number {
+  font-size: 48rpx;
   font-weight: bold;
+  color: #667eea;
+  margin-bottom: 8rpx;
 }
 
-.logout-btn:active .logout-text {
-  color: #ffffff;
+.stat-label {
+  font-size: 24rpx;
+  color: #666;
 }
 
-/* 鍝嶅簲寮忛�傞厤 */
-@media screen and (max-width: 375px) {
-  .profile-content {
-    padding: 0 20rpx;
-  }
-  
-  .user-card {
-    padding: 30rpx;
-  }
-  
-  .avatar {
-    width: 100rpx;
-    height: 100rpx;
-    margin-right: 20rpx;
-  }
-  
-  .username {
-    font-size: 32rpx;
-  }
-  
-  .stats-section,
-  .role-section,
-  .menu-section,
-  .recent-section {
-    padding: 24rpx;
-  }
-  
-  .menu-item {
-    flex: 0 0 calc(50% - 10rpx);
-    padding: 24rpx 16rpx;
-  }
-  
-  .stat-number {
-    font-size: 40rpx;
-  }
+.stat-divider {
+  width: 1rpx;
+  height: 60rpx;
+  background: #e0e0e0;
+  margin: 0 20rpx;
 }
 
-@media screen and (min-width: 414px) {
-  .activity-cover {
-    width: 140rpx;
-    height: 90rpx;
-  }
-  
-  .menu-item {
-    padding: 36rpx 24rpx;
-  }
-  
-  .menu-icon {
-    font-size: 52rpx;
-  }
+/* 鍏朵粬鑿滃崟鍖哄煙 */
+.other-menu-section {
+  background: #ffffff;
+  border-radius: 16rpx;
+  overflow: hidden;
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
+}
+
+.menu-item-simple {
+  display: flex;
+  align-items: center;
+  padding: 30rpx;
+  border-bottom: 1rpx solid #f0f0f0;
+  transition: background-color 0.3s ease;
+}
+
+.menu-item-simple:last-child {
+  border-bottom: none;
+}
+
+.menu-item-simple:active {
+  background-color: #f8f8f8;
+}
+
+.menu-icon {
+  font-size: 32rpx;
+  margin-right: 24rpx;
+  width: 40rpx;
+  text-align: center;
+}
+
+.menu-title {
+  flex: 1;
+  font-size: 28rpx;
+  color: #333333;
+}
+
+.menu-arrow {
+  font-size: 24rpx;
+  color: #cccccc;
 }
\ No newline at end of file

--
Gitblit v1.8.0