From a47176a4e56f6d4a9e7340cf9e105c11ecfcc6f2 Mon Sep 17 00:00:00 2001 From: zuiidea Date: Tue, 27 Feb 2018 19:17:59 +0800 Subject: [PATCH] fix user table --- src/components/DataTable/AnimTableBody.js | 31 +++++---------------- src/models/common.js | 1 + src/models/user.js | 32 +++++++++++++++++----- src/routes/user/List.js | 33 ++++++++++++----------- 4 files changed, 50 insertions(+), 47 deletions(-) diff --git a/src/components/DataTable/AnimTableBody.js b/src/components/DataTable/AnimTableBody.js index c4b6e58..ea250e1 100644 --- a/src/components/DataTable/AnimTableBody.js +++ b/src/components/DataTable/AnimTableBody.js @@ -1,5 +1,4 @@ import React from 'react' -import PropTypes from 'prop-types' import { TweenOneGroup } from 'rc-tween-one' const enterAnim = [ @@ -40,28 +39,12 @@ const leaveAnim = [ }, ] -const AnimTableBody = ({ body, page = 1, current }) => { - if (current !== +page) { - return body - } - - return ( - - {body.props.children} - - ) -} - -AnimTableBody.propTypes = { - body: PropTypes.element, - page: PropTypes.any, - current: PropTypes.number.isRequired, -} +const AnimTableBody = props => () export default AnimTableBody diff --git a/src/models/common.js b/src/models/common.js index 3522d42..bcd9e46 100644 --- a/src/models/common.js +++ b/src/models/common.js @@ -21,6 +21,7 @@ const pageModel = modelExtend(model, { showTotal: total => `Total ${total} Items`, current: 1, total: 0, + pageSize: 10, }, }, diff --git a/src/models/user.js b/src/models/user.js index 6af67a2..52a9a6c 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -4,6 +4,7 @@ import queryString from 'query-string' import { config } from 'utils' import { create, remove, update } from 'services/user' import * as usersService from 'services/users' +import { routerRedux } from 'dva/router' import { pageModel } from './common' const { query } = usersService @@ -36,7 +37,11 @@ export default modelExtend(pageModel, { effects: { - * query ({ payload = {} }, { call, put }) { + * query ({ payload = {} }, { call, put, select }) { + const { pagination } = yield select(_ => _.user) + const { current, pageSize } = pagination + payload.page = payload.page || current + payload.pageSize = payload.pageSize || pageSize const data = yield call(query, payload) if (data) { yield put({ @@ -44,8 +49,8 @@ export default modelExtend(pageModel, { payload: { list: data.data, pagination: { - current: Number(payload.page) || 1, - pageSize: Number(payload.pageSize) || 10, + current: Number(payload.page), + pageSize: Number(payload.pageSize), total: data.total, }, }, @@ -55,20 +60,33 @@ export default modelExtend(pageModel, { * delete ({ payload }, { call, put, select }) { const data = yield call(remove, { id: payload }) - const { selectedRowKeys } = yield select(_ => _.user) + const { selectedRowKeys, list, pagination } = yield select(_ => _.user) if (data.success) { yield put({ type: 'updateState', payload: { selectedRowKeys: selectedRowKeys.filter(_ => _ !== payload) } }) - yield put({ type: 'query' }) + const page = (list.length === 1 && pagination.current > 1) ? pagination.current - 1 : pagination.current + yield put({ + type: 'query', + payload: { + page, + }, + }) } else { throw data } }, - * multiDelete ({ payload }, { call, put }) { + * multiDelete ({ payload }, { call, put, select }) { const data = yield call(usersService.remove, payload) + const { list, pagination } = yield select(_ => _.user) if (data.success) { yield put({ type: 'updateState', payload: { selectedRowKeys: [] } }) - yield put({ type: 'query' }) + const page = (list.length === payload.ids.length && pagination.current > 1) ? pagination.current - 1 : pagination.current + yield put({ + type: 'query', + payload: { + page, + }, + }) } else { throw data } diff --git a/src/routes/user/List.js b/src/routes/user/List.js index 4ec3dcc..468edb8 100644 --- a/src/routes/user/List.js +++ b/src/routes/user/List.js @@ -82,26 +82,27 @@ const List = ({ }, ] - const getBodyWrapperProps = { - page: location.query.page, - current: tableProps.pagination.current, + const AnimateBody = (props) => { + return } - const getBodyWrapper = (body) => { return isMotion ? : body } + const CommonBody = (props) => { + return + } return ( -
- record.id} - getBodyWrapper={getBodyWrapper} - /> - +
record.id} + components={{ + body: { wrapper: isMotion ? AnimateBody : CommonBody }, + }} + /> ) }