cgc非遗
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.
 
 
 
 

81 lines
2.1 KiB

import Vue from 'vue';
import store from '@/store';
// 定义 API URL
const DEV_API_URL = 'https://cgc.js-dyyj.com';
const PROD_API_URL = 'https://cgc.js-dyyj.com';
const NEWAPIURL = process.env.NODE_ENV === 'development' ? DEV_API_URL : PROD_API_URL;
// 获取token
const getToken = () => {
const userInfoFromStorage = uni.getStorageSync('userInfo');
if (userInfoFromStorage) {
const userInfo = JSON.parse(userInfoFromStorage);
if (userInfo.token) {
return userInfo.token;
}
}
return store.state.user.userInfo.token;
};
// 定义错误处理函数 noForceLogin 不强制登录
const handleError = (res, reject, noForceLogin) => {
if (res.data?.code === 401) {
if (noForceLogin) {
reject(res)
return
}
store.commit('changeLoginPath');
}
setTimeout(() => {
uni.showToast({
title: res.data?.msg || res.msg,
icon: 'none'
});
reject(res);
}, 0);
};
// 挂载到 Vue 原型上
Vue.prototype.NEWAPIURL = NEWAPIURL;
// #ifdef H5
Vue.prototype.NEWAPIURL = '/api';
// #endif
Vue.prototype.Post = (params = {}, apiurl) => {
const token = getToken();
if (token) {
params.token = token;
}
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中'
});
uni.request({
method: params.method || 'GET',
url: Vue.prototype.NEWAPIURL + apiurl,
data: params,
header: {
'content-type': 'application/json',
'token': token || ''
},
success: (res) => {
console.log('success', res.data);
uni.hideLoading()
if (res.data.code === 200 || res.data.code === 1) {
resolve(res.data);
} else {
handleError(res, reject, params.noForceLogin);
}
},
fail: (err) => {
console.log('err', err);
uni.hideLoading()
handleError(err, reject, params.noForceLogin);
}
});
});
};
export default NEWAPIURL;