소스 검색

加赛事截止级别

wengan01 5 일 전
부모
커밋
1e3df62521
1개의 변경된 파일33개의 추가작업 그리고 5개의 파일을 삭제
  1. 33 5
      src/views/system/physical/tournaments/index.vue

+ 33 - 5
src/views/system/physical/tournaments/index.vue

@@ -52,11 +52,11 @@
       </template>
 
       <el-tabs v-model="activeTab" @tab-change="handleTabChange" style="margin-bottom: 10px">
-        <el-tab-pane label="全部" name="0" />
-        <el-tab-pane label="草稿" name="1" />
-        <el-tab-pane label="已发布" name="2" />
-        <el-tab-pane label="进行中" name="3" />
-        <el-tab-pane label="已结束" name="4" />
+        <el-tab-pane :label="`全部(${tabCounts.all})`" name="0" />
+        <el-tab-pane :label="`草稿(${tabCounts.draft})`" name="1" />
+        <el-tab-pane :label="`已发布(${tabCounts.published})`" name="2" />
+        <el-tab-pane :label="`进行中(${tabCounts.ongoing})`" name="3" />
+        <el-tab-pane :label="`已结束(${tabCounts.ended})`" name="4" />
       </el-tabs>
 
       <el-table v-loading="loading" border :data="tournamentsList">
@@ -533,6 +533,13 @@ const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
 const activeTab = ref('0');
+const tabCounts = reactive({
+  all: 0,
+  draft: 0,
+  published: 0,
+  ongoing: 0,
+  ended: 0
+});
 
 const queryFormRef = ref<ElFormInstance>();
 const tournamentsFormRef = ref<ElFormInstance>();
@@ -783,6 +790,26 @@ const dialogParams = ref({
 
 const { queryParams, form, rules } = toRefs(data);
 
+/** 获取各状态数量统计 */
+const getTabCounts = async () => {
+  try {
+    const [allRes, draftRes, publishedRes, ongoingRes, endedRes] = await Promise.all([
+      listTournaments({ ...queryParams.value, publishStatus: 0, pageNum: 1, pageSize: 1 }),
+      listTournaments({ ...queryParams.value, publishStatus: 1, pageNum: 1, pageSize: 1 }),
+      listTournaments({ ...queryParams.value, publishStatus: 2, pageNum: 1, pageSize: 1 }),
+      listTournaments({ ...queryParams.value, publishStatus: 3, pageNum: 1, pageSize: 1 }),
+      listTournaments({ ...queryParams.value, publishStatus: 4, pageNum: 1, pageSize: 1 })
+    ]);
+    tabCounts.all = allRes.total || 0;
+    tabCounts.draft = draftRes.total || 0;
+    tabCounts.published = publishedRes.total || 0;
+    tabCounts.ongoing = ongoingRes.total || 0;
+    tabCounts.ended = endedRes.total || 0;
+  } catch (error) {
+    console.error('获取tab数量失败:', error);
+  }
+};
+
 /** 查询线下赛事列表 */
 const getList = async () => {
   loading.value = true;
@@ -790,6 +817,7 @@ const getList = async () => {
   tournamentsList.value = res.rows;
   total.value = res.total;
   loading.value = false;
+  await getTabCounts();
 };
 
 /** 取消按钮 */