<template>
|
<view></view>
|
</template>
|
|
<script setup>
|
import { onShow, onHide } from "@dcloudio/uni-app";
|
import { ref } from "vue";
|
|
// 标记是否已经跳转过,防止从子页面返回时再次触发跳转
|
const isNavigating = ref(false);
|
|
onShow(() => {
|
const lastTab = uni.getStorageSync("lastTab");
|
|
// 如果是跳转后返回的状态(isNavigating为true),则说明用户取消了操作或完成了操作返回
|
// 此时应该回到之前的Tab页
|
if (isNavigating.value) {
|
isNavigating.value = false; // 重置标志位
|
if (lastTab === "task") {
|
uni.switchTab({ url: "/pages/inspectionTask/index" });
|
} else if (lastTab === "work") {
|
uni.switchTab({ url: "/pages/work/index" });
|
} else if (lastTab === "user") {
|
uni.switchTab({ url: "/pages/user/index" });
|
} else {
|
uni.switchTab({ url: "/pages/map/index" });
|
}
|
return;
|
}
|
|
// 根据上一个页面决定跳转逻辑
|
if (lastTab === "task") {
|
// 任务页面 -> 跳转新建任务
|
isNavigating.value = true;
|
uni.navigateTo({
|
url: "/subPackages/taskDetail/addTask/index",
|
fail: (err) => {
|
console.error("Navigate to addTask failed:", err);
|
isNavigating.value = false;
|
// 如果跳转失败,返回上一页
|
uni.switchTab({ url: "/pages/inspectionTask/index" });
|
},
|
});
|
} else if (lastTab === "work") {
|
// 工单页面 -> 跳转新建工单
|
isNavigating.value = true;
|
uni.navigateTo({
|
url: "/subPackages/workDetail/addWork/index",
|
fail: (err) => {
|
console.error("Navigate to addWork failed:", err);
|
isNavigating.value = false;
|
uni.switchTab({ url: "/pages/work/index" });
|
},
|
});
|
} else {
|
// 地图或我的页面 -> 仅占位,不跳转,提示并返回
|
uni.showToast({
|
title: "此功能暂未开放",
|
icon: "none",
|
duration: 2000,
|
});
|
|
// 返回上一个Tab
|
if (lastTab === "user") {
|
uni.switchTab({ url: "/pages/user/index" });
|
} else {
|
// 默认为地图
|
uni.switchTab({ url: "/pages/map/index" });
|
}
|
}
|
});
|
|
onHide(() => {
|
// 页面隐藏时,如果是切换到了其他Tab(不是navigateTo),可能需要重置?
|
// 不,如果是navigateTo,页面隐藏是正常的,flag保持true。
|
// 如果是switchTab出去,flag应该是false(因为已经处理过了)。
|
// 唯一风险是:如果navigateTo之前就switchTab了?(不可能,逻辑是同步的)
|
});
|
</script>
|
|
<style>
|
page {
|
background-color: transparent;
|
}
|
</style>
|