collection.jsx 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. import React, { Component } from 'react';
  2. import { Button,Radio ,message,Row,Col, Spin,Pagination} from 'antd';
  3. import axios from 'axios';
  4. import './collection.less';
  5. class Collection extends Component {
  6. constructor(props) {
  7. super(props);
  8. this.state = {
  9. loading:false,
  10. current:1,
  11. nub:'1'
  12. };
  13. }
  14. //服务
  15. loadDataService(page){
  16. this.setState({
  17. loading:true,
  18. })
  19. let url = globalConfig.context + '/api/user/portal/listProjectIInterestedIn'
  20. axios.get(url,{
  21. params:{
  22. pageNo:page||1,
  23. pageSize:8
  24. }
  25. })
  26. .then(data=>{
  27. let theData=data.data.data,
  28. theArr = [],
  29. times = new Date().getTime(),
  30. days = parseInt(times / (1000 * 60 * 60 * 24));
  31. if (!data.data || !data.data.data.list) {
  32. if (data.data.error && data.data.error.length) {
  33. message.warning(data.data.error[0].message);
  34. };
  35. } else {
  36. for (let i = 0; i < theData.list.length; i++) {
  37. let thisdata = theData.list[i],
  38. create = parseInt(thisdata.createTime / (1000 * 60 * 60 * 24));
  39. let newState = (days-create)<7?true:false;
  40. theArr.push({
  41. key: i,
  42. id: thisdata.id,
  43. newState:newState,
  44. name:thisdata.name,
  45. introduce:thisdata.introduce&&thisdata.introduce.length>40?thisdata.introduce.substr(0,40)+'...':thisdata.introduce,
  46. img: thisdata.maxImgUrl, //编号
  47. });
  48. };
  49. };
  50. this.setState({
  51. loading:false,
  52. dataList:theArr,
  53. total:data.data.data.totalCount
  54. })
  55. })
  56. }
  57. //成果
  58. loadDataAchievement(page){
  59. this.setState({
  60. loading:true,
  61. })
  62. let url = globalConfig.context + '/api/user/portal/listAchievementIInterestedIn'
  63. axios.get(url,{
  64. params:{
  65. pageNo:page||1,
  66. pageSize:8
  67. }
  68. })
  69. .then(data=>{
  70. let theData=data.data.data,
  71. theArr = [],
  72. times = new Date().getTime(),
  73. days = parseInt(times / (1000 * 60 * 60 * 24));
  74. if (!data.data || !data.data.data.list) {
  75. if (data.data.error && data.data.error.length) {
  76. message.warning(data.data.error[0].message);
  77. };
  78. } else {
  79. for (let i = 0; i < theData.list.length; i++) {
  80. let thisdata = theData.list[i],
  81. create = parseInt(thisdata.releaseDate / (1000 * 60 * 60 * 24));
  82. let newState = (days-create)<7?true:false;
  83. theArr.push({
  84. key: i,
  85. id: thisdata.id,
  86. newState:newState,
  87. name:thisdata.name,
  88. introduce:thisdata.introduction&&thisdata.introduction.length>40?thisdata.introduction.substr(0,40)+'...':thisdata.introduction,
  89. img: thisdata.firstPicture, //编号
  90. });
  91. };
  92. };
  93. this.setState({
  94. loading:false,
  95. dataList:theArr,
  96. total:data.data.data.totalCount
  97. })
  98. })
  99. }
  100. //需求
  101. loadDataDemand(page){
  102. this.setState({
  103. loading:true,
  104. })
  105. let url = globalConfig.context + '/api/user/portal/listDemandIInterestedIn'
  106. axios.get(url,{
  107. params:{
  108. pageNo:page||1,
  109. pageSize:8
  110. }
  111. })
  112. .then(data=>{
  113. let theData=data.data.data,
  114. theArr = [],
  115. times = new Date().getTime(),
  116. days = parseInt(times / (1000 * 60 * 60 * 24));
  117. if (!data.data || !data.data.data.list) {
  118. if (data.data.error && data.data.error.length) {
  119. message.warning(data.data.error[0].message);
  120. };
  121. } else {
  122. for (let i = 0; i < theData.list.length; i++) {
  123. let thisdata = theData.list[i],
  124. create = parseInt(thisdata.releaseDate / (1000 * 60 * 60 * 24));
  125. let newState = (days-create)<7?true:false;
  126. theArr.push({
  127. key: i,
  128. id: thisdata.id,
  129. newState:newState,
  130. name:thisdata.name,
  131. introduce:thisdata.problemDes&&thisdata.problemDes.length>40?thisdata.problemDes.substr(0,40)+'...':thisdata.problemDes,
  132. img: thisdata.firstPic, //编号
  133. });
  134. };
  135. };
  136. this.setState({
  137. loading:false,
  138. dataList:theArr,
  139. total:data.data.data.totalCount
  140. })
  141. })
  142. }
  143. componentWillMount(){
  144. this.loadDataService(1)
  145. }
  146. tabFun(e){
  147. this.setState({ nub: e.target.value })
  148. switch(e.target.value){
  149. case '1':
  150. this.loadDataService(1)
  151. break;
  152. case '2':
  153. this.loadDataDemand(1)
  154. break;
  155. case '3':
  156. this.loadDataAchievement(1)
  157. break;
  158. }
  159. }
  160. //分页
  161. onShowSizeChange(current, pageSize){
  162. this.setState({
  163. current:current,
  164. pageSize:pageSize
  165. })
  166. switch(this.state.nub){
  167. case '1':
  168. this.loadDataService(current)
  169. break;
  170. case '2':
  171. this.loadDataDemand(current)
  172. break;
  173. case '3':
  174. this.loadDataAchievement(current)
  175. break;
  176. }
  177. }
  178. jump(item){
  179. let url='';
  180. switch(this.state.nub){
  181. case '1':
  182. url = globalConfig.context+`/portal/service/serviceDetail?id=${item.id}`;
  183. break;
  184. case '2':
  185. url=globalConfig.context+`/portal/technologyTrading/demandDetail?id=${item.id}&type=0`;
  186. break;
  187. case '3':
  188. url=globalConfig.context+`/portal/technologyTrading/achievementDetail?id=${item.id}&type=1`;
  189. break;
  190. }
  191. window.open(url);
  192. }
  193. render() {
  194. const dataList =this.state.dataList || [];
  195. return <div className="user-content">
  196. <div className="title" >
  197. 我的收藏
  198. </div>
  199. <div>
  200. <Radio.Group className="btnGroup" value={this.state.nub} onChange={this.tabFun.bind(this)}>
  201. <Radio.Button value="1">科技服务</Radio.Button>
  202. <Radio.Button value="2">科技需求</Radio.Button>
  203. <Radio.Button value="3">科技成果</Radio.Button>
  204. </Radio.Group>
  205. </div>
  206. <div className="imgList">
  207. <Spin spinning={this.state.loading}>
  208. {dataList.length?<Row>
  209. {dataList.map((item,index)=>{
  210. return<Col span={6} key={index} onClick={(e)=>{this.jump(item)}}>
  211. <div className="img">
  212. <div className="imgHeader">
  213. <div className="imgBj">
  214. {item.img?<img src={globalConfig.avatarHost+'/upload'+item.img} alt=""/>:''}
  215. </div>
  216. {item.newState&&<span className="new"></span>}
  217. <div className="divP"><p>{item.introduce?item.introduce:'暂无'}</p></div>
  218. </div>
  219. <p className="txt">{item.name}</p>
  220. </div>
  221. </Col>
  222. })
  223. }
  224. </Row>:
  225. <Row style={{color:'#333'}}>暂无数据</Row>}
  226. </Spin>
  227. {this.state.total?<Pagination className="page" pageSize={8} current={this.state.current} total={this.state.total} onChange={this.onShowSizeChange.bind(this)}/>:''}
  228. </div>
  229. </div>
  230. }
  231. }
  232. export default Collection;