Files
toutoukan_front/miniprogram/pages/activities/activities.ts
2025-09-28 01:01:21 +08:00

191 lines
4.9 KiB
TypeScript

// 定义活动数据类型
interface Activity {
id: number;
title: string;
description: string;
imageUrl: string;
startTime: string;
endTime: string;
participants: number;
category: string;
status: 'ongoing' | 'upcoming';
}
// 定义分类数据类型
interface Category {
id: string;
name: string;
}
Page({
data: {
// 搜索关键词
searchKeyword: '',
// 当前选中的分类
currentCategory: 'all',
// 活动分类
categories: [] as Category[],
// 所有活动数据
activities: [] as Activity[],
// 过滤后的活动列表
filteredActivities: [] as Activity[]
},
onLoad() {
// 初始化分类
this.initCategories();
// 初始化活动数据
this.initActivities();
},
// 初始化分类
initCategories() {
const categories: Category[] = [
{ id: 'all', name: '全部活动' },
{ id: 'online', name: '线上活动' },
{ id: 'offline', name: '线下活动' },
{ id: 'exhibition', name: '展览活动' },
{ id: 'lecture', name: '讲座活动' }
];
this.setData({
categories
});
},
// 初始化活动数据
initActivities() {
const activities: Activity[] = [
{
id: 1,
title: '2023年度科技创新峰会',
description: '汇聚行业精英,探讨科技创新趋势与未来发展方向',
imageUrl: 'https://picsum.photos/400/300?random=1',
startTime: '2023-10-15',
endTime: '2023-10-17',
participants: 356,
category: 'offline',
status: 'ongoing'
},
{
id: 2,
title: '数字艺术线上展览',
description: '探索数字艺术的无限可能,足不出户欣赏艺术盛宴',
imageUrl: 'https://picsum.photos/400/300?random=2',
startTime: '2023-10-10',
endTime: '2023-11-10',
participants: 1243,
category: 'online',
status: 'ongoing'
},
{
id: 3,
title: '环保志愿者招募活动',
description: '一起参与环保行动,为城市绿化贡献一份力量',
imageUrl: 'https://picsum.photos/400/300?random=3',
startTime: '2023-10-20',
endTime: '2023-10-20',
participants: 89,
category: 'offline',
status: 'upcoming'
},
{
id: 4,
title: '现代艺术作品展',
description: '展示当代艺术家的最新创作,感受艺术的多元魅力',
imageUrl: 'https://picsum.photos/400/300?random=4',
startTime: '2023-10-05',
endTime: '2023-10-25',
participants: 752,
category: 'exhibition',
status: 'ongoing'
},
{
id: 5,
title: '人工智能前沿讲座',
description: '知名专家解析AI发展现状与未来应用场景',
imageUrl: 'https://picsum.photos/400/300?random=5',
startTime: '2023-10-22',
endTime: '2023-10-22',
participants: 156,
category: 'lecture',
status: 'upcoming'
},
{
id: 6,
title: '创意写作工作坊',
description: '提升写作技巧,激发创作灵感,适合各类写作爱好者',
imageUrl: 'https://picsum.photos/400/300?random=6',
startTime: '2023-10-18',
endTime: '2023-10-25',
participants: 68,
category: 'offline',
status: 'upcoming'
}
];
this.setData({
activities,
filteredActivities: activities
});
},
// 切换分类
switchCategory(e: { currentTarget: { dataset: { category: string } } }) {
const category = e.currentTarget.dataset.category;
this.setData({
currentCategory: category
}, () => {
this.filterActivities();
});
},
// 搜索输入变化
onSearchInput(e: { detail: { value: string } }) {
const keyword = e.detail.value.trim();
this.setData({
searchKeyword: keyword
}, () => {
this.filterActivities();
});
},
// 过滤活动列表
filterActivities() {
const { activities, currentCategory, searchKeyword } = this.data;
let filtered = [...activities];
// 按分类过滤
if (currentCategory !== 'all') {
filtered = filtered.filter(activity => activity.category === currentCategory);
}
// 按搜索关键词过滤
if (searchKeyword) {
const keyword = searchKeyword.toLowerCase();
filtered = filtered.filter(activity =>
activity.title.toLowerCase().includes(keyword) ||
activity.description.toLowerCase().includes(keyword)
);
}
this.setData({
filteredActivities: filtered
});
},
// 跳转到活动详情页
navigateToDetail(e: { currentTarget: { dataset: { id: number } } }) {
const id = e.currentTarget.dataset.id;
wx.navigateTo({
url: `/pages/activityDetail/activityDetail?id=${id}`
});
}
});