policyDetails.jsx 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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 {getProvince} from '@/NewDicProvinceList';
  12. import './policy.less'
  13. import {getReleaseStateList,getPolicyPosition,splitUrl} from '@/tools';
  14. const NewDetail = Form.create()(React.createClass({
  15. getInitialState() {
  16. return {
  17. visible: false,
  18. loading: false,
  19. auditStatus: 0,
  20. textFileList: [],
  21. videoFileList: [],
  22. pictureUrl: [],
  23. };
  24. },
  25. loadData(id) {
  26. this.setState({
  27. loading: true
  28. });
  29. $.ajax({
  30. method: "get",
  31. dataType: "json",
  32. crossDomain: false,
  33. url: globalConfig.context + '/api/admin/policy/detail' ,
  34. data: {
  35. id: id
  36. },
  37. success: function (data) {
  38. let thisData = data.data;
  39. if (!thisData) {
  40. if (data.error && data.error.length) {
  41. message.warning(data.error[0].message);
  42. };
  43. thisData = {};
  44. };
  45. document.querySelector('.txt').innerHTML='';
  46. let ProvinceS = thisData.province,
  47. ProvinceCity = getProvince(ProvinceS);
  48. let eleDiv = document.createElement('div');
  49. eleDiv.innerHTML=thisData.content;
  50. document.querySelector('.txt').append(eleDiv);
  51. this.setState({
  52. id:thisData.id,
  53. page:thisData.publishPages,
  54. data: thisData,
  55. eleDiv:eleDiv,
  56. ProvinceCity:ProvinceCity,
  57. edit:{content:thisData.content},
  58. auditStatus:thisData.auditStatus,
  59. pictureUrl: thisData.titleImg ? splitUrl(thisData.titleImg, ',', globalConfig.avatarHost + '/upload') : []
  60. });
  61. }.bind(this),
  62. }).always(function () {
  63. this.setState({
  64. loading: false
  65. });
  66. }.bind(this));
  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/admin/policy/updateStatus',
  81. data: {
  82. id: this.state.id,
  83. auditStatus:this.state.auditStatus,
  84. refresh:1
  85. }
  86. }).done(function (data) {
  87. if (!data.error.length) {
  88. message.success('刷新成功!');
  89. this.setState({
  90. loading: false,
  91. });
  92. } else {
  93. message.warning(data.error[0].message);
  94. };
  95. this.props.handOk();
  96. }.bind(this));
  97. },
  98. //撤销发布
  99. revokeFun(){
  100. this.setState({
  101. loading:true
  102. })
  103. $.ajax({
  104. method: "POST",
  105. dataType: "json",
  106. crossDomain: false,
  107. url: globalConfig.context + '/api/admin/policy/updateStatus',
  108. data: {
  109. id: this.state.id,
  110. auditStatus:4,
  111. }
  112. }).done(function (data) {
  113. if (!data.error.length) {
  114. message.success('撤销成功!');
  115. this.setState({
  116. loading: false,
  117. });
  118. } else {
  119. message.warning(data.error[0].message);
  120. };
  121. this.props.handOk();
  122. }.bind(this));
  123. },
  124. componentWillMount() {
  125. if (this.props.data.id) {
  126. this.loadData(this.props.data.id);
  127. } else {
  128. this.state.data = {};
  129. };
  130. },
  131. componentWillReceiveProps(nextProps) {
  132. if (!this.props.visible && nextProps.visible) {
  133. this.state.textFileList = [];
  134. this.state.videoFileList = [];
  135. if (nextProps.data.id) {
  136. this.loadData(nextProps.data.id);
  137. } else {
  138. this.state.data = {};
  139. this.state.pictureUrl = [];
  140. };
  141. this.props.form.resetFields();
  142. };
  143. },
  144. render() {
  145. const theData = this.state.data || {};
  146. const FormItem = Form.Item
  147. const formItemLayout = {
  148. labelCol: { span: 6 },
  149. wrapperCol: { span: 12 },
  150. };
  151. return (
  152. <div className='login'>
  153. <Form layout="horizontal" id="demand-form">
  154. <Spin spinning={this.state.loading}>
  155. <div className="clearfix">
  156. <FormItem className="half-item" {...formItemLayout} label="政策标题">
  157. <span>{theData.title}</span>
  158. </FormItem>
  159. <FormItem className="half-item" {...formItemLayout} label="热门">
  160. <span>{theData.hot=='0'&&'否'}{theData.hot=='1'&&'是'}</span>
  161. </FormItem>
  162. <FormItem className="half-item" {...formItemLayout} label="政策来源">
  163. <span>{theData.source}</span>
  164. </FormItem>
  165. <FormItem className="half-item" {...formItemLayout} label="来源链接">
  166. <span>{theData.sourceUrl}</span>
  167. </FormItem>
  168. <FormItem className="half-item" {...formItemLayout} label="省市区">
  169. <span>{this.state.ProvinceCity}</span>
  170. </FormItem>
  171. </div>
  172. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="政策图片">
  173. <div className="clearfix">
  174. <Upload className="demandDetailShow-upload"
  175. listType="picture-card"
  176. fileList={this.state.pictureUrl}
  177. onPreview={(file) => {
  178. this.setState({
  179. previewImage: file.url || file.thumbUrl,
  180. previewVisible: true,
  181. });
  182. }} >
  183. </Upload>
  184. <Modal maskClosable={false} footer={null}
  185. visible={this.state.previewVisible}
  186. onCancel={() => { this.setState({ previewVisible: false }) }}>
  187. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  188. </Modal>
  189. </div>
  190. </FormItem>
  191. <div className="clearfix">
  192. <FormItem className="half-item" {...formItemLayout} label="发布状态">
  193. <span>{getReleaseStateList(theData.auditStatus)}</span>
  194. </FormItem>
  195. <FormItem className="half-item" {...formItemLayout} label="发布时间">
  196. <span>{theData.releaseDate?(new Date(theData.releaseDate)).toLocaleString():''}</span>
  197. </FormItem>
  198. </div>
  199. <div className="clearfix">
  200. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="发布位置">
  201. <span>{getPolicyPosition(this.state.page)}</span>
  202. </FormItem>
  203. </div>
  204. <div className="clearfix">
  205. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="政策简介">
  206. <span>{theData.summary}</span>
  207. </FormItem>
  208. <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="政策正文">
  209. <div className="txt" ></div>
  210. </FormItem>
  211. </div>
  212. <div className="clearfix">
  213. {this.props.data.auditStatus=='2'&&<FormItem wrapperCol={{ span: 12, offset: 3 }}>
  214. <Button className="set-submit" type="primary" onClick={(e)=>{this.updateFun()}} >
  215. 刷新发布
  216. </Button>
  217. <Button type="danger" style={{marginRight:20}} onClick={(e)=>{this.revokeFun()}}>
  218. 撤销发布
  219. </Button>
  220. <Button className="set-submit" type="ghost" onClick={this.cancelFun}>
  221. 取消
  222. </Button>
  223. </FormItem>}
  224. </div>
  225. </Spin>
  226. </Form>
  227. </div>
  228. )
  229. }
  230. }));
  231. export default NewDetail;