diff --git a/mock/app.js b/mock/app.js new file mode 100644 index 0000000..acf63ea --- /dev/null +++ b/mock/app.js @@ -0,0 +1,36 @@ +const qs = require('qs') +const Mock = require('mockjs') +const Watch = require("watchjs") + +let adminUsersData = {} +if (!global.adminUsersData) { + const data = !!localStorage.getItem("antdAdminUsersData") + ? JSON.parse(localStorage.getItem("antdAdminUsersData")) + : [ + { + username: 'guest', + password: 'guest' + } + ] + adminUsersData = data + global.adminUsersData = adminUsersData + if (!localStorage.getItem("antdAdminUsersData")) { + localStorage.setItem("antdAdminUsersData", JSON.stringify(adminUsersData)) + } +} else { + adminUsersData = global.adminUsersData +} + +Watch.watch(adminUsersData, function () { + localStorage.setItem("antdAdminUsersData", JSON.stringify(adminUsersData)) +}) + + +module.exports = { + 'POST /api/login' (req, res) { + console.log(req); + console.log(res); + console.log("858484"); + res.json({success: true}) + }, +} diff --git a/src/index.js b/src/index.js index 62bf7d3..0b358ac 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import dva from 'dva' const app = dva() // 2. Model +app.model(require('./models/app')) app.model(require('./models/users')) // 3. Router diff --git a/src/models/app.js b/src/models/app.js new file mode 100644 index 0000000..c50050e --- /dev/null +++ b/src/models/app.js @@ -0,0 +1,36 @@ +import {login} from '../services/app' +import {parse} from 'qs' + +export default { + namespace : 'app', + state : { + login: false, + loading: false, + loginButtonLoading: false + }, + effects : { + *login({ + payload + }, {call, put}) { + yield put({ type: 'showButtonLoading' }) + const data = yield call(login, parse(payload)) + if (data) { + yield put({type: 'loginSuccess', payload: { + data + }}) + } + } + }, + reducers : { + loginSuccess(state) { + return { + login: true, + loading: false, + loginButtonLoading: false + } + }, + showLoading(state) { + return { ...state, loginButtonLoading: true } + } + } +} diff --git a/src/models/login.js b/src/models/login.js deleted file mode 100644 index 05aceed..0000000 --- a/src/models/login.js +++ /dev/null @@ -1,15 +0,0 @@ -// export default { -// namespace: 'login', -// state: { -// list: [], -// total: null, -// }, -// effects: { -// *query(){}, -// }, -// reducers: { -// loginSuccess(){ -// -// } -// } -// } diff --git a/src/routes/app.js b/src/routes/app.js index edd8f00..9994662 100644 --- a/src/routes/app.js +++ b/src/routes/app.js @@ -1,5 +1,7 @@ -import React, { PropTypes } from 'react' +import React, {PropTypes} from 'react' +import {connect} from 'dva' import classnames from 'classnames' +import Login from './login' import Header from '../components/layout/header' import Bread from '../components/layout/bread' import Footer from '../components/layout/footer' @@ -7,29 +9,51 @@ import Sider from '../components/layout/sider' import styles from '../components/layout/main.less' import '../components/layout/common.less' -function App({ children, location }) { +function App({children, location, dispatch,app}) { + const {login, loading,loginButtonLoading} = app + const loginProps = { + loading, + loginButtonLoading, + onOk(data) { + dispatch({ + type: 'app/login', + payload: data, + }) + }, + } + return ( -