diff --git a/miniprogram/components/shared/category-tabs/category-tabs.json b/miniprogram/components3.0/category-tabs/category-tabs.json similarity index 100% rename from miniprogram/components/shared/category-tabs/category-tabs.json rename to miniprogram/components3.0/category-tabs/category-tabs.json diff --git a/miniprogram/components/shared/category-tabs/category-tabs.less b/miniprogram/components3.0/category-tabs/category-tabs.less similarity index 96% rename from miniprogram/components/shared/category-tabs/category-tabs.less rename to miniprogram/components3.0/category-tabs/category-tabs.less index 9e47e2f..6327bff 100644 --- a/miniprogram/components/shared/category-tabs/category-tabs.less +++ b/miniprogram/components3.0/category-tabs/category-tabs.less @@ -13,7 +13,7 @@ flex-direction: row; align-items: center; gap: 16rpx; - padding: 30rpx 24rpx; + padding: 0 24rpx; box-sizing: border-box; } diff --git a/miniprogram/components/shared/category-tabs/category-tabs.ts b/miniprogram/components3.0/category-tabs/category-tabs.ts similarity index 100% rename from miniprogram/components/shared/category-tabs/category-tabs.ts rename to miniprogram/components3.0/category-tabs/category-tabs.ts diff --git a/miniprogram/components/shared/category-tabs/category-tabs.wxml b/miniprogram/components3.0/category-tabs/category-tabs.wxml similarity index 100% rename from miniprogram/components/shared/category-tabs/category-tabs.wxml rename to miniprogram/components3.0/category-tabs/category-tabs.wxml diff --git a/miniprogram/components/shared/detail-card/detail-card.json b/miniprogram/components3.0/detail-card/detail-card.json similarity index 100% rename from miniprogram/components/shared/detail-card/detail-card.json rename to miniprogram/components3.0/detail-card/detail-card.json diff --git a/miniprogram/components/shared/detail-card/detail-card.less b/miniprogram/components3.0/detail-card/detail-card.less similarity index 100% rename from miniprogram/components/shared/detail-card/detail-card.less rename to miniprogram/components3.0/detail-card/detail-card.less diff --git a/miniprogram/components/shared/detail-card/detail-card.ts b/miniprogram/components3.0/detail-card/detail-card.ts similarity index 100% rename from miniprogram/components/shared/detail-card/detail-card.ts rename to miniprogram/components3.0/detail-card/detail-card.ts diff --git a/miniprogram/components/shared/detail-card/detail-card.wxml b/miniprogram/components3.0/detail-card/detail-card.wxml similarity index 100% rename from miniprogram/components/shared/detail-card/detail-card.wxml rename to miniprogram/components3.0/detail-card/detail-card.wxml diff --git a/miniprogram/components/shared/worksheet-card/worksheet-card.json b/miniprogram/components3.0/worksheet-card/worksheet-card.json similarity index 100% rename from miniprogram/components/shared/worksheet-card/worksheet-card.json rename to miniprogram/components3.0/worksheet-card/worksheet-card.json diff --git a/miniprogram/components/shared/worksheet-card/worksheet-card.less b/miniprogram/components3.0/worksheet-card/worksheet-card.less similarity index 100% rename from miniprogram/components/shared/worksheet-card/worksheet-card.less rename to miniprogram/components3.0/worksheet-card/worksheet-card.less diff --git a/miniprogram/components/shared/worksheet-card/worksheet-card.ts b/miniprogram/components3.0/worksheet-card/worksheet-card.ts similarity index 100% rename from miniprogram/components/shared/worksheet-card/worksheet-card.ts rename to miniprogram/components3.0/worksheet-card/worksheet-card.ts diff --git a/miniprogram/components/shared/worksheet-card/worksheet-card.wxml b/miniprogram/components3.0/worksheet-card/worksheet-card.wxml similarity index 100% rename from miniprogram/components/shared/worksheet-card/worksheet-card.wxml rename to miniprogram/components3.0/worksheet-card/worksheet-card.wxml diff --git a/miniprogram/pages/category/category.json b/miniprogram/pages/category/category.json index c5b0815..2f4c910 100644 --- a/miniprogram/pages/category/category.json +++ b/miniprogram/pages/category/category.json @@ -4,7 +4,7 @@ "navigationBarBackgroundColor": "#ffffff", "backgroundColor": "#F6F6F6", "usingComponents": { - "worksheet-card": "../../components/shared/worksheet-card/worksheet-card", - "detail-card": "../../components/shared/detail-card/detail-card" + "worksheet-card": "../../components3.0/worksheet-card/worksheet-card", + "detail-card": "../../components3.0/detail-card/detail-card" } } diff --git a/miniprogram/pages/home/home.json b/miniprogram/pages/home/home.json index 4f4597e..fe829fc 100644 --- a/miniprogram/pages/home/home.json +++ b/miniprogram/pages/home/home.json @@ -6,7 +6,7 @@ "backgroundColor": "#FEF6E7", "enablePullDownRefresh": false, "usingComponents": { - "category-tabs": "/components/shared/category-tabs/category-tabs", + "category-tabs": "/components3.0/category-tabs/category-tabs", "van-icon": "@vant/weapp/icon/index" } } diff --git a/miniprogram/pages/home/home.less b/miniprogram/pages/home/home.less index 3b1b75e..32b4d36 100644 --- a/miniprogram/pages/home/home.less +++ b/miniprogram/pages/home/home.less @@ -1,6 +1,8 @@ @import '../../style/theme3.less'; @home-padding: 28rpx; +@home-section-mt: 48rpx; +@home-track-gap: 16rpx; .home-page { min-height: 100vh; @@ -68,12 +70,12 @@ } .home-tabs-wrap { - // margin-top: 28rpx; + margin-top: 48rpx; } .home-hero-placeholder { // margin: 8rpx auto 0; - margin: 0 24rpx; + margin: 48rpx 24rpx 0; // width: 684rpx; height: 480rpx; border-radius: 40rpx; @@ -81,13 +83,13 @@ } .home-section-panel { - margin-top: 48rpx; + margin-top: @home-section-mt; padding: 0 @home-padding; box-sizing: border-box; } .home-section-panel--hot { - margin-top: 32rpx; + margin-top: @home-section-mt; } .home-section-head { @@ -107,6 +109,73 @@ color: @text-selected-btn; } +.home-section-head__title--module { + font-size: 28rpx; + font-weight: 700; +} + +.home-track-scroll { + margin-top: 24rpx; + width: 100%; + white-space: nowrap; +} + +.home-track-row { + display: inline-flex; + flex-direction: row; + gap: @home-track-gap; + padding-right: @home-padding; +} + +/* 可视约 2.2 张:2*w + 2*gap + 0.2*w ≈ 屏宽减左右 padding */ +.home-track-card { + width: calc((750rpx - 2 * @home-padding - 2 * @home-track-gap) / 2.2); + flex-shrink: 0; + border-radius: 24rpx; + overflow: hidden; + background: #ffffff; + box-shadow: 0 6rpx 20rpx rgba(50, 46, 37, 0.06); +} + +.home-track-card__top { + height: 200rpx; + display: flex; + align-items: center; + justify-content: center; +} + +.home-track-card__icon { + font-size: 72rpx; + line-height: 1; +} + +.home-track-card__body { + padding: 20rpx 18rpx 22rpx; + background: #ffffff; +} + +.home-track-card__title { + font-size: 28rpx; + font-weight: 600; + color: @text-title; + line-height: 1.35; + display: -webkit-box; + -webkit-box-orient: vertical; + line-clamp: 2; + -webkit-line-clamp: 2; + overflow: hidden; +} + +.home-track-card__sub { + margin-top: 8rpx; + font-size: 22rpx; + color: @text-gray; + line-height: 1.3; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + .home-age-scroll { margin-top: 32rpx; width: 100%; @@ -116,12 +185,13 @@ .home-age-row { display: inline-flex; flex-direction: row; - gap: 20rpx; + gap: 12rpx; padding-right: @home-padding; } .home-age-item { - width: calc((750rpx - 48rpx - 40rpx) / 3.2); + /* 目标:首屏露出 3.5 个(第 4 个露出约 50%) */ + width: calc((750rpx - 48rpx - 36rpx) / 3.5); display: flex; flex-direction: column; align-items: center; diff --git a/miniprogram/pages/home/home.ts b/miniprogram/pages/home/home.ts index 3d8f572..006cc9b 100644 --- a/miniprogram/pages/home/home.ts +++ b/miniprogram/pages/home/home.ts @@ -8,6 +8,90 @@ const CATEGORY_TABS = [ const AGE_BAND_ICONS = ['🌱', '🚀', '🎓', '🧠', '🏆'] as const; +type HomeTrackCard = { + id: string; + title: string; + subtitle: string; + icon: string; + topBg: string; +}; + +const MOCK_MATH_TRACK: HomeTrackCard[] = [ + { + id: 'm1', + title: '认识数字1-10', + subtitle: '启蒙第一课', + icon: '🔢', + topBg: '#fff3c4', + }, + { + id: 'm2', + title: '形状对对碰', + subtitle: '空间感训练', + icon: '📐', + topBg: '#f5e6dc', + }, + { + id: 'm3', + title: '数量比一比', + subtitle: '数感小游戏', + icon: '⚖️', + topBg: '#d8f0d0', + }, + { + id: 'm4', + title: '规律找一找', + subtitle: '逻辑思维', + icon: '🔍', + topBg: '#e8f4ff', + }, + { + id: 'm5', + title: '简单加减', + subtitle: '动手练一练', + icon: '➕', + topBg: '#fce4ec', + }, +]; + +const MOCK_CHINESE_TRACK: HomeTrackCard[] = [ + { + id: 'c1', + title: '基础笔画连连看', + subtitle: '书法初体验', + icon: '🖌', + topBg: '#f5e6dc', + }, + { + id: 'c2', + title: '看图识汉字', + subtitle: '字形联想', + icon: '📖', + topBg: '#d8f0d0', + }, + { + id: 'c3', + title: '拼音小闯关', + subtitle: '声母韵母', + icon: '🔤', + topBg: '#fff3c4', + }, + { + id: 'c4', + title: '词语搭配', + subtitle: '词汇积累', + icon: '✏️', + topBg: '#e8f4ff', + }, + { + id: 'c5', + title: '古诗诵读', + subtitle: '语感培养', + icon: '🎵', + topBg: '#fce4ec', + }, +]; + const MOCK_HOT_RECOMMENDS = [ { id: 'hot-1', @@ -40,6 +124,8 @@ Page({ })), activeAgeBand: AGE_BANDS[0].key as AgeBandKey, hotRecommends: [...MOCK_HOT_RECOMMENDS], + mathTrackCards: MOCK_MATH_TRACK, + chineseTrackCards: MOCK_CHINESE_TRACK, }, onTabChange(e: WechatMiniprogram.CustomEvent) { @@ -66,6 +152,20 @@ Page({ wx.showToast({ title: '热门推荐 即将上线', icon: 'none' }); }, + onTapTrackMore(e: WechatMiniprogram.TouchEvent) { + const category = e.currentTarget.dataset.category as string | undefined; + if (!category) return; + wx.navigateTo({ + url: `/pages/category/category?category=${category}`, + }); + }, + + onTapTrackCard(e: WechatMiniprogram.TouchEvent) { + const title = e.currentTarget.dataset.title as string | undefined; + if (!title) return; + wx.showToast({ title, icon: 'none' }); + }, + onShareAppMessage() { return { title: '涂鸦丫 - 快来生成宝宝的专属学习卡', diff --git a/miniprogram/pages/home/home.wxml b/miniprogram/pages/home/home.wxml index 767452f..6f3cd9e 100644 --- a/miniprogram/pages/home/home.wxml +++ b/miniprogram/pages/home/home.wxml @@ -90,4 +90,82 @@ + + + + 数感启蒙 + 更多 + + + + + + {{item.icon}} + + + {{item.title}} + {{item.subtitle}} + + + + + + + + + 趣味中文 + 更多 + + + + + + {{item.icon}} + + + {{item.title}} + {{item.subtitle}} + + + + +