newDetails.jsx 8.9 KB

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