Files

144 lines
3.6 KiB
JavaScript
Raw Permalink 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.
import baseUrl from './BaseUrl.js'
export default function request(url, data = {}, method = 'GET') {
return new Promise((resolve, reject) => {
// uni.showLoading({
// title: '请求中...',
// mask: true
// })
uni.request({
url: baseUrl + url,
data: data,
method: method,
timeout: 15000,
header: {
Authorization: 'Bearer ' + (uni.getStorageSync('token') || ''),
clientid: 'butler',
'content-type': 'application/json'
},
success: res => {
// uni.hideLoading()
// HTTP 失败
if (res.statusCode !== 200) {
reject({
msg: `请求异常 ${res.statusCode}`,
code: res.statusCode
})
return
}
const resData = res.data || {}
// token 过期
if (resData.code === 401) {
uni.showToast({
title: '登录过期,请重新登录',
icon: 'none'
})
clearAccountStorage()
setTimeout(() => {
uni.reLaunch({
url: '/pageSubPack/loginSub/login?mode=pwd'
})
}, 1500)
reject({
msg: '登录过期',
code: 401
})
return
}
// 成功
if (resData.code === 200) {
resolve(resData)
}
// 业务失败
else {
reject({
msg: resData.msg || '请求失败',
code: resData.code,
data: resData
})
}
},
fail: err => {
// uni.hideLoading()
reject({
msg: '网络异常',
code: -1,
raw: err
})
}
})
})
}
export const get = (url, data) => request(url, data, 'GET')
export const post = (url, data) => request(url, data, 'POST')
export const put = (url, data) => request(url, data, 'PUT')
// export const deleteMethod = (url, data) => request(url, data, 'DELETE');
// export const putMethod = (url, data) => request(url, data, 'PUT');
// 上传
export const upload = (filePath, url, fileName) => {
return new Promise((resolve, reject) => {
const uploadTask = uni.uploadFile({
url: baseUrl + url,
filePath: filePath,
name: 'file',
fileName: fileName,
header: {
Authorization: 'Bearer ' + (uni.getStorageSync('token') || ''),
clientid: 'butler'
},
success: res => {
try {
const data = JSON.parse(res.data)
resolve(data.data || '')
} catch (e) {
resolve('')
}
},
fail: err => {
reject(err)
}
})
})
}
/**
* 过滤请求参数:移除值为 null / undefined / 空字符串 的字段
* 用于避免将空参数拼接到 URL 或请求体中
* @param {Object|null|undefined} params - 原始请求参数
* @returns {Object} 过滤后的干净参数对象,只保留有效值
*/
/**
* 清除账号相关缓存(退出登录/切换账号/登录过期时调用)
* 只清除账号绑定的 key,保留设备级和应用级 key(如 push_cid、hasShowGuide、rememberPwd 等)
*/
export function clearAccountStorage() {
const keys = [
'token',
'userId',
'userPermission',
'currentVillage',
'currentVillageId',
'home_banner_cache',
'tempChangePwdParams'
]
keys.forEach(key => uni.removeStorageSync(key))
}
export function filterParams(params) {
if (!params) return {}
return Object.keys(params).reduce((acc, key) => {
const value = params[key]
if (value !== null && value !== undefined && value !== '') {
acc[key] = value
}
return acc
}, {})
}