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.
457 lines
13 KiB
457 lines
13 KiB
// pages/training/training.js
|
|
Page({
|
|
data: {
|
|
currentTab: 0,
|
|
searchKeyword: '',
|
|
articleActiveCategory: 'all',
|
|
videoActiveCategory: 'all',
|
|
|
|
// 文章数据
|
|
articles: [
|
|
{
|
|
id: 1,
|
|
title: '微信小程序开发最佳实践',
|
|
description: '深度解析小程序性能优化方案,助你打造流畅用户体验',
|
|
cover: 'https://via.placeholder.com/400x300/3498db/ffffff?text=小程序',
|
|
category: '技术干货',
|
|
author: '张技术',
|
|
readTime: 15,
|
|
date: '2024-01-15',
|
|
views: 2345,
|
|
likes: 189,
|
|
categoryId: 'tech'
|
|
},
|
|
{
|
|
id: 2,
|
|
title: '企业数字化转型的关键路径',
|
|
description: '传统企业如何通过数字化实现业务增长与效率提升',
|
|
cover: 'https://via.placeholder.com/400x300/2ecc71/ffffff?text=数字化',
|
|
category: '商业思维',
|
|
author: '李商业',
|
|
readTime: 20,
|
|
date: '2024-01-12',
|
|
views: 1567,
|
|
likes: 234,
|
|
categoryId: 'business'
|
|
},
|
|
{
|
|
id: 3,
|
|
title: '高效团队管理的7个秘诀',
|
|
description: '打造高绩效团队的实用方法与技巧',
|
|
cover: 'https://via.placeholder.com/400x300/e74c3c/ffffff?text=管理',
|
|
category: '管理技能',
|
|
author: '王经理',
|
|
readTime: 12,
|
|
date: '2024-01-10',
|
|
views: 3210,
|
|
likes: 456,
|
|
categoryId: 'management'
|
|
},
|
|
{
|
|
id: 4,
|
|
title: '前端工程师的职业发展路径',
|
|
description: '从初级到专家,前端工程师的成长路线图',
|
|
cover: 'https://via.placeholder.com/400x300/9b59b6/ffffff?text=前端',
|
|
category: '职业发展',
|
|
author: '赵前端',
|
|
readTime: 18,
|
|
date: '2024-01-08',
|
|
views: 1890,
|
|
likes: 345,
|
|
categoryId: 'career'
|
|
},
|
|
{
|
|
id: 5,
|
|
title: '云原生架构设计与实践',
|
|
description: '基于云原生技术的现代应用架构方案',
|
|
cover: 'https://via.placeholder.com/400x300/1abc9c/ffffff?text=云原生',
|
|
category: '技术干货',
|
|
author: '钱架构',
|
|
readTime: 25,
|
|
date: '2024-01-05',
|
|
views: 2789,
|
|
likes: 512,
|
|
categoryId: 'tech'
|
|
},
|
|
{
|
|
id: 6,
|
|
title: '人工智能在商业中的应用',
|
|
description: 'AI技术如何赋能传统行业实现智能化升级',
|
|
cover: 'https://via.placeholder.com/400x300/f39c12/ffffff?text=AI',
|
|
category: '商业思维',
|
|
author: '孙智能',
|
|
readTime: 22,
|
|
date: '2024-01-03',
|
|
views: 4321,
|
|
likes: 678,
|
|
categoryId: 'business'
|
|
}
|
|
],
|
|
|
|
// 视频数据
|
|
videos: [
|
|
{
|
|
id: 1,
|
|
title: 'Vue.js 3.0 核心源码解析',
|
|
cover: 'https://via.placeholder.com/400x300/3498db/ffffff?text=Vue3',
|
|
duration: '45:23',
|
|
instructor: {
|
|
name: '前端大神',
|
|
avatar: 'https://via.placeholder.com/40/3498db/ffffff?text=FS'
|
|
},
|
|
level: '高级',
|
|
views: '12.3k',
|
|
tags: ['Vue', '前端', '源码'],
|
|
category: 'tech',
|
|
isRecommended: true
|
|
},
|
|
{
|
|
id: 2,
|
|
title: 'React Hooks 深度解析',
|
|
cover: 'https://via.placeholder.com/400x300/2ecc71/ffffff?text=React',
|
|
duration: '38:45',
|
|
instructor: {
|
|
name: 'React专家',
|
|
avatar: 'https://via.placeholder.com/40/2ecc71/ffffff?text=RE'
|
|
},
|
|
level: '中级',
|
|
views: '8.7k',
|
|
tags: ['React', 'Hooks', '前端'],
|
|
category: 'tech',
|
|
isRecommended: true
|
|
},
|
|
{
|
|
id: 3,
|
|
title: '产品经理必备的7个思维模型',
|
|
cover: 'https://via.placeholder.com/400x300/e74c3c/ffffff?text=产品',
|
|
duration: '52:12',
|
|
instructor: {
|
|
name: '产品专家',
|
|
avatar: 'https://via.placeholder.com/40/e74c3c/ffffff?text=PM'
|
|
},
|
|
level: '中级',
|
|
views: '15.2k',
|
|
tags: ['产品', '思维', '方法论'],
|
|
category: 'business',
|
|
isRecommended: false
|
|
},
|
|
{
|
|
id: 4,
|
|
title: 'Python 数据分析实战',
|
|
cover: 'https://via.placeholder.com/400x300/9b59b6/ffffff?text=Python',
|
|
duration: '41:36',
|
|
instructor: {
|
|
name: '数据科学家',
|
|
avatar: 'https://via.placeholder.com/40/9b59b6/ffffff?text=DS'
|
|
},
|
|
level: '初级',
|
|
views: '23.4k',
|
|
tags: ['Python', '数据分析', '实战'],
|
|
category: 'tech',
|
|
isRecommended: true
|
|
},
|
|
{
|
|
id: 5,
|
|
title: '高效沟通的艺术与技巧',
|
|
cover: 'https://via.placeholder.com/400x300/1abc9c/ffffff?text=沟通',
|
|
duration: '36:58',
|
|
instructor: {
|
|
name: '沟通专家',
|
|
avatar: 'https://via.placeholder.com/40/1abc9c/ffffff?text=CM'
|
|
},
|
|
level: '初级',
|
|
views: '9.8k',
|
|
tags: ['沟通', '职场', '技巧'],
|
|
category: 'management',
|
|
isRecommended: false
|
|
},
|
|
{
|
|
id: 6,
|
|
title: 'Node.js 高性能服务开发',
|
|
cover: 'https://via.placeholder.com/400x300/f39c12/ffffff?text=Node',
|
|
duration: '55:42',
|
|
instructor: {
|
|
name: '后端架构师',
|
|
avatar: 'https://via.placeholder.com/40/f39c12/ffffff?text=BE'
|
|
},
|
|
level: '高级',
|
|
views: '6.5k',
|
|
tags: ['Node.js', '后端', '性能'],
|
|
category: 'tech',
|
|
isRecommended: false
|
|
},
|
|
{
|
|
id: 7,
|
|
title: '职场晋升的底层逻辑',
|
|
cover: 'https://via.placeholder.com/400x300/34495e/ffffff?text=晋升',
|
|
duration: '33:27',
|
|
instructor: {
|
|
name: '职业规划师',
|
|
avatar: 'https://via.placeholder.com/40/34495e/ffffff?text=CD'
|
|
},
|
|
level: '中级',
|
|
views: '11.2k',
|
|
tags: ['职场', '晋升', '规划'],
|
|
category: 'career',
|
|
isRecommended: true
|
|
},
|
|
{
|
|
id: 8,
|
|
title: 'JavaScript 入门到精通',
|
|
cover: 'https://via.placeholder.com/400x300/e74c3c/ffffff?text=JS',
|
|
duration: '1:15:30',
|
|
instructor: {
|
|
name: '前端导师',
|
|
avatar: 'https://via.placeholder.com/40/e74c3c/ffffff?text=JS'
|
|
},
|
|
level: '初级',
|
|
views: '45.6k',
|
|
tags: ['JavaScript', '入门', '教程'],
|
|
category: 'tech',
|
|
isRecommended: true
|
|
},
|
|
{
|
|
id: 9,
|
|
title: '商业计划书撰写指南',
|
|
cover: 'https://via.placeholder.com/400x300/1abc9c/ffffff?text=商业',
|
|
duration: '28:45',
|
|
instructor: {
|
|
name: '商业顾问',
|
|
avatar: 'https://via.placeholder.com/40/1abc9c/ffffff?text=BC'
|
|
},
|
|
level: '中级',
|
|
views: '7.3k',
|
|
tags: ['商业', '创业', '计划书'],
|
|
category: 'business',
|
|
isRecommended: false
|
|
},
|
|
{
|
|
id: 10,
|
|
title: '团队领导力提升训练',
|
|
cover: 'https://via.placeholder.com/400x300/9b59b6/ffffff?text=领导力',
|
|
duration: '49:18',
|
|
instructor: {
|
|
name: '领导力教练',
|
|
avatar: 'https://via.placeholder.com/40/9b59b6/ffffff?text=LC'
|
|
},
|
|
level: '高级',
|
|
views: '5.9k',
|
|
tags: ['领导力', '管理', '团队'],
|
|
category: 'management',
|
|
isRecommended: true
|
|
}
|
|
],
|
|
|
|
filteredArticles: [],
|
|
filteredVideos: []
|
|
},
|
|
|
|
onLoad() {
|
|
// 初始化数据
|
|
this.setData({
|
|
filteredArticles: this.data.articles,
|
|
filteredVideos: this.data.videos
|
|
});
|
|
},
|
|
|
|
// 切换主选项卡
|
|
switchTab(e) {
|
|
const tab = parseInt(e.currentTarget.dataset.tab);
|
|
this.setData({
|
|
currentTab: tab,
|
|
searchKeyword: ''
|
|
});
|
|
|
|
// 重置筛选结果
|
|
if (tab === 0) {
|
|
this.setData({
|
|
filteredArticles: this.filterArticles('', this.data.articleActiveCategory)
|
|
});
|
|
} else {
|
|
this.setData({
|
|
filteredVideos: this.filterVideos('', this.data.videoActiveCategory)
|
|
});
|
|
}
|
|
},
|
|
|
|
// 搜索输入
|
|
onSearchInput(e) {
|
|
const keyword = e.detail.value;
|
|
this.setData({ searchKeyword: keyword });
|
|
|
|
if (this.data.currentTab === 0) {
|
|
this.setData({
|
|
filteredArticles: this.filterArticles(keyword, this.data.articleActiveCategory)
|
|
});
|
|
} else {
|
|
this.setData({
|
|
filteredVideos: this.filterVideos(keyword, this.data.videoActiveCategory)
|
|
});
|
|
}
|
|
},
|
|
|
|
// 选择文章分类
|
|
selectArticleCategory(e) {
|
|
const category = e.currentTarget.dataset.category;
|
|
this.setData({ articleActiveCategory: category });
|
|
this.setData({
|
|
filteredArticles: this.filterArticles(this.data.searchKeyword, category)
|
|
});
|
|
},
|
|
|
|
// 选择视频分类
|
|
selectVideoCategory(e) {
|
|
const category = e.currentTarget.dataset.category;
|
|
this.setData({ videoActiveCategory: category });
|
|
this.setData({
|
|
filteredVideos: this.filterVideos(this.data.searchKeyword, category)
|
|
});
|
|
},
|
|
|
|
// 筛选文章函数
|
|
filterArticles(keyword, category) {
|
|
let filtered = this.data.articles;
|
|
|
|
// 按分类筛选
|
|
if (category !== 'all') {
|
|
const categoryMap = {
|
|
'tech': '技术干货',
|
|
'business': '商业思维',
|
|
'management': '管理技能',
|
|
'career': '职业发展'
|
|
};
|
|
|
|
filtered = filtered.filter(item => item.category === categoryMap[category]);
|
|
}
|
|
|
|
// 按关键词筛选
|
|
if (keyword) {
|
|
const lowerKeyword = keyword.toLowerCase();
|
|
filtered = filtered.filter(item =>
|
|
item.title.toLowerCase().includes(lowerKeyword) ||
|
|
item.description.toLowerCase().includes(lowerKeyword) ||
|
|
item.author.toLowerCase().includes(lowerKeyword) ||
|
|
item.category.toLowerCase().includes(lowerKeyword)
|
|
);
|
|
}
|
|
|
|
return filtered;
|
|
},
|
|
|
|
// 筛选视频函数
|
|
filterVideos(keyword, category) {
|
|
let filtered = this.data.videos;
|
|
|
|
// 按分类筛选
|
|
if (category !== 'all') {
|
|
switch (category) {
|
|
case 'recommend':
|
|
filtered = filtered.filter(item => item.isRecommended);
|
|
break;
|
|
case 'tech':
|
|
filtered = filtered.filter(item => item.category === 'tech');
|
|
break;
|
|
case 'business':
|
|
filtered = filtered.filter(item => item.category === 'business');
|
|
break;
|
|
case 'management':
|
|
filtered = filtered.filter(item => item.category === 'management');
|
|
break;
|
|
case 'career':
|
|
filtered = filtered.filter(item => item.category === 'career');
|
|
break;
|
|
case 'beginner':
|
|
filtered = filtered.filter(item => item.level === '初级');
|
|
break;
|
|
case 'advanced':
|
|
filtered = filtered.filter(item => item.level === '中级' || item.level === '高级');
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 按关键词筛选
|
|
if (keyword) {
|
|
const lowerKeyword = keyword.toLowerCase();
|
|
filtered = filtered.filter(item =>
|
|
item.title.toLowerCase().includes(lowerKeyword) ||
|
|
item.tags.some(tag => tag.toLowerCase().includes(lowerKeyword)) ||
|
|
item.instructor.name.toLowerCase().includes(lowerKeyword) ||
|
|
item.level.toLowerCase().includes(lowerKeyword)
|
|
);
|
|
}
|
|
|
|
return filtered;
|
|
},
|
|
|
|
// 查看文章详情
|
|
viewArticleDetail(e) {
|
|
const id = e.currentTarget.dataset.id;
|
|
|
|
},
|
|
|
|
// 播放视频
|
|
playVideo(e) {
|
|
const id = e.currentTarget.dataset.id;
|
|
|
|
|
|
},
|
|
|
|
// 下拉刷新
|
|
onPullDownRefresh() {
|
|
wx.showLoading({
|
|
title: '刷新中...'
|
|
});
|
|
|
|
// 模拟网络请求
|
|
setTimeout(() => {
|
|
// 重置数据
|
|
this.setData({
|
|
filteredArticles: this.data.articles,
|
|
filteredVideos: this.data.videos,
|
|
articleActiveCategory: 'all',
|
|
videoActiveCategory: 'all',
|
|
searchKeyword: ''
|
|
});
|
|
|
|
wx.hideLoading();
|
|
wx.stopPullDownRefresh();
|
|
wx.showToast({
|
|
title: '刷新成功',
|
|
icon: 'success'
|
|
});
|
|
}, 1000);
|
|
},
|
|
|
|
// 上拉加载更多
|
|
onReachBottom() {
|
|
if (this.data.currentTab === 0) {
|
|
// 文章加载更多
|
|
wx.showLoading({
|
|
title: '加载更多文章...'
|
|
});
|
|
|
|
setTimeout(() => {
|
|
// 这里可以添加更多文章数据
|
|
wx.hideLoading();
|
|
wx.showToast({
|
|
title: '没有更多了',
|
|
icon: 'none'
|
|
});
|
|
}, 1000);
|
|
} else {
|
|
// 视频加载更多
|
|
wx.showLoading({
|
|
title: '加载更多视频...'
|
|
});
|
|
|
|
setTimeout(() => {
|
|
// 这里可以添加更多视频数据
|
|
wx.hideLoading();
|
|
wx.showToast({
|
|
title: '没有更多了',
|
|
icon: 'none'
|
|
});
|
|
}, 1000);
|
|
}
|
|
}
|
|
});
|