You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.0 KiB

4 weeks ago
export interface ApiCourse {
id: number
title: string
category?: string | null
course_system_dict_item_id?: number | null
course_system_item?: { id: number; label: string; value: string } | null
teach_start_date?: string | null
teach_end_date?: string | null
time_range?: string | null
location?: string | null
teacher?: string | null
university?: string | null
main_speakers?: Array<{ name?: string; university?: string; title?: string; remark?: string }>
recruit_targets?: string[]
signup_start_date?: string | null
signup_end_date?: string | null
capacity: number
signups_count: number
progress_status: number
progress_status_label: string
intro_html?: string | null
cover?: { url?: string | null } | null
promo?: { url?: string | null } | null
can_signup?: boolean
has_signed_up?: boolean
}
export interface ApiActivity {
id: number
title: string
activity_type_dict_item_id?: number | null
activity_type_item?: { id: number; label: string; value: string } | null
event_start_date?: string | null
event_end_date?: string | null
signup_start_date?: string | null
signup_end_date?: string | null
location?: string | null
intro_html?: string | null
summary?: string | null
progress_status: number
progress_status_label: string
display_status: string
signups_count?: number
has_signed_up?: boolean
can_signup?: boolean
sessions?: ApiActivitySession[]
session?: ApiActivitySession | null
}
export interface ApiActivitySession {
id: number
title?: string | null
date?: string | null
time?: string | null
venue?: string | null
capacity: number
signed: number
remaining?: number | null
is_full: boolean
}
export interface ApiNews {
id: number
title: string
tag?: string | null
category_dict_item_id?: number | null
summary?: string | null
date?: string | null
content?: string | null
content_html?: string | null
}
export interface ApiBanner {
id: number
type: string
title?: string | null
cover_url?: string | null
target_type: 'course' | 'activity' | 'custom'
target_id?: number | null
}
export interface ApiUser {
id: number
nickname?: string | null
avatar_url?: string | null
name?: string | null
mobile?: string | null
company?: string | null
is_partner: boolean
}
export interface ApiDictItem {
id: number
label: string
value: string
}
export interface ApiDemand {
id: number
type?: string | null
type_dict_item_id?: number
status?: string | null
title: string
description?: string | null
date?: string | null
}
export interface Paginated<T> {
items: T[]
meta: {
current_page: number
per_page: number
total: number
last_page: number
}
}
export interface CalendarResponse {
month: string
events: Array<{
id: number
title: string
start_date?: string | null
end_date?: string | null
time_range?: string | null
location?: string | null
progress_status: number
progress_status_label: string
}>
}