patentPayment.jsx 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080
  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. {!this.props.isOnlyRead ? <Button
  580. type="primary"
  581. onClick={this.new}
  582. style={{ marginRight: "10px", float: "right" }}
  583. >
  584. 新建
  585. </Button> : <div/>}
  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. {this.state.avisible ? <Modal
  622. maskClosable={false}
  623. visible={this.state.avisible}
  624. onCancel={this.avisitCancel}
  625. width="800px"
  626. title={!this.props.isOnlyRead ? "修改详情" : "查看详情"}
  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. {!this.props.isOnlyRead ?
  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. /> : <span>{this.state.patentNo}</span>
  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. {!this.props.isOnlyRead ?
  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. /> : <div>{this.state.patentName}</div>
  669. }
  670. </FormItem>
  671. <FormItem
  672. className="half-item"
  673. {...formItemLayout}
  674. label="专利类型"
  675. >
  676. {!this.props.isOnlyRead ?
  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> : <div>{getPatentType(this.state.patentType)}</div>
  693. }
  694. </FormItem>
  695. <FormItem
  696. className="half-item"
  697. {...formItemLayout}
  698. label="申请日期"
  699. >
  700. {
  701. !this.props.isOnlyRead ?
  702. <DatePicker
  703. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  704. showTime
  705. format="YYYY-MM-DD"
  706. onOk={e => {}}
  707. value={this.state.appDate ? moment(this.state.appDate) : null}
  708. onChange={(data, dataString) => {
  709. this.setState({ appDate: dataString });
  710. }}
  711. /> : <div>{this.state.appDate ? moment(this.state.appDate).format('YYYY-MM-DD') : ''}</div>
  712. }
  713. </FormItem>
  714. <FormItem
  715. className="half-item"
  716. {...formItemLayout}
  717. label="授权日期"
  718. >
  719. {
  720. !this.props.isOnlyRead ?
  721. <DatePicker
  722. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  723. showTime
  724. format="YYYY-MM-DD"
  725. onOk={e => {}}
  726. value={
  727. this.state.authDate ? moment(this.state.authDate) : null
  728. }
  729. onChange={(data, dataString) => {
  730. this.setState({ authDate: dataString });
  731. }}
  732. /> : <div>{this.state.authDate ? moment(this.state.authDate).format('YYYY-MM-DD') : ''}</div> }
  733. </FormItem>
  734. <FormItem className="half-item" {...formItemLayout} label="费用">
  735. <span>{theData.patentAmount}</span>
  736. </FormItem>
  737. <div className="clearfix">
  738. <FormItem
  739. labelCol={{ span: 4 }}
  740. wrapperCol={{ span: 18 }}
  741. label="合同扫描件"
  742. >
  743. {!this.props.isOnlyRead ? <PicturesWall
  744. domId={'patentPayment1'}
  745. fileList={this.getOrgCodeUrl}
  746. pictureUrl={this.state.orgCodeUrl}
  747. /> :
  748. <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
  749. <ImgList domId={'patentPayment3'} fileList={this.state.orgCodeUrl}/>
  750. </div>
  751. }
  752. {!this.props.isOnlyRead ? <p>图片建议:要清晰。</p> : null}
  753. </FormItem>
  754. </div>
  755. <FormItem
  756. className="half-item"
  757. {...formItemLayout}
  758. label="申请人"
  759. >
  760. {
  761. !this.props.isOnlyRead ?
  762. <Input
  763. placeholder="请输入申请人/公司"
  764. value={this.state.proposer}
  765. onChange={e => {
  766. this.setState({ proposer: e.target.value });
  767. }}
  768. style={{ width: "240px" }}
  769. /> : <div>{this.state.proposer}</div>
  770. }
  771. </FormItem>
  772. <FormItem className="half-item" {...formItemLayout} label="省份">
  773. {
  774. !this.props.isOnlyRead ?
  775. <Select
  776. placeholder="请选择省份"
  777. style={{ width: "240px" }}
  778. value={getcityArr(this.state.province)}
  779. onChange={e => {
  780. this.setState({ province: e });
  781. }}
  782. >
  783. {cityArr.map(function(item) {
  784. return (
  785. <Select.Option key={item.value}>{item.key}</Select.Option>
  786. );
  787. })}
  788. </Select> : <div>{getcityArr(this.state.province)}</div> }
  789. </FormItem>
  790. <FormItem
  791. className="half-item"
  792. {...formItemLayout}
  793. label="联系电话"
  794. >
  795. {
  796. !this.props.isOnlyRead ?
  797. <Input
  798. placeholder="请输入联系手机"
  799. value={this.state.contactPhone}
  800. onChange={e => {
  801. this.setState({ contactPhone: e.target.value });
  802. }}
  803. style={{ width: "240px" }}
  804. /> : <div>{this.state.contactPhone}</div>
  805. }
  806. </FormItem>
  807. <FormItem
  808. className="half-item"
  809. {...formItemLayout}
  810. label={
  811. <span>
  812. <strong style={{ color: "#f00" }}>*</strong>电子邮箱
  813. </span>
  814. }
  815. >
  816. {
  817. !this.props.isOnlyRead ?
  818. <Input
  819. placeholder="请输入电子邮箱"
  820. value={this.state.email}
  821. onChange={e => {
  822. this.setState({ email: e.target.value });
  823. }}
  824. style={{ width: "240px" }}
  825. /> : <div>{this.state.email}</div>
  826. }
  827. </FormItem>
  828. <FormItem
  829. className="half-item"
  830. {...formItemLayout}
  831. label={"状态"}
  832. >
  833. <span>{this.state.status ? "已提醒" : "待提醒"}</span>
  834. </FormItem>
  835. </div>
  836. {!this.props.isOnlyRead ? <div style={{ overflow: "hidden" }}>
  837. <Button style={{ float: "right" }} onClick={this.avisitCancel}>
  838. 取消
  839. </Button>
  840. <Button
  841. type="primary"
  842. style={{ float: "right", marginRight: "10px" }}
  843. onClick={this.baocunxiugai}
  844. >
  845. 保存
  846. </Button>
  847. </div> : <div/>}
  848. </Modal> : <div/>}
  849. <Modal
  850. maskClosable={false}
  851. visible={this.state.visible}
  852. onOk={this.visitOk}
  853. onCancel={this.visitCancel}
  854. width="1000px"
  855. title="专利资料"
  856. footer=""
  857. className="admin-desc-content"
  858. >
  859. <div className="clearfix">
  860. <FormItem
  861. className="half-item"
  862. {...formItemLayout}
  863. label={
  864. <span>
  865. <strong style={{ color: "#f00" }}>*</strong>专利号
  866. </span>
  867. }
  868. >
  869. {
  870. <Input
  871. placeholder="请输入专利号"
  872. value={this.state.patentNo}
  873. onChange={e => {
  874. this.setState({ patentNo: e.target.value });
  875. }}
  876. style={{ width: "240px" }}
  877. />
  878. }
  879. </FormItem>
  880. <FormItem
  881. className="half-item"
  882. {...formItemLayout}
  883. label={
  884. <span>
  885. <strong style={{ color: "#f00" }}>*</strong>专利名称
  886. </span>
  887. }
  888. >
  889. {
  890. <Input
  891. placeholder="请输入专利名称"
  892. value={this.state.patentName}
  893. onChange={e => {
  894. this.setState({ patentName: e.target.value });
  895. }}
  896. style={{ width: "240px" }}
  897. />
  898. }
  899. </FormItem>
  900. <FormItem
  901. className="half-item"
  902. {...formItemLayout}
  903. label="申请日期"
  904. >
  905. <DatePicker
  906. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  907. showTime
  908. format="YYYY-MM-DD"
  909. onOk={e => {}}
  910. value={this.state.appDate ? moment(this.state.appDate) : null}
  911. onChange={(data, dataString) => {
  912. this.setState({ appDate: dataString });
  913. }}
  914. />
  915. </FormItem>
  916. <FormItem
  917. className="half-item"
  918. {...formItemLayout}
  919. label={
  920. <span>
  921. <strong style={{ color: "#f00" }}>*</strong>专利类型
  922. </span>
  923. }
  924. >
  925. {
  926. <Select
  927. placeholder="请选择专利类型"
  928. style={{ width: "240px" }}
  929. value={this.state.patentType}
  930. onChange={e => {
  931. this.setState({ patentType: e });
  932. }}
  933. >
  934. {patentTypeList.map(function(item) {
  935. return (
  936. <Select.Option key={item.value}>
  937. {item.key}
  938. </Select.Option>
  939. );
  940. })}
  941. </Select>
  942. }
  943. </FormItem>
  944. <FormItem
  945. className="half-item"
  946. {...formItemLayout}
  947. label="授权日期"
  948. >
  949. <DatePicker
  950. style={{ marginTop: "2px", width: "240px", height: "32px" }}
  951. showTime
  952. format="YYYY-MM-DD"
  953. onOk={e => {}}
  954. value={
  955. this.state.authDate ? moment(this.state.authDate) : null
  956. }
  957. onChange={(data, dataString) => {
  958. this.setState({ authDate: dataString });
  959. }}
  960. />
  961. </FormItem>
  962. <div className="clearfix">
  963. <FormItem
  964. labelCol={{ span: 4 }}
  965. wrapperCol={{ span: 18 }}
  966. label="合同扫描件"
  967. >
  968. <PicturesWall
  969. domId={'patentPayment2'}
  970. fileList={this.getOrgCodeUrl}
  971. pictureUrl={this.state.orgCodeUrl}
  972. />
  973. <p>图片建议:要清晰。</p>
  974. </FormItem>
  975. </div>
  976. <div>
  977. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  978. 申请人资料
  979. </span>
  980. </div>
  981. <FormItem
  982. className="half-item"
  983. {...formItemLayout}
  984. label="申请人/公司"
  985. >
  986. {
  987. <Input
  988. placeholder="请输入申请人/公司"
  989. value={this.state.proposer}
  990. onChange={e => {
  991. this.setState({ proposer: e.target.value });
  992. }}
  993. style={{ width: "240px" }}
  994. />
  995. }
  996. </FormItem>
  997. <FormItem className="half-item" {...formItemLayout} label="省份">
  998. <Select
  999. placeholder="请选择省份"
  1000. style={{ width: "240px" }}
  1001. value={this.state.province}
  1002. onChange={e => {
  1003. this.setState({ province: e });
  1004. }}
  1005. >
  1006. {cityArr.map(function(item) {
  1007. return (
  1008. <Select.Option key={item.value}>{item.key}</Select.Option>
  1009. );
  1010. })}
  1011. </Select>
  1012. </FormItem>
  1013. <FormItem
  1014. className="half-item"
  1015. {...formItemLayout}
  1016. label="联系手机"
  1017. >
  1018. {
  1019. <Input
  1020. placeholder="请输入联系手机"
  1021. value={this.state.contactPhone}
  1022. onChange={e => {
  1023. this.setState({ contactPhone: e.target.value });
  1024. }}
  1025. style={{ width: "240px" }}
  1026. />
  1027. }
  1028. </FormItem>
  1029. <FormItem
  1030. className="half-item"
  1031. {...formItemLayout}
  1032. label={
  1033. <span>
  1034. <strong style={{ color: "#f00" }}>*</strong>电子邮箱
  1035. </span>
  1036. }
  1037. >
  1038. {
  1039. <Input
  1040. placeholder="请输入电子邮箱"
  1041. value={this.state.email}
  1042. onChange={e => {
  1043. this.setState({ email: e.target.value });
  1044. }}
  1045. style={{ width: "240px" }}
  1046. />
  1047. }
  1048. </FormItem>
  1049. </div>
  1050. <div style={{ overflow: "hidden" }}>
  1051. <Button style={{ float: "right" }} onClick={this.onCal}>
  1052. 取消
  1053. </Button>
  1054. <Button
  1055. type="primary"
  1056. style={{ float: "right", marginRight: "10px" }}
  1057. onClick={this.onSure}
  1058. >
  1059. 保存
  1060. </Button>
  1061. </div>
  1062. </Modal>
  1063. </div>
  1064. </div>
  1065. );
  1066. }
  1067. }))
  1068. export default PatentPayment;