|
@@ -24,7 +24,7 @@ export class BindPhone extends Component {
|
|
|
super(props);
|
|
|
this.validNumber = 0;
|
|
|
this.props.data = this.props.data || {};
|
|
|
- this.state = Object.assign({ step: 0, data: {} }, this.initState(this.props));
|
|
|
+ this.state = Object.assign({ step: 0, data: {}, empty: {} }, this.initState(this.props));
|
|
|
this.stepProp = {
|
|
|
0: {
|
|
|
title: '绑定手机',
|
|
@@ -57,10 +57,12 @@ export class BindPhone extends Component {
|
|
|
}
|
|
|
|
|
|
changeData(field, value) {
|
|
|
- let { data } = this.state;
|
|
|
+ let { data, empty } = this.state;
|
|
|
data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
data[field] = value;
|
|
|
- this.setState({ data, mobileError: null });
|
|
|
+ empty[field] = !value;
|
|
|
+ this.setState({ data, empty, mobileError: null });
|
|
|
}
|
|
|
|
|
|
validMobile() {
|
|
@@ -148,11 +150,13 @@ export class BindPhone extends Component {
|
|
|
<div className="label">手机号</div>
|
|
|
<div className="input-layout">
|
|
|
<SelectInput
|
|
|
+ className="w-10"
|
|
|
placeholder="请输入手机号"
|
|
|
selectValue={this.state.data.area}
|
|
|
select={MobileArea}
|
|
|
value={this.state.data.mobile}
|
|
|
error={this.state.mobileError}
|
|
|
+ empty={this.state.empty.mobile}
|
|
|
onSelect={value => {
|
|
|
this.changeData('area', value);
|
|
|
this.validMobile();
|
|
@@ -163,14 +167,17 @@ export class BindPhone extends Component {
|
|
|
}}
|
|
|
/>
|
|
|
<VerificationInput
|
|
|
+ className="w-10"
|
|
|
placeholder="请输入验证码"
|
|
|
value={this.state.data.mobileVerifyCode}
|
|
|
error={this.state.validError}
|
|
|
+ empty={this.state.empty.mobileVerifyCode}
|
|
|
onSend={() => {
|
|
|
return this.sendValid();
|
|
|
}}
|
|
|
onChange={e => {
|
|
|
this.changeData('mobileVerifyCode', e.target.value);
|
|
|
+ this.setState({ validError: '' });
|
|
|
}}
|
|
|
/>
|
|
|
</div>
|
|
@@ -184,7 +191,7 @@ export class BindEmail extends Component {
|
|
|
super(props);
|
|
|
this.validNumber = 0;
|
|
|
this.props.data = this.props.data || {};
|
|
|
- this.state = Object.assign({ step: 0, data: {} }, this.initState(this.props));
|
|
|
+ this.state = Object.assign({ step: 0, data: {}, empty: {} }, this.initState(this.props));
|
|
|
this.stepProp = {
|
|
|
0: {
|
|
|
title: '绑定邮箱',
|
|
@@ -215,10 +222,12 @@ export class BindEmail extends Component {
|
|
|
}
|
|
|
|
|
|
changeData(field, value) {
|
|
|
- let { data } = this.state;
|
|
|
+ let { data, empty } = this.state;
|
|
|
data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
data[field] = value;
|
|
|
- this.setState({ data, error: null });
|
|
|
+ empty[field] = !value;
|
|
|
+ this.setState({ data, empty, error: null });
|
|
|
}
|
|
|
|
|
|
validEmail() {
|
|
@@ -283,9 +292,11 @@ export class BindEmail extends Component {
|
|
|
<div className="label">邮箱地址</div>
|
|
|
<div className="input-layout">
|
|
|
<Input
|
|
|
+ className="w-10"
|
|
|
placeholder="请输入邮箱"
|
|
|
value={this.state.data.email}
|
|
|
error={this.state.error}
|
|
|
+ empty={this.state.empty.email}
|
|
|
onChange={e => {
|
|
|
this.changeData('email', e.target.value);
|
|
|
this.validEmail();
|
|
@@ -301,7 +312,7 @@ export class EditInfo extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.props.data = this.props.data || {};
|
|
|
- this.state = Object.assign({ data: {} }, this.initState(this.props));
|
|
|
+ this.state = Object.assign({ data: {}, empty: {} }, this.initState(this.props));
|
|
|
}
|
|
|
|
|
|
initState(props) {
|
|
@@ -329,24 +340,32 @@ export class EditInfo extends Component {
|
|
|
}
|
|
|
|
|
|
changeData(field, value) {
|
|
|
- let { data } = this.state;
|
|
|
+ let { data, empty } = this.state;
|
|
|
data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
data[field] = value;
|
|
|
- this.setState({ data, error: null });
|
|
|
+ empty[field] = !value;
|
|
|
+ this.setState({ data, nicknameError: null, empty });
|
|
|
}
|
|
|
|
|
|
submit() {
|
|
|
- const { data, error } = this.state;
|
|
|
- if (!data.nickname || error) return;
|
|
|
+ const { data, nicknameError, empty } = this.state;
|
|
|
+ if (nicknameError) return;
|
|
|
+ if (!data.nickname) {
|
|
|
+ empty.nickname = true;
|
|
|
+ this.setState({ nicknameError: '用户名不能为空!', empty });
|
|
|
+ return;
|
|
|
+ }
|
|
|
const { nickname, avatar } = data;
|
|
|
My.editInfo({ nickname, avatar })
|
|
|
.then(() => {
|
|
|
asyncSMessage('操作成功');
|
|
|
User.infoHandle(Object.assign(this.props.data, { nickname, avatar }));
|
|
|
this.props.onConfirm();
|
|
|
+ this.setState({ nicknameError: '' });
|
|
|
})
|
|
|
.catch(e => {
|
|
|
- this.setState({ error: e.message });
|
|
|
+ this.setState({ nicknameError: e.message });
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -366,12 +385,14 @@ export class EditInfo extends Component {
|
|
|
>
|
|
|
<div className="edit-info-modal-wrapper">
|
|
|
<div className="edit-info-modal-block">
|
|
|
- <div className="label">昵称</div>
|
|
|
+ <div className="label">用户名</div>
|
|
|
<div className="input-layout">
|
|
|
<Input
|
|
|
+ className="w-10"
|
|
|
placeholder="2-20位,不可使用特殊字符。"
|
|
|
value={this.state.data.nickname || ''}
|
|
|
- error={this.state.error}
|
|
|
+ error={this.state.nicknameError}
|
|
|
+ empty={this.state.empty.nickname}
|
|
|
onChange={e => {
|
|
|
this.changeData('nickname', e.target.value);
|
|
|
}}
|