You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.0 KiB

2 months ago
import store from '@/store'
import define from './define'
const host = define.baseURL
const defaultOpt = {
load: true
}
// 示例
// async xxxx(code) {
// var res = await this.request({
// url: '/api/System/DictionaryData/All',
// method: 'GET',
// data,
// options: {
// load: false
// }
// })
// if (!res) return
// console.log(res)
// }
function request(config) {
config.options = Object.assign(defaultOpt, config.options)
const token = uni.getStorageSync('token') || ''
let header = {
"Content-Type": "application/json;charset=UTF-8",
"jnpf-origin": "app",
...config.header
}
if (token) header['Authorization'] = token
let url = config.url.indexOf('http') > -1 ? config.url : host + config.url
if (config.url === '/api/oauth/Login') {
url += '?client_id=admin&client_secret=123456&scope=all&grant_type=password'
}
if (config.options.load) {
uni.showLoading({
title: config.options.loadText || '正在加载'
})
}
return new Promise((resolve, reject) => {
uni.request({
url: url,
data: config.data || null,
method: config.method || 'GET',
header: header,
timeout: define.timeout,
success: res => {
if (config.options.load) {
uni.hideLoading()
}
if (res.statusCode === 200) {
if (res.data.code == 200) {
resolve(res.data)
} else {
ajaxError(res.data)
reject(res.data.msg)
}
} else {
ajaxError(res.data)
reject(res.errMsg)
}
},
fail: err => {
uni.showToast({
title: '连接服务器失败',
icon: 'none',
})
if (config.options.load) {
uni.hideLoading()
}
reject(err)
}
})
})
}
function ajaxError(data) {
uni.showToast({
title: data.msg || '请求出错,请重试',
icon: 'none',
complete() {
if (data.code === 600 || data.code === 601 || data.code === 602) {
setTimeout(() => {
store.dispatch('user/resetToken').then(() => {
uni.reLaunch({
url: '/pages/login/index'
})
})
}, 1500)
}
}
})
}
export default request