details.jsx 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. import React,{Component} from "react";
  2. import {Button, Form, message, Modal, Spin, Table, Tag} from "antd";
  3. import OrderItemStatus from "../../../../common/orderItemStatus";
  4. import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
  5. import {
  6. getApprovedState,
  7. getCuikuan,
  8. getjiedian,
  9. getLiquidationStatus,
  10. getProcessStatus,
  11. splitUrl
  12. } from "../../../../tools";
  13. import ImgList from "../../../../common/imgList";
  14. import $ from "jquery/src/ajax";
  15. import ProjectDetailsReadOnly from "../../../../common/projectDetailsReadOnly";
  16. import OrderRiZi from "@/orderRiZi.jsx";
  17. const FormItem = Form.Item;
  18. const formItemLayout = {
  19. labelCol: { span: 8 },
  20. wrapperCol: { span: 14 },
  21. };
  22. class Details extends Component{
  23. constructor(props) {
  24. super(props);
  25. this.state={
  26. loading:false,
  27. columnsX: [
  28. {
  29. title: "业务项目名称",
  30. dataIndex: "commodityName",
  31. key: "commodityName",
  32. render: (text, record) => {
  33. return text + "-" + record.id
  34. }
  35. },
  36. {
  37. title: "项目类别",
  38. dataIndex: "cname",
  39. key: "cname",
  40. },
  41. {
  42. title: "项目数量",
  43. dataIndex: "commodityQuantity",
  44. key: "commodityQuantity",
  45. render: (text, record) => {
  46. if (record.splitStatus == 1) {
  47. return (
  48. <span>
  49. {text}{" "}
  50. <Tag
  51. color="#108ee9"
  52. onClick={(e) => {
  53. e.stopPropagation();
  54. this.showRes(record);
  55. }}
  56. >
  57. 已拆
  58. </Tag>
  59. </span>
  60. );
  61. } else {
  62. return text;
  63. }
  64. },
  65. },
  66. {
  67. title: "金额(万元)",
  68. dataIndex: "commodityPrice",
  69. key: "commodityPrice",
  70. },
  71. {
  72. title: "负责人",
  73. dataIndex: "contacts",
  74. key: "contacts",
  75. },
  76. {
  77. title: "负责人电话",
  78. dataIndex: "contactsMobile",
  79. key: "contactsMobile",
  80. },
  81. {
  82. title: "主要项目",
  83. dataIndex: "main",
  84. key: "main",
  85. render: (text) => {
  86. return text ? "是" : "否";
  87. },
  88. },
  89. {
  90. title: "项目说明",
  91. dataIndex: "taskComment",
  92. key: "taskComment",
  93. render: (text) => {
  94. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  95. },
  96. },
  97. ],
  98. ContactsListsNew: [
  99. {
  100. title: "项目名称",
  101. dataIndex: "commodityName",
  102. key: "commodityName",
  103. render: (text, record) => {
  104. return <span>{text + "-" + record.tid}</span>;
  105. },
  106. },
  107. {
  108. title: "项目分类",
  109. dataIndex: "projectType",
  110. key: "projectType",
  111. render: (text) => {
  112. let arr = this.state.dataSourceX || [];
  113. let str = "";
  114. for (let i = 0; i < arr.length; i++) {
  115. if (this.state.dataSourceX[i].sort == text) {
  116. str = this.state.dataSourceX[i].cname;
  117. return <span>{str}</span>;
  118. }
  119. }
  120. },
  121. },
  122. {
  123. title: "催款科目",
  124. dataIndex: "dunTypeName",
  125. key: "dunTypeName",
  126. render: (text, record) => {
  127. if (record.customizeName) {
  128. return text + record.customizeName;
  129. }
  130. return <span>{text}</span>;
  131. },
  132. },
  133. {
  134. title: "时间(天)",
  135. dataIndex: "waitDay",
  136. key: "waitDay",
  137. render: (text, record) => {
  138. if (record.dunTypeName) {
  139. if (record.customizeTimes) {
  140. return record.customizeTimes;
  141. }
  142. return <span>{text}</span>;
  143. }
  144. },
  145. },
  146. {
  147. title: "金额(万元)",
  148. dataIndex: "money",
  149. key: "money",
  150. render: (text, record) => {
  151. if (record.dunTypeName) {
  152. if (record.appropriationRatio) {
  153. return <span>{record.appropriationRatio}(拨款比例)</span>;
  154. } else {
  155. return <span>{text}</span>;
  156. }
  157. }
  158. },
  159. },
  160. {
  161. title: "服务年限",
  162. dataIndex: "startDate",
  163. key: "startDate",
  164. render: (text, record) => {
  165. if (record.dunTypeName) {
  166. return <span>{text}</span>;
  167. }
  168. },
  169. },
  170. {
  171. title: "催款状态",
  172. dataIndex: "status",
  173. key: "status",
  174. render: (text) => {
  175. return <span>{text == 1 ? "已启动" : "未启动"}</span>;
  176. },
  177. },
  178. ],
  179. ContactsLists: [
  180. {
  181. title: "催款科目",
  182. dataIndex: "dunSubject",
  183. key: "dunSubject",
  184. render: (text) => {
  185. return getjiedian(text);
  186. },
  187. },
  188. {
  189. title: "金额(万元)",
  190. dataIndex: "money",
  191. key: "money",
  192. },
  193. {
  194. title: "催款状态",
  195. dataIndex: "dunStatus",
  196. key: "dunStatus",
  197. render: (text) => {
  198. return getCuikuan(text);
  199. },
  200. },
  201. ],
  202. dataSourceX:[],
  203. contactList:[],
  204. dataInfor:{},
  205. totalCui:'',
  206. dataSourcerizhi:[]
  207. }
  208. this.xiangqing = this.xiangqing.bind(this);
  209. this.xiangmu = this.xiangmu.bind(this);
  210. this.nextCancel = this.nextCancel.bind(this);
  211. this.jiedianNew = this.jiedianNew.bind(this);
  212. this.jiedian = this.jiedian.bind(this);
  213. this.tableRowClickX = this.tableRowClickX.bind(this);
  214. this.getOrderLog = this.getOrderLog.bind(this);
  215. this.closeOrderLog = this.closeOrderLog.bind(this);
  216. this.rizhi = this.rizhi.bind(this);
  217. }
  218. componentDidMount() {
  219. this.xiangqing();
  220. this.xiangmu();
  221. this.jiedian();
  222. this.jiedianNew();
  223. }
  224. //订单详情
  225. xiangqing() {
  226. this.setState({
  227. loading: true,
  228. });
  229. $.ajax({
  230. method: "get",
  231. dataType: "json",
  232. crossDomain: false,
  233. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  234. data: {
  235. orderNo: this.props.orderNo,
  236. },
  237. success: function (data) {
  238. if(data.error.length){
  239. message.warning(data.error[0].message);
  240. }else{
  241. let thisdata = data.data;
  242. this.setState({
  243. orderUid: thisdata.uid,
  244. orderNo: thisdata.orderNo, //订单编号
  245. contractNo: thisdata.contractNo, //合同编号
  246. userName: thisdata.userName, //客户名称
  247. signDate: thisdata.signDate, //签单时间
  248. processStatus: thisdata.processStatus, //流程状态
  249. liquidationStatus: thisdata.liquidationStatus, //结算状态
  250. contacts: thisdata.contacts, //企业联系人
  251. contactMobile: thisdata.contactMobile, //联系人电话
  252. legalPerson: thisdata.legalPerson, //法人
  253. legalPersonTel: thisdata.legalPersonTel, //法人电话
  254. firstAmount: thisdata.firstAmount, //签单金额
  255. totalAmount: thisdata.totalAmount, //首付金额
  256. approval: thisdata.approval, //特批状态
  257. settlementAmount: thisdata.settlementAmount, //已收款项
  258. orderRemarks: thisdata.orderRemarks, //订单留言
  259. orgCodeUrl: thisdata.contractPictureUrl
  260. ? splitUrl(
  261. thisdata.contractPictureUrl,
  262. ",",
  263. globalConfig.avatarHost + "/upload"
  264. )
  265. : [], //图片地址
  266. replenishUrl: thisdata.agreementUrl
  267. ? splitUrl(
  268. thisdata.agreementUrl,
  269. ",",
  270. globalConfig.avatarHost + "/upload"
  271. )
  272. : [], //图片地址
  273. salesmanName: thisdata.salesmanName, //营销员名称
  274. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  275. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  276. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  277. financeName: thisdata.financeName, //财务名称
  278. financeMobile: thisdata.financeMobile, //财务电话
  279. nowFinance: thisdata.nowFinance, //财务名称
  280. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  281. depName: thisdata.depName,
  282. outsource: thisdata.outsource == 0 ? "否" : "是",
  283. deleteSign:thisdata.deleteSign,
  284. });
  285. }
  286. }.bind(this),
  287. }).always(
  288. function () {
  289. this.setState({
  290. loading: false,
  291. });
  292. }.bind(this)
  293. );
  294. }
  295. //项目列表
  296. xiangmu() {
  297. this.setState({
  298. xiangmuLoading: true,
  299. });
  300. $.ajax({
  301. method: "get",
  302. dataType: "json",
  303. crossDomain: false,
  304. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  305. data: {
  306. orderNo: this.props.orderNo,
  307. },
  308. success: function (data) {
  309. let theArr = [];
  310. if (data.error.length || data.data.list == "") {
  311. if (data.error && data.error.length) {
  312. message.warning(data.error[0].message);
  313. }
  314. } else {
  315. for (let i = 0; i < data.data.length; i++) {
  316. let thisdata = data.data[i];
  317. thisdata.key = i;
  318. thisdata.sort = thisdata.cSort;
  319. theArr.push(thisdata);
  320. }
  321. }
  322. this.setState({
  323. dataSourceX: theArr,
  324. });
  325. }.bind(this),
  326. }).always(
  327. function () {
  328. this.setState({
  329. xiangmuLoading: false,
  330. });
  331. }.bind(this)
  332. );
  333. }
  334. //点击打卡项目详情
  335. tableRowClickX(record) {
  336. this.setState({
  337. addnextVisible: true,
  338. dataInfor:record,
  339. });
  340. }
  341. //项目详情关闭
  342. nextCancel() {
  343. this.setState({
  344. addnextVisible: false,
  345. dataInfor:{},
  346. });
  347. }
  348. //节点列表
  349. jiedian() {
  350. this.setState({
  351. jiedianLoading: true,
  352. });
  353. $.ajax({
  354. method: "get",
  355. dataType: "json",
  356. crossDomain: false,
  357. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  358. data: {
  359. orderNo: this.props.orderNo,
  360. },
  361. success: function (data) {
  362. let theArr = [];
  363. let thisData = [];
  364. if (data.error.length || data.data.list == "") {
  365. if (data.error && data.error.length) {
  366. message.warning(data.error[0].message);
  367. }
  368. } else {
  369. for (let i = 0; i < data.data.length; i++) {
  370. thisData = data.data[i];
  371. theArr.push({
  372. key: i,
  373. dunSubject: thisData.dunSubject
  374. ? thisData.dunSubject.toString()
  375. : "", //催款科目
  376. id: thisData.id, //节点Id
  377. money: thisData.money, //催款金额
  378. dunStatus: thisData.dunStatus, //催款状态
  379. });
  380. }
  381. this.setState({
  382. contactList: theArr,
  383. });
  384. }
  385. }.bind(this),
  386. }).always(
  387. function () {
  388. this.setState({
  389. jiedianLoading: false,
  390. });
  391. }.bind(this)
  392. );
  393. }
  394. //查看催款节点
  395. jiedianNew() {
  396. this.setState({
  397. jiedianNewLoading: true,
  398. });
  399. $.ajax({
  400. method: "get",
  401. dataType: "json",
  402. crossDomain: false,
  403. url:
  404. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  405. data: {
  406. orderNo: this.props.orderNo,
  407. },
  408. success: function (data) {
  409. if (data.error && data.error.length) {
  410. message.warning(data.error[0].message);
  411. } else {
  412. let theArr = [];
  413. let thisData = [];
  414. let arr = data.data || [];
  415. let totalCui = 0;
  416. for (let i = 0; i < arr.length; i++) {
  417. thisData = arr[i];
  418. totalCui += +thisData.money;
  419. theArr.push({
  420. key: i,
  421. dunSubject: thisData.dunSubject
  422. ? thisData.dunSubject.toString()
  423. : "", //催款科目
  424. id: thisData.id, //节点Id
  425. money: thisData.money, //催款金额
  426. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  427. commodityName: thisData.commodityName,
  428. projectType: thisData.projectType,
  429. dunTypeName: thisData.dunTypeName,
  430. status: thisData.status,
  431. waitDay: thisData.waitDay,
  432. effectiveCount: thisData.effectiveCount,
  433. startDate: thisData.startDate,
  434. dunType: thisData.dunType,
  435. appropriationRatio: thisData.appropriationRatio,
  436. customizeName: thisData.customizeName,
  437. customizeTimes: thisData.customizeTimes,
  438. tid: thisData.tid,
  439. });
  440. }
  441. if (!totalCui) {
  442. totalCui = 0;
  443. }
  444. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  445. this.setState({
  446. contactListNew: theArr,
  447. totalCui,
  448. });
  449. }
  450. }.bind(this),
  451. }).always(
  452. function () {
  453. this.setState({
  454. jiedianNewLoading: false,
  455. });
  456. }.bind(this)
  457. );
  458. }
  459. //查看订单日志
  460. getOrderLog() {
  461. this.setState({
  462. rizhivisible: true,
  463. });
  464. this.rizhi();
  465. }
  466. closeOrderLog() {
  467. this.setState({
  468. rizhivisible: false,
  469. dataSourcerizhi:[]
  470. });
  471. }
  472. rizhi() {
  473. this.setState({
  474. rizhiLoading: true,
  475. });
  476. $.ajax({
  477. method: "get",
  478. dataType: "json",
  479. crossDomain: false,
  480. url: "/api/admin/newOrder/selectOrderLog",
  481. data: {
  482. orderNo: this.props.orderNo,
  483. },
  484. success: function (data) {
  485. let theArr = [];
  486. let thisData = data.data;
  487. if (!thisData.length) {
  488. if (data.error && data.error.length) {
  489. message.warning(data.error[0].message);
  490. }
  491. } else {
  492. for (let i = 0; i < data.data.length; i++) {
  493. let thisdata = data.data[i];
  494. theArr.push({
  495. processName: thisdata.processName,
  496. adminName: thisdata.adminName,
  497. createDate: thisdata.createDate,
  498. remarks: thisdata.remarks,
  499. });
  500. }
  501. }
  502. this.setState({
  503. dataSourcerizhi: theArr,
  504. });
  505. }.bind(this),
  506. }).always(
  507. function () {
  508. this.setState({
  509. rizhiLoading: false,
  510. });
  511. }.bind(this)
  512. );
  513. }
  514. render() {
  515. return (
  516. <Modal
  517. className="customeDetails"
  518. footer=""
  519. title="订单详情"
  520. width="900px"
  521. visible={this.props.visible}
  522. onOk={this.props.onCancel}
  523. onCancel={this.props.onCancel}
  524. >
  525. <Form layout="horizontal" id="demand-form" style={{ paddingBottom: "40px" }}>
  526. <Spin spinning={this.state.loading}>
  527. <div className="clearfix">
  528. <div style={{position:"absolute",top:'-52px',left:'81px',zIndex:10000}}>
  529. <OrderItemStatus deleteSign={this.state.deleteSign}/>
  530. </div>
  531. <FormItem
  532. className="half-item"
  533. {...formItemLayout}
  534. label="订单编号"
  535. >
  536. <span>{this.state.orderNo}</span>
  537. </FormItem>
  538. <FormItem
  539. className="half-item"
  540. {...formItemLayout}
  541. label="合同编号"
  542. >
  543. <span>{this.state.contractNo}</span>
  544. </FormItem>
  545. <FormItem
  546. className="half-item"
  547. {...formItemLayout}
  548. label="客户名称"
  549. >
  550. <span>{this.state.userName}</span>
  551. <EnterpriseNameChange
  552. type='journal'
  553. style={{ marginLeft: 10 }}
  554. enterpriseId={this.state.orderUid}/>
  555. </FormItem>
  556. <FormItem
  557. className="half-item"
  558. {...formItemLayout}
  559. label="合同签订时间"
  560. >
  561. <span>{this.state.signDate}</span>
  562. </FormItem>
  563. <FormItem
  564. className="half-item"
  565. {...formItemLayout}
  566. label="流程状态"
  567. >
  568. <span>{getProcessStatus(this.state.processStatus)}</span>
  569. </FormItem>
  570. <FormItem
  571. className="half-item"
  572. {...formItemLayout}
  573. label="结算状态"
  574. >
  575. <span>
  576. {getLiquidationStatus(this.state.liquidationStatus)}
  577. </span>
  578. </FormItem>
  579. <FormItem
  580. className="half-item"
  581. {...formItemLayout}
  582. label="企业联系人"
  583. >
  584. <span>{this.state.contacts}</span>
  585. </FormItem>
  586. <FormItem
  587. className="half-item"
  588. {...formItemLayout}
  589. label="联系人电话"
  590. >
  591. <span>{this.state.contactMobile}</span>
  592. </FormItem>
  593. <FormItem
  594. className="half-item"
  595. {...formItemLayout}
  596. label="企业法人"
  597. >
  598. <span>{this.state.legalPerson}</span>
  599. </FormItem>
  600. <FormItem
  601. className="half-item"
  602. {...formItemLayout}
  603. label="法人电话"
  604. >
  605. <span>{this.state.legalPersonTel}</span>
  606. </FormItem>
  607. <FormItem
  608. className="half-item"
  609. {...formItemLayout}
  610. label="签单金额(万元)"
  611. >
  612. <span>{this.state.totalAmount}</span>
  613. </FormItem>
  614. <FormItem
  615. className="half-item"
  616. {...formItemLayout}
  617. label="首付金额(万元)"
  618. >
  619. <span>{this.state.firstAmount}</span>
  620. </FormItem>
  621. <FormItem
  622. className="half-item"
  623. {...formItemLayout}
  624. label="特批立项"
  625. >
  626. <span>{getApprovedState(this.state.approval)}</span>
  627. </FormItem>
  628. <FormItem
  629. className="half-item"
  630. {...formItemLayout}
  631. label="已收款项(万元)"
  632. >
  633. <span>{this.state.settlementAmount}</span>
  634. </FormItem>
  635. <FormItem
  636. className="half-item"
  637. {...formItemLayout}
  638. label="订单部门"
  639. >
  640. <span>{this.state.depName}</span>
  641. </FormItem>
  642. <FormItem
  643. className="half-item"
  644. {...formItemLayout}
  645. label="是否外包"
  646. >
  647. {this.state.outsource}
  648. </FormItem>
  649. <div className="clearfix">
  650. <FormItem
  651. labelCol={{ span: 4 }}
  652. wrapperCol={{ span: 16 }}
  653. label="订单留言"
  654. >
  655. <span>{this.state.orderRemarks}</span>
  656. </FormItem>
  657. </div>
  658. <div className="clearfix">
  659. <FormItem
  660. labelCol={{ span: 4 }}
  661. wrapperCol={{ span: 18 }}
  662. label={"合同扫描件"}
  663. >
  664. <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
  665. {this.props.visible && this.state.orgCodeUrl ? <ImgList fileList={this.state.orgCodeUrl} ItemWidth={'96px'}/> : <div/>}
  666. </div>
  667. <Button
  668. style={{
  669. float: "right",
  670. marginRight: "140px",
  671. marginTop: "20px",
  672. }}
  673. onClick={this.getOrderLog}
  674. >
  675. 查看订单 日志
  676. </Button>
  677. </FormItem>
  678. <FormItem
  679. labelCol={{ span: 4 }}
  680. wrapperCol={{ span: 18 }}
  681. label="补充协议"
  682. >
  683. <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
  684. {this.props.visible && this.state.replenishUrl ? <ImgList domId={'inquiry1'} fileList={this.state.replenishUrl} ItemWidth={'96px'}/> : <div/>}
  685. </div>
  686. </FormItem>
  687. </div>
  688. <div className="clearfix">
  689. <FormItem
  690. className="half-item"
  691. {...formItemLayout}
  692. label="订单负责人"
  693. >
  694. <span>{this.state.salesmanName}</span>
  695. </FormItem>
  696. <FormItem
  697. className="half-item"
  698. {...formItemLayout}
  699. label="订单负责人电话"
  700. >
  701. <span>{this.state.salesmanMobile}</span>
  702. </FormItem>
  703. </div>
  704. <div className="clearfix">
  705. <FormItem
  706. className="half-item"
  707. {...formItemLayout}
  708. label="当前财务负责人"
  709. >
  710. <span>{this.state.nowFinance}</span>
  711. </FormItem>
  712. <FormItem
  713. className="half-item"
  714. {...formItemLayout}
  715. label="当前财务负责人电话"
  716. >
  717. <span>{this.state.nowFinanceMobile}</span>
  718. </FormItem>
  719. </div>
  720. <div className="clearfix">
  721. <FormItem
  722. className="half-item"
  723. {...formItemLayout}
  724. style={{ opacity: ".5" }}
  725. label="原订单负责人"
  726. >
  727. <span>{this.state.oldSalesmanName}</span>
  728. </FormItem>
  729. <FormItem
  730. className="half-item"
  731. {...formItemLayout}
  732. style={{ opacity: ".5" }}
  733. label="原订单负责人电话"
  734. >
  735. <span>{this.state.oldSalesmanMobile}</span>
  736. </FormItem>
  737. </div>
  738. <div className="clearfix">
  739. <FormItem
  740. className="half-item"
  741. style={{ opacity: ".5" }}
  742. {...formItemLayout}
  743. label="实际财务操作人"
  744. >
  745. <span>{this.state.financeName}</span>
  746. </FormItem>
  747. <FormItem
  748. className="half-item"
  749. {...formItemLayout}
  750. style={{ opacity: ".5" }}
  751. label="实际财务操作人电话"
  752. >
  753. <span>{this.state.financeMobile}</span>
  754. </FormItem>
  755. </div>
  756. <div>
  757. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  758. 项目业务
  759. </span>
  760. </div>
  761. <div className="patent-table">
  762. <Spin spinning={this.state.xiangmuLoading}>
  763. <Table
  764. columns={this.state.columnsX}
  765. dataSource={this.state.dataSourceX}
  766. pagination={false}
  767. onRowClick={this.tableRowClickX}
  768. bordered
  769. size="small"
  770. />
  771. </Spin>
  772. </div>
  773. <div>
  774. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  775. 催款节点
  776. </span>
  777. <span
  778. style={{
  779. display: this.state.contactList.length ? "none" : "inline-block",
  780. marginLeft: 10,
  781. color: "red",
  782. }}
  783. >
  784. 金额总计(万元): {this.state.totalCui}
  785. </span>
  786. </div>
  787. <div className="clearfix">
  788. <Spin spinning={
  789. this.state.contactList.length ?
  790. this.state.jiedianLoading :
  791. this.state.jiedianNewLoading
  792. }>
  793. <Form layout="horizontal" id="demand-form">
  794. <Table
  795. pagination={false}
  796. bordered
  797. size="small"
  798. columns={
  799. this.state.contactList.length
  800. ? this.state.ContactsLists
  801. : this.state.ContactsListsNew
  802. }
  803. dataSource={
  804. this.state.contactList.length
  805. ? this.state.contactList
  806. : this.state.contactListNew
  807. }
  808. />
  809. </Form>
  810. </Spin>
  811. </div>
  812. </div>
  813. </Spin>
  814. </Form>
  815. <OrderRiZi
  816. dataSourcerizhi={this.state.dataSourcerizhi}
  817. closeOrderLog={this.closeOrderLog}
  818. visible={this.state.rizhivisible}
  819. loading={this.state.rizhiLoading}
  820. />
  821. {this.state.addnextVisible && <ProjectDetailsReadOnly
  822. infor={this.state.dataInfor}
  823. visible={this.state.addnextVisible}
  824. onCancel={this.nextCancel}
  825. />}
  826. </Modal>
  827. )
  828. }
  829. }
  830. export default Details;