Files
dtx_store/apis/index.js

170 lines
4.7 KiB
JavaScript

/**
* Web唐明明
* 匆匆数载恍如梦,岁月迢迢华发增。
* 碌碌无为枉半生,一朝惊醒万事空。
*/
import store from '@/store'
import router from '../router'
// 基础配置
const config = {
// apiUrl : 'https://api.gongli.vip/api/', // 正式环境
apiUrl: 'http://api.gl.shangkelian.cn/api/', // 测试
timeout: 60000
}
let loginHintState = false
// 网络请求
const request = (parameter, hideLoding = true) => {
// 检查url配置
if (parameter.url === 'undefined' || parameter.url === '') {
uni.showToast({
title: '请求地址不能为空',
icon: 'none'
})
return
}
// 注入header
config.header = {
'Accept': 'application/json',
'Authorization': store.getters.getToken || uni.getStorageSync('token')
}
// 加载提示
if (!hideLoding) uni.showLoading({
title: '加载中',
mask: true
});
// 请求实例
return new Promise((resolve, reject) => {
uni.request({
url: config.apiUrl + parameter.url,
timeout: config.timeout,
header: config.header || {},
data: parameter.data || {},
method: parameter.method || 'GET',
success: res => {
console.log(res);
if (res.header.Authorization) {
updateToken('token', res.header.Authorization)
}
if (res.statusCode === 200) {
uni.hideLoading()
const resolveData = res.data
if (resolveData.status_code === 200) {
resolve(resolveData.data)
return
}
if (resolveData.status_code === 401) {
loginHint()
return
}
reject(resolveData)
return
}
errToast(res.statusCode)
},
fail(err) {
uni.showToast({
title: '网络错误,请检查您设备网络状态',
icon: 'none'
})
}
})
})
}
// 文件上传
const uploading = (paths) => {
uni.showLoading({
title: '上传中',
mask: true
});
// 注入header
config.header = {
'Accept': 'application/json',
'Authorization': store.getters.getToken || ''
}
// 上传图片
return new Promise((resolve, reject) => {
uni.uploadFile({
url: config.apiUrl + 'storage/uploads',
files: paths,
header: config.header || {},
success: res => {
if (res.statusCode === 200) {
uni.hideLoading()
let updData = JSON.parse(res.data)
if (updData.status_code === 200) {
resolve(updData.data)
return
}
reject(updData)
return
}
errToast(res.statusCode)
}
})
})
}
// 处理一些http请求错误提示
const errToast = (code) => {
switch (code) {
case 404:
uni.showToast({
title: code + '接口不存在,请联系系统管理员',
icon: 'none'
})
break;
case 405:
uni.showToast({
title: code + '请检查接口请求方式错误',
icon: 'none'
})
break;
case 500:
uni.showToast({
title: code + '服务端错误,请检查服务器信息',
icon: 'none'
})
break;
}
}
// 更新token
const updateToken = (token) => {
store.commit('setToken', token)
// 清除退出登录标识
uni.removeStorageSync('isnew')
}
// 处理登录提示
const loginHint = () => {
if (loginHintState) return
if (!loginHintState) loginHintState = true
updateToken('')
uni.showModal({
title: '登录提示',
content: '您的登录信息已过期,请重新登录',
confirmColor: '#8b64fd',
showCancel: false,
success: res => {
loginHintState = false
if (res.confirm) {
uni.reLaunch({
url: '/pages/auth/auth'
})
}
}
})
}
export {
request,
uploading,
config
}