From 5396e635ed9a38d04011815ece5f4ef010be98e4 Mon Sep 17 00:00:00 2001 From: weiwei Date: Mon, 19 May 2025 14:22:36 +0800 Subject: [PATCH 01/10] --- src/sheep/utils/request.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 340349f..11b1983 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -57,15 +57,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - // const userInfo = await (window as any).CP2.getUserInfo() - // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - // return false - // } + const userInfo = await (window as any).CP2.getUserInfo() + if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + return false + } - // const { accountId, sessionId } = userInfo.data - // const response = await userApi.authsh({ accountId, sessionId }) - const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + const { accountId, sessionId } = userInfo.data + const response = await userApi.authsh({ accountId, sessionId }) + // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken }) From a0db6820782969d7bca999f906284e2be3038f44 Mon Sep 17 00:00:00 2001 From: weiwei Date: Mon, 19 May 2025 14:32:11 +0800 Subject: [PATCH 02/10] 1 --- src/sheep/utils/request.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 340349f..f121a4d 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -57,15 +57,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - // const userInfo = await (window as any).CP2.getUserInfo() - // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - // return false - // } + const userInfo = await (window as any).CP2.getUserInfo() + if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + return false + } - // const { accountId, sessionId } = userInfo.data - // const response = await userApi.authsh({ accountId, sessionId }) - const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + const { accountId, sessionId } = userInfo.data + const response = await userApi.authsh({ accountId, sessionId }) + // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken }) @@ -81,14 +81,14 @@ async function handleShLogin(): Promise { return false } - if (response.data == -1) { - uni.showToast({ title: "您的设备需要信任验证", icon: "none" }) - await showVerifyDeviceImpModel(async () => { - await autoLogin() - uni.reLaunch({ url: window.location.href.split("#")[1] }) - }) - return false - } + // if (response.data == -1) { + // uni.showToast({ title: "您的设备需要信任验证", icon: "none" }) + // await showVerifyDeviceImpModel(async () => { + // await autoLogin() + // uni.reLaunch({ url: window.location.href.split("#")[1] }) + // }) + // return false + // } uni.showToast({ title: response.msg || "登录失败", icon: "none" }) return false From c2a765ebf7f49b6e9a765c9059eca3d6665aa826 Mon Sep 17 00:00:00 2001 From: weiwei Date: Mon, 19 May 2025 15:32:38 +0800 Subject: [PATCH 03/10] --- src/sheep/utils/request.ts | 151 ++++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 37 deletions(-) diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index f121a4d..88429e4 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -8,6 +8,28 @@ import showVerifyDeviceImpModel from "../components/verifyDeviceImpModel/verifyD const TOKEN_KEY = constant.storageConstant.TOKEN const USER_INFO_KEY = constant.storageConstant.USERINFO +const SKIP_AUTH_URLS = ["/thirdparty/thirdPartyOAth2", "/sys/auth/refresh-token", "/auth/oauth2/token"] + +// 是否正在刷新token +let isRefreshing = false +// 定义一个队列,用于存储失败的请求 +let failedQueue: any[] = [] +// 存储刷新token的Promise +let refreshTokenPromise: Promise | null = null + +// 处理队列中的请求 +const processQueue = (error: any, token: any = null) => { + failedQueue.forEach((prom) => { + if (error) { + prom.reject(error) + } else { + prom.resolve(token) + } + }) + if (!error) { + failedQueue = [] + } +} // 读取token并处理Authorization请求头 const getAuthHeader = (tokenStorage: any) => { @@ -57,15 +79,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - const userInfo = await (window as any).CP2.getUserInfo() - if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - return false - } + // const userInfo = await (window as any).CP2.getUserInfo() + // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + // return false + // } - const { accountId, sessionId } = userInfo.data - const response = await userApi.authsh({ accountId, sessionId }) - // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + // const { accountId, sessionId } = userInfo.data + // const response = await userApi.authsh({ accountId, sessionId }) + const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken }) @@ -81,14 +103,10 @@ async function handleShLogin(): Promise { return false } - // if (response.data == -1) { - // uni.showToast({ title: "您的设备需要信任验证", icon: "none" }) - // await showVerifyDeviceImpModel(async () => { - // await autoLogin() - // uni.reLaunch({ url: window.location.href.split("#")[1] }) - // }) - // return false - // } + // 如果是设备未验证,保存响应数据 + if (response.data === -1) { + uni.setStorageSync(TOKEN_KEY, { data: -1 }) + } uni.showToast({ title: response.msg || "登录失败", icon: "none" }) return false @@ -118,6 +136,56 @@ async function autoLogin(): Promise { } } +// 统一的token刷新函数 +async function refreshToken(): Promise { + if (refreshTokenPromise) { + return refreshTokenPromise + } + + if (!isRefreshing) { + isRefreshing = true + refreshTokenPromise = (async () => { + try { + const loginResult = await autoLogin() + if (loginResult) { + const newTokenStorage = uni.getStorageSync(TOKEN_KEY) + processQueue(null, newTokenStorage) + return newTokenStorage + } else { + // 检查是否需要设备验证 + const tokenStorage = uni.getStorageSync(TOKEN_KEY) + if (tokenStorage?.data === -1) { + // 显示设备验证弹窗 + await showVerifyDeviceImpModel(async () => { + // 验证完成后重新登录 + const newLoginResult = await autoLogin() + if (newLoginResult) { + const newTokenStorage = uni.getStorageSync(TOKEN_KEY) + processQueue(null, newTokenStorage) + return newTokenStorage + } else { + processQueue(new Error("登录失败"), null) + throw new Error("登录失败") + } + }) + } else { + processQueue(new Error("登录失败"), null) + throw new Error("登录失败") + } + } + } catch (error) { + processQueue(error, null) + throw error + } finally { + isRefreshing = false + refreshTokenPromise = null + } + })() + } + + return refreshTokenPromise +} + // token过期刷新检查 async function checkAndRefreshToken(tokenStorage: any) { const { accessToken } = tokenStorage @@ -125,13 +193,9 @@ async function checkAndRefreshToken(tokenStorage: any) { const expiresDate = new Date(accessToken.expiresAt).getTime() - // console.log("过期时间", expiresDate) - // console.log("现在时间", new Date().getTime()) - // console.log("现在时间大于过期时间吗", new Date().getTime() >= expiresDate) - // token已过期,尝试刷新 if (new Date().getTime() >= expiresDate) { - await autoLogin() + return await refreshToken() } } @@ -166,25 +230,25 @@ http.interceptors.request.use(async (config) => { config_header["TENANT-ID"] = "1" if (import.meta.env.VITE_IS_TOC === "true") config_header["CLIENT-TOC"] = "Y" - // 不需要设置认证头的接口路径 - const skipAuthUrls = ["/thirdparty/thirdPartyOAth2", "/sys/auth/refresh-token", "/auth/oauth2/token"] - // 判断是否需要设置认证头 - if (!skipAuthUrls.some((url) => config.url?.startsWith(url))) { + if (!SKIP_AUTH_URLS.some((url) => config.url?.startsWith(url))) { if (!isEmpty(tokenStorage)) { // token存在,token过期刷新检查 - await checkAndRefreshToken(tokenStorage) - - const authHeader = getAuthHeader(tokenStorage) - if (authHeader) config_header.Authorization = authHeader + const newTokenStorage = await checkAndRefreshToken(tokenStorage) + if (newTokenStorage) { + const authHeader = getAuthHeader(newTokenStorage) + if (authHeader) config_header.Authorization = authHeader + } else { + const authHeader = getAuthHeader(tokenStorage) + if (authHeader) config_header.Authorization = authHeader + } } else { - // token不存在,则发起登录 - await autoLogin() - - // 登录后重新获取token - const newTokenStorage = uni.getStorageSync(TOKEN_KEY) - const authHeader = getAuthHeader(newTokenStorage) - if (authHeader) config_header.Authorization = authHeader + // token不存在,使用统一的刷新函数 + const newTokenStorage = await refreshToken() + if (newTokenStorage) { + const authHeader = getAuthHeader(newTokenStorage) + if (authHeader) config_header.Authorization = authHeader + } } } @@ -219,7 +283,20 @@ http.interceptors.response.use( uni.showToast({ title: "登录已过期,请重新登录", icon: "none" }) router.jump("/pages/test/login") } else { - await autoLogin() + try { + // 使用统一的刷新函数 + const newTokenStorage = await refreshToken() + if (newTokenStorage) { + // 重新发起失败的请求 + const config = error.config + const authHeader = getAuthHeader(newTokenStorage) + if (authHeader && config.header) config.header.Authorization = authHeader + return http.request(config) + } + } catch (err) { + // 错误已经在refreshToken中处理 + return Promise.reject(err) + } } } From ab5998ce89209cbbc9672a6b609b56a7fee74be9 Mon Sep 17 00:00:00 2001 From: weiwei Date: Mon, 19 May 2025 15:37:59 +0800 Subject: [PATCH 04/10] --- src/sheep/utils/request.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 88429e4..0cfeb93 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -79,15 +79,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - // const userInfo = await (window as any).CP2.getUserInfo() - // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - // return false - // } + const userInfo = await (window as any).CP2.getUserInfo() + if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + return false + } - // const { accountId, sessionId } = userInfo.data - // const response = await userApi.authsh({ accountId, sessionId }) - const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + const { accountId, sessionId } = userInfo.data + const response = await userApi.authsh({ accountId, sessionId }) + // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken }) @@ -104,7 +104,7 @@ async function handleShLogin(): Promise { } // 如果是设备未验证,保存响应数据 - if (response.data === -1) { + if (response.data == -1) { uni.setStorageSync(TOKEN_KEY, { data: -1 }) } From d2e7f4bf7a2f5f043b646d10cf401869130247ce Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 20 May 2025 10:55:41 +0800 Subject: [PATCH 05/10] =?UTF-8?q?request=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../verifyDeviceImpModel.ts | 4 ++-- src/sheep/utils/request.ts | 22 ++++++------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts index 82b0a70..043c552 100644 --- a/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts +++ b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts @@ -7,10 +7,10 @@ const showVerifyDeviceImpModel = (onClose: () => any = () => null) => { return new Promise((resolve, reject) => { if (VerifyDeviceImpModelInstance) return - const close = () => { + const close = async () => { render(null, document.body) VerifyDeviceImpModelInstance = false - onClose() + await onClose() } const vnode = h(VerifyDeviceImpModel, { diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 88429e4..4b63ab8 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -10,9 +10,8 @@ const TOKEN_KEY = constant.storageConstant.TOKEN const USER_INFO_KEY = constant.storageConstant.USERINFO const SKIP_AUTH_URLS = ["/thirdparty/thirdPartyOAth2", "/sys/auth/refresh-token", "/auth/oauth2/token"] -// 是否正在刷新token let isRefreshing = false -// 定义一个队列,用于存储失败的请求 +// 队列存储发送失败的请求 let failedQueue: any[] = [] // 存储刷新token的Promise let refreshTokenPromise: Promise | null = null @@ -42,7 +41,7 @@ const getAuthHeader = (tokenStorage: any) => { // 浙政钉登录 登录成功返回true,否则返回false async function handleZzdLogin(): Promise { try { - uni.showLoading({ title: "加载中...", mask: true }) + uni.showLoading({ title: "登录中...", mask: true }) const token = new URL(window.location.href).searchParams.get("uabaseToken") if (!token) { @@ -104,7 +103,7 @@ async function handleShLogin(): Promise { } // 如果是设备未验证,保存响应数据 - if (response.data === -1) { + if (response.data == -1) { uni.setStorageSync(TOKEN_KEY, { data: -1 }) } @@ -136,7 +135,7 @@ async function autoLogin(): Promise { } } -// 统一的token刷新函数 +// token刷新 async function refreshToken(): Promise { if (refreshTokenPromise) { return refreshTokenPromise @@ -154,7 +153,7 @@ async function refreshToken(): Promise { } else { // 检查是否需要设备验证 const tokenStorage = uni.getStorageSync(TOKEN_KEY) - if (tokenStorage?.data === -1) { + if (tokenStorage?.data == -1) { // 显示设备验证弹窗 await showVerifyDeviceImpModel(async () => { // 验证完成后重新登录 @@ -221,8 +220,6 @@ const http = new Request({ // 请求拦截器 http.interceptors.request.use(async (config) => { - // console.log("config", config) - const tokenStorage = uni.getStorageSync(TOKEN_KEY) const config_header: any = config.header || {} @@ -243,7 +240,7 @@ http.interceptors.request.use(async (config) => { if (authHeader) config_header.Authorization = authHeader } } else { - // token不存在,使用统一的刷新函数 + // token不存在,刷新token const newTokenStorage = await refreshToken() if (newTokenStorage) { const authHeader = getAuthHeader(newTokenStorage) @@ -258,8 +255,6 @@ http.interceptors.request.use(async (config) => { // 响应拦截器 http.interceptors.response.use( async (response) => { - // console.log("response", response) - // 账号密码登录响应结果特殊处理 if (response.config.url === "/auth/oauth2/token") { return Promise.resolve({ @@ -272,8 +267,6 @@ http.interceptors.response.use( return Promise.resolve(response.data) }, async (error) => { - // console.log("error", error) - // 处理 424 错误(token过期) if (error.statusCode === 424) { if (isDevEnv()) { @@ -284,7 +277,6 @@ http.interceptors.response.use( router.jump("/pages/test/login") } else { try { - // 使用统一的刷新函数 const newTokenStorage = await refreshToken() if (newTokenStorage) { // 重新发起失败的请求 @@ -294,7 +286,7 @@ http.interceptors.response.use( return http.request(config) } } catch (err) { - // 错误已经在refreshToken中处理 + // 错误已在refreshToken中处理 return Promise.reject(err) } } From 9b4614a5cc625c278a8beb3d06cfb6f09f0ccb72 Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 20 May 2025 17:05:13 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9app=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/App.vue b/src/App.vue index 572ef15..7614e6e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -153,9 +153,6 @@ export default { case "coopMerchant": uni.switchTab({ url: "/pages/tabbar/coopMerchant" }) break - case "thirdApp": - uni.navigateTo({ url: "/pages/thirdApp/thirdAppList" }) - break default: break } @@ -163,6 +160,10 @@ export default { // 诗画环境 const userRole = uni.getStorageSync("userRole") const launchParam = getLaunchParam() + if (launchParam == "thirdApp") { + uni.navigateTo({ url: "/pages/thirdApp/thirdAppList" }) + return + } if (launchParam) { switch (userRole) { case "merchant": @@ -206,6 +207,10 @@ export default { } else if (appInfo == "sh") { // 是诗画环境 const userRole = uni.getStorageSync("userRole") + if (launchParam == "thirdApp") { + uni.navigateTo({ url: "/pages/thirdApp/thirdApp" }) + return + } if (launchParam) { switch (userRole) { case "user": From c44b5b56d8cc09e8e44b0372919746a14c8a3022 Mon Sep 17 00:00:00 2001 From: weiwei Date: Wed, 21 May 2025 09:47:33 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=92=8C=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.json | 27 +- src/pages/integrated/feedback.vue | 151 +++++++++++ src/pages/integrated/feedback/index.vue | 337 ------------------------ src/pages/pay/scanPay.vue | 21 +- src/pages/tabbar/my.vue | 10 +- src/pages/{test => user}/login.vue | 0 src/pages/wallet/list.vue | 4 +- src/sheep/hooks/use-token.ts | 2 +- src/sheep/stores/index.ts | 5 - src/sheep/stores/pay.ts | 8 +- 10 files changed, 192 insertions(+), 373 deletions(-) create mode 100644 src/pages/integrated/feedback.vue delete mode 100644 src/pages/integrated/feedback/index.vue rename src/pages/{test => user}/login.vue (100%) diff --git a/src/pages.json b/src/pages.json index 856c20a..8d012d9 100644 --- a/src/pages.json +++ b/src/pages.json @@ -246,12 +246,19 @@ ] }, { - "root": "pages/test", + "root": "pages/user", "pages": [ { "path": "login", "style": { - "navigationBarTitleText": "", + "navigationBarTitleText": "密码登录", + "disableScroll": true + } + }, + { + "path": "userRole", + "style": { + "navigationBarTitleText": "用户身份", "disableScroll": true } } @@ -302,18 +309,6 @@ } ] }, - { - "root": "pages/user", - "pages": [ - { - "path": "userRole", - "style": { - "navigationBarTitleText": "用户身份", - "disableScroll": true - } - } - ] - }, { "root": "pages/pay", "pages": [ @@ -428,7 +423,7 @@ "root": "pages/integrated", "pages": [ { - "path": "feedback/index", + "path": "feedback", "style": { "navigationBarTitleText": "意见反馈" } @@ -438,7 +433,7 @@ ], "globalStyle": { "navigationBarTextStyle": "black", - "navigationBarTitleText": "浦江小程序", + "navigationBarTitleText": "浦江智慧后勤h5", "navigationBarBackgroundColor": "#1777FF", "backgroundColor": "#ecf4f9", "navigationStyle": "custom" diff --git a/src/pages/integrated/feedback.vue b/src/pages/integrated/feedback.vue new file mode 100644 index 0000000..7d0758d --- /dev/null +++ b/src/pages/integrated/feedback.vue @@ -0,0 +1,151 @@ + - - - - diff --git a/src/pages/pay/scanPay.vue b/src/pages/pay/scanPay.vue index 085cdba..781a58b 100644 --- a/src/pages/pay/scanPay.vue +++ b/src/pages/pay/scanPay.vue @@ -28,7 +28,7 @@ - 支付 + 支 付 @@ -38,15 +38,15 @@ - - - - diff --git a/src/pages/wallet/detail.vue b/src/pages/wallet/detail.vue index 14238af..234e88b 100644 --- a/src/pages/wallet/detail.vue +++ b/src/pages/wallet/detail.vue @@ -85,5 +85,3 @@ const doTab = (e: any) => { - - diff --git a/src/pages/tabbar/tabSearch.vue b/src/sheep/components/tabSearch.vue similarity index 100% rename from src/pages/tabbar/tabSearch.vue rename to src/sheep/components/tabSearch.vue diff --git a/src/sheep/constant/img-constant.ts b/src/sheep/constant/img-constant.ts deleted file mode 100644 index 2d52e58..0000000 --- a/src/sheep/constant/img-constant.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - logo: "/static/constant/logo.png" -} \ No newline at end of file diff --git a/src/sheep/constant/index.ts b/src/sheep/constant/index.ts index 949adc3..534ff66 100644 --- a/src/sheep/constant/index.ts +++ b/src/sheep/constant/index.ts @@ -1,5 +1,3 @@ -export { default as imgConstant } from "./img-constant"; +export { default as serviceEnum } from "./service-enum" -export { default as serviceEnum } from "./service-enum"; - -export { default as storageConstant } from "./storage-constant"; +export { default as storageConstant } from "./storage-constant" diff --git a/src/sheep/hooks/use-token.ts b/src/sheep/hooks/use-token.ts index 7af2191..d55b76b 100644 --- a/src/sheep/hooks/use-token.ts +++ b/src/sheep/hooks/use-token.ts @@ -1,6 +1,6 @@ import storageConstant from "../constant/storage-constant" import { jump } from "../router/index" -import isDevEnv from "../utils/isDevEnv" +import { isDevEnv } from "../utils/app" export const useToken = () => { const tokenKey = storageConstant.TOKEN diff --git a/src/sheep/utils/app.ts b/src/sheep/utils/app.ts new file mode 100644 index 0000000..3fd5d82 --- /dev/null +++ b/src/sheep/utils/app.ts @@ -0,0 +1,26 @@ +// app运行环境 +// export default () => import.meta.env.VITE_DEV_ENV === "dev" +export const isDevEnv = (): boolean => process.env.NODE_ENV === "development" + +// 获取启动参数 +export const getLaunchParam = (): "canteen" | "selfMerchant" | "coopMerchant" | "thirdApp" | null => { + return new URL(window.location.href).searchParams.get("launchParam") as "canteen" | "selfMerchant" | "coopMerchant" | "thirdApp" | null +} + +// 检测app信息判断运行环境 +export const getAppInfo = async (): Promise => { + try { + const res = await (window as any).CP2.getAppInfo() + // 浙政钉环境 + if (res.code === 0) { + console.log("环境:zzd") + return "zzd" + } else { + // 诗画环境 + console.log("环境:sh") + return "sh" + } + } catch (error) { + return "unknown" + } +} diff --git a/src/sheep/utils/file.ts b/src/sheep/utils/file.ts index ff8384e..12e7aa1 100644 --- a/src/sheep/utils/file.ts +++ b/src/sheep/utils/file.ts @@ -1,4 +1,4 @@ -import isDevEnv from "./isDevEnv" +import { isDevEnv } from "./app" export const filePath = (path?: string) => { const imageBaseUrl = isDevEnv() ? import.meta.env.VITE_IMAGE_DEV_PATH : import.meta.env.VITE_APP_PROD_IMAGE diff --git a/src/sheep/utils/getAppInfo.ts b/src/sheep/utils/getAppInfo.ts deleted file mode 100644 index 9e23f22..0000000 --- a/src/sheep/utils/getAppInfo.ts +++ /dev/null @@ -1,17 +0,0 @@ -// 检测app信息判断运行环境 -export const getAppInfo = async (): Promise => { - try { - const res = await (window as any).CP2.getAppInfo() - // 浙政钉环境 - if (res.code === 0) { - console.log("环境:zzd") - return "zzd" - } else { - // 诗画环境 - console.log("环境:sh") - return "sh" - } - } catch (error) { - return "unknown" - } -} diff --git a/src/sheep/utils/getLaunchParam.ts b/src/sheep/utils/getLaunchParam.ts deleted file mode 100644 index ac5c39e..0000000 --- a/src/sheep/utils/getLaunchParam.ts +++ /dev/null @@ -1,6 +0,0 @@ -// 获取启动参数 -const getLaunchParam = (): "canteen" | "selfMerchant" | "coopMerchant" | "thirdApp" | null => { - return new URL(window.location.href).searchParams.get("launchParam") as "canteen" | "selfMerchant" | "coopMerchant" | "thirdApp" | null -} - -export default getLaunchParam diff --git a/src/sheep/utils/isDevEnv.ts b/src/sheep/utils/isDevEnv.ts deleted file mode 100644 index a081bbe..0000000 --- a/src/sheep/utils/isDevEnv.ts +++ /dev/null @@ -1,2 +0,0 @@ -// export default () => import.meta.env.VITE_DEV_ENV === "dev" -export default () => process.env.NODE_ENV === "development" diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index e1af5c6..7ea9932 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -2,8 +2,8 @@ import Request from "luch-request" import { router, constant } from "@@/index" import { userApi } from "../api" import { isEmpty } from "radash" -import isDevEnv from "./isDevEnv" -import { getAppInfo } from "@@/utils/getAppInfo" +import { isDevEnv } from "./app" +import { getAppInfo } from "@@/utils/app" import showVerifyDeviceImpModel from "../components/verifyDeviceImpModel/verifyDeviceImpModel" const TOKEN_KEY = constant.storageConstant.TOKEN @@ -78,15 +78,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - const userInfo = await (window as any).CP2.getUserInfo() - if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - return false - } + // const userInfo = await (window as any).CP2.getUserInfo() + // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + // return false + // } - const { accountId, sessionId } = userInfo.data - const response = await userApi.authsh({ accountId, sessionId }) - // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + // const { accountId, sessionId } = userInfo.data + // const response = await userApi.authsh({ accountId, sessionId }) + const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken }) @@ -274,7 +274,7 @@ http.interceptors.response.use( uni.removeStorageSync(TOKEN_KEY) uni.removeStorageSync(USER_INFO_KEY) uni.showToast({ title: "登录已过期,请重新登录", icon: "none" }) - router.jump("/pages/test/login") + router.jump("/pages/user/login") } else { try { const newTokenStorage = await refreshToken() From d0c73edb9c1038da6fa0d76095fe8325268c4fb2 Mon Sep 17 00:00:00 2001 From: weiwei Date: Wed, 21 May 2025 14:42:56 +0800 Subject: [PATCH 10/10] package --- package.json | 1 - pnpm-lock.yaml | 16 ---------------- src/pages/tabbar/my.vue | 1 - src/sheep/utils/request.ts | 16 ++++++++-------- 4 files changed, 8 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 465895b..61fac2f 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "@zebra-ui/swiper": "^2.2.8", "crypto-js": "^4.2.0", "dayjs": "^1.11.13", - "gdt-jsapi": "^1.9.51", "luch-request": "^3.1.1", "pinia": "^2.2.6", "qrcode": "^1.5.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a2a0a73..0b6dd02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,9 +65,6 @@ importers: dayjs: specifier: ^1.11.13 version: 1.11.13 - gdt-jsapi: - specifier: ^1.9.51 - version: 1.9.51 luch-request: specifier: ^3.1.1 version: 3.1.1 @@ -1304,9 +1301,6 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - '@remax/mini-types@0.1.0': - resolution: {integrity: sha512-bVDcbUrp6p0PZwfS0xGVQS6k9f8B35BtZaYt/W/IGKh7VALYQ+tS2KcytLRmIJ/Vmohaw5ikIRN89I+frPdh4g==} - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -2426,9 +2420,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gdt-jsapi@1.9.51: - resolution: {integrity: sha512-VN1iIK7kJU2g2oxY/n8waCREhWxcVwR8qHAE1keVnUJHI6mTdgTelICzq++niRRCaLqUVWC1pYvftEVgk4sq8A==} - generic-names@4.0.0: resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} @@ -6021,8 +6012,6 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@remax/mini-types@0.1.0': {} - '@rollup/pluginutils@5.1.4(rollup@4.34.2)': dependencies: '@types/estree': 1.0.6 @@ -7275,11 +7264,6 @@ snapshots: function-bind@1.1.2: {} - gdt-jsapi@1.9.51: - dependencies: - '@babel/runtime': 7.26.7 - '@remax/mini-types': 0.1.0 - generic-names@4.0.0: dependencies: loader-utils: 3.3.1 diff --git a/src/pages/tabbar/my.vue b/src/pages/tabbar/my.vue index b6eb743..c1f3d31 100644 --- a/src/pages/tabbar/my.vue +++ b/src/pages/tabbar/my.vue @@ -61,7 +61,6 @@ import { getAppInfo } from "@@/utils/app" import { hooks, router, constant } from "@@/index" import { userApi } from "@@/api" import { isDevEnv } from "@/sheep/utils/app" -// import dd from "gdt-jsapi" const state = reactive<{ wallet: any[] diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 7ea9932..8395988 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -78,15 +78,15 @@ async function handleShLogin(): Promise { try { uni.showLoading({ title: "登录中...", mask: true }) - // const userInfo = await (window as any).CP2.getUserInfo() - // if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { - // uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) - // return false - // } + const userInfo = await (window as any).CP2.getUserInfo() + if (userInfo.code == 0 || !userInfo.data.accountId || !userInfo.data.sessionId) { + uni.showToast({ title: "获取诗画用户信息失败", icon: "none" }) + return false + } - // const { accountId, sessionId } = userInfo.data - // const response = await userApi.authsh({ accountId, sessionId }) - const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 + const { accountId, sessionId } = userInfo.data + const response = await userApi.authsh({ accountId, sessionId }) + // const response = await userApi.authsh({ accountId: "67e790d6a95d5a7b507e53dd", sessionId: "68215b03a95d5a4899d20cb4" }) // 测试 if (response.code == 0) { uni.setStorageSync(TOKEN_KEY, { accessToken: response.data.accessToken })