achievementDetaiel.jsx 10 KB

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