1
jhzh
2025-04-14 a5601fbcdc19292b32423bea88e67fc9ab4422a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<template>
  <v-scroll @load="load" :refresher-enabled="refresherEnabled" @ref="ref" ref="scroll">
    <slot name="box" v-bind="list">
    </slot>
  </v-scroll>
</template>
<script>
export default {
  name:'paging',
  props: {
    data: {
      default() {
        return {};
      },
      type: Object,
      require: false,
    },
    refresherEnabled:{
      default:true,
      required:false,
      type:Boolean
    },
    ajax: {
      require: true,
      type: Function,
    },
  },
  data() {
    return {
      list: [],
      page: 0,
    };
  },
  methods: {
    load(over) {
      this.page++;
      this.getList(over);
    },
    ref(over) {
      this.page = 1;
      this.getList(over);
    },
    getList(over) {
      let data = Object.assign(
        {
          page: this.page
        },
        this.data
      );
      this.ajax(data).then((res) => {
        let queryVo = res.data;
        if (queryVo.current_page == 1) this.list = [];
        this.list = [...this.list, ...queryVo.data];
        over &&
          over({
            finished: queryVo.data.length < queryVo.per_page,
          });
      });
    },
  },
  created() {},
};
</script>