sichuan.jsx 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. import React from 'react';
  2. import {
  3. Icon,
  4. Button,
  5. Input,
  6. Select,
  7. Spin,
  8. Checkbox,
  9. Cascader,
  10. Table,
  11. Form,
  12. Switch,
  13. message,
  14. DatePicker,
  15. Modal,
  16. Row,
  17. Col,
  18. InputNumber,
  19. notification
  20. } from 'antd';
  21. import ajax from 'jquery/src/ajax/xhr.js';
  22. import $ from 'jquery/src/ajax';
  23. //import axios from 'axios';
  24. import 'antd/dist/antd.css';
  25. const FormItem = Form.Item;
  26. import './sichuan.css';
  27. const { TextArea } = Input;
  28. class Achievement extends React.Component {
  29. loadData(pageNo) {
  30. this.setState({
  31. page: pageNo,
  32. loading: true
  33. });
  34. $.ajax({
  35. method: "get",
  36. dataType: "json",
  37. crossDomain: false,
  38. url: globalConfig.context + "/open/api/achievementList",
  39. data: {
  40. pageNo: pageNo || 1,
  41. pageSize: this.state.pagination.pageSize,
  42. type:0,
  43. name:this.state.seachName,//成果名称
  44. ownerName:this.state.seachOwnerName,//所有权人
  45. patentNumber:this.state.seachPatentNumber,//专利编号
  46. },
  47. success: function (data) {
  48. let theArr = [];
  49. if (!data.data || !data.data.list) {
  50. if (data.error && data.error.length) {
  51. message.warning(data.error[0].message);
  52. };
  53. } else {
  54. for (let i = 0; i < data.data.list.length; i++) {
  55. let thisdata = data.data.list[i];
  56. theArr.push({
  57. key: i,
  58. id: thisdata.id,//成果编号
  59. name: thisdata.name,//成果名称
  60. industry: thisdata.industry,//行业
  61. ownerName:thisdata.ownerName,//所有权人
  62. patentNumber:thisdata.patentNumber,//专利编号
  63. contacts:thisdata.contacts,//负责人姓名
  64. telephone:thisdata.telephone,//负责人电话
  65. });
  66. };
  67. this.state.pagination.current = data.data.pageNo;
  68. this.state.pagination.total = data.data.totalCount;
  69. };
  70. this.setState({
  71. dataSource: theArr,
  72. pagination: this.state.pagination
  73. });
  74. }.bind(this),
  75. }).always(function () {
  76. this.setState({
  77. loading: false
  78. });
  79. }.bind(this));
  80. }
  81. constructor(props) {
  82. super(props);
  83. this.state = {
  84. loading:false,
  85. publishPages: [],
  86. visible: false,
  87. pagination: {
  88. defaultCurrent: 1,
  89. defaultPageSize: 10,
  90. showQuickJumper: true,
  91. pageSize: 10,
  92. onChange: function(page) {
  93. this.loadData(page);
  94. }.bind(this),
  95. showTotal: function(total) {
  96. return '共' + total + '条数据';
  97. }
  98. },
  99. columns: [
  100. {
  101. title: '成果名称',
  102. dataIndex: 'name',
  103. key: 'name'
  104. },
  105. {
  106. title: '所有权人',
  107. dataIndex: 'ownerName',
  108. key: 'ownerName'
  109. },
  110. {
  111. title: '专利编号',
  112. dataIndex: 'patentNumber',
  113. key: 'patentNumber'
  114. },
  115. {
  116. title: '负责人姓名',
  117. dataIndex: 'contacts',
  118. key: 'contacts'
  119. },
  120. {
  121. title: '负责人电话',
  122. dataIndex: 'telephone',
  123. key: 'telephone'
  124. },
  125. {
  126. title: '操作',
  127. dataIndex: 'caozuo',
  128. key: 'caozuo',
  129. render: (text, recard) => {
  130. return (
  131. <div className="btnRight">
  132. <Button
  133. type="danger"
  134. onClick={(e) => {
  135. e.stopPropagation();
  136. this.delectRow(recard);
  137. }}
  138. >
  139. 删除
  140. </Button>
  141. </div>
  142. );
  143. }
  144. }
  145. ]
  146. };
  147. }
  148. //删除
  149. delectRow(recard) {
  150. $.ajax({
  151. method: "get",
  152. dataType: "json",
  153. crossDomain: false,
  154. url: globalConfig.context + "/open/api/delectAchievement",
  155. data: {
  156. id:recard.id
  157. },
  158. success: function (data) {
  159. if (!data.error.length) {
  160. message.success('删除成功!');
  161. this.setState({
  162. loading: false,
  163. });
  164. this.loadData();
  165. } else {
  166. message.warning(data.error[0].message);
  167. };
  168. }.bind(this),
  169. }).always(function () {
  170. this.setState({
  171. loading: false
  172. });
  173. }.bind(this));
  174. }
  175. details(recard){
  176. this.state({
  177. loading:true
  178. })
  179. }
  180. add() {
  181. this.setState({
  182. uid: '',
  183. visible: true,
  184. addState: true,
  185. name: '',
  186. introduce: '',
  187. industry: '',
  188. summary: '',
  189. ownerName: '',
  190. reserveButtMode: '',
  191. patentNumber: '',
  192. transferPrice: '',
  193. telephone: '',
  194. cname: ''
  195. });
  196. }
  197. search() {
  198. this.loadData(1);
  199. }
  200. reset() {
  201. this.state.seachName = '';
  202. this.state.seachOwnerName = '';
  203. this.state.seachPatentNumber = '';
  204. this.loadData(1);
  205. }
  206. tableRowClick(record, index) {
  207. this.setState({
  208. visible: true,
  209. addState: false,
  210. id:record.id,
  211. });
  212. $.ajax({
  213. method: "get",
  214. dataType: "json",
  215. crossDomain: false,
  216. url: globalConfig.context + "/open/api/AchievementDetails",
  217. data: {
  218. id: record.id,//需求名称
  219. }
  220. }).done(function (data) {
  221. if (!data.error.length) {
  222. console.log(data.data);
  223. let thisData=data.data;
  224. this.setState({
  225. id:thisData.id,//需求ID
  226. name: thisData.name,//成果名称
  227. type:0,//需求类型
  228. industry:thisData.industry?thisData.industry.toString():"",//行业
  229. patentNumber: thisData.patentNumber,//专利编号
  230. ownerName: thisData.ownerName,//所有权人
  231. publisherName: thisData.publisherName,//联系人
  232. telephone: thisData.telephone,//联系方式
  233. reserveButtMode:thisData.reserveButtMode,//拟对接方式
  234. introduce: thisData.introduce,//技术成果内容
  235. pIntroduce: thisData.pIntroduce,//企业简介
  236. });
  237. } else {
  238. message.warning(data.error[0].message);
  239. };
  240. this.setState({
  241. loading: false,
  242. });
  243. }.bind(this));
  244. }
  245. handleOk() {
  246. this.handleSubmit();
  247. }
  248. handleCancel() {
  249. this.resets();
  250. this.setState({
  251. visible: false
  252. });
  253. }
  254. handleSubmit() {
  255. this.setState({
  256. loading: true
  257. });
  258. console.log(this.state.addState);
  259. $.ajax({
  260. method: "POST",
  261. dataType: "json",
  262. crossDomain: false,
  263. url: globalConfig.context +( this.state.addState?"/open/api/achievements":"/open/api/updateAchievement"),
  264. data: {
  265. id:this.state.id,//需求ID
  266. name: this.state.name,//成果名称
  267. type:0,//需求类型
  268. industry:this.state.industry,//行业
  269. patentNumber: this.state.patentNumber,//专利编号
  270. ownerName: this.state.ownerName,//所有权人
  271. publisherName: this.state.publisherName,//联系人
  272. telephone: this.state.telephone,//联系方式
  273. reserveButtMode: this.state.reserveButtMode,//拟对接方式
  274. introduce: this.state.introduce,//技术成果内容
  275. pIntroduce: this.state.pIntroduce,//企业简介
  276. }
  277. }).done(function (data) {
  278. if (!data.error.length) {
  279. message.success(this.state.addState?'新建成功!':"修改成功!");
  280. this.setState({
  281. visible: false,
  282. });
  283. this.loadData();
  284. } else {
  285. message.warning(data.error[0].message);
  286. };
  287. this.setState({
  288. loading: false,
  289. });
  290. }.bind(this));
  291. }
  292. resets(){
  293. this.state.name = '',//需求名称
  294. this.state.industry = undefined,//行业
  295. this.state.investmentCost = '',//经费投入
  296. this.state.reserveButtUnit = '',//拟对接单位
  297. this.state.reserveButtMode = '',//拟对接方式
  298. this.state.reserveSolveMode = '',//拟解决方式
  299. this.state.publisherName = '',//联系人
  300. this.state.telephone = '',//联系方式
  301. this.state.summary = '',
  302. this.state.introduce = '',//需求内容
  303. this.state.Pname = '',//企业名称
  304. this.state.nature = undefined,//企业特质
  305. this.state.feature = '',//企业特征
  306. this.state.ProvinceCity =undefined,//省
  307. this.state.zipCode = '',//邮政编码
  308. this.state.legalPerson = '',//法人名称
  309. this.state.website = '',//企业网址
  310. this.state.email = '',//企业邮箱
  311. this.state.pIntroduce = ''//企业简介
  312. }
  313. componentWillMount() {
  314. this.loadData(1);
  315. }
  316. render() {
  317. const rowSelection = {
  318. selectedRowKeys: this.state.selectedRowKeys,
  319. onChange: (selectedRowKeys, selectedRows) => {
  320. this.setState({
  321. selectedRows: selectedRows.slice(-1),
  322. selectedRowKeys: selectedRowKeys.slice(-1)
  323. });
  324. }
  325. };
  326. const formItemLayout = {
  327. labelCol: { span: 6 },
  328. wrapperCol: { span: 12 }
  329. };
  330. return (
  331. <div className="user-content">
  332. <div className="content-title">
  333. <span className="title">四川科技成果</span>
  334. <div className="patent-addNew">
  335. <Button type="primary" onClick={this.add.bind(this)}>
  336. 发布成果<Icon type="plus" />
  337. </Button>
  338. </div>
  339. </div>
  340. <div className="user-search">
  341. <Input
  342. placeholder="成果名称"
  343. value={this.state.seachName}
  344. className="searchInp"
  345. onChange={(e) => {
  346. this.setState({ seachName: e.target.value });
  347. }}
  348. style={{ width: 120 }}
  349. />
  350. <Input
  351. placeholder="所有权人"
  352. value={this.state.seachOwnerName}
  353. onChange={(e) => {
  354. this.setState({ seachOwnerName: e.target.value });
  355. }}
  356. style={{ width: 120 }}
  357. />
  358. <Input
  359. placeholder="专利编号"
  360. value={this.state.seachPatentNumber}
  361. onChange={(e) => {
  362. this.setState({ seachPatentNumber: e.target.value });
  363. }}
  364. style={{ width: 120 }}
  365. />
  366. <Button type="primary" onClick={this.search.bind(this)} className="interval">
  367. 搜索
  368. </Button>
  369. <Button onClick={this.reset.bind(this)} className="interval">
  370. 重置
  371. </Button>
  372. </div>
  373. <div className="patent-table">
  374. <Spin spinning={this.state.loading}>
  375. <Table
  376. columns={this.state.columns}
  377. dataSource={this.state.dataSource}
  378. rowSelection={rowSelection}
  379. pagination={this.state.pagination}
  380. onRowClick={this.tableRowClick.bind(this)}
  381. />
  382. </Spin>
  383. </div>
  384. <Modal
  385. title={this.state.addState ? '新建成果' : '成果详情'}
  386. visible={this.state.visible}
  387. width="900px"
  388. onOk={this.handleOk.bind(this)}
  389. onCancel={this.handleCancel.bind(this)}
  390. okText="保存"
  391. cancelText="取消"
  392. >
  393. <Form layout="horizontal" id="demand-form">
  394. <Spin spinning={this.state.loading}>
  395. <div className="clearfix">
  396. <FormItem
  397. className="half-item"
  398. {...formItemLayout}
  399. label={
  400. <span>
  401. <strong style={{ color: '#f00' }}>*</strong>技术简称
  402. </span>
  403. }
  404. >
  405. <Input
  406. placeholder="技术简称"
  407. value={this.state.name}
  408. onChange={(e) => {
  409. this.setState({ name: e.target.value });
  410. }}
  411. />
  412. </FormItem>
  413. <FormItem className="half-item" {...formItemLayout} label="行业领域">
  414. <Select
  415. value={this.state.industry}
  416. onChange={(e) => {
  417. this.setState({ industry: e });
  418. }}
  419. placeholder="请选择行业领域"
  420. >
  421. <Select.Option value="0">先进制造与自动化</Select.Option>
  422. <Select.Option value="1">电子信息技术</Select.Option>
  423. <Select.Option value="2">新材料技术</Select.Option>
  424. <Select.Option value="3">生物与新药</Select.Option>
  425. <Select.Option value="4">资源与新环境</Select.Option>
  426. <Select.Option value="5">新能源</Select.Option>
  427. </Select>
  428. </FormItem>
  429. <FormItem className="half-item" {...formItemLayout} label="专利编号">
  430. <Input
  431. placeholder="专利编号"
  432. value={this.state.patentNumber}
  433. onChange={(e) => {
  434. this.setState({ patentNumber: e.target.value });
  435. }}
  436. />
  437. </FormItem>
  438. <FormItem className="half-item" {...formItemLayout} label="所有权人">
  439. <Input
  440. placeholder="所有权人"
  441. value={this.state.ownerName}
  442. onChange={(e) => {
  443. this.setState({ ownerName: e.target.value });
  444. }}
  445. />
  446. </FormItem>
  447. <FormItem className="half-item" {...formItemLayout} label="项目负责人">
  448. <Input
  449. placeholder="联系人"
  450. value={this.state.publisherName}
  451. onChange={(e) => {
  452. this.setState({ publisherName: e.target.value });
  453. }}
  454. />
  455. </FormItem>
  456. <FormItem className="half-item" {...formItemLayout} label="联系电话">
  457. <Input
  458. placeholder="联系电话"
  459. value={this.state.telephone}
  460. onChange={(e) => {
  461. this.setState({ telephone: e.target.value });
  462. }}
  463. />
  464. </FormItem>
  465. <FormItem className="half-item" {...formItemLayout} label="拟对接方式">
  466. <Input
  467. placeholder="拟对接方式"
  468. value={this.state.reserveButtMode}
  469. onChange={(e) => {
  470. this.setState({ reserveButtMode: e.target.value });
  471. }}
  472. />
  473. </FormItem>
  474. <div className="clearfix">
  475. <FormItem
  476. labelCol={{ span: 3 }}
  477. wrapperCol={{ span: 18 }}
  478. label={
  479. <span>
  480. <strong style={{ color: '#f00' }}>*</strong>技术成果内容
  481. </span>
  482. }
  483. style={{ margin: '10px 0px' }}
  484. >
  485. <TextArea
  486. autosize={{ minRows: 4, maxRows: 10 }}
  487. placeholder="输入技术成果内容"
  488. value={this.state.introduce}
  489. onChange={(e) => {
  490. this.setState({ introduce: e.target.value });
  491. }}
  492. />
  493. </FormItem>
  494. </div>
  495. <div className="clearfix">
  496. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="企业简介">
  497. <TextArea autosize={{ minRows: 4, maxRows: 10 }} placeholder="输入企业简介"
  498. value={this.state.pIntroduce}
  499. onChange={(e) => {
  500. this.setState({ pIntroduce: e.target.value });
  501. }}/>
  502. </FormItem>
  503. </div>
  504. </div>
  505. </Spin>
  506. </Form>
  507. </Modal>
  508. </div>
  509. );
  510. }
  511. }
  512. export default Achievement;