approveds.jsx 35 KB

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