李旭明 преди 1 година
родител
ревизия
f030749dd5

+ 3 - 2
backend/ruoyi-modules/ruoyi-stgl/src/main/java/org/dromara/stgl/controller/StglMyController.java

@@ -80,8 +80,9 @@ public class StglMyController extends BaseController {
     @GetMapping("/registrations")
     public TableDataInfo<MyRegistrationVo> getMyRegistrations(
             @Parameter(description = "分页参数") PageQuery pageQuery,
-            @Parameter(description = "报名类型(1-社团 2-志愿团队 3-活动)") @RequestParam(required = false) String registrationType) {
-        return stglMyService.queryMyRegistrations(pageQuery, registrationType);
+            @Parameter(description = "报名类型(1-社团 2-志愿团队 3-活动)") @RequestParam(required = false) String registrationType,
+            @Parameter(description = "名称(模糊查询)") @RequestParam(required = false) String name) {
+        return stglMyService.queryMyRegistrations(pageQuery, registrationType, name);
     }
 
     /**

+ 6 - 2
backend/ruoyi-modules/ruoyi-stgl/src/main/java/org/dromara/stgl/mapper/StglMyMapper.java

@@ -54,10 +54,12 @@ public interface StglMyMapper {
      *
      * @param userId 用户ID
      * @param registrationType 报名类型(可选)
+     * @param name 名称(可选,模糊查询)
      * @return 报名记录列表
      */
     List<MyRegistrationVo> selectMyRegistrations(@Param("userId") Long userId, 
-                                               @Param("registrationType") String registrationType);
+                                               @Param("registrationType") String registrationType,
+                                               @Param("name") String name);
 
     /**
      * 分页查询我的报名记录(社团+志愿团队+活动)
@@ -65,11 +67,13 @@ public interface StglMyMapper {
      * @param page 分页对象
      * @param userId 用户ID
      * @param registrationType 报名类型(可选)
+     * @param name 名称(可选,模糊查询)
      * @return 分页结果
      */
     Page<MyRegistrationVo> selectMyRegistrationsPage(@Param("page") Page<MyRegistrationVo> page,
                                                     @Param("userId") Long userId, 
-                                                    @Param("registrationType") String registrationType);
+                                                    @Param("registrationType") String registrationType,
+                                                    @Param("name") String name);
 
     /**
      * 查询我的报名记录总数

+ 2 - 1
backend/ruoyi-modules/ruoyi-stgl/src/main/java/org/dromara/stgl/service/IStglMyService.java

@@ -47,9 +47,10 @@ public interface IStglMyService {
      *
      * @param pageQuery 分页参数
      * @param registrationType 报名类型(可选)
+     * @param name 名称(可选,模糊查询)
      * @return 报名记录分页信息
      */
-    TableDataInfo<MyRegistrationVo> queryMyRegistrations(PageQuery pageQuery, String registrationType);
+    TableDataInfo<MyRegistrationVo> queryMyRegistrations(PageQuery pageQuery, String registrationType, String name);
 
     /**
      * 对活动进行评分

+ 2 - 2
backend/ruoyi-modules/ruoyi-stgl/src/main/java/org/dromara/stgl/service/impl/StglMyServiceImpl.java

@@ -72,10 +72,10 @@ public class StglMyServiceImpl implements IStglMyService {
      * 分页查询我的报名记录
      */
     @Override
