This commit is contained in:
saplf
2019-09-08 01:24:27 +08:00
parent 1c0e5ddb66
commit 8282bb81d4
11 changed files with 82 additions and 33 deletions

View File

@@ -172,4 +172,6 @@ export default {
'system.language': 'Language', 'system.language': 'Language',
'system.currency': 'Currency', 'system.currency': 'Currency',
'system.chooseLang': 'Choose Language', 'system.chooseLang': 'Choose Language',
'about.title': '关于第五维度',
} }

View File

@@ -172,4 +172,6 @@ export default {
'system.language': '语言偏好', 'system.language': '语言偏好',
'system.currency': '法币偏好', 'system.currency': '法币偏好',
'system.chooseLang': '请选择语言', 'system.chooseLang': '请选择语言',
'about.title': '关于第五维度',
} }

23
src/pages/about/index.tsx Normal file
View File

@@ -0,0 +1,23 @@
/**
* Title: 地产详情
* Routes:
* - ./src/pages/routes
*/
import React from 'react';
import Header from '@/components/Header';
import { formatMessage } from 'umi-plugin-locale';
import styles from './style.less';
const AboutPage: React.FC = () => {
return (
<div className={styles.container}>
<Header title={formatMessage({ id: 'about.title' })} />
<div className={styles.body}>
body
</div>
</div>
);
}
export default AboutPage;

View File

@@ -0,0 +1,9 @@
.container {
height: 100%;
display: flex;
flex-direction: column;
}
.body {
flex-grow: 1;
}

View File

