requestList.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import request from "@/common/request/index.js";
  2. // 请求前拦截
  3. const BEFOREINTERCEPT = (axios, currentPage, totalPage) => {
  4. axios = {
  5. ...axios,
  6. data: {
  7. ...axios.data,
  8. page: currentPage
  9. }
  10. }
  11. return axios
  12. }
  13. //参数处理
  14. const AFTERINTERCEPT = (result, ListValue, currentPage, totalPage) => {
  15. if (result.code != 0) throw Error(result.msg);
  16. currentPage++;
  17. totalPage = result.totalPage;
  18. ListValue = ListValue.concat(result.data);
  19. return {
  20. ListValue,
  21. currentPage,
  22. totalPage
  23. }
  24. }
  25. export default {
  26. namespaced: true,
  27. state: {
  28. ListValue: [], //数据
  29. currentPage: 1, // 当前页
  30. totalPage: 1 //总页数
  31. },
  32. mutations: {
  33. increment(state, options) {
  34. Object.keys(options).forEach(item => state[item] = options[item])
  35. }
  36. },
  37. actions: {
  38. async reset({
  39. commit,
  40. state
  41. }) {
  42. return new Promise((resolve, reject) => {
  43. commit('increment', {
  44. ListValue: [],
  45. currentPage: 1,
  46. totalPage: 1,
  47. });
  48. resolve()
  49. })
  50. },
  51. async requestFunc({
  52. commit,
  53. state
  54. }, options) {
  55. var {
  56. ListValue,
  57. currentPage,
  58. totalPage
  59. } = state;
  60. if (currentPage > totalPage) return false;
  61. let axios = BEFOREINTERCEPT(options, currentPage, totalPage);
  62. var result = await request(axios);
  63. result = AFTERINTERCEPT(result, ListValue, currentPage, totalPage);
  64. commit('increment', result);
  65. }
  66. }
  67. }