-    public TableDataInfo<MyRegistrationVo> queryMyRegistrations(PageQuery pageQuery, String registrationType) {
+    public TableDataInfo<MyRegistrationVo> queryMyRegistrations(PageQuery pageQuery, String registrationType, String name) {
         Long userId = LoginHelper.getUserId();
         
-        Page<MyRegistrationVo> result = stglMyMapper.selectMyRegistrationsPage(pageQuery.build(), userId, registrationType);
+        Page<MyRegistrationVo> result = stglMyMapper.selectMyRegistrationsPage(pageQuery.build(), userId, registrationType, name);
         return TableDataInfo.build(result);
     }
 

+ 42 - 14
backend/ruoyi-modules/ruoyi-stgl/src/main/resources/mapper/StglMyMapper.xml

@@ -267,8 +267,8 @@
                 NULL as approval_time,
                 NULL as approval_by,
                 m.remark,
-                CASE WHEN m.status = '1' THEN '正常' ELSE '待审核' END as current_status,
-                (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_role' AND dict_value = CAST(m.role_type AS CHAR) AND tenant_id = '000000') as role,
+                (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_status' AND dict_value = CAST(m.status AS CHAR) AND tenant_id = '000000') as current_status,
+                m.role_type as role,
                 c.president_name as organizer,
                 c.establish_date as time_info,
                 '' as location,
@@ -279,6 +279,9 @@
             FROM stgl_member m
             INNER JOIN stgl_club c ON m.relation_id = c.id AND m.member_type = 1 AND m.tenant_id = '000000' AND c.tenant_id = '000000'
             WHERE m.user_id = #{userId} AND m.deleted = 0 AND c.deleted = 0
+            <if test="name != null and name != ''">
+                AND c.club_name LIKE CONCAT('%', #{name}, '%')
+            </if>
         )
         UNION ALL
         (
@@ -293,7 +296,7 @@
                 NULL as approval_time,
                 NULL as approval_by,
                 m.remark,
-                CASE WHEN m.status = '1' THEN '正常' ELSE '待审核' END as current_status,
+                (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_status' AND dict_value = CAST(m.status AS CHAR) AND tenant_id = '000000') as current_status,
                 (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_volunteer_role' AND dict_value = CAST(m.role_type AS CHAR) AND tenant_id = '000000') as role,
                 vt.leader_name as organizer,
                 vt.establish_date as time_info,
@@ -305,6 +308,9 @@
             FROM stgl_member m
             INNER JOIN stgl_volunteer_team vt ON m.relation_id = vt.id AND m.member_type = 2 AND m.tenant_id = '000000' AND vt.tenant_id = '000000'
             WHERE m.user_id = #{userId} AND m.deleted = 0 AND vt.deleted = 0
+            <if test="name != null and name != ''">
+                AND vt.team_name LIKE CONCAT('%', #{name}, '%')
+            </if>
         )
         UNION ALL
         (
@@ -319,7 +325,7 @@
                 ar.approval_time,
                 ar.approval_by,
                 ar.remark,
-                CASE WHEN ar.approval_status = '1' THEN '已报名' ELSE '待审核' END as current_status,
+                (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_approval_status' AND dict_value = CAST(ar.approval_status AS CHAR) AND tenant_id = '000000') as current_status,
                 '参与者' as role,
                 a.organizer_name as organizer,
                 a.start_time as time_info,
@@ -331,10 +337,18 @@
             FROM stgl_activity_registration ar
             INNER JOIN stgl_activity a ON ar.activity_id = a.id AND ar.tenant_id = '000000' AND a.tenant_id = '000000'
             WHERE ar.user_id = #{userId} AND ar.deleted = 0 AND a.deleted = 0
+            <if test="name != null and name != ''">
+                AND a.activity_name LIKE CONCAT('%', #{name}, '%')
+            </if>
         )
-        <if test="registrationType != null and registrationType != ''">
-            WHERE registration_type = #{registrationType}
-        </if>
+        <where>
+            <if test="registrationType != null and registrationType != ''">
+                AND registration_type = #{registrationType}
+            </if>
+            <if test="name != null and name != ''">
+                AND target_name LIKE CONCAT('%', #{name}, '%')
+            </if>
+        </where>
         ORDER BY registration_time DESC
     </select>
 
@@ -379,8 +393,8 @@
                     NULL as approval_time,
                     NULL as approval_by,
                     m.remark,
-                    CASE WHEN m.status = '1' THEN '正常' ELSE '待审核' END as current_status,
-                    (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_role' AND dict_value = CAST(m.role_type AS CHAR) AND tenant_id = '000000') as role,
+                    (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_status' AND dict_value = CAST(m.status AS CHAR) AND tenant_id = '000000') as current_status,
+                    m.role_type as role,
                     c.president_name as organizer,
                     c.establish_date as time_info,
                     '' as location,
@@ -391,6 +405,9 @@
                 FROM stgl_member m
                 INNER JOIN stgl_club c ON m.relation_id = c.id AND m.member_type = 1 AND m.tenant_id = '000000' AND c.tenant_id = '000000'
                 WHERE m.user_id = #{userId} AND m.deleted = 0 AND c.deleted = 0
+                <if test="name != null and name != ''">
+                    AND c.club_name LIKE CONCAT('%', #{name}, '%')
+                </if>
             )
             UNION ALL
             (
@@ -405,7 +422,7 @@
                     NULL as approval_time,
                     NULL as approval_by,
                     m.remark,
-                    CASE WHEN m.status = '1' THEN '正常' ELSE '待审核' END as current_status,
+                    (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_member_status' AND dict_value = CAST(m.status AS CHAR) AND tenant_id = '000000') as current_status,
                     (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_volunteer_role' AND dict_value = CAST(m.role_type AS CHAR) AND tenant_id = '000000') as role,
                     vt.leader_name as organizer,
                     vt.establish_date as time_info,
@@ -417,6 +434,9 @@
                 FROM stgl_member m
                 INNER JOIN stgl_volunteer_team vt ON m.relation_id = vt.id AND m.member_type = 2 AND m.tenant_id = '000000' AND vt.tenant_id = '000000'
                 WHERE m.user_id = #{userId} AND m.deleted = 0 AND vt.deleted = 0
+                <if test="name != null and name != ''">
+                    AND vt.team_name LIKE CONCAT('%', #{name}, '%')
+                </if>
             )
             UNION ALL
             (
@@ -431,7 +451,7 @@
                     ar.approval_time,
                     ar.approval_by,
                     ar.remark,
-                    CASE WHEN ar.approval_status = '1' THEN '已报名' ELSE '待审核' END as current_status,
+                    (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'stgl_approval_status' AND dict_value = CAST(ar.approval_status AS CHAR) AND tenant_id = '000000') as current_status,
                     '参与者' as role,
                     a.organizer_name as organizer,
                     a.start_time as time_info,
@@ -443,11 +463,19 @@
                 FROM stgl_activity_registration ar
                 INNER JOIN stgl_activity a ON ar.activity_id = a.id AND ar.tenant_id = '000000' AND a.tenant_id = '000000'
                 WHERE ar.user_id = #{userId} AND ar.deleted = 0 AND a.deleted = 0
+                <if test="name != null and name != ''">
+                    AND a.activity_name LIKE CONCAT('%', #{name}, '%')
+                </if>
             )
         ) all_registrations
-        <if test="registrationType != null and registrationType != ''">
-            WHERE registration_type = #{registrationType}
-        </if>
+        <where>
+            <if test="registrationType != null and registrationType != ''">
+                AND registration_type = #{registrationType}
+            </if>
+            <if test="name != null and name != ''">
+                AND target_name LIKE CONCAT('%', #{name}, '%')
+            </if>
+        </where>
         ORDER BY registration_time DESC
     </select>
 

+ 2 - 2
web/src/api/stgl/my/types.ts

@@ -211,8 +211,8 @@ export interface MyRegistrationQuery {
   pageNum?: number;
   /** 每页显示记录数 */
   pageSize?: number;
+  /** 名称 */
+  name?: string;
   /** 报名类型 */
   registrationType?: string;
-  /** 审核状态 */
-  approvalStatus?: string;
 }

+ 308 - 315
web/src/views/stgl/activity/components/ActivityDetailView.vue

@@ -3,186 +3,69 @@
     <el-tabs type="border-card" v-model="activeTab">
       <!-- 基本信息标签页 -->
       <el-tab-pane label="基本信息" name="basic">
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">活动名称</label>
-              <div class="detail-value">{{ activity.activityName || '暂无' }}</div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">活动类型</label>
-              <div class="detail-value">
-                <dict-tag :options="stgl_activity_type" :value="activity.activityType" />
-              </div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">活动主题</label>
-              <div class="detail-value">{{ activity.activityTheme || '暂无' }}</div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">活动地点</label>
-              <div class="detail-value">{{ activity.location || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">开始时间</label>
-              <div class="detail-value">{{ activity.startTime || '暂无' }}</div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">结束时间</label>
-              <div class="detail-value">{{ activity.endTime || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">活动状态</label>
-              <div class="detail-value">
-                <dict-tag :options="stgl_activity_status" :value="activity.activityStatus" />
-              </div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">关联社团/队伍</label>
-              <div class="detail-value">{{ activity.relatedClubName || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <div class="detail-item">
-          <label class="detail-label">活动海报</label>
-          <div class="detail-value">
-            <div v-if="activity.posterUrl" class="view-poster">
-              <image-preview :src="activity.posterUrl" :width="200" :height="150" />
-            </div>
-            <div v-else class="no-poster">
-              <span class="no-poster-text">暂无海报</span>
-            </div>
-          </div>
+        <!-- 基本信息区域 -->
+        <el-divider content-position="left">基本信息</el-divider>
+        <el-descriptions :column="2" border class="basic-info-section custom-width-registration">
+          <el-descriptions-item label="活动名称">{{ activity.activityName || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="活动类型">
+            <dict-tag :options="stgl_activity_type" :value="activity.activityType" />
+          </el-descriptions-item>
+          <el-descriptions-item label="活动主题">{{ activity.activityTheme || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="活动地点">{{ activity.location || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="开始时间">{{ activity.startTime || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="结束时间">{{ activity.endTime || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="活动状态">
+            <dict-tag :options="stgl_activity_status" :value="activity.activityStatus" />
+          </el-descriptions-item>
+          <el-descriptions-item label="关联社团/队伍">{{ activity.relatedClubName || '暂无' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <!-- 活动海报区域 -->
+        <el-divider content-position="left">活动海报</el-divider>
+        <div v-if="activity.posterUrl" class="view-poster">
+          <image-preview :src="activity.posterUrl" :width="200" :height="150" />
         </div>
-
-        <div class="detail-item">
-          <label class="detail-label">活动简介</label>
-          <div class="detail-value">
-            <div class="view-description">
-              {{ activity.description || '暂无简介' }}
-            </div>
-          </div>
+        <div v-else class="no-poster">
+          <span class="no-poster-text">暂无海报</span>
         </div>
 
-        <!-- 主办方信息 -->
-        <div class="section-divider">
-          <h4 class="section-title">主办方信息</h4>
+        <!-- 活动简介区域 -->
+        <el-divider content-position="left">活动简介</el-divider>
+        <div class="view-description">
+          {{ activity.description || '暂无简介' }}
         </div>
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">主办方名称</label>
-              <div class="detail-value">{{ activity.organizerName || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">联系人</label>
-              <div class="detail-value">{{ activity.organizerContact || '暂无' }}</div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">联系电话</label>
-              <div class="detail-value">{{ activity.organizerPhone || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
 
-        <!-- 承办方信息 -->
-        <div class="section-divider">
-          <h4 class="section-title">承办方信息</h4>
-        </div>
+        <!-- 主办方信息区域 -->
+        <el-divider content-position="left">主办方信息</el-divider>
+        <el-descriptions :column="3" border class="organizer-info-section custom-width-organizer">
+          <el-descriptions-item label="主办方名称" :label-style="{ width: '13%' }" :content-style="{ width: '35%' }">{{ activity.organizerName || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="联系人" :label-style="{ width: '10%' }" :content-style="{ width: '15%' }">{{ activity.organizerContact || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="联系电话" :label-style="{ width: '10%' }" :content-style="{ width: '17%' }">{{ activity.organizerPhone || '暂无' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <!-- 承办方信息区域 -->
+        <el-divider content-position="left">承办方信息</el-divider>
         <div v-if="coOrganizerList.length > 0">
-          <div v-for="(organizer, index) in coOrganizerList" :key="index" class="co-organizer-item">
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">承办方名称</label>
-                  <div class="detail-value">{{ organizer.name || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">承办方类型</label>
-                  <div class="detail-value">{{ organizer.type || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">联系人</label>
-                  <div class="detail-value">{{ organizer.contact || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">联系电话</label>
-                  <div class="detail-value">{{ organizer.phone || '暂无' }}</div>
-                </div>
-              </el-col>
-            </el-row>
+          <div v-for="(organizer, index) in coOrganizerList" :key="index" class="co-organizer-item custom-width-co-organizer">
+            <el-descriptions :column="3" border>
+              <el-descriptions-item label="承办方名称" :label-style="{ width: '12%' }" :content-style="{ width: '36%' }">{{ organizer.name || '暂无' }}</el-descriptions-item>
+              <el-descriptions-item label="联系人" :label-style="{ width: '10%' }" :content-style="{ width: '16%' }">{{ organizer.contact || '暂无' }}</el-descriptions-item>
+              <el-descriptions-item label="联系电话" :label-style="{ width: '10%' }" :content-style="{ width: '16%' }">{{ organizer.phone || '暂无' }}</el-descriptions-item>
+            </el-descriptions>
           </div>
         </div>
         <div v-else class="no-data">暂无承办方信息</div>
 
-        <!-- 指导老师信息 -->
-        <div class="section-divider">
-          <h4 class="section-title">指导老师信息</h4>
-        </div>
+        <!-- 指导老师信息区域 -->
+        <el-divider content-position="left">指导老师信息</el-divider>
         <div v-if="instructorList.length > 0">
-          <div v-for="(instructor, index) in instructorList" :key="index" class="instructor-item">
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">姓名</label>
-                  <div class="detail-value">{{ instructor.name || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">部门</label>
-                  <div class="detail-value">{{ instructor.dept || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">电话</label>
-                  <div class="detail-value">{{ instructor.phone || '暂无' }}</div>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="detail-item">
-                  <label class="detail-label">邮箱</label>
-                  <div class="detail-value">{{ instructor.email || '暂无' }}</div>
-                </div>
-              </el-col>
-            </el-row>
+          <div v-for="(instructor, index) in instructorList" :key="index" class="instructor-item custom-width-instructor">
+            <el-descriptions :column="4" border size="small">
+              <el-descriptions-item label="姓名" :label-style="{ width: '8%' }" :content-style="{ width: '15%' }">{{ instructor.name || '暂无' }}</el-descriptions-item>
+              <el-descriptions-item label="部门" :label-style="{ width: '8%' }" :content-style="{ width: '17%' }">{{ instructor.dept || '暂无' }}</el-descriptions-item>
+              <el-descriptions-item label="电话" :label-style="{ width: '8%' }" :content-style="{ width: '15%' }">{{ instructor.phone || '暂无' }}</el-descriptions-item>
+              <el-descriptions-item label="邮箱" :label-style="{ width: '8%' }" :content-style="{ width: '17%' }">{{ instructor.email || '暂无' }}</el-descriptions-item>
+            </el-descriptions>
           </div>
         </div>
         <div v-else class="no-data">暂无指导老师信息</div>
@@ -190,100 +73,46 @@
 
       <!-- 报名设置标签页 -->
       <el-tab-pane label="报名设置" name="registration">
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名方式</label>
-              <div class="detail-value">
-                <dict-tag :options="stgl_registration_type" :value="activity.registrationType" />
-              </div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">是否需要审核</label>
-              <div class="detail-value">
-                <!-- 临时解决方案:直接显示中文文本 -->
-                <el-tag v-if="activity.needApproval === 1" type="warning" size="small">需要审核</el-tag>
-                <el-tag v-else-if="activity.needApproval === 0" type="success" size="small">无需审核</el-tag>
-                <span v-else class="text-gray-400">{{ activity.needApproval }}</span>
-              </div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名范围</label>
-              <div class="detail-value">
-                <dict-tag :options="stgl_activity_range" :value="activity.activityRange" />
-              </div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名开始时间</label>
-              <div class="detail-value">{{ activity.registrationStart || '暂无' }}</div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名结束时间</label>
-              <div class="detail-value">{{ activity.registrationEnd || '暂无' }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20" v-if="activity.maxParticipants">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">总人数上限</label>
-              <div class="detail-value">{{ activity.maxParticipants }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20" v-if="activity.maxTeams || activity.teamSizeMin || activity.teamSizeMax">
-          <el-col :span="8" v-if="activity.maxTeams">
-            <div class="detail-item">
-              <label class="detail-label">团队数量上限</label>
-              <div class="detail-value">{{ activity.maxTeams }}</div>
-            </div>
-          </el-col>
-          <el-col :span="8" v-if="activity.teamSizeMin">
-            <div class="detail-item">
-              <label class="detail-label">每队最小人数</label>
-              <div class="detail-value">{{ activity.teamSizeMin }}</div>
-            </div>
-          </el-col>
-          <el-col :span="8" v-if="activity.teamSizeMax">
-            <div class="detail-item">
-              <label class="detail-label">每队最大人数</label>
-              <div class="detail-value">{{ activity.teamSizeMax }}</div>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名状态</label>
-              <div class="detail-value">
-                <dict-tag :options="stgl_registration_status" :value="activity.registrationStatus" />
-              </div>
-            </div>
-          </el-col>
-          <el-col :span="12">
-            <div class="detail-item">
-              <label class="detail-label">报名人数</label>
-              <div class="detail-value">{{ activity.registrationCount || 0 }}</div>
-            </div>
-          </el-col>
-        </el-row>
+        <!-- 报名方式和审核设置区域 -->
+        <el-divider content-position="left">报名方式和审核设置</el-divider>
+        <el-descriptions :column="2" border class="registration-info-section custom-width-registration">
+          <el-descriptions-item label="报名方式" :label-style="{ width: '10%' }" :content-style="{ width: '40%' }">
+            <dict-tag :options="stgl_registration_type" :value="activity.registrationType" />
+          </el-descriptions-item>
+          <el-descriptions-item label="是否需要审核" :label-style="{ width: '10%' }" :content-style="{ width: '40%' }">
+            <!-- 临时解决方案:直接显示中文文本 -->
+            <el-tag v-if="activity.needApproval === 1" type="warning" size="small">需要审核</el-tag>
+            <el-tag v-else-if="activity.needApproval === 0" type="success" size="small">无需审核</el-tag>
+            <span v-else class="text-gray-400">{{ activity.needApproval }}</span>
+          </el-descriptions-item>
+          <el-descriptions-item label="报名范围" :label-style="{ width: '10%' }" :content-style="{ width: '40%' }">
+            <dict-tag :options="stgl_activity_range" :value="activity.activityRange" />
+          </el-descriptions-item>
+          <el-descriptions-item label="报名状态" :label-style="{ width: '10%' }" :content-style="{ width: '40%' }">
+            <dict-tag :options="stgl_registration_status" :value="activity.registrationStatus" />
+          </el-descriptions-item>
+        </el-descriptions>
+
+        <!-- 报名时间区域 -->
+        <el-divider content-position="left">报名时间</el-divider>
+        <el-descriptions :column="2" border class="registration-time-section custom-width-registration">
+          <el-descriptions-item label="报名开始时间">{{ activity.registrationStart || '暂无' }}</el-descriptions-item>
+          <el-descriptions-item label="报名结束时间">{{ activity.registrationEnd || '暂无' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <!-- 人数限制区域 -->
+        <el-divider content-position="left">人数限制</el-divider>
+        <el-descriptions :column="2" border class="registration-limit-section custom-width-registration">
+          <el-descriptions-item label="总人数上限" v-if="activity.maxParticipants">{{ activity.maxParticipants }}</el-descriptions-item>
+          <el-descriptions-item label="团队数量上限" v-if="activity.maxTeams">{{ activity.maxTeams }}</el-descriptions-item>
+          <el-descriptions-item label="每队最小人数" v-if="activity.teamSizeMin">{{ activity.teamSizeMin }}</el-descriptions-item>
+          <el-descriptions-item label="每队最大人数" v-if="activity.teamSizeMax">{{ activity.teamSizeMax }}</el-descriptions-item>
+        </el-descriptions>
+
+        <!-- 如果没有任何限制信息,显示提示 -->
+        <div v-if="!activity.maxParticipants && !activity.maxTeams && !activity.teamSizeMin && !activity.teamSizeMax" class="no-limit-data">
+          暂无人数限制设置
+        </div>
       </el-tab-pane>
 
       <!-- 报名查看标签页 -->
@@ -506,36 +335,149 @@ onMounted(() => {
   padding: 16px;
 }
 
-/* 详情项样式 */
-.detail-item {
+/* el-descriptions组件相关样式 */
+.basic-info-section,
+.organizer-info-section,
+.registration-info-section,
+.registration-time-section,
+.registration-limit-section {
   margin-bottom: 20px;
 }
 
-.detail-label {
-  display: inline-block;
-  width: 120px;
-  color: #606266;
-  font-weight: 500;
-  font-size: 14px;
-  margin-bottom: 8px;
-  text-align: right;
-  padding-right: 12px;
+/* 自定义宽度的报名信息表格 */
+.custom-width-registration :deep(.el-descriptions__table) {
+  table-layout: fixed !important;
+  width: 100% !important;
+}
+
+.custom-width-registration :deep(.el-descriptions__cell) {
   vertical-align: top;
 }
 
-.detail-value {
-  display: inline-block;
+/* 强制设置标签和内容的宽度 */
+.custom-width-registration :deep(.el-descriptions__label) {
+  width: 20% !important;
+  min-width: 20% !important;
+}
+
+.custom-width-registration :deep(.el-descriptions__content) {
+  width: 30% !important;
+  min-width: 30% !important;
+}
+
+/* 自定义宽度的主办方信息表格 */
+.custom-width-organizer :deep(.el-descriptions__table) {
+  table-layout: fixed !important;
+  width: 100% !important;
+}
+
+.custom-width-organizer :deep(.el-descriptions__cell) {
   vertical-align: top;
-  width: calc(100% - 120px);
-  color: #303133;
-  font-size: 14px;
-  line-height: 1.5;
 }
 
+/* 强制设置主办方信息标签和内容的宽度 */
+.custom-width-organizer :deep(.el-descriptions__label) {
+  box-sizing: border-box !important;
+  word-wrap: break-word !important;
+}
+
+.custom-width-organizer :deep(.el-descriptions__content) {
+  box-sizing: border-box !important;
+  word-wrap: break-word !important;
+}
+
+/* 主办方信息区域 - 具体宽度控制 */
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(1)) {
+  width: 13% !important;
+}
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(2)) {
+  width: 35% !important;
+}
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(3)) {
+  width: 10% !important;
+}
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(4)) {
+  width: 15% !important;
+}
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(5)) {
+  width: 10% !important;
+}
+.custom-width-organizer :deep(.el-descriptions__table tr td:nth-child(6)) {
+  width: 17% !important;
+}
+
+/* 承办方信息区域 - 具体宽度控制 */
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(1)) {
+  width: 12% !important;
+}
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(2)) {
+  width: 36% !important;
+}
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(3)) {
+  width: 10% !important;
+}
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(4)) {
+  width: 16% !important;
+}
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(5)) {
+  width: 10% !important;
+}
+.custom-width-co-organizer :deep(.el-descriptions__table tr td:nth-child(6)) {
+  width: 16% !important;
+}
+
+/* 自定义宽度的指导老师信息表格 */
+.custom-width-instructor :deep(.el-descriptions__table) {
+  table-layout: fixed !important;
+  width: 100% !important;
+}
+
+.custom-width-instructor :deep(.el-descriptions__cell) {
+  vertical-align: top;
+}
+
+/* 强制设置指导老师信息标签和内容的宽度 */
+.custom-width-instructor :deep(.el-descriptions__label) {
+  box-sizing: border-box !important;
+  word-wrap: break-word !important;
+}
+
+.custom-width-instructor :deep(.el-descriptions__content) {
+  box-sizing: border-box !important;
+  word-wrap: break-word !important;
+}
+
+/* 指导老师信息区域 - 具体宽度控制 (8+15+8+17+8+15+8+17) */
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(1)) {
+  width: 8% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(2)) {
+  width: 15% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(3)) {
+  width: 8% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(4)) {
+  width: 17% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(5)) {
+  width: 8% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(6)) {
+  width: 15% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(7)) {
+  width: 8% !important;
+}
+.custom-width-instructor :deep(.el-descriptions__table tr td:nth-child(8)) {
+  width: 17% !important;
+}
+
+/* 海报显示区域样式 */
 .view-poster {
   display: flex;
   align-items: center;
-  justify-content: flex-start;
+  justify-content: center;
   padding: 20px 0;
 }
 
@@ -548,6 +490,7 @@ onMounted(() => {
   border: 1px dashed #dcdfe6;
   border-radius: 4px;
   background-color: #fafafa;
+  margin: 20px auto;
 }
 
 .no-poster-text {
@@ -556,6 +499,7 @@ onMounted(() => {
   text-align: center;
 }
 
+/* 描述文本区域样式 */
 .view-description {
   padding: 12px;
   border: 1px solid #e4e7ed;
@@ -567,26 +511,12 @@ onMounted(() => {
   white-space: pre-wrap;
   word-break: break-word;
   background-color: #fafafa;
+  margin-bottom: 20px;
 }
 
-/* 章节分隔样式 */
-.section-divider {
-  margin: 24px 0 16px 0;
-  padding-top: 16px;
-  border-top: 1px solid #e4e7ed;
-}
-
-.section-title {
-  margin: 0 0 16px 0;
-  color: #303133;
-  font-size: 16px;
-  font-weight: 600;
-  border-bottom: 2px solid #409eff;
-  padding-bottom: 8px;
-}
-
-/* 承办方项目样式 */
-.co-organizer-item {
+/* 承办方和指导老师项目样式 */
+.co-organizer-item,
+.instructor-item {
   margin-bottom: 16px;
   padding: 16px;
   background: #f8f9fa;
@@ -594,24 +524,14 @@ onMounted(() => {
   border: 1px solid #e9ecef;
 }
 
-.co-organizer-item:last-child {
-  margin-bottom: 0;
-}
-
-/* 指导老师项目样式 */
-.instructor-item {
-  margin-bottom: 16px;
-  padding: 16px;
-  background: #fafafa;
-  border-radius: 6px;
-  border: 1px solid #ebeef5;
-}
-
+.co-organizer-item:last-child,
 .instructor-item:last-child {
   margin-bottom: 0;
 }
 
-.no-data {
+/* 无数据提示样式 */
+.no-data,
+.no-limit-data {
   color: #909399;
   font-size: 13px;
   font-style: italic;
@@ -620,10 +540,9 @@ onMounted(() => {
   background: #f8f9fa;
   border-radius: 4px;
   border: 1px solid #e9ecef;
+  margin-bottom: 20px;
 }
 
-
-
 /* 附件显示区域样式 */
 .attachment-list {
   display: flex;
@@ -647,4 +566,78 @@ onMounted(() => {
 .attachment-icon {
   font-size: 14px;
 }
+
+/* el-divider样式优化 */
+:deep(.el-divider--horizontal) {
+  margin: 24px 0 16px 0;
+}
+
+:deep(.el-divider__text) {
+  background-color: #fff;
+  color: #303133;
+  font-size: 16px;
+  font-weight: 600;
+  padding: 0 20px;
+}
+
+/* el-descriptions样式优化 */
+:deep(.el-descriptions) {
+  .el-descriptions__header {
+    margin-bottom: 20px;
+  }
+  
+  .el-descriptions__title {
+    font-size: 16px;
+    font-weight: 600;
+    color: #303133;
+  }
+  
+  .el-descriptions__body {
+    .el-descriptions__table {
+      .el-descriptions__cell {
+        padding: 12px 16px;
+      }
+      
+      .el-descriptions__label {
+        font-weight: 500;
+        color: #606266;
+        background-color: #fafafa;
+      }
+      
+      .el-descriptions__content {
+        color: #303133;
+      }
+    }
+  }
+}
+
+/* 标签样式优化 */
+:deep(.el-tag) {
+  border-radius: 4px;
+  font-size: 12px;
+  height: 24px;
+  line-height: 22px;
+}
+
+/* 响应式布局优化 */
+@media (max-width: 768px) {
+  .activity-detail-view {
+    padding: 12px;
+  }
+  
+  :deep(.el-descriptions) {
+    .el-descriptions__body {
+      .el-descriptions__table {
+        .el-descriptions__cell {
+          padding: 8px 12px;
+        }
+      }
+    }
+  }
+  
+  .co-organizer-item,
+  .instructor-item {
+    padding: 12px;
+  }
+}
 </style>

+ 3 - 2
web/src/views/stgl/club/info/components/JoinedMembersTab.vue

@@ -479,10 +479,11 @@ const getList = async () => {
 
     console.log('JoinedMembersTab: getList 开始查询,参数:', queryData);
 
-    // 如果状态字段为空或未选择,则查询已加入(status=2)和已退出(status=3)的成员
+    // 已加入页面:查询已加入(status=2)和已退出(status=4)的成员
+    // 字典配置:0-待审核,1-审核中,2-已加入,3-已驳回,4-已退出
     if (!queryData.status) {
       // 使用params传递多状态查询
-      queryData.params = { ...queryData.params, statusList: ['2', '3'] } as any;
+      queryData.params = { ...queryData.params, statusList: ['2', '4'] } as any;
       delete queryData.status; // 删除单个status字段
     }
 

+ 3 - 2
web/src/views/stgl/club/info/components/PendingMembersTab.vue

@@ -283,10 +283,11 @@ const getList = async () => {
     
     console.log('PendingMembersTab: getList 开始查询,参数:', queryData);
     
-    // 如果状态字段为空或未选择,则查询待审核(status=0)和已驳回(status=4)的成员
+    // 待审核页面:查询待审核(status=0)和已驳回(status=3)的成员
+    // 字典配置:0-待审核,1-审核中,2-已加入,3-已驳回,4-已退出
     if (!queryData.status) {
       // 使用params传递多状态查询
-      queryData.params = { ...queryData.params, statusList: ['0', '4'] } as any;
+      queryData.params = { ...queryData.params, statusList: ['0', '3'] } as any;
       delete queryData.status; // 删除单个status字段
     }
     

+ 4 - 4
web/src/views/stgl/my/club/index.vue

@@ -63,7 +63,7 @@
         </el-table-column>
         <el-table-column label="我的角色" align="center" prop="myRole" width="100">
           <template #default="scope">
-            <dict-tag :options="stgl_member_role" :value="scope.row.myRole" />
+            <span class="role-text">{{ scope.row.myRole || '暂无' }}</span>
           </template>
         </el-table-column>
         <el-table-column label="社长姓名" align="center" prop="presidentName" width="100" show-overflow-tooltip />
@@ -124,7 +124,7 @@
               <dict-tag :options="sys_normal_disable" :value="detailForm.status" />
             </el-descriptions-item>
             <el-descriptions-item label="我的角色">
-              <dict-tag :options="stgl_member_role" :value="detailForm.myRole" />
+              <span class="role-text">{{ detailForm.myRole || '暂无' }}</span>
             </el-descriptions-item>
             <el-descriptions-item label="加入时间">{{ parseTime(detailForm.joinTime, '{y}-{m}-{d} {h}:{i}') }}</el-descriptions-item>
             <el-descriptions-item label="成员状态">
@@ -166,8 +166,8 @@ import type { MyClubVO, MyClubQuery } from '@/api/stgl/my/types';
 import { UserFilled } from '@element-plus/icons-vue';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { stgl_club_type, sys_normal_disable, stgl_member_role, stgl_member_status } = toRefs<any>(
-  proxy?.useDict('stgl_club_type', 'sys_normal_disable', 'stgl_member_role', 'stgl_member_status')
+const { stgl_club_type, sys_normal_disable, stgl_member_status } = toRefs<any>(
+  proxy?.useDict('stgl_club_type', 'sys_normal_disable', 'stgl_member_status')
 );
 
 const queryRef = ref();

+ 26 - 34
web/src/views/stgl/my/record/index.vue

@@ -16,15 +16,17 @@
                 </el-form-item>
               </el-col>
               <el-col :span="6">
-                <el-form-item label="审核状态" prop="approvalStatus">
-                  <el-select v-model="queryParams.approvalStatus" placeholder="请选择审核状态" clearable style="width: 100%">
-                    <el-option label="全部" value="" />
-                    <el-option label="待审核" value="待审核" />
-                    <el-option label="已通过" value="已通过" />
-                    <el-option label="已拒绝" value="已拒绝" />
-                  </el-select>
+                <el-form-item label="名称" prop="name">
+                  <el-input
+                    v-model="queryParams.name"
+                    placeholder="请输入名称"
+                    clearable
+                    style="width: 100%"
+                    @keyup.enter="handleQuery"
+                  />
                 </el-form-item>
               </el-col>
+
             </el-row>
 
             <el-row>
@@ -69,13 +71,7 @@
             <span>{{ parseTime(scope.row.registrationTime, '{y}-{m}-{d} {h}:{i}') }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="审核状态" align="center" prop="approvalStatus" width="100">
-          <template #default="scope">
-            <el-tag :type="getApprovalStatusTag(scope.row.approvalStatus)" size="small">
-              {{ scope.row.approvalStatus }}
-            </el-tag>
-          </template>
-        </el-table-column>
+
         <el-table-column label="当前状态" align="center" prop="currentStatus" width="100">
           <template #default="scope">
             <el-tag :type="getCurrentStatusTag(scope.row.currentStatus)" size="small">
@@ -83,7 +79,7 @@
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="时间信息" align="center" width="180">
+        <el-table-column label="创办时间" align="center" width="180">
           <template #default="scope">
             <span v-if="scope.row.timeInfo">
               {{ parseTime(scope.row.timeInfo, '{y}-{m}-{d} {h}:{i}') }}
@@ -129,11 +125,7 @@
         <el-descriptions-item label="我的角色">{{ detailForm.role || '暂无' }}</el-descriptions-item>
         <el-descriptions-item label="组织者">{{ detailForm.organizer || '暂无' }}</el-descriptions-item>
         <el-descriptions-item label="报名时间">{{ parseTime(detailForm.registrationTime, '{y}-{m}-{d} {h}:{i}') }}</el-descriptions-item>
-        <el-descriptions-item label="审核状态">
-          <el-tag :type="getApprovalStatusTag(detailForm.approvalStatus)" size="small">
-            {{ detailForm.approvalStatus }}
-          </el-tag>
-        </el-descriptions-item>
+
         <el-descriptions-item label="当前状态">
           <el-tag :type="getCurrentStatusTag(detailForm.currentStatus)" size="small">
             {{ detailForm.currentStatus }}
@@ -143,7 +135,7 @@
           {{ parseTime(detailForm.approvalTime, '{y}-{m}-{d} {h}:{i}') }}
         </el-descriptions-item>
         <el-descriptions-item label="审核人" v-if="detailForm.approvalBy">{{ detailForm.approvalBy }}</el-descriptions-item>
-        <el-descriptions-item label="时间信息" v-if="detailForm.timeInfo">
+        <el-descriptions-item label="创办时间" v-if="detailForm.timeInfo">
           {{ parseTime(detailForm.timeInfo, '{y}-{m}-{d} {h}:{i}') }}
         </el-descriptions-item>
         <el-descriptions-item label="地点" v-if="detailForm.location">{{ detailForm.location }}</el-descriptions-item>
@@ -178,8 +170,8 @@ const queryFormRef = ref<ElFormInstance>();
 const queryParams = ref<MyRegistrationQuery>({
   pageNum: 1,
   pageSize: 10,
-  registrationType: '',
-  approvalStatus: ''
+  name: '',
+  registrationType: ''
 });
 
 /** 查询我的报名记录列表 */
@@ -236,22 +228,22 @@ const getRegistrationTypeTag = (type: string) => {
   return tagMap[type as keyof typeof tagMap] || ('info' as const);
 };
 
-/** 获取审核状态标签样式 */
-const getApprovalStatusTag = (status: string) => {
-  const tagMap = {
-    '已通过': 'success' as const,
-    '已拒绝': 'danger' as const,
-    '待审核': 'warning' as const
-  };
-  return tagMap[status as keyof typeof tagMap] || ('info' as const);
-};
+
 
 /** 获取当前状态标签样式 */
 const getCurrentStatusTag = (status: string) => {
   const tagMap = {
+    // 成员状态
+    '待审核': 'warning' as const,
+    '审核中': 'info' as const,
+    '已加入': 'success' as const,
+    '已驳回': 'danger' as const,
+    '已退出': 'danger' as const,
+    // 活动审核状态
+    '已通过': 'success' as const,
+    // 兼容旧状态
     '正常': 'success' as const,
-    '已报名': 'primary' as const,
-    '待审核': 'warning' as const
+    '已报名': 'primary' as const
   };
   return tagMap[status as keyof typeof tagMap] || ('info' as const);
 };

+ 3 - 3
web/src/views/stgl/my/volunteer/index.vue

@@ -107,7 +107,7 @@
               <dict-tag :options="stgl_volunteer_role" :value="detailForm.myRole" />
             </el-descriptions-item>
             <el-descriptions-item label="成员状态">
-              <dict-tag :options="stgl_volunteer_status" :value="detailForm.memberStatus" />
+              <dict-tag :options="stgl_member_status" :value="detailForm.memberStatus" />
             </el-descriptions-item>
             <el-descriptions-item label="加入时间">{{ parseTime(detailForm.joinTime, '{y}-{m}-{d} {h}:{i}') }}</el-descriptions-item>
             <el-descriptions-item label="联系电话">{{ detailForm.contactPhone || '暂无' }}</el-descriptions-item>
@@ -143,8 +143,8 @@ import type { MyVolunteerTeamVO, MyVolunteerQuery } from '@/api/stgl/my/types';
 import { User } from '@element-plus/icons-vue';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { sys_normal_disable, stgl_volunteer_role, stgl_volunteer_status } = toRefs<any>(
-  proxy?.useDict('sys_normal_disable', 'stgl_volunteer_role', 'stgl_volunteer_status')
+const { sys_normal_disable, stgl_volunteer_role, stgl_member_status } = toRefs<any>(
+  proxy?.useDict('sys_normal_disable', 'stgl_volunteer_role', 'stgl_member_status')
 );
 
 const teamList = ref<MyVolunteerTeamVO[]>([]);

+ 7 - 0
web/src/views/stgl/volunteer/registration/index.vue

@@ -48,6 +48,7 @@
             </span>
           </template>
         </el-tab-pane>
+        <!-- 
         <el-tab-pane label="我的申请" name="my">
           <template #label>
             <span class="tab-label">
@@ -56,6 +57,7 @@
             </span>
           </template>
         </el-tab-pane>
+        -->
       </el-tabs>
 
       <!-- 工具栏 -->
@@ -520,6 +522,8 @@ function resetQuery() {
 function handleTabChange(tabName: string) {
   activeTab.value = tabName;
   queryParams.value.pageNum = 1;
+  // 注释掉"我的申请"页签相关逻辑
+  /*
   if (tabName === 'my') {
     // 切换到"我的申请"页签时,直接打开申请列表对话框
     handleMyApplications();
@@ -531,6 +535,9 @@ function handleTabChange(tabName: string) {
     // 切换到"志愿者大厅"页签时,刷新队伍列表
     getList();
   }
+  */
+  // 简化逻辑,只刷新队伍列表
+  getList();
 }
 
 /** 查看详情 */