followUpDetails.jsx 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930
  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 NewEditProject from "../../../common/projectOperation/newEditProject";
  16. import CustomerServiceRecord from './customerServiceRecord';
  17. import OrderItemStatus from "../../../common/orderItemStatus";
  18. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  19. import OrderCoor from "../../order/orderNew/changeComponent/orderCoor";
  20. import ContentUrl from "../../order/orderNew/contentUrl";
  21. const FormItem = Form.Item;
  22. const { TabPane } = Tabs;
  23. const formItemLayout = {
  24. labelCol: { span: 8 },
  25. wrapperCol: { span: 14 },
  26. };
  27. class FollowUpDetails extends Component {
  28. constructor(props) {
  29. super(props);
  30. this.state = {
  31. loading: false,
  32. columnsX: [
  33. {
  34. title: "业务项目名称",
  35. dataIndex: "commodityName",
  36. key: "commodityName",
  37. render: (text, record) => {
  38. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}</span>
  39. }
  40. },
  41. {
  42. title: "项目类别",
  43. dataIndex: "cname",
  44. key: "cname",
  45. },
  46. {
  47. title: "项目数量",
  48. dataIndex: "commodityQuantity",
  49. key: "commodityQuantity",
  50. render: (text, record) => {
  51. if (record.splitStatus == 1) {
  52. return (
  53. <span>
  54. {text}{" "}
  55. <Tag
  56. color="#108ee9"
  57. onClick={(e) => {
  58. e.stopPropagation();
  59. this.showRes(record);
  60. }}
  61. >
  62. 已拆
  63. </Tag>
  64. </span>
  65. );
  66. } else {
  67. return text;
  68. }
  69. },
  70. },
  71. {
  72. title: "金额(万元)",
  73. dataIndex: "commodityPrice",
  74. key: "commodityPrice",
  75. },
  76. {
  77. title: "负责人",
  78. dataIndex: "contacts",
  79. key: "contacts",
  80. },
  81. {
  82. title: "负责人电话",
  83. dataIndex: "contactsMobile",
  84. key: "contactsMobile",
  85. },
  86. {
  87. title: "主要项目",
  88. dataIndex: "main",
  89. key: "main",
  90. width: 50,
  91. render: (text) => {
  92. return text ? "是" : "否";
  93. },
  94. },
  95. {
  96. title: "总年限",
  97. dataIndex: "yearSum",
  98. key: "yearSum",
  99. render: (text, record) => {
  100. return (
  101. <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
  102. );
  103. }
  104. },
  105. {
  106. title: "年限",
  107. dataIndex: "serviceLife",
  108. key: "serviceLife",
  109. render: (text, record) => {
  110. return (
  111. <div>{!!text && JSON.parse(text).toString()}</div>
  112. );
  113. }
  114. },
  115. {
  116. title: "本次派单",
  117. dataIndex: "serviceYear",
  118. key: "serviceYear",
  119. render: (text, record) => {
  120. return (
  121. <div>{!text ? "" : text}</div>
  122. );
  123. }
  124. },
  125. {
  126. title: "项目说明",
  127. dataIndex: "taskComment",
  128. key: "taskComment",
  129. render: (text) => {
  130. return (
  131. <Tooltip title={text}>
  132. <div
  133. style={{
  134. width: 100,
  135. overflow: "hidden",
  136. whiteSpace: "nowrap",
  137. textOverflow: "ellipsis",
  138. }}
  139. >{text}</div>
  140. </Tooltip>
  141. )
  142. },
  143. },
  144. ],
  145. dataSourceX: [],
  146. contactList: [],
  147. ContactsListsNew: [
  148. {
  149. title: "项目名称",
  150. dataIndex: "commodityName",
  151. key: "commodityName",
  152. render: (text, record) => {
  153. return <span>{text + "-" + record.tid}</span>;
  154. },
  155. },
  156. {
  157. title: "项目分类",
  158. dataIndex: "projectType",
  159. key: "projectType",
  160. render: (text) => {
  161. let arr = this.state.dataSourceX || [];
  162. let str = "";
  163. for (let i = 0; i < arr.length; i++) {
  164. if (this.state.dataSourceX[i].sort == text) {
  165. str = this.state.dataSourceX[i].cname;
  166. return <span>{str}</span>;
  167. }
  168. }
  169. },
  170. },
  171. {
  172. title: "催款科目",
  173. dataIndex: "dunTypeName",
  174. key: "dunTypeName",
  175. render: (text, record) => {
  176. if (record.customizeName) {
  177. return text + record.customizeName;
  178. }
  179. return <span>{text}</span>;
  180. },
  181. },
  182. {
  183. title: "时间(天)",
  184. dataIndex: "waitDay",
  185. key: "waitDay",
  186. render: (text, record) => {
  187. if (record.dunTypeName) {
  188. if (record.customizeTimes) {
  189. return record.customizeTimes;
  190. }
  191. return <span>{text}</span>;
  192. }
  193. },
  194. },
  195. {
  196. title: "金额(万元)",
  197. dataIndex: "money",
  198. key: "money",
  199. render: (text, record) => {
  200. if (record.dunTypeName) {
  201. if (record.appropriationRatio) {
  202. let percent = Number(record.appropriationRatio * 100).toFixed(2);
  203. percent += "%";
  204. return <span>{percent}(拨款比例)</span>;
  205. } else {
  206. return <span>{text}</span>;
  207. }
  208. }
  209. },
  210. },
  211. {
  212. title: "服务年限",
  213. dataIndex: "startDate",
  214. key: "startDate",
  215. render: (text, record) => {
  216. if (record.dunTypeName) {
  217. return <span>{text}</span>;
  218. }
  219. },
  220. },
  221. {
  222. title: "催款状态",
  223. dataIndex: "status",
  224. key: "status",
  225. render: (text) => {
  226. return <span>{text == 1 ? "已启动" : "未启动"}</span>;
  227. },
  228. },
  229. ],
  230. ContactsLists: [
  231. {
  232. title: "催款科目",
  233. dataIndex: "dunSubject",
  234. key: "dunSubject",
  235. render: (text) => {
  236. return getjiedian(text);
  237. },
  238. },
  239. {
  240. title: "金额(万元)",
  241. dataIndex: "money",
  242. key: "money",
  243. },
  244. {
  245. title: "催款状态",
  246. dataIndex: "dunStatus",
  247. key: "dunStatus",
  248. render: (text) => {
  249. return getCuikuan(text);
  250. },
  251. },
  252. ],
  253. tabsKey: '1',
  254. dataSourcerizhi: [],
  255. }
  256. this.jiedian = this.jiedian.bind(this);
  257. this.jiedianNew = this.jiedianNew.bind(this);
  258. this.xiangqing = this.xiangqing.bind(this);
  259. this.rizhi = this.rizhi.bind(this);
  260. this.closeOrderLog = this.closeOrderLog.bind(this);
  261. this.tableRowClickX = this.tableRowClickX.bind(this);
  262. this.nextCancel = this.nextCancel.bind(this);
  263. this.rizhi = this.rizhi.bind(this);
  264. this.getOrderLog = this.getOrderLog.bind(this);
  265. this.xiangmu = this.xiangmu.bind(this);
  266. }
  267. componentDidMount() {
  268. this.xiangqing();
  269. this.jiedian();
  270. this.jiedianNew();
  271. this.xiangmu();
  272. }
  273. getOrderLog() {
  274. this.setState({
  275. rizhivisible: true,
  276. });
  277. this.rizhi();
  278. }
  279. closeOrderLog() {
  280. this.setState({
  281. rizhivisible: false,
  282. dataSourcerizhi: [],
  283. });
  284. }
  285. tableRowClickX(record) {
  286. this.setState({
  287. addnextVisible: true,
  288. dataInfor: record,
  289. });
  290. }
  291. nextCancel() {
  292. this.setState({
  293. addnextVisible: false,
  294. dataInfor: {}
  295. });
  296. }
  297. rizhi() {
  298. this.setState({
  299. selectOrderLogLoading: true,
  300. });
  301. $.ajax({
  302. method: "get",
  303. dataType: "json",
  304. crossDomain: false,
  305. url: "/api/admin/newOrder/selectOrderLog",
  306. data: {
  307. orderNo: this.props.orderNo,
  308. },
  309. success: function (data) {
  310. let theArr = [];
  311. let thisData = data.data;
  312. if (!thisData.length) {
  313. if (data.error && data.error.length) {
  314. message.warning(data.error[0].message);
  315. }
  316. } else {
  317. for (let i = 0; i < data.data.length; i++) {
  318. let thisdata = data.data[i];
  319. theArr.push({
  320. processName: thisdata.processName,
  321. adminName: thisdata.adminName,
  322. createDate: thisdata.createDate,
  323. remarks: thisdata.remarks,
  324. });
  325. }
  326. }
  327. this.setState({
  328. dataSourcerizhi: theArr,
  329. });
  330. }.bind(this),
  331. }).always(
  332. function () {
  333. this.setState({
  334. selectOrderLogLoading: false,
  335. });
  336. }.bind(this)
  337. );
  338. }
  339. jiedian() {
  340. $.ajax({
  341. method: "get",
  342. dataType: "json",
  343. crossDomain: false,
  344. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  345. data: {
  346. orderNo: this.props.orderNo,
  347. },
  348. success: function (data) {
  349. let theArr = [];
  350. let thisData = [];
  351. if (data.error.length || data.data.list == "") {
  352. if (data.error && data.error.length) {
  353. message.warning(data.error[0].message);
  354. }
  355. } else {
  356. for (let i = 0; i < data.data.length; i++) {
  357. thisData = data.data[i];
  358. theArr.push({
  359. key: i,
  360. dunSubject: thisData.dunSubject
  361. ? thisData.dunSubject.toString()
  362. : "", //催款科目
  363. id: thisData.id, //节点Id
  364. money: thisData.money, //催款金额
  365. dunStatus: thisData.dunStatus, //催款状态
  366. });
  367. }
  368. this.setState({
  369. contactList: theArr,
  370. });
  371. }
  372. }.bind(this),
  373. }).always(
  374. function () {
  375. }.bind(this)
  376. );
  377. }
  378. //查看催款节点
  379. jiedianNew() {
  380. this.setState({
  381. newOrderDunLoading: true,
  382. });
  383. $.ajax({
  384. method: "get",
  385. dataType: "json",
  386. crossDomain: false,
  387. url:
  388. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  389. data: {
  390. orderNo: this.props.orderNo,
  391. },
  392. success: function (data) {
  393. if (data.error && data.error.length) {
  394. message.warning(data.error[0].message);
  395. } else {
  396. let theArr = [];
  397. let thisData = [];
  398. let arr = data.data || [];
  399. let totalCui = 0;
  400. for (let i = 0; i < arr.length; i++) {
  401. thisData = arr[i];
  402. totalCui += +thisData.money;
  403. theArr.push({
  404. key: i,
  405. dunSubject: thisData.dunSubject
  406. ? thisData.dunSubject.toString()
  407. : "", //催款科目
  408. id: thisData.id, //节点Id
  409. money: thisData.money, //催款金额
  410. commodityName: thisData.commodityName,
  411. projectType: thisData.projectType,
  412. dunTypeName: thisData.dunTypeName,
  413. status: thisData.status,
  414. waitDay: thisData.waitDay,
  415. effectiveCount: thisData.effectiveCount,
  416. startDate: thisData.startDate,
  417. dunType: thisData.dunType,
  418. appropriationRatio: thisData.appropriationRatio,
  419. customizeName: thisData.customizeName,
  420. customizeTimes: thisData.customizeTimes,
  421. tid: thisData.tid,
  422. });
  423. }
  424. if (!totalCui) {
  425. totalCui = 0;
  426. }
  427. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  428. this.setState({
  429. contactListNew: theArr,
  430. totalCui,
  431. });
  432. }
  433. }.bind(this),
  434. }).always(
  435. function () {
  436. this.setState({
  437. newOrderDunLoading: false,
  438. });
  439. }.bind(this)
  440. );
  441. }
  442. xiangqing() {
  443. this.setState({
  444. loading: true,
  445. });
  446. $.ajax({
  447. method: "get",
  448. dataType: "json",
  449. crossDomain: false,
  450. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  451. data: {
  452. orderNo: this.props.orderNo,
  453. },
  454. success: function (data) {
  455. if (data.error.length || data.data.list == "") {
  456. if (data.error && data.error.length) {
  457. message.warning(data.error[0].message);
  458. }
  459. } else {
  460. let thisdata = data.data;
  461. this.setState({
  462. orderUid: thisdata.uid,
  463. orderNo: thisdata.orderNo, //订单编号
  464. contractNo: thisdata.contractNo, //合同编号
  465. userName: thisdata.userName, //客户名称
  466. signDate: thisdata.signDate, //签单时间
  467. examineName: thisdata.examineName,
  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, this.state.examineName, this.state.approval)}</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={2}
  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. {
  900. // 项目业务详情
  901. this.state.addnextVisible &&
  902. <NewEditProject
  903. readOnly={true}
  904. visible={this.state.addnextVisible}
  905. dataInfor={this.state.dataInfor}
  906. onCancel={this.nextCancel}
  907. />
  908. }
  909. </div>
  910. </Modal>
  911. )
  912. }
  913. }
  914. export default FollowUpDetails;