!2676 WebCAD注册增加邀请码

pull/2670/MERGE
黄诗津 6 months ago committed by ChenX
parent 2530aeec2f
commit ee7170ff6e

@ -2,11 +2,11 @@ import { Button, Checkbox, Classes, Dialog, InputGroup, Intent, Position, Toolti
import { IObservableValue, observable } from 'mobx';
import { inject, observer } from 'mobx-react';
import * as React from 'react';
import { safeEval } from '../../../Common/eval';
import { ResourcesCDN_HOST, SignUrl } from '../../../Common/HostUrl';
import { KeyBoard } from '../../../Common/KeyEnum';
import { PostJson, RequestStatus } from '../../../Common/Request';
import { Sleep } from '../../../Common/Sleep';
import { safeEval } from '../../../Common/eval';
import { TopPanelStore } from '../../Store/TopPanelStore';
import { AppToaster } from '../Toaster';
@ -17,6 +17,8 @@ interface IRegistInput
check_code: string;
pswConfirm: string;
agreement_checked: boolean;
invite_code: string;
user_name: string;
}
interface InputIntent
@ -24,6 +26,8 @@ interface InputIntent
PSW: Intent;
ComfirmPSW: Intent;
PHONE: Intent;
InviteCode: Intent,
UserName: Intent,
}
enum InputType
@ -32,12 +36,15 @@ enum InputType
ComfirmPSW = 1,
PHONE = 2,
OK = 3,
InviteCode = 4,
UserName = 5,
}
const prefix = "time_";
let SMSTimer: NodeJS.Timeout;
@inject("store")
@observer
export default class Regist extends React.Component<{ store?: TopPanelStore; }> {
export default class Regist extends React.Component<{ store?: TopPanelStore; }>
{
@observable private errMsg: string = "";
@observable private flag: InputType = InputType.OK;
@observable private inputIntent: InputIntent;
@ -49,6 +56,7 @@ export default class Regist extends React.Component<{ store?: TopPanelStore; }>
@observable private registInput: IRegistInput;
private openAgreement = observable.box(false);
private phoneRegex = new RegExp(`\^1\\d{10}$`);
private inviteCode = new RegExp(`\^[a-z0-9]{6}$`);
private pswRegex = new RegExp(`\^[^\\u4e00-\\u9fa5]+$`);
@observable registering: boolean = false;
constructor(props)
@ -60,11 +68,15 @@ export default class Regist extends React.Component<{ store?: TopPanelStore; }>
check_code: "",
pswConfirm: "",
agreement_checked: false,
invite_code: "",
user_name: "",
};
this.inputIntent = {
PSW: Intent.NONE,
ComfirmPSW: Intent.NONE,
PHONE: Intent.NONE,
InviteCode: Intent.NONE,
UserName: Intent.NONE,
};
}
handleRegist = async () =>
@ -105,6 +117,15 @@ export default class Regist extends React.Component<{ store?: TopPanelStore; }>
});
return;
}
if (this.inputIntent.InviteCode !== Intent.SUCCESS)
{
AppToaster.show({
message: "邀请码有误",
intent: Intent.DANGER,
timeout: 1000,
});
return;
}
if (!this.registInput.agreement_checked)
{
AppToaster.show({
@ -283,6 +304,21 @@ export default class Regist extends React.Component<{ store?: TopPanelStore; }>
this.inputIntent.PHONE = Intent.DANGER;
}
break;
case InputType.InviteCode:
text = this.registInput.invite_code;
if (this.inviteCode.test(text))
{
this.flag = InputType.OK;
this.errMsg = "";
this.inputIntent.InviteCode = Intent.SUCCESS;
}
else
{
this.errMsg = "邀请码是6位字母和数字";
this.flag = InputType.InviteCode;
this.inputIntent.InviteCode = Intent.DANGER;
}
break;
}
};
render()
@ -398,7 +434,46 @@ export default class Regist extends React.Component<{ store?: TopPanelStore; }>
/>
</Tooltip>
</div>
<div className="item">
<Tooltip
content={this.errMsg}
position={Position.TOP}
intent={Intent.WARNING}
isOpen={this.flag === InputType.InviteCode}>
<InputGroup
value={this.registInput.invite_code}
intent={this.inputIntent.InviteCode}
name="txt"
placeholder={"邀请码: 6位字母和数字"}
onChange={e =>
{
this.registInput.invite_code = e.target.value;
this.valueTest(InputType.InviteCode);
}}
onBlur={() => (this.flag = InputType.OK)}
/>
</Tooltip>
</div>
<div className="item">
<Tooltip
content={this.errMsg}
position={Position.TOP}
intent={Intent.WARNING}
isOpen={this.flag === InputType.UserName}>
<InputGroup
value={this.registInput.user_name}
intent={this.inputIntent.UserName}
name="txt"
placeholder={"企业名称(可选)"}
onChange={e =>
{
this.registInput.user_name = e.target.value;
this.valueTest(InputType.UserName);
}}
onBlur={() => (this.flag = InputType.OK)}
/>
</Tooltip>
</div>
</div>
</div>
<div className="regist-footer info-block" >
@ -455,7 +530,8 @@ interface IUserAgreementProps
}
@observer
class UserAgreement extends React.Component<IUserAgreementProps, {}> {
class UserAgreement extends React.Component<IUserAgreementProps, {}>
{
render()
{
return (

Loading…
Cancel
Save