uniapp-app/utils/request.js
2026-02-02 17:44:10 +08:00

205 lines
5.4 KiB
JavaScript

/**
* @Method Description
* @Author: zjd@
* @Description: 数据请求整合 处理
* @BASE_URL server
* @param {a===Object||file} 传给后台参数Method 请求方法 url 所请求的接口路径
* @return Promise对象 所有数据信息
* @createTime: 2024-7-22 15:05:06
*/
import BASE_URL from "./config.js";
import version from '@/utils/version.js'
import client_type from "@/utils/client_type.js"
export const request = (url, data = {}, method = 'post', loading = false, contentType =
'application/json',extraHeader={},responseType=false) => {
if (loading) {
uni.showLoading({
title: '加载中',
mask: true
})
};
let token = '';
if (process.env.UNI_PLATFORM == "h5") {
if (window.location.href.indexOf('//.igandan.com') > -1) {
token = uni.getStorageSync('AUTH_TOKEN_App');
} else {
token = uni.getStorageSync('DEV_AUTH_TOKEN_App');
}
} else if(process.env.UNI_PLATFORM == "mp-weixin") {
const {
envVersion
} = uni.getAccountInfoSync().miniProgram;
if (envVersion == "release") {
token = uni.getStorageSync('AUTH_TOKEN_App');
} else {
token = uni.getStorageSync('DEV_AUTH_TOKEN_App');
}
}else{
token = uni.getStorageSync('AUTH_TOKEN_App');
}
let header = {
'content-type': contentType,
}
let defaultData={}
let freeList=['/manager/getSystemTimeStamp','/expertAPI/smsLogin','/login/mobile','/expertAPI/login','/expertAPI/index','/expertAPI/wechatLogin']
let postData={
...data
}
if(freeList.indexOf(url)!=-1){
if(freeList[4].indexOf(url)!=-1){
if(!token){
header['Authorization']='Bearer ' + ''
}else{
header['Authorization']='Bearer ' + token;
let userInfo= uni.getStorageSync('userInfo')
defaultData = {
version: version,
user_uuid:userInfo.uuid,
client_type:client_type,
timestamp:new Date().getTime()
}
postData={
...data,
...defaultData
}
}
}
}else{
if(token){
header['Authorization']='Bearer ' +token;
let userInfo= uni.getStorageSync('userInfo')
console.log(userInfo)
defaultData = {
version: version,
user_uuid:userInfo.uuid,
client_type:client_type,
timestamp:new Date().getTime()+""
}
postData={
...data,
...defaultData
}
}
}
console.log(postData);
return new Promise(function(e, n) {
let timestamp = Date.now();
uni.request({
data: postData,
url: url.indexOf('http') != -1 ? url : encodeURI(BASE_URL + url),
method: method,
sslVerify: false,
header:{...header,...extraHeader},
responseType:responseType?responseType:"text",
timeout: 100000,
success: async (res) => {
console.log(222222222)
console.log(res)
var Authorization_token = res.header.Authorization;
if (Authorization_token) {
uni.setStorageSync('AUTH_TOKEN_App', Authorization_token);
}
if (loading) {
uni.hideLoading();
};
if(url.indexOf('manager/getSystemTimeStamp')!=-1){
e(res)
}else if (res.data.code == 200 || res.data.code == 1 || res.data.code == "1" || res.data.code == "200" ){
e(res.data)
}else if (res.data.code == 401 || res.data.code == 403 || res.data.code ==
405 || res.data.code == 406 || res.data.code == 37006) {
uni.hideLoading();
if(process.env.UNI_PLATFORM == "mp-weixin"){
uni.redirectTo({url:'/pages_app/login/login'})
}
// else{
// uni.navigateTo({url:'/pages_app/login/login'})
// }
uni.sendNativeEvent('getNewToken', {
msg: 'getNewToken'
},ret => {
console.log('ret数据');
console.log(ret);
uni.setStorageSync('AUTH_TOKEN_App', ret);
let pages = getCurrentPages();
let len = pages.length
let curParam = pages[len - 1].options //获取当前页面参数
let param = []
for (let key in curParam) { //获取key=value键值对格式数组
param.push(key + '=' + curParam[key])
}
let _url = '' //除去第一个参数拼接后面参数
param.forEach((item, i) => {
if (i != 0) { //拼接&符号,由于第一组前拼接的是?所有第一组需要单独处理
_url += '&' + item
}
})
let redirectUrl = '/' + pages[len - 1].route + '?' + param[0] + _url //最终格式**/pages/index/index/?id=11&name='boyyang'&sex='man'**
console.log('redirectUrl');
console.log(redirectUrl);
uni.redirectTo({
url: redirectUrl
})
})
// uni.redirectTo({
// url: '/pages_app/login/login'
// });
} else if (res.data.code == 500) {
uni.showToast({
title: res.data.message,
icon: 'none',
})
n(res)
} else {
if(url.indexOf('addOutPatientA')!=-1 || url.indexOf('checkVersion')!=-1){
e(res.data)
}else if(url.indexOf('downloadGanDanFile')!=-1){
console.log(res)
e(res.data)
}else if(res.data.code==35002){
n(res)
uni.sendNativeEvent('goTabbarPage', {
msg: 'home'
},ret => {
console.log(ret);
})
plus.runtime.quit();
}else if(res.data.code==106){
e(res.data)
}else{
uni.showToast({
title: res.data.message,
icon: 'none'
});
n(res)
}
}
},
fail: function(err) {
console.log(444444444)
console.log(err)
"request:fail " === err.errMsg && msg("请求数据失败!"), n(err.data);
}
});
});
}