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.
 
 
 
 
 

135 lines
3.1 KiB

import { getToken, clearToken } from './auth'
import store from '@/store'
const BASE_PATH = 'http://192.168.31.146:8082/api/app/forward'
// const BASE_PATH = 'https://mailbox.biutag.com/lan-api/api'
function get(options) {
options.method = 'GET';
return ajax(options.url, options)
}
function post(options) {
options.method = 'POST';
return ajax(options.url, options)
}
function put(options) {
options.method = 'PUT';
return ajax(options.url, options)
}
function del(options) {
options.method = 'DELETE';
return ajax(options.url, options)
}
function ajax(url, options) {
let body;
if (options?.params && Object.keys(options.params).length > 0) {
if (options.method === 'GET') {
options.query = options.params;
} else {
body = JSON.stringify(options.params);
}
}
if (options?.query) {
const queryParams = []
for (const key in options.query) {
queryParams.push(key + '=' + options.query[key])
}
url += (url.indexOf('?') > -1 ? '' : '?') + queryParams.join('&')
}
if (options?.body) {
if (options.body === 'string') {
body = options.body;
} else {
if (Object.keys(options.body).length > 0) {
body = JSON.stringify(options.body);
}
}
}
return new Promise((resolve, reject) => {
if (!store.state.requestUrl) {
uni.showToast({
title: '未找到资源',
icon: 'none',
duration: 3000
})
reject('未找到资源')
return
}
uni.request({
url: store.state.requestUrl,
method: "POST",
header: {
"Content-Type": "application/json",
messageId: generateUUID(),
appCredential: store.state.appCredential,
userCredential: store.state.userCredential
},
data: {
url,
method: options.method,
admin: getToken(),
body
},
success: function(response) {
if (response.statusCode !== 200) {
uni.showToast({
title: 'response信息:' + JSON.stringify(response),
icon: 'none',
duration: 3000
});
return
}
const res = response.data;
if (res.code === 200) {
resolve(res.data)
} else {
let message = res.msg;
if (res.code === 401) {
message = '未授权登录'
clearToken()
}
uni.showToast({
title: message,
icon: 'none',
duration: 3000
});
reject(res)
}
},
fail: function(err) {
uni.showToast({
title: '网络异常,请检查网络',
icon: 'none',
duration: 3000
})
resolve()
}
})
})
}
function generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
}
const request = {
get,
post,
put,
del,
BASE_PATH
}
export default request;