Vue element 分页使用
1、定义分页组件
< template>
< div style= "text-align:center;margin:20px" >
< el- pagination
background
layout= "total,prev, pager, next,jumper"
: total= "total" : page- size= "pageSize" @current- change= "changePage" >
< / el- pagination>
< / div>
< / template>
< script>
export default {
props : {
total : {
type : Number,
default : 100
} ,
pageSize : {
type : Number,
default : 10
}
} ,
methods : {
changePage ( page ) {
this . $emit ( 'changePage' , page) ;
}
}
}
< / script>
< style>
< / style>
2、调用者
< template>
< div class = "continer" >
< ! -- 展示列表 -- >
< div class = "list" >
< el- table : data= "employees" border style= "width: 100%" >
< ! -- < el- table- column type= "selection" width= "55" > < / el- table- column> -- >
< el- table- column prop= "employeeId" label= "编号" width= "180" > < / el- table- column>
< el- table- column prop= "employeeName" label= "姓名" width= "180" > < / el- table- column>
< el- table- column prop= "sex" label= "性别" > < / el- table- column>
< el- table- column prop= "role" label= "职位" > < / el- table- column>
< el- table- column prop= "phone" label= "电话" > < / el- table- column>
< el- table- column prop= "idNo" label= "身份证" > < / el- table- column>
< el- table- column prop= "isAdminCn" label= "是否为管理员" > < / el- table- column>
< el- table- column prop= "isLeave" label= "是否离职" > < / el- table- column>
< el- table- column label= "操作" >
< template slot- scope= "scope" >
< el- button size= "mini" @click= "handleEdit(scope.$index, scope.row)" > 编辑< / el- button>
< el- button size= "mini" type= "danger" @click= "handleDelete(scope.$index, scope.row)" > 删除< / el- button>
< / template>
< / el- table- column>
< / el- table>
< pagination : total= "total" : pageSize= "pageSize" @changePage= "changePage" > < / pagination>
< / div>
< / div>
< / template>
< script>
import { mapState } from 'vuex'
import Pagination from '../../components/pagination.vue' ;
export default {
components : { Pagination } ,
data ( ) {
return {
ruleForm : {
employeeName : '' ,
sex : 'M' ,
isAdmin : 'n' ,
isLeave : 'n' ,
phone : '' ,
idNo : '' ,
entryDate : '' ,
birthday : ''
} formLabelWidth: '80px' ,
total : 100 ,
pageSize : 10
}
} ,
created ( ) {
this . getPage ( 1 )
} ,
computed : {
... mapState ( {
employees : state => state. employee. employees
} )
} ,
methods : {
changePage ( num ) {
this . getPage ( num)
} ,
getPage ( num ) {
this . $store. dispatch ( 'employee/getPageList' , num) . then ( ( res ) => {
this . total = res. total
this . pageSize = res. size
} )
}
}
} ;
< / script>
< style>
3、store部分 src/store/modules/employee.js
import { getEmployeeList, getPageList, getEmployeeByIdOrName, getRoleList, insert } from '@/api/employee'
const state = {
employees : [ ] ,
page : {
pageNo : 1 ,
pageSize : 10
}
}
const mutations = {
setEmployees ( state, employees ) {
state. employees= employees
} ,
setPageNo ( state, pageNo ) {
state. page. pageNo = pageNo
}
}
const actions = {
getEmployeeList ( { commit } ) {
return new Promise ( ( resolve, reject ) => {
getEmployeeList ( ) . then ( response => {
const { data } = response
commit ( 'setEmployees' , data)
resolve ( data)
} ) . catch ( error => {
reject ( error)
} )
} )
} ,
getPageList ( { commit} , pageNo) {
commit ( 'setPageNo' , pageNo)
return new Promise ( ( resolve, reject ) => {
getPageList ( state. page) . then ( response => {
commit ( 'setEmployees' , response. data. records)
resolve ( response. data)
} ) . catch ( error => {
reject ( error)
} )
} )
}
}
export default {
namespaced : true ,
state,
mutations,
actions
}
4、api请求部分
import request from './request.js'
export function getEmployeeList ( ) {
return request ( {
url : '/employee/list' ,
method : 'get' ,
params : { }
} ) ;
}
export function getPageList ( data ) {
console. log ( "get api start" )
return request ( {
url : '/employee/getPageList' ,
method : 'post' ,
data
} ) ;
}