alova.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { createAlova } from 'alova'
  2. import VueHook from 'alova/vue'
  3. import adapterFetch from 'alova/fetch'
  4. import { createDiscreteApi } from 'naive-ui'
  5. const { message } = createDiscreteApi(['message'])
  6. const { dialog } = createDiscreteApi(['dialog'])
  7. const statusCode = {
  8. "5005": "场景不存在",
  9. "5012": "数据不正常",
  10. "5014": "您没有该场景的编辑权限。",
  11. "5018": "zip 文件只能有一层目录或无目录",
  12. "5019": "必须有且仅有一个 obj 和 mtl 文件",
  13. "5020": "贴图需控制在 1.5MB 以内,obj 文件需要控制在 20MB 以内。",
  14. "5021": "场景密钥不正确",
  15. "5025": "数据包不存在,请先打成 zip 包",
  16. "5033": "计算中",
  17. "5034": "场景已封存",
  18. "5039": "系统繁忙,请稍后再试。",
  19. "5043": "打包 zip 失败",
  20. "5059": "该压缩包无可用 obj 或 mtl 文件",
  21. "5060": "obj 文件名应为 mesh.obj",
  22. "5062": "无可用 jpg文件",
  23. "5065": "上传失败。zip 压缩包内所有文件如贴图、obj、mtl 等需放在根目录同一个文件夹中。",
  24. "5066": "后台正在处理您的请求,耐心等待。",
  25. "5068": "json 文件丢失,请在原始文件中找到该文件并重新打包上传。",
  26. "5069": "json 文件错误,请在原始文件中找到该文件并重新打包上传。",
  27. "5070": "请上传正确的楼层文件,文件数量需与原始文件一致。",
  28. "7004": "热点数据不能为空",
  29. "7005": "查询不到热点数据",
  30. "7006": "目录不存在",
  31. "7007": "文件格式不正确",
  32. "7009": "球幕视频文件不存在",
  33. "7010": "相机或者相机详情不存在",
  34. "7012": "上传的文件名错误",
  35. "7013": "上传失败",
  36. "7015": "仅支持 zip 文件上传",
  37. "7016": "仅支持 mp4 格式文件",
  38. "7018": "压缩包内请勿包含文件夹",
  39. "-3": "缺少必要参数",
  40. "-4": "跨服务请求失败",
  41. "-5": "系统繁忙,请稍后再试",
  42. "none": "未知错误"
  43. }
  44. export * from './url'
  45. export const Alova = createAlova({
  46. baseURL: '',
  47. statesHook: VueHook,
  48. requestAdapter: adapterFetch(),
  49. timeout: 10000,
  50. cacheFor: null,
  51. cacheLogger: process.env.NODE_ENV === 'development',
  52. beforeRequest(method) {
  53. const token = localStorage.getItem('token')
  54. if (token) {
  55. method.config.headers.token = token
  56. }
  57. },
  58. responded: {
  59. onSuccess: async (response, method) => {
  60. const res = (response.json && (await response.json())) || response.body
  61. // 是否返回原生响应头 比如:需要获取响应头时使用该属性
  62. if (method.meta?.isReturnNativeResponse) {
  63. return res
  64. }
  65. // 请根据自身情况修改数据结构
  66. const { message, code, data } = res
  67. // 不进行任何处理,直接返回
  68. // 用于需要直接获取 code、result、 message 这些信息时开启
  69. if (method.meta?.isTransformResponse === false) {
  70. return res.data
  71. }
  72. // debugger
  73. // console.log(message, code, data)
  74. if (code === 0) {
  75. return data
  76. } else {
  77. dialog.warning({
  78. closable:false,
  79. closeOnEsc: false,
  80. maskClosable: false,
  81. content: statusCode[code] || message || '加载失败'
  82. })
  83. return false
  84. }
  85. }
  86. }
  87. })