followUpDetails.jsx 41 KB

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