Browse Source

用户设置可用,专利管理bug修复中

yee 8 years ago
parent
commit
f0ee601754
33 changed files with 445 additions and 1192 deletions
  1. 0 754
      apidoc.md
  2. 1 1
      build/admin/index.js
  3. 1 1
      build/admin/servicesManage/patent.css
  4. 25 25
      build/admin/servicesManage/patent.js
  5. 1 1
      build/user/account/index.js
  6. 1 1
      build/user/account/services.css
  7. 15 15
      build/user/account/services.js
  8. 9 9
      build/user/account/set.js
  9. 2 2
      build/user/certify.js
  10. 2 2
      build/user/login.js
  11. 2 2
      build/user/signIn.js
  12. 2 2
      build/vendors.js
  13. 1 1
      js/component/account/index/content.jsx
  14. 18 14
      js/component/account/services/patent.jsx
  15. 17 0
      js/component/account/services/patent.less
  16. 44 37
      js/component/account/services/patentAdd.jsx
  17. 87 12
      js/component/account/services/patentDesc.jsx
  18. 23 22
      js/component/account/set/company.jsx
  19. 1 1
      js/component/account/set/edu.jsx
  20. 21 9
      js/component/account/set/group.jsx
  21. 4 4
      js/component/account/set/pfs.jsx
  22. 1 1
      js/component/account/set/tech.jsx
  23. 2 3
      js/component/account/topTab.jsx
  24. 1 10
      js/component/dataDic.js
  25. 10 7
      js/component/manageCenter/servicesManage/patent/applyFee.jsx
  26. 9 4
      js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx
  27. 70 17
      js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx
  28. 24 11
      js/component/manageCenter/servicesManage/patent/comprehensive.jsx
  29. 6 0
      js/component/manageCenter/servicesManage/patent/comprehensive.less
  30. 32 219
      js/component/manageCenter/servicesManage/patent/correction.jsx
  31. 4 1
      js/component/manageCenter/servicesManage/patent/payment.jsx
  32. 7 2
      js/component/manageCenter/topTab.jsx
  33. 2 2
      js/component/tools.js

+ 0 - 754
apidoc.md

