From 25cf6f1c020e2467a7264081919a60c0978696ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E9=B9=8F?= Date: Tue, 31 Dec 2024 10:58:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=8D=A2=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc-auto-import.json | 17 +- env/.env | 16 +- env/.env.development | 6 +- env/.env.production | 6 +- env/.env.test | 4 +- package.json | 2 +- pnpm-lock.yaml | 10 +- src/App.vue | 25 -- src/components/.gitkeep | 0 src/components/CustomTabBar/CustomTabBar.vue | 73 +++++ src/components/Modal/Modal.vue | 95 +++++++ .../TopNavigation/TopNavigation.vue | 75 ++++++ src/constants/regular-expressions.js | 3 + src/hooks/.gitkeep | 0 src/manifest.json | 8 +- src/pages.json | 49 +++- src/pages/about/about.vue | 36 --- src/pages/about/components/request.vue | 56 ---- src/pages/about/components/upload.vue | 30 --- src/pages/code/code.vue | 100 +++++++ src/pages/get-code/get-code.vue | 59 ++++ src/pages/home/CustomTab.vue | 44 +++ src/pages/home/home.vue | 254 ++++++++++++++++++ src/pages/index/index.vue | 56 ---- src/pages/login/login.vue | 242 +++++++++++++++++ src/pages/mine/mine.vue | 7 + src/pages/notification/notification.vue | 7 + src/pages/reset-password/reset-password.vue | 74 +++++ src/pages/workbench/workbench.vue | 7 + src/static/images/.gitkeep | 0 src/static/images/icon_back.png | Bin 0 -> 316 bytes src/static/images/icon_nav_close.png | Bin 0 -> 2202 bytes src/static/images/icon_nav_more.png | Bin 0 -> 1364 bytes src/static/images/icon_scan_code.png | Bin 0 -> 1560 bytes src/static/images/icon_wechat.png | Bin 0 -> 2265 bytes src/static/logo.png | Bin 0 -> 4023 bytes src/store/basic.ts | 22 ++ src/store/index.ts | 1 + src/types/auto-import.d.ts | 2 - src/types/uni-pages.d.ts | 11 +- src/typings.ts | 24 +- src/uni_modules/.gitkeep | 0 src/utils/http.ts | 26 +- src/utils/platform.ts | 6 - 44 files changed, 1182 insertions(+), 271 deletions(-) delete mode 100644 src/components/.gitkeep create mode 100644 src/components/CustomTabBar/CustomTabBar.vue create mode 100644 src/components/Modal/Modal.vue create mode 100644 src/components/TopNavigation/TopNavigation.vue create mode 100644 src/constants/regular-expressions.js delete mode 100644 src/hooks/.gitkeep delete mode 100644 src/pages/about/about.vue delete mode 100644 src/pages/about/components/request.vue delete mode 100644 src/pages/about/components/upload.vue create mode 100644 src/pages/code/code.vue create mode 100644 src/pages/get-code/get-code.vue create mode 100644 src/pages/home/CustomTab.vue create mode 100644 src/pages/home/home.vue delete mode 100644 src/pages/index/index.vue create mode 100644 src/pages/login/login.vue create mode 100644 src/pages/mine/mine.vue create mode 100644 src/pages/notification/notification.vue create mode 100644 src/pages/reset-password/reset-password.vue create mode 100644 src/pages/workbench/workbench.vue delete mode 100644 src/static/images/.gitkeep create mode 100644 src/static/images/icon_back.png create mode 100644 src/static/images/icon_nav_close.png create mode 100644 src/static/images/icon_nav_more.png create mode 100644 src/static/images/icon_scan_code.png create mode 100644 src/static/images/icon_wechat.png create mode 100644 src/static/logo.png create mode 100644 src/store/basic.ts delete mode 100644 src/uni_modules/.gitkeep diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 27df73d..ca20d5b 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -3,11 +3,14 @@ "Component": true, "ComponentPublicInstance": true, "ComputedRef": true, + "DirectiveBinding": true, "EffectScope": true, "ExtractDefaultPropTypes": true, "ExtractPropTypes": true, "ExtractPublicPropTypes": true, "InjectionKey": true, + "MaybeRef": true, + "MaybeRefOrGetter": true, "PropType": true, "Ref": true, "VNode": true, @@ -65,6 +68,7 @@ "onUnload": true, "onUnmounted": true, "onUpdated": true, + "onWatcherCleanup": true, "provide": true, "reactive": true, "readonly": true, @@ -82,20 +86,15 @@ "useAttrs": true, "useCssModule": true, "useCssVars": true, + "useId": true, + "useModel": true, "useRequest": true, "useSlots": true, + "useTemplateRef": true, "useUpload": true, - "useUpload2": true, "watch": true, "watchEffect": true, "watchPostEffect": true, - "watchSyncEffect": true, - "DirectiveBinding": true, - "MaybeRef": true, - "MaybeRefOrGetter": true, - "onWatcherCleanup": true, - "useId": true, - "useModel": true, - "useTemplateRef": true + "watchSyncEffect": true } } diff --git a/env/.env b/env/.env index 03c7ecf..c367880 100644 --- a/env/.env +++ b/env/.env @@ -1,15 +1,15 @@ -VITE_APP_TITLE = 'unibest' -VITE_APP_PORT = 9000 +VITE_APP_TITLE='星星勤务' +VITE_APP_PORT=9000 -VITE_UNI_APPID = 'H57F2ACE4' -VITE_WX_APPID = 'wxa2abb91f64032a2b' +VITE_UNI_APPID='__UNI__58536F2' +VITE_WX_APPID='wxa2abb91f64032a2b' # h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base -VITE_APP_PUBLIC_BASE=/unibest/ +VITE_APP_PUBLIC_BASE=/ -VITE_SERVER_BASEURL = 'https://ukw0y1.laf.run' -VITE_UPLOAD_BASEURL = 'https://ukw0y1.laf.run/upload' +VITE_SERVER_BASEURL='https://ukw0y1.laf.run' +VITE_UPLOAD_BASEURL='https://ukw0y1.laf.run/upload' # h5是否需要配置代理 VITE_APP_PROXY=false -VITE_APP_PROXY_PREFIX = '/api' +VITE_APP_PROXY_PREFIX='/api' diff --git a/env/.env.development b/env/.env.development index 04fa273..286b50f 100644 --- a/env/.env.development +++ b/env/.env.development @@ -1,6 +1,6 @@ # 变量必须以 VITE_ 为前缀才能暴露给外部读取 -NODE_ENV = 'development' +NODE_ENV='development' # 是否去除console 和 debugger -VITE_DELETE_CONSOLE = false +VITE_DELETE_CONSOLE=false # 是否开启sourcemap -VITE_SHOW_SOURCEMAP = true +VITE_SHOW_SOURCEMAP=true diff --git a/env/.env.production b/env/.env.production index 8a1b50c..21bbcba 100644 --- a/env/.env.production +++ b/env/.env.production @@ -1,6 +1,6 @@ # 变量必须以 VITE_ 为前缀才能暴露给外部读取 -NODE_ENV = 'development' +NODE_ENV='development' # 是否去除console 和 debugger -VITE_DELETE_CONSOLE = true +VITE_DELETE_CONSOLE=true # 是否开启sourcemap -VITE_SHOW_SOURCEMAP = false +VITE_SHOW_SOURCEMAP=false diff --git a/env/.env.test b/env/.env.test index e22f765..ed9c565 100644 --- a/env/.env.test +++ b/env/.env.test @@ -1,4 +1,4 @@ # 变量必须以 VITE_ 为前缀才能暴露给外部读取 -NODE_ENV = 'development' +NODE_ENV='development' # 是否去除console 和 debugger -VITE_DELETE_CONSOLE = false +VITE_DELETE_CONSOLE=false diff --git a/package.json b/package.json index f7a3071..080be6d 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "pinia-plugin-persistedstate": "3.2.1", "qs": "6.5.3", "vue": "3.4.21", - "wot-design-uni": "^1.4.0", + "wot-design-uni": "1.4.0", "z-paging": "^2.8.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9699bff..a33933e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ importers: specifier: 3.4.21 version: 3.4.21(typescript@5.7.2) wot-design-uni: - specifier: ^1.4.0 - version: 1.4.0(vue@3.4.21(typescript@5.7.2)) + specifier: 1.5.1 + version: 1.5.1(vue@3.4.21(typescript@5.7.2)) z-paging: specifier: ^2.8.4 version: 2.8.4 @@ -5456,8 +5456,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wot-design-uni@1.4.0: - resolution: {integrity: sha512-h6sjrgfg7mP0nJwGTiHn/iTLPFyRswMpQV6MKhWN3skTnXe+FAyndvtXofpXp+uLkTXefGfw5BPI0uuCMD874w==} + wot-design-uni@1.5.1: + resolution: {integrity: sha512-jiDRuF8r7+xAldc4Dp+2T1VnqDnOoMWsXu6aRpDg2QG7ZH+/bJl7W8H8hHbKFgA9lu1By/HCDmpG7JC45nYtBw==} engines: {HBuilderX: ^3.8.7} peerDependencies: vue: '>=3.2.47' @@ -12236,7 +12236,7 @@ snapshots: word-wrap@1.2.5: {} - wot-design-uni@1.4.0(vue@3.4.21(typescript@5.7.2)): + wot-design-uni@1.5.1(vue@3.4.21(typescript@5.7.2)): dependencies: vue: 3.4.21(typescript@5.7.2) diff --git a/src/App.vue b/src/App.vue index e127703..49958a6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -30,29 +30,4 @@ height: 100%; vertical-align: middle; } - - // 单行省略,优先使用 unocss: text-ellipsis - .ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - // 两行省略 - .ellipsis-2 { - display: -webkit-box; - overflow: hidden; - text-overflow: ellipsis; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - } - - // 三行省略 - .ellipsis-3 { - display: -webkit-box; - overflow: hidden; - text-overflow: ellipsis; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - } diff --git a/src/components/.gitkeep b/src/components/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/CustomTabBar/CustomTabBar.vue b/src/components/CustomTabBar/CustomTabBar.vue new file mode 100644 index 0000000..d9dd1fd --- /dev/null +++ b/src/components/CustomTabBar/CustomTabBar.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/components/Modal/Modal.vue b/src/components/Modal/Modal.vue new file mode 100644 index 0000000..ed171d8 --- /dev/null +++ b/src/components/Modal/Modal.vue @@ -0,0 +1,95 @@ + + + diff --git a/src/components/TopNavigation/TopNavigation.vue b/src/components/TopNavigation/TopNavigation.vue new file mode 100644 index 0000000..af1bfdd --- /dev/null +++ b/src/components/TopNavigation/TopNavigation.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/constants/regular-expressions.js b/src/constants/regular-expressions.js new file mode 100644 index 0000000..1fcc6be --- /dev/null +++ b/src/constants/regular-expressions.js @@ -0,0 +1,3 @@ +export const phoneRegExp = /^1[3-9]\d{9}$/ + +export const passwordRegExp = /^(?![0-9]+$)(?![a-zA-Z]+$)(?![^0-9a-zA-Z]+$).{8,20}$/ diff --git a/src/hooks/.gitkeep b/src/hooks/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/manifest.json b/src/manifest.json index ac9b61f..2c18b3f 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { - "name": "unibest", - "appid": "H57F2ACE4", + "name": "星星勤务", + "appid": "__UNI__58536F2", "description": "", "versionName": "1.0.0", "versionCode": "100", @@ -105,7 +105,7 @@ "vueVersion": "3", "h5": { "router": { - "base": "/unibest/" + "base": "/" } } -} +} \ No newline at end of file diff --git a/src/pages.json b/src/pages.json index 0c1bb86..db2c4f6 100644 --- a/src/pages.json +++ b/src/pages.json @@ -51,7 +51,7 @@ }, "pages": [ { - "path": "pages/index/index", + "path": "pages/home/home", "type": "home", "style": { "navigationStyle": "custom", @@ -59,12 +59,53 @@ } }, { - "path": "pages/about/about", + "path": "pages/code/code", "type": "page", "style": { - "navigationBarTitleText": "关于" + "navigationStyle": "custom", + "disableScroll": true } + }, + { + "path": "pages/get-code/get-code", + "type": "page", + "style": { + "navigationStyle": "custom", + "disableScroll": true + } + }, + { + "path": "pages/home/CustomTab", + "type": "page" + }, + { + "path": "pages/login/login", + "type": "page", + "style": { + "navigationStyle": "custom", + "disableScroll": true + } + }, + { + "path": "pages/mine/mine", + "type": "page" + }, + { + "path": "pages/notification/notification", + "type": "page" + }, + { + "path": "pages/reset-password/reset-password", + "type": "page", + "style": { + "navigationStyle": "custom", + "disableScroll": true + } + }, + { + "path": "pages/workbench/workbench", + "type": "page" } ], "subPackages": [] -} +} \ No newline at end of file diff --git a/src/pages/about/about.vue b/src/pages/about/about.vue deleted file mode 100644 index 4276540..0000000 --- a/src/pages/about/about.vue +++ /dev/null @@ -1,36 +0,0 @@ - -{ - style: { - navigationBarTitleText: '关于' - } -} - - - - - - - diff --git a/src/pages/about/components/request.vue b/src/pages/about/components/request.vue deleted file mode 100644 index 3ccb18f..0000000 --- a/src/pages/about/components/request.vue +++ /dev/null @@ -1,56 +0,0 @@ - -{ - layout: 'demo', - style: { - navigationBarTitleText: '请求' - } -} - - - - - diff --git a/src/pages/about/components/upload.vue b/src/pages/about/components/upload.vue deleted file mode 100644 index 2b2ee83..0000000 --- a/src/pages/about/components/upload.vue +++ /dev/null @@ -1,30 +0,0 @@ - -{ - layout: 'default', - style: { - navigationBarTitleText: '上传-状态一体化' - } -} - - - - - - - diff --git a/src/pages/code/code.vue b/src/pages/code/code.vue new file mode 100644 index 0000000..731d583 --- /dev/null +++ b/src/pages/code/code.vue @@ -0,0 +1,100 @@ + +{ + style: { + navigationStyle: 'custom', + disableScroll: true + } +} + + + + + + diff --git a/src/pages/get-code/get-code.vue b/src/pages/get-code/get-code.vue new file mode 100644 index 0000000..2c23461 --- /dev/null +++ b/src/pages/get-code/get-code.vue @@ -0,0 +1,59 @@ + +{ + style: { + navigationStyle: 'custom', + disableScroll: true + } +} + + + + + + diff --git a/src/pages/home/CustomTab.vue b/src/pages/home/CustomTab.vue new file mode 100644 index 0000000..feedb58 --- /dev/null +++ b/src/pages/home/CustomTab.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/pages/home/home.vue b/src/pages/home/home.vue new file mode 100644 index 0000000..b39176d --- /dev/null +++ b/src/pages/home/home.vue @@ -0,0 +1,254 @@ + +{ + style: { + navigationStyle: 'custom', + navigationBarTitleText: '首页' + } +} + + + + + + diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue deleted file mode 100644 index 8fb2be9..0000000 --- a/src/pages/index/index.vue +++ /dev/null @@ -1,56 +0,0 @@ - - -{ - style: { - navigationStyle: 'custom', - navigationBarTitleText: '首页' - } -} - - - - - - diff --git a/src/pages/login/login.vue b/src/pages/login/login.vue new file mode 100644 index 0000000..258d9ec --- /dev/null +++ b/src/pages/login/login.vue @@ -0,0 +1,242 @@ + +{ + style: { + navigationStyle: 'custom', + disableScroll: true + } +} + + + + diff --git a/src/pages/mine/mine.vue b/src/pages/mine/mine.vue new file mode 100644 index 0000000..126a836 --- /dev/null +++ b/src/pages/mine/mine.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/pages/notification/notification.vue b/src/pages/notification/notification.vue new file mode 100644 index 0000000..126a836 --- /dev/null +++ b/src/pages/notification/notification.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/pages/reset-password/reset-password.vue b/src/pages/reset-password/reset-password.vue new file mode 100644 index 0000000..d07f1ac --- /dev/null +++ b/src/pages/reset-password/reset-password.vue @@ -0,0 +1,74 @@ + +{ + style: { + navigationStyle: 'custom', + disableScroll: true + } +} + + + + + + diff --git a/src/pages/workbench/workbench.vue b/src/pages/workbench/workbench.vue new file mode 100644 index 0000000..126a836 --- /dev/null +++ b/src/pages/workbench/workbench.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/images/.gitkeep b/src/static/images/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/static/images/icon_back.png b/src/static/images/icon_back.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3fb451aa9e9673be2e38b3c8f3498d6448864d GIT binary patch literal 316 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 KMNUMnLSTYU9izJd literal 0 HcmV?d00001 diff --git a/src/static/images/icon_wechat.png b/src/static/images/icon_wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..144dd1c19ee8ae81a999373a3866ba387765d285 GIT binary patch literal 2265 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 literal 0 HcmV?d00001 diff --git a/src/static/logo.png b/src/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a GIT binary patch literal 4023 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 SYs}WS&%*SCNx89m_ { + // 系统信息 + let systemInfo: GetSystemInfoResult = uni.getSystemInfoSync() + // 获取系统信息 + const getSystemInfo = (): Promise => { + return new Promise(resolve => { + if (systemInfo.uniPlatform) { + resolve(systemInfo) + } else { + systemInfo = uni.getSystemInfoSync() + resolve(systemInfo) + } + }) + } + + return { + getSystemInfo + } +}) diff --git a/src/store/index.ts b/src/store/index.ts index 964ce63..37cdae4 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -15,3 +15,4 @@ export default store // 模块统一导出 export * from './user' +export * from './basic' diff --git a/src/types/auto-import.d.ts b/src/types/auto-import.d.ts index 117a03d..5dedc7d 100644 --- a/src/types/auto-import.d.ts +++ b/src/types/auto-import.d.ts @@ -79,12 +79,10 @@ declare global { const useCssVars: typeof import('vue')['useCssVars'] const useId: typeof import('vue')['useId'] const useModel: typeof import('vue')['useModel'] - const useNavbarWeixin: (typeof import('../hooks/useNavbarWeixin'))['default'] const useRequest: typeof import('../hooks/useRequest')['default'] const useSlots: typeof import('vue')['useSlots'] const useTemplateRef: typeof import('vue')['useTemplateRef'] const useUpload: typeof import('../hooks/useUpload')['default'] - const useUpload2: typeof import('../hooks/useUpload2')['default'] const watch: typeof import('vue')['watch'] const watchEffect: typeof import('vue')['watchEffect'] const watchPostEffect: typeof import('vue')['watchPostEffect'] diff --git a/src/types/uni-pages.d.ts b/src/types/uni-pages.d.ts index b87aa55..2397e12 100644 --- a/src/types/uni-pages.d.ts +++ b/src/types/uni-pages.d.ts @@ -4,8 +4,15 @@ // Generated by vite-plugin-uni-pages interface NavigateToOptions { - url: "/pages/index/index" | - "/pages/about/about"; + url: "/pages/home/home" | + "/pages/code/code" | + "/pages/get-code/get-code" | + "/pages/home/CustomTab" | + "/pages/login/login" | + "/pages/mine/mine" | + "/pages/notification/notification" | + "/pages/reset-password/reset-password" | + "/pages/workbench/workbench"; } interface RedirectToOptions extends NavigateToOptions {} diff --git a/src/typings.ts b/src/typings.ts index d564304..8052235 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -1,8 +1,8 @@ // 全局要用的类型放到这里 type IResData = { - code: number - msg: string + errorCode: number + errorMsg: string data: T } @@ -18,12 +18,24 @@ type IUniUploadFileOptions = { type IUserInfo = { nickname?: string avatar?: string - /** 微信的 openid,非微信没有这个字段 */ openid?: string token?: string } -enum TestEnum { - A = 'a', - B = 'b' +type TabBarItem = { + icon: string + title: string + isDot?: boolean + value?: number +} + +type HomeTabItem = { + icon: string + title: string + id: number +} + +type HomeTab = { + title: string + list: HomeTabItem[] } diff --git a/src/uni_modules/.gitkeep b/src/uni_modules/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/utils/http.ts b/src/utils/http.ts index dd422eb..8cb75a9 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -13,20 +13,20 @@ export const http = (options: CustomRequestOptions) => { success(res) { // 状态码 2xx,参考 axios 的设计 if (res.statusCode >= 200 && res.statusCode < 300) { - // 2.1 提取核心数据 res.data - resolve(res.data as IResData) - } else if (res.statusCode === 401) { - // 401错误 -> 清理用户信息,跳转到登录页 - // userStore.clearUserInfo() - // uni.navigateTo({ url: '/pages/login/login' }) - reject(res) + if (res.data.errorCode === 403) { + // 401错误 -> 清理用户信息,跳转到登录页 + // userStore.clearUserInfo() + // uni.navigateTo({ url: '/pages/login/login' }) + reject(res) + } else { + resolve(res.data as IResData) + } } else { // 其他错误 -> 根据后端错误信息轻提示 - !options.hideErrorToast && - uni.showToast({ - icon: 'none', - title: (res.data as IResData).msg || '请求错误' - }) + uni.showToast({ + icon: 'none', + title: '网络错误,请重试' + }) reject(res) } }, @@ -34,7 +34,7 @@ export const http = (options: CustomRequestOptions) => { fail(err) { uni.showToast({ icon: 'none', - title: '网络错误,换个网络试试' + title: '网络错误,请重试' }) reject(err) } diff --git a/src/utils/platform.ts b/src/utils/platform.ts index 5c345ad..84e4e70 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -1,9 +1,3 @@ -/* - * @Author: 菲鸽 - * @Date: 2024-03-28 19:13:55 - * @Last Modified by: 菲鸽 - * @Last Modified time: 2024-03-28 19:24:55 - */ export const platform = __UNI_PLATFORM__ export const isH5 = __UNI_PLATFORM__ === 'h5' export const isApp = __UNI_PLATFORM__ === 'app'