123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import axios from 'axios'
- import qs from "qs";
- import {ElMessage} from 'element-plus'
- import { useFiltersStore } from '@/store/filter.js'
- const timeout = 10000
- const instance = axios.create({
- baseURL: apiUrl,
- // baseURL: 'http://localhost:8001/',
- timeout: timeout
- })
- export const get = async (url, data = {}) => {
- let res = await initRequestHeader('get', url, data);
- const filtersStore = useFiltersStore()
- data = res.data;
- return new Promise((resolve, reject) => {
- instance.get(res.url, { params: data, headers: res.headers }).then((response) => {
- if (response.data.state == 266) {
- // filtersStore.setLoginStatus(false);
- // filtersStore.setToken('');
- // filtersStore.setRefreshToken('')
- // // ElMessage.warning('请重新登录')
- // navigateTo('/login')
- } else {
- resolve(response.data)
- }
- }, err => {
- showMessage({
- message: err.message,
- type: 'error'
- })
- reject(err)
- })
- })
- }
- export const post = async (url, data = {}, timeout,type = 'urlencoded') => {
- let res = await initRequestHeader('post', url, data, type);
- return new Promise((resolve, reject) => {
- instance.post(res.url, res.data,{
- headers: res.headers,
- timeout:timeout
- } ).then((response) => {
- resolve(response.data)
- }, err => {
- console.log(err)
- if(err.code == 'ECONNABORTED'){
- showMessage({
- message: 'The request timed out. Please try again later',
- type: 'error'
- })
- } else {
- showMessage({
- message: err.message,
- type: 'error'
- })
- }
- reject(err)
- }).finally(()=>{
- resolve()
- })
- })
- }
- // const token = useCookie('token')
- /**
- * 初始化请求头和数据
- * @zjf-2020-12-25
- */
- const initRequestHeader = async (method, url, data = {}, type = 'urlencoded') => {
- let result = {};
- let headers = {};
- const filtersStore = useFiltersStore()
- //用户登录状态下,每次更新refresh_token58分钟之后需要更新access_token
- if (filtersStore.getToken) {
- let cur_time = new Date().getTime();
- if (cur_time - filtersStore.getTime * 1 > 58 * 60 * 1000) {
- let param = new FormData();
- param.append('grant_type', 'refresh_token');
- param.append('refresh_token', filtersStore.getRefreshToken);
- await instance.post('v3/frontLogin/oauth/token', param, {
- headers: {
- 'Content-Type': 'multipart/form-data',
- 'Authorization': 'Basic VVcxS2FsSnVTblppYmxFOTpVMjFHTWxsVlFrUmlNMEkxVlcxc2JtRklVa0ZWTW5oMldrYzVkUT09'
- }
- }).then((response) => {
- if (response.data.state == 200) {
- filtersStore.setToken(response.data.data.access_token);
- filtersStore.setTime(new Date().getTime().toString());//存储refresh_token更新时间
- }
- }, err => {
- console.log('更新access_token出错:', err);
- })
- }
- }
- if (method == 'post') {
- if (type == 'urlencoded') {
- headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
- data = qs.stringify(data);
- } else if (type == 'json') {
- headers = { 'Content-Type': 'application/json' };
- data = JSON.parse(JSON.stringify(data));
- } else if (type == 'form') {//form-data
- headers = { 'Content-Type': 'multipart/form-data' };
- let tmp_data = new FormData();
- Object.keys(data).forEach((item) => {
- tmp_data.append(item, data[item])
- });
- data = tmp_data;
- }
- }
- if (url.indexOf('frontLogin/oauth/token') > -1) {
- headers.Authorization = 'Basic VVcxS2FsSnVTblppYmxFOTpVMjFHTWxsVlFrUmlNMEkxVlcxc2JtRklVa0ZWTW5oMldrYzVkUT09';
- } else {
- let token = filtersStore.getToken;
- headers.Authorization = 'Bearer ' + token;
- }
- result = { url, data, headers };
- return result;
- }
|