Browse Source

专利申请完成,待测试

yee 8 years ago
parent
commit
a3c09ccdc1
49 changed files with 973 additions and 547 deletions
  1. 1 1
      build/admin/index.css
  2. 15 15
      build/admin/index.html
  3. 6 6
      build/admin/index.js
  4. 15 15
      build/admin/login.html
  5. 3 3
      build/admin/login.js
  6. 1 1
      build/admin/servicesManage/patent.css
  7. 15 15
      build/admin/servicesManage/patent.html
  8. 24 24
      build/admin/servicesManage/patent.js
  9. 15 15
      build/admin/userManage.html
  10. 1 1
      build/user/account/index.css
  11. 15 15
      build/user/account/index.html
  12. 5 5
      build/user/account/index.js
  13. 1 1
      build/user/account/services.css
  14. 15 15
      build/user/account/services.html
  15. 14 14
      build/user/account/services.js
  16. 1 1
      build/user/account/set.css
  17. 15 15
      build/user/account/set.html
  18. 23 23
      build/user/account/set.js
  19. 15 15
      build/user/certify.html
  20. 2 2
      build/user/certify.js
  21. 15 15
      build/user/index.html
  22. 1 1
      build/user/login.css
  23. 15 15
      build/user/login.html
  24. 6 6
      build/user/login.js
  25. 1 1
      build/user/signIn.css
  26. 15 15
      build/user/signIn.html
  27. 9 9
      build/user/signIn.js
  28. 2 2
      build/vendors.js
  29. 61 61
      js/component/account/index/content.jsx
  30. 3 2
      js/component/account/services/patent.jsx
  31. 1 1
      js/component/account/services/patent.less
  32. 7 7
      js/component/account/services/patentAdd.jsx
  33. 2 2
      js/component/account/set/base.jsx
  34. 2 1
      js/component/account/topTab.jsx
  35. 1 1
      js/component/login/loginForm.jsx
  36. 64 118
      js/component/manageCenter/index/content.jsx
  37. 2 1
      js/component/manageCenter/leftTab.less
  38. 221 8
      js/component/manageCenter/servicesManage/patent/applyFee.jsx
  39. 129 0
      js/component/manageCenter/servicesManage/patent/applyFeeDesc.jsx
  40. 65 10
      js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx
  41. 1 0
      js/component/manageCenter/servicesManage/patent/comprehensive.jsx
  42. 48 7
      js/component/manageCenter/servicesManage/patent/comprehensive.less
  43. 1 1
      js/component/manageCenter/servicesManage/patent/content.jsx
  44. 10 5
      js/component/manageCenter/servicesManage/patent/correctionDesc.jsx
  45. 42 7
      js/component/manageCenter/servicesManage/patent/express.jsx
  46. 27 29
      js/component/manageCenter/servicesManage/patent/expressDesc.jsx
  47. 3 3
      js/component/manageCenter/topTab.jsx
  48. 2 2
      js/component/tools.js
  49. 15 15
      template/template.html

File diff suppressed because it is too large
+ 1 - 1
build/admin/index.css


+ 15 - 15
build/admin/index.html

@@ -7,21 +7,21 @@
         管理员-首页
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../admin/index.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 6 - 6
build/admin/index.js


+ 15 - 15
build/admin/login.html

@@ -7,21 +7,21 @@
         管理员-登录
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../admin/login.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 3 - 3
build/admin/login.js


File diff suppressed because it is too large
+ 1 - 1
build/admin/servicesManage/patent.css


+ 15 - 15
build/admin/servicesManage/patent.html

@@ -7,21 +7,21 @@
         管理员-科技服务管理-专利
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../../admin/servicesManage/patent.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 24 - 24
build/admin/servicesManage/patent.js


+ 15 - 15
build/admin/userManage.html

@@ -7,21 +7,21 @@
         管理员-用户管理
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 </head>
 

File diff suppressed because it is too large
+ 1 - 1
build/user/account/index.css


+ 15 - 15
build/user/account/index.html

@@ -7,21 +7,21 @@
         用户中心-首页
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../../user/account/index.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 5 - 5
build/user/account/index.js


File diff suppressed because it is too large
+ 1 - 1
build/user/account/services.css


+ 15 - 15
build/user/account/services.html

@@ -7,21 +7,21 @@
         用户中心-科技服务
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../../user/account/services.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 14 - 14
build/user/account/services.js


File diff suppressed because it is too large
+ 1 - 1
build/user/account/set.css


+ 15 - 15
build/user/account/set.html

@@ -7,21 +7,21 @@
         用户中心-设置
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../../user/account/set.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 23 - 23
build/user/account/set.js


+ 15 - 15
build/user/certify.html

@@ -7,21 +7,21 @@
         用户认证
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../user/certify.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 2 - 2
build/user/certify.js


+ 15 - 15
build/user/index.html

@@ -7,21 +7,21 @@
         用户首页
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 </head>
 

File diff suppressed because it is too large
+ 1 - 1
build/user/login.css


+ 15 - 15
build/user/login.html

@@ -7,21 +7,21 @@
         用户登录
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../user/login.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 6 - 6
build/user/login.js


File diff suppressed because it is too large
+ 1 - 1
build/user/signIn.css


+ 15 - 15
build/user/signIn.html

@@ -7,21 +7,21 @@
         用户注册
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 <link href="../user/signIn.css" rel="stylesheet"></head>
 

File diff suppressed because it is too large
+ 9 - 9
build/user/signIn.js


File diff suppressed because it is too large
+ 2 - 2
build/vendors.js


+ 61 - 61
js/component/account/index/content.jsx

