Files
ks-app-employment-service/utils/request.js

175 lines
5.4 KiB
JavaScript
Raw Normal View History

2024-11-08 11:55:23 +08:00
import config from "@/config.js"
import useUserStore from '@/stores/useUserStore';
2025-03-28 15:19:42 +08:00
export function request({
2024-11-08 11:55:23 +08:00
url,
method = 'GET',
data = {},
load = false,
header = {}
2025-03-28 15:19:42 +08:00
} = {}) {
2024-11-08 11:55:23 +08:00
return new Promise((resolve, reject) => {
if (load) {
uni.showLoading({
title: '请稍候',
mask: true
});
}
let Authorization = ''
if (useUserStore().token) {
Authorization = `${useUserStore().userInfo.token}${useUserStore().token}`
}
uni.request({
url: config.baseUrl + url,
method,
data: data,
header: {
'Authorization': Authorization || '',
},
success: resData => {
// 响应拦截
if (resData.statusCode === 200) {
const {
code,
2025-03-28 15:19:42 +08:00
msg
2024-11-08 11:55:23 +08:00
} = resData.data
if (code === 200) {
2025-03-28 15:19:42 +08:00
resolve(resData.data)
2024-11-08 11:55:23 +08:00
return
}
uni.showToast({
2025-03-28 15:19:42 +08:00
title: msg,
2024-11-08 11:55:23 +08:00
icon: 'none'
})
}
if (resData.data?.code === 401 || resData.data?.code === 402) {
2025-03-28 15:19:42 +08:00
useUserStore().logOut()
uni.showToast({
title: '登录过期,请重新登录',
icon: 'none'
})
return
2024-11-08 11:55:23 +08:00
}
const err = new Error('请求出现异常,请联系工作人员')
err.error = resData
reject(err)
},
fail: err => reject(err),
complete() {
if (load) {
uni.hideLoading();
}
}
})
})
}
2025-03-28 15:19:42 +08:00
/**
* @param url String请求的地址默认none
* @param data Object请求的参数默认{}
* @param method String请求的方式默认GET
* @param loading Boolean是否需要loading 默认false
* @param header Objectheaders默认{}
* @returns promise
**/
export function createRequest(url, data = {}, method = 'GET', loading = false, headers = {}) {
if (loading) {
uni.showLoading({
title: '请稍后',
mask: true
})
}
let Authorization = ''
if (useUserStore().token) {
Authorization = `${useUserStore().token}`
}
const header = headers || {};
header["Authorization"] = encodeURIComponent(Authorization);
return new Promise((resolve, reject) => {
uni.request({
url: config.baseUrl + url,
method: method,
data: data,
header,
success: resData => {
// 响应拦截
if (resData.statusCode === 200) {
const {
code,
msg
} = resData.data
if (code === 200) {
resolve(resData.data)
return
}
2025-10-22 13:15:10 +08:00
// 处理业务错误
if (resData.data?.code === 401 || resData.data?.code === 402) {
useUserStore().logOut()
}
// 显示具体的错误信息
const errorMsg = msg || '请求出现异常,请联系工作人员'
2025-03-28 15:19:42 +08:00
uni.showToast({
2025-10-22 13:15:10 +08:00
title: errorMsg,
2025-03-28 15:19:42 +08:00
icon: 'none'
})
2025-10-22 13:15:10 +08:00
const err = new Error(errorMsg)
err.error = resData
reject(err)
return
2025-03-28 15:19:42 +08:00
}
2025-10-22 13:15:10 +08:00
// HTTP状态码不是200的情况
const err = new Error('网络请求失败,请检查网络连接')
2025-03-28 15:19:42 +08:00
err.error = resData
reject(err)
},
fail: (err) => {
reject(err)
},
complete: () => {
if (loading) {
uni.hideLoading();
}
}
});
})
}
export function uploadFile(tempFilePaths, loading = false) {
if (loading) {
uni.showLoading({
title: '请稍后',
mask: true
})
}
let Authorization = ''
if (useUserStore().token) {
Authorization = `${useUserStore().token}`
}
const header = {};
header["Authorization"] = encodeURIComponent(Authorization);
return new Promise((resolve, reject) => {
uni.uploadFile({
url: config.baseUrl + '/app/file/upload',
filePath: tempFilePaths,
name: 'file',
header,
success: (uploadFileRes) => {
if (uploadFileRes.statusCode === 200) {
return resolve(uploadFileRes.data)
}
},
fail: (err) => {
reject(err)
},
complete: () => {
if (loading) {
uni.hideLoading();
}
}
})
})
}