134 lines
3.9 KiB
TypeScript
Raw Normal View History

2025-04-22 10:22:33 +08:00
import {AUTH_KEY, BASE_URL, HOMEAGENT, RESULT_CODE_NOT_LOGIN} from "@/config";
import {useUserStore} from "@/store/modules/user";
import {getLogin} from "../permission";
import {request} from "@/utils/request/request";
import {showToast} from "@/utils/uniapp";
let count: boolean = false;
function _loginExpiredModal() {
const store = useUserStore();
store.logout()
uni.showModal({
title: '提示',
content: '登录过期,请重新登录',
showCancel: false,
success: function (res) {
if (res.confirm) {
count = false
getLogin()
} else if (res.cancel) {
count = false
uni.navigateBack({
delta: 1,
fail: (err) => {
console.log(err)
}
})
}
}
});
}
export const config = {
baseUrl: process.env.NODE_ENV == 'development' ? HOMEAGENT ? '/base' : BASE_URL : BASE_URL,
header: {}
}
export const interceptor = {
request: (config: UniNamespace.UploadFileOption | UniNamespace.RequestOptions) => {
const store = useUserStore();
if (store.getToken) {
config.header = {
[AUTH_KEY]: store.getToken
};
}
},
response: (response: any) => {
if (response.data && RESULT_CODE_NOT_LOGIN == response.data.resultCode) {
if (!count) {
_loginExpiredModal()
}
count = true;
return;
}
if (response.config.name === "files") {
return JSON.parse(response.data);
}
if (response.data) {
return response.data;
} else {
console.log('接口无返回值', response)
}
}
}
export function get<T = any>(url: string, data?: any, options?: UniNamespace.RequestOptions): Promise<Requests<T>> {
return new Promise((resolve, reject) => {
request(Object.assign({}, {
url,
data,
method: 'GET',
dataType: 'json',
responseType: 'text',
}, options)).then(res => {
if (res.resultCode == 1) {
resolve(res)
} else {
if (res.resultCode) {
if (res.resultCode != RESULT_CODE_NOT_LOGIN) {
showToast(res.message || '接口异常')
reject(res)
}
} else {
if (res.rows) {
resolve(res)
} else {
showToast(res.message || '接口异常')
reject(res)
}
}
}
})
})
}
export function post<T = any>(url: string, data?: any, options?: UniNamespace.RequestOptions): Promise<Requests<T>> {
return new Promise((resolve, reject) => {
request(Object.assign({}, {
url,
data,
method: 'POST',
dataType: 'json',
responseType: 'text',
}, options)).then(res => {
if (res.resultCode == 1) {
resolve(res)
} else {
if (res.resultCode) {
if (res.resultCode != RESULT_CODE_NOT_LOGIN) {
showToast(res.message || '接口异常')
reject(res)
}
} else {
if (res.rows) {
resolve(res)
} else {
showToast(res.message || '接口异常')
reject(res)
}
}
}
})
})
}
export function file(url: string, data: Blob, options?: UniNamespace.UploadFileOption) {
return request(Object.assign({}, {
url,
filePath: data,
name: 'files',
}, options), true)
}