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