upload.uts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import {LogOut} from '@/store'
  2. import {globalConfig} from '@/config'
  3. import { getToken } from '@/utils/auth'
  4. import errorCode from '@/utils/errorCode'
  5. import { toast, showConfirm, tansParams } from '@/utils/common'
  6. const upload = (cfg:UTSJSONObject) :Promise<UTSJSONObject>=> {
  7. // 是否需要设置 token
  8. let isToken:boolean=true
  9. let header:UTSJSONObject={}
  10. let cfgMap:Map<string,any>=cfg.toMap() as Map<string,any>
  11. if(cfg.toMap().has("header")&&cfg.getJSON("header")!=null){
  12. header=cfg.getJSON("header") as UTSJSONObject
  13. if(header.toMap().has("isToken")&& header.getBoolean("isToken") == false){
  14. isToken=header.getBoolean("isToken") as boolean
  15. }
  16. }
  17. const token:string=getToken()
  18. if (token!=null&&token!="" && isToken) {
  19. header.set('Authorization','Bearer ' + token)
  20. }
  21. let url:string=""
  22. if(cfgMap.has("url")&&cfg.getString("url")!=""&&cfg.getString("url")!=null){
  23. url=cfg.getString("url") as string
  24. }
  25. if (cfgMap.has("params")&&cfg.getJSON("params")!=null) {
  26. let paramsJson:UTSJSONObject=cfg.getJSON("params") as UTSJSONObject
  27. url+= '?' + tansParams(paramsJson)
  28. url = url.slice(0, -1)
  29. }
  30. let baseUrl:string=globalConfig.baseUrl
  31. if(cfgMap.has("baseUrl")&&cfg.getString("baseUrl")!=""&&cfg.getString("baseUrl")!=null){
  32. baseUrl=cfg.getString("baseUrl") as string
  33. }
  34. let timeout:number = 10000
  35. if(cfgMap.has("timeout")&&cfg.getString("timeout")!=null){
  36. timeout=cfg.getNumber("timeout") as number
  37. }
  38. let filePath:string|null=null;
  39. if(cfgMap.has("filePath")&&cfg.getString("filePath")!=null&&cfg.getString("filePath")!=""){
  40. filePath=cfg.getString("filePath") as string
  41. }
  42. let name:string="file";
  43. if(cfgMap.has("name")&&cfg.getString("name")!=null&&cfg.getString("name")!=""){
  44. name=cfg.getString("name") as string
  45. }
  46. let formData:UTSJSONObject|null=null;
  47. if(cfgMap.has("formData")&&cfg.getJSON("formData")!=null){
  48. formData=cfg.getJSON("formData") as UTSJSONObject
  49. }
  50. return new Promise((resolve, reject) => {
  51. const options={
  52. timeout,
  53. url: baseUrl + url,
  54. filePath,
  55. name,
  56. header,
  57. formData,
  58. success: (res:UploadFileSuccess) => {
  59. let data:UTSJSONObject = JSON.parseObject(res.data) as UTSJSONObject
  60. const dataMap:Map<string,any>=data.toMap() as Map<string,any>
  61. let code:number=200
  62. if(dataMap.has("code")&&data.getNumber("code")!=null){
  63. code=data.getNumber("code") as number
  64. }
  65. let msg:string|null=errorCode[code] as string|null
  66. if(msg==""||msg==null){
  67. msg=data.getString("msg") as string|null
  68. }
  69. if(msg==""||msg==null){
  70. msg=errorCode['default'] as string
  71. }
  72. if (code === 200) {
  73. resolve(data)
  74. } else if (code == 401) {
  75. showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then((res0:ShowModalSuccess) => {
  76. if (res0.confirm) {
  77. LogOut().then(() => {
  78. uni.reLaunch({ url: '/pages/login/login' })
  79. })
  80. }
  81. })
  82. reject('无效的会话,或者会话已过期,请重新登录。')
  83. } else if (code === 500) {
  84. toast(msg)
  85. reject('500')
  86. } else if (code !== 200) {
  87. toast(msg)
  88. reject(code)
  89. }
  90. },
  91. fail: (error:UploadFileFail) => {
  92. let { errCode,errMsg } = error
  93. switch(errCode){
  94. case 5:
  95. errMsg='接口超时'
  96. break
  97. case 1000:
  98. errMsg='服务端系统错误'
  99. break
  100. case 100001:
  101. errMsg='json数据解析错误'
  102. break
  103. case 100002:
  104. errMsg="错误信息json解析失败"
  105. break
  106. case 600003:
  107. errMsg="网络中断"
  108. break
  109. case 600009:
  110. errMsg="URL格式不合法"
  111. break
  112. case 602001:
  113. errMsg="request系统错误"
  114. break
  115. }
  116. console.log(errMsg)
  117. toast(errMsg)
  118. reject(error)
  119. }
  120. } as UploadFileOptions
  121. uni.uploadFile(options)
  122. })
  123. }
  124. export default upload