From 2b3715f1610b4176d7abe33e34542389cef61853 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期六, 12 四月 2025 17:12:22 +0800
Subject: [PATCH] Merge branch 'main' of http://lanpucloud.cn:1111/r/eims-master

---
 eims-ui-mobile/src/utils/index.ts |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 deletions(-)

diff --git a/eims-ui-mobile/src/utils/index.ts b/eims-ui-mobile/src/utils/index.ts
new file mode 100644
index 0000000..a60e713
--- /dev/null
+++ b/eims-ui-mobile/src/utils/index.ts
@@ -0,0 +1,178 @@
+import { pages, subPackages, tabBar } from '@/pages.json'
+import { isMpWeixin } from './platform'
+
+const getLastPage = () => {
+  // getCurrentPages() 鑷冲皯鏈�1涓厓绱狅紝鎵�浠ヤ笉鍐嶉澶栧垽鏂�
+  // const lastPage = getCurrentPages().at(-1)
+  // 涓婇潰閭d釜鍦ㄤ綆鐗堟湰瀹夊崜涓墦鍖呬細鎶ラ敊锛屾墍浠ユ敼鐢ㄤ笅闈㈣繖涓�愯櫧鐒舵垜鍔犱簡 src/interceptions/prototype.ts锛屼絾渚濈劧鎶ラ敊銆�
+  const pages = getCurrentPages()
+  return pages[pages.length - 1]
+}
+
+/** 鍒ゆ柇褰撳墠椤甸潰鏄惁鏄� tabbar 椤�  */
+export const getIsTabbar = () => {
+  if (!tabBar) {
+    return false
+  }
+  if (!tabBar.list.length) {
+    // 閫氬父鏈� tabBar 鐨勮瘽锛宭ist 涓嶈兘鏈夌┖锛屼笖鑷冲皯鏈�2涓厓绱狅紝杩欓噷鍏跺疄涓嶇敤澶勭悊
+    return false
+  }
+  const lastPage = getLastPage()
+  const currPath = lastPage.route
+  return !!tabBar.list.find((e) => e.pagePath === currPath)
+}
+
+/**
+ * 鑾峰彇褰撳墠椤甸潰璺敱鐨� path 璺緞鍜� redirectPath 璺緞
+ * path 濡� '/pages/login/index'
+ * redirectPath 濡� '/pages/demo/base/route-interceptor'
+ */
+export const currRoute = () => {
+  const lastPage = getLastPage()
+  const currRoute = (lastPage as any).$page
+  // console.log('lastPage.$page:', currRoute)
+  // console.log('lastPage.$page.fullpath:', currRoute.fullPath)
+  // console.log('lastPage.$page.options:', currRoute.options)
+  // console.log('lastPage.options:', (lastPage as any).options)
+  // 缁忚繃澶氱娴嬭瘯锛屽彧鏈� fullPath 闈犺氨锛屽叾浠栭兘涓嶉潬璋�
+  const { fullPath } = currRoute as { fullPath: string }
+  // console.log(fullPath)
+  // eg: /pages/login/index?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor (灏忕▼搴�)
+  // eg: /pages/login/index?redirect=%2Fpages%2Froute-interceptor%2Findex%3Fname%3Dfeige%26age%3D30(h5)
+  return getUrlObj(fullPath)
+}
+
+const ensureDecodeURIComponent = (url: string) => {
+  if (url.startsWith('%')) {
+    return ensureDecodeURIComponent(decodeURIComponent(url))
+  }
+  return url
+}
+/**
+ * 瑙f瀽 url 寰楀埌 path 鍜� query
+ * 姣斿杈撳叆url: /pages/login/index?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor
+ * 杈撳嚭: {path: /pages/login/index, query: {redirect: /pages/demo/base/route-interceptor}}
+ */
+export const getUrlObj = (url: string) => {
+  const [path, queryStr] = url.split('?')
+  // console.log(path, queryStr)
+
+  if (!queryStr) {
+    return {
+      path,
+      query: {},
+    }
+  }
+  const query: Record<string, string> = {}
+  queryStr.split('&').forEach((item) => {
+    const [key, value] = item.split('=')
+    // console.log(key, value)
+    query[key] = ensureDecodeURIComponent(value) // 杩欓噷闇�瑕佺粺涓� decodeURIComponent 涓�涓嬶紝鍙互鍏煎h5鍜屽井淇
+  })
+  return { path, query }
+}
+/**
+ * 寰楀埌鎵�鏈夌殑闇�瑕佺櫥褰曠殑 pages锛屽寘鎷富鍖呭拰鍒嗗寘鐨�
+ * 杩欓噷璁捐寰楅�氱敤涓�鐐癸紝鍙互浼犻�� key 浣滀负鍒ゆ柇渚濇嵁锛岄粯璁ゆ槸 needLogin, 涓� route-block 閰嶅浣跨敤
+ * 濡傛灉娌℃湁浼� key锛屽垯琛ㄧず鎵�鏈夌殑 pages锛屽鏋滀紶閫掍簡 key, 鍒欒〃绀洪�氳繃 key 杩囨护
+ */
+export const getAllPages = (key = 'needLogin') => {
+  // 杩欓噷澶勭悊涓诲寘
+  const mainPages = [
+    ...pages
+      .filter((page) => !key || page[key])
+      .map((page) => ({
+        ...page,
+        path: `/${page.path}`,
+      })),
+  ]
+  // 杩欓噷澶勭悊鍒嗗寘
+  const subPages: any[] = []
+  subPackages.forEach((subPageObj) => {
+    // console.log(subPageObj)
+    const { root } = subPageObj
+
+    subPageObj.pages
+      .filter((page) => !key || page[key])
+      .forEach((page: { path: string } & Record<string, any>) => {
+        subPages.push({
+          ...page,
+          path: `/${root}/${page.path}`,
+        })
+      })
+  })
+  const result = [...mainPages, ...subPages]
+  // console.log(`getAllPages by ${key} result: `, result)
+  return result
+}
+
+/**
+ * 寰楀埌鎵�鏈夌殑闇�瑕佺櫥褰曠殑 pages锛屽寘鎷富鍖呭拰鍒嗗寘鐨�
+ * 鍙緱鍒� path 鏁扮粍
+ */
+export const getNeedLoginPages = (): string[] => getAllPages('needLogin').map((page) => page.path)
+
+/**
+ * 寰楀埌鎵�鏈夌殑闇�瑕佺櫥褰曠殑 pages锛屽寘鎷富鍖呭拰鍒嗗寘鐨�
+ * 鍙緱鍒� path 鏁扮粍
+ */
+export const needLoginPages: string[] = getAllPages('needLogin').map((page) => page.path)
+
+/**
+ * 鏍规嵁寰俊灏忕▼搴忓綋鍓嶇幆澧冿紝鍒ゆ柇搴旇鑾峰彇鐨� baseUrl
+ */
+export const getEnvBaseUrl = () => {
+  // 璇锋眰鍩哄噯鍦板潃
+  let baseUrl = import.meta.env.VITE_SERVER_BASEURL
+
+  // 寰俊灏忕▼搴忕鐜鍖哄垎
+  if (isMpWeixin) {
+    const {
+      miniProgram: { envVersion },
+    } = uni.getAccountInfoSync()
+
+    switch (envVersion) {
+      case 'develop':
+        baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_DEVELOP || baseUrl
+        break
+      case 'trial':
+        baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_TRIAL || baseUrl
+        break
+      case 'release':
+        baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_RELEASE || baseUrl
+        break
+    }
+  }
+
+  return baseUrl
+}
+
+/**
+ * 鏍规嵁寰俊灏忕▼搴忓綋鍓嶇幆澧冿紝鍒ゆ柇搴旇鑾峰彇鐨� UPLOAD_BASEURL
+ */
+export const getEnvBaseUploadUrl = () => {
+  // 璇锋眰鍩哄噯鍦板潃
+  let baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL
+
+  // 寰俊灏忕▼搴忕鐜鍖哄垎
+  if (isMpWeixin) {
+    const {
+      miniProgram: { envVersion },
+    } = uni.getAccountInfoSync()
+
+    switch (envVersion) {
+      case 'develop':
+        baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_DEVELOP || baseUploadUrl
+        break
+      case 'trial':
+        baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_TRIAL || baseUploadUrl
+        break
+      case 'release':
+        baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_RELEASE || baseUploadUrl
+        break
+    }
+  }
+
+  return baseUploadUrl
+}

--
Gitblit v1.9.3