123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import axios from 'axios'
- import { showFailToast } from 'vant'
- import { userInfo } from '~/store/user'
- // const { token } = userInfo
- let token = userInfo?.token;
- const service = axios.create({
- baseURL: window.globalVariables.api,
- method: 'post',
- timeout: 60000,
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- },
- })
- service.interceptors.request.use(
- (config) => {
- // do something before request is sent
- config.data = Object.assign(
- {
- token,
- site: 'jnmf',
- client: 'web',
- api: 'json',
- // from: 'backend',
- issubmit: (config.url.endsWith('add') || config.url.endsWith('edit')) ? 1 : undefined,
- },
- config.data || {},
- )
- if (config.method === 'get') {
- config.params = Object.assign(
- {
- token,
- },
- config.params || {},
- )
- }
- // 短时间多个请求会冲突
- // console.groupCollapsed('axios: ' + config.url)
- // console.log('request', config.data)
- return config
- },
- (error) => {
- // do something with request error
- console.log(error) // for debug
- return Promise.reject(error)
- },
- )
- // response interceptor
- let isRelogin = false
- service.interceptors.response.use(
- (response, c) => {
- const { code, msg, data } = response.data
- if (code === '10001') {
- if (!isRelogin) {
- isRelogin = true
- showFailToast(msg)
- request({
- url: '/user/main/login',
- data: {
- token: data.token,
- },
- }).then((res) => {
- if (res.code == 1) {
- localStorage.setItem('userInfo', JSON.stringify(res.data))
- isRelogin = false
- // 视情况打开
- // location.reload()
- }
- })
- }
- }
- else if (code !== '1') {
- showFailToast(msg)
- }
- // console.log('response', response.data)
- // console.groupEnd()
- return response.data
- },
- (error) => {
- console.error(`err${error}`) // for debug
- return Promise.reject(error)
- },
- )
- // 上传
- export const request = axios.create({
- baseURL: window.globalVariables.api,
- method: 'post',
- timeout: 5000,
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- },
- })
- request.interceptors.response.use(
- (response) => {
- const { code, msg } = response.data
- if (code !== '1')
- showFailToast(msg)
- return response.data
- },
- (error) => {
- console.log(`err${error}`) // for debug
- return Promise.reject(error)
- },
- )
- const obj2form = (data) => {
- const formData = new FormData()
- Object.keys(data).forEach(key => formData.append(key, data[key]))
- return formData;
- }
- export const REQUEST = {
- empty: axios,
- default: service,
- import: (c) => service({
- timeout: 10 * 60 * 1000,
- transformRequest: [obj2form],
- ...c
- }),
- upload: (c) => service({
- timeout: 3 * 60 * 1000,
- transformRequest: [obj2form],
- ...c
- }),
- download: (c) => service({
- timeout: 1 * 60 * 1000,
- method: 'get',
- params: { token, limit: 10000, page: 1, api: 'xls', ...c }
- })
- }
- export function download(url, data, name) {
- const params = Object.assign({ token, limit: 10000, page: 1, api: 'xls' }, data)
- const paramsStr = Object.entries(params).map(([k, v]) => `${k}=${v}`).join('&')
- const el = document.createElement('a')
- const href = `${window.globalVariables.api}${url}?${paramsStr}`
- el.setAttribute('href', href)
- name && el.setAttribute('download', name)
- el.click()
- }
- export function download2(url, name) {
- const el = document.createElement('a')
- const href = `${window.globalVariables.api}/openapi/download.php?path=${url}&name=${name}`
- el.setAttribute('href', href)
- name && el.setAttribute('download', name)
- el.click()
- }
- export default (...args) => {
- if (!isRelogin)
- return service(...args)
- else
- return Promise.reject({})
- }
|