requestList.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. changeValue(state,options){
  37. state['ListValue']=options;
  38. }
  39. },
  40. actions: {
  41. async reset({
  42. commit,
  43. state
  44. }) {
  45. return new Promise((resolve, reject) => {
  46. commit('increment', {
  47. ListValue: [],
  48. currentPage: 1,
  49. totalPage: 1,
  50. });
  51. resolve()
  52. })
  53. },
  54. async requestFunc({
  55. commit,
  56. state
  57. }, options) {
  58. var {
  59. ListValue,
  60. currentPage,
  61. totalPage
  62. } = state;
  63. if (currentPage > totalPage) return false;
  64. let axios = BEFOREINTERCEPT(options, currentPage, totalPage);
  65. var result = await request(axios);
  66. result = AFTERINTERCEPT(result, ListValue, currentPage, totalPage);
  67. commit('increment', result);
  68. }
  69. }
  70. }