diff --git a/miniprogram/app.json b/miniprogram/app.json index e9ac2ea..284a7e2 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -60,11 +60,19 @@ "preloadRule": { "pages/home/home": { "network": "all", - "packages": ["mathPages", "focusPages"] + "packages": ["mathPages", "pinyinPages", "chinesePages"] }, "pages/category/category": { "network": "all", - "packages": ["focusPages", "englishPages"] + "packages": ["focusPages", "englishPages", "chinesePages"] + }, + "pages/age/age": { + "network": "all", + "packages": ["focusPages", "englishPages", "pinyinPages"] + }, + "pages/favorites/favorites": { + "network": "all", + "packages": ["focusPages", "mathPages", "chinesePages"] }, "pages/profile/profile": { "network": "all", diff --git a/miniprogram/components3.0/nav-bar/nav-bar.less b/miniprogram/components3.0/nav-bar/nav-bar.less index f10849b..649becc 100644 --- a/miniprogram/components3.0/nav-bar/nav-bar.less +++ b/miniprogram/components3.0/nav-bar/nav-bar.less @@ -63,6 +63,7 @@ font-size: 40rpx; color: @color-nav-title; line-height: 1; + margin-top: 4rpx; } .nav-bar__title { @@ -85,4 +86,4 @@ .nav-bar__placeholder { width: 100%; flex-shrink: 0; -} +} \ No newline at end of file diff --git a/miniprogram/components3.0/worksheet-card/worksheet-card.ts b/miniprogram/components3.0/worksheet-card/worksheet-card.ts index 8e8edfd..c2ef8d1 100644 --- a/miniprogram/components3.0/worksheet-card/worksheet-card.ts +++ b/miniprogram/components3.0/worksheet-card/worksheet-card.ts @@ -54,7 +54,8 @@ Component({ }, methods: { onTap() { - this.triggerEvent('tap', { + // 使用 cardtap 避免与原生 tap 同名,防止安卓上父级 bindtap 重复触发 navigateTo + this.triggerEvent('cardtap', { title: this.data.title, path: this.data.path, }); diff --git a/miniprogram/components3.0/worksheet-card/worksheet-card.wxml b/miniprogram/components3.0/worksheet-card/worksheet-card.wxml index ea7cf25..b5e6c58 100644 --- a/miniprogram/components3.0/worksheet-card/worksheet-card.wxml +++ b/miniprogram/components3.0/worksheet-card/worksheet-card.wxml @@ -2,7 +2,7 @@ class="worksheet-card worksheet-card--{{variant}}" hover-class="worksheet-card--active" hover-stay-time="100" - bindtap="onTap"> + catchtap="onTap"> { - console.error('navigateByPath error:', err); + _navigating = true; + wx.navigateTo({ + url: p, + complete: releaseNavigateLock, + fail: (err) => { + console.error('navigateByPath error:', err); + releaseNavigateLock(); + }, }); } diff --git a/miniprogram/pages/age/age.wxml b/miniprogram/pages/age/age.wxml index 0c81b2e..3700f97 100644 --- a/miniprogram/pages/age/age.wxml +++ b/miniprogram/pages/age/age.wxml @@ -116,7 +116,7 @@ path="{{item.path}}" data-title="{{item.title}}" data-path="{{item.path}}" - bindtap="onTapCard" + bind:cardtap="onTapCard" /> diff --git a/miniprogram/pages/favorites/favorites.ts b/miniprogram/pages/favorites/favorites.ts index 8cf7c30..c9c5d8b 100644 --- a/miniprogram/pages/favorites/favorites.ts +++ b/miniprogram/pages/favorites/favorites.ts @@ -158,6 +158,8 @@ function formatDateKey(date: Date): string { } Page({ + _navigating: false, + data: { favScrollHeight: 0, activeTab: 'favorites' as FavoritesTab, @@ -240,12 +242,23 @@ Page({ }, onCardTap(e: WechatMiniprogram.TouchEvent) { + if (this._navigating) return; + const path = e.currentTarget.dataset.path as string | undefined; if (!path) { wx.showToast({ title: '该练习已下架', icon: 'none' }); return; } - wx.navigateTo({ url: path }); + this._navigating = true; + wx.navigateTo({ + url: path, + complete: () => { + this._navigating = false; + }, + fail: () => { + this._navigating = false; + }, + }); }, onSearchTap() { diff --git a/miniprogram/pages/home/home.ts b/miniprogram/pages/home/home.ts index b6c3dd0..b81a09a 100644 --- a/miniprogram/pages/home/home.ts +++ b/miniprogram/pages/home/home.ts @@ -71,7 +71,15 @@ function sortSectionsByTabs( })); } +let _navigating = false; + +function releaseNavigateLock() { + _navigating = false; +} + function navigateByPath(path?: string, fallbackTitle?: string) { + if (_navigating) return; + if (!path) { wx.showToast({ title: fallbackTitle ? `${fallbackTitle} 即将上线` : '即将上线', @@ -96,11 +104,22 @@ function navigateByPath(path?: string, fallbackTitle?: string) { query, ); } - wx.switchTab({ url: basePath }); + _navigating = true; + wx.switchTab({ + url: basePath, + complete: releaseNavigateLock, + fail: releaseNavigateLock, + }); return; } - wx.navigateTo({ url: path }).catch((err) => { - console.error('navigateByPath error:', err); + _navigating = true; + wx.navigateTo({ + url: path, + complete: releaseNavigateLock, + fail: (err) => { + console.error('navigateByPath error:', err); + releaseNavigateLock(); + }, }); } diff --git a/miniprogram/pages/home/home.wxml b/miniprogram/pages/home/home.wxml index fc2389c..9aad542 100644 --- a/miniprogram/pages/home/home.wxml +++ b/miniprogram/pages/home/home.wxml @@ -248,7 +248,7 @@ path="{{item.path}}" data-title="{{item.title}}" data-path="{{item.path}}" - bindtap="onTapCard" /> + bind:cardtap="onTapCard" />