From a1dfc1313e0bf9647c7d3a4046d62cf242177276 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 13 三月 2025 16:34:29 +0800
Subject: [PATCH] fix: 二期需求

---
 apps/taro/.eslintrc-auto-import.json                |    3 +
 apps/taro/src/subpackages/order/order/InnerPage.vue |    4 +-
 apps/taro/src/pages/mine/index.vue                  |    2 
 apps/taro/src/components/Policy/Policy.vue          |    2 
 apps/taro/src/hooks/router.ts                       |   26 ++++++++-----
 apps/taro/config/index.js                           |   16 +++++++-
 apps/taro/auto-imports.d.ts                         |    1 
 apps/taro/src/utils/page.ts                         |   32 ++++++++++++++++
 8 files changed, 69 insertions(+), 17 deletions(-)

diff --git a/apps/taro/.eslintrc-auto-import.json b/apps/taro/.eslintrc-auto-import.json
index ed6afec..449db43 100644
--- a/apps/taro/.eslintrc-auto-import.json
+++ b/apps/taro/.eslintrc-auto-import.json
@@ -89,6 +89,7 @@
     "useTemplateRef": true,
     "DirectiveBinding": true,
     "MaybeRef": true,
-    "MaybeRefOrGetter": true
+    "MaybeRefOrGetter": true,
+    "RouteHelper": true
   }
 }
