diff --git a/src/api/admin/applications.ts b/src/api/admin/applications.ts index ebca323..36f856e 100644 --- a/src/api/admin/applications.ts +++ b/src/api/admin/applications.ts @@ -47,6 +47,18 @@ export async function getAdminApplication( return data as AdminApplicationDetail } +export async function updateAdminApplicationReviewEligible( + competitionId: number, + applicationId: number, + reviewEligible: boolean, +): Promise<{ id: number; review_eligible: boolean }> { + const { data } = await adminHttp.patch<{ id: number; review_eligible: boolean }>( + `/competitions/${competitionId}/applications/${applicationId}/review-eligible`, + { review_eligible: reviewEligible }, + ) + return data +} + export async function impersonateAdminApplication( competitionId: number, applicationId: number, diff --git a/src/api/admin/types.ts b/src/api/admin/types.ts index 0d6d4be..7b790e1 100644 --- a/src/api/admin/types.ts +++ b/src/api/admin/types.ts @@ -147,6 +147,8 @@ export interface AdminApplicationListParams { signup_channel_id?: number public_source_channel_id?: number review_result?: 'passed' | 'rejected' | 'pending' | '' + /** true/false;不传则不过滤 */ + review_eligible?: boolean sort_by?: 'team_avg' | 'submitted_at' sort_dir?: 'asc' | 'desc' } @@ -195,6 +197,8 @@ export interface AdminApplicationRow { review_result: 'passed' | 'rejected' | null review_result_note: string | null review_result_at: string | null + /** 是否参与评审;否时不出现在评审端 */ + review_eligible: boolean degree?: string location_label?: string public_source_channel: { id: number; source_code: string; source_name: string } | null @@ -497,5 +501,11 @@ export interface ManageReportData { track: string items: Array<{ rank: number; name: string; avg: number }> }> - summary: { total: number; passed: number; rejected: number; pending_review: number } + summary: { + total: number + passed: number + rejected: number + pending_review: number + reviewed: number + } } diff --git a/src/components/portal/ApplicationSignupDetailFields.vue b/src/components/portal/ApplicationSignupDetailFields.vue index 4f3c61e..df30b77 100644 --- a/src/components/portal/ApplicationSignupDetailFields.vue +++ b/src/components/portal/ApplicationSignupDetailFields.vue @@ -21,9 +21,16 @@ export interface PortalApplicationDetailLike { submitted_at?: string | null } -defineProps<{ - detail: PortalApplicationDetailLike -}>() +withDefaults( + defineProps<{ + detail: PortalApplicationDetailLike + /** 评审端等场景可隐藏推荐方 */ + showRecommend?: boolean + }>(), + { + showRecommend: true, + }, +) + + + @@ -2171,6 +2219,17 @@ onMounted(() => { {{ applicationDetail.recommend || '—' }} + + + 否:不出现在评审端 +

项目简介

@@ -2209,11 +2268,6 @@ onMounted(() => { - - - diff --git a/src/views/manage/ManageDashboardView.vue b/src/views/manage/ManageDashboardView.vue index 375d030..3e52e46 100644 --- a/src/views/manage/ManageDashboardView.vue +++ b/src/views/manage/ManageDashboardView.vue @@ -40,7 +40,7 @@ onMounted(() => void load())