ajax.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // const basePath = 'http://47.110.94.59/gateway'
  2. // const basePath = 'https://dev.cloud-dahua.com'
  3. import utils from './utils.js'
  4. import config from '../config.js'
  5. const instance = axios.create({
  6. timeout: 10000
  7. })
  8. const urlHandle = function(method, url, param) {
  9. let queryStr = ''
  10. let data = param || {}
  11. if (method !== 'get') {
  12. return url
  13. }
  14. Reflect.ownKeys(data).forEach((one, index) => {
  15. let preStr = ''
  16. if (index) {
  17. preStr = '&'
  18. }
  19. queryStr = `${queryStr}${preStr}${one}=${data[one]}`
  20. })
  21. return queryStr ? `${url}?${queryStr}` : url
  22. }
  23. /**
  24. * @method resetAjax ()ajax方法的封装
  25. * @param param.method 请求的方法
  26. * @param param.url 请求的地址
  27. * @param param.data 请求的数据
  28. * @param param.onSuccess 成功时需要的回调
  29. * @param param.onError 错误时需要的回调
  30. * @param param.sTipStr 成功时的提示
  31. * @param param.eTipStr 错误时的提示
  32. * @param param.isSNoTip true说明成功的不需要弹提示,默认为false
  33. * @param param.isENoTip true说明不需要错误的提示信息,默认为false
  34. * @param param.isNoLock true代表不需要锁屏
  35. * @param param.isNoToken true代表不需要传token验证
  36. * @param param.automaticQuery true 代表get请求时自动拼接query
  37. * @param param.rootPath true 代表请求时不需要拼接本地IP和起的端口号,false代表需要,默认为false
  38. */
  39. export default (param) => {
  40. let path = param.rootPath ? param.url : config.base_url + param.url
  41. let url = param.automaticQuery ? urlHandle(param.method, path, param.data) : path
  42. instance.defaults.headers.common['Accept-Language'] = 'zh-CN'
  43. instance.defaults.headers.common['timeOffset'] = new Date().getTimezoneOffset() * 60 * 1000
  44. //防重防攻击 时间戳
  45. instance.defaults.headers.common['timestamp'] = +new Date()
  46. //防重防攻击 随机数
  47. instance.defaults.headers.common['nonce'] = `web-${utils.guid()}-${+new Date()}`
  48. let headers = param.headers || {}
  49. if ((sessionStorage.token || localStorage.token) && !param.isNoToken) {
  50. let token = sessionStorage.token ? sessionStorage.token : localStorage.token
  51. if(param.url.includes('access_token=')) {
  52. headers.Authorization = 'Basic ' + 'YnJvd3Nlcjpicm93c2Vy'
  53. } else {
  54. headers.Authorization = 'Bearer ' + token
  55. }
  56. }
  57. instance({
  58. method: param.method,
  59. url: url,
  60. data: param.data || {},
  61. params: param.data && param.data.params ? param.data.params : {},
  62. headers: headers,
  63. timeout: param.timeout || 10000
  64. }).then(function (res) {
  65. res = utils.decodeObj(res)
  66. if (res.data.success) {
  67. param.onSuccess && param.onSuccess(res)
  68. } else {
  69. console.log('ajaxError================')
  70. param.onError && param.onError(res)
  71. }
  72. }).catch(function (e) {
  73. param.onError && param.onError(e)
  74. console.log('ajaxError================' + url + e)
  75. })
  76. }