releaseDemand.jsx 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046
  1. import React from 'react';
  2. import ReactDom from 'react-dom';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import './content.less';
  6. import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload,Popconfirm,AutoComplete } from 'antd';
  7. import {patternOrganization,conditionOrganization,client,stick} from '../../dataDic.js';
  8. import {getPattern,getAchievementCategory,getboutique,getClient,getStick} from '../../tools.js';
  9. const Organization=Form.create()(React.createClass({
  10. loadData(pageNo) {
  11. this.state.data = [];
  12. this.setState({
  13. loading: true,
  14. ispage:pageNo,
  15. });
  16. let nameText=this.state.SuperArr;
  17. let superText=(this.state.superId)?nameText[parseInt(this.state.superId)].id:undefined;
  18. let nameTexts=this.state.SuperArrs;
  19. let superTexts=(this.state.publishPage)?nameTexts[parseInt(this.state.publishPage)].id:undefined;
  20. $.ajax({
  21. method: "get",
  22. dataType: "json",
  23. crossDomain: false,
  24. url: globalConfig.context + '/api/admin/demand/listPublish',
  25. data: {
  26. pageNo: pageNo || 1,
  27. pageSize: this.state.pagination.pageSize,
  28. name: this.state.name, //需求名称
  29. publishPlatform:superText,//发布子平台
  30. publishClient:this.state.publishClient,//发布客户端
  31. publishPage:superTexts,//发布页面
  32. ifTop:this.state.ifTop,//是否置顶
  33. },
  34. success: function (data) {
  35. let theArr = [];
  36. if (!data.data || !data.data.list) {
  37. if (data.error && data.error.length) {
  38. message.warning(data.error[0].message);
  39. };
  40. } else {
  41. for (let i = 0; i < data.data.list.length; i++) {
  42. let thisdata = data.data.list[i];
  43. theArr.push({
  44. key: i,
  45. id: thisdata.id,//发布需求ID
  46. achievementId:thisdata.demandId,//成果ID
  47. publishPlatform:thisdata.publishPlatform,//发布子平台ID
  48. platformName:thisdata.platformName,//发布子平台ID
  49. publishClient:thisdata.publishClient.toString(),//发布客户端
  50. publishPage:thisdata.publishPage,//发布页面
  51. publishPageName:thisdata.publishPageName,//发布页面
  52. ifTop:thisdata.ifTop.toString(),//是否置顶
  53. topNumber:thisdata.topNumber,//置顶编号
  54. showNumber:thisdata.showNumber,//显示编号
  55. publisher:thisdata.publisher,//发布人ID
  56. publishTime:thisdata.publishTime,//发布时间
  57. serialNumber:thisdata.serialNumber,//成果编号
  58. name:thisdata.name,//成果名称
  59. userName:thisdata.userName,//成果所有人
  60. publisherName:thisdata.publisherName,//发布人名称
  61. publishTimeFormattedDate:thisdata.publishTimeFormattedDate,//发布时间
  62. });
  63. };
  64. this.state.pagination.current = data.data.pageNo;
  65. this.state.pagination.total = data.data.totalCount;
  66. };
  67. this.setState({
  68. dataSource: theArr,
  69. pagination: this.state.pagination
  70. });
  71. }.bind(this),
  72. }).always(function () {
  73. this.setState({
  74. loading: false
  75. });
  76. }.bind(this));
  77. },
  78. loadDatas(pageNo, apiUrl) {
  79. this.state.data = [];
  80. if(this.state.serialNumber&&isNaN(this.state.serialNumber)){
  81. message.warning('请输入正确的编号格式');
  82. return false;
  83. }
  84. this.setState({
  85. loading: true,
  86. ispage:pageNo,
  87. });
  88. $.ajax({
  89. method: "get",
  90. dataType: "json",
  91. crossDomain: false,
  92. url: globalConfig.context + '/api/admin/demand/orgList',
  93. data: {
  94. pageNo: pageNo || 1,
  95. pageSize: this.state.pagination.pageSize,
  96. serialNumber: this.state.serialNumber, //编号
  97. name: this.state.name,
  98. auditStatus:3,//名称
  99. keyword: this.state.keyword, // 关键词
  100. category: this.state.category, //类型(0--专利, 2--软著, 3--项目, 4--版权, 5--工业设计, 6--配方, 7--非标)
  101. releaseDateStartDate: this.state.releaseDate[0],
  102. releaseDateEndDate: this.state.releaseDate[1],
  103. releaseStatus: this.state.releaseStatus ? Number(this.state.releaseStatus) : undefined, //是否发布(0--未发布,1--已发布)
  104. boutique:this.state.boutique,
  105. hot:this.state.hot,
  106. createDateStartDate: this.state.releaseDateS[0],
  107. createDateEndDate: this.state.releaseDateS[1],
  108. ownerType:this.state.ownerType,
  109. },
  110. success: function (data) {
  111. let theArr = [];
  112. if (!data.data || !data.data.list) {
  113. if (data.error && data.error.length) {
  114. message.warning(data.error[0].message);
  115. };
  116. } else {
  117. for (let i = 0; i < data.data.list.length; i++) {
  118. let thisdata = data.data.list[i];
  119. theArr.push({
  120. key: thisdata.id,
  121. id: thisdata.id,
  122. serialNumber: thisdata.serialNumber,
  123. dataCategory: thisdata.dataCategory,
  124. name: thisdata.name,
  125. keyword: thisdata.keyword,
  126. theName: thisdata.username || thisdata.ownerName,
  127. category: thisdata.category,
  128. ownerName: thisdata.username ? thisdata.username : thisdata.ownerName,
  129. ownerType: thisdata.ownerType,
  130. ownerMobile: thisdata.ownerMobile,
  131. status: thisdata.status,
  132. releaseDate: thisdata.releaseDate,
  133. releaseDateFormattedDate: thisdata.releaseDateFormattedDate,
  134. auditStatus: thisdata.auditStatus,
  135. boutique: thisdata.boutique,
  136. hot: thisdata.hot,
  137. releaseStatus: thisdata.releaseStatus,
  138. techBrokerId:thisdata.techBrokerId,
  139. createTimeFormattedDate: thisdata.createTimeFormattedDate,
  140. remark:thisdata.remark,
  141. ispage:pageNo,
  142. });
  143. };
  144. this.state.paginations.current = data.data.pageNo;
  145. this.state.paginations.total = data.data.totalCount;
  146. };
  147. this.setState({
  148. dataSourcesli: theArr,
  149. paginations: this.state.paginations
  150. });
  151. }.bind(this),
  152. }).always(function () {
  153. this.setState({
  154. loading: false,
  155. visible: true
  156. });
  157. }.bind(this));
  158. },
  159. getInitialState() {
  160. return {
  161. searchMore: true,
  162. selectedRowKeys: [],
  163. selectedRowKeysli:[],
  164. selectedRows: [],
  165. releaseDate: [],
  166. releaseDateS: [],
  167. loading: false,
  168. pagination: {
  169. defaultCurrent: 1,
  170. defaultPageSize: 10,
  171. showQuickJumper: true,
  172. pageSize: 10,
  173. onChange: function (page) {
  174. this.loadData(page);
  175. }.bind(this),
  176. showTotal: function (total) {
  177. return '共' + total + '条数据';
  178. }
  179. },
  180. paginations: {
  181. defaultCurrent: 1,
  182. defaultPageSize: 10,
  183. showQuickJumper: true,
  184. pageSize: 10,
  185. onChange: function (page) {
  186. this.loadDatas(page);
  187. }.bind(this),
  188. showTotal: function (total) {
  189. return '共' + total + '条数据';
  190. }
  191. },
  192. columns: [
  193. {
  194. title: '需求编号',
  195. dataIndex: 'serialNumber',
  196. key: 'serialNumber',
  197. }, {
  198. title: '需求名称',
  199. dataIndex: 'name',
  200. key: 'name',
  201. }, {
  202. title: '客户名称',
  203. dataIndex: 'userName',
  204. key: 'userName',
  205. }, {
  206. title: '发布子平台',
  207. dataIndex: 'platformName',
  208. key: 'platformName',
  209. },{
  210. title: '发布客户端',
  211. dataIndex: 'publishClient',
  212. key: 'publishClient',
  213. render: text => { return getClient(text) }
  214. }, {
  215. title: '发布页面',
  216. dataIndex: 'publishPageName',
  217. key: 'publishPageName',
  218. },{
  219. title: '是否置顶',
  220. dataIndex: 'ifTop',
  221. key: 'ifTop',
  222. render: text => { return getStick(text) }
  223. }, {
  224. title: '展示序号',
  225. dataIndex: 'showNumber',
  226. key: 'showNumber',
  227. }, {
  228. title: '置顶序号',
  229. dataIndex: 'topNumber',
  230. key: 'topNumber',
  231. }, {
  232. title: '发布人',
  233. dataIndex: 'publisherName',
  234. key: 'publisherName',
  235. }, {
  236. title: '发布时间',
  237. dataIndex: 'publishTimeFormattedDate',
  238. key: 'publishTimeFormattedDate',
  239. }, {
  240. title: '操作',
  241. dataIndex: 'ee',
  242. key: 'ee',
  243. render: (text, record, index) => {
  244. return <div>
  245. <Popconfirm title={'请确认撤销发布成果【'+record.name+'】'} onConfirm={(e)=>{this.examine(record)}} okText="确认" cancelText="取消">
  246. <Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation()}} type="danger">撤销发布</Button>
  247. </Popconfirm>
  248. </div>
  249. }
  250. }
  251. ],
  252. dataSource: [],
  253. searchTime: [,],
  254. column: [
  255. {
  256. title: '编号',
  257. dataIndex: 'serialNumber',
  258. key: 'serialNumber',
  259. }, {
  260. title: '名称',
  261. dataIndex: 'name',
  262. key: 'name',
  263. }, {
  264. title: '关键字',
  265. dataIndex: 'keyword',
  266. key: 'keyword',
  267. }, {
  268. title: '类型',
  269. dataIndex: 'category',
  270. key: 'category',
  271. render: text => { return getAchievementCategory(text); }
  272. }, {
  273. title: '录入人',
  274. dataIndex: 'techBrokerId',
  275. key: 'techBrokerId',
  276. },
  277. {
  278. title: '是否精品',
  279. dataIndex: 'boutique',
  280. key: 'boutique',
  281. render: text => { return getboutique(text) }
  282. },
  283. {
  284. title: '发布时间',
  285. dataIndex: 'releaseDateFormattedDate',
  286. key: 'releaseDateFormattedDate',
  287. },{
  288. title: '录入时间',
  289. dataIndex: 'createTimeFormattedDate',
  290. key: 'createTimeFormattedDate',
  291. }
  292. ],
  293. dataSourcesli: [],
  294. searchTime: [,]
  295. };
  296. },
  297. componentWillMount() {
  298. this.selectSuperIds();
  299. },
  300. examine(record) {
  301. this.setState({
  302. selectedRowKeys: [],
  303. });
  304. $.ajax({
  305. method: "get",
  306. dataType: "json",
  307. crossDomain: false,
  308. url: globalConfig.context + '/api/admin/demand/deletePublish',
  309. data: {
  310. id:record.id,
  311. }
  312. }).done(function (data) {
  313. if (!data.error.length) {
  314. message.success('操作成功');
  315. this.setState({
  316. loading: false,
  317. });
  318. } else {
  319. message.warning(data.error[0].message);
  320. };
  321. this.loadData(this.state.ispage);
  322. }.bind(this));
  323. },
  324. //获取发布子平台
  325. selectSuperId() {
  326. this.state.data = []
  327. $.ajax({
  328. method: "get",
  329. dataType: "json",
  330. crossDomain: false,
  331. url: globalConfig.context + "/api/admin/achievement/getBranchInformation",
  332. data:{
  333. },
  334. success: function (data) {
  335. let theArr = [];
  336. let thedata=data.data;
  337. if (!thedata) {
  338. if (data.error && data.error.length) {
  339. message.warning(data.error[0].message);
  340. };
  341. thedata = {};
  342. };
  343. var contactIds=[];
  344. for(var i=0;i<data.data.length;i++){
  345. let theData = data.data[i];
  346. theArr.push(
  347. <Select.Option value={i.toString()} key={theData.platformName}>{theData.platformName}</Select.Option>
  348. );
  349. };
  350. this.setState({
  351. SuperArr:thedata,
  352. contactsOption: theArr,
  353. orderStatusOptions:data.data,
  354. });
  355. }.bind(this),
  356. }).always(function () {
  357. this.loadData();
  358. this.setState({
  359. loading: false
  360. });
  361. }.bind(this));
  362. },
  363. //获取发布页面
  364. selectSuperIds() {
  365. this.state.data = []
  366. $.ajax({
  367. method: "get",
  368. dataType: "json",
  369. crossDomain: false,
  370. url: globalConfig.context + "/api/admin/demand/getPublishPage",
  371. data:{
  372. },
  373. success: function (data) {
  374. let theArr = [];
  375. let thedata=data.data;
  376. if (!thedata) {
  377. if (data.error && data.error.length) {
  378. message.warning(data.error[0].message);
  379. };
  380. thedata = {};
  381. };
  382. var contactIds=[];
  383. for(var i=0;i<data.data.length;i++){
  384. let theData = data.data[i];
  385. theArr.push(
  386. <Select.Option value={i.toString()} key={theData.name}>{theData.name}</Select.Option>
  387. );
  388. };
  389. this.setState({
  390. SuperArrs:thedata,
  391. contactsOptions: theArr,
  392. orderStatusOptions:data.data,
  393. });
  394. }.bind(this),
  395. }).always(function () {
  396. this.selectSuperId();
  397. this.setState({
  398. loading: false
  399. });
  400. }.bind(this));
  401. },
  402. //编辑部门,保存
  403. edithandleSubmit(e){
  404. e.preventDefault();
  405. if(!this.state.editifTop){
  406. message.warning('请确认是否置顶');
  407. return false;
  408. }
  409. let topNumbers=(this.state.edittopNumber==9999999)?undefined:this.state.edittopNumber;
  410. topNumbers=topNumbers?topNumbers:undefined;
  411. if(this.state.ifTop==0){
  412. if(!topNumbers){
  413. message.warning('请输入置顶序号');
  414. return false;
  415. }
  416. let b=this.state.topNumber.split('');
  417. for(var i=0;i<b.length;i++){
  418. if(parseInt(b[i]).toString()=='NaN'){
  419. message.warning('置顶序号请输入数字');
  420. return false;
  421. };
  422. }
  423. }else{
  424. if(topNumbers){
  425. message.warning('请清空置顶序号');
  426. return false;
  427. }
  428. if(!this.state.editshowNumber){
  429. message.warning('请输入展示序号');
  430. return false;
  431. }
  432. let b=this.state.showNumber.split('');
  433. for(var i=0;i<b.length;i++){
  434. if(parseInt(b[i]).toString()=='NaN'){
  435. message.warning('展示序号请输入数字');
  436. return false;
  437. };
  438. }
  439. }
  440. //上级组织字典
  441. let nameText=this.state.SuperArr;
  442. let nameTexts=this.state.SuperArrs;
  443. let superText=(parseInt(this.state.editpublishPlatform).toString()=='NaN')?undefined:nameText[parseInt(this.state.editpublishPlatform)].id;
  444. let superTexts=(parseInt(this.state.editpublishPage).toString()=='NaN')?undefined:nameTexts[parseInt(this.state.editpublishPage)].id;
  445. $.ajax({
  446. method: "get",
  447. dataType: "json",
  448. crossDomain: false,
  449. url:globalConfig.context + '/api/admin/demand/updatePublish',
  450. data:{
  451. id:this.state.editid,//成果发布ID
  452. demandId:this.state.editachievementId, //成果ID
  453. publishPlatform:superText,//发布平台
  454. publishClient:this.state.editpublishClient,//发布客户端
  455. publishPage:superTexts,//发布页面
  456. ifTop:this.state.editifTop,//是否置顶
  457. topNumber:topNumbers,//置顶序号
  458. showNumber:this.state.editshowNumber,//展示序号
  459. }
  460. }).done(function (data) {
  461. this.setState({
  462. loading: false
  463. });
  464. if (!data.error.length) {
  465. message.success('保存成功!');
  466. this.edithandleCancel();
  467. this.selectSuperId();
  468. } else {
  469. message.warning(data.error[0].message);
  470. }
  471. }.bind(this));
  472. },
  473. //整行点击
  474. tableRowClick(record, index) {
  475. this.selectSuperIds();
  476. this.state.RowData = record;
  477. this.setState({
  478. editvisible: true,
  479. selectedRowKeys:[],
  480. editid:record.id,
  481. editachievementId:record.achievementId,
  482. editpublishPlatform:record.platformName,
  483. editpublishClient:record.publishClient,
  484. editpublishPage:record.publishPageName,
  485. editifTop:record.ifTop,
  486. edittopNumber:record.topNumber,
  487. editshowNumber:record.showNumber,
  488. editserialNumber:record.serialNumber,
  489. editname:record.name,
  490. edituserName:record.userName,
  491. })
  492. },
  493. //新增一个部门,保存
  494. addhandleSubmit(e){
  495. e.preventDefault();
  496. if(!this.state.publishPlatform){
  497. message.warning('请选择发布子平台');
  498. return false;
  499. }
  500. if(!this.state.publishClient){
  501. message.warning('请选择发布客户端');
  502. return false;
  503. }
  504. if(!this.state.publishPage){
  505. message.warning('请选择发布页面');
  506. return false;
  507. }
  508. if(!this.state.ifTop){
  509. message.warning('请确认是否置顶');
  510. return false;
  511. }
  512. if(this.state.ifTop==0){
  513. if(!this.state.topNumber){
  514. message.warning('请输入置顶序号');
  515. return false;
  516. }
  517. let b=this.state.topNumber.split('');
  518. for(var i=0;i<b.length;i++){
  519. if(parseInt(b[i]).toString()=='NaN'){
  520. message.warning('置顶序号请输入数字');
  521. return false;
  522. };
  523. }
  524. }else{
  525. if(this.state.topNumber){
  526. message.warning('请清空置顶序号');
  527. return false;
  528. }
  529. if(!this.state.showNumber){
  530. message.warning('请输入展示序号');
  531. return false;
  532. }
  533. let b=this.state.showNumber.split('');
  534. for(var i=0;i<b.length;i++){
  535. if(parseInt(b[i]).toString()=='NaN'){
  536. message.warning('展示序号请输入数字');
  537. return false;
  538. };
  539. }
  540. }
  541. this.props.form.validateFields((err, values) => {
  542. if (!err) {
  543. this.setState({
  544. loading: true
  545. });
  546. //上级组织字典
  547. let nameText=this.state.SuperArr;
  548. let superText=nameText[parseInt(this.state.publishPlatform)].id;
  549. let nameTexts=this.state.SuperArrs;
  550. let superTexts=nameTexts[parseInt(this.state.publishPage)].id;
  551. $.ajax({
  552. method: "post",
  553. dataType: "json",
  554. crossDomain: false,
  555. url:globalConfig.context + '/api/admin/demand/addDemandPublish',
  556. data:{
  557. demandId:this.state.selectedRowKeysli?this.state.selectedRowKeysli.join(","):undefined,//成果ID
  558. publishPlatform:superText,//发布平台
  559. publishClient:this.state.publishClient,//发布客户端
  560. publishPage:superTexts, //发布页面
  561. ifTop:this.state.ifTop,//是否置顶
  562. topNumber:this.state.topNumber,//置顶序号
  563. showNumber:this.state.showNumber,//展示序号
  564. }
  565. }).done(function (data) {
  566. this.setState({
  567. loading: false
  568. });
  569. if (!data.error.length) {
  570. message.success('保存成功!');
  571. this.handleCancel();
  572. this.selectSuperId();
  573. } else {
  574. message.warning(data.error[0].message);
  575. }
  576. }.bind(this));
  577. }
  578. });
  579. },
  580. //主管初始加载(自动补全)
  581. supervisor(e){
  582. $.ajax({
  583. method: "post",
  584. dataType: "json",
  585. crossDomain: false,
  586. url: globalConfig.context + "/api/admin/organization/selectName",
  587. data:{
  588. name:e
  589. },
  590. success: function (data) {
  591. let thedata=data.data;
  592. if (!thedata) {
  593. if (data.error && data.error.length) {
  594. message.warning(data.error[0].message);
  595. };
  596. thedata = {};
  597. };
  598. this.setState({
  599. customerArr:thedata,
  600. });
  601. }.bind(this),
  602. }).always(function () {
  603. this.setState({
  604. loading: false
  605. });
  606. }.bind(this));
  607. },
  608. //上级主管输入框失去焦点是判断客户是否存在
  609. selectAuto(value,options){
  610. this.setState({
  611. managerIdOrganization:value
  612. })
  613. },
  614. //失去焦点时
  615. blurChange(e){
  616. // let theType='';
  617. // let contactLists=this.state.customerArr||[];
  618. // if (e) {
  619. // contactLists.map(function (item) {
  620. // if (item.name == e.toString()) {
  621. // theType = item.id;
  622. // }
  623. // });
  624. // }
  625. this.setState({
  626. theTypes:e
  627. })
  628. },
  629. //值改变时请求客户名称
  630. httpChange(e){
  631. if(e.length>=2){
  632. this.supervisor(e);
  633. }
  634. this.setState({
  635. managerIdOrganization:e
  636. })
  637. },
  638. addClick() {
  639. this.state.name = undefined;//成果名称清零
  640. this.state.publishPlatform = undefined;//发布子平台清零
  641. this.state.publishClient = undefined;//发布客户端清零
  642. this.state.publishPage = undefined;//发布页面清零
  643. this.state.ifTop = undefined;//是否置顶清零
  644. this.state.topNumber = undefined;//置顶序号清零
  645. this.state.showNumber = undefined;//展示序号清零
  646. this.state.selectedRowKeysli=undefined;//选定的成果ID清零
  647. this.state.RowData = {};
  648. this.selectSuperId();
  649. this.loadDatas();
  650. },
  651. editClick() {
  652. this.state.RowData = {};
  653. this.setState({
  654. editvisible: true
  655. });
  656. },
  657. handleCancel() {
  658. this.setState({ visible: false })
  659. },
  660. edithandleCancel() {
  661. this.setState({ editvisible: false })
  662. },
  663. search() {
  664. this.loadData();
  665. },
  666. searchs() {
  667. this.loadDatas();
  668. },
  669. //把搜索的部分置零
  670. reset() {
  671. this.state.name = undefined;//成果名称清零
  672. this.state.superId = undefined;//发布子平台清零
  673. this.state.publishClient = undefined;//发布客户端清零
  674. this.state.publishPage = undefined;//发布页面清零
  675. this.state.ifTop = undefined;//是否置顶清零
  676. this.loadData();
  677. },
  678. resets() {
  679. this.state.serialNumber = undefined;
  680. this.state.name = undefined;
  681. this.state.keyword = undefined;
  682. this.state.infoSources = undefined;
  683. this.state.demandType = undefined;
  684. this.state.searchName = undefined;
  685. this.state.searchType = 0;
  686. this.state.boutique = '';
  687. this.state.hot='' ;
  688. this.state.status = undefined;
  689. this.state.releaseStatus = undefined;
  690. this.state.auditStatus = undefined;
  691. this.state.dataCategory = undefined;
  692. this.state.validityPeriodDate = [];
  693. this.state.releaseDate = [];
  694. this.state.releaseDateS = [];
  695. this.loadDatas();
  696. },
  697. searchSwitch() {
  698. this.setState({
  699. searchMore: !this.state.searchMore
  700. });
  701. },
  702. render() {
  703. const FormItem = Form.Item
  704. const rowSelection = {
  705. selectedRowKeys: this.state.selectedRowKeys,
  706. onChange: (selectedRowKeys, selectedRows) => {
  707. this.setState({
  708. selectedRows: selectedRows.slice(-1),
  709. selectedRowKeys: selectedRowKeys.slice(-1)
  710. });
  711. },
  712. onSelect: (recordt, selected, selectedRows) => {
  713. this.setState({
  714. recordt:recordt.id
  715. })
  716. },
  717. };
  718. const rowSelections = {
  719. selectedRowKeysli: this.state.selectedRowKeysli,
  720. onChange: (selectedRowKeysli, selectedRows) => {
  721. this.setState({
  722. selectedRows: selectedRows,
  723. selectedRowKeysli: selectedRowKeysli
  724. });
  725. },
  726. onSelect: (recordt, selected, selectedRows) => {
  727. this.setState({
  728. recordt:recordt.id
  729. })
  730. },
  731. };
  732. const formItemLayout = {
  733. labelCol: { span: 8 },
  734. wrapperCol: { span: 14 },
  735. };
  736. const { getFieldDecorator } = this.props.form;
  737. const hasSelected = this.state.selectedRowKeys.length > 0;
  738. const { RangePicker } = DatePicker;
  739. const dataSources=this.state.customerArr || [];
  740. const options = dataSources.map((group,index) =>
  741. <Option key={index} value={group.name}>{group.name}</Option>
  742. )
  743. return (
  744. <div className="user-content" >
  745. <div className="content-title">
  746. <div className="user-search">
  747. <Input placeholder="需求名称" style={{width:'150px',marginRight:'10px',marginBottom:'10px'}}
  748. value={this.state.name}
  749. onChange={(e) => { this.setState({ name: e.target.value }); }} />
  750. <Select placeholder="发布子平台"
  751. style={{ width:'200px',marginRight:'10px' }}
  752. value={this.state.superId}
  753. onChange={(e) => { this.setState({ superId: e }) }} notFoundContent="未获取到上级组织列表">
  754. {this.state.contactsOption}
  755. </Select>
  756. <Select placeholder="发布客户端"
  757. style={{width:'150px',marginRight:'20px'}}
  758. value={this.state.publishClient}
  759. onChange={(e) => { this.setState({ publishClient: e }) }}>
  760. <Select.Option value="0" >网站</Select.Option>
  761. <Select.Option value="1" >APP</Select.Option>
  762. </Select>
  763. <Button type="primary" onClick={this.search} style={{marginRight:'10px'}}>搜索</Button>
  764. <Button onClick={this.reset} style={{marginRight:'10px'}}>重置</Button>
  765. <span style={{marginRight:'20px'}}>更多搜索 <Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
  766. <div style={this.state.searchMore ? { display: 'none' } : {display: 'inline-block'}}>
  767. <Select placeholder="发布页面"
  768. style={{ width:'200px',marginRight:'10px' }}
  769. value={this.state.publishPage}
  770. onChange={(e) => { this.setState({ publishPage: e }) }} notFoundContent="未获取到发布页面">
  771. {this.state.contactsOptions}
  772. </Select>
  773. <Select placeholder="是否置顶"
  774. style={{width:'150px',marginRight:'50px'}}
  775. value={this.state.ifTop}
  776. onChange={(e) => { this.setState({ ifTop: e }) }}>
  777. <Select.Option value="0" >置顶</Select.Option>
  778. <Select.Option value="1" >不置顶</Select.Option>
  779. </Select>
  780. </div>
  781. <Button type="primary" className="addButton" onClick={this.addClick} style={{marginBottom:'10px'}}>发布需求<Icon type="plus" /></Button>
  782. </div>
  783. <div className="patent-table">
  784. <Spin spinning={this.state.loading}>
  785. <Table columns={this.state.columns}
  786. dataSource={this.state.dataSource}
  787. rowSelection={rowSelection}
  788. pagination={this.state.pagination}
  789. onRowClick={this.tableRowClick} />
  790. </Spin>
  791. </div>
  792. <div className="patent-desc">
  793. <Modal maskClosable={false} visible={this.state.visible}
  794. onOk={this.checkPatentProcess} onCancel={this.handleCancel}
  795. width='1200px'
  796. title='发布需求'
  797. footer=''
  798. className="admin-desc-content">
  799. <Form horizontal onSubmit={this.addhandleSubmit} id="add-form">
  800. <Spin spinning={this.state.loading}>
  801. <div className="clearfix">
  802. <FormItem className="half-item"
  803. labelCol={{ span: 7 }}
  804. wrapperCol={{ span: 12 }}
  805. label="发布子平台"
  806. >
  807. <Select placeholder="请选择子平台" value={this.state.publishPlatform} onChange={(e)=>{this.setState({publishPlatform:e})}}
  808. notFoundContent="未获取到子平台">
  809. {this.state.contactsOption}
  810. </Select>
  811. </FormItem>
  812. <FormItem className="half-item"
  813. labelCol={{ span: 7 }}
  814. wrapperCol={{ span: 12 }}
  815. label="发布客户端"
  816. >
  817. <Select placeholder="选择客户端" value={this.state.publishClient}
  818. onChange={(e)=>{this.setState({publishClient:e})}}>
  819. {
  820. client.map(function (item) {
  821. return <Select.Option key={item.value} >{item.key}</Select.Option>
  822. })
  823. }
  824. </Select>
  825. </FormItem>
  826. </div>
  827. <div className="clearfix">
  828. <FormItem className="half-item"
  829. labelCol={{ span: 7 }}
  830. wrapperCol={{ span: 12 }}
  831. label="发布页面位置"
  832. >
  833. <Select placeholder="请选择页面位置" value={this.state.publishPage} onChange={(e)=>{this.setState({publishPage:e})}}
  834. notFoundContent="未获取到页面位置">
  835. {this.state.contactsOptions}
  836. </Select>
  837. </FormItem>
  838. <FormItem className="half-item"
  839. labelCol={{ span: 7 }}
  840. wrapperCol={{ span: 12 }}
  841. label="是否置顶"
  842. >
  843. <Select placeholder="选择是否置顶" value={this.state.ifTop}
  844. onChange={(e)=>{this.setState({ifTop:e})}}>
  845. {
  846. stick.map(function (item) {
  847. return <Select.Option key={item.value} >{item.key}</Select.Option>
  848. })
  849. }
  850. </Select>
  851. </FormItem>
  852. </div>
  853. <div className="clearfix">
  854. <FormItem className="half-item"
  855. labelCol={{ span: 7 }}
  856. wrapperCol={{ span: 12 }}
  857. label="置顶序号" >
  858. <Input placeholder="请输入置顶序号" value={this.state.topNumber}
  859. onChange={(e)=>{this.setState({topNumber:e.target.value})}}/>
  860. </FormItem>
  861. <FormItem className="half-item"
  862. labelCol={{ span: 7 }}
  863. wrapperCol={{ span: 12}}
  864. label="展示序号" >
  865. <Input placeholder="请输入展示序号" value={this.state.showNumber}
  866. onChange={(e)=>{this.setState({showNumber:e.target.value})}}/>
  867. </FormItem>
  868. </div>
  869. <div className="user-search">
  870. <Input placeholder="需求编号" style={{"width":"150px","display":"inlineBlock","marginRight":"10px",'marginBottom':"5px"}}
  871. value={this.state.serialNumber}
  872. onChange={(e) => { this.setState({ serialNumber: e.target.value }); }} />
  873. <Input placeholder="需求名称" style={{"width":"150px","display":"inlineBlock","marginRight":"10px",'marginBottom':"5px"}}
  874. value={this.state.name}
  875. onChange={(e) => { this.setState({ name: e.target.value }); }} />
  876. <Input placeholder="关键字" style={{"width":"150px","display":"inlineBlock","marginRight":"10px",'marginBottom':"5px"}}
  877. value={this.state.keyword}
  878. onChange={(e) => { this.setState({ keyword: e.target.value }); }} />
  879. <span style={{"marginRight":"5px"}}>是否精品 :</span>
  880. <Radio.Group value={this.state.boutique} onChange={(e) => {
  881. this.setState({ boutique: e.target.value })
  882. }}>
  883. <Radio value={1}>精品</Radio>
  884. <Radio value={0}>非精品</Radio>
  885. </Radio.Group>
  886. <span style={{ marginLeft: '5px' }}>发布时间 : </span>
  887. <RangePicker style={{"marginRight":"150px"}}
  888. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  889. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  890. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  891. <span style={{ marginLeft: '10px' }}>录入时间 : </span>
  892. <RangePicker style={{"display":"inlineBlock",'marginRight':'10px'}}
  893. value={[this.state.releaseDateS[0] ? moment(this.state.releaseDateS[0]) : null,
  894. this.state.releaseDateS[1] ? moment(this.state.releaseDateS[1]) : null]}
  895. onChange={(data, dataString) => { this.setState({ releaseDateS: dataString }); }} />
  896. <Button type="primary" onClick={this.searchs} style={{"display":"inlineBlock",'marginRight':'10px'}}>搜索</Button>
  897. <Button onClick={this.resets} style={{"display":"inlineBlock",'marginRight':'10px'}}>重置</Button>
  898. </div>
  899. <div className="patent-table">
  900. <Spin spinning={this.state.loading}>
  901. <Table columns={this.state.column}
  902. dataSource={this.state.dataSourcesli}
  903. rowSelection={rowSelections}
  904. pagination={this.state.paginations}
  905. />
  906. </Spin>
  907. </div>
  908. <FormItem wrapperCol={{ span: 12, offset: 7 }}>
  909. <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
  910. <Button className="set-submit" type="ghost" onClick={this.handleCancel} style={{marginLeft:'100px'}}>取消</Button>
  911. </FormItem>
  912. </Spin>
  913. </Form >
  914. </Modal>
  915. </div>
  916. <div className="patent-desc">
  917. <Modal maskClosable={false} visible={this.state.editvisible}
  918. onOk={this.checkPatentProcess} onCancel={this.edithandleCancel}
  919. width='900px'
  920. title='编辑发布'
  921. footer=''
  922. className="admin-desc-content">
  923. <Form horizontal onSubmit={this.edithandleSubmit} id="edit-form">
  924. <Spin spinning={this.state.loading}>
  925. <div className="clearfix">
  926. <FormItem className="half-item"
  927. labelCol={{ span: 6 }}
  928. wrapperCol={{ span: 12 }}
  929. label="发布子平台"
  930. >
  931. <Select placeholder="请选择子平台" value={this.state.editpublishPlatform} onChange={(e)=>{this.setState({editpublishPlatform:e})}}
  932. notFoundContent="未获取到子平台">
  933. {this.state.contactsOption}
  934. </Select>
  935. </FormItem>
  936. <FormItem className="half-item"
  937. labelCol={{ span: 6 }}
  938. wrapperCol={{ span: 12 }}
  939. label="发布客户端"
  940. >
  941. <Select placeholder="选择客户端" value={this.state.editpublishClient}
  942. onChange={(e)=>{this.setState({editpublishClient:e})}}>
  943. {
  944. client.map(function (item) {
  945. return <Select.Option key={item.value} >{item.key}</Select.Option>
  946. })
  947. }
  948. </Select>
  949. </FormItem>
  950. </div>
  951. <div className="clearfix">
  952. <FormItem className="half-item"
  953. labelCol={{ span: 6 }}
  954. wrapperCol={{ span: 12 }}
  955. label="发布页面位置"
  956. >
  957. <Select placeholder="请选择页面位置" value={this.state.editpublishPage} onChange={(e)=>{this.setState({editpublishPage:e})}}
  958. notFoundContent="未获取到页面位置">
  959. {this.state.contactsOptions}
  960. </Select>
  961. </FormItem>
  962. <FormItem className="half-item"
  963. labelCol={{ span: 6 }}
  964. wrapperCol={{ span: 12 }}
  965. label="是否置顶"
  966. >
  967. <Select placeholder="选择是否置顶" value={this.state.editifTop}
  968. onChange={(e)=>{this.setState({editifTop:e})}}>
  969. {
  970. stick.map(function (item) {
  971. return <Select.Option key={item.value} >{item.key}</Select.Option>
  972. })
  973. }
  974. </Select>
  975. </FormItem>
  976. </div>
  977. <div className="clearfix">
  978. <FormItem className="half-item"
  979. labelCol={{ span: 6 }}
  980. wrapperCol={{ span: 12 }}
  981. label="置顶序号" >
  982. <Input placeholder="请输入置顶序号" value={this.state.edittopNumber}
  983. onChange={(e)=>{this.setState({edittopNumber:e.target.value})}}/>
  984. </FormItem>
  985. <FormItem className="half-item"
  986. labelCol={{ span: 6 }}
  987. wrapperCol={{ span: 12}}
  988. label="展示序号" >
  989. <Input placeholder="请输入展示序号" value={this.state.editshowNumber}
  990. onChange={(e)=>{this.setState({editshowNumber:e.target.value})}}/>
  991. </FormItem>
  992. </div>
  993. <div className="clearfix">
  994. <FormItem className="half-item"
  995. labelCol={{ span: 6 }}
  996. wrapperCol={{ span: 12 }}
  997. label="需求编号"
  998. >
  999. <span>{this.state.editserialNumber}</span>
  1000. </FormItem>
  1001. <FormItem className="half-item"
  1002. labelCol={{ span: 6 }}
  1003. wrapperCol={{ span: 12 }}
  1004. label="客户名称"
  1005. >
  1006. <span>{this.state.edituserName}</span>
  1007. </FormItem>
  1008. </div>
  1009. <div className="clearfix">
  1010. <FormItem
  1011. labelCol={{ span: 3 }}
  1012. wrapperCol={{ span: 18 }}
  1013. label="需求名称"
  1014. >
  1015. <span>{this.state.editname}</span>
  1016. </FormItem>
  1017. </div>
  1018. <FormItem wrapperCol={{ span: 12, offset: 7 }}>
  1019. <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
  1020. <Button className="set-submit" type="ghost" onClick={this.edithandleCancel} style={{marginLeft:'100px'}}>取消</Button>
  1021. </FormItem>
  1022. </Spin>
  1023. </Form >
  1024. </Modal>
  1025. </div>
  1026. </div>
  1027. </div>
  1028. );
  1029. }
  1030. }));
  1031. export default Organization;