businessDetails.jsx 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. import React from 'react';
  2. import $ from 'jquery/src/ajax';
  3. import { Modal, message, Spin, Upload, Button, Form } from 'antd';
  4. import { getprovince, splitUrl } from '@/tools.js';
  5. const DemandDetail = Form.create()(
  6. React.createClass({
  7. getInitialState() {
  8. return {
  9. visible: false,
  10. loading: false,
  11. auditStatus: 0,
  12. textFileList: [],
  13. videoFileList: [],
  14. pictureUrl: []
  15. };
  16. },
  17. loadData(id) {
  18. this.setState({
  19. loading: true
  20. });
  21. $.ajax({
  22. method: 'get',
  23. dataType: 'json',
  24. crossDomain: false,
  25. url: globalConfig.context + '/api/user/jtBusiness/project/detail',
  26. data: {
  27. id: id
  28. },
  29. success: function(data) {
  30. let thisData = data.data;
  31. if (!thisData) {
  32. if (data.error && data.error.length) {
  33. message.warning(data.error[0].message);
  34. }
  35. thisData = {};
  36. }
  37. let categoryList = this.props.categoryList,name='';
  38. categoryList.map(item=>{
  39. if((item.children).length){
  40. (item.children).map(atem=>{
  41. if(atem.value==thisData.categoryId){
  42. name=item.label+'/'+atem.label;
  43. return;
  44. }
  45. })
  46. }
  47. })
  48. let tagFirst =thisData.tags?thisData.tags.split(','):[],tagTxt=[];
  49. (this.props.tagList).map(item=>{
  50. for(let j=0;j<tagFirst.length;j++){
  51. if(item.id==tagFirst[j]){
  52. tagTxt.push(item.name);
  53. }
  54. }
  55. })
  56. this.setState({
  57. id: thisData.id,
  58. data: thisData,
  59. name:name,
  60. tags:tagTxt.join(' - '),
  61. createTime: thisData.createTime ? new Date(thisData.createTime).toLocaleString() : '',
  62. auditStatus: thisData.auditStatus,
  63. orgCodeUrl: thisData.minImgUrl
  64. ? splitUrl(thisData.minImgUrl, ',', globalConfig.avatarHost + '/upload')
  65. : [],
  66. companyLogoUrl: thisData.maxImgUrl
  67. ? splitUrl(thisData.maxImgUrl, ',', globalConfig.avatarHost + '/upload')
  68. : []
  69. });
  70. }.bind(this)
  71. }).always(
  72. function() {
  73. this.setState({
  74. loading: false
  75. });
  76. }.bind(this)
  77. );
  78. },
  79. cancelFun() {
  80. this.props.closeDesc();
  81. },
  82. //刷新发布
  83. updateFun(inex) {
  84. this.setState({
  85. loading: true
  86. });
  87. $.ajax({
  88. method: 'get',
  89. dataType: 'json',
  90. crossDomain: false,
  91. url: globalConfig.context + '/api/user/jtBusiness/project/refreshPublish',
  92. data: {
  93. id: this.state.id,
  94. auditStatus: this.state.auditStatus
  95. }
  96. }).done(
  97. function(data) {
  98. if (!data.error.length) {
  99. message.success('刷新成功!');
  100. this.setState({
  101. loading: false
  102. });
  103. } else {
  104. message.warning(data.error[0].message);
  105. }
  106. this.props.handOk();
  107. }.bind(this)
  108. );
  109. },
  110. //撤销发布
  111. revokeFun() {
  112. this.setState({
  113. loading: true
  114. });
  115. $.ajax({
  116. method: 'get',
  117. dataType: 'json',
  118. crossDomain: false,
  119. url: globalConfig.context + '/api/user/jtBusiness/project/offShelf',
  120. data: {
  121. id: this.state.id,
  122. auditStatus:this.state.auditStatus
  123. }
  124. }).done(
  125. function(data) {
  126. if (!data.error.length) {
  127. message.success('撤销成功!');
  128. this.setState({
  129. loading: false
  130. });
  131. } else {
  132. message.warning(data.error[0].message);
  133. }
  134. this.props.handOk();
  135. }.bind(this)
  136. );
  137. },
  138. componentWillMount() {
  139. if (this.props.data.id) {
  140. this.loadData(this.props.data.id);
  141. } else {
  142. this.state.data = {};
  143. }
  144. },
  145. componentWillReceiveProps(nextProps) {
  146. if (!this.props.visible && nextProps.visible) {
  147. this.state.textFileList = [];
  148. this.state.videoFileList = [];
  149. if (nextProps.data.id) {
  150. this.loadData(nextProps.data.id);
  151. } else {
  152. this.state.data = {};
  153. this.state.pictureUrl = [];
  154. }
  155. this.props.form.resetFields();
  156. }
  157. },
  158. render() {
  159. const theData = this.state.data || {};
  160. const FormItem = Form.Item;
  161. return (
  162. <div className="patent-desc">
  163. <Form
  164. layout="horizontal"
  165. onSubmit={(e) => {
  166. this.handleSubmit(e, 0);
  167. }}
  168. id="demand-form"
  169. >
  170. <Spin spinning={this.state.loading}>
  171. <div className="clearfix">
  172. <FormItem
  173. className="half-item"
  174. labelCol={{ span:8 }}
  175. wrapperCol={{ span: 12 }}
  176. label="项目名称"
  177. >
  178. <span>{theData.name}</span>
  179. </FormItem>
  180. <FormItem
  181. className="half-item"
  182. labelCol={{ span: 8 }}
  183. wrapperCol={{ span: 12 }}
  184. label="业务品类"
  185. >
  186. <span>{this.state.name}</span>
  187. </FormItem>
  188. </div>
  189. <div className="clearfix">
  190. <FormItem
  191. className="half-item"
  192. labelCol={{ span:8 }}
  193. wrapperCol={{ span: 12 }}
  194. label="省份"
  195. >
  196. <span>{theData.province!='0'?getprovince(theData.province):'全国'}</span>
  197. </FormItem>
  198. <FormItem
  199. className="half-item"
  200. labelCol={{ span: 8 }}
  201. wrapperCol={{ span: 12 }}
  202. label="热点"
  203. >
  204. <span>{theData.isHot=='1' ? '是' :theData.isHot=='0'?'否':''}</span>
  205. </FormItem>
  206. </div>
  207. <div className="clearfix">
  208. <FormItem
  209. className="half-item"
  210. labelCol={{ span:8 }}
  211. wrapperCol={{ span: 12 }}
  212. label="市场价"
  213. >
  214. <span>{theData.price}万元</span>
  215. </FormItem>
  216. <FormItem
  217. className="half-item"
  218. labelCol={{ span:8 }}
  219. wrapperCol={{ span: 12 }}
  220. label="活动价"
  221. >
  222. <span>{theData.activityPrice}万元</span>
  223. </FormItem>
  224. <FormItem
  225. className="half-item"
  226. labelCol={{ span:8 }}
  227. wrapperCol={{ span: 12 }}
  228. label="最低折扣"
  229. >
  230. <span>{theData.offset} 万元</span>
  231. </FormItem>
  232. <FormItem
  233. className="half-item"
  234. labelCol={{ span:8 }}
  235. wrapperCol={{ span: 12 }}
  236. label="会员价"
  237. >
  238. <span>{theData.memberPrice} 万元</span>
  239. </FormItem>
  240. <FormItem
  241. className="half-item"
  242. labelCol={{ span: 8 }}
  243. wrapperCol={{ span: 12 }}
  244. label="活动生效"
  245. >
  246. <span>{theData.activityFlag=='1' ? '有效' :theData.activityFlag=='0'?'无效':''}</span>
  247. </FormItem>
  248. <FormItem
  249. className="half-item"
  250. labelCol={{ span: 8}}
  251. wrapperCol={{ span: 12 }}
  252. label="创建时间"
  253. >
  254. <span>{this.state.createTime}</span>
  255. </FormItem>
  256. </div>
  257. <div className="clearfix">
  258. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 12 }} label="标签">
  259. <span>{this.state.tags}</span>
  260. </FormItem>
  261. </div>
  262. <div className="clearfix">
  263. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 12 }} label="项目营销说明">
  264. <span>{theData.advertisement}</span>
  265. </FormItem>
  266. </div>
  267. <div className="clearfix">
  268. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 12 }} label="业务项目服务内容">
  269. <span>{theData.introduce}</span>
  270. </FormItem>
  271. </div>
  272. <div className="clearfix">
  273. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 12 }} label="业务项目价值及作用">
  274. <span>{theData.value}</span>
  275. </FormItem>
  276. </div>
  277. <div className="clearfix">
  278. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 12 }} label="业务项目客户基本条件">
  279. <span>{theData.applyConditions}</span>
  280. </FormItem>
  281. </div>
  282. <div className="clearfix pictures">
  283. <FormItem
  284. className="half-item"
  285. labelCol={{ span: 8 }}
  286. wrapperCol={{ span: 10 }}
  287. label="业务项目图标(小)"
  288. >
  289. <Upload
  290. className="demandDetailShow-upload"
  291. listType="picture-card"
  292. fileList={this.state.orgCodeUrl}
  293. onPreview={(file) => {
  294. this.setState({
  295. previewImage: file.url || file.thumbUrl,
  296. previewVisible: true
  297. });
  298. }}
  299. />
  300. <Modal
  301. maskClosable={false}
  302. footer={null}
  303. visible={this.state.previewVisible}
  304. onCancel={() => {
  305. this.setState({ previewVisible: false });
  306. }}
  307. >
  308. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  309. </Modal>
  310. </FormItem>
  311. <FormItem
  312. className="half-item"
  313. labelCol={{ span: 8 }}
  314. wrapperCol={{ span: 12 }}
  315. label="业务项目图标(大)"
  316. >
  317. <Upload
  318. className="demandDetailShow-upload"
  319. listType="picture-card"
  320. fileList={this.state.companyLogoUrl}
  321. onPreview={(file) => {
  322. this.setState({
  323. previewImage: file.url || file.thumbUrl,
  324. previewVisible: true
  325. });
  326. }}
  327. />
  328. <Modal
  329. maskClosable={false}
  330. footer={null}
  331. visible={this.state.previewVisible}
  332. onCancel={() => {
  333. this.setState({ previewVisible: false });
  334. }}
  335. >
  336. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  337. </Modal>
  338. </FormItem>
  339. </div>
  340. <div className="clearfix">
  341. {this.props.data.auditStatus == '2' && (
  342. <FormItem wrapperCol={{ span: 12, offset: 3 }}>
  343. <Button
  344. className="set-submit"
  345. type="primary"
  346. onClick={(e) => {
  347. this.updateFun();
  348. }}
  349. >
  350. 刷新发布
  351. </Button>
  352. <Button
  353. type="danger"
  354. style={{ marginRight: 20 }}
  355. onClick={(e) => {
  356. this.revokeFun();
  357. }}
  358. >
  359. 撤销发布
  360. </Button>
  361. <Button className="set-submit" type="ghost" onClick={this.cancelFun}>
  362. 取消
  363. </Button>
  364. </FormItem>
  365. )}
  366. </div>
  367. </Spin>
  368. </Form>
  369. </div>
  370. );
  371. }
  372. })
  373. );
  374. export default DemandDetail;