diff --git a/apps/taro/auto-imports.d.ts b/apps/taro/auto-imports.d.ts
index 45a0ef1..4518d58 100644
--- a/apps/taro/auto-imports.d.ts
+++ b/apps/taro/auto-imports.d.ts
@@ -6,6 +6,7 @@
 export {}
 declare global {
   const EffectScope: typeof import('vue')['EffectScope']
+  const RouteHelper: typeof import('@/utils')['RouteHelper']
   const RouterPath: typeof import('@/constants')['RouterPath']
   const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
   const computed: typeof import('vue')['computed']
diff --git a/apps/taro/config/index.js b/apps/taro/config/index.js
index 6ded296..78c8ec0 100644
--- a/apps/taro/config/index.js
+++ b/apps/taro/config/index.js
@@ -116,7 +116,13 @@
 
       chain.plugin('unplugin-auto-import').use(
         AutoImport({
-          imports: ['vue', 'pinia', 'vue-router', { '@/constants': ['RouterPath'] }],
+          imports: [
+            'vue',
+            'pinia',
+            'vue-router',
+            { '@/constants': ['RouterPath'] },
+            { '@/utils': ['RouteHelper'] },
+          ],
           eslintrc: {
             enabled: true, // Default `false`
             filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
@@ -230,7 +236,13 @@
     webpackChain(chain, webpack) {
       chain.plugin('unplugin-auto-import').use(
         AutoImport({
-          imports: ['vue', 'pinia', 'vue-router', { '@/constants': ['RouterPath'] }],
+          imports: [
+            'vue',
+            'pinia',
+            'vue-router',
+            { '@/constants': ['RouterPath'] },
+            { '@/utils': ['RouteHelper'] },
+          ],
           eslintrc: {
             enabled: true, // Default `false`
             filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
diff --git a/apps/taro/src/components/Policy/Policy.vue b/apps/taro/src/components/Policy/Policy.vue
index ccb7947..4590a88 100644
--- a/apps/taro/src/components/Policy/Policy.vue
+++ b/apps/taro/src/components/Policy/Policy.vue
@@ -38,7 +38,7 @@
 });
 
 function goPolicy() {
-  Taro.navigateTo({
+  RouteHelper.navigateTo({
     url: RouterPath.userPolicy,
   });
 }
diff --git a/apps/taro/src/hooks/router.ts b/apps/taro/src/hooks/router.ts
index d571b8f..01639bb 100644
--- a/apps/taro/src/hooks/router.ts
+++ b/apps/taro/src/hooks/router.ts
@@ -5,6 +5,7 @@
 import { isInAlipay } from '@/utils/env';
 import { useLifeRechargeContext } from '@life-payment/core-vue';
 import { getRouterPath } from '@life-payment/utils';
+import { pathAddExtraParam } from '@/utils';
 
 export function useSwitchTab() {
   const systemStore = useSystemStore();
@@ -54,21 +55,26 @@
   const router = Taro.useRouter();
 
   const channelId = router.params?.channelId ?? '';
-  console.log('router.params: ', router);
+  console.log('router: params', router, blLifeRecharge.accountModel.channlesNum);
 
   Taro.useDidShow(() => {
+    console.log('latestRoute.value: ', latestRoute.value);
     const isTabbarPage = Object.values(TabBarPageRouterForCheck).some((x) =>
       latestRoute.value.toLowerCase().includes(x.toLowerCase())
     );
-    // if (blLifeRecharge.accountModel.channlesNum && !channelId) {
-    //   Taro.reLaunch({
-    //     // url: `${getRouterPath(router.path)}?channelId=${blLifeRecharge.accountModel.channlesNum}`,
-    //     url: `${router.path}&channelId=${blLifeRecharge.accountModel.channlesNum}`,
-    //     success() {
-    //       appStore.setLatestRoute('');
-    //     },
-    //   });
-    // }
+    const currentIsTabbarPage = Object.values(TabBarPageRouterForCheck).some((x) =>
+      getRouterPath(router.path).toLowerCase().includes(x.toLowerCase())
+    );
+    console.log('currentIsTabbarPage: ', currentIsTabbarPage);
+    if (currentIsTabbarPage && blLifeRecharge.accountModel.channlesNum && !channelId) {
+      Taro.reLaunch({
+        url: pathAddExtraParam(router.path, { channelId: blLifeRecharge.accountModel.channlesNum }),
+        success() {
+          appStore.setLatestRoute('');
+        },
+      });
+      return;
+    }
     if (isTabbarPage && isInAlipay) {
       Taro.reLaunch({
         url: router.path,
diff --git a/apps/taro/src/pages/mine/index.vue b/apps/taro/src/pages/mine/index.vue
index 6ed70bb..df65482 100644
--- a/apps/taro/src/pages/mine/index.vue
+++ b/apps/taro/src/pages/mine/index.vue
@@ -56,7 +56,7 @@
 }
 
 function goPage(routeName: string) {
-  Taro.navigateTo({
+  RouteHelper.navigateTo({
     url: routeName,
   });
 }
diff --git a/apps/taro/src/subpackages/order/order/InnerPage.vue b/apps/taro/src/subpackages/order/order/InnerPage.vue
index 971f795..62835f4 100644
--- a/apps/taro/src/subpackages/order/order/InnerPage.vue
+++ b/apps/taro/src/subpackages/order/order/InnerPage.vue
@@ -23,7 +23,7 @@
 const orderType = ref('1');
 
 function goApplyRefund(id: string) {
-  Taro.navigateTo({
+  RouteHelper.navigateTo({
     url: `${RouterPath.orderApplyRefund}?id=${id}`,
     // events: {
     //   submitApplyRefund: function () {},
@@ -31,7 +31,7 @@
   });
 }
 function goRefundDetail(orderNo: string) {
-  Taro.navigateTo({
+  RouteHelper.navigateTo({
     url: `${RouterPath.orderRefundResult}?orderNo=${orderNo}`,
   });
 }
diff --git a/apps/taro/src/utils/page.ts b/apps/taro/src/utils/page.ts
index 8670a6f..1652ec0 100644
--- a/apps/taro/src/utils/page.ts
+++ b/apps/taro/src/utils/page.ts
@@ -1,6 +1,8 @@
 import { TabBarPageRouter } from '@/constants';
 import Taro from '@tarojs/taro';
 import { useSystemStoreWithOut } from '@/stores/modules/system';
+import { query2object, object2query } from '@life-payment/utils';
+import { blLifeRecharge } from './blLifeRecharge';
 
 export function goBack(delta = 1) {
   const pages = Taro.getCurrentPages();
@@ -23,3 +25,33 @@
     url: TabBarPageRouter['Home'],
   });
 }
+
+export function pathAddExtraParam(path: string, object: Record<string, string | number>) {
+  console.log('path: ', path, object);
+  const pathList = path.split('?');
+  if (pathList.length > 1) {
+    const query = query2object(pathList[1]);
+    for (const key in object) {
+      query[key] = object[key] as any;
+    }
+    return `${pathList[0]}?${object2query(query)}`;
+  } else {
+    return `${pathList[0]}?${object2query(object)}`;
+  }
+}
+
+export class RouteHelper {
+  static switchTab(option: Taro.switchTab.Option) {
+    return Taro.switchTab({
+      ...option,
+      url: pathAddExtraParam(option.url, { channelId: blLifeRecharge.accountModel.channlesNum }),
+    });
+  }
+
+  static navigateTo(option: Taro.navigateTo.Option) {
+    Taro.navigateTo({
+      ...option,
+      url: pathAddExtraParam(option.url, { channelId: blLifeRecharge.accountModel.channlesNum }),
+    });
+  }
+}

--
Gitblit v1.9.1