123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import axios from 'axios'
- import type { AxiosRequestConfig } from 'axios'
- // import { ElMessage } from 'element-plus'
- import { showConfirmDialog, showSuccessToast, showFailToast } from 'vant';
- import user from '~/store/user'
- const token = user.token
- export interface Response {
- code: string
- data: any
- msg: string
- }
- const instance = axios.create({
- baseURL: window.GLOBAL_CONFIG.api,
- timeout: 6 * 1000,
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- },
- method: 'post',
- })
- instance.interceptors.request.use(
- async (config) => {
- if (config.method?.toLocaleLowerCase() === 'get') {
- config.params = Object.assign({ token }, config.params)
- }
- else {
- config.data = Object.assign(
- {
- token,
- client: 'web',
- site: 'dyaw',
- api: 'json',
- issubmit: (config.url?.endsWith('add') || config.url?.endsWith('edit')) ? '1' : undefined,
- },
- config.data)
- }
- // console.log('request config :>> ', config);
- return config
- },
- (error) => {
- console.error('request error: ', error)
- return Promise.reject(error)
- },
- )
- // response interceptor
- instance.interceptors.response.use(
- (response) => {
- response.data.code = response.data?.code?.toString()
- response.data.msg = response.data.msg.replace(/<.*?>/g, ' ')
- const { code, msg } = response.data
- if (code !== '1')
- // ElMessage.error(msg)
- showFailToast(msg)
- return response.data
- },
- (error) => {
- console.error(`response error: ${error}`)
- return Promise.reject(error)
- },
- )
- export default (config: AxiosRequestConfig): Promise<Response> => instance.request(config)
- const obj2form = (data: { [key: string]: any }) => {
- const formData = new FormData()
- Object.keys(data).forEach(key => formData.append(key, data[key]))
- return formData
- }
- export const REQUEST = {
- empty: axios,
- default: instance,
- import: (c: Partial<AxiosRequestConfig>) => instance({
- timeout: 10 * 60 * 1000,
- transformRequest: [obj2form],
- ...c,
- }),
- upload: (c: Partial<AxiosRequestConfig>) => instance({
- timeout: 3 * 60 * 1000,
- transformRequest: [obj2form],
- ...c,
- }),
- download: (c: Partial<AxiosRequestConfig>) => instance({
- timeout: 1 * 60 * 1000,
- method: 'get',
- params: { token, limit: 10000, page: 1, api: 'xls', ...c },
- }),
- }
- export function download(url: string, data?: object | null) {
- 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.GLOBAL_CONFIG.api}${url}?${paramsStr}`
- el.setAttribute('href', href)
- el.click()
- }
|