| New file |
| | |
| | | <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> |