瀏覽代碼

用户认证bug修复,其他bug修复

yee 8 年之前
父節點
當前提交
90cd27c479
共有 72 個文件被更改,包括 2620 次插入460 次删除
  1. 1 1
      build/admin/index.css
  2. 1 1
      build/admin/index.js
  3. 1 1
      build/admin/servicesManage/patent.css
  4. 17 17
      build/admin/servicesManage/patent.js
  5. 1 0
      build/admin/userManage.css
  6. 1 1
      build/admin/userManage.html
  7. 37 1
      build/admin/userManage.js
  8. 1 1
      build/user/account/index.css
  9. 6 6
      build/user/account/index.js
  10. 1 1
      build/user/account/services.css
  11. 25 16
      build/user/account/services.js
  12. 1 1
      build/user/account/set.css
  13. 22 21
      build/user/account/set.js
  14. 9 9
      build/user/certify.js
  15. 1 1
      build/user/groupCertify.css
  16. 9 9
      build/user/groupCertify.js
  17. 2 2
      build/user/login.js
  18. 3 3
      build/user/signIn.js
  19. 2 2
      build/vendors.js
  20. 1 1
      js/admin/index.js
  21. 9 2
      js/admin/userManage.js
  22. 17 1
      js/component/account/leftTab.less
  23. 212 0
      js/component/account/services/clientInputPatent.jsx
  24. 13 9
      js/component/account/services/leftTab.jsx
  25. 2 0
      js/component/account/services/patent.jsx
  26. 1 0
      js/component/account/services/patent.less
  27. 77 72
      js/component/account/set/base.jsx
  28. 26 26
      js/component/account/set/company.jsx
  29. 5 2
      js/component/account/set/content.jsx
  30. 79 23
      js/component/account/set/group.jsx
  31. 219 0
      js/component/account/set/hrSituation.jsx
  32. 21 0
      js/component/account/set/hrSituation.less
  33. 3 0
      js/component/account/set/leftTabgroup.jsx
  34. 3 0
      js/component/account/set/person.less
  35. 5 5
      js/component/account/topTab.jsx
  36. 5 6
      js/component/certify/audit.jsx
  37. 9 5
      js/component/certify/bank.jsx
  38. 9 10
      js/component/certify/confirm.jsx
  39. 5 3
      js/component/certify/content.jsx
  40. 9 10
      js/component/certify/money.jsx
  41. 14 11
      js/component/certify/personal.jsx
  42. 6 7
      js/component/certify/result.jsx
  43. 1 1
      js/component/certify/top.jsx
  44. 72 5
      js/component/dataDic.js
  45. 3 0
      js/component/groupCertify/audit.jsx
  46. 22 20
      js/component/groupCertify/bank.jsx
  47. 3 9
      js/component/groupCertify/certify.less
  48. 4 5
      js/component/groupCertify/confirm.jsx
  49. 6 4
      js/component/groupCertify/content.jsx
  50. 11 12
      js/component/groupCertify/money.jsx
  51. 34 29
      js/component/groupCertify/personal.jsx
  52. 6 3
      js/component/groupCertify/result.jsx
  53. 1 1
      js/component/groupCertify/top.jsx
  54. 1 1
      js/component/manageCenter/bottom.less
  55. 1 1
      js/component/manageCenter/content.less
  56. 3 3
      js/component/manageCenter/leftTab.less
  57. 254 0
      js/component/manageCenter/servicesManage/patent/clientInputPatent.jsx
  58. 2 0
      js/component/manageCenter/servicesManage/patent/comprehensive.jsx
  59. 1 0
      js/component/manageCenter/servicesManage/patent/comprehensive.less
  60. 1 1
      js/component/manageCenter/servicesManage/patent/content.jsx
  61. 6 10
      js/component/manageCenter/topTab.jsx
  62. 12 23
      js/component/manageCenter/userManage/content.jsx
  63. 13 27
      js/component/manageCenter/userManage/leftTab.jsx
  64. 41 0
      js/component/manageCenter/userManage/leftTab.less
  65. 386 0
      js/component/manageCenter/userManage/orgCertify.jsx
  66. 54 0
      js/component/manageCenter/userManage/orgDesc.jsx
  67. 193 0
      js/component/manageCenter/userManage/orgList.jsx
  68. 336 0
      js/component/manageCenter/userManage/userDesc.jsx
  69. 195 0
      js/component/manageCenter/userManage/userList.jsx
  70. 41 0
      js/component/manageCenter/userManage/userList.less
  71. 12 8
      js/component/sign/account.jsx
  72. 14 10
      js/component/sign/groupAccount.jsx

文件差異過大導致無法顯示
+ 1 - 1
build/admin/index.css


文件差異過大導致無法顯示
+ 1 - 1
build/admin/index.js


文件差異過大導致無法顯示
+ 1 - 1
build/admin/servicesManage/patent.css


文件差異過大導致無法顯示
+ 17 - 17
build/admin/servicesManage/patent.js


文件差異過大導致無法顯示
+ 1 - 0
build/admin/userManage.css


+ 1 - 1
build/admin/userManage.html

@@ -23,7 +23,7 @@
         //     uploadPrivatePath: "/data/upload"
         // }
     </script>
-</head>
+<link href="../admin/userManage.css" rel="stylesheet"></head>
 
 <body>
     <div id="root"></div>

文件差異過大導致無法顯示
+ 37 - 1
build/admin/userManage.js


文件差異過大導致無法顯示
+ 1 - 1
build/user/account/index.css


文件差異過大導致無法顯示
+ 6 - 6
build/user/account/index.js


文件差異過大導致無法顯示
+ 1 - 1
build/user/account/services.css


文件差異過大導致無法顯示
+ 25 - 16
build/user/account/services.js


文件差異過大導致無法顯示
+ 1 - 1
build/user/account/set.css


文件差異過大導致無法顯示
+ 22 - 21
build/user/account/set.js


文件差異過大導致無法顯示
+ 9 - 9
build/user/certify.js


文件差異過大導致無法顯示
+ 1 - 1
build/user/groupCertify.css


文件差異過大導致無法顯示
+ 9 - 9
build/user/groupCertify.js


文件差異過大導致無法顯示
+ 2 - 2
build/user/login.js


文件差異過大導致無法顯示
+ 3 - 3
build/user/signIn.js


文件差異過大導致無法顯示
+ 2 - 2
build/vendors.js


+ 1 - 1
js/admin/index.js

