achievementDetails.jsx 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. import React from 'react';
  2. import $ from 'jquery/src/ajax';
  3. import {
  4. Modal,
  5. message,
  6. Spin,
  7. Upload,
  8. Button,
  9. Form,
  10. } from 'antd';
  11. import { getIndustryCategory } from '@/industryList.js';
  12. import { splitUrl ,getMaturity,getAchievementType,getTransaction,getAchievementPosition,getAchievementCategory,getReleaseStateList,getInnovation} from '@/tools.js';
  13. const DemandDetail = Form.create()(React.createClass({
  14. getInitialState() {
  15. return {
  16. visible: false,
  17. loading: false,
  18. auditStatus: 0,
  19. textFileList: [],
  20. videoFileList: [],
  21. pictureUrl: [],
  22. };
  23. },
  24. loadData(id) {
  25. this.setState({
  26. loading: true
  27. });
  28. $.ajax({
  29. method: "get",
  30. dataType: "json",
  31. crossDomain: false,
  32. url: globalConfig.context + '/api/user/achievement/achievementDetail' ,
  33. data: {
  34. id: id
  35. },
  36. success: function (data) {
  37. let thisData = data.data;
  38. if (!thisData) {
  39. if (data.error && data.error.length) {
  40. message.warning(data.error[0].message);
  41. };
  42. thisData = {};
  43. };
  44. let publishPagesArr = [];
  45. thisData.publishPages.map(item=>{
  46. publishPagesArr.push(item.publishPage)
  47. })
  48. this.setState({
  49. id:thisData.id,
  50. publishPagesArr:publishPagesArr,
  51. data: thisData,
  52. auditStatus:thisData.auditStatus,
  53. pictureUrl: thisData.technicalPictureUrl ? splitUrl(thisData.technicalPictureUrl, ',', globalConfig.avatarHost + '/upload') : []
  54. });
  55. }.bind(this),
  56. }).always(function () {
  57. this.setState({
  58. loading: false
  59. });
  60. }.bind(this));
  61. },
  62. getTagsArr(e) {
  63. this.setState({ tags: e });
  64. },
  65. getPictureUrl(e) {
  66. this.setState({ pictureUrl: e });
  67. },
  68. cancelFun(){
  69. this.props.closeDesc();
  70. },
  71. //刷新发布
  72. updateFun(inex){
  73. this.setState({
  74. loading:true
  75. })
  76. $.ajax({
  77. method: "POST",
  78. dataType: "json",
  79. crossDomain: false,
  80. url: globalConfig.context +'/api/user/achievement/refreshPublish',
  81. data: {
  82. id: this.state.id,
  83. auditStatus:this.state.auditStatus
  84. }
  85. }).done(function (data) {
  86. if (!data.error.length) {
  87. message.success('刷新成功!');
  88. this.setState({
  89. loading: false,
  90. });
  91. } else {
  92. message.warning(data.error[0].message);
  93. };
  94. this.props.handOk();
  95. }.bind(this));
  96. },
  97. //撤销发布
  98. revokeFun(){
  99. this.setState({
  100. loading:true
  101. })
  102. $.ajax({
  103. method: "POST",
  104. dataType: "json",
  105. crossDomain: false,
  106. url: globalConfig.context + '/api/user/achievement/offShelf',
  107. data: {
  108. id: this.state.id,
  109. }
  110. }).done(function (data) {
  111. if (!data.error.length) {
  112. message.success('撤销成功!');
  113. this.setState({
  114. loading: false,
  115. });
  116. } else {
  117. message.warning(data.error[0].message);
  118. };
  119. this.props.handOk();
  120. }.bind(this));
  121. },
  122. componentWillMount() {
  123. if (this.props.data.id) {
  124. this.loadData(this.props.data.id);
  125. } else {
  126. this.state.data = {};
  127. };
  128. },
  129. componentWillReceiveProps(nextProps) {
  130. if (!this.props.visible && nextProps.visible) {
  131. this.state.textFileList = [];
  132. this.state.videoFileList = [];
  133. if (nextProps.data.id) {
  134. this.loadData(nextProps.data.id);
  135. } else {
  136. this.state.data = {};
  137. this.state.pictureUrl = [];
  138. };
  139. this.props.form.resetFields();
  140. };
  141. },
  142. render() {
  143. const theData = this.state.data || {};
  144. const { getFieldDecorator } = this.props.form;
  145. const FormItem = Form.Item
  146. const formItemLayout = {
  147. labelCol: { span: 6 },
  148. wrapperCol: { span: 12 },
  149. };
  150. return (
  151. <div className='login'>
  152. <Form layout="horizontal" id="demand-form">
  153. <Spin spinning={this.state.loading}>
  154. <div className="clearfix">
  155. <FormItem className="half-item" {...formItemLayout} label="标题">
  156. <span>{theData.name}</span>
  157. </FormItem>
  158. </div>
  159. <div className="clearfix">
  160. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="发个成果吧">
  161. <span>{theData.introduction}</span>
  162. </FormItem>
  163. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="知识产权情况">
  164. <span>{theData.patentCase}</span>
  165. </FormItem>
  166. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="技术参数">
  167. <span>{theData.parameter}</span>
  168. </FormItem>
  169. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="团队情况">
  170. <span>{theData.teamDes}</span>
  171. </FormItem>
  172. </div>
  173. <div className="clearfix">
  174. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="关键字">
  175. <span>{theData.keywords&&theData.keywords.length?(theData.keywords).join(','):''}</span>
  176. </FormItem>
  177. </div>
  178. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="行业领域">
  179. <span>{getIndustryCategory(theData.fieldA,theData.fieldB)}</span>
  180. </FormItem>
  181. <div className="clearfix">
  182. <FormItem className="half-item" {...formItemLayout} label="成果类型">
  183. <span>{getAchievementType(theData.dataCategory)}</span>
  184. </FormItem>
  185. <FormItem className="half-item" {...formItemLayout} label="知识产权类型">
  186. <span>{getAchievementCategory(theData.category)}</span>
  187. </FormItem>
  188. <FormItem className="half-item" {...formItemLayout} label="创新度">
  189. <span>{getInnovation(theData.innovation)}</span>
  190. </FormItem>
  191. <FormItem className="half-item" {...formItemLayout} label="成熟度">
  192. <span>{getMaturity(theData.maturity)}</span>
  193. </FormItem>
  194. <FormItem className="half-item" {...formItemLayout} label="交易形式">
  195. <span>{getTransaction(theData.transferMode)}</span>
  196. </FormItem>
  197. </div>
  198. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="成果文件(图片)">
  199. <div className="clearfix">
  200. <Upload className="demandDetailShow-upload"
  201. listType="picture-card"
  202. fileList={this.state.pictureUrl}
  203. onPreview={(file) => {
  204. this.setState({
  205. previewImage: file.url || file.thumbUrl,
  206. previewVisible: true,
  207. });
  208. }} >
  209. </Upload>
  210. <Modal maskClosable={false} footer={null}
  211. visible={this.state.previewVisible}
  212. onCancel={() => { this.setState({ previewVisible: false }) }}>
  213. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  214. </Modal>
  215. </div>
  216. </FormItem>
  217. <div>
  218. <FormItem className="half-item" {...formItemLayout} label="发布状态">
  219. <span>{getReleaseStateList(theData.auditStatus)}</span>
  220. </FormItem>
  221. </div>
  222. <div>
  223. <FormItem className="half-item" labelCol={{ span: 6 }}
  224. wrapperCol={{ span: 18 }} label="发布位置">
  225. <span>{getAchievementPosition(theData.publishPages)}</span>
  226. </FormItem>
  227. </div>
  228. <div className="clearfix">
  229. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="审核信息">
  230. <span>{theData.auditInfo}</span>
  231. </FormItem>
  232. </div>
  233. <div className="clearfix">
  234. {this.props.data.auditStatus=='2'&&<FormItem wrapperCol={{ span: 12, offset: 3 }}>
  235. <Button className="set-submit" type="primary" onClick={(e)=>{this.updateFun()}} >
  236. 刷新发布
  237. </Button>
  238. <Button type="danger" style={{marginRight:20}} onClick={(e)=>{this.revokeFun()}}>
  239. 撤销发布
  240. </Button>
  241. <Button className="set-submit" type="ghost" onClick={this.cancelFun}>
  242. 取消
  243. </Button>
  244. </FormItem>}
  245. </div>
  246. </Spin>
  247. </Form>
  248. </div>
  249. )
  250. }
  251. }));
  252. export default DemandDetail;