followUpDetails.jsx 42 KB

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