Files
tuanwei-uniapp/utils/request.js
2026-07-20 11:56:02 +08:00

140 lines
3.2 KiB
JavaScript

export const API_BASE_URL = (() => {
if (process.env.NODE_ENV === 'development') {
return 'http://localhost:10051/api'
}
return 'https://tuanwei-api.gxwebsoft.com/api'
})()
export const TOKEN_STORAGE_KEYS = ['access_token', 'Authorization', 'uni_id_token', 'token']
export const DEFAULT_TENANT_ID = 10049
export const TOKEN_HEADER_NAME = 'Authorization'
export const LOGIN_PAGE_URL = '/pages/login/index'
export function getToken() {
for (let index = 0; index < TOKEN_STORAGE_KEYS.length; index += 1) {
const value = uni.getStorageSync(TOKEN_STORAGE_KEYS[index])
if (value) {
return value
}
}
return ''
}
export function hasToken() {
return !!getToken()
}
export function clearAuthStorage() {
TOKEN_STORAGE_KEYS.forEach((key) => {
try {
uni.removeStorageSync(key)
} catch (error) {}
})
try {
uni.removeStorageSync('user_info')
} catch (error) {}
}
export function setAuthInfo(loginResult) {
const result = loginResult || {}
const token = result.access_token || result.accessToken || result.token || ''
const user = result.user || {}
if (token) {
uni.setStorageSync('access_token', token)
uni.setStorageSync('Authorization', token)
uni.setStorageSync('token', token)
}
uni.setStorageSync('user_info', user)
return {
token,
user
}
}
export function getStoredUserInfo() {
return uni.getStorageSync('user_info') || {}
}
export function redirectToLogin(redirectUrl) {
const query = redirectUrl ? `?redirect=${encodeURIComponent(redirectUrl)}` : ''
uni.reLaunch({
url: `${LOGIN_PAGE_URL}${query}`
})
}
export function ensureLoggedIn(options = {}) {
const { redirectUrl } = options
if (hasToken()) {
return true
}
redirectToLogin(redirectUrl)
return false
}
export function request({ url, method = 'GET', data, header = {}, auth = true }) {
const token = getToken()
return new Promise((resolve, reject) => {
uni.request({
url: /^https?:\/\//.test(url) ? url : `${API_BASE_URL}${url}`,
method,
data,
header: {
'Content-Type': 'application/json',
...(auth && token ? { [TOKEN_HEADER_NAME]: token } : {}),
...header
},
success: (response) => {
const responseHeader = (response && response.header) || {}
const nextToken =
responseHeader[TOKEN_HEADER_NAME] ||
responseHeader[TOKEN_HEADER_NAME.toLowerCase()]
if (nextToken) {
uni.setStorageSync('access_token', nextToken)
uni.setStorageSync('Authorization', nextToken)
uni.setStorageSync('token', nextToken)
}
const body = (response && response.data) || {}
const code = Number(body.code)
if (code === 0 || code === 200) {
resolve(body.data !== undefined ? body.data : body)
return
}
if (code === 401) {
clearAuthStorage()
}
reject(new Error(body.message || '请求失败'))
},
fail: (error) => {
reject(new Error((error && error.errMsg) || '网络请求失败'))
}
})
})
}
export function get(url, data, options = {}) {
return request({
url,
method: 'GET',
data,
...options
})
}
export function post(url, data, options = {}) {
return request({
url,
method: 'POST',
data,
...options
})
}
export function put(url, data, options = {}) {
return request({
url,
method: 'PUT',
data,
...options
})
}