快乐的梦鱼 недель назад: 2
Родитель
Сommit
71b377f03f

+ 1 - 0
src/App.vue

@@ -49,6 +49,7 @@ configTheme(false, (theme, darkTheme) => {
   theme.colorConfigs.background.warning = '#f5ebe0';
   theme.colorConfigs.background.page = '#f6f2e7';
   theme.varOverrides.ImageDefaultImage = AppCofig.defaultImage;
+  theme.varOverrides.AppHomePage = '/pages/home/index';
   return [theme, darkTheme];
 });
 

+ 8 - 1
src/components/nav/NavBar.vue

@@ -79,6 +79,7 @@ import { DynamicSize } from '../theme/ThemeTools';
 import HorizontalScrollText from '../typography/HorizontalScrollText.vue';
 import Text from '../basic/Text.vue';
 import IconButton from '../basic/IconButton.vue';
+import { isTopLevelPage } from '../utils/PageAction';
 
 export type NavBarButtonTypes = 'back'|'menu'|'search'|'setting'|'custom';
 
@@ -204,7 +205,13 @@ const titleTextStyle = theme.useThemeStyle({
 
 function handleButtonNavBack(button: NavBarButtonTypes, callback: () => void) {
   if (button === 'back') {
-    uni.navigateBack();
+    if (isTopLevelPage()) {
+      uni.reLaunch({
+        url: theme.getVar('AppHomePage', '/pages/index/index'),
+      });
+    } else {
+      uni.navigateBack();
+    }
   } else {
     callback();
   }

+ 18 - 0
src/components/utils/PageAction.ts

@@ -98,6 +98,23 @@ function backAndCallOnPageBack(name: string, data: Record<string, unknown>) {
   uni.navigateBack({ delta: 1 });
 }
 
+function isTopLevelPage() {
+  // 获取当前页面栈
+  const pages = getCurrentPages();
+  
+  if (!pages || pages.length === 0) {
+    return false; // 极端情况,没有页面
+  }
+
+  // 当前页面实例
+  const currentPage = pages[pages.length - 1];
+  
+  // 判断当前页面是否是栈中的第一个页面 (索引为 0)
+  // 注意:pages[0] 通常是 tabBar 页面或启动页
+  return pages.length === 1 || currentPage === pages[0];
+}
+
+
 export {
   redirectTo,
   back,
@@ -105,6 +122,7 @@ export {
   backAndCallOnPageBack, 
   navTo,
   callPrevOnPageBack,
+  isTopLevelPage,
 }
 
 export function getCurrentPageUrl() {

+ 4 - 1
src/pages/travel/route/travel-route.vue

@@ -259,6 +259,7 @@ function goToCurrentLocation() {
     },
     fail: (err) => {
       uni.hideLoading();
+      console.log(err);
       alert({
         title: '获取位置失败',
         content: '请检查是否开启定位权限',
@@ -502,7 +503,9 @@ onMounted(() => {
       currentLocation.value = [res.longitude, res.latitude];
       currentLocationGeted.value = true;
     },
-
+    fail: (err) => {
+      console.log(err);
+    },
   });
 });