diff --git a/src/models/user.js b/src/models/user.js index 80a80e2..3ca2d4a 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -60,7 +60,7 @@ export default { }, *'delete' ({ payload }, { call, put }) { const data = yield call(remove, { id: payload }) - if (data && data.success) { + if (data.success) { yield put({ type: 'requery' }) } else { throw data @@ -69,7 +69,7 @@ export default { *create ({ payload }, { call, put }) { yield put({ type: 'hideModal' }) const data = yield call(create, payload) - if (data && data.success) { + if (data.success) { yield put({ type: 'requery' }) } else { throw data @@ -80,7 +80,7 @@ export default { const id = yield select(({ user }) => user.currentItem.id) const newUser = { ...payload, id } const data = yield call(update, newUser) - if (data && data.success) { + if (data.success) { yield put({ type: 'requery' }) } else { throw data diff --git a/src/models/user/detail.js b/src/models/user/detail.js index e69de29..559a7be 100644 --- a/src/models/user/detail.js +++ b/src/models/user/detail.js @@ -0,0 +1,51 @@ +import pathToRegexp from 'path-to-regexp' +import { query } from '../../services/user' + +export default { + + namespace: 'userDetail', + + state: { + data: {}, + }, + + subscriptions: { + setup ({ dispatch, history }) { + history.listen(() => { + const match = pathToRegexp('/user/:id').exec(location.pathname) + if (match) { + dispatch({ type: 'query', payload: { id: match[1] } }) + } + }) + }, + }, + + effects: { + *query ({ + payload, + }, { call, put }) { + const data = yield call(query, payload) + const { success, message, status, ...other } = data + if (success) { + yield put({ + type: 'querySuccess', + payload: { + data: other, + }, + }) + } else { + throw data + } + }, + }, + + reducers: { + querySuccess (state, { payload }) { + const { data } = payload + return { + ...state, + data, + } + }, + }, +} diff --git a/src/router.js b/src/router.js index 318af94..ac52a9a 100644 --- a/src/router.js +++ b/src/router.js @@ -37,6 +37,14 @@ const Routers = function ({ history, app }) { cb(null, require('./routes/user/')) }, 'user') }, + }, { + path: 'user/:id', + getComponent (nextState, cb) { + require.ensure([], require => { + registerModel(app, require('./models/user/detail')) + cb(null, require('./routes/user/detail/')) + }, 'user-detail') + }, }, { path: 'login', getComponent (nextState, cb) { diff --git a/src/routes/user/UserModal.js b/src/routes/user/UserModal.js index 2a67af9..42b18fc 100644 --- a/src/routes/user/UserModal.js +++ b/src/routes/user/UserModal.js @@ -105,7 +105,8 @@ const modal = ({ rules: [ { required: true, - message: '不能为空', + message: '请填写正确手机号', + pattern: /^1[34578]\d{9}$/, }, ], })()} @@ -116,7 +117,8 @@ const modal = ({ rules: [ { required: true, - message: '不能为空', + message: '请填写正确邮箱', + pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/, }, ], })()} diff --git a/src/routes/user/detail/index.js b/src/routes/user/detail/index.js index e69de29..501518c 100644 --- a/src/routes/user/detail/index.js +++ b/src/routes/user/detail/index.js @@ -0,0 +1,29 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { connect } from 'dva' +import styles from './index.less' + +const Detail = ({ userDetail }) => { + const { data } = userDetail + const content = [] + for (let key in data) { + if ({}.hasOwnProperty.call(data, key)) { + content.push(