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