@@ -1,754 +0,0 @@
-
-# 接口文档
-
-# /register
-
-注册
-type 0为个人会员/1为团体会员
-request data
-```json
-{
-    "mobile": "13600000000",
-	"password": "123456",
-	"type"    :1,
-	"companyName" : "XX科技股份有限公司",
-	"contacts"    : "张三",
-	"verificationCode" : "AE5F",
-	"mobileCode" : "234567"
-}
-```
-response data 
-
-```json
-{
-  "data": {
-    "id": 7,
-    "mobile": "13600000000",
-    "nickname": "",
-    "email": "",
-    "createTime": 1474860123000,
-    "number": 8000000,
-    "type": 0
-  },
-  "error": []
-}
-```
-
-/login  (method=get)
-登出
-
-# /signin  
-登录
-request data
-
-```json
-{
-	"mobile": "13600000000",
-	"password": "123456",
-	"type"    :0,
-	"remember":false
-}
-``` 
-
-response data 
-
-```json
-{"data":
-	{"id":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"mobile":"13600000000",
-	"password":"8af978dd914c6c17a9f3bc55bc7970b9",
-	"nickname":"Lion",
-	"email":"123@xx.com",
-	"createTime":1483341341000,
-	"number":12,
-	"type":0
-	},
-    "error":[]
-}
-```
-
-/api/user/afterSignIn    (method = get)
-登陆后获取用户基本信息
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-```json
-{
-	"data":{
-	"id":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"mobile":"13600000000",
-	"password":"",
-	"nickname":"Lion",
-	"email":"8590856@1633.com",
-	"createTime":1483341341000,
-	"number":12,
-	"type":0
-	},
-	"error":[]
-}
-```
-
-
-response data
-
-/open/getVCode    (method=get)
-获取验证码
-
-/open/getMCode   (method=get)
-获取手机验证码
-request data
-{
-  "mobile" : "18273127971"  
-} 
-
-{
-"data":null,
-"error":[{"field":"","message":"手机验证码发送频繁"}]
-}
-
-/api/user/avatar/upload   
-上传非认证资料图片
-{"data":"/avatar/158209360315077.jpg","error":[]}
-
-/api/user/avatar/uploadReplace
-上传非认证资料图片(替换)
-{
-   "sign":"XX"
-}
-
-response data
-
-
-
-
-/api/user/identity/upload   
-上传认证资料图片
-request data
-{
-   "sign":"idcard1"
-}
-
-response data
-{"data":"/identity/158209360315077idcard1.jpg","error":[]}
-
-
-下载展示图片(认证+非认证)
-/open/downLoadPicture  
-{"data":
-   {
-  "path":"/identity/235443200453591idcard1.jpg",
-   "isPrivate": true 
-}
-}
-
-
-/api/user/pwd
-修改密码
-request data
-
-{
-  "password" : "123456" ,
-  "newPassword" : "123456"
-}
-
-response data
-{"data":1,       (1为成功)
- "error":[]
-}
-
-/api/user/mobile
-更换手机
-request data
-
-{
-  "mobile" : "13600000000" ,
-  "mobileCode" : "123456"
-}
-
-response data
-{"data":1,       (1为成功)
- "error":[]
-}
-
-
-
-
-/api/user/userIndentity
-个人会员基本信息
-request data
-
-```json
-{
-    
-	"username": "Lion",
-	"sex": "男",
-	"dateOfBirthYear" : "1995",
-	"dateOfBirthMonth": "12",
-	"idNumber" : "510123456789012345",
-	"positiveIdUrl" : "/indentity/4303502988131.jpg",
-    "oppositeIdUrl"	: "/indentity/4303502988139.jpg"
-}
-``` 
-
-response data 
-
-```json
-{
-  "data":{
-  "id":"92a6804d-94f7-462b-805f-051b4e04440a",
-  "uid":"111",
-  "username":"Lion",
-  "sex":"男",
-  "dateOfBirthYear":"1995",
-  "dateOfBirthMonth":"1",
-  "idNumber":"510123456789012345",
-  "positiveIdUrl":"/indentity/4303502988131.jpg",
-  "oppositeIdUrl":"/indentity/4303502988139.jpg"},
-  "error":[]
-}
-```
-
-/api/user/userInfo
-个人资料
-request data
-
-```json
-{
-	"nickname": "Lion",
-	"residenceProvince": "湖南省2",
-	"residenceCity" : "长沙市",
-	"residenceArea": "天心区",
-	"personPortraitUrl" : "510123456789012345",
-	"lifePhotoUrl" : "/avadar/4303502988131.jpg",
-    "personalProfile"	: "个人简介",
-	"email" : "123@xx.com",
-	"fixedTelArea" : "010",
-    "fixedTel"	: "88888888",
-	"fixedTelExtension" : "0001",
-    "qq"	: "123456789",
-	"postalAddress": "湖南省长沙市天心区",
-	"postcode": "610000"
-}
-``` 
-
-response data 
-
-```json
-{
- 
-  data:{
-  "id":"92a6804d-94f7-462b-805f-051b4e04440a",
-  "uid":"111",
-  "username":"Lion",
-  "sex":"男",
-  "dateOfBirthYear":"1995",
-  "dateOfBirthMonth":"1",
-  "idNumber":"510123456789012345",
-  "positiveIdUrl":"/indentity/4303502988131.jpg",
-  "oppositeIdUrl":"/indentity/4303502988139.jpg"},
-  "error":[]
-}
-
-/api/user/userEdu
-教育信息
-request data
-
-```json
-{
-	"education": "博士",
-	"majorCategory": "工程材料",
-	"majorName" : "金属材料",
-	"graduateSchool": "清华大学",
-	"graduationTimeYear" : "2000",
-	"graduationTimeMonth" : "12",
-    "graduationTimeDay"	: "12",
-	"diplomaUrl" : "/indentity/4303502988132.jpg",
-	"diplomaCode" : "123456789",
-    "degreeDiplomaUrl"	: "/indentity/4303502988133.jpg",
-	"degreeCode" : "123456789"
-}
-``` 
-
-response data 
-
-```json
-{  data:{
-	"id":"c1094f5b-b55c-4df2-978a-20f3dcf7ca67",
-	"uid":"12312",
-	"education":"博士",
-	"majorCategory":"工程材料",
-	"majorName":"金属材料",
-	"graduateSchool":"清华大学",
-	"graduationTimeYear":"2000",
-	"graduationTimeMonth":"12",
-	"graduationTimeDay":"12",
-	"diplomaUrl":"/indentity/4303502988132.jpg",
-	"diplomaCode":"123456789",
-	"degreeDiplomaUrl":"/indentity/4303502988133.jpg",
-	"degreeCode":"123456789"},
-	"error":[]
-}
-
-/api/user/userCareer
-职业信息
-request data
-
-```json
-{
-	"engagedField": "工程材料,信息工程",
-	"workingAge": "5",
-	"professionalTitle" : "xx职称",
-	"professionalTitleGettime": "2000",
-	"professionalCertificateUrl" : "/avadar/4303502988131.jpg",
-	"qualification" : "职业资格",
-    "qualificationGettime"	: "2001",
-	"qualificationCertificateUrl" : "/avadar/4303502988132.jpg",
-	"workUnit" : "xx公司",
-    "position"	: "CFO",
-	"experiences" : "工作经历",
-	"achievement" : "个人成就"
-}
-``` 
-
-response data 
-
-```json
-{   
-   data:{
-   "id":"f745fa0c-5325-4b0a-a626-0ab755513712",
-   "uid":"123",
-   "engagedField":"工程材料,信息工程",
-   "workingAge":"5",
-   "professionalTitle":"xx职称",
-   "professionalTitleGettime":"2000",
-   "professionalCertificateUrl":"/avadar/4303502988131.jpg",
-   "qualification":"职业资格","qualificationGettime":"2001",
-   "qualificationCertificateUrl":"/avadar/4303502988132.jpg",
-   "workUnit":"xx公司","position":"CFO","experiences":"工作经历",
-   "achievement":"个人成就"},
-   "error":[]
-   }
-   
-   
-/api/user/userAbility
-个人/团体能力标签
-request data
-
-```json
-{
-	"abilityLabel": "能力1,能力2"
-}
-```
-
-response data 
-
-```json
-{  data:{
-  "id":"9337f823-1dfb-42be-b65d-d4dd4a06acbc",
-  "uid":"33","abilityLabel":"能力1,能力2"},
-  "error":[]
-  }
-  
-  
-/api/user/orgIdentity
-团体会员基本信息
-request data
-
-```json
-{
-	"contacts": "张三",
-	"email": "8590856@1633.com",
-	"fixedTel" : "88888888",
-	"qq": "2000111111",
-	"postalAddress" : "通讯地址",
-	"postcode" : "610000",
-    "legalPerson"	: "法人代表"
-}
-``` 
-
-response data 
-
-```json
-{   
-   {
-   "data":
-   {"id":null,
-   "uid":null,
-   "contacts":"张三",
-   "fixedTel":"88888888",
-   "qq":"2000111111",
-   "postalAddress":"通讯地址",
-   "postcode":"610000",
-   "legalPerson":"法人代表",
-   "email":"8590856@1633.com"},
-   "error":[]
-   }
-   }
- 
-
- 
-/api/user/orgPro
-团体会员单位资料
-request data
- 
-```json
-{
-	"info.identityType": "身份类型",
-	"info.companyName": "公司名称",
-	"info.locationProvince" : "省",
-	"info.locationCity": "市",
-	"info.locationArea": "区",
-	"info.unitSize": "单位规模",
-	"info.companyIntroduction": "单位简介",
-	"info.homeUnit": "所属单位",
-	"info.logoUrl": "logo图",
-	"info.publicityPictureUrl": "宣传图片",
-	"pro.qualification": "企业资质",
-	"pro.turnover": 100,
-	"pro.collegeAttribute": "院校属性",
-	"pro.collegeEstablishTime": "院校创办时间",
-	"pro.academician": 11,
-	"pro.doctoralTutor": 12,
-	"pro.masterTutor": 13,
-	"pro.otherExpert": 14,
-	"pro.nationalLab": 15,
-	"pro.educationLab": 16,
-	"pro.enterpriseCenter": 17,
-	"pro.otherCenter": 18,
-	"pro.institutionEstablishTime": 19
-}
-``` 
-
-response data 
-
-```json
-{"data":
-    {"info":
-		{
-		"id":"5eab2c05-7dee-4ac8-9150-9f82bbcda5ba",
-		"uid":null,
-		"identityType":"身份类型",
-		"companyName":"公司名称",
-		"locationProvince":"所在地--省",
-		"locationCity":"所在地--市",
-		"locationArea":"所在地--区",
-		"unitSize":"单位规模",
-		"companyIntroduction":"单位简介",
-		"homeUnit":"所属单位",
-		"logoUrl":"logo图",
-		"publicityPictureUrl":"宣传图片"
-		},
-	"pro":
-	    {
-		"id":"2ddbe264-5a0a-47c2-8d74-b7a8cb3984ac",
-		"oid":"5eab2c05-7dee-4ac8-9150-9f82bbcda5ba",
-		"qualification":"企业资质",
-		"turnover":100,
-		"collegeAttribute":"院校属性",
-		"collegeEstablishTime":"院校创办时间",
-		"academician":11,
-		"doctoralTutor":12,
-		"masterTutor":13,
-		"otherExpert":14,
-		"nationalLab":15,
-		"educationLab":16,
-		"enterpriseCenter":17,
-		"otherCenter":18,
-		"institutionEstablishTime":"19"
-	    }
-	},
-	"error":[]
-}
-
-
-
-
-
-
-
-
-
-
-
- 
- 
- 
-/api/user/orgTech
-团体会员技术能力
-request data
-
-```json
-{
-	"technicalPeopleNum": "88",
-	"searchAreaCategory": "电气自动化",
-	"searchAreaDet" : "电气电工",
-	"specialty": "擅长能力"
-}
-``` 
-
-response data 
-
-```json
-{   
-   {
-   "data":
-   {
-   "id":"e5672139-e242-444f-a3f6-cc4e10cd199d",
-   "uid":"9",
-   "technicalPeopleNum":"88",
-   "searchAreaCategory":"电气自动化",
-   "searchAreaDet":"电气电工",
-   "specialty":"擅长能力
-   "},
-   "error":[]
-   }
-   } 
-   
-   
------------------查询入口begin--------------------- 
-  
-/api/user/homePage    (method = get)
-用户首页  
-response data
-{
-"data":{
-		"id":"a0ccba8f-958e-48db-aec3-ebde456e33fe",
-		"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-		"lvl":0,
-		"nickname":"lina",
-		"email":"123@xx.com",
-		"number":800000,"type":0,
-		"personPortraitUrl":"/avadar/4303502988139.jpg"
-	  },
-	"error":[]
-}
-  
-  
-  
-  
-  
-/api/user/base           (method=get)
-个人会员基本信息/团体会员基本信息
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-
-个人  
-{
-	"data":{
-	"id":"5b3fb923-fca8-495e-adec-660e9e3db629",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"username":"Lion3",
-	"sex":"男",
-	"dateOfBirthYear":"1995",
-	"dateOfBirthMonth":"12",
-	"idNumber":"510123456789012345",
-	"positiveIdUrl":"/indentity/4303502988131.jpg",
-	"oppositeIdUrl":"/indentity/4303502988139.jpg",
-	"number":12,"mobile":"13600000000"},
-	"error":[]
-}
-
-
-团体
-{
-	"data":{
-	"id":"47a6f6b0-95f8-47e6-b98d-1df720ae0832",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"contacts":"张三",
-	"fixedTel":"88888888",
-	"qq":"2000111111",
-	"postalAddress":"通讯地址",
-	"postcode":"610000",
-	"legalPerson":"法人代表",
-	"email":"8590856@1633.com"
-	},
-	"error":[]
-}
-
-
-
-
-
-
-
-/api/user/member        (method=get)
-个人资料/团体会员资料
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-
-个人  
-{
-	"data":{
-	"id":"a0ccba8f-958e-48db-aec3-ebde456e33fe",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"residenceProvince":"湖南省2",
-	"residenceCity":"长沙市",
-	"residenceArea":"天心区",
-	"personPortraitUrl":"510123456789012345",
-	"lifePhotoUrl":"/avadar/4303502988131.jpg",
-	"personalProfile":"个人简介",
-	"fixedTelArea":"010",
-	"fixedTel":"88888888",
-	"fixedTelExtension":"0001",
-	"qq":"123456789",
-	"postalAddress":"湖南省长沙市天心区2",
-	"postcode":"610000",
-	"nickname":"Lion",
-	"email":"8590856@1633.com"},
-	"error":[]
-}
-
-
-团体
-
-{"data":{
-	"info":{
-			"id":"14fa6d3a-1880-46d9-85db-c9b5f4ee2ba2",
-			"uid":"ea04c6ec-3cb7-40b6-b7cf-ab6ddfac22f5",
-			"identityType":null,
-			"companyName":"XX科技股份有限公司",
-			"legalPerson":null,
-			"locationProvince":null,
-			"locationCity":null,
-			"locationArea":null,
-			"unitSize":null,
-			"companyIntroduction":null,
-			"homeUnit":null,
-			"logoUrl":null,
-			"publicityPictureUrl":null
-	      },
-	"pro":{
-			"id":"2ddbe264-5a0a-47c2-8d74-b7a8cb3984ac",
-			"oid":"14fa6d3a-1880-46d9-85db-c9b5f4ee2ba2",
-			"qualification":"企业资质",
-			"turnover":100,
-			"collegeAttribute":"院校属性",
-			"collegeEstablishTime":"院校创办时间",
-			"academician":11,
-			"doctoralTutor":12,
-			"masterTutor":13,
-			"otherExpert":14,
-			"nationalLab":15,
-			"educationLab":16,
-			"enterpriseCenter":17,
-			"otherCenter":18,
-			"institutionEstablishTime":"19"
-	     }
-	},
-	"error":[]
-	}
-
-
-
-
-/api/user/educate    (method=get)
-个人会员教育信息
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-{
-	"data":{
-	"id":"e9f03aa2-d164-420f-84f5-df2a3cb387ab",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"education":"博士",
-	"majorCategory":"工程材料",
-	"majorName":"金属材料",
-	"graduateSchool":"清华大学",
-	"graduationTimeYear":"2000",
-	"graduationTimeMonth":"12",
-	"graduationTimeDay":"12",
-	"diplomaUrl":"/indentity/4303502988132.jpg",
-	"diplomaCode":"123456789",
-	"degreeDiplomaUrl":"/indentity/4303502988133.jpg",
-	"degreeCode":"123456789"},
-	"error":[]
-}
-
-/api/user/job                (method=get)
-个人会员职业信息/团体会员技术能力
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-
-
-个人
-
-{
-	"data":{
-	"id":"4f81c228-42ce-4c13-9eea-e971d2692b0c",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"engagedField":"工程材料,
-	信息工程",
-	"workingAge":"5",
-	"professionalTitle":"xx职称",
-	"professionalTitleGettime":"2000",
-	"professionalCertificateUrl":"/avadar/4303502988131.jpg",
-	"qualification":"职业资格",
-	"qualificationGettime":"2001",
-	"qualificationCertificateUrl":"/avadar/4303502988132.jpg",
-	"workUnit":"xx公司",
-	"position":"CFO",
-	"experiences":"工作经历",
-	"achievement":"个人成就"},
-	"error":[]
-}
-
-团体
-
-{
-	"data":{
-	"id":"2ce9af59-d15e-4b8b-87a1-8d96dc8219f0",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"technicalPeopleNum":"88",
-	"searchAreaCategory":"电气自动化",
-	"searchAreaDet":"电气电工",
-	"specialty":"擅长能力"},
-	"error":[]
-}
-
-/api/user/ability       (method=get)
-个人/团体能力标签      
-request data
-```json
-{
-	
-}
-``` 
-
-response data 
-{
-	"data":{
-	"id":"306e48c2-7f2d-4642-868c-4bd83e842941",
-	"uid":"ba00235e-eb3a-45b4-8c9d-000fe507cbca",
-	"abilityLabel":"能力1,能力2"},
-	"error":[]
-}
-
------------------查询入口end---------------------

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


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


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


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


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


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


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


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


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


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


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


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

@@ -48,7 +48,7 @@ const Content = React.createClass({
                 };
             }.bind(this),
         }).done(function (data) {
-            if (data.error.length) {
+            if (data.error && data.error.length) {
                 message.warning(data.error[0].message);
             }
         }.bind(this)).always(function () {

+ 18 - 14
js/component/account/services/patent.jsx

@@ -1,7 +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 { getPatentType, getPatentState, getTime } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 import './patent.less';
@@ -35,6 +35,7 @@ const Patent = React.createClass({
                     let thisdata = data.data.list[i];
                     this.state.data.push({
                         key: i,
+                        pid:thisdata.id,
                         number: thisdata.serialNumber,
                         patentNum: thisdata.patentNumber,
                         patentName: thisdata.patentName,
@@ -46,7 +47,10 @@ const Patent = React.createClass({
                         patentWritingUrl: thisdata.patentWritingUrl, //专利稿件
                         authorizationNoticeUrl: thisdata.authorizationNoticeUrl, //授权通知书
                         patentCertificateUrl: thisdata.patentCertificateUrl, //专利证书
-                        startTime: thisdata.patentApplicationDate,
+                        confirmState:thisdata.confirmState, //稿件确认状态
+                        authorizedTime:getTime(thisdata.authorizedDate),
+                        startTime: getTime(thisdata.patentApplicationDate),
+                        endTime: getTime(thisdata.patentApplicationDate,2),
                         firstInventorName: thisdata.firstInventorName,
                         firstInventorNationality: thisdata.firstInventorNationality, //国籍
                         firstInventorIdNumber: thisdata.firstInventorIdNumber,   //id
@@ -153,20 +157,20 @@ const Patent = React.createClass({
     tableRowClick(record, index) {
         this.state.RowData = record;
         this.setState({
-            showDesc:true
+            showDesc: true
         });
     },
-    closeDesc(e){
-            this.state.showDesc = e;
+    closeDesc(e) {
+        this.state.showDesc = e;
     },
-    search(){
+    search() {
         this.state.searchNum;
         this.state.searchName;
         this.state.searchType;
         this.state.searchState;
         this.loadData();
     },
-    reset(){
+    reset() {
         this.state.searchNum = "";
         this.state.searchName = "";
         this.state.searchType = "";
@@ -178,19 +182,19 @@ const Patent = React.createClass({
             <div className="patent-content" >
                 <div className="content-title">
                     <span>专利申请管理</span>
-                    <PatentAdd />
+                    {userData.type == '0' ? <span></span> : <PatentAdd />}
                 </div>
                 <Alert style={{ display: this.state.AlertDis }} className="patent-alert" message={this.state.warningText}
                     type="info"
                     showIcon={true}
                     closable
                     onClose={this.alertClose}
-                    />
+                />
                 <div className="patent-query">
-                    <Input placeholder="专利号" value={this.state.searchNum} onChange={(e)=>{ this.setState({searchNum : e.target.value});}}/>
-                    <Input placeholder="专利名称" value={this.state.searchName} onChange={(e)=>{this.setState({searchName : e.target.value});}}/>
-                    <Select placeholder="专利类型" value={this.state.searchType} style={{ width: 200 }} onChange={(e)=>{this.setState({searchType : e});}}>{this.state.patentTypeOption}</Select>
-                    <Select placeholder="专利状态" value={this.state.searchState} style={{ width: 200 }} onChange={(e)=>{this.setState({searchState : e});}}>{this.state.patentStateOption}</Select>
+                    <Input placeholder="专利号" value={this.state.searchNum} onChange={(e) => { this.setState({ searchNum: e.target.value }); }} />
+                    <Input placeholder="专利名称" value={this.state.searchName} onChange={(e) => { this.setState({ searchName: e.target.value }); }} />
+                    <Select placeholder="专利类型" value={this.state.searchType} style={{ width: 200 }} onChange={(e) => { this.setState({ searchType: e }); }}>{this.state.patentTypeOption}</Select>
+                    <Select placeholder="专利状态" value={this.state.searchState} style={{ width: 200 }} onChange={(e) => { this.setState({ searchState: e }); }}>{this.state.patentStateOption}</Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button type="ghost" onClick={this.reset}>重置</Button>
                 </div>
@@ -202,7 +206,7 @@ const Patent = React.createClass({
                             onRowClick={this.tableRowClick} />
                     </Spin>
                 </div>
-                <PatentDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc}/>
+                <PatentDesc data={this.state.RowData} showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
             </div >
         );
     }

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

@@ -104,6 +104,23 @@
             span {
                 color: #666;
             }
+            .download-file {
+                margin-left: 20px;
+                margin-top: 10px;
+                line-height: 28px;
+                button {
+                    margin-left: 20px;
+                }
+            }
+        }
+        .time-line {
+            width:200px;
+            margin: 0 auto;
+            .ant-timeline-item-content {
+                span {
+                    margin-right: 10px;
+                }
+            }
         }
     }
 }

+ 44 - 37
js/component/account/services/patentAdd.jsx

@@ -47,7 +47,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" /> :
@@ -62,9 +62,9 @@ const PatentAddFrom = Form.create()(React.createClass({
     getInitialState() {
         return {
             loading: false,
-            firstCheck:0,
-            secondCheck:0,
-            thirdCheck:0
+            firstCheck: 0,
+            secondCheck: 0,
+            thirdCheck: 0
 
         };
     },
@@ -79,15 +79,15 @@ const PatentAddFrom = Form.create()(React.createClass({
                     crossDomain: false,
                     url: globalConfig.context + "/techservice/patent/clientApplyPatent",
                     data: {
-                        'firstInventorIdNumber':values.firstInventorID,
-                        'firstInventorName':values.firstInventorName,
-                        'patentDes':values.intro,
-                        'secondInventorName':values.secondInventorName,
-                        'thirdInventorName':values.thirdInventorName,
-                        'firstInventorIsPublish':this.state.firstCheck,
-                        'secondInventorIsPublish':this.state.secondCheck,
-                        'thirdInventorIsPublish':this.state.thirdCheck,
-                        'patentProryStatementUrl':this.state.avatarUrl
+                        'firstInventorIdNumber': values.firstInventorID,
+                        'firstInventorName': values.firstInventorName,
+                        'patentDes': values.intro,
+                        'secondInventorName': values.secondInventorName,
+                        'thirdInventorName': values.thirdInventorName,
+                        'firstInventorIsPublish': this.state.firstCheck,
+                        'secondInventorIsPublish': this.state.secondCheck,
+                        'thirdInventorIsPublish': this.state.thirdCheck,
+                        'patentProryStatementUrl': this.state.avatarUrl
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -104,29 +104,36 @@ const PatentAddFrom = Form.create()(React.createClass({
         });
     },
     firstInventorCheck(e) {
-        if ( e.target.checked == true ) {
+        if (e.target.checked == true) {
             this.state.firstCheck = 1;
-        } else if ( e.target.checked == false ) {
+        } else if (e.target.checked == false) {
             this.state.firstCheck = 0;
         }
     },
     secondInventorCheck(e) {
-        if ( e.target.checked == true ) {
+        if (e.target.checked == true) {
             this.state.secondCheck = 1;
-        } else if ( e.target.checked == false ) {
+        } else if (e.target.checked == false) {
             this.state.secondCheck = 0;
         };
     },
     thirdInventorCheck(e) {
-        if ( e.target.checked == true ) {
+        if (e.target.checked == true) {
             this.state.thirdCheck = 1;
-        } else if ( e.target.checked == false ) {
+        } else if (e.target.checked == false) {
             this.state.thirdCheck = 0;
         };
     },
-    avatarUrl(e){
+    avatarUrl(e) {
         this.state.avatarUrl = e;
     },
+    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;
@@ -141,7 +148,7 @@ const PatentAddFrom = Form.create()(React.createClass({
                     labelCol={{ span: 24 }}
                     wrapperCol={{ span: 24 }}
                     label="专利简要描述"
-                    >
+                >
                     {getFieldDecorator('intro', {
                         initialValue: this.state.intro || null
                     })(
@@ -154,42 +161,42 @@ const PatentAddFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="姓名"
-                    >
+                >
                     {getFieldDecorator('firstInventorName', {
                         rules: [{ required: true, message: 'Please input name!' }]
                     })(
-                        <Input className="mini-input"/>
+                        <Input className="mini-input" />
                         )}
                     <Checkbox onChange={this.firstInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}
                     label="身份证"
-                    >
+                >
                     {getFieldDecorator('firstInventorID', {
-                        rules: [{ required: true, message: 'Please input ID!' }]
+                        rules: [{ required: true, validator: this.checkIdcardnum, message: '请输入正确的身份证号!' }]
                     })(
-                        <Input className="mini-input"/>
+                        <Input className="mini-input" />
                         )}
                 </FormItem>
                 <p>第二发明人</p>
                 <FormItem
                     {...formItemLayout}
                     label="姓名"
-                    >
+                >
                     {getFieldDecorator('secondInventorName')(
-                        <Input className="mini-input"/>
-                        )}
+                        <Input className="mini-input" />
+                    )}
                     <Checkbox onChange={this.secondInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <p>第三发明人</p>
                 <FormItem
                     {...formItemLayout}
                     label="姓名"
-                    >
+                >
                     {getFieldDecorator('thirdInventorName')(
-                        <Input className="mini-input"/>
-                        )}
+                        <Input className="mini-input" />
+                    )}
                     <Checkbox onChange={this.thirdInventorCheck}>是否同意专利局公布</Checkbox>
                 </FormItem>
                 <FormItem
@@ -197,15 +204,15 @@ const PatentAddFrom = Form.create()(React.createClass({
                     label="上传代理委托书"
                     labelCol={{ span: 24 }}
                     wrapperCol={{ span: 12 }}
-                    >
+                >
                     {getFieldDecorator('avatar')(
                         <Avatar urlData={this.avatarUrl} name='patent_prory_statement' />
                     )}
-                    <span>请上传专利代理委托书</span><a onClick={()=>{window.open(globalConfig.context + "/techservice/patent/downLoadTemplate")}}>模板下载</a>
+                    <span>请上传专利代理委托书</span><a onClick={() => { window.open(globalConfig.context + "/techservice/patent/downloadTemplate") }}>模板下载</a>
                 </FormItem>
                 <FormItem>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
-                    <Button type="ghost" style={{marginLeft:'20px'}} onClick={this.props.closeModal}>取消</Button>
+                    <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
                 </FormItem>
             </Form >
         );
@@ -249,8 +256,8 @@ const PatentAdd = React.createClass({
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='720px'
                         footer=''
-                        >
-                        <PatentAddFrom spinState={this.spinChange} closeModal={this.handleCancel}/>
+                    >
+                        <PatentAddFrom spinState={this.spinChange} closeModal={this.handleCancel} />
                     </Modal>
                 </Spin>
             </div>

+ 87 - 12
js/component/account/services/patentDesc.jsx

@@ -1,12 +1,16 @@
 import React from 'react';
-import { Icon, Modal, message, Spin, Steps } from 'antd';
+import { Icon, Modal, message, Spin, Timeline, Button } from 'antd';
+import { getPatentState, getTime } from '../../tools.js';
 import './patent.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
 
 const PatentDesc = React.createClass({
     getInitialState() {
         return {
             visible: false,
-            loading: false
+            loading: false,
+            stepList: []
         };
     },
     showModal() {
@@ -20,8 +24,36 @@ const PatentDesc = React.createClass({
         });
         this.props.closeDesc(false);
     },
+    getStepList(thepid) {
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/patentProcess",
+            data: {
+                pid: thepid
+            },
+            success: function (data) {
+                if (data.error && data.error.length || !data.data) {
+                    return;
+                };
+                let _me = this;
+                for (var item in data.data) {
+                    _me.state.stepList.push(
+                        <Timeline.Item key={item}> <span>{getPatentState(data.data[item].state)}</span> {getTime(data.data[item].recordTime)}</Timeline.Item>
+                    )
+                };
+                this.setState({
+                    stepList:this.state.stepList
+                });
+            }.bind(this),
+        });
+    },
     componentWillReceiveProps(nextProps) {
         this.state.visible = nextProps.showDesc
+        if (nextProps.data && nextProps.data.pid !== null) {
+            this.getStepList(nextProps.data.pid);
+        }
     },
     handleCancel(e) {
         this.setState({
@@ -29,8 +61,32 @@ const PatentDesc = React.createClass({
         });
         this.props.closeDesc(false);
     },
+    downloadFile(url, type) {
+        window.open(globalConfig.context + "/open/downloadFile?path=" + url + "?sign=" + type)
+    },
+    confirmButton() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/clientConfirm",
+            data: {
+                pid: this.props.data.pid
+            }
+        }).done(function (data) {
+            if (data.error && data.error.length) {
+                message.warning(data.error[0].message);
+            }
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
     render() {
-        const Step = Steps.Step;
         const theData = this.props.data;
         if (this.props.data) {
             return (
@@ -57,16 +113,37 @@ const PatentDesc = React.createClass({
                                 <span>简介:</span>{theData.patentDes}
                             </div>
                             <div>
-                                <span>专利相关材料:</span>{theData.number}
+                                <span>专利相关材料:</span>
+                                {theData.patentWritingUrl !== null && theData.patentWritingUrl !== '' ?
+                                    <p className="download-file">
+                                        <a href="" onClick={this.downloadFile.bind(this, theData.patentWritingUrl, "patent_writing_url")}>专利稿件</a>
+                                        {theData.confirmState == '0' ?
+                                            <Button onClick={this.confirmButton}>确认稿件</Button> : <span></span>
+                                        }
+                                    </p> :
+                                    <span></span>
+                                }
+                                {theData.authorizationNoticeUrl !== null && theData.authorizationNoticeUrl !== '' ?
+                                    <p className="download-file">
+                                        <a href="" onClick={this.downloadFile.bind(this, theData.authorizationNoticeUrl, "authorization_notice_url")}>授权通知书</a>
+                                    </p> :
+                                    <span></span>
+                                }
+                                {theData.patentCertificateUrl !== null && theData.patentCertificateUrl !== '' ?
+                                    <p className="download-file">
+                                        <a href="" onClick={this.downloadFile.bind(this, theData.patentCertificateUrl, "patent_certificate_url")}>专利证书</a>
+                                    </p> :
+                                    <span></span>
+                                }
                             </div>
                             <div>
-                                <span>专利申请日:</span>{theData.number}
+                                <span>专利申请日:</span>{theData.startTime}
                             </div>
                             <div>
-                                <span>专利授权日:</span>{theData.number}
+                                <span>专利授权日:</span>{theData.authorizedTime}
                             </div>
                             <div>
-                                <span>每年年费缴费截止日:</span>{theData.number}
+                                <span>每年年费缴费截止日:</span>{theData.endTime}
                             </div>
                             <div>
                                 <p>第一发明人:</p>
@@ -81,11 +158,9 @@ const PatentDesc = React.createClass({
                                 <p>第三发明人:</p>
                                 <p><span>姓名:</span>{theData.thirdInventorName}</p>
                             </div>
-                            <Steps direction="vertical" size="small" current={1}>
-                                <Step title="Finished" description="This is a description." />
-                                <Step title="In Progress" description="This is a description." />
-                                <Step title="Waiting" description="This is a description." />
-                            </Steps>
+                            <Timeline className="time-line">
+                                {this.state.stepList}
+                            </Timeline>
                         </Modal>
                     </Spin>
                 </div>

+ 23 - 22
js/component/account/set/company.jsx

@@ -4,7 +4,8 @@ import './person.less';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 
-import { addressInit, splitUrl, edulvlArr, zizhiArr, schoolArr } from '../../tools.js';
+import { addressInit, splitUrl, } from '../../tools.js';
+import { edulvlArr, zizhiArr, schoolArr } from '../../dataDic.js';
 
 
 function getBase64(img, callback) {
@@ -50,7 +51,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" /> :
@@ -108,7 +109,7 @@ class PicturesWall extends React.Component {
                     fileList={fileList}
                     onPreview={this.handlePreview}
                     onChange={this.handleChange.bind(this)}
-                    >
+                >
                     {fileList.length >= 9 ? null : uploadButton}
                 </Upload>
                 <Modal visible={previewVisible} footer={null} onCancel={this.handleCancel}>
@@ -138,7 +139,7 @@ const PersonFrom = Form.create()(React.createClass({
                         unitNumber: data.data.info.unitSize,
                         unitIntro: data.data.info.companyIntroduction,
                         unitFrom: data.data.info.homeUnit,
-                        companyLifePicUrl: theArr,
+                        companyLifePicList: theArr,
                         qiyezizhi: data.data.pro.qualification,
                         turnover: data.data.pro.turnover,
                         schoolProp: data.data.pro.collegeAttribute,
@@ -168,7 +169,7 @@ const PersonFrom = Form.create()(React.createClass({
             companyDis: 'block',
             schoolDis: 'none',
             resDis: 'none',
-
+            companyLifePicObj:[],
             aca: 0,
             PhDTutor: 0,
             MSTutor: 0,
@@ -297,7 +298,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 8 }}
                     label="身份类型"
-                    >
+                >
                     {getFieldDecorator('identityType', {
                         initialValue: this.state.idttType
                     })(
@@ -313,7 +314,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="单位名称"
-                    >
+                >
                     {getFieldDecorator('unitName', {
                         initialValue: this.state.unitName
                     })(
@@ -323,7 +324,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="所在地"
-                    >
+                >
                     {getFieldDecorator('province')(
                         <div>
                             <select id="cmbProvince" name="cmbProvince"></select>
@@ -336,7 +337,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="单位规模"
-                    >
+                >
                     {getFieldDecorator('unitNumber', {
                         initialValue: this.state.unitNumber
                     })(
@@ -349,7 +350,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 20 }}
                     label="单位简介"
-                    >
+                >
                     {getFieldDecorator('unitIntro', {
                         initialValue: this.state.unitIntro
                     })(
@@ -359,8 +360,8 @@ const PersonFrom = Form.create()(React.createClass({
                         )}
                     <p>还可输入{
                         (() => {
-                            if (_me.props.form.getFieldValue('intro') && _me.props.form.getFieldValue('intro').length) {
-                                return 1000 - _me.props.form.getFieldValue('intro').length;
+                            if (_me.props.form.getFieldValue('unitIntro') && _me.props.form.getFieldValue('unitIntro').length) {
+                                return 1000 - _me.props.form.getFieldValue('unitIntro').length;
                             } else {
                                 return 1000;
                             }
@@ -371,7 +372,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="归属单位"
-                    >
+                >
                     {getFieldDecorator('unitFrom', {
                         initialValue: this.state.unitFrom
                     })(
@@ -382,7 +383,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 8 }}
                     label="企业资质"
-                    >
+                >
                     {getFieldDecorator('qiyezizhi', {
                         initialValue: this.state.qiyezizhi
                     })(
@@ -399,7 +400,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 6 }}
                     label="年营业额"
-                    >
+                >
                     {getFieldDecorator('turnover', {
                         initialValue: this.state.turnover
                     })(
@@ -411,7 +412,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 8 }}
                     label="院校属性"
-                    >
+                >
                     {getFieldDecorator('schoolProp', {
                         initialValue: this.state.schoolProp
                     })(
@@ -427,7 +428,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem style={{ 'display': this.state.schoolDis }}
                     {...formItemLayout}
                     label="创办时间"
-                    >
+                >
                     {getFieldDecorator('schoolTime', {
                         initialValue: this.state.schoolTime
                     })(
@@ -439,7 +440,7 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 21, offset: 3 }}
                     label=""
-                    >
+                >
                     <div className="school-props clearfix">
                         <div><span>院士:</span><InputNumber value={this.state.aca} onChange={function (e) { this.setState({ aca: e }) }.bind(this)} />人</div>
                         <div><span>博士生导师:</span><InputNumber value={this.state.PhDTutor} onChange={function (e) { this.setState({ PhDTutor: e }) }.bind(this)} />人</div>
@@ -454,7 +455,7 @@ const PersonFrom = Form.create()(React.createClass({
                 <FormItem style={{ 'display': this.state.resDis }}
                     {...formItemLayout}
                     label="创办时间"
-                    >
+                >
                     {getFieldDecorator('resTime', {
                         initialValue: this.state.resTime
                     })(
@@ -467,7 +468,7 @@ const PersonFrom = Form.create()(React.createClass({
                     label="LOGO"
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 20 }}
-                    >
+                >
                     {getFieldDecorator('avatar')(
                         <Avatar name="companyLogo" urlData={this.companyLogoUrl} />
                     )}
@@ -479,9 +480,9 @@ const PersonFrom = Form.create()(React.createClass({
                     labelCol={{ span: 3 }}
                     wrapperCol={{ span: 21 }}
                     label="宣传图片"
-                    >
+                >
                     {getFieldDecorator('companyLifePic')(
-                        <PicturesWall fileList={this.companyLifePicUrl} lifePhotoList={this.state.companyLifePicUrl} />
+                        <PicturesWall fileList={this.companyLifePicUrl} lifePhotoList={this.state.companyLifePicList} />
                     )}
                 </FormItem>
                 <FormItem wrapperCol={{ span: 12, offset: 3 }}>

+ 1 - 1
js/component/account/set/edu.jsx

@@ -211,7 +211,7 @@ const EduFrom = Form.create()(React.createClass({
                     {getFieldDecorator('xueliPic')(
                         <Avatar name="xueliPic" urlData={this.xueliPicUrl} />
                     )}
-                    <p>{this.state.xueweiPicUrl !== "" ? <Button onClick={this.downloadPic.bind(this,this.state.xueliPicUrl)}>下载证书</Button> : ""}</p>
+                    <p>{this.state.xueliPicUrl !== "" ? <Button onClick={this.downloadPic.bind(this,this.state.xueliPicUrl)}>下载证书</Button> : ""}</p>
                 </FormItem>
                 <FormItem
                     {...formItemLayout}

+ 21 - 9
js/component/account/set/group.jsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Input, Button, Form, Icon, Spin } from 'antd';
+import { Input, Button, Form, Icon, Spin, message } from 'antd';
 import './base.less';
 import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
@@ -28,7 +28,8 @@ const BaseFrom = Form.create()(React.createClass({
                         address: data.data.postalAddress,
                         postcode: data.data.postcode,
                         legalPerson: data.data.legalPerson,
-                        email: data.data.email
+                        email: data.data.email,
+                        legalPerson:data.data.legalPerson
                     });
                 };
             }.bind(this),
@@ -67,7 +68,8 @@ const BaseFrom = Form.create()(React.createClass({
                         "qq": values.qq,
                         "postalAddress": values.address,
                         "postcode": values.postcode,
-                        "moblie": values.moblie
+                        "moblie": values.moblie,
+                        "legalPerson":values.legalPerson
                     }
                 }).done(function (data) {
                     if (!data.error.length) {
@@ -120,7 +122,7 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label='联系人'
-                    >
+                >
                     {getFieldDecorator('contact', {
                         initialValue: this.state.contacts,
                     })(
@@ -130,7 +132,7 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="手机号码"
-                    >
+                >
                     {getFieldDecorator('moblie', {
                         initialValue: userData.mobile,
                         rules: [
@@ -144,7 +146,7 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="电子邮箱"
-                    >
+                >
                     {getFieldDecorator('email', {
                         initialValue: this.state.email,
                         rules: [{
@@ -157,7 +159,7 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="固定电话"
-                    >
+                >
                     {getFieldDecorator('telephone', {
                         initialValue: this.state.fixedTel
                     })(
@@ -167,7 +169,7 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="QQ"
-                    >
+                >
                     {getFieldDecorator('qq', {
                         initialValue: this.state.qq
                     })(
@@ -177,13 +179,23 @@ const BaseFrom = Form.create()(React.createClass({
                 <FormItem
                     {...formItemLayout}
                     label="通讯地址"
-                    >
+                >
                     {getFieldDecorator('address', {
                         initialValue: this.state.address
                     })(
                         <Input />
                         )}
                 </FormItem>
+                <FormItem
+                    {...formItemLayout}
+                    label="法人"
+                >
+                    {getFieldDecorator('legalPerson', {
+                        initialValue: this.state.legalPerson
+                    })(
+                        <Input />
+                        )}
+                </FormItem>
                 <FormItem wrapperCol={{ span: 12, offset: 3 }}>
                     <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
                 </FormItem>

+ 4 - 4
js/component/account/set/pfs.jsx

@@ -5,7 +5,7 @@ import ajax from 'jquery/src/ajax/xhr.js'
 import $ from 'jquery/src/ajax';
 
 import YearSelect from '../../yearSelect.jsx';
-import { jingli_yuanxiao, jingli_shehui, chengjiu_yuanxiao, chengjiu_shehui } from '../../tools.js';
+import { jingli_yuanxiao, jingli_shehui, chengjiu_yuanxiao, chengjiu_shehui } from '../../dataDic.js';
 
 const FormItem = Form.Item;
 const RadioButton = Radio.Button;
@@ -153,7 +153,7 @@ const PfsFrom = Form.create()(React.createClass({
     },
     jingliChange(e) {
         if (e.target.value == "a") {
-            this.props.form.setFieldsValue({ 'jingli': "" })
+            this.props.form.setFieldsValue({ 'jingli': this.state.jingli || '' })
         } else if (e.target.value == "b") {
             this.props.form.setFieldsValue({
                 'jingli': jingli_yuanxiao
@@ -166,7 +166,7 @@ const PfsFrom = Form.create()(React.createClass({
     },
     chengjiuChange(e) {
         if (e.target.value == "a") {
-            this.props.form.setFieldsValue({ 'chengjiu': "" })
+            this.props.form.setFieldsValue({ 'chengjiu': this.state.chengjiu || '' })
         } else if (e.target.value == "b") {
             this.props.form.setFieldsValue({
                 'chengjiu': chengjiu_yuanxiao
@@ -336,7 +336,7 @@ const PfsFrom = Form.create()(React.createClass({
                         )}
                 </FormItem>
                 <div className="textarea-title">
-                    <span>从业经历</span>
+                    <span>个人成就</span>
                     <RadioGroup className="set-radio-button" onChange={this.chengjiuChange} defaultValue="a">
                         <RadioButton value="a">自定义</RadioButton>
                         <RadioButton value="b">院校专家模板</RadioButton>

+ 1 - 1
js/component/account/set/tech.jsx

@@ -23,7 +23,7 @@ const TechFrom = Form.create()(React.createClass({
             dataType: "json",
             url: globalConfig.context + "/api/user/job",
             success: function (data) {
-                if (data.data.searchAreaCategory && data.data.specialty ) {
+                if (data.data && data.data.searchAreaCategory && data.data.specialty ) {
                     this.setState({
                         techpeople:data.data.technicalPeopleNum,
                         techzoneArr : data.data.searchAreaCategory.split(","),

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

@@ -19,15 +19,14 @@ const TopTab = React.createClass({
             dataType: "json",
             url: globalConfig.context + "/login",
         }).done(function (data) {
-            debugger
-                window.location.href = "../login.html"
+            window.location.href = "../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">

File diff suppressed because it is too large
+ 1 - 10
js/component/dataDic.js


+ 10 - 7
js/component/manageCenter/servicesManage/patent/applyFee.jsx

@@ -39,8 +39,8 @@ const applyFee = React.createClass({
                         patentNumber: thisdata.patentNumber,
                         unitName: thisdata.unitName,
                         patentName: thisdata.patentName,
-                        authorizedDate: thisdata.authorizedDate,
-                        endTime: thisdata.authorizedDate,
+                        patentApplicationDate: thisdata.patentApplicationDate,
+                        endTime: thisdata.patentApplicationDate,
                         paymentState: thisdata.paymentState,
                         applicationFee: thisdata.applicationFee,
                         trialFee: thisdata.trialFee,
@@ -73,7 +73,6 @@ const applyFee = React.createClass({
             patentName: '',
             provinceOption: [],
             data: [],
-            download: globalConfig.context + '/api/warningreports/download',
             loading: false,
             pagination: {
                 defaultCurrent: 1,
@@ -155,8 +154,8 @@ const applyFee = React.createClass({
                     }
                 }, {
                     title: '申请日',
-                    dataIndex: 'authorizedDate',
-                    key: 'authorizedDate',
+                    dataIndex: 'patentApplicationDate',
+                    key: 'patentApplicationDate',
                     render: text => { return getTime(text) }
                 }, {
                     title: '缴费截止时间',
@@ -200,12 +199,16 @@ const applyFee = React.createClass({
         this.state.searchData = '';
         this.loadData();
     },
+    exportApply() {
+        window.open(globalConfig.context + "/techservice/patent/exportApplicationFee?locationProvince=" 
+        + this.state.province + "&patentApplicationDate=" + this.state.searchData);
+    },
     render() {
         const { MonthPicker, RangePicker } = DatePicker;
         return (
             <div className="patent-content" >
                 <div className="content-title">
-                    <span>代缴年登印费专利管理</span>
+                    <span>专利申请费用管理</span>
                 </div>
                 <div className="patent-query">
                     <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e }}>{this.state.provinceOption}</Select>
@@ -213,7 +216,7 @@ const applyFee = React.createClass({
                     <span>
                         <Button type="primary" onClick={this.search}>搜索</Button>
                         <Button onClick={this.reset}>重置</Button>
-                        <Button type="ghost">导出</Button>
+                        <Button type="ghost" onClick={this.exportApply}>导出</Button>
                     </span>
                 </div>
                 <div className="patent-table">

+ 9 - 4
js/component/manageCenter/servicesManage/patent/comPatentAdd.jsx

@@ -13,7 +13,12 @@ class Avatar extends React.Component {
         }
     }
     handleChange(info) {
+        if ( !this.props.oid ) {
+            message.warning('请先选择公司!');
+            return;
+        }
         if (info.file.status === 'done') {
+            debugger
             // Get this url from response in real world.
             getBase64(info.file.originFileObj, imageUrl => this.setState({ imageUrl }));
             this.props.urlData(info.file.response.data);
@@ -26,8 +31,8 @@ class Avatar extends React.Component {
                 className="avatar-uploader"
                 name="avatar"
                 showUploadList={false}
-                action={globalConfig.context + "/api/user/patent/upload"}
-                data={{ 'sign': this.props.name }}
+                action={globalConfig.context + "/techservice/patent/patentFile"}
+                data={{ 'sign': this.props.name,'oid':this.props.oid }}
                 beforeUpload={beforeUpload}
                 onChange={this.handleChange.bind(this)}
                 >
@@ -213,9 +218,9 @@ const PatentAddFrom = Form.create()(React.createClass({
                     wrapperCol={{ span: 12 }}
                     >
                     {getFieldDecorator('avatar')(
-                        <Avatar urlData={this.avatarUrl} name='patent_prory_statement' />
+                        <Avatar urlData={this.avatarUrl} name='patent_prory_statement' oid={this.state.companyName}/>
                     )}
-                    <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>

+ 70 - 17
js/component/manageCenter/servicesManage/patent/comPatentDesc.jsx

@@ -27,8 +27,8 @@ class Avatar extends React.Component {
                 className="avatar-uploader"
                 name="avatar"
                 showUploadList={false}
-                action={globalConfig.context + "/api/user/patent/upload"}
-                data={{ 'sign': this.props.name }}
+                action={globalConfig.context + "/techservice/patent/patentFile"}
+                data={{ 'sign': this.props.name, 'oid': this.props.oid }}
                 beforeUpload={beforeUpload}
                 onChange={this.handleChange.bind(this)}
             >
@@ -51,11 +51,10 @@ const PatentDesc = React.createClass({
             patentFieldOption: [],
             patentStateOption: [],
             adminOption: [],
-            patentProcess: []
+            patentProcessList: []
         };
     },
     loadData() {
-        this.state.data = [];
         this.setState({
             loading: true
         });
@@ -79,8 +78,8 @@ const PatentDesc = React.createClass({
             };
             let _me = this;
             data1[0].data.map(function (item) {
-                _me.state.patentProcess.push(
-                    <p>
+                _me.state.patentProcessList.push(
+                    <p className="patent-process-list" key={item.recordTime}>
                         <span>专利状态: {getPatentState(item.state)}</span>
                         <span>处理时间: {getTime(item.recordTime)}</span>
                         <span>负责人:{item.principal}</span>
@@ -103,8 +102,11 @@ const PatentDesc = React.createClass({
             });
         }.bind(this));
     },
-    componentWillMount() {
+    getOption() {
         let _me = this;
+        _me.state.patentTypeOption = [];
+        _me.state.patentFieldOption = [];
+        _me.state.patentStateOption = [];
         patentTypeList.map(function (item) {
             _me.state.patentTypeOption.push(
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
@@ -131,15 +133,65 @@ const PatentDesc = React.createClass({
     },
     handleOk() {
         this.setState({
-            visible: false,
+            visible: true,
         });
-        this.props.closeDesc(false);
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/techservice/patent/managePatentInfo",
+            data: {
+                "pid": this.props.data.pid,
+                "patentNumber": this.state.patentNum,
+                "patentName": this.state.patentName,
+                "patentCatagory": this.state.patentType,
+                "patentField": this.state.patentField,
+                "patentDes": this.state.patentDes,
+                "patentWritingUrl": this.state.patentWritingUrl,
+                "authorizationNoticeUrl": this.state.authorizationNoticeUrl,
+                "patentCertificateUrl": this.state.patentCertificateUrl,
+                "state": this.state.patentStateAdd,
+                "recordTimeFromattedDate": this.state.recordTime,
+                "principal": this.state.adminName
+            }
+        }).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));
+    },
+    checkPatentProcess() {
+        if (this.state.patentStateAdd || this.state.adminName || this.state.recordTime) {
+            if (this.state.patentStateAdd && this.state.adminName && this.state.recordTime)
+            { this.handleOk() } else {
+                message.warning("请填写完整的状态流转信息!");
+                return;
+            }
+        } else {
+            this.handleOk()
+        };
     },
     componentWillReceiveProps(nextProps) {
+        let _me = this;
+        this.state.adminOption = [];
+        this.state.patentProcessList = [];
         this.state.visible = nextProps.showDesc;
         if (nextProps.data) {
             this.state.pid = nextProps.data.pid;
-            this.loadData()
+            this.state.patentDes = nextProps.data.patentDes;
+            this.state.patentName = nextProps.data.patentName;
+            this.state.patentNum = nextProps.data.patentNum;
+            this.state.patentState = nextProps.data.patentState;
+            this.state.patentField = nextProps.data.patentField;
+            this.loadData();
+            this.getOption();
         }
     },
     handleCancel(e) {
@@ -165,10 +217,10 @@ const PatentDesc = React.createClass({
                 <div className="patent-desc">
                     <Spin spinning={this.state.loading} className='spin-box'>
                         <Modal title="专利详情" visible={this.state.visible}
-                            onOk={this.handleOk} onCancel={this.handleCancel}
+                            onOk={this.checkPatentProcess} onCancel={this.handleCancel}
                             width='800px'
                             footer={[
-                                <Button key="submit" type="primary" size="large" onClick={this.handleOk}>保存</Button>,
+                                <Button key="submit" type="primary" size="large" onClick={this.checkPatentProcess}>保存</Button>,
                                 <Button key="back" type="ghost" size="large" onClick={this.handleCancel}>取消</Button>,
                             ]}
                             className="patent-desc-content">
@@ -191,7 +243,7 @@ const PatentDesc = React.createClass({
                                 </div>
                             </div>
                             <div>
-                                <p className="widthHalf"><span>专利状态:</span>{theData.patentState}</p>
+                                <p className="widthHalf"><span>专利状态:</span>{getPatentState(theData.patentState)}</p>
                                 <div className="widthHalf"><span className="four2eight">专利领域</span>:
                                     <Select value={this.state.patentField} style={{ width: 200 }} onChange={(e) => { this.setState({ patentField: e }); } }>{this.state.patentFieldOption}</Select>
                                 </div>
@@ -225,20 +277,21 @@ const PatentDesc = React.createClass({
                                     <span>{theData.patentProryStatementUrl !== null ? <a onClick={this.downloadPic.bind(this, theData.patentProryStatementUrl)}>专利代理委托书</a> : ""}</span>
                                     <span>{theData.lastYearTaxReportUrl !== null ? <a onClick={this.downloadPic.bind(this, theData.lastYearTaxReportUrl)}>上年度纳税表</a> : ""}</span>
                                 </p>
-                                <Avatar urlData={this.getPatentWritingUrl} name='patentWritingUrl' />
-                                <Avatar urlData={this.getAuthorizationNoticeUrl} name='authorizationNoticeUrl' />
-                                <Avatar urlData={this.getPatentCertificateUrl} name='patentCertificateUrl' />
+                                <Avatar urlData={this.getPatentWritingUrl} name='patent_writing' oid={theData.oid}/>
+                                <Avatar urlData={this.getAuthorizationNoticeUrl} name='authorization_notice' oid={theData.oid}/>
+                                <Avatar urlData={this.getPatentCertificateUrl} name='patent_certificate' oid={theData.oid}/>
                             </div>
                             <div className="avatar-text"><span>专利稿件上传</span><span>授权通知书上传</span><span>专利证书上传</span></div>
                             <div>
                                 <p>专利状态流转记录:</p>
+                                {this.state.patentProcessList}
                                 <div className="widthThird">
                                     <span>状态流转:</span>
                                     <Select value={this.state.patentStateAdd} style={{ width: 150 }} onChange={(e) => { this.setState({ patentStateAdd: e }); } }>{this.state.patentStateOption}</Select>
                                 </div>
                                 <p className="widthThird">
                                     <span>处理时间:</span>
-                                    <DatePicker />
+                                    <DatePicker onChange={(data,dataString)=>{this.state.recordTime = dataString}}/>
                                 </p>
                                 <div className="widthThird">
                                     <span>负责人:</span>

+ 24 - 11
js/component/manageCenter/servicesManage/patent/comprehensive.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Button, Input, Select, Spin, Table, Switch, DatePicker, message } from 'antd';
 import { patentTypeList, patentStateList, provinceArr } from '../../../dataDic.js';
-import { getTime,getPatentState } from '../../../tools.js';
+import { getTime, getPatentState } from '../../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import './comprehensive.less';
@@ -29,7 +29,7 @@ const Patent = React.createClass({
                 locationProvince: this.state.province,
                 unitName: this.state.unitName,
                 patentCatagory: this.state.patentType,
-                patentState: this.state.patentState,
+                patentState: this.state.searchState,
                 createTime: this.state.createTime,
                 patentApplicationDate: this.state.startTime,
                 authorizedDate: this.state.endTime,
@@ -44,7 +44,8 @@ const Patent = React.createClass({
                     let thisdata = data.data.list[i];
                     this.state.data.push({
                         key: i,
-                        pid:thisdata.pid,
+                        pid: thisdata.pid,
+                        oid: thisdata.oid,
                         number: thisdata.serialNumber,
                         patentNumber: thisdata.patentNumber,
                         unitName: thisdata.unitName,
@@ -100,7 +101,7 @@ const Patent = React.createClass({
             method: "get",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/techservice/patent/getUnitNames",
+            url: globalConfig.context + "/techservice/patent/getAdmin",
             success: function (data) {
                 if (data.error.length || !data.data) {
                     return;
@@ -158,7 +159,6 @@ const Patent = React.createClass({
             endTime: [],
             startTime: [],
             author: '',
-            warningText: 'warning text! warning text! warning text!',
             AlertDis: 'block',
             patentTypeOption: [],
             patentStateOption: [],
@@ -282,6 +282,19 @@ const Patent = React.createClass({
         this.state.author = '';
         this.loadData();
     },
+    exportComposite() {
+        window.open(globalConfig.context + "/techservice/patent/exportComposite" +
+            "?" + "serialNumber" + "=" + this.state.number +
+            "&" + "patentNumber" + "=" + this.state.patentNumber +
+            "&" + "patentName" + "=" + this.state.patentName +
+            "&" + "locationProvince" + "=" + this.state.locationProvince +
+            "&" + "unitName" + "=" + this.state.unitName +
+            "&" + "patentCatagory" + "=" + this.state.patentCatagory +
+            "&" + "patentState" + "=" + this.state.patentState +
+            "&" + "createTime" + "=" + this.state.createTime +
+            "&" + "patentApplicationDate" + "=" + this.state.startTime +
+            "&" + "author" + "=" + this.state.author);
+    },
     searchSwitch() {
         this.setState({
             searchMore: !this.state.searchMore
@@ -325,16 +338,16 @@ const Patent = React.createClass({
                     <PatentAdd />
                 </div>
                 <div className="patent-query">
-                    <Select placeholder="请选择" value={this.state.searchKey} style={{ width: 200 }} onChange={(e) => { this.setState({ searchKey: e, searchValue: '' }); } }>
+                    <Select placeholder="请选择" value={this.state.searchKey} style={{ width: 200 }} onChange={(e) => { this.setState({ searchKey: e, searchValue: '' }); }}>
                         <Select.Option value="patentNumber">专利号</Select.Option>
                         <Select.Option value="serialNumber">编号</Select.Option>
                         <Select.Option value="patentName">专利名称</Select.Option>
                     </Select>
                     <Input value={this.state.searchValue} onChange={this.searchSelect} />
-                    <Select placeholder="专利状态" value={this.state.searchState} style={{ width: 200 }} onChange={(e) => { this.setState({ searchState: e }); } }>{this.state.patentStateOption}</Select>
+                    <Select placeholder="专利状态" value={this.state.searchState} style={{ width: 200 }} onChange={(e) => { this.setState({ searchState: e }); }}>{this.state.patentStateOption}</Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
-                    <Button type="ghost">导出</Button>
+                    <Button type="ghost" onClick={this.exportComposite}>导出</Button>
                     <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
                     <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
                         <p>
@@ -342,9 +355,9 @@ const Patent = React.createClass({
                             <span>申请日:</span><RangePicker onChange={this.searchstartTime} />
                         </p>
                         <div>
-                            <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e } }>{this.state.provinceOption}</Select>
-                            <Select placeholder="选择撰写人" style={{ width: 200 }} onChange={(e) => { this.state.author = e } }>{this.state.authorOption}</Select>
-                            <Select placeholder="选择公司" style={{ width: 200 }} onChange={(e) => { this.state.companyName = e } }>{this.state.companyOption}</Select>
+                            <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e }}>{this.state.provinceOption}</Select>
+                            <Select placeholder="选择撰写人" style={{ width: 200 }} onChange={(e) => { this.state.author = e }}>{this.state.authorOption}</Select>
+                            <Select placeholder="选择公司" style={{ width: 200 }} onChange={(e) => { this.state.companyName = e }}>{this.state.companyOption}</Select>
                         </div>
                     </div>
                 </div>

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

@@ -127,6 +127,12 @@
                 margin-right: 10px;
             }
         }
+        .patent-process-list {
+            span {
+                width: 180px;
+                display: inline-block;
+            }
+        }
         >div {
             color: #333;
             margin-bottom: 10px;

+ 32 - 219
js/component/manageCenter/servicesManage/patent/correction.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Button, Input, Select, Spin, Table, Switch, DatePicker, message } from 'antd';
 import { patentTypeList, patentStateList, provinceArr } from '../../../dataDic.js';
-import { getTime,getPatentState } from '../../../tools.js';
+import { getTime, getPatentState,getPatentType } from '../../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import './comprehensive.less';
@@ -17,22 +17,10 @@ const Correction = React.createClass({
             method: "post",
             dataType: "json",
             crossDomain: false,
-            url: globalConfig.context + "/techservice/patent/managePatentList",
+            url: globalConfig.context + "/techservice/patent/noticeOfCorrectionList",
             data: {
                 pageNo: pageNo || 1,
-                pageSize: this.state.pagination.pageSize,
-                serialNumber: this.state.number,
-                patentNumber: this.state.patentNumber,
-                patentName: this.state.patentName,
-                //office: 事务所,
-                locationProvince: this.state.province,
-                unitName: this.state.unitName,
-                patentCatagory: this.state.patentType,
-                patentState: this.state.patentState,
-                createTime: this.state.createTime,
-                patentApplicationDate: this.state.startTime,
-                authorizedDate: this.state.endTime,
-                author: this.state.author
+                pageSize: this.state.pagination.pageSize
             },
             success: function (data) {
                 if (data.error.length || !data.data || !data.data.list) {
@@ -43,38 +31,18 @@ const Correction = React.createClass({
                     let thisdata = data.data.list[i];
                     this.state.data.push({
                         key: i,
+                        pid:thisdata.pid,
                         number: thisdata.serialNumber,
                         patentNumber: thisdata.patentNumber,
+                        office: thisdata.office,
+                        locationProvince: thisdata.locationProvince,
                         unitName: thisdata.unitName,
-                        patentName: thisdata.patentName,
                         patentType: thisdata.patentCatagory,
+                        patentName: thisdata.patentName,
                         patentState: thisdata.patentState,
-                        patentField: thisdata.patentField,
-                        patentDes: thisdata.patentDes,
-                        patentProryStatementUrl: thisdata.patentProryStatementUrl, //专利代理委托书
-                        patentWritingUrl: thisdata.patentWritingUrl, //专利稿件
-                        authorizationNoticeUrl: thisdata.authorizationNoticeUrl, //授权通知书
-                        patentCertificateUrl: thisdata.patentCertificateUrl, //专利证书
-                        lastYearTaxReportUrl: thisdata.lastYearTaxReportUrl, //上年度纳税表
-                        startTime: thisdata.patentApplicationDate,
-                        endTime: thisdata.authorizedDate,
-                        orgCode: thisdata.orgCode,
-                        companyAddress: thisdata.locationProvince + '/' + thisdata.locationCity + '/' + thisdata.locationArea,
-                        companyContacts: thisdata.contacts, //联系人
-                        firstInventorName: thisdata.firstInventorName,
-                        firstInventorNationality: thisdata.firstInventorNationality, //国籍
-                        firstInventorIdNumber: thisdata.firstInventorIdNumber,   //id
-                        firstInventorIsPublish: thisdata.firstInventorIsPublish, //是否公布
-                        secondInventorName: thisdata.secondInventorName,
-                        secondInventorNationality: thisdata.secondInventorNationality,
-                        secondInventorIsPublish: thisdata.secondInventorIsPublish,
-                        thirdInventorName: thisdata.thirdInventorName,
-                        thirdInventorNationality: thisdata.thirdInventorNationality,
-                        thirdInventorIsPublish: thisdata.thirdInventorIsPublish,
-                        createTime: thisdata.createTime,   //派单日
-                        author: thisdata.author, //撰写人
-                        office: thisdata.office, //事务所
-                        principal: thisdata.principal //负责人
+                        endData:[thisdata.patentCatagory,thisdata.authorizedDate],
+                        author: thisdata.author,
+                        authorizedDate: thisdata.authorizedDate
                     });
                 };
                 this.state.pagination.current = data.data.pageNo;
@@ -90,82 +58,18 @@ const Correction = React.createClass({
             });
         }.bind(this));
     },
-    getAuthorList() {
-        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.authorOption.push(
-                        <Select.Option value={item} key={item}>{data.data[item]}</Select.Option>
-                    )
-                };
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    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));
-    },
     getInitialState() {
         return {
-            number: '',
+            serialNumber: '',
             patentNumber: '',
-            //office: 事务所,
-            province: '',
+            office: '',
+            locationProvince: '',
             unitName: '',
-            patentType: '',
+            patentCatagory: '',
             patentName: '',
             patentState: '',
-            createTime: [],
-            endTime: [],
-            startTime: [],
             author: '',
-            warningText: 'warning text! warning text! warning text!',
-            AlertDis: 'block',
-            patentTypeOption: [],
-            patentStateOption: [],
-            companyOption: [],
-            authorOption: [],
-            provinceOption: [],
-            searchMore: true,
-            data: [],
-            download: globalConfig.context + '/api/warningreports/download',
+            authorizedDate: '',
             loading: false,
             pagination: {
                 defaultCurrent: 1,
@@ -181,6 +85,17 @@ const Correction = React.createClass({
             },
             columns: [
                 {
+                    title: '答复截止日',
+                    dataIndex: 'endData',
+                    key: 'endData',
+                    render: text => { 
+                        if ( text[0] == '0') {
+                            return getTime(text[1],2)
+                        } else if ( text[0] == '1' || text[0] == '2') {
+                            return getTime(text[1],4)
+                        }
+                     },
+                }, {
                     title: '编号',
                     dataIndex: 'number',
                     key: 'number',
@@ -201,6 +116,11 @@ const Correction = React.createClass({
                     dataIndex: 'companyName',
                     key: 'companyName',
                 }, {
+                    title: '专利类型',
+                    dataIndex: 'patentType',
+                    key: 'patentType',
+                    render: text => { return getPatentType(text) },
+                }, {
                     title: '专利名称',
                     dataIndex: 'patentName',
                     key: 'patentName',
@@ -210,21 +130,6 @@ const Correction = React.createClass({
                     key: 'patentState',
                     render: text => { return getPatentState(text) },
                 }, {
-                    title: '派单日',
-                    dataIndex: 'createtime',
-                    key: 'createtime',
-                    render: text => { return getTime(text) },
-                }, {
-                    title: '申请日',
-                    dataIndex: 'startTime',
-                    key: 'startTime',
-                    render: text => { return getTime(text) },
-                }, {
-                    title: '授权日',
-                    dataIndex: 'endTime',
-                    key: 'endTime',
-                    render: text => { return getTime(text) },
-                }, {
                     title: '资料撰写人',
                     dataIndex: 'author',
                     key: 'author',
@@ -234,25 +139,7 @@ const Correction = React.createClass({
         };
     },
     componentWillMount() {
-        let _me = this;
-        patentTypeList.map(function (item) {
-            _me.state.patentTypeOption.push(
-                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
-            )
-        });
-        patentStateList.map(function (item) {
-            _me.state.patentStateOption.push(
-                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
-            )
-        });
-        provinceArr.map(function (item) {
-            _me.state.provinceOption.push(
-                <Select.Option value={item} key={item}>{item}</Select.Option>
-            )
-        });
         this.loadData();
-        this.getAuthorList();
-        this.getCompanyList();
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
@@ -262,88 +149,14 @@ const Correction = React.createClass({
     },
     closeDesc(e) {
         this.state.showDesc = e;
-    },
-    search() {
         this.loadData();
     },
-    reset() {
-        this.state.number = '';
-        this.state.patentNumber = '';
-        this.state.province = '';
-        this.state.unitName = '';
-        this.state.patentType = '';
-        this.state.patentName = '';
-        this.state.patentState = '';
-        this.state.createTime = [];
-        this.state.endTime = [];
-        this.state.startTime = [];
-        this.state.author = '';
-        this.loadData();
-    },
-    searchSwitch() {
-        this.setState({
-            searchMore: !this.state.searchMore
-        });
-    },
-    searchcreateTime(date, dateString) {
-        this.state.createTime = dateString;
-    },
-    searchstartTime(date, dateString) {
-        this.state.startTime = dateString;
-    },
-    searchSelect(e) {
-        let _me = this;
-        this.setState({
-            searchValue: e.target.value
-        });
-        switch (_me.state.searchKey) {
-            case "patentNumber":
-                _me.state.patentNumber = e.target.value;
-                _me.state.number = '';
-                _me.state.patentName = '';
-                break;
-            case "serialNumber":
-                _me.state.number = e.target.value;
-                _me.state.patentNumber = '';
-                _me.state.patentName = '';
-                break;
-            case "patentName":
-                _me.state.patentNumber = '';
-                _me.state.number = '';
-                _me.state.patentName = e.target.value;
-                break;
-        }
-    },
     render() {
         const { MonthPicker, RangePicker } = DatePicker;
         return (
             <div className="patent-content" >
                 <div className="content-title">
-                    <span>专利综合管理</span>
-                </div>
-                <div className="patent-query">
-                    <Select placeholder="请选择" value={this.state.searchKey} style={{ width: 200 }} onChange={(e) => { this.setState({ searchKey: e, searchValue: '' }); } }>
-                        <Select.Option value="patentNumber">专利号</Select.Option>
-                        <Select.Option value="serialNumber">编号</Select.Option>
-                        <Select.Option value="patentName">专利名称</Select.Option>
-                    </Select>
-                    <Input value={this.state.searchValue} onChange={this.searchSelect} />
-                    <Select placeholder="专利状态" value={this.state.searchState} style={{ width: 200 }} onChange={(e) => { this.setState({ searchState: e }); } }>{this.state.patentStateOption}</Select>
-                    <Button type="primary" onClick={this.search}>搜索</Button>
-                    <Button onClick={this.reset}>重置</Button>
-                    <Button type="ghost">导出</Button>
-                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
-                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                        <p>
-                            <span>派单日:</span><RangePicker onChange={this.searchcreateTime} />
-                            <span>申请日:</span><RangePicker onChange={this.searchstartTime} />
-                        </p>
-                        <div>
-                            <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e } }>{this.state.provinceOption}</Select>
-                            <Select placeholder="选择撰写人" style={{ width: 200 }} onChange={(e) => { this.state.author = e } }>{this.state.authorOption}</Select>
-                            <Select placeholder="选择公司" style={{ width: 200 }} onChange={(e) => { this.state.companyName = e } }>{this.state.companyOption}</Select>
-                        </div>
-                    </div>
+                    <span>补正审查通知管理</span>
                 </div>
                 <div className="patent-table">
                     <Spin spinning={this.state.loading}>

+ 4 - 1
js/component/manageCenter/servicesManage/patent/payment.jsx

@@ -161,6 +161,9 @@ const Payment = React.createClass({
         this.state.province = '';
         this.loadData();
     },
+    exportPending() {
+        window.open(globalConfig.context + "/techservice/patent/exportPending?locationProvince=" + this.state.province)
+    },
     render() {
         return (
             <div className="patent-content" >
@@ -171,7 +174,7 @@ const Payment = React.createClass({
                     <Select placeholder="选择省份" style={{ width: 200 }} onChange={(e) => { this.state.province = e } }>{this.state.provinceOption}</Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
-                    <Button type="ghost">导出</Button>
+                    <Button type="ghost" onClick={this.exportPending}>导出</Button>
                 </div>
                 <div className="patent-table">
                     <Spin spinning={this.state.loading}>

+ 7 - 2
js/component/manageCenter/topTab.jsx

@@ -13,13 +13,18 @@ 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) {
-            window.location.href = "../admin/login.html"
+            if ( theActive === undefined ) {
+                window.location.href = "./login.html"
+            } else {
+                window.location.href = "../login.html"
+            }
         });
     },
     render() {

+ 2 - 2
js/component/tools.js

@@ -93,7 +93,7 @@ module.exports = {
     getTime: function (e, t) {
         if (e && !t) {
             var d = new Date(e);
-            d = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate() + " ";
+            d = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " ";
             // + (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) + ":" +
             // (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) + ":" +
             // (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());
@@ -103,7 +103,7 @@ module.exports = {
             var d2 = new Date(e);
             d2 = d2.setMonth(d1.getMonth() + t);
             d2 = new Date(d2)
-            d2 = d2.getFullYear() + "/" + (d2.getMonth() + 1) + "/" + d2.getDate() + " ";
+            d2 = d2.getFullYear() + "-" + (d2.getMonth() + 1) + "-" + d2.getDate() + " ";
             return d2;
         } else {
             return '';