chargeback.jsx 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993
  1. import React from 'react';
  2. import { Radio, Icon, Button, AutoComplete,Cascader,Input, Select, Spin, Popconfirm, Table, Switch, message,Calendar , DatePicker, Upload, Form ,Modal,Tabs,Card ,Col} from 'antd';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import Jquery from 'jquery/dist/jquery.js';
  6. import Picture from '@/manageCenter/publicComponent/picture';
  7. import moment from 'moment';
  8. import {boutique ,tepi,jiedian} from '@/dataDic.js';
  9. import { getLiquidationStatus,getApprovedState,getProcessStatus,splitUrl,getjiedian,getboutique,getNewOrderStatus,getRefundStatus,getCuikuan} from '@/tools.js';
  10. import './customer.less';
  11. const TabPane = Tabs.TabPane;
  12. const Dragger = Upload.Dragger;
  13. //图片组件
  14. const PicturesWall = React.createClass({
  15. getInitialState() {
  16. return {
  17. previewVisible: false,
  18. previewImage: '',
  19. fileList: [],
  20. }
  21. },
  22. handleCancel() {
  23. this.setState({
  24. previewVisible: false
  25. })
  26. },
  27. handlePreview(file) {
  28. this.setState({
  29. previewImage: file.url || file.thumbUrl,
  30. previewVisible: true,
  31. });
  32. },
  33. handleChange(info) {
  34. let fileList = info.fileList;
  35. this.setState({
  36. fileList
  37. });
  38. this.props.fileList(fileList);
  39. },
  40. componentWillReceiveProps(nextProps) {
  41. this.state.fileList = nextProps.pictureUrl;
  42. this.state.pojectApplicationUrl = undefined;
  43. },
  44. render() {
  45. const {
  46. previewVisible,
  47. previewImage,
  48. fileList
  49. } = this.state;
  50. const uploadButton = (
  51. <div>
  52. <Icon type="plus" />
  53. <div className="ant-upload-text">点击上传</div>
  54. </div>
  55. );
  56. return(
  57. <div style={{display:"inline-block"}}>
  58. <Upload
  59. action={globalConfig.context + "/api/admin/customer/uploadCustomerImg"}
  60. data={{ 'sign': '' }}
  61. listType="picture-card"
  62. fileList={fileList}
  63. onPreview={this.handlePreview}
  64. onChange={this.handleChange} >
  65. {fileList.length >= 1 ? null : uploadButton}
  66. </Upload>
  67. <Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
  68. <img alt="example" style={{ width: '100%' }} src={previewImage} />
  69. </Modal>
  70. </div>
  71. );
  72. }
  73. });
  74. const IntentionCustomer = Form.create()(React.createClass({
  75. loadData(pageNo, apiUrl) {
  76. this.setState({
  77. visitModul:false,
  78. loading: true,
  79. ispage:pageNo,
  80. modalVisible:false
  81. });
  82. $.ajax({
  83. method: "get",
  84. dataType: "json",
  85. crossDomain: false,
  86. url: globalConfig.context +"/api/admin/newOrder/orderRefundList",
  87. data: {
  88. pageNo: pageNo || 1,
  89. pageSize: this.state.pagination.pageSize,
  90. name: this.state.customerName,//名称
  91. orderNo: this.state.orderNo,//订单编号
  92. starTime: this.state.releaseDate[0],//开始时间
  93. endTime: this.state.releaseDate[1],//结束时间
  94. },
  95. success: function(data) {
  96. let theArr = [];
  97. if(data.error.length || data.data.list == "") {
  98. if(data.error && data.error.length) {
  99. message.warning(data.error[0].message);
  100. };
  101. } else {
  102. for(let i = 0; i < data.data.list.length; i++) {
  103. let thisdata = data.data.list[i];
  104. let diqu=(thisdata.province==null?"":thisdata.province)+(thisdata.city==null?"":"-"+thisdata.city)+(thisdata.area==null?"":"-"+thisdata.area);
  105. theArr.push({
  106. key: i,
  107. id: thisdata.id,//用户ID
  108. orderNo: thisdata.orderNo,//订单编号
  109. userName:thisdata.userName,//客户名称
  110. orderStatus:thisdata.orderStatus,//订单状态
  111. refundStatus:thisdata.refundStatus,//退单状态
  112. reason:thisdata.reason,//退单原因
  113. createDate:thisdata.createDate,//退单时间
  114. liquidationStatus:thisdata.liquidationStatus,//结算状态
  115. });
  116. };
  117. this.state.pagination.total = data.data.totalCount;
  118. };
  119. if(data.data&&data.data.list&&!data.data.list.length){
  120. this.state.pagination.total=0
  121. }
  122. this.setState({
  123. dataSource: theArr,
  124. pageNo: pageNo,
  125. pagination: this.state.pagination,
  126. selectedRowKeys:[]
  127. });
  128. }.bind(this),
  129. }).always(function() {
  130. this.setState({
  131. loading: false
  132. });
  133. }.bind(this));
  134. },
  135. getInitialState() {
  136. return {
  137. page:1,
  138. releaseDate: [],
  139. selectedRowKeys: [],
  140. orgCodeUrl:[],
  141. customerArr:[],
  142. applicationUrl:[],
  143. contractUrl:[],
  144. pagination: {
  145. defaultCurrent: 1,
  146. defaultPageSize: 10,
  147. showQuickJumper: true,
  148. pageSize: 10,
  149. onChange: function(page) {
  150. this.loadData(page);
  151. }.bind(this),
  152. showTotal: function(total) {
  153. return '共' + total + '条数据';
  154. }
  155. },
  156. columns: [
  157. {
  158. title: '退单编号',
  159. dataIndex: 'id',
  160. key: 'id'
  161. },{
  162. title: '退单日期',
  163. dataIndex: 'createDate',
  164. key: 'createDate'
  165. }, {
  166. title: '客户名称',
  167. dataIndex: 'userName',
  168. key: 'userName',
  169. render:(text)=>{
  170. return (text&&text.length>9?text.substr(0,9)+'...':text)
  171. }
  172. },{
  173. title: '订单编号',
  174. dataIndex: 'orderNo',
  175. key: 'orderNo'
  176. },{
  177. title: '订单状态',
  178. dataIndex: 'orderStatus',
  179. key: 'orderStatus',
  180. render:text=>{return getNewOrderStatus(text)}
  181. },{
  182. title: '结算状态',
  183. dataIndex: 'liquidationStatus',
  184. key: 'liquidationStatus',
  185. render:text=>{return getLiquidationStatus(text)}
  186. }, {
  187. title: '退单状态',
  188. dataIndex: 'refundStatus',
  189. key: 'refundStatus',
  190. render:text=>{return getRefundStatus(text)}
  191. },{
  192. title: '退单原因',
  193. dataIndex: 'reason',
  194. key: 'reason',
  195. render:(text)=>{
  196. return (text&&text.length>18?text.substr(0,18)+'...':text)
  197. }
  198. }, {
  199. title: '操作',
  200. dataIndex: 'abc',
  201. key: 'abc',
  202. render: (text, record, index) => {
  203. return <div>
  204. <Button onClick={(e) =>{ e.stopPropagation(), this.visit(record)}} type="primary">{this.state.refundStatus==2?'修改退单申请':'查看退款申请'}</Button>
  205. </div>
  206. }
  207. }
  208. ],
  209. data: [],
  210. dataSource: [],
  211. columnsX: [
  212. {
  213. title: '业务项目名称',
  214. dataIndex: 'commodityName',
  215. key: 'commodityName'
  216. }, {
  217. title: '项目类别',
  218. dataIndex: 'cname',
  219. key: 'cname',
  220. },{
  221. title: '项目数量',
  222. dataIndex: 'commodityQuantity',
  223. key: 'commodityQuantity'
  224. }, {
  225. title: '金额(万元)',
  226. dataIndex: 'commodityPrice',
  227. key: 'commodityPrice'
  228. }, {
  229. title: '负责人',
  230. dataIndex: 'contacts',
  231. key: 'contacts'
  232. }, {
  233. title: '负责人电话',
  234. dataIndex: 'contactsMobile',
  235. key: 'contactsMobile'
  236. }, {
  237. title: '主要项目',
  238. dataIndex: 'main',
  239. key: 'main',
  240. render:(text)=>{
  241. return (text?'是':'否')
  242. }
  243. }, {
  244. title: '项目说明',
  245. dataIndex: 'taskComment',
  246. key: 'taskComment',
  247. render:(text)=>{
  248. return (text&&text.length>8?text.substr(0,8)+'…':text)
  249. }
  250. }
  251. ],
  252. columnsrizhi:[
  253. {
  254. title:'流程',
  255. dataIndex: 'processName',
  256. key: 'processName'
  257. },
  258. {
  259. title:'操作人',
  260. dataIndex: 'adminName',
  261. key: 'adminName'
  262. },{
  263. title:'时间',
  264. dataIndex: 'createDate',
  265. key: 'createDate'
  266. }
  267. ],
  268. dataSourceX: [],
  269. ContactsLists: [{
  270. title: '催款科目',
  271. dataIndex: 'dunSubject',
  272. key: 'dunSubject',
  273. render: text=>{return getjiedian(text)}
  274. },{
  275. title: '金额(万)',
  276. dataIndex: 'money',
  277. key: 'money',
  278. }, {
  279. title: '催款状态',
  280. dataIndex: 'dunStatus',
  281. key: 'dunStatus',
  282. render:text=>{return getCuikuan(text)}
  283. },
  284. ],
  285. };
  286. },
  287. //进入新增拜访记录
  288. visit(record) {
  289. this.setState({
  290. addnextVisible:true,
  291. })
  292. this.tuidanxiangqing(record.id);
  293. },
  294. //退单详情
  295. tuidanxiangqing(id) {
  296. this.setState({
  297. loading: true
  298. });
  299. $.ajax({
  300. method: "get",
  301. dataType: "json",
  302. crossDomain: false,
  303. url: globalConfig.context + "/api/admin/newOrder/orderRefundDetail",
  304. data: {
  305. id:id
  306. }
  307. }).done(function (data) {
  308. let theArr = [];
  309. if(data.error.length || data.data.list == "") {
  310. if(data.error && data.error.length) {
  311. message.warning(data.error[0].message);
  312. };
  313. } else {
  314. let thisdata=data.data;
  315. this.setState({
  316. id:thisdata.id,
  317. createDate:thisdata.createDate,//退单时间
  318. orderNo: thisdata.orderNo,//订单编号
  319. orderStatus: thisdata.orderStatus,//订单状态
  320. refundStatus:thisdata.refundStatus,//退单状态
  321. applicationUrl:thisdata.applicationUrl?splitUrl(thisdata.applicationUrl, ',', globalConfig.avatarHost + '/upload') : [],//申请表附件
  322. contractUrl:thisdata.contractUrl?splitUrl(thisdata.contractUrl, ',', globalConfig.avatarHost + '/upload') : [],//合同附件
  323. reason:thisdata.reason,//退单原因
  324. liquidationStatus:thisdata.liquidationStatus,//结算状态
  325. })
  326. this.setState({
  327. loading: false
  328. });
  329. };
  330. }.bind(this));
  331. },
  332. //点击确认退单
  333. tuidanOk(){
  334. let contractUrls = [];
  335. let applicationUrls = [];
  336. if (this.state.contractUrl.length) {
  337. let picArr = [];
  338. this.state.contractUrl.map(function (item) {
  339. if ( item.response && item.response.data && item.response.data.length ){
  340. picArr.push(item.response.data);
  341. }
  342. });
  343. contractUrls = picArr.join(",");
  344. };
  345. if (this.state.applicationUrl.length) {
  346. let picArr = [];
  347. this.state.applicationUrl.map(function (item) {
  348. if ( item.response && item.response.data && item.response.data.length ){
  349. picArr.push(item.response.data);
  350. }
  351. });
  352. applicationUrls = picArr.join(",");
  353. };
  354. $.ajax({
  355. method: "POST",
  356. dataType: "json",
  357. crossDomain: false,
  358. url: globalConfig.context +'/api/admin/newOrder/updateOrderRefund' ,
  359. data: {
  360. id:this.state.id,//订单编号
  361. contractUrl:contractUrls.length?contractUrls:'',//终止合同
  362. applicationUrl:applicationUrls.length?applicationUrls:'',//退单申请表
  363. reason:this.state.reason,//退单原因
  364. }
  365. }).done(function(data) {
  366. this.setState({
  367. loading: false
  368. });
  369. if(!data.error.length) {
  370. message.success('退单成功!');
  371. this.nextCancel();
  372. this.handleCancel();
  373. } else {
  374. message.warning(data.error[0].message);
  375. }
  376. }.bind(this));
  377. },
  378. //页面加载函数
  379. componentWillMount() {
  380. this.loadData();
  381. },
  382. //整行点击
  383. tableRowClick(record, index) {
  384. this.setState({
  385. visible:true,
  386. });
  387. this.xiangqing(record.orderNo);
  388. this.xiangmu(record.orderNo);
  389. this.jiedian(record.orderNo);
  390. },
  391. rizhi(){
  392. console.log(this.state.orderNo)
  393. this.setState({
  394. loading:true
  395. })
  396. $.ajax({
  397. method: "get",
  398. dataType: "json",
  399. crossDomain: false,
  400. url: '/api/admin/newOrder/selectOrderLog',
  401. data: {
  402. orderNo:this.state.orderNo
  403. },
  404. success: function (data) {
  405. let theArr = [];
  406. let thisData = data.data;
  407. if (!thisData.length) {
  408. if (data.error && data.error.length) {
  409. message.warning(data.error[0].message);
  410. };
  411. thisData = {};
  412. }else{
  413. for(let i = 0; i < data.data.length; i++) {
  414. let thisdata = data.data[i];
  415. theArr.push({
  416. processName:thisdata.processName,
  417. adminName:thisdata.adminName,
  418. createDate:thisdata.createDate,
  419. });
  420. };
  421. };
  422. this.setState({
  423. dataSourcerizhi: theArr
  424. })
  425. }.bind(this),
  426. }).always(function () {
  427. this.setState({
  428. loading: false
  429. });
  430. }.bind(this));
  431. },
  432. //查看订单日志
  433. getOrderLog(){
  434. this.setState({
  435. rizhivisible:true
  436. })
  437. this.rizhi()
  438. },
  439. closeOrderLog(){
  440. this.setState({
  441. rizhivisible:false
  442. })
  443. },
  444. //详情关闭
  445. nextCancel() {
  446. this.setState({
  447. addnextVisible: false
  448. })
  449. this.resets();
  450. },
  451. //订单详情
  452. xiangqing(orderNos) {
  453. $.ajax({
  454. method: "get",
  455. dataType: "json",
  456. crossDomain: false,
  457. url: globalConfig.context +"/api/admin/newOrder/getOrderNewDetail",
  458. data: {
  459. orderNo:orderNos
  460. },
  461. success: function(data) {
  462. let theArr = [];
  463. if(data.error.length || data.data.list == "") {
  464. if(data.error && data.error.length) {
  465. message.warning(data.error[0].message);
  466. };
  467. } else {
  468. let thisdata=data.data;
  469. this.setState({
  470. id:thisdata.id,
  471. kehuId:thisdata.buyerId,
  472. orderNo: thisdata.orderNo,//订单编号
  473. contractNo: thisdata.contractNo,//合同编号
  474. userName:thisdata.userName,//客户名称
  475. signDate:thisdata.signDate,//签单时间
  476. processStatus:thisdata.processStatus,//流程状态
  477. liquidationStatus:thisdata.liquidationStatus,//结算状态
  478. contacts:thisdata.contacts,//企业联系人
  479. contactMobile:thisdata.contactMobile,//联系人电话
  480. legalPerson:thisdata.legalPerson,//法人
  481. legalPersonTel:thisdata.legalPersonTel,//法人电话
  482. firstAmount:thisdata.firstAmount,//签单金额
  483. totalAmount:thisdata.totalAmount,//首付金额
  484. settlementAmount:thisdata.settlementAmount,//已收款项
  485. orderRemarks:thisdata.orderRemarks,//订单留言
  486. orgCodeUrl: thisdata.contractPictureUrl ? splitUrl(thisdata.contractPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
  487. salesmanName:thisdata.salesmanName,//营销员名称
  488. salesmanMobile:thisdata.salesmanMobile,//营销员电话
  489. financeName:thisdata.financeName,//财务名称
  490. financeMobile:thisdata.financeMobile,//财务电话
  491. approval:thisdata.approval.toString(),//特批状态
  492. //approval:thisdata.approval==0?thisdata.approval.toString():thisdata.approval,//特批状态
  493. })
  494. };
  495. }.bind(this),
  496. }).always(function() {
  497. this.setState({
  498. loading: false
  499. });
  500. }.bind(this));
  501. },
  502. //项目列表
  503. xiangmu(orderNos) {
  504. $.ajax({
  505. method: "get",
  506. dataType: "json",
  507. crossDomain: false,
  508. url: globalConfig.context +"/api/admin/newOrder/getOrderTask",
  509. data: {
  510. orderNo:orderNos
  511. },
  512. success: function(data) {
  513. let theArr = [];
  514. if(data.error.length || data.data.list == "") {
  515. if(data.error && data.error.length) {
  516. message.warning(data.error[0].message);
  517. };
  518. } else {
  519. for (let i = 0; i < data.data.length; i++) {
  520. let thisdata = data.data[i];
  521. theArr.push({
  522. key: i,
  523. id:thisdata.id,
  524. orderNo:thisdata.orderNo,//订单编号
  525. commodityId:thisdata.commodityId,//项目ID
  526. commodityName:thisdata.commodityName,//项目名称
  527. cname:thisdata.cname,//项目类别
  528. commodityPrice:thisdata.commodityPrice,//项目价格
  529. commodityQuantity:thisdata.commodityQuantity,//项目数量
  530. main:thisdata.main,//是否为主要任务
  531. taskComment:thisdata.taskComment,//任务说明
  532. contacts:thisdata.contacts,//联系人
  533. contactsMobile:thisdata.contactsMobile,//联系人电话
  534. });
  535. };
  536. };
  537. this.setState({
  538. dataSourceX: theArr,
  539. paginations: false,
  540. });
  541. }.bind(this),
  542. }).always(function() {
  543. this.setState({
  544. loading: false
  545. });
  546. }.bind(this));
  547. },
  548. //节点列表
  549. jiedian(orderNos) {
  550. $.ajax({
  551. method: "get",
  552. dataType: "json",
  553. crossDomain: false,
  554. url: globalConfig.context +"/api/admin/newOrder/selectOrderDun",
  555. data: {
  556. orderNo:orderNos
  557. },
  558. success: function(data) {
  559. let theArr = [];
  560. let thisData=[];
  561. if(data.error.length || data.data.list == "") {
  562. if(data.error && data.error.length) {
  563. message.warning(data.error[0].message);
  564. };
  565. } else {
  566. for(let i = 0; i < data.data.length; i++) {
  567. thisData= data.data[i];
  568. theArr.push({
  569. key:i,
  570. dunSubject:thisData.dunSubject?thisData.dunSubject.toString():"",//催款科目
  571. id:thisData.id,//节点Id
  572. money:thisData.money,//催款金额
  573. dunStatus:thisData.dunStatus,//催款状态
  574. orderNo:thisData.orderNo,
  575. })
  576. }
  577. this.setState({
  578. contactList:theArr
  579. })
  580. };
  581. }.bind(this),
  582. }).always(function() {
  583. this.setState({
  584. loading: false
  585. });
  586. }.bind(this));
  587. },
  588. resets(){
  589. this.state.orderNo='';
  590. this.state.customerName='';
  591. this.state.releaseDate[0] = undefined;
  592. this.state.releaseDate[1] = undefined;
  593. },
  594. reset(){
  595. this.state.orderNo='';
  596. this.state.customerName='';
  597. this.state.releaseDate[0] = undefined;
  598. this.state.releaseDate[1] = undefined;
  599. this.loadData();
  600. },
  601. //搜索
  602. search() {
  603. this.setState({
  604. //signBillVisible:false
  605. })
  606. this.loadData();
  607. },
  608. getOrgCodeUrl(e) {
  609. this.setState({ orgCodeUrl: e });
  610. },
  611. //关闭详情
  612. visitCancel(e){
  613. this.setState({
  614. visible:false
  615. })
  616. this.resets();
  617. },
  618. visitOk(e){
  619. this.setState({
  620. visible:false
  621. })
  622. this.resets();
  623. },
  624. render() {
  625. const formItemLayout = {
  626. labelCol: { span: 8 },
  627. wrapperCol: { span: 14 },
  628. };
  629. const FormItem = Form.Item;
  630. const { RangePicker } = DatePicker;
  631. const rowSelection = {
  632. selectedRowKeys: this.state.selectedRowKeys,
  633. onChange: (selectedRowKeys, selectedRows) => {
  634. this.setState({
  635. modalVisible:false,
  636. selectedRows: selectedRows.slice(-1),
  637. selectedRowKeys: selectedRowKeys.slice(-1)
  638. });
  639. },
  640. onSelect: (recordt, selected, selectedRows) => {
  641. this.setState({
  642. modalVisible:false,
  643. recordt: recordt.id
  644. })
  645. },
  646. };
  647. const dataSources=this.state.customerArr || [];
  648. const options = this.state.states?dataSources.map((group,index) =>
  649. <Select.Option key={group.id} value={group.name}>{group.name}</Select.Option>
  650. ):dataSources.map((group,index) =>
  651. <Select.Option key={index} value={group.bname}>{group.bname}</Select.Option>
  652. )
  653. const hasSelected = this.state.selectedRowKeys.length > 0;
  654. return(
  655. <div className="user-content">
  656. <div className="content-title">
  657. <span>退单管理</span>
  658. </div>
  659. <div className="user-search">
  660. <Input placeholder="客户名称" style={{width:'150px',marginBottom:'10px'}}
  661. value={this.state.customerName}
  662. onChange={(e) => { this.setState({ customerName: e.target.value }); }} />
  663. <Input placeholder="订单编号" style={{width:'150px'}}
  664. value={this.state.orderNo}
  665. onChange={(e) => { this.setState({ orderNo: e.target.value }); }} />
  666. <span style={{marginRight:"10px"}}>下单时间 :</span>
  667. <RangePicker
  668. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  669. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  670. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  671. <Button type="primary" onClick={this.search} style={{marginLeft:'10px'}}>搜索</Button>
  672. <Button onClick={this.reset}>重置</Button>
  673. <div className="patent-table">
  674. <Spin spinning={this.state.loading}>
  675. <Table columns={this.state.columns}
  676. dataSource={this.state.dataSource}
  677. rowSelection={rowSelection}
  678. pagination={this.state.pagination}
  679. onRowClick={this.tableRowClick}
  680. />
  681. </Spin>
  682. </div>
  683. <Modal
  684. className="customeDetails"
  685. footer=''
  686. title="订单详情"
  687. width='900px'
  688. visible={this.state.visible}
  689. onOk={this.visitOk}
  690. onCancel={this.visitCancel}
  691. >
  692. <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'40px'}} >
  693. <Spin spinning={this.state.loading}>
  694. <div className="clearfix">
  695. <FormItem className="half-item"
  696. {...formItemLayout}
  697. label="订单编号" >
  698. <span>{this.state.orderNo}</span>
  699. </FormItem>
  700. <FormItem className="half-item"
  701. {...formItemLayout}
  702. label="合同编号" >
  703. <span>{this.state.contractNo}</span>
  704. </FormItem>
  705. <FormItem className="half-item"
  706. {...formItemLayout}
  707. label="客户名称" >
  708. <span>{this.state.userName}</span>
  709. </FormItem>
  710. <FormItem className="half-item"
  711. {...formItemLayout}
  712. label="合同签订时间" >
  713. <span>{this.state.signDate}</span>
  714. </FormItem>
  715. <FormItem className="half-item"
  716. {...formItemLayout}
  717. label="流程状态" >
  718. <span>{getProcessStatus(this.state.processStatus)}</span>
  719. </FormItem>
  720. <FormItem className="half-item"
  721. {...formItemLayout}
  722. label="结算状态" >
  723. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  724. </FormItem>
  725. <FormItem className="half-item"
  726. {...formItemLayout}
  727. label="企业联系人" >
  728. <span>{this.state.contacts}</span>
  729. </FormItem>
  730. <FormItem className="half-item"
  731. {...formItemLayout}
  732. label="联系人电话" >
  733. <span>{this.state.contactMobile}</span>
  734. </FormItem>
  735. <FormItem className="half-item"
  736. {...formItemLayout}
  737. label="企业法人" >
  738. <span>{this.state.legalPerson}</span>
  739. </FormItem>
  740. <FormItem className="half-item"
  741. {...formItemLayout}
  742. label="法人电话" >
  743. <span>{this.state.legalPersonTel}</span>
  744. </FormItem>
  745. <FormItem className="half-item"
  746. {...formItemLayout}
  747. label="签单金额(万元)" >
  748. <span>{this.state.firstAmount}</span>
  749. </FormItem>
  750. <FormItem className="half-item"
  751. {...formItemLayout}
  752. label="首付金额(万元)" >
  753. <span>{this.state.totalAmount}</span>
  754. </FormItem>
  755. <FormItem className="half-item"
  756. {...formItemLayout}
  757. label="特批立项" >
  758. <span>{getApprovedState(this.state.approval)}</span>
  759. </FormItem>
  760. <FormItem className="half-item"
  761. {...formItemLayout}
  762. label="已收款项(万元)" >
  763. <span>{this.state.settlementAmount}</span>
  764. </FormItem>
  765. <div className='clearfix'>
  766. <FormItem
  767. labelCol={{ span: 4 }}
  768. wrapperCol={{ span: 16 }}
  769. label="订单留言" >
  770. <span>{this.state.orderRemarks}</span>
  771. </FormItem>
  772. </div>
  773. <div className='clearfix'>
  774. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="合同扫描件">
  775. <Upload className="demandDetailShow-upload"
  776. listType="picture-card"
  777. fileList={this.state.orgCodeUrl}
  778. onPreview={(file) => {
  779. this.setState({
  780. previewImage: file.url || file.thumbUrl,
  781. previewVisible: true,
  782. });
  783. }} >
  784. </Upload>
  785. <Modal maskClosable={false} footer={null}
  786. visible={this.state.previewVisible}
  787. onCancel={() => { this.setState({ previewVisible: false }) }}>
  788. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  789. </Modal>
  790. <Button style={{ float:"right" , marginRight:'140px' , marginTop:'20px'}}
  791. onClick={this.getOrderLog}
  792. >查看订单 日志</Button>
  793. </FormItem>
  794. </div>
  795. <div className='clearfix'>
  796. <FormItem className="half-item"
  797. {...formItemLayout}
  798. label="订单负责人" >
  799. <span>{this.state.salesmanName}</span>
  800. </FormItem>
  801. <FormItem className="half-item"
  802. {...formItemLayout}
  803. label="订单负责人电话" >
  804. <span>{this.state.salesmanMobile}</span>
  805. </FormItem>
  806. </div>
  807. <div className='clearfix'>
  808. <FormItem className="half-item"
  809. {...formItemLayout}
  810. label="财务负责人" >
  811. <span>{this.state.financeName}</span>
  812. </FormItem>
  813. <FormItem className="half-item"
  814. {...formItemLayout}
  815. label="财务负责人电话" >
  816. <span>{this.state.financeMobile}</span>
  817. </FormItem>
  818. </div>
  819. <div>
  820. <span style={{marginLeft:'50px',fontSize:'20px'}}>催款节点</span>
  821. </div>
  822. <div className="clearfix">
  823. <Spin spinning={this.state.loading}>
  824. <Form layout="horizontal" id="demand-form" >
  825. <Table
  826. pagination={false}
  827. columns={this.state.ContactsLists}
  828. dataSource={this.state.contactList}
  829. />
  830. <Col span={24} offset={9} style={{marginTop:'15px'}}>
  831. </Col>
  832. </Form>
  833. </Spin>
  834. </div>
  835. <div>
  836. <span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
  837. </div>
  838. <div className="patent-table">
  839. <Spin spinning={this.state.loading}>
  840. <Table columns={this.state.columnsX}
  841. dataSource={this.state.dataSourceX}
  842. pagination={this.state.paginations}
  843. />
  844. </Spin>
  845. </div>
  846. </div>
  847. </Spin>
  848. </Form>
  849. </Modal>
  850. <Modal maskClosable={false} visible={this.state.addnextVisible}
  851. onOk={this.nextCancel} onCancel={this.nextCancel}
  852. width='800px'
  853. title={this.state.refundStatus==2?'修改退单申请':'退单详情'}
  854. footer=''
  855. className="admin-desc-content">
  856. <Form layout="horizontal" id="demand-form">
  857. <Spin spinning={this.state.loading}>
  858. <div className='clearfix'>
  859. <FormItem className="half-item"
  860. {...formItemLayout}
  861. label="退单编号" >
  862. <span>{this.state.id}</span>
  863. </FormItem>
  864. <FormItem className="half-item"
  865. {...formItemLayout}
  866. label="退单日期" >
  867. <span>{this.state.createDate}</span>
  868. </FormItem>
  869. <FormItem className="half-item"
  870. {...formItemLayout}
  871. label="订单编号" >
  872. <span>{this.state.orderNo}</span>
  873. </FormItem>
  874. <FormItem className="half-item"
  875. {...formItemLayout}
  876. label="订单状态" >
  877. <span>{getNewOrderStatus(this.state.orderStatus)}</span>
  878. </FormItem>
  879. <FormItem className="half-item"
  880. {...formItemLayout}
  881. label="退单状态" >
  882. <span>{getRefundStatus(this.state.refundStatus)}</span>
  883. </FormItem>
  884. <FormItem className="half-item"
  885. {...formItemLayout}
  886. label="退款状态" >
  887. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  888. </FormItem>
  889. <div className='clearfix'>
  890. {this.state.refundStatus==2?<FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="终止合同">
  891. <Picture
  892. fileList={(e)=>{this.setState({contractUrl:e})}}
  893. pictureUrl={this.state.contractUrl}
  894. visible={this.props.visible}
  895. data={{'sign':'order_refund_file',url:'/api/admin/newOrder/uploadRefundOrderFile',number:8}}
  896. />
  897. </FormItem>:
  898. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="合同扫描件">
  899. <Upload className="demandDetailShow-upload"
  900. listType="picture-card"
  901. fileList={this.state.orgCodeUrl}
  902. onPreview={(file) => {
  903. this.setState({
  904. previewImage: file.url || file.thumbUrl,
  905. previewVisible: true,
  906. });
  907. }} >
  908. </Upload>
  909. <Modal maskClosable={false} footer={null}
  910. visible={this.state.previewVisible}
  911. onCancel={() => { this.setState({ previewVisible: false }) }}>
  912. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  913. </Modal>
  914. </FormItem>}
  915. </div>
  916. <div className='clearfix'>
  917. <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="退单申请表">
  918. <Upload className="demandDetailShow-upload"
  919. listType="picture-card"
  920. fileList={this.state.orgCodeUrl}
  921. onPreview={(file) => {
  922. this.setState({
  923. previewImage: file.url || file.thumbUrl,
  924. previewVisible: true,
  925. });
  926. }} >
  927. </Upload>
  928. </FormItem>
  929. </div>
  930. <div className='clearfix'>
  931. <FormItem
  932. labelCol={{ span: 4 }}
  933. wrapperCol={{ span: 16 }}
  934. label="退单理由" >
  935. {this.state.refundStatus==2?
  936. <Input type="textarea" placeholder="请输入退单理由" rows={4} value={this.state.reason}
  937. onChange={(e)=>{this.setState({reason:e.target.value})}}/>:<span>{this.state.reason}</span> }
  938. </FormItem>
  939. </div>
  940. {this.state.refundStatus==2?
  941. <FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle">
  942. <Button className="submitSave" type="primary" onClick={this.tuidanOk}>重新退单</Button>
  943. <Button className="submitSave" type="ghost" onClick={this.nextCancel}>取消</Button>
  944. </FormItem>:''}
  945. </div>
  946. </Spin>
  947. </Form >
  948. </Modal>
  949. <Modal visible={this.state.rizhivisible}
  950. className="admin-desc-content"
  951. width='800px'
  952. maskClosable={false}
  953. title='订单日志'
  954. footer={null}
  955. onCancel={this.closeOrderLog}>
  956. <div className="patent-table">
  957. <Spin spinning={this.state.loading}>
  958. <Table columns={this.state.columnsrizhi}
  959. dataSource={this.state.dataSourcerizhi}
  960. pagination={false}
  961. />
  962. </Spin>
  963. </div>
  964. </Modal>
  965. </div>
  966. </div>
  967. );
  968. }
  969. }));
  970. export default IntentionCustomer;