@@ -40,10 +40,10 @@ const Content = React.createClass({
             success: function (data) {
                 if (data.data.personPortraitUrl && data.data.nickname) {
                     this.setState({
-                        personPortraitUrl:data.data.personPortraitUrl,
+                        personPortraitUrl: data.data.personPortraitUrl,
                         nickname: data.data.nickname,
-                        lvl:data.data.lvl,
-                        number:data.data.number
+                        lvl: data.data.lvl,
+                        number: data.data.number
                     })
                 };
             }.bind(this),
@@ -70,68 +70,68 @@ const Content = React.createClass({
     },
     render() {
         return (
-            <div className="acc-content">
-                <LeftTab handlekey={this.handlekey} />
-                <div className="content-right">
-                    <Spin spinning={this.state.loading} className='spin-box'>
-                        <div className="index-content">
-                            <div className="index-userdata clearfix">
-                                <p className="acc-title">{this.state.number}</p>
-                                <div className="userdata-img">
-                                    <img src={globalConfig.staticHost + "/upload" + this.state.personPortraitUrl} alt="" />
+                <div className="acc-content">
+                    <LeftTab handlekey={this.handlekey} />
+                    <div className="content-right">
+                        <Spin spinning={this.state.loading} className='spin-box'>
+                            <div className="index-content">
+                                <div className="index-userdata clearfix">
+                                    <p className="acc-title">{this.state.number}</p>
+                                    <div className="userdata-img">
+                                        <img src={globalConfig.staticHost + "/upload" + this.state.personPortraitUrl} alt="" />
+                                    </div>
+                                    <div className="userdata-content">
+                                        {(() => {
+                                            switch (userData.lvl || this.state.userlvl) {
+                                                case '0':
+                                                    return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
+                                                case '1':
+                                                    return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
+                                            };
+                                        })()}
+                                        <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
+                                        <p className="userdata-relate" style={{ 'display': 'none' }}>
+                                            <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
+                                            <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
+                                            <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
+                                        </p>
+                                        <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
+                                    </div>
                                 </div>
-                                <div className="userdata-content">
-                                    {(() => {
-                                        switch ( userData.lvl || this.state.userlvl) {
-                                            case '0':
-                                                return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
-                                            case '1':
-                                                return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
-                                        };
-                                    })()}
-                                    <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
-                                    <p className="userdata-relate" style={{ 'display': 'none' }}>
-                                        <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
-                                        <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
-                                        <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
-                                    </p>
-                                    <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
+                                <div className="index-record">
+                                    <p className="acc-title">我的轨迹</p>
+                                    <ul className="record-list clearfix">
+                                        <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
+                                        <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
+                                        <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
+                                        <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
+                                    </ul>
+                                </div>
+                                <div className="index-activity">
+                                    <Tabs defaultActiveKey="1" onChange={this.tabChange}>
+                                        <TabPane tab="活动" key="1">
+                                            <p className="acc-title">即将举办的活动</p>
+                                            <ul className="activity-list">
+                                                {
+                                                    this.state.activityArr.map(function (item, i) {
+                                                        return <li key={i}>
+                                                            <span className="list-type">[{item.type}]</span>
+                                                            <span className="list-title">{item.title}</span>
+                                                            <a href={item.link}>报名</a>
+                                                            <span className="list-time">{item.time}</span>
+                                                        </li>;
+                                                    })
+                                                }
+                                            </ul>
+                                        </TabPane>
+                                        <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
+                                    </Tabs>
                                 </div>
                             </div>
-                            <div className="index-record">
-                                <p className="acc-title">我的轨迹</p>
-                                <ul className="record-list clearfix">
-                                    <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
-                                    <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
-                                    <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
-                                    <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
-                                </ul>
-                            </div>
-                            <div className="index-activity">
-                                <Tabs defaultActiveKey="1" onChange={this.tabChange}>
-                                    <TabPane tab="活动" key="1">
-                                        <p className="acc-title">即将举办的活动</p>
-                                        <ul className="activity-list">
-                                            {
-                                                this.state.activityArr.map(function (item, i) {
-                                                    return <li key={i}>
-                                                        <span className="list-type">[{item.type}]</span>
-                                                        <span className="list-title">{item.title}</span>
-                                                        <a href={item.link}>报名</a>
-                                                        <span className="list-time">{item.time}</span>
-                                                    </li>;
-                                                })
-                                            }
-                                        </ul>
-                                    </TabPane>
-                                    <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
-                                </Tabs>
-                            </div>
-                        </div>
-                    </Spin>
+                        </Spin>
+                    </div>
                 </div>
-            </div>
-        )
+            )
     }
 });
 

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

@@ -1,6 +1,7 @@
 import React from 'react';
 import { Icon, Alert, Button, Input, Select, Spin, Table } from 'antd';
 import { patentTypeList, patentStateList } from '../../dataDic.js';
