http.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. import config from './config'
  2. class Http {
  3. request(method, api, data, loading = false, toast = true, token) {
  4. let info = {
  5. url: config.domain + '/api/service/' + api,
  6. data,
  7. header: {
  8. 'content-type': 'application/json',
  9. 'token': token ? token : wx.getStorageSync('token')
  10. },
  11. method: method,
  12. timeout: 0
  13. }
  14. return new Promise((resolve, reject) => {
  15. if (loading) {
  16. wx.showLoading({
  17. title: '加载中',
  18. mask: true,
  19. })
  20. }
  21. wx.request({
  22. ...info,
  23. success: (result) => {
  24. if (result.statusCode === 401) {
  25. wx.navigateTo({
  26. url: '/service/login/login',
  27. })
  28. reject(result)
  29. }
  30. if (result.data.code !== 1) {
  31. if (toast) {
  32. wx.showToast({
  33. title: (result && result.data && result.data.msg) ? result.data.msg : '请稍后重试',
  34. icon: 'none',
  35. duration: 2000
  36. })
  37. }else{
  38. reject(result)
  39. }
  40. }else{
  41. resolve(result.data)
  42. }
  43. },
  44. fail: (res) => {
  45. reject(res)
  46. },
  47. complete: (res) => {
  48. wx.hideLoading({
  49. noConflict: true
  50. })
  51. },
  52. })
  53. })
  54. }
  55. post(url, data, loading, toast, token) {
  56. return this.request('POST', url, data, loading, toast, token)
  57. }
  58. get(url, data, loading, toast, token) {
  59. return this.request('GET', url, data, loading, toast, token)
  60. }
  61. upload(file, data, loading = false, toast = true, token){
  62. return new Promise((resolve, reject) => {
  63. if (loading) {
  64. wx.showLoading({
  65. title: '加载中',
  66. mask: true,
  67. })
  68. }
  69. wx.uploadFile({
  70. url: config.domain +'/api/common/upload', //仅为示例,非真实的接口地址
  71. filePath: file,
  72. name: 'file',
  73. formData: {
  74. token: token ? token : wx.getStorageSync('token'),
  75. ...data
  76. },
  77. success: (result) => {
  78. result.data = JSON.parse(result.data)
  79. if (result.statusCode === 401) {
  80. wx.navigateTo({
  81. url: '/service/login/login',
  82. })
  83. reject(result)
  84. }
  85. if (result.data.code !== 1) {
  86. if (toast) {
  87. wx.showToast({
  88. title: (result && result.data && result.data.msg) ? result.data.msg : '请稍后重试',
  89. icon: 'none',
  90. duration: 2000
  91. })
  92. }
  93. reject(result)
  94. }
  95. resolve(result.data)
  96. },
  97. fail: (res) => {
  98. reject(res)
  99. },
  100. complete: (res) => {
  101. wx.hideLoading({
  102. noConflict: true
  103. })
  104. },
  105. })
  106. })
  107. }
  108. chooseImg(source,loading,toast,token,sizeType){
  109. return new Promise((resolve, reject)=>{
  110. wx.chooseMedia({
  111. count: 1,
  112. mediaType: ['image'],
  113. sourceType: source,
  114. sizeType: sizeType ? sizeType : ['compressed'],
  115. camera: 'back',
  116. success: (res)=> {
  117. this.upload(res.tempFiles[0].tempFilePath,{
  118. type: 'image'
  119. },loading,toast,token).then(res=>{
  120. resolve(res)
  121. }).catch(err => {
  122. reject(err)
  123. })
  124. },
  125. fail: (err)=>{
  126. reject(err)
  127. }
  128. })
  129. })
  130. }
  131. chooseLocation(lat = '',lng = ''){
  132. return new Promise((resolve, reject)=>{
  133. let params = {}
  134. if(lat){
  135. params = {
  136. latitude: lat,
  137. longitude: lng,
  138. }
  139. }
  140. wx.chooseLocation({
  141. ...params,
  142. success:(res)=>{
  143. let lat = res.latitude
  144. let lng = res.longitude
  145. let name = res.name
  146. this.post('user/getlocation', {
  147. lat: res.latitude,
  148. lng: res.longitude
  149. }).then(res => {
  150. let city = ''
  151. let province = res.data.regeocode.addressComponent.province
  152. if (res.data.regeocode.addressComponent.city === '[]' || res.data.regeocode.addressComponent.city.length === 0) {
  153. city = province
  154. } else {
  155. city = res.data.regeocode.addressComponent.city
  156. }
  157. let district = res.data.regeocode.addressComponent.district
  158. name = name || (res.data.regeocode.aois[0] && res.data.regeocode.aois[0].name) || res.data.regeocode.formatted_address
  159. let data = {
  160. city,
  161. province,
  162. district,
  163. name,
  164. lat,
  165. lng
  166. }
  167. resolve(data)
  168. }).catch(err => {
  169. reject(err)
  170. })
  171. },
  172. fail:(e)=>{
  173. let data = {
  174. province: '河南省',
  175. city: '郑州市',
  176. district: '中原区',
  177. name: '郑州市',
  178. lat: '34.74725',
  179. lng: '113.62493'
  180. }
  181. reject(data)
  182. }
  183. })
  184. })
  185. }
  186. }
  187. const http = new Http()
  188. export default http