patentPayment.jsx 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  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 {
  10. getSocialAttribute,
  11. beforeUploadFile,
  12. splitUrl,
  13. getSlcRedit,
  14. getDataGrade,
  15. getAchievementCategory,
  16. getTechAuditStatus,
  17. getboutique,
  18. getPatentType,
  19. getcityArr,
  20. getPatentTypeva,
  21. ShowModal
  22. } from "@/tools.js";
  23. import './customer.less';
  24. import ShowModalDiv from "@/showModal.jsx";
  25. import ImgList from "../../../../common/imgList";
  26. const Option = AutoComplete.Option;
  27. //图片组件
  28. const PicturesWall = React.createClass({
  29. getInitialState() {
  30. return {
  31. previewVisible: false,
  32. previewImage: '',
  33. fileList: this.props.pictureUrl,
  34. }
  35. },
  36. getDefaultProps(){
  37. return{
  38. changeClick:this.modifyChange
  39. }
  40. },
  41. handleCancel() {
  42. this.setState({ previewVisible: false })
  43. },
  44. handlePreview(file) {
  45. this.setState({
  46. previewImage: file.url || file.thumbUrl,
  47. previewVisible: true,
  48. });
  49. },
  50. handleChange(info) {
  51. let fileList = info.fileList;
  52. this.setState({ fileList });
  53. this.props.fileList(fileList);
  54. },
  55. componentWillReceiveProps(nextProps) {
  56. this.state.fileList = nextProps.pictureUrl;
  57. },
  58. render() {
  59. const { previewVisible, previewImage, fileList } = this.state;
  60. const uploadButton = (
  61. <div>
  62. <Icon type="plus" />
  63. <div className="ant-upload-text">点击上传</div>
  64. </div>
  65. );
  66. return (
  67. <div style={{display:"inline-block"}}>
  68. <ImgList
  69. domId={this.props.domId}
  70. uploadConfig={{
  71. action:globalConfig.context + "/api/admin/patentNew/uploadFile",
  72. data:{ 'sign': '' },
  73. multiple:true,
  74. listType:"picture-card",
  75. beforeUpload:(infor)=>{beforeUploadFile(infor)}
  76. }}
  77. onChange={(infor)=>{
  78. this.handleChange(infor)
  79. }}
  80. fileList={fileList}
  81. />
  82. </div>
  83. );
  84. }
  85. });
  86. const PatentPayment = Form.create()(React.createClass({
  87. departmentList() {
  88. this.setState({
  89. loading: true
  90. });
  91. $.ajax({
  92. method: "get",
  93. dataType: "json",
  94. crossDomain: false,
  95. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  96. data: {},
  97. success: function(data) {
  98. let thedata = data.data;
  99. let theArr=[];
  100. if(!thedata) {
  101. if(data.error && data.error.length) {
  102. message.warning(data.error[0].message);
  103. };
  104. }else{
  105. thedata.map(function(item,index){
  106. theArr.push({
  107. key:index,
  108. name:item.name,
  109. id:item.id,
  110. })
  111. })
  112. }
  113. this.setState({
  114. departmentArr:theArr,
  115. })
  116. }.bind(this),
  117. }).always(function() {
  118. this.setState({
  119. loading: false
  120. });
  121. }.bind(this));
  122. },
  123. loadData(pageNo){
  124. this.setState({
  125. loading: true
  126. }),
  127. $.ajax({
  128. method: "get",
  129. dataType: "json",
  130. crossDomain: false,
  131. url: globalConfig.context + '/api/admin/patentNew/selectPatentNew',
  132. data: {
  133. pageNo: pageNo || 1,
  134. pageSize: this.state.pagination.pageSize,
  135. status:this.state.statusSearch,
  136. name:this.state.nameSearch,
  137. aname:this.state.anameSearch,
  138. patentNo:this.state.patentNoSearch,
  139. departmentId:this.state.departmentSearch,
  140. startDate:this.state.timesArr[0],
  141. endDate:this.state.timesArr[1],
  142. type:this.state.typeSearch,
  143. },
  144. success:function (data) {
  145. ShowModal(this);
  146. let theArr = [];
  147. if(!data.data) {
  148. if(data.error && data.error.length) {
  149. message.warning(data.error[0].message);
  150. };
  151. } else {
  152. for(let i = 0; i < data.data.list.length; i++) {
  153. let thisdata = data.data.list[i];
  154. theArr.push({
  155. id:thisdata.id,
  156. province:thisdata.province,
  157. status:thisdata.status,
  158. patentNo:thisdata.patentNo,
  159. name:thisdata.name,
  160. type:thisdata.type,
  161. applyDates:thisdata.applyDates,
  162. authorizationDates:thisdata.authorizationDates,
  163. patentAmount:thisdata.patentAmount,
  164. applicant:thisdata.applicant,
  165. contactMobile:thisdata.contactMobile,
  166. email:thisdata.email,
  167. certificateUrl:thisdata.certificateUrl,
  168. aname:thisdata.aname,
  169. depName:thisdata.depName,
  170. });
  171. };
  172. this.state.pagination.current = data.data.pageNo;
  173. this.state.pagination.total = data.data.totalCount;
  174. };
  175. if(!data.data.list.length) {
  176. this.state.pagination.current = 0
  177. this.state.pagination.total = 0
  178. }
  179. this.setState({
  180. pageNo: pageNo,
  181. dataSource: theArr,
  182. pagination: this.state.pagination,
  183. });
  184. }.bind(this)
  185. }).always(function() {
  186. this.setState({
  187. loading: false
  188. });
  189. }.bind(this));
  190. },
  191. getInitialState(){
  192. return {
  193. loading:false,
  194. visible:false,
  195. orgCodeUrl:[],
  196. fileList:[],
  197. departmentArr:[],
  198. timesArr:[],
  199. pagination: {
  200. defaultCurrent: 1,
  201. defaultPageSize: 10,
  202. showQuickJumper: true,
  203. pageSize: 10,
  204. onChange: function(page) {
  205. this.loadData(page);
  206. }.bind(this),
  207. showTotal: function(total) {
  208. return '共' + total + '条数据';
  209. }
  210. },
  211. dataSource:[],
  212. columns:[{
  213. title: '专利号',
  214. dataIndex: 'patentNo',
  215. key: 'patentNo'
  216. },{
  217. title: '专利名称',
  218. dataIndex: 'name',
  219. key: 'name'
  220. },{
  221. title: '专利类型',
  222. dataIndex: 'type',
  223. key: 'type',
  224. render:text=>{
  225. return getPatentType(text)
  226. }
  227. },{
  228. title: '申请日期',
  229. dataIndex: 'applyDates',
  230. key: 'applyDates'
  231. },{
  232. title: '授权日期',
  233. dataIndex: 'authorizationDates',
  234. key: 'authorizationDates'
  235. },{
  236. title: '费用',
  237. dataIndex: 'patentAmount',
  238. key: 'patentAmount'
  239. },{
  240. title: '授权公司',
  241. dataIndex: 'applicant',
  242. key: 'applicant'
  243. },{
  244. title: '录入人',
  245. dataIndex: 'aname',
  246. key: 'aname'
  247. },{
  248. title: '录入公司',
  249. dataIndex: 'depName',
  250. key: 'depName'
  251. },{
  252. title: '联系电话',
  253. dataIndex: 'contactMobile',
  254. key: 'contactMobile'
  255. },{
  256. title: '电子邮箱',
  257. dataIndex: 'email',
  258. key: 'email'
  259. },{
  260. title: '状态',
  261. dataIndex: 'status',
  262. key: 'status',
  263. render:text=>{
  264. if (text === 1) {
  265. return '已提醒'
  266. }else{
  267. return '待提醒'
  268. }
  269. }
  270. }]
  271. }
  272. },
  273. componentWillMount(){
  274. this.loadData()
  275. this.departmentList()
  276. let data=localStorage.getItem('newData');
  277. if(data!='{}'&&data){
  278. var newData = JSON.parse(data);
  279. this.tableRowClick(newData);
  280. };
  281. },
  282. new(){
  283. this.reset();
  284. this.setState({
  285. visible:true
  286. })
  287. },
  288. visitCancel(){
  289. this.state.fileList = [];
  290. this.setState({
  291. visible:false
  292. })
  293. },
  294. onSure(){
  295. let theorgCodeUrl = [];
  296. if (this.state.orgCodeUrl.length) {
  297. let picArr = [];
  298. this.state.orgCodeUrl.map(function (item) {
  299. if ( item.response && item.response.data && item.response.data.length ){
  300. picArr.push(item.response.data);
  301. }
  302. });
  303. theorgCodeUrl = picArr.join(",");
  304. };
  305. console.log(typeof theorgCodeUrl)
  306. if (!this.state.patentNo) {
  307. message.warning('专利号不能为空')
  308. return
  309. }
  310. if (!this.state.patentName) {
  311. message.warning('专利名称不能为空')
  312. return
  313. }
  314. if(this.state.patentType === ''){
  315. message.warning('专利类型不能为空');
  316. return
  317. }
  318. if(this.state.email === ''){
  319. message.warning('电子邮箱不能为空');
  320. return
  321. }
  322. $.ajax({
  323. method: "POST",
  324. dataType: "json",
  325. crossDomain: false,
  326. url: globalConfig.context +'/api/admin/patentNew/addPatentNew' ,
  327. data: {
  328. patentNo:this.state.patentNo,
  329. name:this.state.patentName,
  330. type:this.state.patentType,
  331. applyDates:this.state.appDate,
  332. authorizationDates:this.state.authDate,
  333. applicant:this.state.proposer,
  334. province:this.state.province,
  335. contactMobile:this.state.contactPhone,
  336. email:this.state.email,
  337. certificateUrl:theorgCodeUrl.length?theorgCodeUrl:'',
  338. }
  339. }).done(function(data) {
  340. this.setState({
  341. loading: false
  342. });
  343. if(!data.error.length) {
  344. message.success('保存成功!');
  345. this.onCal()
  346. this.loadData()
  347. } else {
  348. message.warning(data.error[0].message);
  349. }
  350. }.bind(this));
  351. },
  352. tableRowClick(record,index){
  353. this.state.RowData = record
  354. this.setState({
  355. avisible:true,
  356. patentNo:record.patentNo,
  357. patentName:record.name,
  358. province:record.province,
  359. status:record.status,
  360. patentType:record.type,
  361. appDate:record.applyDates,
  362. authDate:record.authorizationDates,
  363. proposer:record.applicant,
  364. contactPhone:record.contactMobile,
  365. email:record.email,
  366. certificateUrl:record.certificateUrl,
  367. orgCodeUrl: record.certificateUrl ? splitUrl(record.certificateUrl, ',', globalConfig.avatarHost + '/upload') : [],
  368. })
  369. localStorage.setItem('newData','{}');
  370. },
  371. xiugai(record){
  372. let theorgCodeUrl = [];
  373. if (this.state.orgCodeUrl.length) {
  374. let picArr = [];
  375. this.state.orgCodeUrl.map(function (item) {
  376. if ( item.response && item.response.data && item.response.data.length ){
  377. picArr.push(item.response.data);
  378. }
  379. });
  380. theorgCodeUrl = picArr.join(",");
  381. };
  382. console.log(typeof this.state.patentType)
  383. if (!this.state.patentNo) {
  384. message.warning('专利号不能为空')
  385. return
  386. }
  387. if (!this.state.patentName) {
  388. message.warning('专利名称不能为空')
  389. return
  390. }
  391. if(this.state.patentType === ''){
  392. message.warning('专利类型不能为空');
  393. return
  394. }
  395. $.ajax({
  396. method: "POST",
  397. dataType: "json",
  398. crossDomain: false,
  399. url: globalConfig.context +'/api/admin/patentNew/updatePatentNew' ,
  400. data: {
  401. id:record.id,
  402. patentNo:this.state.patentNo,
  403. name:this.state.patentName,
  404. type:this.state.patentType,
  405. applyDates:this.state.appDate,
  406. authorizationDates:this.state.authDate,
  407. applicant:this.state.proposer,
  408. province:this.state.province,
  409. contactMobile:this.state.contactPhone,
  410. email:this.state.email,
  411. status:this.state.status,
  412. certificateUrl:theorgCodeUrl.length?theorgCodeUrl:'',
  413. },
  414. success: function (data) {
  415. }.bind(this),
  416. }).done(function(data) {
  417. this.setState({
  418. loading: false
  419. });
  420. if(!data.error.length) {
  421. message.success('修改成功!');
  422. this.avisitCancel()
  423. this.loadData(this.state.pageNo)
  424. } else {
  425. message.warning(data.error[0].message);
  426. }
  427. }.bind(this));
  428. },
  429. baocunxiugai(){
  430. this.xiugai(this.state.RowData)
  431. },
  432. avisitCancel(){
  433. this.setState({
  434. avisible:false
  435. })
  436. },
  437. reset(){
  438. this.setState({
  439. patentNo:'',
  440. patentName:'',
  441. patentType:undefined,
  442. appDate:undefined,
  443. authDate:undefined,
  444. orgCodeUrl:'',
  445. proposer:'',
  446. province:undefined,
  447. contactPhone:'',
  448. email:''
  449. })
  450. },
  451. searchReset(){
  452. this.setState({
  453. statusSearch:undefined,
  454. nameSearch:undefined,
  455. anameSearch:undefined,
  456. patentNoSearch:undefined,
  457. departmentSearch:undefined,
  458. typeSearch:undefined,
  459. timesArr:[],
  460. },()=>{
  461. this.loadData()
  462. })
  463. },
  464. search(){
  465. this.loadData()
  466. },
  467. onCal(){
  468. this.setState({
  469. visible:false
  470. })
  471. },
  472. getOrgCodeUrl(e) {
  473. this.setState({ orgCodeUrl: e });
  474. },
  475. render(){
  476. const theData = this.state.RowData || {};
  477. const FormItem = Form.Item;
  478. const formItemLayout = {
  479. labelCol: { span: 8 },
  480. wrapperCol: { span: 14 },
  481. };
  482. const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
  483. return (
  484. <div className="user-content">
  485. <ShowModalDiv ShowModal={this.state.showModal} />
  486. <div className="content-title">
  487. <span style={{ fontSize: "16px" }}>客户专利提醒</span>
  488. <div className="user-search">
  489. <Select
  490. value={this.state.typeSearch}
  491. placeholder="请选择专利类型"
  492. onChange={e => {
  493. this.setState({
  494. typeSearch: e
  495. });
  496. }}
  497. style={{ width: "140px" }}
  498. >
  499. <Option value={1}>实用新型</Option>
  500. <Option value={2}>外观设计</Option>
  501. <Option value={3}>发明</Option>
  502. </Select>
  503. <Input
  504. value={this.state.nameSearch}
  505. placeholder="请输入授权公司"
  506. onChange={e => {
  507. this.setState({
  508. nameSearch: e.target.value
  509. });
  510. }}
  511. />
  512. <Select
  513. value={this.state.departmentSearch}
  514. placeholder="请选择录入公司"
  515. onChange={e => {
  516. this.setState({
  517. departmentSearch: e
  518. });
  519. }}
  520. style={{ width: "140px" }}
  521. >
  522. {this.state.departmentArr.map(e => {
  523. return <Option value={e.id}>{e.name}</Option>;
  524. })}
  525. </Select>
  526. <Input
  527. value={this.state.anameSearch}
  528. placeholder="请输入录入人"
  529. onChange={e => {
  530. this.setState({
  531. anameSearch: e.target.value
  532. });
  533. }}
  534. />
  535. <Select
  536. value={this.state.statusSearch}
  537. placeholder="请选择状态"
  538. onChange={e => {
  539. this.setState({
  540. statusSearch: e
  541. });
  542. }}
  543. style={{ width: "140px" }}
  544. >
  545. <Option value={0}>正常</Option>
  546. <Option value={1}>提醒中</Option>
  547. </Select>
  548. <Input
  549. value={this.state.patentNoSearch}
  550. placeholder="请输入专利号"
  551. onChange={e => {
  552. this.setState({
  553. patentNoSearch: e.target.value
  554. });
  555. }}
  556. />
  557. <Button
  558. type="primary"
  559. onClick={this.search}
  560. style={{ marginLeft: "10px" }}
  561. >
  562. 搜索
  563. </Button>
  564. <Button
  565. type="primary"
  566. onClick={this.searchReset}
  567. style={{ marginLeft: "10px" }}
  568. >
  569. 重置
  570. </Button>
  571. <span>
  572. 更多搜索
  573. <Switch
  574. onChange={mark => {
  575. this.setState({ mark: mark });
  576. }}
  577. />
  578. </span>
  579. <Button
  580. type="primary"
  581. onClick={this.new}
  582. style={{ marginRight: "10px", float: "right" }}
  583. >
  584. 新建
  585. </Button>
  586. {/*<Button onClick={this.reset}>导出</Button>*/}
  587. </div>
  588. {this.state.mark ? (
  589. <div className="user-search" style={{ paddingTop: "10px" }}>
  590. <span style={{ fontSize: "14px" }}>请选择申请时间:</span>
  591. <RangePicker
  592. value={[
  593. this.state.timesArr[0]
  594. ? moment(this.state.timesArr[0])
  595. : null,
  596. this.state.timesArr[1] ? moment(this.state.timesArr[1]) : null
  597. ]}
  598. onChange={(e, f) => {
  599. this.setState({
  600. timesArr: f
  601. });
  602. }}
  603. style={{ marginTop: "0", marginLeft: "10px" }}
  604. />
  605. </div>
  606. ) : (
  607. ""
  608. )}
  609. <div className="patent-table">
  610. <Spin spinning={this.state.loading}>
  611. <Table
  612. columns={this.state.columns}
  613. dataSource={this.state.dataSource}
  614. pagination={this.state.pagination}
  615. onRowClick={this.tableRowClick}
  616. size="small"
  617. bordered
  618. />
  619. </Spin>
  620. </div>
  621. <Modal
  622. maskClosable={false}
  623. visible={this.state.avisible}
  624. onCancel={this.avisitCancel}
  625. width="800px"
  626. title="修改详情"
  627. footer=""
  628. className="admin-desc-content"
  629. >
  630. <div className="clearfix">
  631. <FormItem
  632. className="half-item"
  633. {...formItemLayout}
  634. label={
  635. <span>
  636. <strong style={{ color: "#f00" }}>*</strong>专利号
  637. </span>
  638. }
  639. >
  640. {
  641. <Input
  642. placeholder="请输入专利号"
  643. value={this.state.patentNo}
  644. onChange={e => {
  645. this.setState({ patentNo: e.target.value });
  646. }}
  647. style={{ width: "240px" }}
  648. />
  649. }
  650. </FormItem>
  651. <FormItem
  652. className="half-item"
  653. {...formItemLayout}
  654. label={
  655. <span>
  656. <strong style={{ color: "#f00" }}>*</strong>专利名称
  657. </span>
  658. }
  659. >
  660. {
  661. <Input
  662. placeholder="请输入专利名称"
  663. value={this.state.patentName}
  664. onChange={e => {
  665. this.setState({ patentName: e.target.value });
  666. }}
  667. style={{ width: "240px" }}
  668. />
  669. }
  670. </FormItem>
  671. <FormItem
  672. className="half-item"
  673. {...formItemLayout}
  674. label="专利类型"
  675. >
  676. {
  677. <Select
  678. placeholder="请选择专利类型"
  679. style={{ width: "240px" }}
  680. value={getPatentType(this.state.patentType)}
  681. onChange={e => {
  682. this.setState({ patentType: e });
  683. }}
  684. >
  685. {patentTypeList.map(function(item) {
  686. return (
  687. <Select.Option key={item.value}>
  688. {item.key}
  689. </Select.Option>
  690. );
  691. })}
  692. </Select>
  693. }
  694. </FormItem>
  695. <FormItem
  696. className="half-item"
  697. {...formItemLayout}
  698. label="申请日期"
  699. >
  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) => {
  707. this.setState({ appDate: dataString });
  708. }}
  709. />
  710. </FormItem>
  711. <FormItem
  712. className="half-item"
  713. {...formItemLayout}
  714. label="授权日期"
  715. >
  716. <DatePicker
  717. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  718. showTime
  719. format="YYYY-MM-DD"
  720. onOk={e => {}}
  721. value={
  722. this.state.authDate ? moment(this.state.authDate) : null
  723. }
  724. onChange={(data, dataString) => {
  725. this.setState({ authDate: dataString });
  726. }}
  727. />
  728. </FormItem>
  729. <FormItem className="half-item" {...formItemLayout} label="费用">
  730. <span>{theData.patentAmount}</span>
  731. </FormItem>
  732. <div className="clearfix">
  733. <FormItem
  734. labelCol={{ span: 4 }}
  735. wrapperCol={{ span: 18 }}
  736. label="合同扫描件"
  737. >
  738. <PicturesWall
  739. domId={'patentPayment1'}
  740. fileList={this.getOrgCodeUrl}
  741. pictureUrl={this.state.orgCodeUrl}
  742. />
  743. <p>图片建议:要清晰。</p>
  744. </FormItem>
  745. </div>
  746. <FormItem
  747. className="half-item"
  748. {...formItemLayout}
  749. label="申请人"
  750. >
  751. {
  752. <Input
  753. placeholder="请输入申请人/公司"
  754. value={this.state.proposer}
  755. onChange={e => {
  756. this.setState({ proposer: e.target.value });
  757. }}
  758. style={{ width: "240px" }}
  759. />
  760. }
  761. </FormItem>
  762. <FormItem className="half-item" {...formItemLayout} label="省份">
  763. <Select
  764. placeholder="请选择省份"
  765. style={{ width: "240px" }}
  766. value={getcityArr(this.state.province)}
  767. onChange={e => {
  768. this.setState({ province: e });
  769. }}
  770. >
  771. {cityArr.map(function(item) {
  772. return (
  773. <Select.Option key={item.value}>{item.key}</Select.Option>
  774. );
  775. })}
  776. </Select>
  777. </FormItem>
  778. <FormItem
  779. className="half-item"
  780. {...formItemLayout}
  781. label="联系电话"
  782. >
  783. {
  784. <Input
  785. placeholder="请输入联系手机"
  786. value={this.state.contactPhone}
  787. onChange={e => {
  788. this.setState({ contactPhone: e.target.value });
  789. }}
  790. style={{ width: "240px" }}
  791. />
  792. }
  793. </FormItem>
  794. <FormItem
  795. className="half-item"
  796. {...formItemLayout}
  797. label={
  798. <span>
  799. <strong style={{ color: "#f00" }}>*</strong>电子邮箱
  800. </span>
  801. }
  802. >
  803. {
  804. <Input
  805. placeholder="请输入电子邮箱"
  806. value={this.state.email}
  807. onChange={e => {
  808. this.setState({ email: e.target.value });
  809. }}
  810. style={{ width: "240px" }}
  811. />
  812. }
  813. </FormItem>
  814. <FormItem
  815. className="half-item"
  816. {...formItemLayout}
  817. label={"状态"}
  818. >
  819. <span>{this.state.status ? "已提醒" : "待提醒"}</span>
  820. </FormItem>
  821. </div>
  822. <div style={{ overflow: "hidden" }}>
  823. <Button style={{ float: "right" }} onClick={this.avisitCancel}>
  824. 取消
  825. </Button>
  826. <Button
  827. type="primary"
  828. style={{ float: "right", marginRight: "10px" }}
  829. onClick={this.baocunxiugai}
  830. >
  831. 保存
  832. </Button>
  833. </div>
  834. </Modal>
  835. <Modal
  836. maskClosable={false}
  837. visible={this.state.visible}
  838. onOk={this.visitOk}
  839. onCancel={this.visitCancel}
  840. width="1000px"
  841. title="专利资料"
  842. footer=""
  843. className="admin-desc-content"
  844. >
  845. <div className="clearfix">
  846. <FormItem
  847. className="half-item"
  848. {...formItemLayout}
  849. label={
  850. <span>
  851. <strong style={{ color: "#f00" }}>*</strong>专利号
  852. </span>
  853. }
  854. >
  855. {
  856. <Input
  857. placeholder="请输入专利号"
  858. value={this.state.patentNo}
  859. onChange={e => {
  860. this.setState({ patentNo: e.target.value });
  861. }}
  862. style={{ width: "240px" }}
  863. />
  864. }
  865. </FormItem>
  866. <FormItem
  867. className="half-item"
  868. {...formItemLayout}
  869. label={
  870. <span>
  871. <strong style={{ color: "#f00" }}>*</strong>专利名称
  872. </span>
  873. }
  874. >
  875. {
  876. <Input
  877. placeholder="请输入专利名称"
  878. value={this.state.patentName}
  879. onChange={e => {
  880. this.setState({ patentName: e.target.value });
  881. }}
  882. style={{ width: "240px" }}
  883. />
  884. }
  885. </FormItem>
  886. <FormItem
  887. className="half-item"
  888. {...formItemLayout}
  889. label="申请日期"
  890. >
  891. <DatePicker
  892. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  893. showTime
  894. format="YYYY-MM-DD"
  895. onOk={e => {}}
  896. value={this.state.appDate ? moment(this.state.appDate) : null}
  897. onChange={(data, dataString) => {
  898. this.setState({ appDate: dataString });
  899. }}
  900. />
  901. </FormItem>
  902. <FormItem
  903. className="half-item"
  904. {...formItemLayout}
  905. label={
  906. <span>
  907. <strong style={{ color: "#f00" }}>*</strong>专利类型
  908. </span>
  909. }
  910. >
  911. {
  912. <Select
  913. placeholder="请选择专利类型"
  914. style={{ width: "240px" }}
  915. value={this.state.patentType}
  916. onChange={e => {
  917. this.setState({ patentType: e });
  918. }}
  919. >
  920. {patentTypeList.map(function(item) {
  921. return (
  922. <Select.Option key={item.value}>
  923. {item.key}
  924. </Select.Option>
  925. );
  926. })}
  927. </Select>
  928. }
  929. </FormItem>
  930. <FormItem
  931. className="half-item"
  932. {...formItemLayout}
  933. label="授权日期"
  934. >
  935. <DatePicker
  936. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  937. showTime
  938. format="YYYY-MM-DD"
  939. onOk={e => {}}
  940. value={
  941. this.state.authDate ? moment(this.state.authDate) : null
  942. }
  943. onChange={(data, dataString) => {
  944. this.setState({ authDate: dataString });
  945. }}
  946. />
  947. </FormItem>
  948. <div className="clearfix">
  949. <FormItem
  950. labelCol={{ span: 4 }}
  951. wrapperCol={{ span: 18 }}
  952. label="合同扫描件"
  953. >
  954. <PicturesWall
  955. domId={'patentPayment2'}
  956. fileList={this.getOrgCodeUrl}
  957. pictureUrl={this.state.orgCodeUrl}
  958. />
  959. <p>图片建议:要清晰。</p>
  960. </FormItem>
  961. </div>
  962. <div>
  963. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  964. 申请人资料
  965. </span>
  966. </div>
  967. <FormItem
  968. className="half-item"
  969. {...formItemLayout}
  970. label="申请人/公司"
  971. >
  972. {
  973. <Input
  974. placeholder="请输入申请人/公司"
  975. value={this.state.proposer}
  976. onChange={e => {
  977. this.setState({ proposer: e.target.value });
  978. }}
  979. style={{ width: "240px" }}
  980. />
  981. }
  982. </FormItem>
  983. <FormItem className="half-item" {...formItemLayout} label="省份">
  984. <Select
  985. placeholder="请选择省份"
  986. style={{ width: "240px" }}
  987. value={this.state.province}
  988. onChange={e => {
  989. this.setState({ province: e });
  990. }}
  991. >
  992. {cityArr.map(function(item) {
  993. return (
  994. <Select.Option key={item.value}>{item.key}</Select.Option>
  995. );
  996. })}
  997. </Select>
  998. </FormItem>
  999. <FormItem
  1000. className="half-item"
  1001. {...formItemLayout}
  1002. label="联系手机"
  1003. >
  1004. {
  1005. <Input
  1006. placeholder="请输入联系手机"
  1007. value={this.state.contactPhone}
  1008. onChange={e => {
  1009. this.setState({ contactPhone: e.target.value });
  1010. }}
  1011. style={{ width: "240px" }}
  1012. />
  1013. }
  1014. </FormItem>
  1015. <FormItem
  1016. className="half-item"
  1017. {...formItemLayout}
  1018. label={
  1019. <span>
  1020. <strong style={{ color: "#f00" }}>*</strong>电子邮箱
  1021. </span>
  1022. }
  1023. >
  1024. {
  1025. <Input
  1026. placeholder="请输入电子邮箱"
  1027. value={this.state.email}
  1028. onChange={e => {
  1029. this.setState({ email: e.target.value });
  1030. }}
  1031. style={{ width: "240px" }}
  1032. />
  1033. }
  1034. </FormItem>
  1035. </div>
  1036. <div style={{ overflow: "hidden" }}>
  1037. <Button style={{ float: "right" }} onClick={this.onCal}>
  1038. 取消
  1039. </Button>
  1040. <Button
  1041. type="primary"
  1042. style={{ float: "right", marginRight: "10px" }}
  1043. onClick={this.onSure}
  1044. >
  1045. 保存
  1046. </Button>
  1047. </div>
  1048. </Modal>
  1049. </div>
  1050. </div>
  1051. );
  1052. }
  1053. }))
  1054. export default PatentPayment;