修复小程序讲解页面返回回退
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
lyf
2026-07-28 10:40:25 +08:00
parent 0b3a31f556
commit 8b3e3f8d55
10 changed files with 281 additions and 82 deletions

View File

@@ -20,13 +20,15 @@
<script setup lang="ts">
import { onUnmounted, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { onBackPress, onLoad } from '@dcloudio/uni-app'
import GuidePageFrame from '@/components/navigation/GuidePageFrame.vue'
import ExplainGuideStopCatalog, { type ExplainGuideStopCatalogItem } from '@/components/explain/ExplainGuideStopCatalog.vue'
import { explainUseCase } from '@/usecases/explainUseCase'
import type { ExplainGuideStop } from '@/domain/museum'
import { normalizeExplainDetailTargetFromGuideStop } from '@/domain/explainDetailTarget'
import { navigateToGuideTopTab, type GuideTopTab } from '@/utils/guideTopTabs'
import { isEmbeddedInWechatMiniProgram } from '@/utils/hostEnvironment'
import { returnToWechatMiniProgram } from '@/services/WechatMiniProgramBridgeService'
const PAGE_SIZE = 20
const selectedExplainHallId = ref('')
@@ -40,6 +42,7 @@ const hasMore = ref(false)
const nextPageNo = ref(1)
let requestVersion = 0
let disposed = false
let returningToMiniProgram = false
const toGuideStopItems = (stops: ExplainGuideStop[]): ExplainGuideStopCatalogItem[] => stops.map((stop) => ({
id: stop.id,
@@ -153,7 +156,7 @@ type ExplainPageStackEntry = {
}
}
const returnToHallList = () => {
const returnToHallList = async () => {
const pages = getCurrentPages()
const previousPage = pages[pages.length - 2] as ExplainPageStackEntry | undefined
const previousRoute = previousPage?.route
@@ -170,11 +173,27 @@ const returnToHallList = () => {
return
}
if (isEmbeddedInWechatMiniProgram()) {
if (returningToMiniProgram) return
returningToMiniProgram = true
const result = await returnToWechatMiniProgram()
if (result.status === 'returned') return
returningToMiniProgram = false
uni.showToast({ title: '返回小程序失败,请重试', icon: 'none' })
return
}
fallbackToHallList()
}
const handleBack = returnToHallList
const handleBack = () => { void returnToHallList() }
const handleTopTabChange = (tab: GuideTopTab) => navigateToGuideTopTab(tab)
onBackPress(() => {
void returnToHallList()
return true
})
</script>
<style scoped lang="scss">