UNPKG

node-swallowjs

Version:

epp portal

518 lines (516 loc) 19.7 kB
var initData = { name: '', has_loc: 'none', voice: '86.53186920439', fax: '86.53186920439', email: '88997766554@qq.com', int: { 'name': '张三丰', 'org': '趵突泉旅游文化有限公司', 'street1': '历下区趵突泉南路1号', 'street2': '', 'street3': '', 'city': '济南市', 'sp': '山东省', 'pc': '250000', 'cc': 'CN' }, value: '' }; var Create = React.createClass({ mixins: [FormMixin], getInitialState() { switch(this.props.obj) { case 'domain': return {name:'', y:'1', value:''}; case 'host': return {name:'', value:''}; case 'contact': return initData; case 'launch': return {name:'', y:'1', phase:'open', value:''}; } }, getPostal(info) { return { name: info.name, org: info.org, addr: { street: [info.street1, info.street2, info.street3], city: info.city, sp: info.sp, pc: info.pc, cc: info.cc } } }, getParam() { switch(this.props.obj) { case 'domain': return { name: TRIM(this.state.name), y: this.state.y, ns: SPLIT(this.state.ns), registrant: TRIM(this.state.registrant), admin: TRIM(this.state.admin), tech: TRIM(this.state.tech), billing: TRIM(this.state.billing), pw: randomPWD(8), dsData: this.state.dsData }; case 'host': return { name: TRIM(this.state.name), ip: SPLIT(this.state.ip) }; case 'contact': var r = { name: TRIM(this.state.name), int: this.getPostal(this.state.int), loc: this.state.has_loc!=='none' ? this.getPostal(this.state.loc) : undefined }; if(TRIM(this.state.voice)){ if(/^86\.[0-9]{1,14}/.test(TRIM(this.state.voice))){ r.voice = '+'+TRIM(this.state.voice)+TRIM(this.state.xv); }else if(!/^86\.$/.test(TRIM(this.state.voice))){ r.voice = '+86.'+TRIM(this.state.voice)+TRIM(this.state.xv); }else{ r.voice = '+86.01012345678'; } }else{ r.voice = '+86.01012345678'; } if(TRIM(this.state.fax)){ if(/^86\.[0-9]{1,14}/.test(TRIM(this.state.fax))){ r.fax = '+'+TRIM(this.state.fax) + TRIM(this.state.xf); }else if(!/^86\.$/.test(TRIM(this.state.fax))){ r.fax ='+86.'+TRIM(this.state.fax) + TRIM(this.state.xf); }else{ r.fax = '+86.01012345678'; } }else { r.fax = '+86.01012345678'; } r.email = TRIM(this.state.email); r.pw = randomPWD(8); return r; case 'launch': return { name: TRIM(this.state.name), y: this.state.y, ns: SPLIT(this.state.ns), registrant: TRIM(this.state.registrant), admin: TRIM(this.state.admin), tech: TRIM(this.state.tech), billing: TRIM(this.state.billing), pw: randomPWD(8), dsData: this.state.dsData, phase: this.state.phase, encodedSignedMark: this.state.encodedSignedMark }; } }, handleSubmit(e) { api.create(this.props.obj==='launch' ? 'domain' : this.props.obj, this.getParam(), function(code, data) { switch(code) { case '1000': this.props.onFinish(); break; case '2501': logout(); break; default: this.setState({value: data}); } }.bind(this)); }, render() { switch(this.props.obj) { case 'domain': return ( <div> <table border="0" align="center"> <tbody> <tr align="center"> <td colSpan="2">{this.props.children}</td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>域名:</td> <td> <input {...this.linkState({ name: 'name', type: 'text', size: '40', maxLength: '255', onFocus: this.onSetState({name:'', value:''}) })}/> </td> </tr> <tr> <td>交费:</td> <td><SelectYears {...this.linkState({name: 'y'})}/>年</td> </tr> <tr> <td>NS主机:</td> <td> <textarea {...this.linkState({ name: 'ns', rows: '6', cols: '40', onFocus: this.onSetState({ns:'', value:''}) })}/> </td> </tr> <tr> <td>登记人:</td> <td> <input {...this.linkState({ name: 'registrant', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({registrant:'', value:''}) })}/> </td> </tr> <tr> <td>管理联系人:</td> <td> <input {...this.linkState({ name: 'admin', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({admin:'', value:''}) })}/> </td> </tr> <tr> <td>交费联系人:</td> <td> <input {...this.linkState({ name: 'billing', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({billing:'', value:''}) })}/> </td> </tr> <tr> <td>技术联系人:</td> <td> <input {...this.linkState({ name: 'tech', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({tech:'', value:''}) })}/> </td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>secDNS:</td> <td><DsData name="dsData" linkState={this.linkState}/></td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr align="center"> <td colSpan="2"> <input type="button" value="提交" onClick={this.handleSubmit}/> </td> </tr> </tbody> </table> <OpResult content={this.state.value} /> </div> ); case 'host': return ( <div> <table> <tbody> <tr> <td colSpan="2">{this.props.children}</td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>主机名:</td> <td> <input {...this.linkState({ name: 'name', type: 'text', size: '40', maxLength: '255', onFocus: this.onSetState({name:'', value:''}) })}/> </td> </tr> <tr> <td>IP地址:</td> <td> <textarea {...this.linkState({ name: 'ip', rows: '6', cols: '40', onFocus: this.onSetState({ip:'', value:''}) })}/> </td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr align="center"> <td colSpan="2"><input type="button" value="提交" onClick={this.handleSubmit} /></td> </tr> </tbody> </table> <OpResult content={this.state.value} /> </div> ); case 'contact': return ( <div> <table border="0" align="center"> <tbody> <tr align="center"> <td colSpan="2"><b>填写联系人信息</b></td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td style={{"vertical-align": 'top'}}>联系人ID:</td> <td> <input style={{width: '286px'}} {...this.linkState({ name: 'name', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({name:'', value:''}) })}/> <label style={{display: 'block', "padding-top":'0.3em'}}>注册人是个人,请填写身份证号码,并去除出生年份的前两位,共计16位,此号码系统将自动引用为实名审核时的身份证号码且不能修改,请认真填写 示例:如果您的身份证号码是:110110196401021234,联系人ID请填写:1101106401021234</label> <label style={{display: 'block', "padding-bottom": '0.3em'}}>注册人非个人,仍按原有规则填写,即:由英文字母、数字和“-”组成的字符串,长度<em className="red">416</em>,不能重复,必须是唯一的</label> </td> </tr> <tr> <td colSpan="2"><PostalInfo name="int" linkState={this.linkState} readOnly={false}/></td> </tr> <tr> <td colSpan="2"> <input {...this.linkState({ name: 'has_loc', type: 'radio', value: 'none' })}/>没有本地语言联系方式 <input {...this.linkState({ name: 'has_loc', type: 'radio', value: 'table-row' })}/>有本地语言联系方式 </td> </tr> <tr style={{display: this.state.has_loc}}> <td colSpan="2"><PostalInfo name="loc" linkState={this.linkState} readOnly={false}/></td> </tr> <tr> <td>电话:</td> <td> <input {...this.linkState({ name: 'voice', type: 'text', size: '17', maxLength: '17', onFocus: this.onSetState({voice:'86.', value:''}) })}/> 转 <input {...this.linkState({ name: 'xv', type: 'text', size: '5', maxLength: '5', onFocus: this.onSetState({xv:'', value:''}) })}/> <label>格式为国别(<strong className="red">86</strong>).区号(<strong className="red">531</strong>)座机号,如:86.53186920439或国别.手机号,如:86.13425668204,电话号码不得是11111111234567,00000等无意义的号码</label> </td> </tr> <tr> <td>传真:</td> <td> <input {...this.linkState({ name: 'fax', type: 'text', size: '17', maxLength: '17', onFocus: this.onSetState({fax:'86.', value:''}) })}/> 转 <input {...this.linkState({ name: 'xf', type: 'text', size: '5', maxLength: '5', onFocus: this.onSetState({xf:'', value:''}) })}/> <label>格式为国别(<strong className="red">86</strong>).区号(<strong className="red">531</strong>)座机号,如:86.53186920439或国别.手机号,如:86.13425668204,电话号码不得是11111111234567,00000等无意义的号码</label> </td> </tr> <tr> <td>电子邮件:</td> <td> <input {...this.linkState({ name: 'email', type: 'text', size: '40', maxLength: '255' })}/> <label>必须真实有效,用于接收有关所注册域名的重要通知,<strong className="red">不可用中文邮箱</strong></label> </td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr align="center"> <td colSpan="2"><input type="button" value="提交" onClick={this.handleSubmit} /></td> </tr> </tbody> </table> <OpResult content={this.state.value} /> </div> ); case 'launch': return ( <div> <table border="0" align="center"> <tbody> <tr align="center"> <td colSpan="2">{this.props.children}</td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>域名:</td> <td> <input {...this.linkState({ name: 'name', type: 'text', size: '40', maxLength: '255', onFocus: this.onSetState({name:'', value:''}) })}/> </td> </tr> <tr> <td>phase:</td> <td><LaunchPhase {...this.linkState({name: 'phase'})}/></td> </tr> <tr> <td>交费:</td> <td><SelectYears {...this.linkState({name: 'y'})}/>年</td> </tr> <tr> <td>NS主机:</td> <td> <textarea {...this.linkState({ name: 'ns', rows: '6', cols: '40', onFocus: this.onSetState({ns:'', value:''}) })}/> </td> </tr> <tr> <td>登记人:</td> <td> <input {...this.linkState({ name: 'registrant', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({registrant:'', value:''}) })}/> </td> </tr> <tr> <td>管理联系人:</td> <td> <input {...this.linkState({ name: 'admin', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({admin:'', value:''}) })}/> </td> </tr> <tr> <td>交费联系人:</td> <td> <input {...this.linkState({ name: 'billing', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({billing:'', value:''}) })}/> </td> </tr> <tr> <td>技术联系人:</td> <td> <input {...this.linkState({ name: 'tech', type: 'text', size: '16', maxLength: '16', onFocus: this.onSetState({tech:'', value:''}) })}/> </td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>secDNS:</td> <td><DsData name="dsData" linkState={this.linkState}/></td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr> <td>SMD:</td> <td> <input {...this.linkState({ name: "encodedSignedMark", type: "file" })}/> </td> </tr> <tr> <td colSpan="2" height="16"></td> </tr> <tr align="center"> <td colSpan="2"> <input type="button" value="提交" onClick={this.handleSubmit}/> </td> </tr> </tbody> </table> <OpResult content={this.state.value} /> </div> ); } } });