@@ -8,7 +8,7 @@ import Content from '../component/manageCenter/index/content.jsx';
 
 ReactDOM.render(
     <div className="wrap clearfix">
-        <TopTab/>
+        <TopTab />
         <Content />
         <Footer />
     </div>,

+ 9 - 2
js/admin/userManage.js

@@ -1,9 +1,16 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
+import '../../css/base.less';
+
+import TopTab from '../component/manageCenter/topTab.jsx';
+import Footer from '../component/manageCenter/bottom.jsx';
+import Content from '../component/manageCenter/userManage/content.jsx';
 
 ReactDOM.render(
-    <div>
-        <span>this is admin-userManage</span>
+    <div className="wrap clearfix">
+        <TopTab active={'set'}/>
+        <Content />
+        <Footer />
     </div>,
     document.getElementById('root')
 )

+ 17 - 1
js/component/account/leftTab.less

@@ -6,7 +6,23 @@
         float: left;
         border-right: none;
         background: #e8f2fc;
-        .ant-menu-item {
+        .ant-menu-submenu {
+            .ant-menu-submenu-title {
+                padding: 0!important;
+                margin: 0;
+                border-right: none;
+                text-align: center;
+                font-size: 16px;
+                color: #4466bf;
+                background: #d5e4f7;
+                border-top: 1px solid #f2f8fd;
+                border-bottom: 1px solid #c0d2e4;
+                &:after {
+                    font-size: 24px;
+                } 
+            }
+        }
+        .ant-menu-item { 
             padding: 0;
             margin: 0;
             border-right: none;

+ 212 - 0
js/component/account/services/clientInputPatent.jsx

@@ -0,0 +1,212 @@
+import React from 'react';
+import { Icon, Modal, Button, Form, message, Input, Spin, Select, DatePicker } from 'antd';
+import './patent.less';
+import { patentGetList, patentTypeList } from '../../dataDic.js';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+const PatentAddFrom = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+            loading: false,
+            patentGetOption: [],
+            patentTypeOption: []
+        };
+    },
+    componentWillMount() {
+        let _me = this;
+        patentGetList.map(function (item) {
+            _me.state.patentGetOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        patentTypeList.map(function (item) {
+            _me.state.patentTypeOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.props.spinState(true);
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/techservice/patent/clientInputPatent",
+                    data: {
+                        "patentNumber": values.patentNumber,
+                        "patentName": values.patentName,
+                        "patentCatagory": values.patentCatagory,
+                        "obtailWay": values.obtailWay,
+                        "sortNumber": values.sortNumber,
+                        "authorizationNumber": values.authorizationNumber,
+                        "authorizationDate": this.state.authorizationDate
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this)).always(function () {
+                    this.props.spinState(false);
+                    this.props.closeModal();
+                    this.props.form.resetFields();
+                }.bind(this));
+            }
+        });
+    },
+    checkIdcardnum(rule, value, callback) {
+        if (!/(^\d{15}$)|(^\d{17}(\d|X)$)/.test(value)) {
+            callback('请输入正确的身份证号!');
+        } else {
+            callback();
+        }
+    },
+    render() {
+        const FormItem = Form.Item;
+        const { getFieldDecorator } = this.props.form;
+        const formItemLayout = {
+            labelCol: { span: 3 },
+            wrapperCol: { span: 12 },
+        };
+        const _me = this;
+        return (
+            <Form horizontal onSubmit={this.handleSubmit} className="person-form">
+                <FormItem
+                    {...formItemLayout}
+                    label="专利编号"
+                >
+                    {getFieldDecorator('patentNumber', {
+                        rules: [{ required: true, message: '请输入,专利编号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入专利编号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="专利名称"
+                >
+                    {getFieldDecorator('patentName', {
+                        rules: [{ required: true, message: '请输入,专利名称不能为空!' }]
+                    })(
+                        <Input placeholder="请输入专利名称" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="排序号"
+                >
+                    {getFieldDecorator('sortNumber', {
+                        rules: [{ required: true, message: '请输入,排序号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入排序号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="专利类型"
+                >
+                    {getFieldDecorator('patentCatagory', {
+                        rules: [{ required: true, message: '请选择,专利类型不能为空!' }]
+                    })(
+                        <Select placeholder="请选择专利类型" style={{ width: 200 }}
+                            onChange={(e) => { this.state.patentCatagory = e; }}>
+                            {this.state.patentTypeOption}
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="获得方式"
+                >
+                    {getFieldDecorator('obtailWay', {
+                        rules: [{ required: true, message: '请选择,获得方式不能为空!' }]
+                    })(
+                        <Select placeholder="请选择获得方式" style={{ width: 200 }}
+                            onChange={(e) => { this.state.obtailWay = e; }}>
+                            {this.state.patentGetOption}
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="授权号"
+                >
+                    {getFieldDecorator('authorizationNumber', {
+                        rules: [{ required: true, message: '请输入,授权号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入授权号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="授权日期"
+                >
+                    {getFieldDecorator('authorizationDate', {
+                        rules: [{ required: true, message: '请选择,授权日期不能为空!' }]
+                    })(
+                        <DatePicker style={{ width: 200 }} 
+                        onChange={(data,dataString)=>{ this.state.authorizationDate = dataString}}/>
+                        )}
+                </FormItem>
+                <FormItem>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                    <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
+                </FormItem>
+            </Form >
+        );
+    },
+}));
+
+
+const PatentAdd = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleOk() {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    spinChange(e) {
+        this.setState({
+            loading: e
+        });
+    },
+    render() {
+        return (
+            <div className="patent-addNew">
+                <Button className="patent-addNew" type="primary" onClick={this.showModal}>新专利添加<Icon type="plus" /></Button>
+                <Spin spinning={this.state.loading} className='spin-box'>
+                    <Modal title="新专利添加" visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='720px'
+                        footer=''
+                    >
+                        <PatentAddFrom spinState={this.spinChange} closeModal={this.handleCancel} />
+                    </Modal>
+                </Spin>
+            </div>
+        );
+    },
+});
+export default PatentAdd;

+ 13 - 9
js/component/account/services/leftTab.jsx

@@ -17,8 +17,8 @@ const LeftTab = React.createClass({
             current: e.key,
         });
     },
-    componentWillMount(){
-        if ( window.location.hash ) {
+    componentWillMount() {
+        if (window.location.hash) {
             this.state.current = window.location.hash.substr(1);
         };
     },
@@ -26,21 +26,25 @@ const LeftTab = React.createClass({
         return (
             <Menu onClick={this.handleClick}
                 selectedKeys={[this.state.current]}
+                defaultOpenKeys={['sub1']}
                 mode="vertical"
                 className="account-left"
-                >
+                mode="inline"
+            >
+                <SubMenu key="sub1" title={<span>知识产权申请</span>}>
                     <Menu.Item key="patent">
                         专利申请
                     </Menu.Item>
                     <Menu.Item key="software">
                         软著申请
                     </Menu.Item>
-                    <Menu.Item key="company">
-                        高企认定
-                    </Menu.Item>
-                    <Menu.Item key="technology">
-                        科技项目申报
-                    </Menu.Item>
+                </SubMenu>
+                <Menu.Item key="company">
+                    高企认定
+                </Menu.Item>
+                <Menu.Item key="technology">
+                    科技项目申报
+                </Menu.Item>
             </Menu>
         );
     }

+ 2 - 0
js/component/account/services/patent.jsx

@@ -7,6 +7,7 @@ import $ from 'jquery/src/ajax';
 import './patent.less';
 import PatentAdd from './patentAdd.jsx';
 import PatentDesc from './patentDesc.jsx';
+import ClientInputPatent from './clientInputPatent.jsx';
 
 const Patent = React.createClass({
     loadData(pageNo) {
@@ -184,6 +185,7 @@ const Patent = React.createClass({
                 <div className="content-title">
                     <span>专利申请管理</span>
                     {userData.type == '0' ? <span></span> : <PatentAdd closeDesc={this.closeDesc}/>}
+                    {userData.type == '0' ? <span></span> : <ClientInputPatent closeDesc={this.closeDesc}/>}
                 </div>
                 <Alert style={{ display: this.state.AlertDis }} className="patent-alert" message={this.state.warningText}
                     type="info"

+ 1 - 0
js/component/account/services/patent.less

@@ -11,6 +11,7 @@
         }
         .patent-addNew {
             float: right;
+            margin-left: 20px;
             button {
                 background: #ea0862;
                 color: #fff;

+ 77 - 72
js/component/account/set/base.jsx

@@ -59,10 +59,10 @@ class Avatar extends React.Component {
                 name={this.props.name}
                 showUploadList={false}
                 action={globalConfig.context + "/api/user/identity/upload"}
-                data={{'sign': this.props.name}}
+                data={{ 'sign': this.props.name }}
                 beforeUpload={beforeUpload}
                 onChange={this.handleChange.bind(this)}
-                >
+            >
                 {
                     imageUrl ?
                         <img src={imageUrl} role="presentation" id={this.props.name} /> :
@@ -84,16 +84,19 @@ const BaseFrom = Form.create()(React.createClass({
             url: globalConfig.context + "/api/user/base",
             success: function (data) {
                 if (data.data) {
-                    let d = new Date();
-                    d.setMonth(data.data.dateOfBirthMonth - 1);
-                    d.setYear(parseInt(data.data.dateOfBirthYear));
+                    let d = new Date()
+                    if ( data.data.dateOfBirthMonth && data.data.dateOfBirthYear ) {
+                        d.setMonth(data.data.dateOfBirthMonth - 1);
+                        d.setYear(parseInt(data.data.dateOfBirthYear));
+                    };
                     this.setState({
-                        username : data.data.username,
-                        sex : data.data.sex === '女' ? 'female' : 'male',
-                        birth : d,
-                        idnumber : data.data.idNumber,
-                        idcard1 : data.data.oppositeIdUrl,
-                        idcard2 : data.data.positiveIdUrl,
+                        username: data.data.username,
+                        sex: data.data.sex,
+                        birth: d,
+                        idnumber: data.data.idNumber,
+                        oppositeIdUrl: data.data.oppositeIdUrl,
+                        positiveIdUrl: data.data.positiveIdUrl,
+                        auditStatus :data.data.auditStatus 
                     })
                 };
             }.bind(this),
@@ -124,12 +127,12 @@ const BaseFrom = Form.create()(React.createClass({
                     url: globalConfig.context + "/api/user/userIndentity",
                     data: {
                         "username": values.username,
-                        "sex": values.sex === 'female' ? '女' : '男',
+                        "sex": values.sex,
                         "dateOfBirthYear": values.birth ? values.birth._d.getFullYear() : undefined,
                         "dateOfBirthMonth": values.birth ? values.birth._d.getMonth() + 1 : undefined,
                         "idNumber": values.idcardnum,
-                        "positiveIdUrl": this.state.idcard1,
-                        "oppositeIdUrl": this.state.idcard2
+                        "positiveIdUrl": this.state.positiveIdUrl,
+                        "oppositeIdUrl": this.state.positiveIdUrl
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -151,10 +154,10 @@ const BaseFrom = Form.create()(React.createClass({
         }
     },
     urlData1(e) {
-        this.state.idcard1 = e;
+        this.state.oppositeIdUrl = e;
     },
     urlData2(e) {
-        this.state.idcard2 = e;
+        this.state.positiveIdUrl = e;
     },
     render() {
         const { getFieldDecorator } = this.props.form;
@@ -167,17 +170,17 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="姓名"
-                    >
+                >
                     {getFieldDecorator('username', {
                         initialValue: this.state.username || null
                     })(
-                        <Input />
+                        this.state.auditStatus == 5 ? <span>{this.state.username}</span> : <Input />
                         )}
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
                     label="性别"
-                    >
+                >
                     {getFieldDecorator('sex', {
                         initialValue: this.state.sex || null
                     })(
@@ -190,10 +193,10 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="出生日期"
-                    >
+                >
                     {getFieldDecorator('birth', {
                         rules: [{ type: 'object', message: '请选择日期!' }],
-                        initialValue: !this.state.birth ? null : moment( this.state.birth , 'YYYY/MM') 
+                        initialValue: !this.state.birth ? null : moment(this.state.birth, 'YYYY/MM')
                     })(
                         <MonthPicker />
                         )}
@@ -201,65 +204,18 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="身份证号"
-                    >
+                >
                     {getFieldDecorator('idcardnum', {
                         rules: [{
                             validator: this.checkIdcardnum,
                         }],
                         initialValue: this.state.idnumber || null
                     })(
-                        <Input />
+                        this.state.auditStatus == 5 ? <span>{this.state.idnumber}</span> : <Input />
                         )}
                 </FormItem>
-                <FormItem wrapperCol={{ span: 21, offset: 4 }}>
-                    <p>请上传清晰的个人身份证正反面原件照片/扫描件 (不能截图、图片内容要求完整 ),</p>
-                    <p>要求2M 以下的jpg、jpeg、gif、png格式的图片。该资料不会公开展示,仅作为审核材料使用。</p>
-                </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="身份证正面"
-                    >
-                    {getFieldDecorator('idcard1')(
-                        <Avatar name="idcard1" urlData={this.urlData1} />
-                    )}
-                    <p>{
-                        this.state.idcard1 !== "" &&  this.state.idcard1 !== undefined && this.state.idcard1 !== null ?
-                            <span><Icon style={{ 'color': '#79b5ff', 'fontSize': '14px', 'margin': '0 6px' }} type="check-circle" />已上传</span> :
-                            <span><Icon style={{ 'color': '#fa0', 'fontSize': '14px', 'margin': '0 6px' }} type="exclamation-circle" />未上传</span>
-                    }
-                    </p>
-                </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="身份证反面"
-                    >
-                    {getFieldDecorator('idcard2')(
-                        <Avatar name="idcard2" urlData={this.urlData2} />
-                    )}
-                    <p>{
-                        this.state.idcard2 !== "" &&  this.state.idcard2 !== undefined && this.state.idcard2 !== null ? 
-                            <span><Icon style={{ 'color': '#79b5ff', 'fontSize': '14px', 'margin': '0 6px' }} type="check-circle" />已上传</span> :
-                            <span><Icon style={{ 'color': '#fa0', 'fontSize': '14px', 'margin': '0 6px' }} type="exclamation-circle" />未上传</span>
-                    }
-                    </p>
-                </FormItem>
-                <FormItem wrapperCol={{ span: 21, offset: 4 }}>
-                    <p className="acc-title">示例</p>
-                    <div className="idcard-img clearfix">
-                        <div>
-                            <div className="idcard-imgbox">
-                                <img src={card1} alt="" />
-                            </div>
-                        </div>
-                        <div>
-                            <div className="idcard-imgbox">
-                                <img src={card2} alt="" />
-                            </div>
-                        </div>
-                    </div>
-                </FormItem>
                 <FormItem wrapperCol={{ span: 12, offset: 4 }}>
-                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                    {this.state.auditStatus == 5 ? <span></span> : <Button className="set-submit" type="primary" htmlType="submit">保存</Button>}
                 </FormItem>
             </Form >
         );
@@ -308,4 +264,53 @@ const Base = React.createClass({
     }
 });
 
-export default Base;
+export default Base;
+
+
+// <FormItem wrapperCol={{ span: 21, offset: 4 }}>
+//     <p>请上传清晰的个人身份证正反面原件照片/扫描件 (不能截图、图片内容要求完整 ),</p>
+//     <p>要求2M 以下的jpg、jpeg、gif、png格式的图片。该资料不会公开展示,仅作为审核材料使用。</p>
+// </FormItem>
+//     <FormItem
+//         {...formItemLayout}
+//         label="身份证正面"
+//     >
+//         {getFieldDecorator('oppositeIdUrl')(
+//             <Avatar name="oppositeIdUrl" urlData={this.urlData1} />
+//         )}
+//         <p>{
+//             this.state.oppositeIdUrl !== "" && this.state.oppositeIdUrl !== undefined && this.state.oppositeIdUrl !== null ?
+//                 <span><Icon style={{ 'color': '#79b5ff', 'fontSize': '14px', 'margin': '0 6px' }} type="check-circle" />已上传</span> :
+//                 <span><Icon style={{ 'color': '#fa0', 'fontSize': '14px', 'margin': '0 6px' }} type="exclamation-circle" />未上传</span>
+//         }
+//         </p>
+//     </FormItem>
+//     <FormItem
+//         {...formItemLayout}
+//         label="身份证反面"
+//     >
+//         {getFieldDecorator('positiveIdUrl')(
+//             <Avatar name="positiveIdUrl" urlData={this.urlData2} />
+//         )}
+//         <p>{
+//             this.state.positiveIdUrl !== "" && this.state.positiveIdUrl !== undefined && this.state.positiveIdUrl !== null ?
+//                 <span><Icon style={{ 'color': '#79b5ff', 'fontSize': '14px', 'margin': '0 6px' }} type="check-circle" />已上传</span> :
+//                 <span><Icon style={{ 'color': '#fa0', 'fontSize': '14px', 'margin': '0 6px' }} type="exclamation-circle" />未上传</span>
+//         }
+//         </p>
+//     </FormItem>
+//     <FormItem wrapperCol={{ span: 21, offset: 4 }}>
+//         <p className="acc-title">示例</p>
+//         <div className="idcard-img clearfix">
+//             <div>
+//                 <div className="idcard-imgbox">
+//                     <img src={card1} alt="" />
+//                 </div>
+//             </div>
+//             <div>
+//                 <div className="idcard-imgbox">
+//                     <img src={card2} alt="" />
+//                 </div>
+//             </div>
+//         </div>
+//     </FormItem>

+ 26 - 26
js/component/account/set/company.jsx

@@ -169,7 +169,7 @@ const PersonFrom = Form.create()(React.createClass({
             companyDis: 'block',
             schoolDis: 'none',
             resDis: 'none',
-            companyLifePicObj:[],
+            companyLifePicObj: [],
             aca: 0,
             PhDTutor: 0,
             MSTutor: 0,
@@ -335,18 +335,6 @@ const PersonFrom = Form.create()(React.createClass({
                 </FormItem>
 
                 <FormItem
-                    {...formItemLayout}
-                    label="单位规模"
-                >
-                    {getFieldDecorator('unitNumber', {
-                        initialValue: this.state.unitNumber
-                    })(
-                        <InputNumber />
-                        )}
-                    <span>人</span>
-                </FormItem>
-
-                <FormItem
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 20 }}
                     label="单位简介"
@@ -396,18 +384,6 @@ const PersonFrom = Form.create()(React.createClass({
                         </Select>
                         )}
                 </FormItem>
-                <FormItem style={{ 'display': this.state.companyDis }}
-                    labelCol={{ span: 3 }}
-                    wrapperCol={{ span: 6 }}
-                    label="年营业额"
-                >
-                    {getFieldDecorator('turnover', {
-                        initialValue: this.state.turnover
-                    })(
-                        <InputNumber />
-                        )}
-                    <span>万元</span>
-                </FormItem>
                 <FormItem style={{ 'display': this.state.schoolDis }}
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 8 }}
@@ -518,4 +494,28 @@ const Person = React.createClass({
     }
 });
 
-export default Person;
+export default Person;
+
+                // <FormItem
+                //     {...formItemLayout}
+                //     label="单位规模"
+                // >
+                //     {getFieldDecorator('unitNumber', {
+                //         initialValue: this.state.unitNumber
+                //     })(
+                //         <InputNumber />
+                //         )}
+                //     <span>人</span>
+                // </FormItem>
+                //                 <FormItem style={{ 'display': this.state.companyDis }}
+                //     labelCol={{ span: 3 }}
+                //     wrapperCol={{ span: 6 }}
+                //     label="年营业额"
+                // >
+                //     {getFieldDecorator('turnover', {
+                //         initialValue: this.state.turnover
+                //     })(
+                //         <InputNumber />
+                //         )}
+                //     <span>万元</span>
+                // </FormItem>

+ 5 - 2
js/component/account/set/content.jsx

@@ -11,12 +11,13 @@ import Edu from './edu.jsx';
 import Tech from './tech.jsx';
 import Pfs from './pfs.jsx';
 import Ablt from './ablt.jsx';
+import HrSituation from './hrSituation.jsx';
 
 const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
-            leftKey: 'base',
+            leftKey: 'hrSituation',
             userType: '0'
         };
     },
@@ -34,7 +35,7 @@ const Content = React.createClass({
                 this.state.leftKey = 'group';
             };
         };
-        if ( window.location.hash ) {
+        if (window.location.hash) {
             this.handlekey(window.location.hash.substr(1));
         };
     },
@@ -68,6 +69,8 @@ const Content = React.createClass({
                                 return <Company />;
                             case 'tech':
                                 return <Tech />;
+                            case 'hrSituation':
+                                return <HrSituation />;
                         };
                     })()}
                 </div>

+ 79 - 23
js/component/account/set/group.jsx

@@ -23,13 +23,17 @@ const BaseFrom = Form.create()(React.createClass({
                 if (data.data) {
                     this.setState({
                         fixedTel: data.data.fixedTel,
-                        contacts: data.data.contacts,
+                        firstContacts: data.data.firstContacts,
+                        firstMobile:data.data.firstMobil,
+                        secondContacts: data.data.secondContacts,
+                        secondMobile:data.data.secondMobil,
+                        thirdContacts: data.data.thirdContacts,
+                        thirdMobile:data.data.thirdMobil,
                         qq: data.data.qq,
                         address: data.data.postalAddress,
                         postcode: data.data.postcode,
                         legalPerson: data.data.legalPerson,
                         email: data.data.email,
-                        legalPerson:data.data.legalPerson
                     });
                 };
             }.bind(this),
@@ -43,8 +47,6 @@ const BaseFrom = Form.create()(React.createClass({
     },
     getInitialState() {
         return {
-            idcard1: '',
-            idcard2: ''
         };
     },
     componentWillMount() {
@@ -62,14 +64,19 @@ const BaseFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/user/orgIdentity",
                     data: {
-                        "contacts": values.contact,
+                        "firstContacts": values.firstContacts,
+                        "firstMobile":values.firstMobil,
+                        "secondContacts": values.secondContacts,
+                        "secondMobile":values.secondMobil,
+                        "thirdContacts": values.thirdContacts,
+                        "thirdMobile":values.thirdMobil,
                         "email": values.email,
                         "fixedTel": values.telephone,
                         "qq": values.qq,
                         "postalAddress": values.address,
                         "postcode": values.postcode,
                         "moblie": values.moblie,
-                        "legalPerson":values.legalPerson
+                        "legalPerson": values.legalPerson
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -114,17 +121,17 @@ const BaseFrom = Form.create()(React.createClass({
 
         const { getFieldDecorator } = this.props.form;
         const formItemLayout = {
-            labelCol: { span: 3 },
+            labelCol: { span: 4 },
             wrapperCol: { span: 12 },
         };
         return (
             <Form horizontal onSubmit={this.handleSubmit} className="base-form">
                 <FormItem
                     {...formItemLayout}
-                    label='联系人'
+                    label='第一联系人'
                 >
-                    {getFieldDecorator('contact', {
-                        initialValue: this.state.contacts,
+                    {getFieldDecorator('firstContacts', {
+                        initialValue: this.state.firstContacts,
                     })(
                         <Input />
                         )}
@@ -133,8 +140,56 @@ const BaseFrom = Form.create()(React.createClass({
                     {...formItemLayout}
                     label="手机号码"
                 >
-                    {getFieldDecorator('moblie', {
-                        initialValue: userData.mobile,
+                    {getFieldDecorator('firstMoblie', {
+                        initialValue: this.state.firstMoblie,
+                        rules: [
+                            {
+                                validator: this.checkPhone
+                            }],
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label='第二联系人'
+                >
+                    {getFieldDecorator('secondContacts', {
+                        initialValue: this.state.secondContacts,
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="手机号码"
+                >
+                    {getFieldDecorator('secondMobile', {
+                        initialValue: this.state.secondMobile,
+                        rules: [
+                            {
+                                validator: this.checkPhone
+                            }],
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label='第三联系人'
+                >
+                    {getFieldDecorator('thirdContacts', {
+                        initialValue: this.state.thirdContacts,
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="手机号码"
+                >
+                    {getFieldDecorator('thirdMobile', {
+                        initialValue: this.state.thirdMobile,
                         rules: [
                             {
                                 validator: this.checkPhone
@@ -186,17 +241,7 @@ const BaseFrom = Form.create()(React.createClass({
                         <Input />
                         )}
                 </FormItem>
-                <FormItem
-                    {...formItemLayout}
-                    label="法人"
-                >
-                    {getFieldDecorator('legalPerson', {
-                        initialValue: this.state.legalPerson
-                    })(
-                        <Input />
-                        )}
-                </FormItem>
-                <FormItem wrapperCol={{ span: 12, offset: 3 }}>
+                <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                 </FormItem>
             </Form >
@@ -204,6 +249,17 @@ const BaseFrom = Form.create()(React.createClass({
     },
 }));
 
+// <FormItem
+//     {...formItemLayout}
+//     label="法人"
+// >
+//     {getFieldDecorator('legalPerson', {
+//         initialValue: this.state.legalPerson
+//     })(
+//         <Input />
+//         )}
+// </FormItem>
+
 const Base = React.createClass({
     getInitialState() {
         return {

+ 219 - 0
js/component/account/set/hrSituation.jsx

@@ -0,0 +1,219 @@
+import React from 'react';
+import { Input, InputNumber, Button, Form, Icon, Spin, message } from 'antd';
+import './person.less';
+import './hrSituation.less'
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+const PersonFrom = Form.create()(React.createClass({
+    getData() {
+        this.props.spinState(true);
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            url: globalConfig.context + "/api/user/member",
+            success: function (data) {
+                if (data.data) {
+
+                }
+            }.bind(this),
+        }).always(function () {
+            this.props.spinState(false);
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+        };
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.props.spinState(true);
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/api/user/userInfo",
+                    data: {
+                        "nickname": values.nickname,
+                        "residenceProvince": cmbP,
+                        "residenceCity": cmbC,
+                        "residenceArea": cmbA,
+                        "personPortraitUrl": this.state.avatarUrlData,
+                        "lifePhotoUrl": lifePhotoUrl,
+                        "personalProfile": values.intro,
+                        "email": values.email,
+                        "fixedTelArea": this.state.fixTelArea,
+                        "fixedTel": this.state.fixTel,
+                        "fixedTelExtension": this.state.fixTelExtension,
+                        "qq": values.qq,
+                        "postalAddress": values.address,
+                        "postcode": values.postcode
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this)).always(function () {
+                    this.props.spinState(false);
+                }.bind(this));
+            }
+        });
+    },
+    componentWillMount() {
+        this.getData();
+    },
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        const formItemLayout = {
+            labelCol: { span: 8 },
+            wrapperCol: { span: 16 },
+        };
+        const FormItem = Form.Item;
+        return (
+            <Form onSubmit={this.handleSubmit} className="hrSituation-form clearfix">
+                <p className="hrSituation-title">总体情况</p>
+                <span className="hrSituation-span">总数(人)</span>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="企业职工"
+                >
+                    {getFieldDecorator('firmTotal', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <FormItem className="half-item"
+                style={{marginRight:"50%"}}
+                    {...formItemLayout}
+                    label="科技人员"
+                >
+                    {getFieldDecorator('techTotal', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <span className="hrSituation-span">在职人员(人)</span>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="企业职工"
+                >
+                    {getFieldDecorator('firmInService', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="科技人员"
+                >
+                    {getFieldDecorator('techInService', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <span className="hrSituation-span">兼职人员(人)</span>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="企业职工"
+                >
+                    {getFieldDecorator('firmPartTime', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="科技人员"
+                >
+                    {getFieldDecorator('techPartTime', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <span className="hrSituation-span">临时聘用人员(人)</span>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="企业职工"
+                >
+                    {getFieldDecorator('firmPartTime', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="科技人员"
+                >
+                    {getFieldDecorator('techPartTime', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <span className="hrSituation-span">外籍人员(人)</span>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="企业职工"
+                >
+                    {getFieldDecorator('firmForeign', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <FormItem className="half-item"
+                    {...formItemLayout}
+                    label="科技人员"
+                >
+                    {getFieldDecorator('techForeign', {
+                        initialValue: this.state.nickname || null
+                    })(
+                        <InputNumber />
+                        )}
+                </FormItem>
+                <div className="clearfix" style={{ paddingLeft: '3.3%' }}>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                </div>
+            </Form >
+        );
+    },
+}));
+
+const Person = React.createClass({
+    getInitialState() {
+        return {
+            loading: false
+        };
+    },
+    spinChange(e) {
+        this.setState({
+            loading: e
+        });
+    },
+    render() {
+        return (
+            <Spin spinning={this.state.loading} className='spin-box'>
+                <div className="set-person">
+                    <div className="acc-detail">
+                        <p className="acc-title">人力状况</p>
+                        <PersonFrom spinState={this.spinChange} />
+                    </div>
+                </div>
+            </Spin>
+        )
+    }
+});
+
+export default Person;

+ 21 - 0
js/component/account/set/hrSituation.less

@@ -0,0 +1,21 @@
+.hrSituation-form {
+    width: 100%;
+    .ant-form-item {
+        float: left;
+        .ant-input-number {
+            width: 80%;
+        }
+    }
+    .half-item {
+        width: 19%;
+    }
+    .hrSituation-title {
+        font-size: 14px;
+    }
+    .hrSituation-span {
+        float: left;
+        line-height: 32px;
+        width: 126px;
+        text-align: right;
+    }
+}

+ 3 - 0
js/component/account/set/leftTabgroup.jsx

@@ -41,6 +41,9 @@ const LeftTab = React.createClass({
                 <Menu.Item key="ablt">
                     能力标签
                 </Menu.Item>
+                <Menu.Item key="hrSituation">
+                    人力状况
+                </Menu.Item>
             </Menu>
         );
     },

+ 3 - 0
js/component/account/set/person.less

@@ -69,4 +69,7 @@
         font-size: 28px;
         color: #999;
     }
+    #cmbProvince,#cmbCity,#cmbArea {
+        border-radius: 4px;
+    }
 }

+ 5 - 5
js/component/account/topTab.jsx

@@ -19,7 +19,7 @@ const TopTab = React.createClass({
             dataType: "json",
             url: globalConfig.context + "/login",
         }).done(function (data) {
-            window.location.href = "../login.html"
+            window.location.href = globalConfig.context + "/user/login.html"
         });
     },
     render() {
@@ -27,18 +27,18 @@ const TopTab = React.createClass({
             <div className="account-top" >
                 <div className="acc-top-user">
                     <span className="acc-top-user-name">欢迎您, {userData.nickname || userData.number || this.state.username} <a onClick={this.logOut}>[ 退出 ]</a></span>
-                    <span className="acc-top-user-toindex"><a href={userData.type == 1 ? "../groupCertify.html" : "../certify.html" }>实名认证</a>&nbsp;&nbsp;&nbsp;<a href="../index.html">返回首页</a></span>
+                    <span className="acc-top-user-toindex"><a href={userData.type == 1 ? globalConfig.context + "/user/groupCertify.html" : globalConfig.context + "/user/certify.html" }>实名认证</a>&nbsp;&nbsp;&nbsp;<a href={globalConfig.context + "/user/index.html"}>返回首页</a></span>
                 </div>
                 <div className="acc-index">
                     <div className="acc-index-imgbox">
                         <img src={logo} alt="" />
                     </div>
-                    <span><a href="./index.html">会员中心首页</a></span>
+                    <span><a href={globalConfig.context + "/user/account/index.html"}>会员中心首页</a></span>
                 </div>
                 <div className="acc-top-tab">
                     <Row>
-                        <Col className={this.props.active === 'set' ? 'active' : ''} span={3}><a href="./set.html">账号设置</a></Col>
-                        <Col className={this.props.active === 'services' ? 'active' : ''} span={3}><a href="./services.html">科技服务</a></Col>
+                        <Col className={this.props.active === 'set' ? 'active' : ''} span={3}><a href={globalConfig.context + "/user/account/set.html"}>账号设置</a></Col>
+                        <Col className={this.props.active === 'services' ? 'active' : ''} span={3}><a href={globalConfig.context + "/user/account/services.html"}>科技服务</a></Col>
                         <Col className={this.props.active === 'achievement' ? 'active' : ''} span={3}><a href="./set.html">科技成果</a></Col>
                         <Col className={this.props.active === 'demand' ? 'active' : ''} span={3}><a href="./set.html">科技需求</a></Col>
                         <Col className={this.props.active === 'idea' ? 'active' : ''} span={3}><a href="./set.html">科技思想</a></Col>

+ 5 - 6
js/component/certify/audit.jsx

@@ -29,11 +29,10 @@ const Content = Form.create()(React.createClass({
                 this.props.changeStep(5);
             } else {
                 message.warning(data.error[0].message);
+                this.setState({
+                    loading: false
+                });
             }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
         }.bind(this));
     },
     componentWillMount() {
@@ -44,7 +43,7 @@ const Content = Form.create()(React.createClass({
             success: function (data) {
                 if (data.data) {
                     this.setState({
-                        bankCardNumber : data.data.bankCardNumber,
+                        bankCardNumber: data.data.bankCardNumber,
                         auditStatus: data.data.auditStatus
                     });
                 } else {
@@ -75,7 +74,7 @@ const Content = Form.create()(React.createClass({
                         </span>
                     </FormItem>
                     <FormItem wrapperCol={{ span: 12, offset: 4 }}>
-                        <Button disabled={this.state.auditStatus == "3" ? false : true } className="set-submit" type="primary" htmlType="submit">输入打款金额</Button>
+                        <Button disabled={this.state.auditStatus == "3" ? false : true} className="set-submit" type="primary" htmlType="submit">输入打款金额</Button>
                     </FormItem>
                 </Form >
             </Spin >

+ 9 - 5
js/component/certify/bank.jsx

@@ -16,7 +16,12 @@ const Content = Form.create()(React.createClass({
             url: globalConfig.context + "/api/user/userPro",
             success: function (data) {
                 if (data.data) {
-                    this.state.username = data.data.username;
+                    this.setState({
+                        username: data.data.username,
+                        bankName: data.data.username,
+                        bankAccount: data.data.bankAccount,
+                        bankCardNumber: data.data.bankCardNumber
+                    })
                 } else {
                     message.warning(data.error[0].message);
                 };
@@ -56,11 +61,10 @@ const Content = Form.create()(React.createClass({
                         this.props.changeStep(3);
                     } else {
                         message.warning(data.error[0].message);
+                        this.setState({
+                            loading: false
+                        });
                     }
-                }.bind(this)).always(function () {
-                    this.setState({
-                        loading: false
-                    });
                 }.bind(this));
             }
         });

+ 9 - 10
js/component/certify/confirm.jsx

@@ -23,11 +23,14 @@ const Content = Form.create()(React.createClass({
                         bankName: data.data.bankName,
                         bankAccount: data.data.bankAccount,
                         bankCardNumber: data.data.bankCardNumber,
-                        positiveIdUrl:data.data.positiveIdUrl,
-                        oppositeIdUrl:data.data.oppositeIdUrl
+                        positiveIdUrl: data.data.positiveIdUrl,
+                        oppositeIdUrl: data.data.oppositeIdUrl
                     });
                 } else {
                     message.warning(data.error[0].message);
+                    this.setState({
+                        loading: false
+                    });
                 }
             }.bind(this),
         }).always(function () {
@@ -60,10 +63,6 @@ const Content = Form.create()(React.createClass({
             } else {
                 message.warning(data.error[0].message);
             }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
         }.bind(this));
     },
     componentWillMount() {
@@ -106,14 +105,14 @@ const Content = Form.create()(React.createClass({
                         <div className="idcard-img clearfix">
                             <div>
                                 <div className="idcard-imgbox">
-                                    <img src={globalConfig.context + '/open/writeImage?path=' + this.state.positiveIdUrl } alt="点击查看大图" 
-                                    onClick={(e)=>{window.open(e.target.src)}}/>
+                                    <img src={globalConfig.context + '/open/writeImage?path=' + this.state.positiveIdUrl} alt="点击查看大图"
+                                        onClick={(e) => { window.open(e.target.src) }} />
                                 </div>
                             </div>
                             <div>
                                 <div className="idcard-imgbox">
-                                    <img src={globalConfig.context + '/open/writeImage?path=' + this.state.oppositeIdUrl} alt="点击查看大图" 
-                                    onClick={(e)=>{window.open(e.target.src)}}/>
+                                    <img src={globalConfig.context + '/open/writeImage?path=' + this.state.oppositeIdUrl} alt="点击查看大图"
+                                        onClick={(e) => { window.open(e.target.src) }} />
                                 </div>
                             </div>
                         </div>

+ 5 - 3
js/component/certify/content.jsx

@@ -1,6 +1,8 @@
 import React from 'react';
-import { Icon } from 'antd';
+import { Icon,message } from 'antd';
 import './certify.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
 
 import Personal from './personal.jsx';
 import Bank from './bank.jsx';
@@ -91,17 +93,17 @@ const Content = React.createClass({
                 } else {
                     message.warning(data.error[0].message);
                 };
+                this.stepNumSwith(this.state.stepNum);
             }.bind(this),
         });
     },
     getInitialState() {
         return {
             loading: false,
-            stepNum: 3
         };
     },
     componentWillMount() {
-        this.stepNumSwith(this.state.stepNum);
+        this.getData()
     },
     changeStep(i) {
         this.state.stepNum = i;

+ 9 - 10
js/component/certify/money.jsx

@@ -54,30 +54,29 @@ const Content = Form.create()(React.createClass({
                     },
                     success: function (data) {
                         if (!data.error.length) {
-                            message.success('提交成功!');
-                            this.props.change(6);
+                            message.success('审核成功!');
+                            this.props.changeStep(6);
                         } else {
                             if (isNaN(Number(data.error[0].message))) {
                                 message.warning(data.error[0].message);
+                                this.setState({
+                                    loading: false
+                                });
                             } else {
                                 switch (Number(data.error[0].message)) {
                                     case 1:
                                         message.warning("超过打款日期五日,无法确认提交!");
-                                        this.props.change(6);
+                                        this.props.changeStep(6);
                                         break;
                                     case 2:
                                         message.warning("输入错误金额次数过多!");
-                                        this.props.change(6);
+                                        this.props.changeStep(6);
                                         break;
                                 }
                             };
                         };
                     }.bind(this),
-                }).always(function () {
-                    this.setState({
-                        loading: false
-                    });
-                }.bind(this));
+                });
             }
         });
     },
@@ -98,7 +97,7 @@ const Content = Form.create()(React.createClass({
                     <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                         <p className="certify-title">输入打款金额</p>
                     </FormItem>
-                    <FormItem wrapperCol={{ span: 18, offset: 4 }}>
+                    <FormItem wrapperCol={{ span: 18}}>
                         <span>
                             请在下方输入{this.state.bankAccount}银行卡{this.state.bankCardNumber}收到的认证打款,
                             务必在收到打款5日内完成,否则将无法完成

+ 14 - 11
js/component/certify/personal.jsx

@@ -60,6 +60,8 @@ const Content = Form.create()(React.createClass({
                     addressInit('cmbProvince', 'cmbCity', 'cmbArea',
                         data.data.province, data.data.city, data.data.area);
                     this.setState({
+                        positiveIdUrl: data.data.positiveIdUrl,
+                        oppositeIdUrl: data.data.oppositeIdUrl,
                         aftUsername: data.data.aftUsername,
                         username: data.data.username,
                         idNumber: data.data.idNumber,
@@ -87,11 +89,11 @@ const Content = Form.create()(React.createClass({
             let cmbP = document.getElementById('cmbProvince').value;
             let cmbC = document.getElementById('cmbCity').value;
             let cmbA = document.getElementById('cmbArea').value;
-            if (cmbP || cmbC || cmbA) {
+            if (!cmbP || !cmbC || !cmbA) {
                 message.warning("请选择所在地!");
                 return;
             };
-            if (this.state.idCardUrl1 || this.state.idCardUrl2) {
+            if (!this.state.positiveIdUrl || !this.state.oppositeIdUrl) {
                 message.warning("请上传身份证!");
                 return;
             };
@@ -109,8 +111,8 @@ const Content = Form.create()(React.createClass({
                         aftUsername: values.aftUsername,
                         username: values.username,
                         idNumber: values.idNumber,
-                        positiveIdUrl: this.state.idCardUrl1,
-                        oppositeIdUrl: this.state.idCardUrl2,
+                        positiveIdUrl: this.state.positiveIdUrl,
+                        oppositeIdUrl: this.state.oppositeIdUrl,
                         province: cmbP,
                         city: cmbC,
                         area: cmbA,
@@ -123,11 +125,11 @@ const Content = Form.create()(React.createClass({
                         this.props.changeStep(2);
                     } else {
                         message.warning(data.error[0].message);
+                        this.reloadVCode();
+                        this.setState({
+                            loading: false
+                        });
                     }
-                }.bind(this)).always(function () {
-                    this.setState({
-                        loading: false
-                    });
                 }.bind(this));
             }
         });
@@ -155,10 +157,10 @@ const Content = Form.create()(React.createClass({
         }
     },
     getIdCardUrl1(e) {
-        this.state.idCardUrl1 = e;
+        this.state.positiveIdUrl = e;
     },
     getIdCardUrl2(e) {
-        this.state.idCardUrl2 = e;
+        this.state.oppositeIdUrl = e;
     },
     componentDidMount() {
         addressInit('cmbProvince', 'cmbCity', 'cmbArea');
@@ -202,7 +204,8 @@ const Content = Form.create()(React.createClass({
                             )}
                     </FormItem>
                     <FormItem
-                        {...formItemLayout}
+                        labelCol={{ span: 4 }}
+                        wrapperCol={{ span: 18 }}
                         label="所在地"
                     >
                         {getFieldDecorator('address')(

+ 6 - 7
js/component/certify/result.jsx

@@ -29,10 +29,6 @@ const Content = Form.create()(React.createClass({
             } else {
                 message.warning(data.error[0].message);
             }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
         }.bind(this));
     },
     componentWillMount() {
@@ -47,6 +43,9 @@ const Content = Form.create()(React.createClass({
                     });
                 } else {
                     message.warning(data.error[0].message);
+                    this.setState({
+                        loading: false
+                    });
                 };
             }.bind(this),
         });
@@ -57,7 +56,7 @@ const Content = Form.create()(React.createClass({
             <Spin spinning={this.state.loading} className="certify-spin">
                 {(() => {
                     switch (this.state.auditStatus) {
-                        case 4:
+                        case 5:
                             return <div className="certify-result-box">
                                 <p className="certify-title"
                                     style={{ 'textAlign': 'center' }}
@@ -68,7 +67,7 @@ const Content = Form.create()(React.createClass({
                                     <p>建议您下载数字证书,保障您的支付安全。</p>
                                 </div>
                             </div>;
-                        case 5:
+                        case 4:
                             return <div className="certify-result-box">
                                 <p className="certify-title"
                                     style={{ 'textAlign': 'center' }}
@@ -80,7 +79,7 @@ const Content = Form.create()(React.createClass({
                                     <p>您提交的认证资料不符合要求,未能通过实名认证;</p>
                                     <p>您输入的金额有误,未能通过实名认证;</p>
                                     <p>您未及时在规定的5天期限内输入金额,未能通过实名认证;</p>
-                                    <Button className="set-submit" type="primary" htmlType="submit">重新申请实名认证</Button>
+                                    <Button className="set-submit" type="primary" onClick={this.handleSubmit}>重新申请实名认证</Button>
                                 </div>
                             </div>;
                     };

+ 1 - 1
js/component/certify/top.jsx

@@ -13,7 +13,7 @@ const LoginTop = React.createClass({
                         <span className="text">实名认证</span>
                         <span className="alink">
                             <a href="./index.html">返回首页</a>
-                            <a href="">尊敬的{ userData.nickname || userData.number || this.state.username}</a>
+                            <a href="./account/index">尊敬的{ userData.nickname || userData.number || this.state.username}</a>
                             <a href="./login.html">退出</a>
                             <a href="./index.html">交易管理中心</a>
                             <a href="./index.html">消息</a>

+ 72 - 5
js/component/dataDic.js

@@ -2847,14 +2847,42 @@ module.exports = {
     //patent
     patentTypeList: [{
             value: "0",
-            key: "发明型专利"
-        }, {
+            key: "其他"
+        },{
             value: "1",
-            key: "科技型专利"
+            key: "已授权的专利"
         }, {
             value: "2",
-            key: "外观型专利"
-    }],
+            key: "实用新型专利"
+        }, {
+            value: "3",
+            key: "外观设计专利"
+        }, {
+            value: "4",
+            key: "软件著作权"
+        }, {
+            value: "5",
+            key: "国防专利"
+        }, {
+            value: "6",
+            key: "植物新品种"
+        }, {
+            value: "7",
+            key: "国家级农作物品种"
+        }, {
+            value: "8",
+            key: "国家新药"
+        }, {
+            value: "9",
+            key: "国家一级中药保护品种"
+        }, {
+            value: "10",
+            key: "集成电路布图设计专有权"
+        }, {
+            value: "11",
+            key: "发明专利"
+        }
+    ],
     patentStateList: [{
             value: "0",
             key: "撤销"
@@ -2899,6 +2927,45 @@ module.exports = {
         },{
             value: "2",
             key: "电学"
+        }
+    ],
+    patentGetList:[
+        {
+            value: "0",
+            key: "拥有五年以上的独占许可"
+        },{
+            value: "1",
+            key: "自主研发"
+        },{
+            value: "2",
+            key: "受让"
+        },{
+            value: "3",
+            key: "受赠"
+        },{
+            value: "4",
+            key: "并购"
         },
+    ],
+    auditStatusList:[
+        {
+            value: "0",
+            key: "未提交审核"
+        },{
+            value: "1",
+            key: "提交审核"
+        },{
+            value: "2",
+            key: "审核未打款"
+        },{
+            value: "3",
+            key: "审核已打款"
+        },{
+            value: "4",
+            key: "认证未通过"
+        },{
+            value: "5",
+            key: "已认证"
+        }
     ]
 };

+ 3 - 0
js/component/groupCertify/audit.jsx

@@ -49,6 +49,9 @@ const Content = Form.create()(React.createClass({
                     });
                 } else {
                     message.warning(data.error[0].message);
+                    this.setState({
+                            loading: false
+                        });
                 };
             }.bind(this),
         });

+ 22 - 20
js/component/groupCertify/bank.jsx

@@ -21,9 +21,9 @@ const Content = Form.create()(React.createClass({
                         data.data.locationProvince, data.data.locationCity, data.data.locationArea);
                     this.setState({
                         contactMobile: data.data.contactMobile,
-                        username: data.data.username,
+                        bankAccount: data.data.bankAccount,
                         banks: data.data.banks,
-                        banksBranch:data.data.banksBranch,
+                        bankBranch: data.data.bankBranch,
                         bankCardNumber: data.data.bankCardNumber,
                     });
                 } else {
@@ -47,7 +47,7 @@ const Content = Form.create()(React.createClass({
             let cmbP = document.getElementById('cmbProvince').value;
             let cmbC = document.getElementById('cmbCity').value;
             let cmbA = document.getElementById('cmbArea').value;
-            if ( !cmbP || !cmbC || !cmbA) {
+            if (!cmbP || !cmbC || !cmbA) {
                 message.warning("请选择所在地!");
                 return;
             };
@@ -61,13 +61,13 @@ const Content = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/user/orgNextPro",
                     data: {
-                        bankAccount: data.data.username,
+                        bankAccount: values.bankAccount,
                         banks: values.banks,
-                        banksBranch:values.banksBranch,
+                        bankBranch: values.bankBranch,
                         bankCardNumber: values.bankCardNumber,
-                        locationProvince:cmbP,
-                        locationCity:cmbC,
-                        locationArea:cmbA,
+                        locationProvince: cmbP,
+                        locationCity: cmbC,
+                        locationArea: cmbA,
                         process: 2
                     }
                 }).done(function (data) {
@@ -76,11 +76,10 @@ const Content = Form.create()(React.createClass({
                         this.props.changeStep(3);
                     } else {
                         message.warning(data.error[0].message);
+                        this.setState({
+                            loading: false
+                        });
                     }
-                }.bind(this)).always(function () {
-                    this.setState({
-                        loading: false
-                    });
                 }.bind(this));
             }
         });
@@ -116,10 +115,13 @@ const Content = Form.create()(React.createClass({
                     <FormItem
                         {...formItemLayout}
                         label="银行开户名"
-                        extra={<span><Icon type="exclamation-circle" /> 必须使用以“{this.state.username}”为开户名的银行卡进行认证</span>}
+                        extra={<span><Icon type="exclamation-circle" /> 必须使用以改名称为开户名的银行卡进行认证</span>}
                     >
-                        {getFieldDecorator('username')(
-                            <span>{this.state.username}</span>
+                        {getFieldDecorator('bankAccount',{
+                            initialValue: this.state.bankAccount || null,
+                            rules: [{required: true, message: '请输入开户银行开户名!' }]
+                        })(
+                            <Input placeholder="请输入开户银行开户名" />
                         )}
                     </FormItem>
                     <FormItem
@@ -150,12 +152,12 @@ const Content = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="银行开户支行名称"
                     >
-                        {getFieldDecorator('banksBranch', {
-                            initialValue: this.state.banksBranch || null,
+                        {getFieldDecorator('bankBranch', {
+                            initialValue: this.state.bankBranch || null,
                             rules: [{ required: true, message: '请输入银行开户支行名称!' }]
                         })(
-                            <Input placeholder="请输入银行开户支行名称"/>
-                        )}
+                            <Input placeholder="请输入银行开户支行名称" />
+                            )}
                     </FormItem>
                     <FormItem
                         {...formItemLayout}
@@ -182,7 +184,7 @@ const Content = Form.create()(React.createClass({
                         extra={
                             <span style={{ 'color': '#ea0862' }}>
                                 <Icon type="exclamation-circle" />
-                                 我们会将重要进度以短信形式通知您
+                                我们会将重要进度以短信形式通知您
                             </span>}
                     >
                         {getFieldDecorator('contactMobile')(

+ 3 - 9
js/component/groupCertify/certify.less

@@ -168,17 +168,12 @@
                             text-align: center;
                         }
                         .idcard-img {
-                            >div {
-                                float: left;
-                                margin-right: 20px;
-                                background: #c9c9c9;
                                 >.idcard-imgbox {
-                                    width: 142px;
-                                    height: 90px;
-                                    padding-top: 90px;
+                                    height: 120px;
+                                    padding-top: 120px;
                                     position: relative;
                                     img {
-                                        height: 90px;
+                                        height: 120px;
                                         position: absolute;
                                         top: 0;
                                         left: 0;
@@ -186,7 +181,6 @@
                                         border-radius: 6px;
                                     }
                                 }
-                            }
                         }
                         .getVcode {
                             height: 32px;

+ 4 - 5
js/component/groupCertify/confirm.jsx

@@ -64,11 +64,10 @@ const Content = Form.create()(React.createClass({
                 this.props.changeStep(4);
             } else {
                 message.warning(data.error[0].message);
+                this.setState({
+                    loading: false
+                });
             }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
         }.bind(this));
     },
     componentWillMount() {
@@ -110,7 +109,7 @@ const Content = Form.create()(React.createClass({
                     >
                         <div className="idcard-img clearfix">
                             <div className="idcard-imgbox">
-                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.positiveIdUrl} alt="点击查看大图"
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.licenceScanningUrl} alt="点击查看大图"
                                     onClick={(e) => { window.open(e.target.src) }} />
                             </div>
                         </div>

+ 6 - 4
js/component/groupCertify/content.jsx

@@ -1,6 +1,8 @@
 import React from 'react';
-import { Icon } from 'antd';
+import { Icon,message } from 'antd';
 import './certify.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
 
 import Personal from './personal.jsx';
 import Bank from './bank.jsx';
@@ -87,7 +89,8 @@ const Content = React.createClass({
             url: globalConfig.context + "/api/user/orgProcess",
             success: function (data) {
                 if (data.data) {
-                    this.state.stepNum = data.data.process + 1
+                    this.state.stepNum = data.data.process + 1;
+                    this.stepNumSwith(this.state.stepNum);
                 } else {
                     message.warning(data.error[0].message);
                 };
@@ -97,11 +100,10 @@ const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
-            stepNum: 3
         };
     },
     componentWillMount() {
-        this.stepNumSwith(this.state.stepNum);
+        this.getData();
     },
     changeStep(i) {
         this.state.stepNum = i;

+ 11 - 12
js/component/groupCertify/money.jsx

@@ -49,35 +49,34 @@ const Content = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/user/orgNextPro",
                     data: {
-                        amountMoney: values.amountMoney,
+                        validationAmount: values.validationAmount,
                         process: 5
                     },
                     success: function (data) {
                         if (!data.error.length) {
-                            message.success('提交成功!');
-                            this.props.change(6);
+                            message.success('审核成功!');
+                            this.props.changeStep(6);
                         } else {
                             if (isNaN(Number(data.error[0].message))) {
                                 message.warning(data.error[0].message);
+                                this.setState({
+                                    loading: false
+                                });
                             } else {
                                 switch (Number(data.error[0].message)) {
                                     case 1:
                                         message.warning("超过打款日期五日,无法确认提交!");
-                                        this.props.change(6);
+                                        this.props.changeStep(6);
                                         break;
                                     case 2:
                                         message.warning("输入错误金额次数过多!");
-                                        this.props.change(6);
+                                        this.props.changeStep(6);
                                         break;
                                 }
                             };
                         };
                     }.bind(this),
-                }).always(function () {
-                    this.setState({
-                        loading: false
-                    });
-                }.bind(this));
+                });
             }
         });
     },
@@ -98,7 +97,7 @@ const Content = Form.create()(React.createClass({
                     <FormItem wrapperCol={{ span: 12, offset: 4 }}>
                         <p className="certify-title">输入打款金额</p>
                     </FormItem>
-                    <FormItem wrapperCol={{ span: 18, offset: 4 }}>
+                    <FormItem wrapperCol={{ span: 18}}>
                         <span>
                             请在下方输入{this.state.banks}银行卡{this.state.bankCardNumber}收到的认证打款,
                             务必在收到打款5日内完成,否则将无法完成
@@ -127,7 +126,7 @@ const Content = Form.create()(React.createClass({
                         label="打款金额"
                         extra={<span style={{ 'color': '#ea0862' }}><Icon type="exclamation-circle" /> 仅有3次输入机会,如3次输入有误,需重新认证</span>}
                     >
-                        {getFieldDecorator('amountMoney', {
+                        {getFieldDecorator('validationAmount', {
                             rules: [{ required: true, message: '请输入金额!' }]
                         })(
                             <Input />

+ 34 - 29
js/component/groupCertify/personal.jsx

@@ -58,7 +58,6 @@ class UploadFile extends React.Component {
         return (
             <Upload
                 name={this.props.name}
-                showUploadList={false}
                 action={globalConfig.context + "/api/user/identity/upload"}
                 data={{ 'sign': this.props.name }}
                 beforeUpload={beforeUploadFile}
@@ -84,14 +83,18 @@ const Content = Form.create()(React.createClass({
                     addressInit('cmbProvince', 'cmbCity', 'cmbArea',
                         data.data.licenceProvince, data.data.licenceCity, data.data.licenceArea);
                     this.setState({
+                        contacts:data.data.contacts,
                         contactMobile: data.data.contactMobile,
-                        aftUsername: data.data.aft,
+                        aftUsername: data.data.aftUsername,
                         unitName: data.data.unitName,
                         registeredCapital: data.data.registeredCapital,
                         licenceNumber: data.data.licenceNumber,
                         orgCode: data.data.orgCode,
-                        legalPerson:data.data.legalPerson,
-                        legalPersonIdNumber:data.data.legalPersonIdNumber
+                        legalPerson: data.data.legalPerson,
+                        legalPersonIdCard: data.data.legalPersonIdCard,
+                        licenceScanningUrl: data.data.licenceScanningUrl,
+                        orgCodeUrl: data.data.orgCodeUrl,
+                        lastYearTaxReportUrl: data.data.lastYearTaxReportUrl
                     });
                 } else {
                     message.warning(data.error[0].message);
@@ -105,7 +108,8 @@ const Content = Form.create()(React.createClass({
     },
     getInitialState() {
         return {
-            loading: false
+            loading: false,
+            vsCodeSrc : globalConfig.context + '/open/getVCode'
         };
     },
     handleSubmit(e) {
@@ -115,19 +119,19 @@ const Content = Form.create()(React.createClass({
             let cmbP = document.getElementById('cmbProvince').value;
             let cmbC = document.getElementById('cmbCity').value;
             let cmbA = document.getElementById('cmbArea').value;
-            if (cmbP || cmbC || cmbA) {
+            if (!cmbP || !cmbC || !cmbA) {
                 message.warning("请选择所在地!");
                 return;
             };
-            if (this.state.licenceScanningUrl) {
+            if (!this.state.licenceScanningUrl) {
                 message.warning("请上传营业执照副本!");
                 return;
             };
-            if (this.state.orgCodeUrl) {
+            if (!this.state.orgCodeUrl) {
                 message.warning("请上传组织机构代码证!");
                 return;
             };
-            if (this.state.lastYearTaxReportUrl) {
+            if (!this.state.lastYearTaxReportUrl) {
                 message.warning("请上传上年度纳税报表!");
                 return;
             };
@@ -141,7 +145,7 @@ const Content = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/api/user/orgNextPro",
                     data: {
-                        contacts:values.contacts,
+                        contacts: values.contacts,
                         contactMobile: values.contactMobile,
                         aftUsername: values.aft,
                         unitName: values.unitName,
@@ -154,9 +158,9 @@ const Content = Form.create()(React.createClass({
                         orgCode: values.orgCode,
                         orgCodeUrl: this.state.orgCodeUrl,
                         lastYearTaxReportUrl: this.state.lastYearTaxReportUrl,
-                        legalPerson:values.legalPerson,
-                        legalPersonIdNumber:values.legalPersonIdNumber,
-                        captcha:values.captcha,
+                        legalPerson: values.legalPerson,
+                        legalPersonIdCard: values.legalPersonIdCard,
+                        verificationCode: values.captcha,
                         process: 1
                     }
                 }).done(function (data) {
@@ -165,11 +169,11 @@ const Content = Form.create()(React.createClass({
                         this.props.changeStep(2);
                     } else {
                         message.warning(data.error[0].message);
+                        this.reloadVCode();
+                        this.setState({
+                            loading: false
+                        });
                     }
-                }.bind(this)).always(function () {
-                    this.setState({
-                        loading: false
-                    });
                 }.bind(this));
             }
         });
@@ -216,8 +220,10 @@ const Content = Form.create()(React.createClass({
         addressInit('cmbProvince', 'cmbCity', 'cmbArea');
         this.getData();
     },
-    reloadVCode(e) {
-        e.target.src = globalConfig.context + '/open/getVCode?t=' + Math.random();
+    reloadVCode() {
+        this.setState({
+            vsCodeSrc:globalConfig.context + '/open/getVCode?t=' + Math.random()
+        });
     },
     render() {
         const FormItem = Form.Item;
@@ -256,10 +262,8 @@ const Content = Form.create()(React.createClass({
                     <FormItem
                         {...formItemLayout}
                         label="注册资金"
-                    >
-                        {getFieldDecorator('registeredCapital', {
-                            initialValue: this.state.registeredCapital || null,
-                            rules: [{ required: true, message: '请输入注册资金!' }]
+                    >   {getFieldDecorator('registeredCapital', {
+                            initialValue: this.state.registeredCapital || null
                         })(
                             <Input />
                             )}
@@ -292,8 +296,8 @@ const Content = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="法人姓名"
                     >
-                        {getFieldDecorator('contacts', {
-                            initialValue: this.state.contacts || null,
+                        {getFieldDecorator('legalPerson', {
+                            initialValue: this.state.legalPerson || null,
                             rules: [{ required: true, message: '请输入联系人姓名!' }]
                         })(
                             <Input />
@@ -303,11 +307,11 @@ const Content = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="身份证号"
                     >
-                        {getFieldDecorator('idNumber', {
+                        {getFieldDecorator('legalPersonIdCard', {
                             rules: [{
                                 validator: this.checkIdcardnum,
                             }],
-                            initialValue: this.state.idNumber || null
+                            initialValue: this.state.legalPersonIdCard || null
                         })(
                             <Input placeholder="请输入真实有效的身份证号码" />
                             )}
@@ -326,7 +330,8 @@ const Content = Form.create()(React.createClass({
                             )}
                     </FormItem>
                     <FormItem
-                        {...formItemLayout}
+                        labelCol={{ span: 6 }}
+                        wrapperCol={{ span: 18 }}
                         label="营业执照所在地"
                     >
                         {getFieldDecorator('address')(
@@ -399,7 +404,7 @@ const Content = Form.create()(React.createClass({
                             </Col>
                             <Col span={8}>
                                 <div className="getVcode">
-                                    <img id="VCode" src={globalConfig.context + '/open/getVCode'} alt="" onClick={this.reloadVCode} />
+                                    <img id="VCode" src={this.state.vsCodeSrc} alt="" onClick={this.reloadVCode} />
                                 </div>
                             </Col>
                         </Row>

+ 6 - 3
js/component/groupCertify/result.jsx

@@ -47,6 +47,9 @@ const Content = Form.create()(React.createClass({
                     });
                 } else {
                     message.warning(data.error[0].message);
+                    this.setState({
+                        loading: false
+                    });
                 };
             }.bind(this),
         });
@@ -57,7 +60,7 @@ const Content = Form.create()(React.createClass({
             <Spin spinning={this.state.loading} className="certify-spin">
                 {(() => {
                     switch (this.state.auditStatus) {
-                        case 4:
+                        case 5:
                             return <div className="certify-result-box">
                                 <p className="certify-title"
                                     style={{ 'textAlign': 'center' }}
@@ -68,7 +71,7 @@ const Content = Form.create()(React.createClass({
                                     <p>建议您下载数字证书,保障您的支付安全。</p>
                                 </div>
                             </div>;
-                        case 5:
+                        case 4:
                             return <div className="certify-result-box">
                                 <p className="certify-title"
                                     style={{ 'textAlign': 'center' }}
@@ -80,7 +83,7 @@ const Content = Form.create()(React.createClass({
                                     <p>您提交的认证资料不符合要求,未能通过实名认证;</p>
                                     <p>您输入的金额有误,未能通过实名认证;</p>
                                     <p>您未及时在规定的5天期限内输入金额,未能通过实名认证;</p>
-                                    <Button className="set-submit" type="primary" htmlType="submit">重新申请实名认证</Button>
+                                    <Button className="set-submit" type="primary" onClick={this.handleSubmit}>重新申请实名认证</Button>
                                 </div>
                             </div>;
                     };

+ 1 - 1
js/component/groupCertify/top.jsx

@@ -13,7 +13,7 @@ const LoginTop = React.createClass({
                         <span className="text">实名认证</span>
                         <span className="alink">
                             <a href="./index.html">返回首页</a>
-                            <a href="">尊敬的{ userData.nickname || userData.number || this.state.username}</a>
+                            <a href="./account/index.html">尊敬的{ userData.nickname || userData.number || this.state.username}</a>
                             <a href="./login.html">退出</a>
                             <a href="./index.html">交易管理中心</a>
                             <a href="./index.html">消息</a>

+ 1 - 1
js/component/manageCenter/bottom.less

@@ -2,7 +2,7 @@
         width: 100%;
         color: #d5e4f7;
         background: #212831;
-        position: absolute;
+        position: fixed;
         bottom: 0;
         left: 0;
         z-index: 1;

+ 1 - 1
js/component/manageCenter/content.less

@@ -1,4 +1,4 @@
-.acc-content {
+.manage-content {
     height: 100%;
     width: 100%;
     padding-top: 84px;

+ 3 - 3
js/component/manageCenter/leftTab.less

@@ -1,4 +1,4 @@
-.acc-content {
+.manage-content {
     .account-left {
         width: 16%;
         height: 100%;
@@ -29,8 +29,8 @@
             }
         }
         .ant-menu-item {
-            padding-left: 60px!important;
-            text-align: left;
+            padding-left: 0!important;
+            text-align: center;
             background: #fafafa;
             font-size: 14px;
             color: #333;

+ 254 - 0
js/component/manageCenter/servicesManage/patent/clientInputPatent.jsx

@@ -0,0 +1,254 @@
+import React from 'react';
+import { Icon, Modal, Button, Form, message, Input, Spin, Select, DatePicker } from 'antd';
+import './comprehensive.less';
+import { patentGetList, patentTypeList } from '../../../dataDic.js';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+const PatentAddFrom = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+            loading: false,
+            patentGetOption: [],
+            patentTypeOption: [],
+            companyOption:[]
+        };
+    },
+    getCompanyList() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/getUnitNames",
+            success: function (data) {
+                if (data.error.length || !data.data) {
+                    return;
+                };
+                let _me = this;
+                for (var item in data.data) {
+                    _me.state.companyOption.push(
+                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
+                    )
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    componentWillMount() {
+        let _me = this;
+        patentGetList.map(function (item) {
+            _me.state.patentGetOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        patentTypeList.map(function (item) {
+            _me.state.patentTypeOption.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        this.getCompanyList();
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.props.spinState(true);
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/techservice/patent/managerInputPatent",
+                    data: {
+                        "uid":this.state.companyId,
+                        "patentNumber": values.patentNumber,
+                        "patentName": values.patentName,
+                        "patentCatagory": this.state.patentCatagory,
+                        "obtailWay": this.state.obtailWay,
+                        "sortNumber": values.sortNumber,
+                        "authorizationNumber": values.authorizationNumber,
+                        "authorizationDate": this.state.authorizationDate
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this)).always(function () {
+                    this.props.spinState(false);
+                    this.props.closeModal();
+                    this.props.form.resetFields();
+                }.bind(this));
+            }
+        });
+    },
+    checkIdcardnum(rule, value, callback) {
+        if (!/(^\d{15}$)|(^\d{17}(\d|X)$)/.test(value)) {
+            callback('请输入正确的身份证号!');
+        } else {
+            callback();
+        }
+    },
+    render() {
+        const FormItem = Form.Item;
+        const { getFieldDecorator } = this.props.form;
+        const formItemLayout = {
+            labelCol: { span: 3 },
+            wrapperCol: { span: 12 },
+        };
+        const _me = this;
+        return (
+            <Form horizontal onSubmit={this.handleSubmit} className="person-form">
+                <FormItem
+                    {...formItemLayout}
+                    label="选择公司"
+                >
+                    {getFieldDecorator('companyId', {
+                        rules: [{ required: true, message: '请选择,公司不能为空!' }]
+                    })(
+                        <Select placeholder="请选择公司" style={{ width: 200 }}
+                            onChange={(e) => { this.state.companyId = e; }}>
+                            {this.state.companyOption}
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="专利编号"
+                >
+                    {getFieldDecorator('patentNumber', {
+                        rules: [{ required: true, message: '请输入,专利编号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入专利编号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="专利名称"
+                >
+                    {getFieldDecorator('patentName', {
+                        rules: [{ required: true, message: '请输入,专利名称不能为空!' }]
+                    })(
+                        <Input placeholder="请输入专利名称" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="排序号"
+                >
+                    {getFieldDecorator('sortNumber', {
+                        rules: [{ required: true, message: '请输入,排序号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入排序号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="专利类型"
+                >
+                    {getFieldDecorator('patentCatagory', {
+                        rules: [{ required: true, message: '请选择,专利类型不能为空!' }]
+                    })(
+                        <Select placeholder="请选择专利类型" style={{ width: 200 }}
+                            onChange={(e) => { this.state.patentCatagory = e; }}>
+                            {this.state.patentTypeOption}
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="获得方式"
+                >
+                    {getFieldDecorator('obtailWay', {
+                        rules: [{ required: true, message: '请选择,获得方式不能为空!' }]
+                    })(
+                        <Select placeholder="请选择获得方式" style={{ width: 200 }}
+                            onChange={(e) => { this.state.obtailWay = e; }}>
+                            {this.state.patentGetOption}
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="授权号"
+                >
+                    {getFieldDecorator('authorizationNumber', {
+                        rules: [{ required: true, message: '请输入,授权号不能为空!' }]
+                    })(
+                        <Input placeholder="请输入授权号" />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="授权日期"
+                >
+                    {getFieldDecorator('authorizationDate', {
+                        rules: [{ required: true, message: '请选择,授权日期不能为空!' }]
+                    })(
+                        <DatePicker style={{ width: 200 }} 
+                        onChange={(data,dataString)=>{ this.state.authorizationDate = dataString}}/>
+                        )}
+                </FormItem>
+                <FormItem>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                    <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
+                </FormItem>
+            </Form >
+        );
+    },
+}));
+
+
+const PatentAdd = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleOk() {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    spinChange(e) {
+        this.setState({
+            loading: e
+        });
+    },
+    render() {
+        return (
+            <div className="patent-addNew">
+                <Button className="patent-addNew" type="primary" onClick={this.showModal}>新专利添加<Icon type="plus" /></Button>
+                <Spin spinning={this.state.loading} className='spin-box'>
+                    <Modal title="新专利添加" visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='720px'
+                        footer=''
+                    >
+                        <PatentAddFrom spinState={this.spinChange} closeModal={this.handleCancel} />
+                    </Modal>
+                </Spin>
+            </div>
+        );
+    },
+});
+export default PatentAdd;

+ 2 - 0
js/component/manageCenter/servicesManage/patent/comprehensive.jsx

@@ -7,6 +7,7 @@ import $ from 'jquery/src/ajax';
 import './comprehensive.less';
 import PatentAdd from './comPatentAdd.jsx';
 import PatentDesc from './comPatentDesc.jsx';
+import ClientInputPatent from './clientInputPatent.jsx';
 
 const Patent = React.createClass({
     loadData(pageNo) {
@@ -340,6 +341,7 @@ const Patent = React.createClass({
                 <div className="content-title">
                     <span>专利综合管理</span>
                     <PatentAdd closeDesc={this.closeDesc}/>
+                    <ClientInputPatent closeDesc={this.closeDesc}/>
                 </div>
                 <div className="patent-query">
                     <Select placeholder="请选择" value={this.state.searchKey} style={{ width: 200 }} onChange={(e) => { this.setState({ searchKey: e, searchValue: '' }); }}>

+ 1 - 0
js/component/manageCenter/servicesManage/patent/comprehensive.less

@@ -11,6 +11,7 @@
         }
         .patent-addNew {
             float: right;
+            margin-left: 20px;
             button {
                 background: #ea0862;
                 color: #fff;

+ 1 - 1
js/component/manageCenter/servicesManage/patent/content.jsx

@@ -29,7 +29,7 @@ const Content = React.createClass({
     },
     render() {
         return (
-            <div className="acc-content">
+            <div className="manage-content">
                 <LeftTab handlekey={this.handlekey} />
                 <div className="content-right">
                     {(() => {

+ 6 - 10
js/component/manageCenter/topTab.jsx

@@ -13,18 +13,14 @@ const TopTab = React.createClass({
             username: 'username',
         };
     },
-    logOut() { 
+    logOut() {
         let theActive = this.props.active;
         $.ajax({
             method: "get",
             dataType: "json",
             url: globalConfig.context + "/login",
         }).done(function (data) {
-            if ( theActive === undefined ) {
-                window.location.href = "./login.html"
-            } else {
-                window.location.href = "../login.html"
-            }
+            window.location.href = globalConfig.context + "/admin/login.html"
         });
     },
     render() {
@@ -32,18 +28,18 @@ const TopTab = React.createClass({
             <div className="account-top" >
                 <div className="acc-top-user">
                     <span className="acc-top-user-name">欢迎您, {userData.nickname || userData.number || this.state.username} <a onClick={this.logOut}>[ 退出 ]</a></span>
-                    <span className="acc-top-user-toindex"><a href="./index.html">返回首页</a></span>
+                    <span className="acc-top-user-toindex"><a href={globalConfig.context + "/admin/index.html"}>返回首页</a></span>
                 </div>
                 <div className="acc-index">
                     <div className="acc-index-imgbox">
                         <img src={logo} alt="" />
                     </div>
-                    <span><a href="../index.html">管理中心首页</a></span>
+                    <span><a href={globalConfig.context + "/admin/index.html"}>管理中心首页</a></span>
                 </div>
                 <div className="acc-top-tab">
                     <Row>
-                        <Col className={this.props.active === 'set' ? 'active' : ''} span={3}><a href="./userManage.html">用户管理</a></Col>
-                        <Col className={this.props.active === 'services' ? 'active' : ''} span={3}><a href="./servicesManage/patent.html">科技服务管理</a></Col>
+                        <Col className={this.props.active === 'set' ? 'active' : ''} span={3}><a href={globalConfig.context + "/admin/userManage.html"}>用户管理</a></Col>
+                        <Col className={this.props.active === 'services' ? 'active' : ''} span={3}><a href={globalConfig.context + "/admin/servicesManage/patent.html"}>科技服务管理</a></Col>
                         <Col className={this.props.active === 'achievement' ? 'active' : ''} span={3}><a href="">科技成果管理</a></Col>
                         <Col className={this.props.active === 'demand' ? 'active' : ''} span={3}><a href="">科技需求管理</a></Col>
                         <Col className={this.props.active === 'idea' ? 'active' : ''} span={3}><a href="">科技思想管理</a></Col>

+ 12 - 23
js/component/manageCenter/userManage/content.jsx

@@ -1,45 +1,34 @@
 import React, { Component } from 'react';
-import '../../content.less';
-import LeftTab from '../leftTab.jsx';
-
-import Comprehensive from './comprehensive.jsx';
-import Payment from './payment.jsx';
-import Correction from './correction.jsx';
-import Express from './express.jsx';
-import ApplyFee from './applyFee.jsx';
-
+import '../content.less';
+import LeftTab from './leftTab.jsx';
+import UserList from './userList.jsx';
+import OrgList from './orgList.jsx';
 
 class Content extends Component {
     constructor() {
         super();
         this.state = {
             loading: false,
-            leftKey: <Comprehensive />,
+            leftKey: 'orgList',
         };
     }
 
-    handlekey(key) {
+    getKey(key) {
         this.setState({
             leftKey: key,
         });
     }
     render() {
         return (
-            <div className="acc-content">
-                <LeftTab handlekey={this.handlekey} />
+            <div className="manage-content">
+                <LeftTab handlekey={this.getKey.bind(this)} />
                 <div className="content-right">
                     {(() => {
                         switch (this.state.leftKey) {
-                            case 'comprehensive':
-                                return <Comprehensive />;
-                            case 'payment':
-                                return <Payment />;
-                            case 'correction':
-                                return <Correction />;
-                            case 'express':
-                                return <Express />;
-                            case 'applyFee':
-                                return <ApplyFee />;
+                            case 'userList':
+                                return <UserList />;
+                            case 'orgList':
+                                return <OrgList />;
                         };
                     })()}
                 </div>

+ 13 - 27
js/component/manageCenter/userManage/leftTab.jsx

@@ -8,7 +8,7 @@ const MenuItemGroup = Menu.ItemGroup;
 const LeftTab = React.createClass({
     getInitialState() {
         return {
-            current: 'comprehensive',
+            current: 'userList',
         };
     },
     handleClick(e) {
@@ -17,41 +17,27 @@ const LeftTab = React.createClass({
             current: e.key,
         });
     },
+    componentWillMount(){
+        if ( window.location.hash ) {
+            this.state.current = window.location.hash.substr(1);
+        };
+    },
     render() {
         return (
             <Menu onClick={this.handleClick}
                 selectedKeys={[this.state.current]}
-                defaultOpenKeys={['sub1']}
                 mode="vertical"
                 className="account-left"
-                mode="inline"
                 >
-                <SubMenu key="sub1" title={<span>专利申请管理</span>}>
-                    <Menu.Item key="comprehensive">
-                        专利综合管理
-                    </Menu.Item>
-                    <Menu.Item key="payment">
-                        待缴费专利管理
-                    </Menu.Item>
-                    <Menu.Item key="correction">
-                        补正审查通知管理
-                    </Menu.Item>
-                    <Menu.Item key="express">
-                        专利纸件收发登记
-                    </Menu.Item>
-                    <Menu.Item key="applyFee">
-                        专利申请费用管理
-                    </Menu.Item>
-                </SubMenu>
-                <SubMenu key="sub2" title={<span>软著申请管理</span>}>
-                </SubMenu>
-                <SubMenu key="sub3" title={<span>高企认定管理</span>}>
-                </SubMenu>
-                <SubMenu key="sub4" title={<span>科技项目申报管理</span>}>
-                </SubMenu>
+                <Menu.Item key="userList">
+                    个人用户列表
+                </Menu.Item>
+                <Menu.Item key="orgList">
+                    组织用户列表
+                </Menu.Item>
             </Menu>
         );
-    }
+    },
 });
 
 export default LeftTab;

+ 41 - 0
js/component/manageCenter/userManage/leftTab.less

@@ -0,0 +1,41 @@
+.acc-content {
+    .account-left {
+        width: 16%;
+        height: 100%;
+        padding-top: 40px;
+        float: left;
+        border-right: none;
+        background: #e8f2fc;
+        .ant-menu-submenu {
+            .ant-menu-submenu-title {
+                padding: 0!important;
+                margin: 0;
+                border-right: none;
+                text-align: center;
+                font-size: 16px;
+                color: #4466bf;
+                background: #d5e4f7;
+                border-top: 1px solid #f2f8fd;
+                border-bottom: 1px solid #c0d2e4;
+                &:after {
+                    font-size: 24px;
+                } 
+            }
+        }
+        .ant-menu-item { 
+            padding: 0;
+            margin: 0;
+            border-right: none;
+            text-align: center;
+            font-size: 16px;
+            color: #4466bf;
+            background: #d5e4f7;
+            border-top: 1px solid #f2f8fd;
+            border-bottom: 1px solid #c0d2e4;
+        }
+        .ant-menu-item-selected {
+            background: #fff;
+            border-left: 3px solid #58a3ff;
+        }
+    }
+}

+ 386 - 0
js/component/manageCenter/userManage/orgCertify.jsx

@@ -0,0 +1,386 @@
+import React from 'react';
+import { Icon, message, Input, Select, Button, Form } from 'antd';
+import './userList.less';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import { edulvlArr, auditStatusList } from '../../dataDic.js'
+import { addressInit } from '../../tools.js';
+
+const OrgCertify = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    loadData() {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/orgDetail",
+            data: {
+                uid: this.props.uid
+            },
+            success: function (data) {
+                if (data.error.length || !data.data) {
+                    message.warning(data.error[0].message);
+                    return;
+                }
+                addressInit('licenceProvince', 'licenceCity', 'licenceArea',
+                    data.data.licenceProvince, data.data.licenceCity, data.data.licenceArea);
+                addressInit('locationProvince', 'locationCity', 'locationArea',
+                    data.data.locationProvince, data.data.locationCity, data.data.locationArea);
+                this.setState({
+                    id: data.data.id,
+                    contacts: data.data.contacts,
+                    contactMobile: data.data.contactMobile,
+                    fixedTel: data.data.fixedTel,
+                    qq: data.data.qq,
+                    postalAddress: data.data.postalAddress,
+                    postcode: data.data.postcode,
+                    aftUsername: data.data.aftUsername,
+                    unitName: data.data.unitName,
+                    identityType: data.data.identityType, //组织性质
+                    registeredCapital: data.data.registeredCapital, //注册资金
+
+                    legalPerson: data.data.contacts,
+                    legalPersonIdCard: data.data.contacts,
+
+                    licenceNumber: data.data.licenceNumber,
+                    licenceScanningUrl: data.data.licenceScanningUrl,
+                    orgCode: data.data.orgCode,
+                    orgCodeUrl: data.data.orgCodeUrl,
+
+                    bankAccount: data.data.bankAccount,
+                    banks: data.data.banks,
+                    bankBranch: data.data.bankBranch,
+                    bankCardNumber: data.data.bankCardNumber,
+
+                    validationAmount: data.data.validationAmount, //打款金额
+                    lastYearTaxReportUrl: data.data.contacts,
+                    auditStatus: data.data.contacts,
+                    process: data.data.contacts
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/api/admin/updateOrgDetail",
+                    data: {
+                        id: this.state.id,
+                        username: values.username,
+                        sex: values.sex,
+                        idNumber: values.idNumber,
+                        aftUsername: values.aftUsername,
+                        contactMobile: values.contactMobile,
+                        bankName: values.bankName,
+                        bankAccount: values.bankAccount,
+                        bankCardNumber: values.bankCardNumber,
+                        amountMoney: values.amountMoney,
+                        auditStatus: values.auditStatus,
+                        process: values.process
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this)).always(function () {
+                    this.setState({
+                        visible: false,
+                    });
+                    this.props.closeDesc(false);
+                }.bind(this));
+            }
+        });
+    },
+    componentDidMount() {
+        addressInit('licenceProvince', 'licenceCity', 'licenceArea');
+        addressInit('locationProvince', 'locationCity', 'locationArea');
+        this.loadData();
+    },
+    componentWillReceiveProps(nextProps) {
+        if (nextProps.uid !== this.props.uid) {
+            this.loadData();
+        };
+    },
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        const FormItem = Form.Item
+        const formItemLayout = {
+            labelCol: { span: 4 },
+            wrapperCol: { span: 12 },
+        };
+        return (
+            <Form horizontal onSubmit={this.handleSubmit} className="person-form">
+                <FormItem
+                    {...formItemLayout}
+                    label="公司名称"
+                >
+                    {getFieldDecorator('unitName', {
+                        initialValue: this.state.unitName || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证名称"
+                >
+                    {getFieldDecorator('aftUsername', {
+                        initialValue: this.state.aftUsername || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="身份类型"
+                >
+                    {getFieldDecorator('identityType', {
+                        initialValue: this.state.identityType
+                    })(
+                        <Select placeholder="身份类型" style={{ width: 200 }}
+                            onChange={(e) => { this.state.identityType = e }}>
+                            {
+                                edulvlArr.map(function (item, i) {
+                                    return <Select.Option key={i} value={item} >{item}</Select.Option>
+                                })
+                            }
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="联系人"
+                >
+                    {getFieldDecorator('contacts', {
+                        initialValue: this.state.contacts || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="联系人电话"
+                >
+                    {getFieldDecorator('contactMobile', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="法人"
+                >
+                    {getFieldDecorator('legalPerson', {
+                        initialValue: this.state.contacts || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="法人身份证号"
+                >
+                    {getFieldDecorator('legalPersonIdCard', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="注册资金"
+                >
+                    {getFieldDecorator('registeredCapital', {
+                        initialValue: this.state.registeredCapital || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="营业执照编号"
+                >
+                    {getFieldDecorator('licenceNumber', {
+                        initialValue: this.state.licenceNumber || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="营业执照所在地"
+                >
+                    {getFieldDecorator('licenceAddress')(
+                        <div>
+                            <select id="licenceProvince" name="licenceProvince"></select>
+                            <select id="licenceCity" name="licenceCity"></select>
+                            <select id="licenceArea" name="licenceArea"></select>
+                        </div>
+                    )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="营业执照图片"
+                >
+                    <div className="idcard-img clearfix">
+                        {this.state.licenceScanningUrl ? <div>
+                            <div className="idcard-imgbox">
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.licenceScanningUrl} alt="点击查看大图"
+                                    onClick={(e) => { window.open(e.target.src) }} />
+                            </div>
+                        </div> : <div>未上传</div>}
+                    </div>
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="组织机构代码"
+                >
+                    {getFieldDecorator('orgCode', {
+                        initialValue: this.state.orgCode || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="组织机构代码证图片"
+                >
+                    <div className="idcard-img clearfix">
+                        {this.state.orgCodeUrl ? <div>
+                            <div className="idcard-imgbox">
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.orgCodeUrl} alt="点击查看大图"
+                                    onClick={(e) => { window.open(e.target.src) }} />
+                            </div>
+                        </div> : <div>未上传</div>}
+                    </div>
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="上年度纳税报表"
+                >
+                    <div className="idcard-img clearfix">
+                        {this.state.lastYearTaxReportUrl ? <div>
+                            <div className="idcard-imgbox">
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.lastYearTaxReportUrl} alt="点击查看大图"
+                                    onClick={(e) => { window.open(e.target.src) }} />
+                            </div>
+                        </div> : <div>未上传</div>}
+                    </div>
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="开户银行"
+                >
+                    {getFieldDecorator('contactMobile', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="开户银行支行"
+                >
+                    {getFieldDecorator('contactMobile', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="银行卡号"
+                >
+                    {getFieldDecorator('contactMobile', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="开户行所在地"
+                >
+                    {getFieldDecorator('locationAddress')(
+                        <div>
+                            <select id="locationProvince" name="locationProvince"></select>
+                            <select id="locationCity" name="locationCity"></select>
+                            <select id="locationArea" name="locationArea"></select>
+                        </div>
+                    )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="打款金额"
+                >
+                    {getFieldDecorator('validationAmount', {
+                        initialValue: this.state.validationAmount || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证状态"
+                >
+                    {getFieldDecorator('auditStatus', {
+                        initialValue: this.state.auditStatus || null
+                    })(
+                        <Select placeholder="选择认证状态" style={{ width: 200 }}
+                            onChange={(e) => { this.state.auditStatus = e }}>
+                            {
+                                auditStatusList.map(function (item, i) {
+                                    return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                                })
+                            }
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证步骤"
+                >
+                    {getFieldDecorator('process', {
+                        initialValue: this.state.process || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem wrapperCol={{ span: 12, offset: 4 }}>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                </FormItem>
+            </Form >
+        );
+    },
+}));
+
+export default OrgCertify;

+ 54 - 0
js/component/manageCenter/userManage/orgDesc.jsx

@@ -0,0 +1,54 @@
+import React from 'react';
+import { Icon, Modal, message, Spin, Button,Tabs } from 'antd';
+import './userList.less';
+import OrgCertify from './orgCertify.jsx';
+
+const OrgDesc = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.visible = nextProps.showDesc;
+    },
+    render() {
+        if (this.props.data) {
+            return (
+                <div className="patent-desc">
+                    <Spin spinning={this.state.loading} className='spin-box'>
+                        <Modal title="用户详情" visible={this.state.visible}
+                            onCancel={this.handleCancel}
+                            width='800px'
+                            footer={[]}
+                            className="admin-desc-content">
+                            <Tabs defaultActiveKey="1">
+                                <Tabs.TabPane tab="认证资料" key="1">
+                                    <OrgCertify uid={this.props.data.id} closeDesc={this.handleCancel} />
+                                </Tabs.TabPane>
+                                <Tabs.TabPane tab="Tab 2" key="2">Content of Tab Pane 2</Tabs.TabPane>
+                                <Tabs.TabPane tab="Tab 3" key="3">Content of Tab Pane 3</Tabs.TabPane>
+                            </Tabs>
+                        </Modal>
+                    </Spin>
+                </div>
+            );
+        } else {
+            return <div></div>
+        }
+    },
+});
+
+export default OrgDesc;

+ 193 - 0
js/component/manageCenter/userManage/orgList.jsx

@@ -0,0 +1,193 @@
+import React from 'react';
+import { Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './userList.less';
+import OrgDesc from './orgDesc.jsx';
+import { auditStatusList } from '../../dataDic.js';
+
+const UserList = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/orgList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                mobile: this.state.searchMobile, //登录名
+                createTime: this.state.searchTime,
+                number: this.state.searchNumber, //阿凡提号
+                auditStatus: this.state.searchAudit
+            },
+            success: function (data) {
+                if (data.error.length || !data.data || !data.data.list) {
+                    message.warning(data.error[0].message);
+                    return;
+                }
+                for (let i = 0; i < data.data.list.length; i++) {
+                    let thisdata = data.data.list[i];
+                    this.state.data.push({
+                        key: i,
+                        id: thisdata.id,
+                        mobile: thisdata.mobile,
+                        email: thisdata.email,
+                        createTime: thisdata.createTime,
+                        aftUsername: thisdata.aftUsername,
+                        number: thisdata.number,
+                        createTimeFormattedDate: thisdata.createTimeFormattedDate
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
+                this.setState({
+                    dataSource: this.state.data,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            searchMore: true,
+            data: [],
+            loading: false,
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '阿凡提号',
+                    dataIndex: 'number',
+                    key: 'number',
+                }, {
+                    title: '登录名',
+                    dataIndex: 'mobile',
+                    key: 'mobile',
+                }, {
+                    title: '认证状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => {
+                        if (text == 5) {
+                            return "已认证"
+                        } else {
+                            return "未认证"
+                        }
+                    },
+                }, {
+                    title: '注册时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }, {
+                    title: '认证名称',
+                    dataIndex: 'aftUsername',
+                    key: 'aftUsername',
+                }, {
+                    title: '联系方式',
+                    dataIndex: 'email',
+                    key: 'email',
+                }, {
+                    title: '业务员',
+                    dataIndex: 'author',
+                    key: 'author',
+                }
+            ],
+            dataSource: []
+        };
+    },
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.setState({
+            showDesc: true
+        });
+    },
+    closeDesc(e) {
+        this.state.showDesc = e;
+        this.loadData();
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+        this.state.searchAftId = "";
+        this.state.searchLoginId = "";
+        this.state.searchAuditStatus = "";
+        this.state.searchAftUsername = "";
+        this.state.searchEmail = "";
+        this.state.searchTime = [];
+        this.loadData();
+    },
+    searchSwitch() {
+        this.setState({
+            searchMore: !this.state.searchMore
+        });
+    },
+    searchcreateTime(date, dateString) {
+        this.state.createTime = dateString;
+    },
+    render() {
+        const { RangePicker } = DatePicker;
+        return (
+            <div className="user-content" >
+                <div className="content-title">
+                    <span>组织用户管理</span>
+                </div>
+                <div className="user-search">
+                    <Input placeholder="阿凡提号" onChange={(e) => { this.state.searchAftId = e.target.value; }} />
+                    <Input placeholder="登录号" onChange={(e) => { this.state.searchLoginId = e.target.value; }} />
+                    <Select placeholder="选择认证状态" style={{ width: 200 }}
+                        onChange={(e) => { this.state.searchAuditStatus = e }}>
+                        {
+                            auditStatusList.map(function (item, i) {
+                                return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                            })
+                        }
+                    </Select>
+                    <Input placeholder="认证名称" onChange={(e) => { this.state.searchAftUsername = e.target.value; }} />
+                    <Input placeholder="联系方式" onChange={(e) => { this.state.searchEmail = e.target.value; }} />
+                    <Button type="primary" onClick={this.search}>搜索</Button>
+                    <Button onClick={this.reset}>重置</Button>
+                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
+                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
+                        <p>
+                            <span>注册时间:</span><RangePicker onChange={(data,dataString)=>{this.state.searchTime = dataString }} />
+                        </p>
+                    </div>
+                </div>
+                <div className="patent-table">
+                    <Spin spinning={this.state.loading}>
+                        <Table columns={this.state.columns}
+                            dataSource={this.state.dataSource}
+                            pagination={this.state.pagination}
+                            onRowClick={this.tableRowClick} />
+                    </Spin>
+                </div>
+                <OrgDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
+            </div >
+        );
+    }
+});
+
+export default UserList;

+ 336 - 0
js/component/manageCenter/userManage/userDesc.jsx

@@ -0,0 +1,336 @@
+import React from 'react';
+import { Icon, Modal, message, Spin, Input, Select, DatePicker, Button, Radio, Form } from 'antd';
+import moment from 'moment';
+import './userList.less';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import { addressInit } from '../../tools.js';
+import { auditStatusList } from '../../dataDic.js';
+
+const UserForm = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    loadData() {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/userDetail",
+            data: {
+                uid: this.props.uid
+            },
+            success: function (data) {
+                if (data.error.length || !data.data) {
+                    message.warning(data.error[0].message);
+                    return;
+                }
+                let d = new Date()
+                if (data.data.dateOfBirthMonth && data.data.dateOfBirthYear) {
+                    d.setMonth(data.data.dateOfBirthMonth - 1);
+                    d.setYear(parseInt(data.data.dateOfBirthYear));
+                };
+                addressInit('cmbProvince', 'cmbCity', 'cmbArea',
+                    data.data.province, data.data.city, data.data.area);
+                this.setState({
+                    username: data.data.username,
+                    sex: data.data.sex,
+                    id:data.data.id,
+                    birth: d,
+                    idNumber: data.data.idNumber,
+                    positiveIdUrl: data.data.positiveIdUrl,
+                    oppositeIdUrl: data.data.oppositeIdUrl,
+                    aftUsername: data.data.aftUsername,
+                    contactMobile: data.data.contactMobile,
+                    bankName: data.data.bankName,
+                    bankAccount: data.data.bankAccount,
+                    bankCardNumber: data.data.bankCardNumber,
+                    amountMoney: data.data.amountMoney,
+                    auditStatus: String(data.data.auditStatus),
+                    process: data.data.process
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            //地址值
+            let cmbP = document.getElementById('cmbProvince').value;
+            let cmbC = document.getElementById('cmbCity').value;
+            let cmbA = document.getElementById('cmbArea').value;
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + "/api/admin/updateUserDetail",
+                    data: {
+                        id: this.state.id,
+                        username: values.username,
+                        sex: values.sex,
+                        dateOfBirthYear: values.birth ? values.birth._d.getFullYear() : undefined,
+                        dateOfBirthMonth: values.birth ? values.birth._d.getMonth() + 1 : undefined,
+                        idNumber: values.idNumber,
+                        aftUsername: values.aftUsername,
+                        province: cmbP,
+                        city: cmbC,
+                        area: cmbA,
+                        contactMobile: values.contactMobile,
+                        bankName: values.bankName,
+                        bankAccount: values.bankAccount,
+                        bankCardNumber: values.bankCardNumber,
+                        amountMoney: values.amountMoney,
+                        auditStatus: values.auditStatus,
+                        process: values.process
+                    }
+                }).done(function (data) {
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this)).always(function () {
+                    this.setState({
+                        visible: false,
+                    });
+                    this.props.closeDesc(false);
+                }.bind(this));
+            }
+        });
+    },
+    componentDidMount() {
+        addressInit('cmbProvince', 'cmbCity', 'cmbArea');
+        this.loadData();
+    },
+    componentWillReceiveProps(){
+        this.loadData();
+    },
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        const { MonthPicker } = DatePicker;
+        const FormItem = Form.Item
+        const formItemLayout = {
+            labelCol: { span: 4 },
+            wrapperCol: { span: 12 },
+        };
+        return (
+            <Form horizontal onSubmit={this.handleSubmit} className="person-form">
+                <FormItem
+                    {...formItemLayout}
+                    label="用户名"
+                >
+                    {getFieldDecorator('username', {
+                        initialValue: this.state.username || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="性别"
+                >
+                    {getFieldDecorator('sex', {
+                        initialValue: this.state.sex || null
+                    })(
+                        <Radio.Group>
+                            <Radio value="男">男</Radio>
+                            <Radio value="女">女</Radio>
+                        </Radio.Group>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="出生日期"
+                >
+                    {getFieldDecorator('birth', {
+                        initialValue: !this.state.birth ? null : moment(this.state.birth, 'YYYY/MM')
+                    })(
+                        <MonthPicker />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="身份证号"
+                >
+                    {getFieldDecorator('idNumber', {
+                        initialValue: this.state.username || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="身份证图片"
+                >
+                    <div className="idcard-img clearfix">
+                        {this.state.positiveIdUrl ? <div>
+                            <div className="idcard-imgbox">
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.positiveIdUrl} alt="点击查看大图"
+                                    onClick={(e) => { window.open(e.target.src) }} />
+                            </div>
+                        </div> : <div>未上传</div>}
+                        {this.state.oppositeIdUrl ? <div>
+                            <div className="idcard-imgbox">
+                                <img src={globalConfig.context + '/open/writeImage?path=' + this.state.oppositeIdUrl} alt="点击查看大图"
+                                    onClick={(e) => { window.open(e.target.src) }} />
+                            </div>
+                        </div> : <div>未上传</div>}
+                    </div>
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证姓名"
+                >
+                    {getFieldDecorator('aftUsername', {
+                        initialValue: this.state.aftUsername || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="联系电话"
+                >
+                    {getFieldDecorator('contactMobile', {
+                        initialValue: this.state.contactMobile || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    labelCol={{ span: 4 }}
+                    wrapperCol={{ span: 18 }}
+                    label="所在地"
+                >
+                    {getFieldDecorator('address')(
+                        <div>
+                            <select id="cmbProvince" name="cmbProvince"></select>
+                            <select id="cmbCity" name="cmbCity"></select>
+                            <select id="cmbArea" name="cmbArea"></select>
+                        </div>
+                    )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="开户银行"
+                >
+                    {getFieldDecorator('bankAccount', {
+                        initialValue: this.state.bankAccount || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="银行卡号"
+                >
+                    {getFieldDecorator('bankCardNumber', {
+                        initialValue: this.state.bankCardNumber || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="打款金额"
+                >
+                    {getFieldDecorator('amountMoney', {
+                        initialValue: this.state.amountMoney || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证状态"
+                >
+                    {getFieldDecorator('auditStatus', {
+                        initialValue: this.state.auditStatus || null
+                    })(
+                        <Select placeholder="选择认证状态" style={{ width: 200 }}
+                            onChange={(e) => { this.state.auditStatus = e }}>
+                            {
+                                auditStatusList.map(function (item, i) {
+                                    return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                                })
+                            }
+                        </Select>
+                        )}
+                </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="认证步骤"
+                >
+                    {getFieldDecorator('process', {
+                        initialValue: this.state.process || null
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
+                <FormItem wrapperCol={{ span: 12, offset: 4 }}>
+                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
+                </FormItem>
+            </Form >
+        )
+    }
+}));
+
+const PatentDesc = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.visible = nextProps.showDesc;
+    },
+    render() {
+        if (this.props.data) {
+            return (
+                <div className="patent-desc">
+                    <Spin spinning={this.state.loading} className='spin-box'>
+                        <Modal title="用户详情" visible={this.state.visible}
+                            onOk={this.checkPatentProcess} onCancel={this.handleCancel}
+                            width='800px'
+                            footer={[]}
+                            className="admin-desc-content">
+                            <UserForm uid={this.props.data.id} closeDesc={this.handleCancel} />
+                        </Modal>
+                    </Spin>
+                </div>
+            );
+        } else {
+            return <div></div>
+        }
+    },
+});
+
+export default PatentDesc;

+ 195 - 0
js/component/manageCenter/userManage/userList.jsx

@@ -0,0 +1,195 @@
+import React from 'react';
+import { Icon, Button, Input, Select, Spin, Table, Switch, message,DatePicker } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './userList.less';
+import UserDesc from './userDesc.jsx';
+import { auditStatusList } from '../../dataDic.js';
+
+const UserList = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/userList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                mobile:this.state.searchLoginId, //登录名
+                email: this.state.searchEmail, 
+                createTime: this.state.searchTime,
+                number: this.state.searchAftId, //阿凡提号
+                aftUsername : this.state.searchAftUsername,
+                auditStatus: this.state.searchAuditStatus
+            },
+            success: function (data) {
+                if (data.error.length || !data.data || !data.data.list) {
+                    message.warning(data.error[0].message);
+                    return;
+                }
+                for (let i = 0; i < data.data.list.length; i++) {
+                    let thisdata = data.data.list[i];
+                    this.state.data.push({
+                        key: i,
+                        id: thisdata.id,
+                        mobile: thisdata.mobile,
+                        email: thisdata.email,
+                        createTime: thisdata.createTime,
+                        aftUsername:thisdata.aftUsername,
+                        number: thisdata.number,
+                        createTimeFormattedDate: thisdata.createTimeFormattedDate
+                    });
+                };
+                this.state.pagination.current = data.data.pageNo;
+                this.state.pagination.total = data.data.totalCount;
+                this.setState({
+                    dataSource: this.state.data,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            searchMore: true,
+            data: [],
+            loading: false,
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '阿凡提号',
+                    dataIndex: 'number',
+                    key: 'number',
+                }, {
+                    title: '登录名',
+                    dataIndex: 'mobile',
+                    key: 'mobile',
+                }, {
+                    title: '认证状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => {
+                        if (text == 5) {
+                            return "已认证"
+                        } else {
+                            return "未认证"
+                        }
+                    },
+                }, {
+                    title: '注册时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }, {
+                    title: '认证名称',
+                    dataIndex: 'aftUsername',
+                    key: 'aftUsername',
+                }, {
+                    title: '联系方式',
+                    dataIndex: 'email',
+                    key: 'email',
+                }, {
+                    title: '业务员',
+                    dataIndex: 'author',
+                    key: 'author',
+                }
+            ],
+            dataSource: []
+        };
+    },
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.setState({
+            showDesc: true
+        });
+    },
+    closeDesc(e) {
+        this.state.showDesc = e;
+        this.loadData();
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+        this.state.searchAftId = "";
+        this.state.searchLoginId = "";
+        this.state.searchAuditStatus = "";
+        this.state.searchAftUsername = "";
+        this.state.searchEmail = "";
+        this.state.searchTime = [];
+        this.loadData();
+    },
+    searchSwitch() {
+        this.setState({
+            searchMore: !this.state.searchMore
+        });
+    },
+    searchcreateTime(date, dateString) {
+        this.state.createTime = dateString;
+    },
+    render() {
+        const { RangePicker } = DatePicker;
+        return (
+            <div className="user-content" >
+                <div className="content-title">
+                    <span>个人用户管理</span>
+                </div>
+                <div className="user-search">
+                    <Input placeholder="阿凡提号" onChange={(e) => { this.state.searchAftId = e.target.value; }} />
+                    <Input placeholder="登录号" onChange={(e) => { this.state.searchLoginId = e.target.value; }} />
+                    <Select placeholder="选择认证状态" style={{ width: 200 }}
+                        onChange={(e) => { this.state.searchAuditStatus = e }}>
+                        {
+                            auditStatusList.map(function (item, i) {
+                                return <Select.Option key={i} value={item.value} >{item.key}</Select.Option>
+                            })
+                        }
+                    </Select>
+                    <Input placeholder="认证名称" onChange={(e) => { this.state.searchAftUsername = e.target.value; }} />
+                    <Input placeholder="联系方式" onChange={(e) => { this.state.searchEmail = e.target.value; }} />
+                    <Button type="primary" onClick={this.search}>搜索</Button>
+                    <Button onClick={this.reset}>重置</Button>
+                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
+                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
+                        <p>
+                            <span>注册时间:</span><RangePicker onChange={(data,dataString)=>{this.state.searchTime = dataString }} />
+                        </p>
+                    </div>
+                </div>
+                <div className="patent-table">
+                    <Spin spinning={this.state.loading}>
+                        <Table columns={this.state.columns}
+                            dataSource={this.state.dataSource}
+                            pagination={this.state.pagination}
+                            onRowClick={this.tableRowClick} />
+                    </Spin>
+                </div>
+                <UserDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
+            </div >
+        );
+    }
+});
+
+export default UserList;

+ 41 - 0
js/component/manageCenter/userManage/userList.less

@@ -0,0 +1,41 @@
+.user-content {
+    background: #fff;
+    padding: 20px;
+    .content-title {
+        color: #333;
+        font-size: 16px;
+    }
+    .user-search {
+        margin: 10px 0;
+        >input {
+            width: 200px;
+        }
+        >input,
+        >button,
+        .ant-select {
+            margin-right: 10px;
+        }
+        .ant-switch {
+            margin-left: 10px;
+        }
+        .search-more {
+            margin: 10px 0;
+        }
+    }
+}
+
+.admin-desc-content {
+    #address,
+    #licenceAddress,
+    #locationAddress {
+        select {
+            height: 32px;
+            border-radius: 4px;
+            margin-right: 10px;
+            border-color: #d9d9d9;
+        }
+    }
+    .ant-input {
+        width: 200px;
+    }
+}

+ 12 - 8
js/component/sign/account.jsx

@@ -41,10 +41,14 @@ const LoginContent = Form.create()(React.createClass({
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
-                        window.location.href = "./login.html?1"
+                        message.success('注册成功,5秒后跳转到登录页!');
+                        let interval = setInterval(function () {
+                            window.location.href = "./login.html"
+                            clearInterval(interval);
+                        }, 5000);
                     } else {
                         message.warning(data.error[0].message);
-                        document.getElementById('VCode').src=globalConfig.context + '/open/getVCode?t=' + Math.random();
+                        document.getElementById('VCode').src = globalConfig.context + '/open/getVCode?t=' + Math.random();
                     }
                 }.bind(this)).always(function () {
                     this.setState({
@@ -147,7 +151,7 @@ const LoginContent = Form.create()(React.createClass({
                             label="密码"
                             extra={<span><Icon type="exclamation-circle" /> 建议字母、数字和符号两种以上组合,6-20个字符</span>}
                             hasFeedback
-                            >
+                        >
                             {getFieldDecorator('password', {
                                 rules: [{
                                     required: true, message: '请输入密码!',
@@ -163,7 +167,7 @@ const LoginContent = Form.create()(React.createClass({
                             label="确认密码"
                             extra={<span><Icon type="exclamation-circle" /> 请再次输入密码</span>}
                             hasFeedback
-                            >
+                        >
                             {getFieldDecorator('confirm', {
                                 rules: [{
                                     required: true, message: '请再次输入密码!',
@@ -179,7 +183,7 @@ const LoginContent = Form.create()(React.createClass({
                             label="手机号码"
                             extra={<span><Icon type="exclamation-circle" /> 请输入正确的手机号码</span>}
                             hasFeedback
-                            >
+                        >
                             {getFieldDecorator('phone', {
                                 rules: [{ required: true, message: '请输入手机号码!' },
                                 {
@@ -193,7 +197,7 @@ const LoginContent = Form.create()(React.createClass({
                             {...formItemLayout}
                             label="验证码"
                             extra={<span className="redFont"><Icon type="exclamation-circle" /> 看不清?点击图片更换验证码</span>}
-                            >
+                        >
                             <Row gutter={8}>
                                 <Col span={16}>
                                     {getFieldDecorator('captcha', {
@@ -213,7 +217,7 @@ const LoginContent = Form.create()(React.createClass({
                             {...formItemLayout}
                             label="手机验证码"
                             extra={<span><Icon type="exclamation-circle" /> 点击获取后我们将发送验证码到上面手机号</span>}
-                            >
+                        >
                             <Row gutter={8}>
                                 <Col span={16}>
                                     {getFieldDecorator('phonecaptcha', {
@@ -240,7 +244,7 @@ const LoginContent = Form.create()(React.createClass({
                     </Form>
                     <div className="account-right">
                         <p className="haveID title">已有账号 <Icon type="right" /> <a href="./login.html">直接登录</a></p>
-                        <div className="relateID" style={{'display':'none'}}>
+                        <div className="relateID" style={{ 'display': 'none' }}>
                             <p className="title">关联账号</p>
                             <p><Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button></p>
                             <p><Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button></p>

+ 14 - 10
js/component/sign/groupAccount.jsx

@@ -40,10 +40,14 @@ const Group = Form.create()(React.createClass({
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
-                        window.location.href = "./login.html"
+                        message.success('注册成功,5秒后跳转到登录页!');
+                        let interval = setInterval(function () {
+                            window.location.href = "./login.html?1"
+                            clearInterval(interval);
+                        }, 5000);
                     } else {
                         message.warning(data.error[0].message);
-                        document.getElementById('VCode').src=globalConfig.context + '/open/getVCode?t=' + Math.random();
+                        document.getElementById('VCode').src = globalConfig.context + '/open/getVCode?t=' + Math.random();
                     }
                 }.bind(this)).always(function () {
                     this.setState({
@@ -143,7 +147,7 @@ const Group = Form.create()(React.createClass({
                         label="密码"
                         extra={<span><Icon type="exclamation-circle" /> 建议字母、数字和符号两种以上组合,6-20个字符</span>}
                         hasFeedback
-                        >
+                    >
                         {getFieldDecorator('password', {
                             rules: [{
                                 required: true, message: '请输入密码!',
@@ -159,7 +163,7 @@ const Group = Form.create()(React.createClass({
                         label="确认密码"
                         extra={<span><Icon type="exclamation-circle" /> 请再次输入密码</span>}
                         hasFeedback
-                        >
+                    >
                         {getFieldDecorator('confirm', {
                             rules: [{
                                 required: true, message: '请再次输入密码!',
@@ -175,7 +179,7 @@ const Group = Form.create()(React.createClass({
                         label="手机号码"
                         hasFeedback
                         extra={<span><Icon type="exclamation-circle" /> 请输入正确的手机号码</span>}
-                        >
+                    >
                         {getFieldDecorator('phone', {
                             rules: [{ required: true, message: '请输入手机号码!' }, {
                                 validator: this.checkPhone,
@@ -188,7 +192,7 @@ const Group = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="验证码"
                         extra={<span className="redFont"><Icon type="exclamation-circle" /> 看不清?点击图片更换验证码</span>}
-                        >
+                    >
                         <Row gutter={8}>
                             <Col span={16}>
                                 {getFieldDecorator('captcha', {
@@ -199,7 +203,7 @@ const Group = Form.create()(React.createClass({
                             </Col>
                             <Col span={8}>
                                 <div className="acc-getVcode">
-                                    <img id="VCode" src={globalConfig.context + '/open/getVCode'} alt="" onClick={function (e) { e.target.src = globalConfig.context + '/open/getVcode' + Math.random(); } } />
+                                    <img id="VCode" src={globalConfig.context + '/open/getVCode'} alt="" onClick={function (e) { e.target.src = globalConfig.context + '/open/getVcode' + Math.random(); }} />
                                 </div>
                             </Col>
                         </Row>
@@ -208,7 +212,7 @@ const Group = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="手机验证码"
                         extra={<span><Icon type="exclamation-circle" /> 点击获取后我们将发送验证码到上面手机号</span>}
-                        >
+                    >
                         <Row gutter={8}>
                             <Col span={16}>
                                 {getFieldDecorator('phonecaptcha', {
@@ -227,7 +231,7 @@ const Group = Form.create()(React.createClass({
                         label="单位名称"
                         hasFeedback
                         extra={<span><Icon type="exclamation-circle" /> 请填写工商局注册的全称</span>}
-                        >
+                    >
                         {getFieldDecorator('company', {
                             rules: [{ required: true, message: '请填写公司全称!' }],
                         })(
@@ -238,7 +242,7 @@ const Group = Form.create()(React.createClass({
                         {...formItemLayout}
                         label="联系人"
                         hasFeedback
-                        >
+                    >
                         {getFieldDecorator('user', {
                             rules: [{ required: true, message: '请输入联系人姓名!' }],
                         })(