| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <template>
- <div class="table_page" v-show="totalPage > 0">
- <div class="fisrtPage" @click="jumpPage(1)" v-show="currentPage > 1">
- 首页
- </div>
- <div class="previousPage" @click="jumpPage(2)" v-show="currentPage > 1">
- 上一页
- </div>
- <div
- v-for="(item, index) in pageArr"
- :key="index"
- :class="{ current_page: currentPage == item }"
- @click="chagePage(item)"
- >
- {{ item }}
- </div>
- <div class="nextPage" @click="jumpPage(3)" v-show="currentPage < totalPage">
- 下一页
- </div>
- <div class="lastPage" @click="jumpPage(4)" v-show="currentPage < totalPage">
- 尾页
- </div>
- </div>
- </template>
- <script>
- export default {
- props: {
- // 共有多少页
- totalPage: {
- type: Number,
- default: 0,
- },
- // 当前在第几页
- currentPage: {
- type: Number,
- default: 1,
- },
- },
- computed: {
- // 生成表格的导航
- pageArr() {
- let arr = [];
- if (this.totalPage <= 10) {
- // 最多展示十个,总页面小于等于10,全部展示
- for (let i = 1; i <= this.totalPage; i++) {
- arr.push(i);
- }
- } else {
- // 点击的是1~5, 展示1~10
- if (this.currentPage - 5 <= 0) {
- for (let i = 1; i <= 10; i++) {
- arr.push(i);
- }
- } else {
- // 点击 大于5,同时后面的页面至少有五个五个,展示
- if (this.totalPage - this.currentPage > 4) {
- for (let i = this.currentPage - 4; i <= this.currentPage + 5; i++) {
- arr.push(i);
- }
- } else {
- // 点击 大于五,同时后面的页面数不足五个
- for (let i = this.totalPage - 9; i <= this.totalPage; i++) {
- arr.push(i);
- }
- }
- }
- }
- return arr;
- },
- },
- methods: {
- chagePage: function (page) {
- this.$emit("change_page", page);
- },
- jumpPage: function (item) {
- this.$emit("jump_page", item);
- },
- },
- };
- </script>
- <style scoped lang="less">
- .table_page {
- height: 30px;
- display: flex;
- border-left: 1px solid #ccc;
- div {
- width: 32px;
- background-color: #fff;
- line-height: 30px;
- border-bottom: 1px solid #ccc;
- border-right: 1px solid #ccc;
- text-align: center;
- &:hover {
- cursor: pointer;
- }
- }
- .current_page {
- color: #999;
- background-color: #f5f5f5;
- }
- .fisrtPage {
- width: 50px;
- }
- .previousPage {
- width: 60px;
- }
- .nextPage {
- width: 60px;
- }
- .lastPage {
- width: 50px;
- }
- }
- </style>
|