Mixin.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * 下了列表混入
  3. * @type {{data(): *, methods: {upCallback(*): void, downCallback(): void, loadList(*): void}}}
  4. */
  5. const ListMixin = {
  6. data() {
  7. return {
  8. downOption:{
  9. auto:false,//是否在初始化完毕之后自动执行下拉回调callback; 默认true
  10. },
  11. upOption:{
  12. page:{
  13. num : 0 ,
  14. size : 8 ,
  15. time : null
  16. }
  17. },
  18. queryParam:{
  19. pageNo:1,
  20. pageSize:8
  21. },
  22. list:[],
  23. pageNo:1,
  24. pageSize:8,
  25. }
  26. },
  27. methods: {
  28. /*下拉刷新的回调 */
  29. downCallback(){
  30. //加载列表数据
  31. this.loadList('down');
  32. },
  33. /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
  34. upCallback(page) {
  35. let param = this.queryParam
  36. param.pageNo= page.num,
  37. param.pageSize= page.size
  38. if(page.num == 1){
  39. this.list = [];
  40. }
  41. console.log("upCallback==param::",param)
  42. this.$http.get(this.url,{params:param}).then(res=>{
  43. console.log("upCallback请求返回res",res)
  44. if(res.data.success){
  45. let rec=res.data.result.records;
  46. let hasNext=true;
  47. if(!rec || rec.length<this.pageSize){
  48. console.log("加载完成!没有更多了")
  49. hasNext=false;
  50. }
  51. console.log("hasNext",hasNext)
  52. //方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据.
  53. this.mescroll.endSuccess(rec.length);
  54. //设置列表数据
  55. this.list=this.list.concat(rec);
  56. this.$forceUpdate();
  57. }else{
  58. this.mescroll.endErr();
  59. }
  60. }).catch(()=>{
  61. //加载失败, 结束
  62. this.mescroll.endErr();
  63. })
  64. },
  65. loadList(flag){
  66. let param = this.queryParam
  67. param.pageNo=this.pageNo,
  68. param.pageSize=this.pageSize
  69. console.log("请求参数",param)
  70. this.$http.get(this.url,{params:param}).then(res=>{
  71. if(res.data.success){
  72. console.log("请求返回res.data",res.data)
  73. let rec=res.data.result.records
  74. if(flag=='down'){
  75. //下拉刷新成功的回调,隐藏下拉刷新的状态
  76. this.mescroll.endSuccess();
  77. }
  78. //添加新数据
  79. this.list=rec;
  80. /* if(!rec || rec.length<this.pageSize){
  81. console.log("加载完成!")
  82. } */
  83. }else{
  84. console.log("请求返回else",res)
  85. this.mescroll.endErr();
  86. }
  87. }).catch((err)=>{
  88. console.log("请求返回err",err)
  89. //加载失败, 结束
  90. this.mescroll.endErr();
  91. })
  92. },
  93. }
  94. }
  95. export default ListMixin;