index.ts 5.3 KB

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