upload.uts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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 apiUrl:string=globalConfig.apiUrl
  31. if(cfgMap.has("apiUrl")&&cfg.getString("apiUrl")!=""&&cfg.getString("apiUrl")!=null){
  32. apiUrl=cfg.getString("apiUrl") 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. let seq:number=0;
  51. if(cfgMap.has("seq")&&cfg.getString("seq")!=null&&cfg.getString("seq")!=""){
  52. seq=cfg.getNumber("seq") as number
  53. }
  54. return new Promise((resolve, reject) => {
  55. const options={
  56. timeout,
  57. url: apiUrl + url,
  58. filePath,
  59. name,
  60. header,
  61. formData,
  62. success: (res:UploadFileSuccess) => {
  63. let data:UTSJSONObject = JSON.parseObject(res.data) as UTSJSONObject
  64. const dataMap:Map<string,any>=data.toMap() as Map<string,any>
  65. let code:number=200
  66. if(dataMap.has("code")&&data.getNumber("code")!=null){
  67. code=data.getNumber("code") as number
  68. }
  69. let msg:string|null=errorCode[code] as string|null
  70. if(msg==""||msg==null){
  71. msg=data.getString("msg") as string|null
  72. }
  73. if(msg==""||msg==null){
  74. msg=errorCode['default'] as string
  75. }
  76. if (code === 200) {
  77. resolve(data)
  78. } else if (code == 401) {
  79. showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then((res0:UniShowModalResult) => {
  80. if (res0.confirm) {
  81. LogOut().then(() => {
  82. uni.reLaunch({ url: '/pages/login/login' })
  83. })
  84. }
  85. })
  86. reject('无效的会话,或者会话已过期,请重新登录。')
  87. } else if (code === 500) {
  88. toast(msg)
  89. reject('500')
  90. } else if (code !== 200) {
  91. toast(msg)
  92. reject(code)
  93. }
  94. },
  95. fail: (error:UploadFileFail) => {
  96. let { errCode,errMsg } = error
  97. let seqInfo = '任务'+seq+''
  98. switch(errCode){
  99. case 5:
  100. errMsg= seqInfo+'接口超时'
  101. break
  102. case 1000:
  103. errMsg= seqInfo+'服务端系统错误'
  104. break
  105. case 100001:
  106. errMsg= seqInfo+'json数据解析错误'
  107. break
  108. case 100002:
  109. errMsg= seqInfo+"错误信息json解析失败"
  110. break
  111. case 600003:
  112. errMsg= seqInfo+"网络中断"
  113. break
  114. case 600009:
  115. errMsg= seqInfo+"URL格式不合法"
  116. break
  117. case 602001:
  118. errMsg= seqInfo+"request系统错误"
  119. break
  120. }
  121. console.log(errMsg)
  122. toast(errMsg)
  123. reject(error)
  124. }
  125. } as UploadFileOptions
  126. uni.uploadFile(options)
  127. })
  128. }
  129. export default upload