Files
ks-app-employment-service/packageRc/utils/request.js
2025-11-03 12:30:37 +08:00

150 lines
3.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 导入当前目录下的auth.js使用更具体的路径以避免混淆
import { getToken } from './auth.js';
// 配置API基础URL
const baseURL = 'http://10.160.0.5:8907/'
// 是否显示重新登录
export let isRelogin = { show: false }
/**
* 封装uni.request
* @param {Object} options - 请求配置
*/
export function request(options) {
// 显示加载状态
if (options.load) {
uni.showLoading({
title: '请稍候',
mask: true
})
}
return new Promise((resolve, reject) => {
// 是否需要设置token
const isToken = options.headers && options.headers.isToken === false
// 添加固定的Authorization token
if (!isToken) {
options.headers = options.headers || {}
options.headers['Authorization'] = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJsNDRvNmhxckdOOW1XcG1pWlpJcXZ0UXJMdGsyTlFhQSIsInVzZXJJZCI6MX0.K5H-Rpof9oI1CCIEtheEQ96XGAxPWS7tzyjPbXwAXrQ'
}
// 确保URL是字符串类型
let url = options.url;
console.log("options.url:", url)
if (typeof url !== 'string') {
console.error('URL must be a string:', url);
url = String(url);
}
// 发起请求
uni.request({
url: baseURL + url,
method: options.method || 'GET',
data: options.data || {},
header: options.headers || {
'Content-Type': 'application/json;charset=utf-8'
},
timeout: options.timeout || 60000,
success: (res) => {
// 二进制数据直接返回
if (res.header['content-type'] && res.header['content-type'].includes('application/octet-stream')) {
resolve(res.data)
return
}
// 处理状态码
const code = res.data.code || 200
// 401错误处理
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true
uni.showModal({
title: '登录过期',
content: '登录状态已过期,是否重新登录?',
success: (res) => {
isRelogin.show = false
if (res.confirm) {
// 跳转到登录页面
uni.navigateTo({
url: '/packageRc/pages/login/login'
})
}
}
})
}
reject(new Error('登录过期,请重新登录'))
return
}
// 其他错误处理
if (code !== 200) {
uni.showToast({
title: res.data.msg || '请求失败',
icon: 'none'
})
reject(res.data)
return
}
resolve(res.data)
},
fail: (error) => {
uni.showToast({
title: '网络错误,请稍后重试',
icon: 'none'
})
reject(error)
},
complete: () => {
// 隐藏加载状态
if (options.load) {
uni.hideLoading()
}
}
})
})
}
// 封装GET请求
export function get(config) {
if (typeof config === 'string') {
// 兼容旧的调用方式: get(url, params, options)
const params = arguments[1] || {};
const options = arguments[2] || {};
return request({
url: config,
method: 'GET',
data: params,
...options
})
}
// 支持配置对象的调用方式: get({url, data, ...})
return request({
method: 'GET',
...config
})
}
// 封装POST请求
export function post(config) {
if (typeof config === 'string') {
// 兼容旧的调用方式: post(url, data, options)
const data = arguments[1] || {};
const options = arguments[2] || {};
return request({
url: config,
method: 'POST',
data,
...options
})
}
// 支持配置对象的调用方式: post({url, data, ...})
return request({
method: 'POST',
...config
})
}