index.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import useUserStore from '@/store/modules/user'
  2. import { ApiInstance } from './type'
  3. import axios from 'axios'
  4. // import qs from 'qs'
  5. import Message from 'vue-m-message'
  6. import { ElMessage } from 'element-plus'
  7. // 导入 API 模块
  8. import appApi from './modules/app'
  9. import userApi from './modules/user'
  10. import roleApi from './modules/role'
  11. import institutionApi from './modules/institution'
  12. import areaApi from "./modules/area"
  13. import operationApi from './modules/operation.ts'
  14. import menuApi from './modules/menu.ts'
  15. import commonApi from "./modules/common.ts";
  16. import teamApi from "@/api/modules/team.ts";
  17. import advertisementApi from "@/api/modules/advertisement.ts"
  18. import representativeApi from "@/api/modules/representative.ts";
  19. import contentApi from "@/api/modules/content.ts";
  20. import agreementApi from "@/api/modules/agreement";
  21. import financeApi from '@/api/modules/finance.ts'
  22. import invoiceRecordApi from '@/api/modules/invoiceRecord.ts'
  23. import settlementApi from '@/api/modules/settlement.ts'
  24. import wechatApi from '@/api//modules/wechatService.ts'
  25. // import { useRouter } from 'vue-router'
  26. // const router = useRouter()
  27. import lotteryApi from '@/api/modules/lottery.ts';
  28. import insuranceApi from '@/api/modules/insurance.ts'
  29. import projectApi from '@/api/modules/project.ts'
  30. import additionalApi from '@/api/modules/additional.ts'
  31. import logApi from '@/api/modules/log.ts'
  32. import insurancePolicyApi from '@/api/modules/insurancePolicy.ts'
  33. import saleApi from '@/api/modules/sale.ts'
  34. const axiosInstance:ApiInstance = axios.create({
  35. baseURL: (import.meta.env.DEV && import.meta.env.VITE_OPEN_PROXY === 'true') ? '/proxy/' : import.meta.env.VITE_APP_API_BASEURL,
  36. timeout: 1000 * 60,
  37. responseType: 'json',
  38. })
  39. axiosInstance.interceptors.request.use(
  40. (request) => {
  41. // 全局拦截请求发送前提交的参数
  42. const userStore = useUserStore()
  43. // 设置请求头
  44. if (request.headers) {
  45. if (userStore.isLogin) {
  46. request.headers.Authorization = userStore.token
  47. }
  48. }
  49. // 是否将 POST 请求参数进行字符串化处理
  50. if (request.method === 'post') {
  51. // request.data = qs.stringify(request.data, {
  52. // arrayFormat: 'brackets',
  53. // })
  54. }
  55. return request
  56. },
  57. )
  58. axiosInstance.interceptors.response.use(
  59. (response) => {
  60. /**
  61. * 全局拦截请求发送后返回的数据,如果数据有报错则在这做全局的错误提示
  62. * 假设返回数据格式为:{ status: 1, error: '', data: '' }
  63. * 规则是当 status 为 1 时表示请求成功,为 0 时表示接口需要登录或者登录状态失效,需要重新登录
  64. * 请求出错时 error 会返回错误信息
  65. */
  66. if (response.data.code === 500) {
  67. if (response.data.msg !== '') {
  68. // 错误提示
  69. Message.error(response.data.msg, {
  70. zIndex: 2000,
  71. })
  72. return Promise.resolve(response.data)
  73. }
  74. }
  75. else {
  76. if (response.data.code === 401) {
  77. Message({
  78. message: '登录信息已过期,请重新登录!!!',
  79. type: 'error',
  80. duration: 2000,
  81. })
  82. useUserStore().logout()
  83. } else if(response.data.code === 400) {
  84. ElMessage({
  85. message: `${response.data.msg}!!!`,
  86. type: 'error',
  87. })
  88. }
  89. }
  90. return Promise.resolve(response.data)
  91. },
  92. (error) => {
  93. let message = error.message
  94. if (message === 'Network Error') {
  95. message = '后端网络故障'
  96. }
  97. else if (message.includes('timeout')) {
  98. message = '接口请求超时'
  99. }
  100. else if (message.includes('Request failed with status code')) {
  101. message = `接口${message.substr(message.length - 3)}异常`
  102. }
  103. Message.error(message, {
  104. zIndex: 2000,
  105. })
  106. return Promise.reject(error)
  107. },
  108. )
  109. // API 模块
  110. const api = {
  111. appApi: appApi(axiosInstance),
  112. userApi: userApi(axiosInstance),
  113. roleApi: roleApi(axiosInstance),
  114. institutionApi:institutionApi(axiosInstance),
  115. areaApi:areaApi(axiosInstance),
  116. operationApi: operationApi(axiosInstance),
  117. menuApi:menuApi(axiosInstance),
  118. commonApi: commonApi(axiosInstance),
  119. teamApi: teamApi(axiosInstance),
  120. representativeApi: representativeApi(axiosInstance),
  121. lotteryApi: lotteryApi(axiosInstance),
  122. contentApi:contentApi(axiosInstance),
  123. advertisementApi:advertisementApi(axiosInstance),
  124. agreementApi:agreementApi(axiosInstance),
  125. insuranceApi: insuranceApi(axiosInstance),
  126. projectApi: projectApi(axiosInstance),
  127. additionalApi: additionalApi(axiosInstance),
  128. logApi: logApi(axiosInstance),
  129. insurancePolicyApi: insurancePolicyApi(axiosInstance),
  130. financeApi: financeApi(axiosInstance),
  131. invoiceRecordApi: invoiceRecordApi(axiosInstance),
  132. settlementApi: settlementApi(axiosInstance),
  133. wechatApi:wechatApi(axiosInstance)
  134. saleApi: saleApi(axiosInstance),
  135. }
  136. export default api