From 38a6f85b3040ea0d821e9b8226f38729bbefb149 Mon Sep 17 00:00:00 2001 From: weiwei Date: Fri, 16 May 2025 16:05:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../verifyDeviceImpModel.ts | 10 +++- .../verifyDeviceImpModel.vue | 2 +- src/sheep/utils/request.ts | 58 ++++++++----------- 3 files changed, 33 insertions(+), 37 deletions(-) rename src/{pages/user => sheep/components/verifyDeviceImpModel}/verifyDeviceImpModel.ts (55%) rename src/{pages/user => sheep/components/verifyDeviceImpModel}/verifyDeviceImpModel.vue (99%) diff --git a/src/pages/user/verifyDeviceImpModel.ts b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts similarity index 55% rename from src/pages/user/verifyDeviceImpModel.ts rename to src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts index 9b531f8..82b0a70 100644 --- a/src/pages/user/verifyDeviceImpModel.ts +++ b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.ts @@ -1,19 +1,25 @@ import { h, render } from "vue" -import ImpModel from "./verifyDeviceImpModel.vue" +import VerifyDeviceImpModel from "./verifyDeviceImpModel.vue" + +let VerifyDeviceImpModelInstance: boolean | null = null const showVerifyDeviceImpModel = (onClose: () => any = () => null) => { return new Promise((resolve, reject) => { + if (VerifyDeviceImpModelInstance) return + const close = () => { render(null, document.body) + VerifyDeviceImpModelInstance = false onClose() } - const vnode = h(ImpModel, { + const vnode = h(VerifyDeviceImpModel, { show: true, showCancel: false, close, }) render(vnode, document.body) + VerifyDeviceImpModelInstance = true }) } diff --git a/src/pages/user/verifyDeviceImpModel.vue b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.vue similarity index 99% rename from src/pages/user/verifyDeviceImpModel.vue rename to src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.vue index 0afbc48..d9370f0 100644 --- a/src/pages/user/verifyDeviceImpModel.vue +++ b/src/sheep/components/verifyDeviceImpModel/verifyDeviceImpModel.vue @@ -6,7 +6,7 @@ :showCancel="showCancel" title="您的设备需要验证" height="650rpx" - zIndex="900" + zIndex="999" cancelText="取消" confirmText="确认" @confirm="" diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts index 14a8021..340349f 100644 --- a/src/sheep/utils/request.ts +++ b/src/sheep/utils/request.ts @@ -4,6 +4,7 @@ import { userApi } from "../api" import { isEmpty } from "radash" import isDevEnv from "./isDevEnv" import { getAppInfo } from "@@/utils/getAppInfo" +import showVerifyDeviceImpModel from "../components/verifyDeviceImpModel/verifyDeviceImpModel" const TOKEN_KEY = constant.storageConstant.TOKEN const USER_INFO_KEY = constant.storageConstant.USERINFO @@ -56,51 +57,40 @@ 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 }) const { data: userData } = await userApi.userInfo() uni.setStorageSync(USER_INFO_KEY, userData) uni.showToast({ title: "登录成功", icon: "none" }) - - // if (response.data == -1) { - // uni.showToast({ title: "您的设备需要信任验证", icon: "none" }) - - // const pages = getCurrentPages() - // const currentPage = pages[pages.length - 1] - // const route = currentPage.route - // router.jump("/pages/user/deviceVerify", { redirect: route }) - - // return false - // } else { - // uni.removeStorageSync(TOKEN_KEY) - // uni.removeStorageSync(USER_INFO_KEY) - // if (response.msg == "token已失效") { - // uni.showToast({ title: "用户凭证已失效,请退出并重新进入智慧后勤应用", icon: "none", duration: 6000 }) - // } else { - // uni.showToast({ title: response.msg || "登录失败", icon: "none" }) - // } - // return false - // } - return true } else { uni.removeStorageSync(TOKEN_KEY) uni.removeStorageSync(USER_INFO_KEY) if (response.msg == "token已失效") { uni.showToast({ title: "用户凭证已失效,请退出并重新进入智慧后勤应用", icon: "none", duration: 6000 }) - } else { - uni.showToast({ title: response.msg || "登录失败", icon: "none" }) + 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 } } catch (error) { @@ -167,7 +157,7 @@ const http = new Request({ // 请求拦截器 http.interceptors.request.use(async (config) => { - console.log("config", config) + // console.log("config", config) const tokenStorage = uni.getStorageSync(TOKEN_KEY) const config_header: any = config.header || {} @@ -204,7 +194,7 @@ http.interceptors.request.use(async (config) => { // 响应拦截器 http.interceptors.response.use( async (response) => { - console.log("response", response) + // console.log("response", response) // 账号密码登录响应结果特殊处理 if (response.config.url === "/auth/oauth2/token") { @@ -218,7 +208,7 @@ http.interceptors.response.use( return Promise.resolve(response.data) }, async (error) => { - console.log("error", error) + // console.log("error", error) // 处理 424 错误(token过期) if (error.statusCode === 424) {