+import { getPatentType, getPatentState } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 import './patent.less';
@@ -37,8 +38,8 @@ const Patent = React.createClass({
                         number: thisdata.serialNumber,
                         patentNum: thisdata.patentNumber,
                         patentName: thisdata.patentName,
-                        patentType: thisdata.patentCatagory,
-                        patentState: thisdata.patentState,
+                        patentType: getPatentType(thisdata.patentCatagory),
+                        patentState: getPatentState(thisdata.patentState),
                         patentField: thisdata.patentField,
                         patentDes: thisdata.patentDes,
                         patentProryStatementUrl: thisdata.patentProryStatementUrl, //专利代理委托书

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

@@ -31,7 +31,7 @@
     .patent-query {
         margin-bottom: 10px;
         >input {
-            width: 240px;
+            width: 160px;
             margin-right: 30px;
         }
         >div {

+ 7 - 7
js/component/account/services/patentAdd.jsx

@@ -132,14 +132,14 @@ const PatentAddFrom = Form.create()(React.createClass({
         const { getFieldDecorator } = this.props.form;
         const formItemLayout = {
             labelCol: { span: 3 },
-            wrapperCol: { span: 12 },
+            wrapperCol: { span: 16 },
         };
         const _me = this;
         return (
             <Form horizontal onSubmit={this.handleSubmit} className="person-form">
                 <FormItem
                     labelCol={{ span: 24 }}
-                    wrapperCol={{ span: 18 }}
+                    wrapperCol={{ span: 24 }}
                     label="专利简要描述"
                     >
                     {getFieldDecorator('intro', {
@@ -160,7 +160,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                     })(
                         <Input className="mini-input"/>
                         )}
-                    <Checkbox onChange={this.firstInventorCheck}>是否公布</Checkbox>
+                    <Checkbox onChange={this.firstInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
@@ -180,7 +180,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('secondInventorName')(
                         <Input className="mini-input"/>
                         )}
-                    <Checkbox onChange={this.secondInventorCheck}>是否公布</Checkbox>
+                    <Checkbox onChange={this.secondInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <p>第三发明人</p>
                 <FormItem
@@ -190,7 +190,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('thirdInventorName')(
                         <Input className="mini-input"/>
                         )}
-                    <Checkbox onChange={this.thirdInventorCheck}>是否公布</Checkbox>
+                    <Checkbox onChange={this.thirdInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
@@ -201,7 +201,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                     {getFieldDecorator('avatar')(
                         <Avatar urlData={this.avatarUrl} name='patent_prory_statement' />
                     )}
-                    <span>请上传专利代理委托书</span><a href="">模板下载</a>
+                    <span>请上传专利代理委托书</span><a onClick={()=>{window.open(globalConfig.context + "/techservice/patent/downLoadTemplate")}}>模板下载</a>
                 </FormItem>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
@@ -247,7 +247,7 @@ const PatentAdd = React.createClass({
                 <Spin spinning={this.state.loading} className='spin-box'>
                     <Modal title="新专利申请" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
-                        width='800px'
+                        width='720px'
                         footer=''
                         >
                         <PatentAddFrom spinState={this.spinChange} closeModal={this.handleCancel}/>

+ 2 - 2
js/component/account/set/base.jsx

@@ -228,7 +228,7 @@ const BaseFrom = Form.create()(React.createClass({
                         <Avatar name="idcard1" urlData={this.urlData1} />
                     )}
                     <p>{
-                        this.state.idcard1 !== "" ?
+                        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>
                     }
@@ -242,7 +242,7 @@ const BaseFrom = Form.create()(React.createClass({
                         <Avatar name="idcard2" urlData={this.urlData2} />
                     )}
                     <p>{
-                        this.state.idcard2 !== "" ?
+                        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>
                     }

+ 2 - 1
js/component/account/topTab.jsx

@@ -15,10 +15,11 @@ const TopTab = React.createClass({
     },
     logOut() {
         $.ajax({
-            method: "POST",
+            method: "get",
             dataType: "json",
             url: globalConfig.context + "/login",
         }).done(function (data) {
+            debugger
                 window.location.href = "../login.html"
         });
     },

+ 1 - 1
js/component/login/loginForm.jsx

@@ -62,7 +62,7 @@ const LoginForm = Form.create()(React.createClass({
                     <FormItem>
                         {getFieldDecorator('remember', {
                             valuePropName: 'checked',
-                            initialValue: true,
+                            initialValue: false,
                         })(
                             <Checkbox>记住我</Checkbox>
                             )}

+ 64 - 118
js/component/manageCenter/index/content.jsx

@@ -7,131 +7,77 @@ import '../content.less';
 import './content.less';
 import LeftTab from './leftTab.jsx';
 
-import weixin from '../../../../image/weixin-w.png';
-import qq from '../../../../image/qq-w.png';
-import weibo from '../../../../image/weibo-w.png';
 
 const TabPane = Tabs.TabPane;
 
 const Content = React.createClass({
-    getInitialState() {
-        return {
-            per: '24',
-            loading: false,
-            userlvl: '0',
-            userid: '1234567',
-            follow: '0',
-            chengguo: '0',
-            kaifa: '0',
-            fuwu: '0',
-            xuqiu: '0',
-            activityArr: [{ type: '成果对接会', title: '龙岗区在线科技成果对接会——智能制造业专场', time: '2017-01-10', link: '' },
-            { type: '成果对接会', title: '钛白粉行业技术在线对接会', time: '2017-01-11', link: '' }]
-        };
-    },
-    getData() {
-        this.setState({
-            loading: false
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            url: globalConfig.context + "/api/user/homePage",
-            success: function (data) {
-                if (data.data.personPortraitUrl && data.data.nickname) {
-                    this.setState({
-                        personPortraitUrl:data.data.personPortraitUrl,
-                        nickname: data.data.nickname,
-                        lvl:data.data.lvl,
-                        number:data.data.number
-                    })
-                };
-            }.bind(this),
-        }).done(function (data) {
-            if (data.error.length) {
-                message.warning(data.error[0].message);
-            }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    componentDidMount() {
-        this.getData();
-    },
-    handlekey(key) {
-        this.setState({
-            leftKey: key,
-        });
-    },
-    tabChange(key) {
-
-    },
     render() {
         return (
-            <div className="acc-content">
-                <LeftTab handlekey={this.handlekey} />
-                <div className="content-right">
-                    <Spin spinning={this.state.loading} className='spin-box'>
-                        <div className="index-content">
-                            <div className="index-userdata clearfix">
-                                <p className="acc-title">{this.state.number}</p>
-                                <div className="userdata-img">
-                                    <img src={globalConfig.staticHost + "/upload" + this.state.personPortraitUrl} alt="" />
-                                </div>
-                                <div className="userdata-content">
-                                    {(() => {
-                                        switch ( userData.lvl || this.state.userlvl) {
-                                            case '0':
-                                                return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
-                                            case '1':
-                                                return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
-                                        };
-                                    })()}
-                                    <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
-                                    <p className="userdata-relate" style={{ 'display': 'none' }}>
-                                        <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
-                                        <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
-                                        <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
-                                    </p>
-                                    <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
-                                </div>
-                            </div>
-                            <div className="index-record">
-                                <p className="acc-title">我的轨迹</p>
-                                <ul className="record-list clearfix">
-                                    <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
-                                    <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
-                                    <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
-                                    <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
-                                </ul>
-                            </div>
-                            <div className="index-activity">
-                                <Tabs defaultActiveKey="1" onChange={this.tabChange}>
-                                    <TabPane tab="活动" key="1">
-                                        <p className="acc-title">即将举办的活动</p>
-                                        <ul className="activity-list">
-                                            {
-                                                this.state.activityArr.map(function (item, i) {
-                                                    return <li key={i}>
-                                                        <span className="list-type">[{item.type}]</span>
-                                                        <span className="list-title">{item.title}</span>
-                                                        <a href={item.link}>报名</a>
-                                                        <span className="list-time">{item.time}</span>
-                                                    </li>;
-                                                })
-                                            }
-                                        </ul>
-                                    </TabPane>
-                                    <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
-                                </Tabs>
-                            </div>
-                        </div>
-                    </Spin>
-                </div>
-            </div>
+            <div></div>
         )
+        // return (
+        //     <div className="acc-content">
+        //         <LeftTab handlekey={this.handlekey} />
+        //         <div className="content-right">
+        //             <Spin spinning={this.state.loading} className='spin-box'>
+        //                 <div className="index-content">
+        //                     <div className="index-userdata clearfix">
+        //                         <p className="acc-title">{this.state.number}</p>
+        //                         <div className="userdata-img">
+        //                             <img src={globalConfig.staticHost + "/upload" + this.state.personPortraitUrl} alt="" />
+        //                         </div>
+        //                         <div className="userdata-content">
+        //                             {(() => {
+        //                                 switch ( userData.lvl || this.state.userlvl) {
+        //                                     case '0':
+        //                                         return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
+        //                                     case '1':
+        //                                         return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
+        //                                 };
+        //                             })()}
+        //                             <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
+        //                             <p className="userdata-relate" style={{ 'display': 'none' }}>
+        //                                 <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
+        //                                 <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
+        //                                 <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
+        //                             </p>
+        //                             <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
+        //                         </div>
+        //                     </div>
+        //                     <div className="index-record">
+        //                         <p className="acc-title">我的轨迹</p>
+        //                         <ul className="record-list clearfix">
+        //                             <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
+        //                             <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
+        //                             <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
+        //                             <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
+        //                         </ul>
+        //                     </div>
+        //                     <div className="index-activity">
+        //                         <Tabs defaultActiveKey="1" onChange={this.tabChange}>
+        //                             <TabPane tab="活动" key="1">
+        //                                 <p className="acc-title">即将举办的活动</p>
+        //                                 <ul className="activity-list">
+        //                                     {
+        //                                         this.state.activityArr.map(function (item, i) {
+        //                                             return <li key={i}>
+        //                                                 <span className="list-type">[{item.type}]</span>
+        //                                                 <span className="list-title">{item.title}</span>
+        //                                                 <a href={item.link}>报名</a>
+        //                                                 <span className="list-time">{item.time}</span>
+        //                                             </li>;
+        //                                         })
+        //                                     }
+        //                                 </ul>
+        //                             </TabPane>
+        //                             <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
+        //                         </Tabs>
+        //                     </div>
+        //                 </div>
+        //             </Spin>
+        //         </div>
+        //     </div>
+        // )
     }
 });
 

+ 2 - 1
js/component/manageCenter/leftTab.less

@@ -29,7 +29,7 @@
             }
         }
         .ant-menu-item {
-            padding-left: 100px!important;
+            padding-left: 60px!important;
             text-align: left;
             background: #fafafa;
             font-size: 14px;
@@ -40,6 +40,7 @@
             background: #fff;
             color: #4466bf;
             font-size: 16px;
+            border-right: none;
         }
     }
 }

+ 221 - 8
js/component/manageCenter/servicesManage/patent/applyFee.jsx

@@ -1,20 +1,233 @@
 import React from 'react';
+import { Icon, Button, Select, Spin, Table, message, DatePicker } from 'antd';
+import { provinceArr } from '../../../dataDic.js';
+import { getTime, getPatentType, getPatentState } from '../../../tools.js';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './comprehensive.less';
+import ApplyFeeDesc from './applyFeeDesc.jsx';
 
-const Component = React.createClass({
+const applyFee = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/getApplicationFeeList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                locationProvince: this.state.province,
+                patentApplicationDate: this.state.searchData
+            },
+            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,
+                        cid: thisdata.cid,
+                        number: thisdata.serialNumber,
+                        province: thisdata.locationProvince,
+                        patentNumber: thisdata.patentNumber,
+                        unitName: thisdata.unitName,
+                        patentName: thisdata.patentName,
+                        authorizedDate: thisdata.authorizedDate,
+                        endTime: thisdata.authorizedDate,
+                        paymentState: thisdata.paymentState,
+                        applicationFee: thisdata.applicationFee,
+                        trialFee: thisdata.trialFee,
+                        printingFee: thisdata.printingFee,
+                        funds: thisdata.funds,
+                        reimbursement: thisdata.reimbursement,
+                    });
+                };
+                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 {
+            number: '',
+            patentNumber: '',
+            //office: 事务所,
+            province: '',
+            unitName: '',
+            patentType: '',
+            patentName: '',
+            provinceOption: [],
+            data: [],
+            download: globalConfig.context + '/api/warningreports/download',
             loading: false,
-            leftKey: 'base',
-            userType: '0'
+            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: 'patentNumber',
+                    key: 'patentNumber',
+                }, {
+                    title: '省份',
+                    dataIndex: 'province',
+                    key: 'province',
+                }, {
+                    title: '公司名称',
+                    dataIndex: 'companyName',
+                    key: 'companyName',
+                }, {
+                    title: '专利名称',
+                    dataIndex: 'patentName',
+                    key: 'patentName',
+                }, {
+                    title: '缴费状态',
+                    dataIndex: 'paymentState',
+                    key: 'paymentState',
+                    render: text => {
+                        if (text == '0') {
+                            return '待缴费'
+                        } else if (text == '1') {
+                            return '已缴费'
+                        };
+                    }
+                }, {
+                    title: '申请费',
+                    dataIndex: 'applicationFee',
+                    key: 'applicationFee',
+                }, {
+                    title: '实审费',
+                    dataIndex: 'trialFee',
+                    key: 'trialFee',
+                }, {
+                    title: '文印费',
+                    dataIndex: 'printingFee',
+                    key: 'printingFee',
+                }, {
+                    title: '是否请款',
+                    dataIndex: 'funds',
+                    key: 'funds',
+                    render: text => {
+                        if (text == '0') {
+                            return '未请款'
+                        } else if (text == '1') {
+                            return '已请款'
+                        };
+                    }
+                }, {
+                    title: '是否报销',
+                    dataIndex: 'reimbursement',
+                    key: 'reimbursement',
+                    render: text => {
+                        if (text == '0') {
+                            return '未报销'
+                        } else if (text == '1') {
+                            return '已报销'
+                        };
+                    }
+                }, {
+                    title: '申请日',
+                    dataIndex: 'authorizedDate',
+                    key: 'authorizedDate',
+                    render: text => { return getTime(text) }
+                }, {
+                    title: '缴费截止时间',
+                    dataIndex: 'endTime',
+                    key: 'endTime',
+                    render: text => { return getTime(text, 2) }
+                }
+            ],
+            dataSource: []
+        };
+    },
+    componentWillMount() {
+        let _me = this;
+        provinceArr.map(function (item) {
+            _me.state.provinceOption.push(
+                <Select.Option value={item} key={item}>{item}</Select.Option>
+            )
+        });
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        if (record.annualFeeState !== '1') {
+            this.setState({
+                showDesc: true
+            });
         };
     },
+    closeDesc(e) {
+        this.state.showDesc = e;
+        this.loadData();
+    },
+    searchAuthorizedDate(data, dataString) {
+        this.state.searchData = dataString;
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+        this.state.province = '';
+        this.state.searchData = '';
+        this.loadData();
+    },
     render() {
+        const { MonthPicker, RangePicker } = DatePicker;
         return (
-            <div>
-                专利申请费用管理
-            </div>
-        )
+            <div className="patent-content" >
+                <div className="content-title">
+                    <span>代缴年登印费专利管理</span>
+                </div>
+                <div className="patent-query">
+                    <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e }}>{this.state.provinceOption}</Select>
+                    <span>申请日:<RangePicker onChange={this.searchAuthorizedDate} /></span>
+                    <span>
+                        <Button type="primary" onClick={this.search}>搜索</Button>
+                        <Button onClick={this.reset}>重置</Button>
+                        <Button type="ghost">导出</Button>
+                    </span>
+                </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>
+                <ApplyFeeDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
+            </div >
+        );
     }
 });
 
-export default Component;
+export default applyFee;

+ 129 - 0
js/component/manageCenter/servicesManage/patent/applyFeeDesc.jsx

@@ -0,0 +1,129 @@
+import React from 'react';
+import { Icon, Modal, message, Spin, Button, Input, Radio } from 'antd';
+import './comprehensive.less';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+
+const PatentDesc = React.createClass({
+    getInitialState() {
+        return {
+            visible: false,
+            loading: false
+        };
+    },
+    showModal() {
+        this.setState({
+            visible: true,
+        });
+    },
+    handleOk() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/registerApplicationFee",
+            data: {
+                cid: this.props.data.cid,
+                applicationFee: this.state.applicationFee,
+                trialFee: this.state.applicationFee,
+                printingFee: this.state.printingFee,
+                funds: this.state.funds,
+                reimbursement: this.state.reimbursement,
+                paymentState:this.state.paymentState
+            },
+            success: function (data) {
+                if (data.error.length) {
+                    message.warning(data.error[0].message);
+                    return;
+                } else {
+                    message.success('保存成功!');
+                };
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false,
+                visible: false,
+            });
+        }.bind(this));
+        this.props.closeDesc(false);
+    },
+    handleConfirm() {
+        this.state.paymentState = 1;
+        this.handleOk();
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.visible = nextProps.showDesc;
+        if (nextProps.data) {
+            this.state.applicationFee = nextProps.data.applicationFee;
+            this.state.trialFee = nextProps.data.trialFee;
+            this.state.printingFee = nextProps.data.printingFee;
+            this.state.funds = nextProps.data.funds;
+            this.state.reimbursement = nextProps.data.reimbursement;
+            this.state.paymentState = nextProps.data.paymentState;
+        };
+    },
+    render() {
+        if (this.props.data) {
+            return (
+                <div className="applyFee-desc">
+                    <Spin spinning={this.state.loading} className='spin-box'>
+                        <Modal title="登记申请费用" visible={this.state.visible}
+                            onOk={this.handleOk} onCancel={this.handleCancel}
+                            width='360px'
+                            footer={[
+                                <Button key="submit" type="primary" size="large" onClick={this.handleOk}>保存</Button>,
+                                <Button key="confirm" type="ghost" size="large" 
+                                style={this.props.data.paymentState == 1 ? {display:'none'} : {}}
+                                onClick={this.handleConfirm}>确认缴费</Button>,
+                                <Button key="back" type="ghost" size="large" onClick={this.handleCancel}>取消</Button>,
+                            ]}
+                            className="applyFee-desc-content">
+                            <p className="applyFee-title">
+                                <span>专利号 : {this.props.data.patentNumber}</span>
+                                <span>专利名 : {this.props.data.patentName}</span>
+                            </p>
+                            <p className="applyFee-fee">
+                                <span>申请费:</span>
+                                <Input value={this.state.applicationFee} onChange={(e) => { this.setState({ applicationFee: e.target.value }); }} />
+                            </p>
+                            <p className="applyFee-fee">
+                                <span>实审费:</span>
+                                <Input value={this.state.trialFee} onChange={(e) => { this.setState({ trialFee: e.target.value }); }} />
+                            </p>
+                            <p className="applyFee-fee">
+                                <span>文印费:</span>
+                                <Input value={this.state.printingFee} onChange={(e) => { this.setState({ printingFee: e.target.value }); }} />
+                            </p>
+                            <div className="applyFee-fee">
+                                <span>是否申请:</span>
+                                <Radio.Group value={this.state.funds} onChange={(e) => { this.setState({ funds: e.target.value }) }}>
+                                    <Radio value="1">是</Radio>
+                                    <Radio value="0">否</Radio>
+                                </Radio.Group>
+                            </div>
+                            <div className="applyFee-fee">
+                                <span>是否报销:</span>
+                                <Radio.Group value={this.state.reimbursement} onChange={(e) => { this.setState({ reimbursement: e.target.value }) }}>
+                                    <Radio value="1">是</Radio>
+                                    <Radio value="0">否</Radio>
+                                </Radio.Group>
+                            </div>
+                        </Modal>
+                    </Spin>
+                </div>
+            );
+        } else {
+            return <div></div>
+        }
+    },
+});
+export default PatentDesc;

+ 65 - 10
js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx

@@ -4,7 +4,7 @@ import './comprehensive.less';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import { patentTypeList, patentFieldList, patentStateList } from '../../../dataDic.js';
-import { getBase64, beforeUpload } from '../../../tools.js';
+import { getBase64, beforeUpload, getPatentState, getTime } from '../../../tools.js';
 
 class Avatar extends React.Component {
     constructor(props) {
@@ -31,7 +31,7 @@ class Avatar extends React.Component {
                 data={{ 'sign': this.props.name }}
                 beforeUpload={beforeUpload}
                 onChange={this.handleChange.bind(this)}
-                >
+            >
                 {
                     imageUrl ?
                         <img src={imageUrl} role="presentation" className="avatar" /> :
@@ -49,9 +49,60 @@ const PatentDesc = React.createClass({
             loading: false,
             patentTypeOption: [],
             patentFieldOption: [],
-            patentStateOption: []
+            patentStateOption: [],
+            adminOption: [],
+            patentProcess: []
         };
     },
+    loadData() {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.when($.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/patentProcess",
+            data: {
+                pid: this.state.pid
+            }
+        }), $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/getAdmin"
+        })).done((data1, data2) => {
+            if (data1[0].error.length) {
+                message.warning(data1[0].error[0].message);
+                return;
+            };
+            let _me = this;
+            data1[0].data.map(function (item) {
+                _me.state.patentProcess.push(
+                    <p>
+                        <span>专利状态: {getPatentState(item.state)}</span>
+                        <span>处理时间: {getTime(item.recordTime)}</span>
+                        <span>负责人:{item.principal}</span>
+                        <span>操作人:{item.operator}</span>
+                    </p>
+                )
+            });
+            if (data2[0].error.length) {
+                message.warning(data2[0].error[0].message);
+                return;
+            };
+            for (var item in data2[0].data) {
+                _me.state.adminOption.push(
+                    <Select.Option value={item} key={item}>{data2[0].data[item]}</Select.Option>
+                )
+            };
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     componentWillMount() {
         let _me = this;
         patentTypeList.map(function (item) {
@@ -85,7 +136,11 @@ const PatentDesc = React.createClass({
         this.props.closeDesc(false);
     },
     componentWillReceiveProps(nextProps) {
-        this.state.visible = nextProps.showDesc
+        this.state.visible = nextProps.showDesc;
+        if (nextProps.data) {
+            this.state.pid = nextProps.data.pid;
+            this.loadData()
+        }
     },
     handleCancel(e) {
         this.setState({
@@ -93,13 +148,13 @@ const PatentDesc = React.createClass({
         });
         this.props.closeDesc(false);
     },
-    getPatentWritingUrl(e){
+    getPatentWritingUrl(e) {
         this.state.patentWritingUrl = e;
     },
-    getAuthorizationNoticeUrl(e){
+    getAuthorizationNoticeUrl(e) {
         this.state.authorizationNoticeUrl = e;
     },
-    getPatentCertificateUrl(e){
+    getPatentCertificateUrl(e) {
         this.state.patentCertificateUrl = e;
     },
     render() {
@@ -127,10 +182,10 @@ const PatentDesc = React.createClass({
                             </div>
                             <div>
                                 <p className="widthHalf"><span className="two2four">编号</span>:{theData.number}</p>
-                                <p className="widthHalf"><span className="seven2eight">申请号/专利号</span>:<Input value={this.state.patentNum} onChange={(e) => { this.setState({ patentNum: e.target.value }); } } /></p>
+                                <p className="widthHalf"><span className="seven2eight">申请号/专利号</span>:<Input value={this.state.patentNum} onChange={(e) => { this.setState({ patentNum: e.target.value }); }} /></p>
                             </div>
                             <div>
-                                <p className="widthHalf"><span>专利名称:</span><Input value={this.state.patentName} onChange={(e) => { this.setState({ patentName: e.target.value }); } } /></p>
+                                <p className="widthHalf"><span>专利名称:</span><Input value={this.state.patentName} onChange={(e) => { this.setState({ patentName: e.target.value }); }} /></p>
                                 <div className="widthHalf"><span className="four2eight">专利类型</span>:
                                     <Select value={this.state.patentType} style={{ width: 200 }} onChange={(e) => { this.setState({ patentType: e }); } }>{this.state.patentTypeOption}</Select>
                                 </div>
@@ -187,7 +242,7 @@ const PatentDesc = React.createClass({
                                 </p>
                                 <div className="widthThird">
                                     <span>负责人:</span>
-                                    <Select value={this.state.patentStateAdd} style={{ width: 150 }} onChange={(e) => { this.setState({ patentStateAdd: e }); } }>{this.state.patentStateOption}</Select>
+                                    <Select value={this.state.adminName} style={{ width: 150 }} onChange={(e) => { this.setState({ adminName: e }); } }>{this.state.adminOption}</Select>
                                 </div>
                             </div>
                         </Modal>

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

@@ -44,6 +44,7 @@ const Patent = React.createClass({
                     let thisdata = data.data.list[i];
                     this.state.data.push({
                         key: i,
+                        pid:thisdata.pid,
                         number: thisdata.serialNumber,
                         patentNumber: thisdata.patentNumber,
                         unitName: thisdata.unitName,

+ 48 - 7
js/component/manageCenter/servicesManage/patent/comprehensive.less

@@ -31,17 +31,17 @@
     .patent-query {
         margin-bottom: 10px;
         >input {
-            width: 240px;
-            margin-right: 30px;
+            width: 180px;
+            margin-right: 20px;
         }
         >div {
-            margin-right: 30px;
+            margin-right: 20px;
         }
-        >button {
-            margin-left: 30px;
+        button {
+            margin-left: 20px;
         }
         >span {
-            margin-left: 30px;
+            margin-left: 20px;
             >span {
                 margin-left: 10px;
             }
@@ -49,7 +49,7 @@
         .search-more {
             >p {
                 margin-top: 10px;
-                >span  {
+                >span {
                     margin-right: 10px;
                 }
             }
@@ -115,6 +115,18 @@
 
 .patent-desc-content {
     .ant-modal-body {
+        .express-desc-row {
+            margin-bottom: 16px;
+            >div {
+                line-height: 28px;
+            }
+            .ant-col-4 {
+                margin-right: 10px;
+            }
+            .ant-col-5 {
+                margin-right: 10px;
+            }
+        }
         >div {
             color: #333;
             margin-bottom: 10px;
@@ -170,6 +182,35 @@
     }
 }
 
+.applyFee-desc-content {
+    .ant-modal-body {
+        >p {
+            margin-bottom: 10px;
+        }
+        .applyFee-title {
+            span {
+                margin-right: 20px;
+                font-size: 16px;
+            }
+        }
+        .applyFee-fee {
+            margin-bottom: 10px;
+            >span {
+                margin-right: 10px;
+            }
+            >input {
+                width: 150px;
+            }
+        }
+        div.applyFee-fee {
+            span {
+                line-height: 22px;
+                vertical-align: middle;
+            }
+        }
+    }
+}
+
 // .ant-select-dropdown {
 //     .ant-select-dropdown-menu {
 //         li:first-child {

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

@@ -13,7 +13,7 @@ const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
-            leftKey: 'express',
+            leftKey: 'comprehensive',
         };
     },
     handlekey(key) {

+ 10 - 5
js/component/manageCenter/servicesManage/patent/correctionDesc.jsx

@@ -24,12 +24,13 @@ const CorrectionDesc = React.createClass({
             method: "post",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/techservice/patent/noticeOfCorrectionList",
+            url: globalConfig.context + "/techservice/patent/replyConfirm",
             data: {
-                cid : this.props.data.cid
+                pid: this.props.data.pid,
+                patentState: this.props.data.patentState
             },
             success: function (data) {
-                if ( data.error.length ) {
+                if (data.error.length) {
                     message.warning(data.error[0].message);
                     return;
                 } else {
@@ -62,7 +63,7 @@ const CorrectionDesc = React.createClass({
                             onOk={this.handleOk} onCancel={this.handleCancel}
                             width='500px'
                             footer={[
-                                <Button key="submit" type="primary" size="large" onClick={this.handleOk}>确认缴费</Button>,
+                                <Button key="submit" type="primary" size="large" onClick={this.handleOk}>确认</Button>,
                                 <Button key="back" type="ghost" size="large" onClick={this.handleCancel}>取消</Button>,
                             ]}
                             className="patent-desc-content">
@@ -70,7 +71,11 @@ const CorrectionDesc = React.createClass({
                                 <p><span>公司:</span>{this.props.data.companyName}</p>
                                 <p><span>专利:</span>{this.props.data.patentName}</p>
                                 <p><span>专利号:</span><a href="">{this.props.data.patentNumber}</a></p>
-                                <p><span>审查意见/补正通知 确认已经答复?</span></p>
+                                <p>{(() => {
+                                    if (this.props.data.patentState == 4) { return <span>审查意见</span> }
+                                    else if (this.props.data.patentState == 6) { return <span>补正通知</span> }
+                                })()}
+                                    <span>确认已经答复?</span></p>
                             </div>
                         </Modal>
                     </Spin>

+ 42 - 7
js/component/manageCenter/servicesManage/patent/express.jsx

@@ -35,13 +35,20 @@ const Express = React.createClass({
                         unitName: thisdata.unitName,
                         patentName: thisdata.patentName,
                         patentType: thisdata.patentCatagory,
-                        acceptance:[thisdata.acceptanceReceiveTime,thisdata.acceptanceIssueTime],
+                        acceptanceReceiveTime:thisdata.acceptanceReceiveTimeFormattedDate,
+                        acceptanceIssueTime:thisdata.acceptanceIssueTimeFormattedDate,
                         acceptanceTrackingNumber:thisdata.acceptanceTrackingNumber,
-                        authorization:[thisdata.authorizationReceiveTime,thisdata.authorizationIssueTime],
+                        acceptance:[thisdata.acceptanceReceiveTimeFormattedDate,thisdata.acceptanceIssueTimeFormattedDate],
+                        authorizationReceiveTime:thisdata.authorizationReceiveTimeFormattedDate,
+                        authorizationIssueTime:thisdata.authorizationIssueTimeFormattedDate,
                         authorizationTrackingNumber:thisdata.authorizationTrackingNumber,
-                        certificate:[thisdata.certificateReceiveTime,thisdata.certificateIssueTime],
+                        authorization:[thisdata.authorizationReceiveTimeFormattedDate,thisdata.authorizationIssueTimeFormattedDate],
+                        certificateReceiveTime:thisdata.certificateReceiveTimeFormattedDate,
+                        certificateIssueTime:thisdata.certificateIssueTimeFormattedDate,
                         certificateTrackingNumber:thisdata.certificateTrackingNumber,
-                        rid:thisdata.rid
+                        certificate:[thisdata.certificateReceiveTimeFormattedDate,thisdata.certificateIssueTimeFormattedDate],
+                        rid:thisdata.rid,
+                        pid:thisdata.pid
                     });
                 };
                 this.state.pagination.current = data.data.pageNo;
@@ -109,17 +116,44 @@ const Express = React.createClass({
                     title: '受理书',
                     dataIndex: 'acceptance',
                     key: 'acceptance',
-                    render: text => { return },
+                    render: text => { 
+                        if (text[1]) {
+                            return <div>已发出</div>
+                        } else {
+                            if ( text[0] ) {
+                                return <div>已收到</div>
+                            };
+                        };
+                        return <div>未收到</div> 
+                    },
                 }, {
                     title: '授权书',
                     dataIndex: 'authorization',
                     key: 'authorization',
-                    render: text => { return },
+                    render: text => { 
+                        if (text[1]) {
+                            return <div>已发出</div>
+                        } else {
+                            if ( text[0] ) {
+                                return <div>已收到</div>
+                            };
+                        };
+                        return <div>未收到</div> 
+                    },
                 }, {
                     title: '证书',
                     dataIndex: 'certificate',
                     key: 'certificate',
-                    render: text => { return },
+                    render: text => { 
+                        if (text[1]) {
+                            return <div>已发出</div>
+                        } else {
+                            if ( text[0] ) {
+                                return <div>已收到</div>
+                            };
+                        };
+                        return <div>未收到</div> 
+                    },
                 }
             ],
             dataSource: []
@@ -136,6 +170,7 @@ const Express = React.createClass({
     },
     closeDesc(e) {
         this.state.showDesc = e;
+        this.loadData();
     },
     render() {
         return (

+ 27 - 29
js/component/manageCenter/servicesManage/patent/expressDesc.jsx

@@ -10,8 +10,7 @@ const ExpressDesc = React.createClass({
     getInitialState() {
         return {
             visible: false,
-            loading: false,
-            theBool: true
+            loading: false
         };
     },
     showModal() {
@@ -30,6 +29,7 @@ const ExpressDesc = React.createClass({
             url: globalConfig.context + "/techservice/patent/saveRecieveSend",
             data: {
                 "rid": this.props.data.rid,
+                "pid": this.props.data.pid,
                 "acceptanceReceiveTime": this.state.acceptanceReceiveTime,
                 "acceptanceIssueTime": this.state.acceptanceIssueTime,
                 "acceptanceTrackingNumber": this.state.acceptanceTrackingNumber,
@@ -67,7 +67,7 @@ const ExpressDesc = React.createClass({
     },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc;
-        if (this.state.theBool && nextProps.data) {
+        if (nextProps.data) {
             this.state.acceptanceReceiveTime = nextProps.data.acceptanceReceiveTime;
             this.state.acceptanceIssueTime = nextProps.data.acceptanceIssueTime;
             this.state.acceptanceTrackingNumber = nextProps.data.acceptanceTrackingNumber;
@@ -77,15 +77,13 @@ const ExpressDesc = React.createClass({
             this.state.certificateRecieveTime = nextProps.data.certificateRecieveTime;
             this.state.certificateIssueTime = nextProps.data.certificateIssueTime;
             this.state.certificateTrackingNumber = nextProps.data.certificateTrackingNumber;
-            this.state.theBool = false;
-        }
-
+        };
     },
     render() {
         let theData = this.props.data;
         if (this.props.data) {
             return (
-                <div className="payment-desc">
+                <div className="express-desc">
                     <Spin spinning={this.state.loading} className='spin-box'>
                         <Modal title="收发登记详情" visible={this.state.visible}
                             onOk={this.handleOk} onCancel={this.handleCancel}
@@ -99,73 +97,73 @@ const ExpressDesc = React.createClass({
                                 <p className="widthHalf"><span>专利号:</span>{theData.patentNumber}</p>
                                 <p className="widthHalf"><span>专利名:</span>{theData.patentName}</p>
                             </div>
-                            <Row>
-                                <Col span={4}>收发内容</Col>
+                            <Row className="express-desc-row">
+                                <Col span={3}>收发内容</Col>
                                 <Col span={4}>收到时间</Col>
                                 <Col span={4}>发出时间</Col>
-                                <Col span={6}>发出快递单号</Col>
-                                <Col span={6}>发出快递公司</Col>
+                                <Col span={5}>发出快递单号</Col>
+                                <Col span={5}>发出快递公司</Col>
                             </Row>
-                            <Row>
-                                <Col span={4}>受理通知书</Col>
+                            <Row className="express-desc-row">
+                                <Col span={3}>受理通知书</Col>
                                 <Col span={4}>
                                     <DatePicker
-                                        value={moment(this.state.acceptanceReceiveTime)}
+                                        value={this.state.acceptanceReceiveTime ? moment(this.state.acceptanceReceiveTime) : null}
                                         onChange={(data, dataString) => { this.setState({ acceptanceReceiveTime: dataString }); }} />
                                 </Col>
                                 <Col span={4}>
                                     <DatePicker
-                                        value={moment(this.state.acceptanceIssueTime)}
+                                        value={this.state.acceptanceIssueTime ? moment(this.state.acceptanceIssueTime) : null}
                                         onChange={(data, dataString) => { this.setState({ acceptanceIssueTime: dataString }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Input value={this.state.acceptanceTrackingNumber}
                                         onChange={(e) => { this.setState({ acceptanceTrackingNumber: e.target.value }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Select defaultValue="顺丰">
                                         <Select.Option value="顺丰">顺丰</Select.Option>
                                     </Select>
                                 </Col>
                             </Row>
-                            <Row>
-                                <Col span={4}>授权通知书</Col>
+                            <Row className="express-desc-row">
+                                <Col span={3}>授权通知书</Col>
                                 <Col span={4}>
                                     <DatePicker
-                                        value={moment(this.state.authorizationReceiveTime)}
+                                        value={this.state.authorizationReceiveTime ? moment(this.state.authorizationReceiveTime) : null}
                                         onChange={(data, dataString) => { this.setState({ authorizationReceiveTime: dataString }); }} />
                                 </Col>
                                 <Col span={4}>
                                     <DatePicker
-                                        value={moment(this.state.authorizationIssueTime)}
+                                        value={this.state.authorizationIssueTime ? moment(this.state.authorizationIssueTime) : null}
                                         onChange={(data, dataString) => { this.setState({ authorizationIssueTime: dataString }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Input value={this.state.authorizationTrackingNumber}
                                         onChange={(e) => { this.setState({ authorizationTrackingNumber: e.target.value }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Select defaultValue="顺丰">
                                         <Select.Option value="顺丰">顺丰</Select.Option>
                                     </Select>
                                 </Col>
                             </Row>
-                            <Row>
-                                <Col span={4}>专利证书</Col>
+                            <Row className="express-desc-row">
+                                <Col span={3}>专利证书</Col>
                                 <Col span={4}>
                                     <DatePicker
-                                        value={moment(this.state.certificateRecieveTime)}
+                                        value={this.state.certificateRecieveTime ? moment(this.state.certificateRecieveTime) : null}
                                         onChange={(data, dataString) => { this.setState({ certificateRecieveTime: dataString }); }} />
                                 </Col>
                                 <Col span={4}>
-                                    <DatePicker value={moment(this.state.certificateIssueTime)}
+                                    <DatePicker value={this.state.certificateIssueTime ? moment(this.state.certificateIssueTime) : null}
                                         onChange={(data, dataString) => { this.setState({ certificateIssueTime: dataString }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Input value={this.state.certificateTrackingNumber}
                                         onChange={(e) => { this.setState({ certificateTrackingNumber: e.target.value }); }} />
                                 </Col>
-                                <Col span={6}>
+                                <Col span={5}>
                                     <Select defaultValue="顺丰">
                                         <Select.Option value="顺丰">顺丰</Select.Option>
                                     </Select>

+ 3 - 3
js/component/manageCenter/topTab.jsx

@@ -15,18 +15,18 @@ const TopTab = React.createClass({
     },
     logOut() {
         $.ajax({
-            method: "POST",
+            method: "get",
             dataType: "json",
             url: globalConfig.context + "/login",
         }).done(function (data) {
-                window.location.href = "../login.html"
+            window.location.href = "../admin/login.html"
         });
     },
     render() {
         return (
             <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-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>
                 </div>
                 <div className="acc-index">

+ 2 - 2
js/component/tools.js

@@ -113,7 +113,7 @@ module.exports = {
         if (e) {
             let theType = '';
             patentTypeList.map(function (item) {
-                if (item.value === e) {
+                if (item.value == e) {
                     theType = item.key;
                 };
             });
@@ -124,7 +124,7 @@ module.exports = {
         if (e) {
             let theState = '';
             patentStateList.map(function (item) {
-                if (item.value === e) {
+                if (item.value == e) {
                     theState = item.key;
                 };
             });

+ 15 - 15
template/template.html

@@ -7,21 +7,21 @@
         <%= htmlWebpackPlugin.options.title %>
     </title>
     <script>
-        window.userData = {
-            mobile: "13600000000",
-            nickname: "Lina",
-            number: "80000",
-            type: "0",
-            email: "test@aft.com",
-            createTime: "123456789000",
-            lvl: "0"
-        }
-        window.globalConfig = {
-            context: "//aft.hnzhiming.com:8080/aft",
-            staticHost: "//aft.hnzhiming.com",
-            uploadPath: "/data/wwwroot/aft/upload",
-            uploadPrivatePath: "/data/upload"
-        }
+        // window.userData = {
+        //     mobile: "13600000000",
+        //     nickname: "Lina",
+        //     number: "80000",
+        //     type: "0",
+        //     email: "test@aft.com",
+        //     createTime: "123456789000",
+        //     lvl: "0"
+        // }
+        // window.globalConfig = {
+        //     context: "//aft.hnzhiming.com:8080/aft",
+        //     staticHost: "//aft.hnzhiming.com",
+        //     uploadPath: "/data/wwwroot/aft/upload",
+        //     uploadPrivatePath: "/data/upload"
+        // }
     </script>
 </head>