releaseDemand.jsx 45 KB

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