request.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import axios from 'axios'
  2. import { ElMessage } from 'element-plus'
  3. import user from '~/store/user';
  4. const token = user.token
  5. const _request = axios.create({
  6. baseURL: window.GLOBAL_CONFIG.api,
  7. timeout: 3 * 1000,
  8. headers: {
  9. 'Content-Type': 'application/x-www-form-urlencoded',
  10. },
  11. method: 'post'
  12. })
  13. _request.interceptors.request.use(
  14. async (config) => {
  15. if (config.method?.toLocaleLowerCase() === 'get') {
  16. config.params = Object.assign({ token, }, config.params)
  17. } else {
  18. config.data = Object.assign({ token, client: 'web', api: 'json', issubmit: '1', site: 'tyyx' }, config.data)
  19. }
  20. return config
  21. },
  22. (error) => {
  23. console.error('request error: ', error)
  24. return Promise.reject(error)
  25. }
  26. )
  27. // response interceptor
  28. _request.interceptors.response.use(
  29. (response) => {
  30. response.data.code = response.data?.code?.toString()
  31. response.data.msg = response.data.msg.replaceAll(/<.*?>/g, ' ')
  32. const { code, msg } = response.data
  33. if (code !== '1') {
  34. ElMessage.error(msg)
  35. }
  36. return response.data
  37. },
  38. (error) => {
  39. console.error('response error: ' + error)
  40. return Promise.reject(error)
  41. }
  42. )
  43. export default _request
  44. const obj2form = (data) => {
  45. const formData = new FormData()
  46. Object.keys(data).forEach(key => formData.append(key, data[key]))
  47. return formData;
  48. }
  49. export const REQUEST = {
  50. empty: axios,
  51. default: _request,
  52. import: (c) => _request({
  53. timeout: 10 * 60 * 1000,
  54. transformRequest: [obj2form],
  55. ...c
  56. }),
  57. upload: (c) => _request({
  58. timeout: 3 * 60 * 1000,
  59. transformRequest: [obj2form],
  60. ...c
  61. }),
  62. download: (c) => _request({
  63. timeout: 1 * 60 * 1000,
  64. method: 'get',
  65. params: { token, limit: 10000, page: 1, api: 'xls', ...c }
  66. })
  67. }
  68. export function download(url, data) {
  69. const params = Object.assign({ token, limit: 10000, page: 1, api: 'xls' }, data)
  70. const paramsStr = Object.entries(params).map(([k, v]) => `${k}=${v}`).join('&')
  71. const el = document.createElement('a')
  72. const href = `${window.GLOBAL_CONFIG.api}${url}?${paramsStr}`
  73. el.setAttribute('href', href)
  74. el.click()
  75. }