diff --git a/src/pages/tabbar/my.vue b/src/pages/tabbar/my.vue
index 0d97c75..ed049d3 100644
--- a/src/pages/tabbar/my.vue
+++ b/src/pages/tabbar/my.vue
@@ -12,7 +12,7 @@
{{ state.userInfo?.sysUser?.name }}
-
+
ID {{ state.userInfo?.sysUser?.userId }}
@@ -202,7 +202,8 @@ onLoad(() => {
icon: "/static/icon/login.png",
router: "/pages/test/login",
})
- : checkAppInfo()
+ : ""
+ // checkAppInfo()
})
onShow(() => {
getStorageUserInfo()
diff --git a/src/pages/tabbar/order.vue b/src/pages/tabbar/order.vue
index 0bb0603..9661c42 100644
--- a/src/pages/tabbar/order.vue
+++ b/src/pages/tabbar/order.vue
@@ -145,8 +145,8 @@ const doRefund = (v: any) => {
- 退款
- 核销码
+
+
diff --git a/src/sheep/components/base/base-just-flot-nav/base-just-flot-nav.vue b/src/sheep/components/base/base-just-flot-nav/base-just-flot-nav.vue
index cad5ec8..4bd72be 100644
--- a/src/sheep/components/base/base-just-flot-nav/base-just-flot-nav.vue
+++ b/src/sheep/components/base/base-just-flot-nav/base-just-flot-nav.vue
@@ -1,77 +1,77 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/sheep/components/base/base-nav/base-nav.vue b/src/sheep/components/base/base-nav/base-nav.vue
index 31d2a28..44cc905 100644
--- a/src/sheep/components/base/base-nav/base-nav.vue
+++ b/src/sheep/components/base/base-nav/base-nav.vue
@@ -1,24 +1,24 @@
-
+
diff --git a/src/sheep/hooks/use-token.ts b/src/sheep/hooks/use-token.ts
index 03afddd..631ac04 100644
--- a/src/sheep/hooks/use-token.ts
+++ b/src/sheep/hooks/use-token.ts
@@ -28,23 +28,29 @@ export const useStaticCheckLogin = () => {
export const useCheckLogin = async (): Promise => {
const tokenKey = storageConstant.TOKEN
const tokenStorage = uni.getStorageSync(tokenKey)
- if (tokenStorage) return true
- uni.showModal({
- title: "提示",
- content: "您还未登录,请先登录",
- confirmColor: "#0094ff",
- cancelText: "取消",
- confirmText: "去登录",
- success: async (res) => {
- if (res.confirm) {
- isDevEnv() ? jump("/pages/test/login", {}, 3) : jump("/pages/tabbar/my", {}, 3)
+ if (isDevEnv()) {
+ if (tokenStorage) return true
+ uni.showModal({
+ title: "提示",
+ content: "您还未登录,请先登录",
+ confirmColor: "#0094ff",
+ cancelText: "取消",
+ confirmText: "去登录",
+ success: async (res) => {
+ if (res.confirm) {
+ jump("/pages/test/login", {}, 3)
+ return
+ }
+ if (!res.confirm) {
+ return
+ }
return
- }
- if (!res.confirm) {
- return
- }
- return
- },
- })
- return false
+ },
+ })
+ return false
+ } else {
+ if (tokenStorage) return true
+ uni.showToast({ title: "你还未登录", icon: "none" })
+ return false
+ }
}
diff --git a/src/sheep/utils/request.ts b/src/sheep/utils/request.ts
index ce9ed7e..853a5b7 100644
--- a/src/sheep/utils/request.ts
+++ b/src/sheep/utils/request.ts
@@ -55,8 +55,64 @@ const getAuthHeader = (tokenStorage: any) => {
return tokenStorage?.accessToken?.tokenValue ? `Bearer ${tokenStorage.accessToken.tokenValue}` : null
}
+// token过期刷新检查
+const checkAndRefreshToken = async (tokenStorage: any) => {
+ const { accessToken } = tokenStorage
+ if (!accessToken) return
+
+ const expiresDate = new Date(accessToken.expiresAt).getTime()
+ console.log("现在的时间大于过期时间吗:", new Date().getTime() >= expiresDate)
+
+ if (new Date().getTime() >= expiresDate) {
+ // try {
+ // const refreshData: any = await request({
+ // url: "/auth/oauth2/token",
+ // method: "POST",
+ // params: { grant_type: "refresh_token" },
+ // data: JSON.stringify({
+ // scope: "server",
+ // refresh_token: tokenStorage.refreshToken.tokenValue,
+ // }),
+ // header: {
+ // skipToken: true,
+ // Authorization: "Basic " + window.btoa(import.meta.env.VITE_OAUTH2_APP_CLIENT),
+ // "content-type": "application/x-www-form-urlencoded",
+ // },
+ // })
+
+ // if (refreshData.code === 0 && !isEmpty(refreshData.data)) {
+ // console.log("refreshData.data", refreshData.data)
+
+ // // 刷新成功,更新token并重试请求
+ // uni.setStorageSync(TOKEN_KEY, refreshData.data)
+ // }
+ // } catch (refreshError) {
+ // console.error("Token refresh failed:", refreshError)
+ // }
+ try {
+ uni.showLoading({ title: "加载中...", mask: true })
+ const params = new URL(window.location.href).searchParams
+ const token = params.get("uabaseToken")
+ if (token) {
+ const res = await userApi.auth(token)
+ if (res?.code === 0) {
+ uni.setStorageSync(TOKEN_KEY, res.data)
+ } else {
+ uni.removeStorageSync(TOKEN_KEY)
+ uni.removeStorageSync(USER_INFO_KEY)
+ uni.showToast({ title: res.msg, icon: "none" })
+ }
+ }
+ } catch (error) {
+ uni.showToast({ title: "错误", icon: "none" })
+ } finally {
+ uni.hideLoading()
+ }
+ }
+}
+
// 请求拦截器
-http.interceptors.request.use((config) => {
+http.interceptors.request.use(async (config) => {
const tokenStorage = uni.getStorageSync(TOKEN_KEY)
const config_header: any = config?.header || {}
@@ -66,14 +122,6 @@ http.interceptors.request.use((config) => {
config_header["CLIENT-TOC"] = "Y"
}
- // 设置认证头
- if (config.url !== "/sys/auth/refresh-token" && config.url !== "/auth/oauth2/token") {
- const authHeader = getAuthHeader(tokenStorage)
- if (authHeader) {
- config_header.Authorization = authHeader
- }
- }
-
// 处理 loading
if (config.custom?.showLoading) {
LoadingInstance.count++
@@ -86,90 +134,67 @@ http.interceptors.request.use((config) => {
}
}
+ // 设置认证头
+ if (
+ !config.url?.startsWith("/thirdparty/thirdPartyOAth2/zzdsso") &&
+ config.url !== "/sys/auth/refresh-token" &&
+ config.url !== "/auth/oauth2/token"
+ ) {
+ if (!isEmpty(tokenStorage)) {
+ // token过期刷新检查
+ checkAndRefreshToken(tokenStorage)
+
+ const authHeader = getAuthHeader(tokenStorage)
+ if (authHeader) {
+ config_header.Authorization = authHeader
+ }
+ } else {
+ // token不存在,则发起登录
+ const params = new URL(window.location.href).searchParams
+ const token = params.get("uabaseToken")
+
+ if (token) {
+ try {
+ uni.showLoading({ title: "加载中...", mask: true })
+ const res = await userApi.auth(token)
+ if (res?.code === 0) {
+ uni.setStorageSync(TOKEN_KEY, res.data)
+ const { data: userData } = await userApi.userInfo()
+ uni.setStorageSync(USER_INFO_KEY, userData)
+
+ const authHeader = getAuthHeader(tokenStorage)
+ if (authHeader) {
+ config_header.Authorization = authHeader
+ }
+ } else {
+ uni.showToast({ title: "获取浙政钉用户信息失败", icon: "none" })
+ }
+ } catch (error) {
+ uni.showToast({ title: "错误", icon: "none" })
+ } finally {
+ uni.hideLoading()
+ }
+ }
+ }
+ }
+
return config
}, Promise.reject)
-// 定义响应处理的辅助函数
-const responseHelpers = {
- // 处理错误响应
- handleErrorResponse(response: any) {
- if (!response.config?.custom?.showError) return
+// 处理错误响应
+const handleErrorResponse = (response: any) => {
+ if (!response.config?.custom?.showError) return
- switch (response.data.code) {
- case 401:
- this.handleUnauthorized()
- break
- default:
- uni.showToast({
- title: response.data.msg || "服务器开小差啦,请稍后再试~",
- icon: "none",
- mask: true,
- })
- }
- },
-
- // 处理未授权情况
- handleUnauthorized() {
- setTimeout(() => {
- uni.removeStorageSync(TOKEN_KEY)
- uni.removeStorageSync(USER_INFO_KEY)
- router.jump("/pages/tabbar/my", {}, 2)
- }, 500)
- },
-
- // 处理成功提示
- handleSuccessMessage(response: any) {
- const { data, config } = response
- if (data.code === 0 && data.message && config?.custom?.showSuccess) {
- uni.showToast({
- title: config.custom.successMsg || data.message,
- icon: "none",
- })
- }
- },
-
- // 处理登录过期
- handleLoginExpired() {
- uni.removeStorageSync(TOKEN_KEY)
- uni.removeStorageSync(USER_INFO_KEY)
- uni.showToast({ title: "登录已过期,请重新登录", icon: "none" })
- isDevEnv() ? router.jump("/pages/test/login") : router.jump("/pages/tabbar/my")
- },
-
- // 检查并刷新token
- checkAndRefreshToken(tokenStorage: any) {
- const { accessToken } = tokenStorage
- if (!accessToken) return
-
- const issuedDate = new Date(accessToken.issuedAt).getTime()
- console.log(new Date().getTime() - issuedDate)
-
- if (new Date().getTime() - issuedDate >= 1000 * 60 * 20) {
- // try {
- // const refreshData: any = await request({
- // url: "/auth/oauth2/token",
- // method: "POST",
- // params: { grant_type: "refresh_token" },
- // data: JSON.stringify({
- // scope: "server",
- // refresh_token: tokenStorage.refreshToken.tokenValue,
- // }),
- // header: {
- // skipToken: true,
- // Authorization: "Basic " + window.btoa(import.meta.env.VITE_OAUTH2_APP_CLIENT),
- // "content-type": "application/x-www-form-urlencoded",
- // },
- // })
-
- // if (refreshData.code === 0 && !isEmpty(refreshData.data)) {
- // console.log("refreshData.data", refreshData.data)
-
- // // 刷新成功,更新token并重试请求
- // uni.setStorageSync(TOKEN_KEY, refreshData.data)
- // }
- // } catch (refreshError) {
- // console.error("Token refresh failed:", refreshError)
- // }
+ switch (response.data.code) {
+ case 401:
+ // 处理未授权情况
+ setTimeout(() => {
+ uni.removeStorageSync(TOKEN_KEY)
+ uni.removeStorageSync(USER_INFO_KEY)
+ console.log("未授权")
+ }, 500)
+ break
+ case 424:
try {
const params = new URL(window.location.href).searchParams
const token = params.get("uabaseToken")
@@ -193,15 +218,30 @@ const responseHelpers = {
uni.hideLoading()
uni.showToast({ title: "错误", icon: "none" })
}
- }
- },
+ break
+ default:
+ uni.showToast({
+ title: response.data.msg || "服务器开小差啦,请稍后再试~",
+ icon: "none",
+ mask: true,
+ })
+ }
+}
+
+// 处理成功提示
+const handleSuccessMessage = (response: any) => {
+ const { data, config } = response
+ if (data.code === 0 && data.message && config?.custom?.showSuccess) {
+ uni.showToast({
+ title: config.custom.successMsg || data.message,
+ icon: "none",
+ })
+ }
}
// 响应拦截器
http.interceptors.response.use(
async (response) => {
- console.log("response", response)
-
// 关闭loading
if (response.config?.custom?.showLoading) {
closeLoading()
@@ -216,25 +256,14 @@ http.interceptors.response.use(
})
}
- // 错误处理
+ // 错误处理和错误提示
if (response.data.code !== 0) {
- responseHelpers.handleErrorResponse(response)
+ handleErrorResponse(response)
return Promise.resolve(response.data)
}
// 成功提示
- responseHelpers.handleSuccessMessage(response)
-
- // 登录过期处理
- if (response.data.code === 1) {
- responseHelpers.handleLoginExpired()
- }
-
- // Token 刷新检查
- const tokenStorage = uni.getStorageSync(TOKEN_KEY)
- if (!isEmpty(tokenStorage) && !response.config.url?.startsWith("/thirdparty/thirdPartyOAth2/zzdsso")) {
- await responseHelpers.checkAndRefreshToken(tokenStorage)
- }
+ handleSuccessMessage(response)
return Promise.resolve(response.data)
},
@@ -248,6 +277,32 @@ http.interceptors.response.use(
uni.showToast({ title: "登录已过期,请重新登录", icon: "none" })
router.jump("/pages/test/login")
return false
+ } else {
+ try {
+ uni.showLoading({ title: "加载中...", mask: true })
+ const params = new URL(window.location.href).searchParams
+ const token = params.get("uabaseToken")
+ if (token) {
+ userApi.auth(token).then((res) => {
+ if (res?.code === 0) {
+ uni.setStorageSync(TOKEN_KEY, res.data)
+ } else {
+ uni.removeStorageSync(TOKEN_KEY)
+ uni.removeStorageSync(USER_INFO_KEY)
+ // uni.showToast({ title: "登录已过期", icon: "none" })
+ return Promise.resolve({
+ code: 1,
+ data: "登录已过期",
+ msg: "登录已过期",
+ })
+ }
+ })
+ }
+ } catch (error) {
+ uni.showToast({ title: "错误", icon: "none" })
+ } finally {
+ uni.hideLoading()
+ }
}
}
@@ -259,7 +314,6 @@ http.interceptors.response.use(
mask: true,
})
}
-
return false
},
)