优化模型加载失败提示文案
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
lyf
2026-07-10 12:40:08 +08:00
parent 288861838a
commit 27d8864852

View File

@@ -5,7 +5,7 @@
<view v-if="isLoading && !loadError" class="loading-overlay"> <view v-if="isLoading && !loadError" class="loading-overlay">
<view class="loading-content"> <view class="loading-content">
<view class="loading-spinner"></view> <view class="loading-spinner"></view>
<text class="loading-text">{{ loadingMessage }}</text> <text class="loading-text">{{ loadingDisplayMessage }}</text>
<view class="loading-progress"> <view class="loading-progress">
<view class="loading-bar" :style="{ width: `${loadingProgress}%` }"></view> <view class="loading-bar" :style="{ width: `${loadingProgress}%` }"></view>
</view> </view>
@@ -14,8 +14,8 @@
<view v-else-if="loadError" class="loading-overlay error-overlay"> <view v-else-if="loadError" class="loading-overlay error-overlay">
<view class="loading-content error-content"> <view class="loading-content error-content">
<text class="error-title">3D 模型加载失败</text> <text class="error-title">{{ modelLoadErrorTitle }}</text>
<text class="error-text">{{ loadingMessage }}</text> <text class="error-text">{{ modelLoadErrorMessage }}</text>
<view class="retry-btn" @tap="retryLoad"> <view class="retry-btn" @tap="retryLoad">
<text class="retry-text">重新加载</text> <text class="retry-text">重新加载</text>
</view> </view>
@@ -349,6 +349,12 @@ const loadingProgress = ref(0)
const loadingMessage = ref('正在读取馆内导览资源...') const loadingMessage = ref('正在读取馆内导览资源...')
const activeView = ref<ViewMode>(props.initialView) const activeView = ref<ViewMode>(props.initialView)
const currentFloor = ref(props.initialFloorId) const currentFloor = ref(props.initialFloorId)
const loadingDisplayMessage = '正在加载馆内三维场景'
const modelLoadErrorTitle = '馆内三维场景加载失败'
const modelLoadErrorMessage = '可能是网络原因,请重新加载。'
const setFriendlyModelLoadError = () => {
setProgress(0, modelLoadErrorMessage)
}
const selectedPOI = ref<RenderPoi | null>(null) const selectedPOI = ref<RenderPoi | null>(null)
const activeFocusPoiId = ref('') const activeFocusPoiId = ref('')
const floorIndex = ref<FloorIndexItem[]>([]) const floorIndex = ref<FloorIndexItem[]>([])
@@ -3188,7 +3194,6 @@ const checkAutoSwitch = (options: { forceOverviewEntry?: boolean } = {}) => {
detachPoiBeforeLoad: true detachPoiBeforeLoad: true
}) })
}, },
'单楼层模型加载失败',
{ showLoading: !hasSceneToKeep && !canLoadFloorSilently(targetFloorId) } { showLoading: !hasSceneToKeep && !canLoadFloorSilently(targetFloorId) }
) )
return return
@@ -3249,15 +3254,13 @@ const checkAutoSwitch = (options: { forceOverviewEntry?: boolean } = {}) => {
trigger: 'zoom-out', trigger: 'zoom-out',
distance distance
}, },
loadOverview, loadOverview
'建筑外观模型加载失败'
) )
} }
const runAutoSwitchLoad = async ( const runAutoSwitchLoad = async (
event: { from: 'overview' | 'floor'; to: 'overview' | 'floor'; trigger: 'zoom-in' | 'zoom-out'; distance: number }, event: { from: 'overview' | 'floor'; to: 'overview' | 'floor'; trigger: 'zoom-in' | 'zoom-out'; distance: number },
loadTask: () => Promise<unknown>, loadTask: () => Promise<unknown>,
fallbackMessage: string,
options: { showLoading?: boolean } = {} options: { showLoading?: boolean } = {}
) => { ) => {
const showLoading = options.showLoading ?? true const showLoading = options.showLoading ?? true
@@ -3278,7 +3281,7 @@ const runAutoSwitchLoad = async (
console.error('馆内 3D 自动视角切换失败:', error) console.error('馆内 3D 自动视角切换失败:', error)
loadError.value = true loadError.value = true
isLoading.value = false isLoading.value = false
setProgress(0, error instanceof Error ? error.message : fallbackMessage) setFriendlyModelLoadError()
} finally { } finally {
isAutoSwitchLocked = false isAutoSwitchLocked = false
} }
@@ -4854,7 +4857,7 @@ const focusTargetPoi = async (request: TargetPoiFocusRequest) => {
console.error('目标 POI 聚焦失败:', error) console.error('目标 POI 聚焦失败:', error)
loadError.value = true loadError.value = true
isLoading.value = false isLoading.value = false
setProgress(0, error instanceof Error ? error.message : '目标位置聚焦失败') setFriendlyModelLoadError()
emitTargetFocus(request, 'error', error instanceof Error ? error.message : '目标位置聚焦失败') emitTargetFocus(request, 'error', error instanceof Error ? error.message : '目标位置聚焦失败')
return false return false
} }
@@ -4962,7 +4965,7 @@ const init3DScene = async () => {
loadError.value = true loadError.value = true
isLoading.value = false isLoading.value = false
const message = error instanceof Error ? error.message : '请检查模型资源或网络状态后重试' const message = error instanceof Error ? error.message : '请检查模型资源或网络状态后重试'
setProgress(0, message) setFriendlyModelLoadError()
initialModelSettled = true initialModelSettled = true
emit('initialModelFailed', { emit('initialModelFailed', {
view: activeView.value, view: activeView.value,
@@ -5010,7 +5013,7 @@ const handleFloorChange = async (floorId: string) => {
console.error('楼层模型加载失败:', error) console.error('楼层模型加载失败:', error)
loadError.value = true loadError.value = true
restoreCommittedFloorPoiLayer() restoreCommittedFloorPoiLayer()
setProgress(0, error instanceof Error ? error.message : '楼层模型加载失败') setFriendlyModelLoadError()
} finally { } finally {
const requestWasSuperseded = modelLoadVersion > previousLoadToken + 1 const requestWasSuperseded = modelLoadVersion > previousLoadToken + 1
if (!requestWasSuperseded || floorSwitchRequestedFloorId === requestedFloorId) { if (!requestWasSuperseded || floorSwitchRequestedFloorId === requestedFloorId) {
@@ -5039,7 +5042,7 @@ const showMultiFloor = async () => {
console.error('多层展示模型加载失败:', error) console.error('多层展示模型加载失败:', error)
loadError.value = true loadError.value = true
isLoading.value = false isLoading.value = false
setProgress(0, error instanceof Error ? error.message : '多层展示模型加载失败') setFriendlyModelLoadError()
} }
} }