patentPayment.jsx 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. import React from 'react';
  2. import { Radio, Icon, Button, AutoComplete,Cascader,Input, Select, Spin, Popconfirm, Table, Switch, message, DatePicker, Upload, Form ,Modal,Tabs} from 'antd';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import moment from 'moment';
  6. import TechAchievementDesc from '@/manageCenter/achievement/crmAchievement.jsx';
  7. import { citySelect, provinceList ,areaSelect} from '@/NewDicProvinceList';
  8. import { socialAttribute, industry, auditStatusL, lvl, currentMember ,slcRedit,dataGrade,cityArr,patentTypeList} from '@/dataDic.js';
  9. import { getSocialAttribute, beforeUploadFile,splitUrl ,getSlcRedit,getDataGrade,getAchievementCategory,getTechAuditStatus,getboutique,getPatentType,getcityArr,getPatentTypeva} from '@/tools.js';
  10. import './customer.less';
  11. const Option = AutoComplete.Option;
  12. //图片组件
  13. const PicturesWall = React.createClass({
  14. getInitialState() {
  15. return {
  16. previewVisible: false,
  17. previewImage: '',
  18. fileList: this.props.pictureUrl,
  19. }
  20. },
  21. getDefaultProps(){
  22. return{
  23. changeClick:this.modifyChange
  24. }
  25. },
  26. handleCancel() {
  27. this.setState({ previewVisible: false })
  28. },
  29. handlePreview(file) {
  30. this.setState({
  31. previewImage: file.url || file.thumbUrl,
  32. previewVisible: true,
  33. });
  34. },
  35. handleChange(info) {
  36. let fileList = info.fileList;
  37. this.setState({ fileList });
  38. this.props.fileList(fileList);
  39. },
  40. componentWillReceiveProps(nextProps) {
  41. this.state.fileList = nextProps.pictureUrl;
  42. },
  43. render() {
  44. const { previewVisible, previewImage, fileList } = this.state;
  45. const uploadButton = (
  46. <div>
  47. <Icon type="plus" />
  48. <div className="ant-upload-text">点击上传</div>
  49. </div>
  50. );
  51. return (
  52. <div style={{display:"inline-block"}}>
  53. <Upload
  54. beforeUpload={beforeUploadFile}
  55. action={globalConfig.context + "/api/admin/patentNew/uploadFile"}
  56. data={{ 'sign': '' }}
  57. listType="picture-card"
  58. fileList={fileList}
  59. onPreview={this.handlePreview}
  60. onChange={this.handleChange} >
  61. {fileList.length >= 18 ? null : uploadButton}
  62. </Upload>
  63. <Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
  64. <img alt="example" style={{ width: '100%' }} src={previewImage} />
  65. </Modal>
  66. </div>
  67. );
  68. }
  69. });
  70. const PatentPayment = Form.create()(React.createClass({
  71. departmentList() {
  72. this.setState({
  73. loading: true
  74. });
  75. $.ajax({
  76. method: "get",
  77. dataType: "json",
  78. crossDomain: false,
  79. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  80. data: {},
  81. success: function(data) {
  82. let thedata = data.data;
  83. let theArr=[];
  84. if(!thedata) {
  85. if(data.error && data.error.length) {
  86. message.warning(data.error[0].message);
  87. };
  88. }else{
  89. thedata.map(function(item,index){
  90. theArr.push({
  91. key:index,
  92. name:item.name,
  93. id:item.id,
  94. })
  95. })
  96. }
  97. this.setState({
  98. departmentArr:theArr,
  99. })
  100. }.bind(this),
  101. }).always(function() {
  102. this.setState({
  103. loading: false
  104. });
  105. }.bind(this));
  106. },
  107. loadData(pageNo){
  108. this.setState({
  109. loading: true
  110. }),
  111. $.ajax({
  112. method: "get",
  113. dataType: "json",
  114. crossDomain: false,
  115. url: globalConfig.context + '/api/admin/patentNew/selectPatentNew',
  116. data: {
  117. pageNo: pageNo || 1,
  118. pageSize: this.state.pagination.pageSize,
  119. status:this.state.statusSearch,
  120. name:this.state.nameSearch,
  121. aname:this.state.anameSearch,
  122. patentNo:this.state.patentNoSearch,
  123. departmentId:this.state.departmentSearch,
  124. startDate:this.state.timesArr[0],
  125. endDate:this.state.timesArr[1],
  126. type:this.state.typeSearch,
  127. },
  128. success:function (data) {
  129. let theArr = [];
  130. if(!data.data) {
  131. if(data.error && data.error.length) {
  132. message.warning(data.error[0].message);
  133. };
  134. } else {
  135. for(let i = 0; i < data.data.list.length; i++) {
  136. let thisdata = data.data.list[i];
  137. theArr.push({
  138. id:thisdata.id,
  139. province:thisdata.province,
  140. status:thisdata.status,
  141. patentNo:thisdata.patentNo,
  142. name:thisdata.name,
  143. type:thisdata.type,
  144. applyDates:thisdata.applyDates,
  145. authorizationDates:thisdata.authorizationDates,
  146. patentAmount:thisdata.patentAmount,
  147. applicant:thisdata.applicant,
  148. contactMobile:thisdata.contactMobile,
  149. email:thisdata.email,
  150. certificateUrl:thisdata.certificateUrl,
  151. aname:thisdata.aname,
  152. depName:thisdata.depName,
  153. });
  154. };
  155. this.state.pagination.current = data.data.pageNo;
  156. this.state.pagination.total = data.data.totalCount;
  157. };
  158. if(!data.data.list.length) {
  159. this.state.pagination.current = 0
  160. this.state.pagination.total = 0
  161. }
  162. this.setState({
  163. pageNo: pageNo,
  164. dataSource: theArr,
  165. pagination: this.state.pagination,
  166. });
  167. }.bind(this)
  168. }).always(function() {
  169. this.setState({
  170. loading: false
  171. });
  172. }.bind(this));
  173. },
  174. getInitialState(){
  175. return {
  176. loading:false,
  177. visible:false,
  178. orgCodeUrl:[],
  179. fileList:[],
  180. departmentArr:[],
  181. timesArr:[],
  182. pagination: {
  183. defaultCurrent: 1,
  184. defaultPageSize: 10,
  185. showQuickJumper: true,
  186. pageSize: 10,
  187. onChange: function(page) {
  188. this.loadData(page);
  189. }.bind(this),
  190. showTotal: function(total) {
  191. return '共' + total + '条数据';
  192. }
  193. },
  194. dataSource:[],
  195. columns:[{
  196. title: '专利号',
  197. dataIndex: 'patentNo',
  198. key: 'patentNo'
  199. },{
  200. title: '专利名称',
  201. dataIndex: 'name',
  202. key: 'name'
  203. },{
  204. title: '专利类型',
  205. dataIndex: 'type',
  206. key: 'type',
  207. render:text=>{
  208. return getPatentType(text)
  209. }
  210. },{
  211. title: '申请日期',
  212. dataIndex: 'applyDates',
  213. key: 'applyDates'
  214. },{
  215. title: '授权日期',
  216. dataIndex: 'authorizationDates',
  217. key: 'authorizationDates'
  218. },{
  219. title: '费用',
  220. dataIndex: 'patentAmount',
  221. key: 'patentAmount'
  222. },{
  223. title: '授权公司',
  224. dataIndex: 'applicant',
  225. key: 'applicant'
  226. },{
  227. title: '录入人',
  228. dataIndex: 'aname',
  229. key: 'aname'
  230. },{
  231. title: '录入公司',
  232. dataIndex: 'depName',
  233. key: 'depName'
  234. },{
  235. title: '联系电话',
  236. dataIndex: 'contactMobile',
  237. key: 'contactMobile'
  238. },{
  239. title: '电子邮箱',
  240. dataIndex: 'email',
  241. key: 'email'
  242. },{
  243. title: '状态',
  244. dataIndex: 'status',
  245. key: 'status',
  246. render:text=>{
  247. if (text === 1) {
  248. return '已提醒'
  249. }else{
  250. return '待提醒'
  251. }
  252. }
  253. }]
  254. }
  255. },
  256. componentWillMount(){
  257. this.loadData()
  258. this.departmentList()
  259. let data=localStorage.getItem('newData');
  260. if(data!='{}'&&data){
  261. var newData = JSON.parse(data);
  262. this.tableRowClick(newData);
  263. };
  264. },
  265. new(){
  266. this.reset();
  267. this.setState({
  268. visible:true
  269. })
  270. },
  271. visitCancel(){
  272. this.state.fileList = [];
  273. this.setState({
  274. visible:false
  275. })
  276. },
  277. onSure(){
  278. let theorgCodeUrl = [];
  279. if (this.state.orgCodeUrl.length) {
  280. let picArr = [];
  281. this.state.orgCodeUrl.map(function (item) {
  282. if ( item.response && item.response.data && item.response.data.length ){
  283. picArr.push(item.response.data);
  284. }
  285. });
  286. theorgCodeUrl = picArr.join(",");
  287. };
  288. console.log(typeof theorgCodeUrl)
  289. if (!this.state.patentNo) {
  290. message.warning('专利号不能为空')
  291. return
  292. }
  293. if (!this.state.patentName) {
  294. message.warning('专利名称不能为空')
  295. return
  296. }
  297. if(this.state.patentType === ''){
  298. message.warning('专利类型不能为空');
  299. return
  300. }
  301. if(this.state.email === ''){
  302. message.warning('电子邮箱不能为空');
  303. return
  304. }
  305. $.ajax({
  306. method: "POST",
  307. dataType: "json",
  308. crossDomain: false,
  309. url: globalConfig.context +'/api/admin/patentNew/addPatentNew' ,
  310. data: {
  311. patentNo:this.state.patentNo,
  312. name:this.state.patentName,
  313. type:this.state.patentType,
  314. applyDates:this.state.appDate,
  315. authorizationDates:this.state.authDate,
  316. applicant:this.state.proposer,
  317. province:this.state.province,
  318. contactMobile:this.state.contactPhone,
  319. email:this.state.email,
  320. certificateUrl:theorgCodeUrl.length?theorgCodeUrl:'',
  321. }
  322. }).done(function(data) {
  323. this.setState({
  324. loading: false
  325. });
  326. if(!data.error.length) {
  327. message.success('保存成功!');
  328. this.onCal()
  329. this.loadData()
  330. } else {
  331. message.warning(data.error[0].message);
  332. }
  333. }.bind(this));
  334. },
  335. tableRowClick(record,index){
  336. this.state.RowData = record
  337. this.setState({
  338. avisible:true,
  339. patentNo:record.patentNo,
  340. patentName:record.name,
  341. province:record.province,
  342. status:record.status,
  343. patentType:record.type,
  344. appDate:record.applyDates,
  345. authDate:record.authorizationDates,
  346. proposer:record.applicant,
  347. contactPhone:record.contactMobile,
  348. email:record.email,
  349. certificateUrl:record.certificateUrl,
  350. orgCodeUrl: record.certificateUrl ? splitUrl(record.certificateUrl, ',', globalConfig.avatarHost + '/upload') : [],
  351. })
  352. localStorage.setItem('newData','{}');
  353. },
  354. xiugai(record){
  355. let theorgCodeUrl = [];
  356. if (this.state.orgCodeUrl.length) {
  357. let picArr = [];
  358. this.state.orgCodeUrl.map(function (item) {
  359. if ( item.response && item.response.data && item.response.data.length ){
  360. picArr.push(item.response.data);
  361. }
  362. });
  363. theorgCodeUrl = picArr.join(",");
  364. };
  365. console.log(typeof this.state.patentType)
  366. if (!this.state.patentNo) {
  367. message.warning('专利号不能为空')
  368. return
  369. }
  370. if (!this.state.patentName) {
  371. message.warning('专利名称不能为空')
  372. return
  373. }
  374. if(this.state.patentType === ''){
  375. message.warning('专利类型不能为空');
  376. return
  377. }
  378. $.ajax({
  379. method: "POST",
  380. dataType: "json",
  381. crossDomain: false,
  382. url: globalConfig.context +'/api/admin/patentNew/updatePatentNew' ,
  383. data: {
  384. id:record.id,
  385. patentNo:this.state.patentNo,
  386. name:this.state.patentName,
  387. type:this.state.patentType,
  388. applyDates:this.state.appDate,
  389. authorizationDates:this.state.authDate,
  390. applicant:this.state.proposer,
  391. province:this.state.province,
  392. contactMobile:this.state.contactPhone,
  393. email:this.state.email,
  394. status:this.state.status,
  395. certificateUrl:theorgCodeUrl.length?theorgCodeUrl:'',
  396. },
  397. success: function (data) {
  398. }.bind(this),
  399. }).done(function(data) {
  400. this.setState({
  401. loading: false
  402. });
  403. if(!data.error.length) {
  404. message.success('修改成功!');
  405. this.avisitCancel()
  406. this.loadData(this.state.pageNo)
  407. } else {
  408. message.warning(data.error[0].message);
  409. }
  410. }.bind(this));
  411. },
  412. baocunxiugai(){
  413. this.xiugai(this.state.RowData)
  414. },
  415. avisitCancel(){
  416. this.setState({
  417. avisible:false
  418. })
  419. },
  420. reset(){
  421. this.setState({
  422. patentNo:'',
  423. patentName:'',
  424. patentType:undefined,
  425. appDate:undefined,
  426. authDate:undefined,
  427. orgCodeUrl:'',
  428. proposer:'',
  429. province:undefined,
  430. contactPhone:'',
  431. email:''
  432. })
  433. },
  434. searchReset(){
  435. this.setState({
  436. statusSearch:undefined,
  437. nameSearch:undefined,
  438. anameSearch:undefined,
  439. patentNoSearch:undefined,
  440. departmentSearch:undefined,
  441. typeSearch:undefined,
  442. timesArr:[],
  443. },()=>{
  444. this.loadData()
  445. })
  446. },
  447. search(){
  448. this.loadData()
  449. },
  450. onCal(){
  451. this.setState({
  452. visible:false
  453. })
  454. },
  455. getOrgCodeUrl(e) {
  456. this.setState({ orgCodeUrl: e });
  457. },
  458. render(){
  459. const theData = this.state.RowData || {};
  460. const FormItem = Form.Item;
  461. const formItemLayout = {
  462. labelCol: { span: 8 },
  463. wrapperCol: { span: 14 },
  464. };
  465. const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
  466. return(
  467. <div className="user-content" >
  468. <div className="content-title">
  469. <span style={{fontSize:'16px'}}>客户专利提醒</span>
  470. <div className="user-search">
  471. <Select value={this.state.typeSearch} placeholder="请选择专利类型" onChange={(e)=>{
  472. this.setState({
  473. typeSearch:e
  474. })
  475. }} style={{width:"140px"}}>
  476. <Option value={1}>实用新型</Option>
  477. <Option value={2}>外观设计</Option>
  478. <Option value={3}>发明</Option>
  479. </Select>
  480. <Input value={this.state.nameSearch} placeholder="请输入授权公司" onChange={(e)=>{
  481. this.setState({
  482. nameSearch:e.target.value
  483. })
  484. }} />
  485. <Select value={this.state.departmentSearch} placeholder="请选择录入公司" onChange={(e)=>{
  486. this.setState({
  487. departmentSearch:e
  488. })
  489. }} style={{width:"140px"}}>
  490. {this.state.departmentArr.map((e)=>{
  491. return <Option value={e.id}>{e.name}</Option>
  492. })}
  493. </Select>
  494. <Input value={this.state.anameSearch} placeholder="请输入录入人" onChange={(e)=>{
  495. this.setState({
  496. anameSearch:e.target.value
  497. })
  498. }} />
  499. <Select value={this.state.statusSearch} placeholder="请选择状态" onChange={(e)=>{
  500. this.setState({
  501. statusSearch:e
  502. })
  503. }} style={{width:"140px"}}>
  504. <Option value={0}>正常</Option>
  505. <Option value={1}>提醒中</Option>
  506. </Select>
  507. <Input value={this.state.patentNoSearch} placeholder="请输入专利号" onChange={(e)=>{
  508. this.setState({
  509. patentNoSearch:e.target.value
  510. })
  511. }} />
  512. <Button type="primary" onClick={this.search} style={{marginLeft:'10px'}}>搜索</Button>
  513. <Button type="primary" onClick={this.searchReset} style={{marginLeft:'10px'}}>重置</Button>
  514. <span>更多搜索
  515. <Switch onChange={(mark)=>{
  516. this.setState({mark:mark})
  517. }}/>
  518. </span>
  519. <Button type="primary" onClick={this.new} style={{marginRight:'10px',float:'right'}}>新建</Button>
  520. {/*<Button onClick={this.reset}>导出</Button>*/}
  521. </div>
  522. {this.state.mark?<div className="user-search" style={{paddingTop:"10px"}}>
  523. <span style={{fontSize:"14px"}}>
  524. 请选择申请时间:
  525. </span>
  526. <RangePicker value={[this.state.timesArr[0]?moment(this.state.timesArr[0]):null,
  527. this.state.timesArr[1]?moment(this.state.timesArr[1]):null]} onChange={(e,f)=>{
  528. this.setState({
  529. timesArr:f,
  530. })
  531. }} style={{marginTop:"0",marginLeft:"10px"}}/>
  532. </div>:''}
  533. <div className="patent-table">
  534. <Spin spinning={this.state.loading}>
  535. <Table columns={this.state.columns}
  536. dataSource={this.state.dataSource}
  537. pagination={this.state.pagination}
  538. onRowClick={this.tableRowClick}
  539. size="small"
  540. bordered />
  541. </Spin>
  542. </div>
  543. <Modal maskClosable={false} visible={this.state.avisible}
  544. onCancel={this.avisitCancel}
  545. width='800px'
  546. title='修改详情'
  547. footer=''
  548. className="admin-desc-content">
  549. <div className="clearfix">
  550. <FormItem className="half-item"
  551. {...formItemLayout}
  552. label={
  553. <span>
  554. <strong style={{ color: '#f00' }}>*</strong>专利号
  555. </span>
  556. } >
  557. {<Input placeholder="请输入专利号" value={this.state.patentNo}
  558. onChange={(e)=>{this.setState({patentNo:e.target.value})}} style={{width:'240px'}} />}
  559. </FormItem>
  560. <FormItem className="half-item"
  561. {...formItemLayout}
  562. label={
  563. <span>
  564. <strong style={{ color: '#f00' }}>*</strong>专利名称
  565. </span>
  566. } >
  567. {<Input placeholder="请输入专利名称" value={this.state.patentName}
  568. onChange={(e)=>{this.setState({patentName:e.target.value})}} style={{width:'240px'}} />}
  569. </FormItem>
  570. <FormItem className="half-item"
  571. {...formItemLayout}
  572. label="专利类型" >
  573. {<Select placeholder="请选择专利类型"
  574. style={{ width:'240px'}}
  575. value={getPatentType(this.state.patentType)}
  576. onChange={(e)=>{this.setState({patentType:e})}}>
  577. {
  578. patentTypeList.map(function (item) {
  579. return <Select.Option key={item.value} >{item.key}</Select.Option>
  580. })
  581. }
  582. </Select>}
  583. </FormItem>
  584. <FormItem className="half-item"
  585. {...formItemLayout}
  586. label="申请日期" >
  587. <DatePicker
  588. style={{marginTop:"2px",width: '240px',height:"32px" }}
  589. showTime
  590. format="YYYY-MM-DD"
  591. onOk={(e)=>{}}
  592. value={this.state.appDate ? moment(this.state.appDate) : null}
  593. onChange={(data, dataString) => { this.setState({ appDate: dataString }); }} />
  594. </FormItem>
  595. <FormItem className="half-item"
  596. {...formItemLayout}
  597. label="授权日期" >
  598. <DatePicker
  599. style={{marginTop:"2px",width: '240px',height:"32px" }}
  600. showTime
  601. format="YYYY-MM-DD"
  602. onOk={(e)=>{}}
  603. value={this.state.authDate ? moment(this.state.authDate) : null}
  604. onChange={(data, dataString) => { this.setState({ authDate: dataString }); }} />
  605. </FormItem>
  606. <FormItem className="half-item"
  607. {...formItemLayout}
  608. label="费用" >
  609. <span>{theData.patentAmount}</span>
  610. </FormItem>
  611. <div className="clearfix">
  612. <FormItem
  613. labelCol={{ span: 4 }}
  614. wrapperCol={{ span: 18 }}
  615. label="合同扫描件"
  616. >
  617. <PicturesWall
  618. fileList={this.getOrgCodeUrl}
  619. pictureUrl={this.state.orgCodeUrl} />
  620. <p>图片建议:要清晰。</p>
  621. </FormItem>
  622. </div>
  623. <FormItem className="half-item"
  624. {...formItemLayout}
  625. label="申请人" >
  626. {<Input placeholder="请输入申请人/公司" value={this.state.proposer}
  627. onChange={(e)=>{this.setState({proposer:e.target.value})}} style={{width:'240px'}} />}
  628. </FormItem>
  629. <FormItem className="half-item"
  630. {...formItemLayout}
  631. label="省份" >
  632. <Select placeholder="请选择省份"
  633. style={{ width:'240px'}}
  634. value={getcityArr(this.state.province)}
  635. onChange={(e)=>{this.setState({province:e})}}>
  636. {
  637. cityArr.map(function (item) {
  638. return <Select.Option key={item.value} >{item.key}</Select.Option>
  639. })
  640. }
  641. </Select>
  642. </FormItem>
  643. <FormItem className="half-item"
  644. {...formItemLayout}
  645. label="联系电话" >
  646. {<Input placeholder="请输入联系手机" value={this.state.contactPhone}
  647. onChange={(e)=>{this.setState({contactPhone:e.target.value})}} style={{width:'240px'}} />}
  648. </FormItem>
  649. <FormItem className="half-item"
  650. {...formItemLayout}
  651. label={
  652. <span>
  653. <strong style={{ color: '#f00' }}>*</strong>电子邮箱
  654. </span>
  655. } >
  656. {<Input placeholder="请输入电子邮箱" value={this.state.email}
  657. onChange={(e)=>{this.setState({email:e.target.value})}} style={{width:'240px'}} />}
  658. </FormItem>
  659. <FormItem className="half-item"
  660. {...formItemLayout}
  661. label={'状态'} >
  662. <span>{this.state.status?'已提醒':'待提醒'}</span>
  663. </FormItem>
  664. </div>
  665. <div style={{overflow:'hidden'}}>
  666. <Button style={{float:'right'}} onClick={this.avisitCancel}>取消</Button>
  667. <Button type="primary" style={{float:'right',marginRight:'10px'}} onClick={this.baocunxiugai}>保存</Button>
  668. </div>
  669. </Modal>
  670. <Modal maskClosable={false} visible={this.state.visible}
  671. onOk={this.visitOk} onCancel={this.visitCancel}
  672. width='1000px'
  673. title='专利资料'
  674. footer=''
  675. className="admin-desc-content">
  676. <div className="clearfix">
  677. <FormItem className="half-item"
  678. {...formItemLayout}
  679. label={
  680. <span>
  681. <strong style={{ color: '#f00' }}>*</strong>专利号
  682. </span>
  683. } >
  684. {<Input placeholder="请输入专利号" value={this.state.patentNo}
  685. onChange={(e)=>{this.setState({patentNo:e.target.value})}} style={{width:'240px'}} />}
  686. </FormItem>
  687. <FormItem className="half-item"
  688. {...formItemLayout}
  689. label={
  690. <span>
  691. <strong style={{ color: '#f00' }}>*</strong>专利名称
  692. </span>
  693. } >
  694. {<Input placeholder="请输入专利名称" value={this.state.patentName}
  695. onChange={(e)=>{this.setState({patentName:e.target.value})}} style={{width:'240px'}} />}
  696. </FormItem>
  697. <FormItem className="half-item"
  698. {...formItemLayout}
  699. label="申请日期" >
  700. <DatePicker
  701. style={{marginTop:"2px",width: '240px',height:"32px" }}
  702. showTime
  703. format="YYYY-MM-DD"
  704. onOk={(e)=>{}}
  705. value={this.state.appDate ? moment(this.state.appDate) : null}
  706. onChange={(data, dataString) => { this.setState({ appDate: dataString }); }} />
  707. </FormItem>
  708. <FormItem className="half-item"
  709. {...formItemLayout}
  710. label={
  711. <span>
  712. <strong style={{ color: '#f00' }}>*</strong>专利类型
  713. </span>
  714. } >
  715. {<Select placeholder="请选择专利类型"
  716. style={{ width:'240px'}}
  717. value={this.state.patentType}
  718. onChange={(e)=>{this.setState({patentType:e})}}>
  719. {
  720. patentTypeList.map(function (item) {
  721. return <Select.Option key={item.value} >{item.key}</Select.Option>
  722. })
  723. }
  724. </Select>}
  725. </FormItem>
  726. <FormItem className="half-item"
  727. {...formItemLayout}
  728. label="授权日期" >
  729. <DatePicker
  730. style={{marginTop:"2px",width: '240px',height:"32px" }}
  731. showTime
  732. format="YYYY-MM-DD"
  733. onOk={(e)=>{}}
  734. value={this.state.authDate ? moment(this.state.authDate) : null}
  735. onChange={(data, dataString) => { this.setState({ authDate: dataString }); }} />
  736. </FormItem>
  737. <div className="clearfix">
  738. <FormItem
  739. labelCol={{ span: 4 }}
  740. wrapperCol={{ span: 18 }}
  741. label='合同扫描件'
  742. >
  743. <PicturesWall
  744. fileList={this.getOrgCodeUrl}
  745. pictureUrl={this.state.orgCodeUrl} />
  746. <p>图片建议:要清晰。</p>
  747. </FormItem>
  748. </div>
  749. <div>
  750. <span style={{marginLeft:'50px',fontSize:'20px'}}>申请人资料</span>
  751. </div>
  752. <FormItem className="half-item"
  753. {...formItemLayout}
  754. label="申请人/公司" >
  755. {<Input placeholder="请输入申请人/公司" value={this.state.proposer}
  756. onChange={(e)=>{this.setState({proposer:e.target.value})}} style={{width:'240px'}} />}
  757. </FormItem>
  758. <FormItem className="half-item"
  759. {...formItemLayout}
  760. label="省份" >
  761. <Select placeholder="请选择省份"
  762. style={{ width:'240px'}}
  763. value={this.state.province}
  764. onChange={(e)=>{this.setState({province:e})}}>
  765. {
  766. cityArr.map(function (item) {
  767. return <Select.Option key={item.value} >{item.key}</Select.Option>
  768. })
  769. }
  770. </Select>
  771. </FormItem>
  772. <FormItem className="half-item"
  773. {...formItemLayout}
  774. label="联系手机" >
  775. {<Input placeholder="请输入联系手机" value={this.state.contactPhone}
  776. onChange={(e)=>{this.setState({contactPhone:e.target.value})}} style={{width:'240px'}} />}
  777. </FormItem>
  778. <FormItem className="half-item"
  779. {...formItemLayout}
  780. label={
  781. <span>
  782. <strong style={{ color: '#f00' }}>*</strong>电子邮箱
  783. </span>
  784. } >
  785. {<Input placeholder="请输入电子邮箱" value={this.state.email}
  786. onChange={(e)=>{this.setState({email:e.target.value})}} style={{width:'240px'}} />}
  787. </FormItem>
  788. </div>
  789. <div style={{overflow:'hidden'}}>
  790. <Button style={{float:'right'}} onClick={this.onCal}>取消</Button>
  791. <Button type="primary" style={{float:'right',marginRight:'10px'}} onClick={this.onSure}>保存</Button>
  792. </div>
  793. </Modal>
  794. </div >
  795. </div>
  796. )
  797. }
  798. }))
  799. export default PatentPayment;