更新.gitignore

This commit is contained in:
2026-07-15 10:04:05 +08:00
parent a5d129cfa0
commit 0e4ed71318
28 changed files with 64 additions and 2191 deletions
-241
View File
@@ -1,241 +0,0 @@
/**
* API 请求封装
* baseURL 前缀: /app
* 统一 token 拦截器
*/
// 基础配置
const BASE_URL = '/app'
const TIMEOUT = 30000
/**
* 通用请求方法
* @param {string} url - 请求路径(会自动拼接 /app 前缀)
* @param {object} data - 请求数据
* @param {string} method - 请求方法 GET/POST/PUT/DELETE
* @param {object} header - 自定义请求头
* @returns {Promise}
*/
export function request(url, data = {}, method = 'GET', header = {}) {
return new Promise((resolve, reject) => {
// 获取 token
const token = uni.getStorageSync('token')
// 合并请求头
const headers = {
'Content-Type': 'application/json',
...header
}
// 添加 token
if (token) {
headers['Authorization'] = `Bearer ${token}`
}
// 完整 URL
const fullUrl = `${BASE_URL}${url}`
uni.request({
url: fullUrl,
data,
method,
header: headers,
timeout: TIMEOUT,
success: (res) => {
const { statusCode, data } = res
// HTTP 状态码判断
if (statusCode === 200) {
// 业务状态码判断(假设后端返回格式为 { code: 0, data, message }
if (data.code === 0 || data.code === 200) {
resolve(data)
} else if (data.code === 401) {
// token 过期或未授权
handleUnauthorized()
reject(new Error(data.message || '登录已过期,请重新登录'))
} else {
// 其他业务错误
uni.showToast({
title: data.message || '请求失败',
icon: 'none',
duration: 2000
})
reject(new Error(data.message || '请求失败'))
}
} else if (statusCode === 401) {
handleUnauthorized()
reject(new Error('登录已过期,请重新登录'))
} else if (statusCode === 403) {
reject(new Error('没有权限访问'))
} else if (statusCode === 404) {
reject(new Error('请求的资源不存在'))
} else if (statusCode >= 500) {
uni.showToast({
title: '服务器错误,请稍后重试',
icon: 'none'
})
reject(new Error('服务器错误'))
} else {
reject(new Error(`请求失败(${statusCode})`))
}
},
fail: (err) => {
console.error('Request failed:', err)
let errorMsg = '网络异常,请检查网络连接'
if (err.errMsg.includes('timeout')) {
errorMsg = '请求超时,请稍后重试'
} else if (err.errMsg.includes('abort')) {
errorMsg = '请求已取消'
}
uni.showToast({
title: errorMsg,
icon: 'none',
duration: 2000
})
reject(new Error(errorMsg))
}
})
})
}
/**
* 处理未授权(token 失效)
*/
function handleUnauthorized() {
// 清除本地存储
uni.removeStorageSync('token')
uni.removeStorageSync('userInfo')
// 提示用户
uni.showToast({
title: '登录已过期,请重新登录',
icon: 'none',
duration: 1500
})
// 跳转到登录页
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/login'
})
}, 1500)
}
/**
* GET 请求
*/
export function get(url, data = {}, header = {}) {
return request(url, data, 'GET', header)
}
/**
* POST 请求
*/
export function post(url, data = {}, header = {}) {
return request(url, data, 'POST', header)
}
/**
* PUT 请求
*/
export function put(url, data = {}, header = {}) {
return request(url, data, 'PUT', header)
}
/**
* DELETE 请求
*/
export function del(url, data = {}, header = {}) {
return request(url, data, 'DELETE', header)
}
/**
* 文件上传
* @param {string} url - 上传接口路径
* @param {string} filePath - 本地文件路径
* @param {object} formData - 额外表单数据
*/
export function upload(url, filePath, formData = {}) {
return new Promise((resolve, reject) => {
const token = uni.getStorageSync('token')
const header = {}
if (token) {
header['Authorization'] = `Bearer ${token}`
}
uni.uploadFile({
url: `${BASE_URL}${url}`,
filePath,
name: 'file',
formData,
header,
success: (res) => {
if (res.statusCode === 200) {
const data = JSON.parse(res.data)
if (data.code === 0 || data.code === 200) {
resolve(data)
} else {
reject(new Error(data.message || '上传失败'))
}
} else {
reject(new Error('上传失败'))
}
},
fail: (err) => {
console.error('Upload failed:', err)
reject(new Error('上传失败'))
}
})
})
}
// ==================== 具体业务 API ====================
/**
* 发送短信验证码
*/
export function sendSmsCode(data) {
return post('/sms/send', data)
}
/**
* 手机号验证码登录
*/
export function phoneCodeLogin(data) {
return post('/login/phone', data)
}
/**
* 账号密码登录
*/
export function passwordLogin(data) {
return post('/login/password', data)
}
/**
* 退出登录
*/
export function logout() {
return post('/logout').finally(() => {
uni.removeStorageSync('token')
uni.removeStorageSync('userInfo')
})
}
export default {
request,
get,
post,
put,
del,
upload,
sendSmsCode,
phoneCodeLogin,
passwordLogin,
logout
}