newRequest.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. import store from '../store'
  2. let service = {
  3. baseURL: store.state.baseURL, // 请求头
  4. header: {
  5. 'Content-Type': "application/x-www-form-urlencoded"
  6. },
  7. // 请求拦截器
  8. interceptors: {
  9. // 安装请求前拦截
  10. request: function(success, iserror) {
  11. service.request.success = success;
  12. service.request.error = iserror;
  13. },
  14. // 安装请求完成后拦截
  15. response: function(success, iserror) {
  16. service.response.success = success;
  17. service.response.error = iserror;
  18. }
  19. },
  20. // 请求前拦截
  21. request: {
  22. // 回调成功执行方法
  23. success: function(e) {
  24. return e
  25. },
  26. // 回调失败
  27. error: function(e) {
  28. return e
  29. }
  30. },
  31. // 请求完成后拦截
  32. response: {
  33. // 回调成功执行方法
  34. success: function(e) {
  35. return e
  36. },
  37. // 回调失败
  38. error: function(e) {
  39. return e
  40. }
  41. },
  42. // 开始请求
  43. open: async function(data) {
  44. return await new Promise(function(resolve, reject) {
  45. let requestData = ''; //保存处理完成后请求数据
  46. let url = '' //保存链接地址
  47. //console.log(data);
  48. // 请求前数据处理
  49. requestData = service.request.success(data);
  50. // #ifdef H5
  51. if (process.env.NODE_ENV === 'development') {
  52. url = requestData.url;
  53. console.log('开发环境')
  54. } else {
  55. url = service.baseURL + requestData.url;
  56. console.log('生产环境')
  57. }
  58. // #endif
  59. // #ifndef H5
  60. url = service.baseURL + requestData.url;
  61. // #endif
  62. // 数据复制用于请求
  63. uni.request({
  64. url: url,
  65. method: requestData.method || 'GET',
  66. data: requestData.data,
  67. header: data.header || service.header,
  68. success: res => {
  69. if (res.statusCode == 200) {
  70. try {
  71. resolve(service.response.success(res));
  72. } catch (e) {
  73. service.response.error(e)
  74. }
  75. }
  76. },
  77. // 请求失败数据处理
  78. fail: (err) => {
  79. service.response.error(err)
  80. }
  81. });
  82. })
  83. },
  84. // 上传文件
  85. upFilse: async function(data) {
  86. console.log('--上传文件--upFilse', data)
  87. return await new Promise(function(resolve, reject) {
  88. let requestData = ''; //保存处理完成后请求数据
  89. try {
  90. // 请求前数据处理
  91. requestData = service.request.success(data);
  92. } catch (e) {
  93. // 请求报错拦截
  94. service.request.error(e);
  95. }
  96. let config = {
  97. // 上传图片的API
  98. upload_img_url: service.baseURL + requestData.url
  99. }
  100. let Uploader = {
  101. // 选择图片
  102. choose(num) {
  103. return new Promise((resolve, reject) => {
  104. uni.chooseImage({
  105. count: num,
  106. sourceType: ['album'],
  107. sizeType: ['compressed'],
  108. success(res) {
  109. // console.log(res);
  110. // 缓存文件路径
  111. resolve(res.tempFilePaths)
  112. },
  113. fail(err) {
  114. console.log(err)
  115. reject(err)
  116. }
  117. })
  118. })
  119. },
  120. // 上传图片
  121. upload_one(path) {
  122. return new Promise((resolve, reject) => {
  123. uni.showLoading({
  124. title: '上传中'
  125. })
  126. uni.uploadFile({
  127. url: config.upload_img_url, //仅为示例,非真实的接口地址
  128. filePath: path,
  129. name: 'file',
  130. header: {
  131. "Authori-zation": 'Bearer ' + uni.getStorageSync(
  132. 'token')
  133. },
  134. success: (uploadFileRes) => {
  135. if ("string" === typeof uploadFileRes.data) {
  136. resolve(JSON.parse(uploadFileRes.data).data)
  137. } else {
  138. resolve(uploadFileRes.data.data)
  139. }
  140. },
  141. complete() {
  142. uni.hideLoading()
  143. }
  144. });
  145. })
  146. },
  147. // 上传多个图片
  148. upload(path_arr) {
  149. let num = path_arr.length;
  150. return new Promise(async (resolve, reject) => {
  151. let img_urls = []
  152. for (let i = 0; i < num; i++) {
  153. let img_url = await this.upload_one(path_arr[i]);
  154. img_urls.push(img_url)
  155. };
  156. resolve(img_urls)
  157. })
  158. },
  159. // 触发上传图片事件
  160. choose_and_upload(num) {
  161. return new Promise(async (resolve, reject) => {
  162. // 选择图片
  163. let path_arr = await this.choose(num);
  164. // 上传图片
  165. await this.upload(path_arr).then((e) => {
  166. resolve(e);
  167. }).catch((e) => {
  168. reject(e)
  169. });
  170. })
  171. }
  172. };
  173. Uploader.choose_and_upload(1).then((e) => {
  174. resolve(e);
  175. }).catch((e) => {
  176. console.log(e);
  177. })
  178. })
  179. },
  180. // 上传文件
  181. upFilse1: async function(data) {
  182. console.log('--上传文件--upFilse1', data)
  183. return await new Promise(function(resolve, reject) {
  184. let requestData = ''; //保存处理完成后请求数据
  185. try {
  186. // 请求前数据处理
  187. requestData = service.request.success(data);
  188. console.log('请求前数据处理', data)
  189. } catch (e) {
  190. // 请求报错拦截
  191. service.request.error(e);
  192. }
  193. let config = {
  194. // 上传图片的API
  195. upload_img_url: service.baseURL + requestData.url
  196. }
  197. console.log('--config--', config)
  198. let Uploader = {
  199. // 选择图片
  200. choose(num) {
  201. console.log('选择图片num', num)
  202. return new Promise((resolve, reject) => {
  203. resolve(data.data.filename)
  204. // uni.chooseImage({
  205. // count: num,
  206. // sourceType:['album'],
  207. // sizeType:['compressed'],
  208. // success(res) {
  209. // // console.log(res);
  210. // // 缓存文件路径
  211. // resolve(res.tempFilePaths)
  212. // },
  213. // fail(err) {
  214. // console.log(err)
  215. // reject(err)
  216. // }
  217. // })
  218. })
  219. },
  220. // 上传图片
  221. upload_one(path) {
  222. return new Promise((resolve, reject) => {
  223. uni.showLoading({
  224. title: '上传中'
  225. })
  226. console.log('sc');
  227. uni.uploadFile({
  228. url: config.upload_img_url, //仅为示例,非真实的接口地址
  229. filePath: path,
  230. name: 'file',
  231. header: {
  232. "Authori-zation": 'Bearer ' + uni.getStorageSync(
  233. 'token')
  234. },
  235. success: (uploadFileRes) => {
  236. if ("string" === typeof uploadFileRes.data) {
  237. resolve(JSON.parse(uploadFileRes.data).data)
  238. } else {
  239. resolve(uploadFileRes.data.data)
  240. }
  241. },
  242. complete() {
  243. uni.hideLoading()
  244. },
  245. fail: function(e) {
  246. console.log(e);
  247. }
  248. });
  249. })
  250. },
  251. // 上传多个图片
  252. upload(path_arr) {
  253. let num = path_arr.length;
  254. return new Promise(async (resolve, reject) => {
  255. let img_urls = [];
  256. let img_url = await this.upload_one(path_arr);
  257. img_urls.push(img_url)
  258. resolve(img_urls)
  259. })
  260. },
  261. // 触发上传图片事件
  262. choose_and_upload(num) {
  263. return new Promise(async (resolve, reject) => {
  264. // 选择图片
  265. let path_arr = await this.choose(num);
  266. console.log(path_arr, 'kaishi')
  267. // 上传图片
  268. await this.upload(path_arr).then((e) => {
  269. resolve(e);
  270. }).catch((e) => {
  271. reject(e)
  272. });
  273. })
  274. }
  275. };
  276. Uploader.choose_and_upload(1).then((e) => {
  277. resolve(e);
  278. }).catch((e) => {
  279. console.log(e);
  280. })
  281. })
  282. },
  283. };
  284. export default service