|
|
@@ -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();
|
|
|
};
|
|
|
|
|
|
/** 取消按钮 */
|