@@ -32,23 +32,25 @@ export interface CheckModelState {
codeTimer: number; codeTimer: number;
} }
const initState: CheckModelState = {
pageState: PageState.Pending,
pageStep: PageStep.Check,
areacodes: [],
areacode: undefined,
phone: '',
password: '',
pwdConfirm: '',
inviter: '',
verifyCode: '',
submitting: false,
sendingCode: false,
codeTimer: -1,
};
const model: Model = { const model: Model = {
namespace: 'check', namespace: 'check',
state: { state: initState,
pageState: PageState.Pending,
pageStep: PageStep.Check,
areacodes: [],
areacode: undefined,
phone: '',
password: '',
pwdConfirm: '',
inviter: '',
verifyCode: '',
submitting: false,
sendingCode: false,
codeTimer: -1,
} as CheckModelState,
effects: { effects: {
*back(_, { select, put }) { *back(_, { select, put }) {
@@ -123,7 +125,7 @@ const model: Model = {
} }
}, },
*submitLogin(_, { put, call, select }) { *submitLogin(_, { put, call, select, all }) {
const { areacode, phone, password } = yield select((state: any) => state.check); const { areacode, phone, password } = yield select((state: any) => state.check);
if (!areacode) return message.warn(formatMessage({ id: 'check.msgArea' })); if (!areacode) return message.warn(formatMessage({ id: 'check.msgArea' }));
if (!validPhone(phone)) return message.warn(formatMessage({ id: 'check.msgPhone' })); if (!validPhone(phone)) return message.warn(formatMessage({ id: 'check.msgPhone' }));
@@ -135,16 +137,20 @@ const model: Model = {
yield put({ type: 'user/updateToken', payload: token }); yield put({ type: 'user/updateToken', payload: token });
yield delay(10); yield delay(10);
const user = yield call(getUserInfo, true); const user = yield call(getUserInfo, true);
yield put({ type: 'user/updateUser', payload: user }); yield all([
put({ type: 'user/updateUser', payload: user }),
put({ type: 'onUpdateState', ...initState }),
]);
} catch(e) { } catch(e) {
message.error(e.message); message.error(e.message);
yield put({ type: 'user/logout' }); yield all([
} finally { put({ type: 'user/logout' }),
yield put({ type: 'onUpdateState', submitting: false }); put({ type: 'onUpdateState', submitting: false }),
]);
} }
}, },
*submitRegister(_, { put, select, call }) { *submitRegister(_, { put, select, call, all }) {
const { areacode, phone, password, verifyCode, inviter, pwdConfirm } = yield select((state: any) => state.check); const { areacode, phone, password, verifyCode, inviter, pwdConfirm } = yield select((state: any) => state.check);
if (!areacode) return message.warn(formatMessage({ id: 'check.msgArea' })); if (!areacode) return message.warn(formatMessage({ id: 'check.msgArea' }));
if (!validPhone(phone)) return message.warn(formatMessage({ id: 'check.msgPhone' })); if (!validPhone(phone)) return message.warn(formatMessage({ id: 'check.msgPhone' }));
@@ -159,12 +165,16 @@ const model: Model = {
yield put({ type: 'user/updateToken', payload: token }); yield put({ type: 'user/updateToken', payload: token });
yield delay(10); yield delay(10);
const user = yield call(getUserInfo, true); const user = yield call(getUserInfo, true);
yield put({ type: 'user/updateUser', payload: user }); yield all([
put({ type: 'user/updateUser', payload: user }),
put({ type: 'onUpdateState', ...initState }),
]);
} catch(e) { } catch(e) {
message.error(e.message); message.error(e.message);
yield put({ type: 'user/logout' }); yield all([
} finally { put({ type: 'user/logout' }),
yield put({ type: 'onUpdateState', submitting: false }); put({ type: 'onUpdateState', submitting: false }),
]);
} }
}, },

View File

@@ -58,7 +58,6 @@
.register { .register {
height: 100%; height: 100%;
padding-top: @header-height;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }

View File

@@ -8,6 +8,7 @@ import { formatMessage } from 'umi-plugin-locale';
import { validPwd, validPhone, validPhoneInput } from '@/utils/validate'; import { validPwd, validPhone, validPhoneInput } from '@/utils/validate';
import { changePhone, sendCode } from './service'; import { changePhone, sendCode } from './service';
import { dispatch } from '@/utils/utils'; import { dispatch } from '@/utils/utils';
import { encodePhone } from '@/utils/transform';
export interface ChphoneModelState { export interface ChphoneModelState {
pageState: PageState; pageState: PageState;
@@ -75,8 +76,8 @@ const model: Model = {
if (!code) return message.warn(formatMessage({ id: 'check.msgCode' })); if (!code) return message.warn(formatMessage({ id: 'check.msgCode' }));
yield put({ type: 'onUpdateState', submitting: true }); yield put({ type: 'onUpdateState', submitting: true });
try { try {
yield call(changePhone, phone, code); yield call(changePhone, areacode, phone, code);
yield put({ type: 'user/updateUser', payload: { phone } }); yield put({ type: 'user/updateUser', payload: { phone: encodePhone(areacode, phone) } });
Modal.success({ Modal.success({
okText: formatMessage({ id: 'common.iknow' }), okText: formatMessage({ id: 'common.iknow' }),
title: formatMessage({ id: 'common.prompt' }), title: formatMessage({ id: 'common.prompt' }),

View File

@@ -2,9 +2,9 @@ import http from '@/utils/http';
import { encodePhone } from '@/utils/transform'; import { encodePhone } from '@/utils/transform';
import { AreaCode } from '@/types/common'; import { AreaCode } from '@/types/common';
export async function changePhone(phone: string, code: string) { export async function changePhone(areacode: AreaCode, phone: string, code: string) {
const { ok, msg } = await http.post('/user/chphone', { const { ok, msg } = await http.post('/user/chphone', {
phone, phone: encodePhone(areacode, phone),
code, code,
}); });
if (ok) return; if (ok) return;
@@ -16,7 +16,7 @@ export async function sendCode(areacode: AreaCode, phone: string) {
'/sign/send', '/sign/send',
{ {
phone: encodePhone(areacode, phone), phone: encodePhone(areacode, phone),
type: 'signUp', type: 'changePhone',
}, },
); );
if (ok) { if (ok) {

View File

@@ -82,8 +82,8 @@ const CommunityPage: React.FC<HomeCommunityModelState & DispatchProp> = ({
/> : <div className="fake">{(it.nickname && it.nickname[0]) || 'F'}</div>} /> : <div className="fake">{(it.nickname && it.nickname[0]) || 'F'}</div>}
</div> </div>
<div className="line"> <div className="line">
<span>{it.nickname}</span> <span>{it.nickname || it.phone}</span>
<span className="time">{formatMessage({ id: 'home.community.time' })}{it.registryTime}</span> <span className="time">{formatMessage({ id: 'home.community.time' })}{it.createdAt}</span>
</div> </div>
</div> </div>
); );

View File

@@ -52,6 +52,7 @@ const ProfilePage: React.FC<UserModelState & DispatchProp> = ({
className="group" className="group"
logo={logoAbout} logo={logoAbout}
title="profile.about" title="profile.about"
onClick={() => dispatch(routerRedux.push('/about'))}
/> />
</div> </div>
</div> </div>

View File

@@ -252,7 +252,9 @@ export interface Inviter {
nickname: string; nickname: string;
registryTime: string; createdAt: string;
phone: string;
} }
export type Inviters = Inviter[]; export type Inviters = Inviter[];