patentPayment.jsx 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  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. </Spin>
  540. </div>
  541. <Modal maskClosable={false} visible={this.state.avisible}
  542. onCancel={this.avisitCancel}
  543. width='800px'
  544. title='修改详情'
  545. footer=''
  546. className="admin-desc-content">
  547. <div className="clearfix">
  548. <FormItem className="half-item"
  549. {...formItemLayout}
  550. label={
  551. <span>
  552. <strong style={{ color: '#f00' }}>*</strong>专利号
  553. </span>
  554. } >
  555. {<Input placeholder="请输入专利号" value={this.state.patentNo}
  556. onChange={(e)=>{this.setState({patentNo:e.target.value})}} style={{width:'240px'}} />}
  557. </FormItem>
  558. <FormItem className="half-item"
  559. {...formItemLayout}
  560. label={
  561. <span>
  562. <strong style={{ color: '#f00' }}>*</strong>专利名称
  563. </span>
  564. } >
  565. {<Input placeholder="请输入专利名称" value={this.state.patentName}
  566. onChange={(e)=>{this.setState({patentName:e.target.value})}} style={{width:'240px'}} />}
  567. </FormItem>
  568. <FormItem className="half-item"
  569. {...formItemLayout}
  570. label="专利类型" >
  571. {<Select placeholder="请选择专利类型"
  572. style={{ width:'240px'}}
  573. value={getPatentType(this.state.patentType)}
  574. onChange={(e)=>{this.setState({patentType:e})}}>
  575. {
  576. patentTypeList.map(function (item) {
  577. return <Select.Option key={item.value} >{item.key}</Select.Option>
  578. })
  579. }
  580. </Select>}
  581. </FormItem>
  582. <FormItem className="half-item"
  583. {...formItemLayout}
  584. label="申请日期" >
  585. <DatePicker
  586. style={{marginTop:"2px",width: '240px',height:"32px" }}
  587. showTime
  588. format="YYYY-MM-DD"
  589. onOk={(e)=>{}}
  590. value={this.state.appDate ? moment(this.state.appDate) : null}
  591. onChange={(data, dataString) => { this.setState({ appDate: dataString }); }} />
  592. </FormItem>
  593. <FormItem className="half-item"
  594. {...formItemLayout}
  595. label="授权日期" >
  596. <DatePicker
  597. style={{marginTop:"2px",width: '240px',height:"32px" }}
  598. showTime
  599. format="YYYY-MM-DD"
  600. onOk={(e)=>{}}
  601. value={this.state.authDate ? moment(this.state.authDate) : null}
  602. onChange={(data, dataString) => { this.setState({ authDate: dataString }); }} />
  603. </FormItem>
  604. <FormItem className="half-item"
  605. {...formItemLayout}
  606. label="费用" >
  607. <span>{theData.patentAmount}</span>
  608. </FormItem>
  609. <div className="clearfix">
  610. <FormItem
  611. labelCol={{ span: 4 }}
  612. wrapperCol={{ span: 18 }}
  613. label="合同扫描件"
  614. >
  615. <PicturesWall
  616. fileList={this.getOrgCodeUrl}
  617. pictureUrl={this.state.orgCodeUrl} />
  618. <p>图片建议:要清晰。</p>
  619. </FormItem>
  620. </div>
  621. <FormItem className="half-item"
  622. {...formItemLayout}
  623. label="申请人" >
  624. {<Input placeholder="请输入申请人/公司" value={this.state.proposer}
  625. onChange={(e)=>{this.setState({proposer:e.target.value})}} style={{width:'240px'}} />}
  626. </FormItem>
  627. <FormItem className="half-item"
  628. {...formItemLayout}
  629. label="省份" >
  630. <Select placeholder="请选择省份"
  631. style={{ width:'240px'}}
  632. value={getcityArr(this.state.province)}
  633. onChange={(e)=>{this.setState({province:e})}}>
  634. {
  635. cityArr.map(function (item) {
  636. return <Select.Option key={item.value} >{item.key}</Select.Option>
  637. })
  638. }
  639. </Select>
  640. </FormItem>
  641. <FormItem className="half-item"
  642. {...formItemLayout}
  643. label="联系电话" >
  644. {<Input placeholder="请输入联系手机" value={this.state.contactPhone}
  645. onChange={(e)=>{this.setState({contactPhone:e.target.value})}} style={{width:'240px'}} />}
  646. </FormItem>
  647. <FormItem className="half-item"
  648. {...formItemLayout}
  649. label={
  650. <span>
  651. <strong style={{ color: '#f00' }}>*</strong>电子邮箱
  652. </span>
  653. } >
  654. {<Input placeholder="请输入电子邮箱" value={this.state.email}
  655. onChange={(e)=>{this.setState({email:e.target.value})}} style={{width:'240px'}} />}
  656. </FormItem>
  657. <FormItem className="half-item"
  658. {...formItemLayout}
  659. label={'状态'} >
  660. <span>{this.state.status?'已提醒':'待提醒'}</span>
  661. </FormItem>
  662. </div>
  663. <div style={{overflow:'hidden'}}>
  664. <Button style={{float:'right'}} onClick={this.avisitCancel}>取消</Button>
  665. <Button type="primary" style={{float:'right',marginRight:'10px'}} onClick={this.baocunxiugai}>保存</Button>
  666. </div>
  667. </Modal>
  668. <Modal maskClosable={false} visible={this.state.visible}
  669. onOk={this.visitOk} onCancel={this.visitCancel}
  670. width='1000px'
  671. title='专利资料'
  672. footer=''
  673. className="admin-desc-content">
  674. <div className="clearfix">
  675. <FormItem className="half-item"
  676. {...formItemLayout}
  677. label={
  678. <span>
  679. <strong style={{ color: '#f00' }}>*</strong>专利号
  680. </span>
  681. } >
  682. {<Input placeholder="请输入专利号" value={this.state.patentNo}
  683. onChange={(e)=>{this.setState({patentNo:e.target.value})}} style={{width:'240px'}} />}
  684. </FormItem>
  685. <FormItem className="half-item"
  686. {...formItemLayout}
  687. label={
  688. <span>
  689. <strong style={{ color: '#f00' }}>*</strong>专利名称
  690. </span>
  691. } >
  692. {<Input placeholder="请输入专利名称" value={this.state.patentName}
  693. onChange={(e)=>{this.setState({patentName:e.target.value})}} style={{width:'240px'}} />}
  694. </FormItem>
  695. <FormItem className="half-item"
  696. {...formItemLayout}
  697. label="申请日期" >
  698. <DatePicker
  699. style={{marginTop:"2px",width: '240px',height:"32px" }}
  700. showTime
  701. format="YYYY-MM-DD"
  702. onOk={(e)=>{}}
  703. value={this.state.appDate ? moment(this.state.appDate) : null}
  704. onChange={(data, dataString) => { this.setState({ appDate: dataString }); }} />
  705. </FormItem>
  706. <FormItem className="half-item"
  707. {...formItemLayout}
  708. label={
  709. <span>
  710. <strong style={{ color: '#f00' }}>*</strong>专利类型
  711. </span>
  712. } >
  713. {<Select placeholder="请选择专利类型"
  714. style={{ width:'240px'}}
  715. value={this.state.patentType}
  716. onChange={(e)=>{this.setState({patentType:e})}}>
  717. {
  718. patentTypeList.map(function (item) {
  719. return <Select.Option key={item.value} >{item.key}</Select.Option>
  720. })
  721. }
  722. </Select>}
  723. </FormItem>
  724. <FormItem className="half-item"
  725. {...formItemLayout}
  726. label="授权日期" >
  727. <DatePicker
  728. style={{marginTop:"2px",width: '240px',height:"32px" }}
  729. showTime
  730. format="YYYY-MM-DD"
  731. onOk={(e)=>{}}
  732. value={this.state.authDate ? moment(this.state.authDate) : null}
  733. onChange={(data, dataString) => { this.setState({ authDate: dataString }); }} />
  734. </FormItem>
  735. <div className="clearfix">
  736. <FormItem
  737. labelCol={{ span: 4 }}
  738. wrapperCol={{ span: 18 }}
  739. label='合同扫描件'
  740. >
  741. <PicturesWall
  742. fileList={this.getOrgCodeUrl}
  743. pictureUrl={this.state.orgCodeUrl} />
  744. <p>图片建议:要清晰。</p>
  745. </FormItem>
  746. </div>
  747. <div>
  748. <span style={{marginLeft:'50px',fontSize:'20px'}}>申请人资料</span>
  749. </div>
  750. <FormItem className="half-item"
  751. {...formItemLayout}
  752. label="申请人/公司" >
  753. {<Input placeholder="请输入申请人/公司" value={this.state.proposer}
  754. onChange={(e)=>{this.setState({proposer:e.target.value})}} style={{width:'240px'}} />}
  755. </FormItem>
  756. <FormItem className="half-item"
  757. {...formItemLayout}
  758. label="省份" >
  759. <Select placeholder="请选择省份"
  760. style={{ width:'240px'}}
  761. value={this.state.province}
  762. onChange={(e)=>{this.setState({province:e})}}>
  763. {
  764. cityArr.map(function (item) {
  765. return <Select.Option key={item.value} >{item.key}</Select.Option>
  766. })
  767. }
  768. </Select>
  769. </FormItem>
  770. <FormItem className="half-item"
  771. {...formItemLayout}
  772. label="联系手机" >
  773. {<Input placeholder="请输入联系手机" value={this.state.contactPhone}
  774. onChange={(e)=>{this.setState({contactPhone:e.target.value})}} style={{width:'240px'}} />}
  775. </FormItem>
  776. <FormItem className="half-item"
  777. {...formItemLayout}
  778. label={
  779. <span>
  780. <strong style={{ color: '#f00' }}>*</strong>电子邮箱
  781. </span>
  782. } >
  783. {<Input placeholder="请输入电子邮箱" value={this.state.email}
  784. onChange={(e)=>{this.setState({email:e.target.value})}} style={{width:'240px'}} />}
  785. </FormItem>
  786. </div>
  787. <div style={{overflow:'hidden'}}>
  788. <Button style={{float:'right'}} onClick={this.onCal}>取消</Button>
  789. <Button type="primary" style={{float:'right',marginRight:'10px'}} onClick={this.onSure}>保存</Button>
  790. </div>
  791. </Modal>
  792. </div >
  793. </div>
  794. )
  795. }
  796. }))
  797. export default PatentPayment;