|
|
|
@ -0,0 +1,549 @@
|
|
|
|
|
import * as React from 'react';
|
|
|
|
|
import { KeyBoard } from '../../../Common/KeyEnum';
|
|
|
|
|
import { InputGroup, Label, Classes, Button, Checkbox, Dialog, Intent, Tooltip, Position } from '@blueprintjs/core';
|
|
|
|
|
import { TopPanelStore } from '../../Store/TopPanelStore';
|
|
|
|
|
import { inject, observer } from 'mobx-react';
|
|
|
|
|
import { IObservableValue, observable } from 'mobx';
|
|
|
|
|
import { request, RequestStatus } from '../../../Common/Request';
|
|
|
|
|
import { SignUrl } from '../../../Common/HostUrl';
|
|
|
|
|
import { AppToaster } from '../Toaster';
|
|
|
|
|
|
|
|
|
|
interface IRegistState
|
|
|
|
|
{
|
|
|
|
|
user_phone: string;
|
|
|
|
|
pass_word: string;
|
|
|
|
|
check_code: string;
|
|
|
|
|
pswConfirm: string;
|
|
|
|
|
agreement_checked: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface InputIntent
|
|
|
|
|
{
|
|
|
|
|
PSW: Intent;
|
|
|
|
|
ComfirmPSW: Intent;
|
|
|
|
|
PHONE: Intent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum InputType
|
|
|
|
|
{
|
|
|
|
|
PSW = 0,
|
|
|
|
|
ComfirmPSW = 1,
|
|
|
|
|
PHONE = 2,
|
|
|
|
|
OK = 3,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@inject("store")
|
|
|
|
|
@observer
|
|
|
|
|
export default class Regist extends React.Component<{ store?: TopPanelStore }, IRegistState> {
|
|
|
|
|
@observable private errMsg: string = "";
|
|
|
|
|
@observable private flag: InputType = InputType.OK;
|
|
|
|
|
@observable private inputIntent: InputIntent;
|
|
|
|
|
@observable private SMSBtnText: string = "获取短信验证码";
|
|
|
|
|
private openAgreement = observable.box(false);
|
|
|
|
|
private phoneRegex = new RegExp(`\^1\\d{10}$`);
|
|
|
|
|
private pswRegex = new RegExp(`\^[^\\u4e00-\\u9fa5]+$`);
|
|
|
|
|
constructor(props)
|
|
|
|
|
{
|
|
|
|
|
super(props);
|
|
|
|
|
this.state = {
|
|
|
|
|
user_phone: "",
|
|
|
|
|
pass_word: "",
|
|
|
|
|
check_code: "",
|
|
|
|
|
pswConfirm: "",
|
|
|
|
|
agreement_checked: false,
|
|
|
|
|
};
|
|
|
|
|
this.inputIntent = {
|
|
|
|
|
PSW: Intent.NONE,
|
|
|
|
|
ComfirmPSW: Intent.NONE,
|
|
|
|
|
PHONE: Intent.NONE,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
handleRegist = async () =>
|
|
|
|
|
{
|
|
|
|
|
if (this.inputIntent.PSW !== Intent.SUCCESS)
|
|
|
|
|
{
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "密码设置有误,请核验",
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.inputIntent.ComfirmPSW !== Intent.SUCCESS)
|
|
|
|
|
{
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "重复密码有误,请核验",
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.inputIntent.PHONE !== Intent.SUCCESS)
|
|
|
|
|
{
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "手机号输入有误,请核验",
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.state.check_code === "")
|
|
|
|
|
{
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "验证码不能为空",
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!this.state.agreement_checked)
|
|
|
|
|
{
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "需同意注册协议方可注册",
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
let data = await request(SignUrl.regist, {
|
|
|
|
|
body: JSON.stringify(this.state),
|
|
|
|
|
});
|
|
|
|
|
if (data.err_code === RequestStatus.Ok)
|
|
|
|
|
{
|
|
|
|
|
//注册成功 跳转到登陆
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "注册成功",
|
|
|
|
|
intent: Intent.SUCCESS,
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
this.props.store.openRegist = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
handleSMS = async () =>
|
|
|
|
|
{
|
|
|
|
|
let num = 120;
|
|
|
|
|
this.SMSBtnText = `${num}s后重新获取`;
|
|
|
|
|
//120秒倒数
|
|
|
|
|
let tim = setInterval(() =>
|
|
|
|
|
{
|
|
|
|
|
num--;
|
|
|
|
|
this.SMSBtnText = `${num}s后重新获取`;
|
|
|
|
|
if (num === 1)
|
|
|
|
|
{
|
|
|
|
|
clearInterval(tim);
|
|
|
|
|
this.SMSBtnText = "获取短信验证码";
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
}, 1000);
|
|
|
|
|
let data = await request(SignUrl.SMSCode, {
|
|
|
|
|
body: JSON.stringify({
|
|
|
|
|
user_phone: this.state.user_phone
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
if (data.err_code === RequestStatus.Ok)
|
|
|
|
|
{
|
|
|
|
|
//发送短信成功
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
message: "短信已发送,请注意查收",
|
|
|
|
|
timeout: 1000,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
valueTest = (type: InputType, text: string) =>
|
|
|
|
|
{
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case InputType.PSW:
|
|
|
|
|
if (text.length >= 6 && text.length <= 20)
|
|
|
|
|
{
|
|
|
|
|
if (this.pswRegex.test(text))
|
|
|
|
|
{
|
|
|
|
|
this.flag = InputType.OK;
|
|
|
|
|
this.errMsg = "";
|
|
|
|
|
this.inputIntent.PSW = Intent.SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.errMsg = "密码不可包含中文";
|
|
|
|
|
this.flag = InputType.PSW;
|
|
|
|
|
this.inputIntent.PSW = Intent.DANGER;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.errMsg = "密码长度应在6-20之间";
|
|
|
|
|
this.flag = InputType.PSW;
|
|
|
|
|
this.inputIntent.PSW = Intent.DANGER;
|
|
|
|
|
}
|
|
|
|
|
if (this.state.pswConfirm === text)
|
|
|
|
|
this.inputIntent.ComfirmPSW = Intent.SUCCESS;
|
|
|
|
|
else
|
|
|
|
|
this.inputIntent.ComfirmPSW = Intent.DANGER;
|
|
|
|
|
break;
|
|
|
|
|
case InputType.ComfirmPSW:
|
|
|
|
|
if (text === this.state.pass_word)
|
|
|
|
|
{
|
|
|
|
|
this.flag = InputType.OK;
|
|
|
|
|
this.errMsg = "";
|
|
|
|
|
this.inputIntent.ComfirmPSW = Intent.SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.errMsg = "密码与确认密码不一致";
|
|
|
|
|
this.flag = InputType.ComfirmPSW;
|
|
|
|
|
this.inputIntent.ComfirmPSW = Intent.DANGER;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case InputType.PHONE:
|
|
|
|
|
if (this.phoneRegex.test(text))
|
|
|
|
|
{
|
|
|
|
|
this.flag = InputType.OK;
|
|
|
|
|
this.errMsg = "";
|
|
|
|
|
this.inputIntent.PHONE = Intent.SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.errMsg = "请输入正确的11位手机号码";
|
|
|
|
|
this.flag = InputType.PHONE;
|
|
|
|
|
this.inputIntent.PHONE = Intent.DANGER;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
render()
|
|
|
|
|
{
|
|
|
|
|
const infoBlockStyle: React.CSSProperties = {
|
|
|
|
|
background: "#fff",
|
|
|
|
|
border: "1px solid lightgrey",
|
|
|
|
|
width: "70%",
|
|
|
|
|
margin: "10px auto",
|
|
|
|
|
padding: "20px",
|
|
|
|
|
minWidth: "480px",
|
|
|
|
|
};
|
|
|
|
|
return (
|
|
|
|
|
<div
|
|
|
|
|
className="regist"
|
|
|
|
|
style={{
|
|
|
|
|
background: "#f2f2f2",
|
|
|
|
|
width: "75%",
|
|
|
|
|
height: "100%",
|
|
|
|
|
margin: "0 auto",
|
|
|
|
|
}}
|
|
|
|
|
onKeyDown={e =>
|
|
|
|
|
{
|
|
|
|
|
if (e.keyCode === KeyBoard.Enter)
|
|
|
|
|
{
|
|
|
|
|
this.handleRegist();
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
}
|
|
|
|
|
}}>
|
|
|
|
|
<div className="regist-content">
|
|
|
|
|
<div
|
|
|
|
|
className="regist-header"
|
|
|
|
|
style={{ textAlign: "center" }}>
|
|
|
|
|
<img
|
|
|
|
|
style={{
|
|
|
|
|
width: "80px",
|
|
|
|
|
height: "auto",
|
|
|
|
|
verticalAlign: "middle",
|
|
|
|
|
marginRight: "10px",
|
|
|
|
|
}}
|
|
|
|
|
src="http://t.qcad.cc/opzMainContent/fonts/03c1577dde7a97651283e2fde81928d2.png"
|
|
|
|
|
alt=""
|
|
|
|
|
/>
|
|
|
|
|
<h1>
|
|
|
|
|
晨丰家具设计软件
|
|
|
|
|
<span style={{ color: "#2f7cff" }}>用户注册</span>
|
|
|
|
|
</h1>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="info-block" style={infoBlockStyle}>
|
|
|
|
|
<div style={{ width: "60%", minWidth: 395, margin: "0 auto" }}>
|
|
|
|
|
<div className="item">
|
|
|
|
|
<Label className={Classes.INLINE}>
|
|
|
|
|
<span>* </span>
|
|
|
|
|
<span>密码:</span>
|
|
|
|
|
</Label>
|
|
|
|
|
<Tooltip
|
|
|
|
|
content={this.errMsg}
|
|
|
|
|
position={Position.TOP}
|
|
|
|
|
intent={Intent.WARNING}
|
|
|
|
|
isOpen={this.flag === InputType.PSW}>
|
|
|
|
|
<InputGroup
|
|
|
|
|
type="password"
|
|
|
|
|
value={this.state.pass_word}
|
|
|
|
|
intent={this.inputIntent.PSW}
|
|
|
|
|
onChange={e =>
|
|
|
|
|
{
|
|
|
|
|
this.setState({ pass_word: e.target.value });
|
|
|
|
|
this.valueTest(InputType.PSW, e.target.value)
|
|
|
|
|
}}
|
|
|
|
|
onBlur={() => (this.flag = InputType.OK)}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="item">
|
|
|
|
|
<Label className={Classes.INLINE}>
|
|
|
|
|
<span>* </span>
|
|
|
|
|
<span>确认密码:</span>
|
|
|
|
|
</Label>
|
|
|
|
|
<Tooltip
|
|
|
|
|
content={this.errMsg}
|
|
|
|
|
position={Position.TOP}
|
|
|
|
|
intent={Intent.WARNING}
|
|
|
|
|
isOpen={this.flag === InputType.ComfirmPSW}>
|
|
|
|
|
<InputGroup
|
|
|
|
|
type="password"
|
|
|
|
|
value={this.state.pswConfirm}
|
|
|
|
|
intent={this.inputIntent.ComfirmPSW}
|
|
|
|
|
onChange={e =>
|
|
|
|
|
{
|
|
|
|
|
this.setState({ pswConfirm: e.target.value });
|
|
|
|
|
this.valueTest(InputType.ComfirmPSW, e.target.value);
|
|
|
|
|
}}
|
|
|
|
|
onBlur={() => (this.flag = InputType.OK)}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="item">
|
|
|
|
|
<Label className={Classes.INLINE}>
|
|
|
|
|
<span>* </span>
|
|
|
|
|
<span>联系手机:</span>
|
|
|
|
|
</Label>
|
|
|
|
|
<Tooltip
|
|
|
|
|
content={this.errMsg}
|
|
|
|
|
position={Position.TOP}
|
|
|
|
|
intent={Intent.WARNING}
|
|
|
|
|
isOpen={this.flag === InputType.PHONE}
|
|
|
|
|
>
|
|
|
|
|
<InputGroup
|
|
|
|
|
value={this.state.user_phone}
|
|
|
|
|
intent={this.inputIntent.PHONE}
|
|
|
|
|
onChange={e =>
|
|
|
|
|
{
|
|
|
|
|
this.setState({ user_phone: e.target.value });
|
|
|
|
|
this.valueTest(InputType.PHONE, e.target.value)
|
|
|
|
|
}}
|
|
|
|
|
onBlur={() => (this.flag = InputType.OK)}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
<Button
|
|
|
|
|
disabled={!(this.inputIntent.PHONE === Intent.SUCCESS) || !(this.SMSBtnText === "获取短信验证码")}
|
|
|
|
|
style={{ height: 30, marginLeft: 10 }}
|
|
|
|
|
text={this.SMSBtnText}
|
|
|
|
|
intent={Intent.NONE}
|
|
|
|
|
onClick={this.handleSMS}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="item">
|
|
|
|
|
<Label className={Classes.INLINE}>
|
|
|
|
|
<span>* </span>
|
|
|
|
|
<span>短信验证码:</span>
|
|
|
|
|
</Label>
|
|
|
|
|
<InputGroup
|
|
|
|
|
value={this.state.check_code}
|
|
|
|
|
onChange={e =>
|
|
|
|
|
{
|
|
|
|
|
this.setState({ check_code: e.target.value });
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="regist-footer" style={infoBlockStyle}>
|
|
|
|
|
<div className="item center">
|
|
|
|
|
<div style={{ display: "flex" }}>
|
|
|
|
|
<Checkbox
|
|
|
|
|
checked={this.state.agreement_checked}
|
|
|
|
|
onChange={() =>
|
|
|
|
|
{
|
|
|
|
|
this.setState({ agreement_checked: !this.state.agreement_checked });
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<span>
|
|
|
|
|
我已阅读并同意
|
|
|
|
|
<a
|
|
|
|
|
target="_blank"
|
|
|
|
|
onClick={() => { this.openAgreement.set(true); }}
|
|
|
|
|
>
|
|
|
|
|
《晨丰用户注册协议》
|
|
|
|
|
</a>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="item center">
|
|
|
|
|
<Button
|
|
|
|
|
style={{ width: 173 }}
|
|
|
|
|
text="注册"
|
|
|
|
|
className="bp3-intent-success"
|
|
|
|
|
onClick={this.handleRegist}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="item center">
|
|
|
|
|
我已注册,
|
|
|
|
|
<a
|
|
|
|
|
target="_blank"
|
|
|
|
|
onClick={() => { this.props.store.openRegist = !this.props.store.openRegist; }}
|
|
|
|
|
>
|
|
|
|
|
登录
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<UserAgreement isOpen={this.openAgreement} />
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface IUserAgreementProps
|
|
|
|
|
{
|
|
|
|
|
isOpen: IObservableValue<boolean>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@observer
|
|
|
|
|
class UserAgreement extends React.Component<IUserAgreementProps, {}> {
|
|
|
|
|
render()
|
|
|
|
|
{
|
|
|
|
|
return (
|
|
|
|
|
<Dialog
|
|
|
|
|
icon="info-sign"
|
|
|
|
|
className="user-agreement"
|
|
|
|
|
title="晨丰用户注册协议"
|
|
|
|
|
isOpen={this.props.isOpen.get()}
|
|
|
|
|
onClose={e => { this.props.isOpen.set(false); }}
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
className={Classes.DIALOG_BODY}
|
|
|
|
|
style={{ padding: 20 }}
|
|
|
|
|
>
|
|
|
|
|
<p><strong>尊敬的用户,欢迎您注册成为本网站用户。在注册前请您仔细阅读如下服务条款:</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本服务协议双方为本网站与本网站用户,本服务协议具有合同效力。</p>
|
|
|
|
|
|
|
|
|
|
<p>您确认本服务协议后,本服务协议即在您和本网站之间产生法律效力。请您务必在注册之前认真阅读全部服务协议内容,如有任何疑问,可向本网站咨询。</p>
|
|
|
|
|
|
|
|
|
|
<p>无论您事实上是否在注册之前认真阅读了本服务协议,只要您点击协议正本下方的"注册"按钮并按照本网站注册程序成功注册为用户,您的行为仍然表示您同意并签署了本服务协议。</p>
|
|
|
|
|
|
|
|
|
|
<p>本协议下的条款可由晨丰随时变更,用户须定期审阅本协议。协议条款一旦发生变动,晨丰将会在晨丰爱家网相关的页面上提示变更内容。变更后的协议在相关的页面上公布即有效代替原来的协议。用户如不同意晨丰对本协议所作的任何变更,应立即停止使用晨丰提供的服务。如用户在本协议变更后继续使用晨丰的服务,即视作用户已完全同意变更后的协议, 用户可随时登录
|
|
|
|
|
<a
|
|
|
|
|
style={{ textDecoration: "none", color: "#106ba3" }}
|
|
|
|
|
href="http://www.ihome6.com"
|
|
|
|
|
>http://www.ihome6.com
|
|
|
|
|
</a>
|
|
|
|
|
查阅最新服务协议。用户在使用晨丰提供的各项服务之前,应仔细阅读本服务协议,如用户不同意本服务协议及晨丰随时对其修改,请停止使用晨丰提供的服务。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>1.本网站服务条款的确认和接纳</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站各项服务的所有权和运作权归本网站拥有。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>2.用户必须:</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>(1) 自行配备上网的所需设备, 包括个人电脑、调制解调器或其他必备上网装置。 </p>
|
|
|
|
|
<p>(2) 自行负担个人上网所支付的与此服务有关的电话费用、 网络费用。 </p>
|
|
|
|
|
<p>(3) 用户应使用正版软件接受网络服务(例如:AUTOCAD等)</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>3.用户在本网站上交易平台上不得发布下列违法信息:</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>(1) 反对宪法所确定的基本原则的; </p>
|
|
|
|
|
<p>(2) 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的; </p>
|
|
|
|
|
<p>(3) 损害国家荣誉和利益的; </p>
|
|
|
|
|
<p>(4) 煽动民族仇恨、民族歧视,破坏民族团结的; </p>
|
|
|
|
|
<p>(5) 破坏国家宗教政策,宣扬邪教和封建迷信的; </p>
|
|
|
|
|
<p>(6) 散布谣言,扰乱社会秩序,破坏社会稳定的; </p>
|
|
|
|
|
<p>(7) 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; </p >
|
|
|
|
|
<p>(8) 侮辱或者诽谤他人,侵害他人合法权益的; </p >
|
|
|
|
|
<p>(9) 含有法律、行政法规禁止的其他内容的。</p >
|
|
|
|
|
|
|
|
|
|
<p><strong> 4. 有关个人资料</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>用户同意:</p>
|
|
|
|
|
<p>(1) 提供及时、详尽及准确的个人资料。</p>
|
|
|
|
|
<p>(2) 同意接收来自本网站的信息。</p>
|
|
|
|
|
<p>(3) 不断更新注册资料,符合及时、详尽准确的要求。所有原始键入的资料将引用为注册资料。</p>
|
|
|
|
|
<p>(4) 本网站不公开用户的姓名、地址、电子邮箱和笔名,以下情况除外:</p>
|
|
|
|
|
<p>(a) 用户授权本网站透露这些信息。</p>
|
|
|
|
|
<p>(b) 相应的法律及程序要求本网站提供用户的个人资料。如果用户提供的资料包含有不正确的信息,本网站保留结束用户使用本网站信息服务资格的权利。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>5. 用户在注册时应当选择稳定性及安全性相对较好的信息接收渠道(例如:手机),并且同意接受并阅读本网站发往用户的各类信息。</strong></p>
|
|
|
|
|
<p>如用户未及时从自己的手机接受信息或因用户手机或手机接收及阅读程序本身的问题使信息无法正常接收或阅读的,只要本网站成功发送了信息,应当视为用户已经接收到相关的信息。信息在发信服务器上所记录的发出时间视为送达时间。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>6. 服务条款的修改</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站有权在必要时修改服务条款,本网站服务条款一旦发生变动,将会在重要页面上提示修改内容。如果不同意所改动的内容,用户可以主动取消获得的本网站信息服务。如果用户继续享用本网站信息服务,则视为接受服务条款的变动。本网站保留随时修改或中断服务而不需通知用户的权利。本网站行使修改或中断服务的权利,不需对用户或第三方负责。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>7. 用户隐私制度</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>尊重用户个人隐私是本网站的一项基本政策。所以,本网站一定不会在未经合法用户授权时公开、编辑或透露其注册资料及保存在本网站中的非公开内容,除非有法律许可要求或本网站在诚信的基础上认为透露这些信息在以下四种情况是必要的:</p>
|
|
|
|
|
<p>(1) 遵守有关法律规定,遵从本网站合法服务程序。</p>
|
|
|
|
|
<p>(2) 保持维护本网站的商标所有权。</p>
|
|
|
|
|
<p>(3) 在紧急情况下竭力维护用户个人和社会大众的隐私安全。</p>
|
|
|
|
|
<p>(4) 符合其他相关的要求。 本网站保留发布会员人口分析资询的权利。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>8.用户的帐号、密码和安全性</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>8.1 用户注册成功后,你将得到一个用户账号及相应的密码。该用户账号和密码由用户负责保管。用户有义务妥善保管其账号及密码,并正确、安全地使用其账号及密码,并对登录后所持账号产生的行为依法享有权利和承担责任。晨丰应积极地采取技术与管理等合理措施保障用户账号的安全、有效。任何一方未尽上述义务导致账号密码遗失、账号被盗等情形而给用户和他人的民事权利造成损害的,应当承担由此产生的法律责任。</p>
|
|
|
|
|
|
|
|
|
|
<p>8.2 用户发现其账号或密码被他人非法使用或有使用异常的情况的,应及时根据晨丰公布的处理方式通知晨丰,并有权通知晨丰采取措施暂停该账号的登录和使用。晨丰在收到用户要求采取措施暂停其账号登录和使用的通知后,应当要求用户提供并核实与其注册身份信息相一致的个人有效身份信息。晨丰核实用户所提供的个人有效身份信息与所注册的身份信息相一致的,应当及时采取措施暂停用户账号的登录和使用。晨丰违反前述约定,未及时采取措施暂停用户账号的登录和使用,因此而给用户造成损失的,应当承担其相应的法律责任。用户没有提供其个人有效身份证件或者用户提供的个人有效身份证件与所注册的身份信息不一致的,晨丰有权拒绝用户前述请求。</p>
|
|
|
|
|
|
|
|
|
|
<p>8.3 用户为了维护其合法权益,向晨丰提供与所注册的身份信息相一致的个人有效身份信息时,晨丰应当为用户提供账号注册人证明、原始注册信息等必要的协助和支持,并根据需要向有关行政机关和司法机关提供相关证据信息资料。</p>
|
|
|
|
|
|
|
|
|
|
<p>8.4 用户同意接受晨丰通过手机短信或其他方式向用户发送的商品促销或其他相关商业信息。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>9. 拒绝提供担保</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>用户明确同意信息服务的使用由用户个人承担风险。 本网站不担保服务不会受中断,对服务的及时性,安全性,出错发生都不作担保,但会在能力范围内,避免出错。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>10.有限责任</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站对任何直接、间接、偶然、特殊及继起的损害不负责任,这些损害来自:不正当使用本网站服务,或用户传送的信息不符合规定等。这些行为都有可能导致本网站形象受损,所以本网站事先提出这种损害的可能性,同时会尽量避免这种损害的发生。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>11.信息的储存及限制</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站有判定用户的行为是否符合本网站服务条款的要求和精神的权利,如果用户违背本网站服务条款的规定,本网站有权中断其服务的帐号。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>12.用户管理</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>用户必须遵循:</p>
|
|
|
|
|
<p>(1) 使用信息服务不作非法用途。</p>
|
|
|
|
|
<p>(2) 不干扰或混乱网络服务。</p>
|
|
|
|
|
<p>(3) 遵守所有使用服务的网络协议、规定、程序和惯例。用户的行为准则是以因特网法规,政策、程序和惯例为根据的。</p>
|
|
|
|
|
<p><strong>13.保障</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>用户同意保障和维护本网站全体成员的利益,负责支付由用户使用超出服务范围引起的律师费用,违反服务条款的损害补偿费用,其它人使用用户的电脑、帐号和其它知识产权的追索费。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>14.结束服务</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>用户或本网站可随时根据实际情况中断一项或多项服务。本网站不需对任何个人或第三方负责而随时中断服务。用户若反对任何服务条款的建议或对后来的条款修改有异议,或对本网站服务不满,用户可以行使如下权利:</p>
|
|
|
|
|
<p>(1) 不再使用本网站信息服务。</p>
|
|
|
|
|
<p>(2) 通知本网站停止对该用户的服务。</p>
|
|
|
|
|
<p>结束用户服务后,用户使用本网站服务的权利马上中止。从那时起,用户没有权利,本网站也没有义务传送任何未处理的信息或未完成的服务给用户或第三方。</p>
|
|
|
|
|
<p>如果您在注册晨丰帐号后连续6个月时间内,没有使用过此晨丰帐号(包括使用此晨丰帐号登录晨丰客户端,登录网站,充值),则该晨丰帐号不会被系统保留。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>15.通告</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>所有发给用户的通告都可通过重要页面的公告或电子邮件或常规的信件传送。服务条款的修改、服务变更、或其它重要事件的通告都会以此形式进行。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>16.信息内容的所有权</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站定义的信息内容包括:文字、软件、声音、相片、录象、图表;在广告中全部内容;本网站为用户提供的其它信息。所有这些内容受版权、商标、标签和其它财产所有权法律的保护。所以,用户只能在本网站和广告商授权下才能使用这些内容,而不能擅自复制、再造这些内容、或创造与内容有关的派生产品。</p>
|
|
|
|
|
|
|
|
|
|
<p><strong>17.法律</strong></p>
|
|
|
|
|
|
|
|
|
|
<p>本网站信息服务条款要与中华人民共和国的法律解释一致。用户和本网站一致同意服从本网站所在地有管辖权的法院管辖。如发生本网站服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户的约束力。
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className={Classes.DIALOG_FOOTER}
|
|
|
|
|
style={{ textAlign: "center" }}
|
|
|
|
|
>
|
|
|
|
|
<Button
|
|
|
|
|
text="同意协议并继续注册"
|
|
|
|
|
intent={Intent.DANGER}
|
|
|
|
|
onClick={e => this.props.isOpen.set(false)}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</Dialog>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|