From 33863caeef516ce7453b19f69c596b19c459e73d Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Tue, 4 Aug 2026 16:51:50 +0800 Subject: [PATCH] pingshenduan --- src/api/admin/types.ts | 1 + src/utils/entryGroups.ts | 6 +++++ src/views/manage/ManageProjectsView.vue | 27 +++++++++++++++++++- src/views/reviewer/ReviewerProjectsView.vue | 28 ++++++++++++++++++++- 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/utils/entryGroups.ts diff --git a/src/api/admin/types.ts b/src/api/admin/types.ts index 047f43c..d46a672 100644 --- a/src/api/admin/types.ts +++ b/src/api/admin/types.ts @@ -136,6 +136,7 @@ export interface AdminApplicationListParams { per_page?: number status?: string track?: string + entry_group?: string keyword?: string signup_channel_id?: number public_source_channel_id?: number diff --git a/src/utils/entryGroups.ts b/src/utils/entryGroups.ts new file mode 100644 index 0000000..ec74f3b --- /dev/null +++ b/src/utils/entryGroups.ts @@ -0,0 +1,6 @@ +/** 与 config/contest.php entry_groups 对齐 */ +export const ENTRY_GROUPS = ['创新组', '创业组'] as const + +export type EntryGroup = (typeof ENTRY_GROUPS)[number] + +export const DEFAULT_ENTRY_GROUP: EntryGroup = '创新组' diff --git a/src/views/manage/ManageProjectsView.vue b/src/views/manage/ManageProjectsView.vue index 85779e5..821ec92 100644 --- a/src/views/manage/ManageProjectsView.vue +++ b/src/views/manage/ManageProjectsView.vue @@ -26,6 +26,7 @@ import { resolveListPageState, saveListPageState, } from '../../utils/listPageState' +import { DEFAULT_ENTRY_GROUP, ENTRY_GROUPS } from '../../utils/entryGroups' const route = useRoute() const router = useRouter() @@ -75,11 +76,14 @@ const publicSources = ref([]) const filters = reactive({ keyword: '', track: '', + entry_group: DEFAULT_ENTRY_GROUP as string, review_result: '' as '' | 'passed' | 'rejected' | 'pending', signup_channel_id: '' as number | '', public_source_channel_id: '' as number | '', }) +const entryGroupOptions = ENTRY_GROUPS + const sortDir = ref<'asc' | 'desc'>('desc') const selectionMode = ref<'audit' | 'export'>('audit') const auditSelectedIds = ref([]) @@ -105,6 +109,7 @@ function buildListParams(page: number): AdminApplicationListParams { const kw = filters.keyword.trim() if (kw) params.keyword = kw if (filters.track) params.track = filters.track + if (filters.entry_group) params.entry_group = filters.entry_group if (filters.review_result === 'passed' || filters.review_result === 'rejected' || filters.review_result === 'pending') { params.review_result = filters.review_result } @@ -264,6 +269,7 @@ async function refresh(page = pager.page) { function resetFilters() { filters.keyword = '' filters.track = '' + filters.entry_group = DEFAULT_ENTRY_GROUP filters.review_result = '' filters.signup_channel_id = '' filters.public_source_channel_id = '' @@ -353,7 +359,26 @@ watch(competitionId, async (cid) => {
-
+
+
+ 参赛组别 +
+ + +
+
-
+
+
+ 参赛组别 +
+ + +
+