mirror of
https://github.com/fugary/simple-element-plus-template.git
synced 2025-12-31 03:17:49 +00:00
表格分页处理
This commit is contained in:
@@ -81,6 +81,10 @@ html, body, #app, .index-container {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no_flex {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* slide-fade动画
|
* slide-fade动画
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -64,6 +64,10 @@ const props = defineProps({
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null
|
default: null
|
||||||
},
|
},
|
||||||
|
pageAlign: {
|
||||||
|
type: String,
|
||||||
|
default: 'center'
|
||||||
|
},
|
||||||
pageAttrs: {
|
pageAttrs: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default () {
|
default () {
|
||||||
@@ -93,7 +97,16 @@ const calcColumns = computed(() => {
|
|||||||
return _columns
|
return _columns
|
||||||
})
|
})
|
||||||
|
|
||||||
defineEmits(['pageSizeChange', 'currentPageChange'])
|
const emit = defineEmits(['pageSizeChange', 'currentPageChange', 'update:page'])
|
||||||
|
|
||||||
|
const pageSizeChange = (pageSize) => {
|
||||||
|
emit('update:page', { ...props.page, pageSize })
|
||||||
|
emit('pageSizeChange', pageSize)
|
||||||
|
}
|
||||||
|
const currentPageChange = (pageNumber) => {
|
||||||
|
emit('update:page', { ...props.page, pageNumber })
|
||||||
|
emit('currentPageChange', pageNumber)
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -126,19 +139,20 @@ defineEmits(['pageSizeChange', 'currentPageChange'])
|
|||||||
</common-table-column>
|
</common-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-if="page && page.totalCount"
|
v-if="page &&page.pageCount&&page.pageCount>1"
|
||||||
class="common-pagination"
|
class="common-pagination"
|
||||||
v-bind="pageAttrs"
|
v-bind="pageAttrs"
|
||||||
:total="page.totalCount"
|
:total="page.totalCount"
|
||||||
:page-size="page.pageSize"
|
:page-size="page.pageSize"
|
||||||
:current-page="page.pageIndex"
|
:current-page="page.pageNumber"
|
||||||
@size-change="$emit('pageSizeChange', $event)"
|
@size-change="pageSizeChange($event)"
|
||||||
@current-change="$emit('currentPageChange', $event)"
|
@current-change="currentPageChange($event)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.common-pagination {
|
.common-pagination {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
|
justify-content: v-bind(pageAlign);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ export const PAGE_SIZE = 10
|
|||||||
* 默认分页数据
|
* 默认分页数据
|
||||||
*
|
*
|
||||||
* @param pageSize
|
* @param pageSize
|
||||||
* @return {{pageIndex: number, pageSize: number, totalCount: number, pageNumber:number}}
|
* @return {{pageCount: number, pageSize: number, totalCount: number, pageNumber:number}}
|
||||||
*/
|
*/
|
||||||
export const useDefaultPage = (pageSize = PAGE_SIZE) => {
|
export const useDefaultPage = (pageSize = PAGE_SIZE) => {
|
||||||
return {
|
return {
|
||||||
pageSize,
|
pageSize,
|
||||||
pageIndex: 1
|
pageNumber: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import { $httpPost } from '@/vendors/axios'
|
|||||||
* 加载用户数据
|
* 加载用户数据
|
||||||
* @return {{success:boolean, message:string,userList: [UserDto]}}
|
* @return {{success:boolean, message:string,userList: [UserDto]}}
|
||||||
*/
|
*/
|
||||||
export const loadUsersResult = async config => {
|
export const loadUsersResult = async (data, config) => {
|
||||||
const usersResult = await $httpPost('/api/users', config)
|
const usersResult = await $httpPost('/api/users', data, config)
|
||||||
console.info('==================', usersResult)
|
console.info('==================', usersResult)
|
||||||
return usersResult
|
return usersResult
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,17 @@ const page = ref(useDefaultPage())
|
|||||||
|
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
|
||||||
onMounted(async () => {
|
const loadUsers = async () => {
|
||||||
const usersResult = await loadUsersResult()
|
const usersResult = await loadUsersResult({ page: page.value })
|
||||||
console.info('=================', usersResult)
|
|
||||||
if (usersResult.success && usersResult.resultData) {
|
if (usersResult.success && usersResult.resultData) {
|
||||||
const resultData = usersResult.resultData
|
const resultData = usersResult.resultData
|
||||||
tableData.value = resultData.userList
|
tableData.value = resultData.userList
|
||||||
Object.assign(page.value, resultData.page)
|
Object.assign(page.value, resultData.page)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
loadUsers()
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,32 +70,34 @@ const buttons = ref([{
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<common-table
|
<el-container class="no_flex">
|
||||||
:data="tableData"
|
<common-table
|
||||||
:columns="columns"
|
v-model:page="page"
|
||||||
:buttons="buttons"
|
:data="tableData"
|
||||||
buttons-slot="buttons"
|
:columns="columns"
|
||||||
:page="page"
|
:buttons="buttons"
|
||||||
:buttons-column-attrs="{width:'300px'}"
|
buttons-slot="buttons"
|
||||||
@page-size-change="console.info"
|
:buttons-column-attrs="{width:'300px'}"
|
||||||
@current-page-change="console.info"
|
@page-size-change="loadUsers()"
|
||||||
>
|
@current-page-change="loadUsers()"
|
||||||
<template #gender="{item}">
|
>
|
||||||
<el-tag
|
<template #gender="{item}">
|
||||||
:type="item.gender === 'male' ? '' : 'success'"
|
<el-tag
|
||||||
>
|
:type="item.gender === 'male' ? '' : 'success'"
|
||||||
{{ item.gender }}
|
>
|
||||||
</el-tag>
|
{{ item.gender }}
|
||||||
</template>
|
</el-tag>
|
||||||
<template #buttons="{item}">
|
</template>
|
||||||
<el-button
|
<template #buttons="{item}">
|
||||||
size="small"
|
<el-button
|
||||||
@click="console.info(item)"
|
size="small"
|
||||||
>
|
@click="console.info(item)"
|
||||||
测试
|
>
|
||||||
</el-button>
|
测试
|
||||||
</template>
|
</el-button>
|
||||||
</common-table>
|
</template>
|
||||||
|
</common-table>
|
||||||
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
Reference in New Issue
Block a user