followUpDetails.jsx 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929
  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. processStatus: thisdata.processStatus, //流程状态
  468. liquidationStatus: thisdata.liquidationStatus, //结算状态
  469. contacts: thisdata.contacts, //企业联系人
  470. contactMobile: thisdata.contactMobile, //联系人电话
  471. legalPerson: thisdata.legalPerson, //法人
  472. legalPersonTel: thisdata.legalPersonTel, //法人电话
  473. firstAmount: thisdata.firstAmount, //签单金额
  474. totalAmount: thisdata.totalAmount, //首付金额
  475. approval: thisdata.approval, //特批状态
  476. settlementAmount: thisdata.settlementAmount, //已收款项
  477. orderRemarks: thisdata.orderRemarks, //订单留言
  478. orgCodeUrl: thisdata.contractPictureUrl
  479. ? splitUrl(
  480. thisdata.contractPictureUrl,
  481. ",",
  482. globalConfig.avatarHost + "/upload"
  483. )
  484. : [], //图片地址
  485. replenishUrl: thisdata.agreementUrl
  486. ? splitUrl(
  487. thisdata.agreementUrl,
  488. ",",
  489. globalConfig.avatarHost + "/upload"
  490. )
  491. : [], //图片地址
  492. contentUrl: thisdata.serviceContent
  493. ? splitUrl(
  494. thisdata.serviceContent,
  495. ",",
  496. globalConfig.avatarHost + "/upload"
  497. )
  498. : [], //图片地址
  499. salesmanName: thisdata.salesmanName, //营销员名称
  500. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  501. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  502. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  503. financeName: thisdata.financeName, //财务名称
  504. financeMobile: thisdata.financeMobile, //财务电话
  505. nowFinance: thisdata.nowFinance, //财务名称
  506. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  507. depName: thisdata.depName,
  508. outsource: thisdata.outsource == 0 ? "否" : "是",
  509. deleteSign: thisdata.deleteSign,
  510. });
  511. }
  512. }.bind(this),
  513. }).always(
  514. function () {
  515. this.setState({
  516. loading: false,
  517. });
  518. }.bind(this)
  519. );
  520. }
  521. xiangmu() {
  522. this.setState({
  523. orderTaskLoading: true
  524. })
  525. $.ajax({
  526. method: "get",
  527. dataType: "json",
  528. crossDomain: false,
  529. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  530. data: {
  531. orderNo: this.props.orderNo,
  532. },
  533. success: function (data) {
  534. let theArr = [];
  535. if (data.error.length || data.data.list == "") {
  536. if (data.error && data.error.length) {
  537. message.warning(data.error[0].message);
  538. }
  539. } else {
  540. for (let i = 0; i < data.data.length; i++) {
  541. let thisdata = data.data[i];
  542. thisdata.key = i;
  543. theArr.push(thisdata);
  544. }
  545. this.setState({
  546. dataSourceX: theArr,
  547. });
  548. }
  549. }.bind(this),
  550. }).always(
  551. function () {
  552. this.setState({
  553. orderTaskLoading: false,
  554. });
  555. }.bind(this)
  556. );
  557. }
  558. render() {
  559. return (
  560. <Modal
  561. className="customeDetails"
  562. footer=""
  563. title={null}
  564. width="1200px"
  565. maskClosable={false}
  566. visible={this.props.visible}
  567. onOk={this.props.onCancel}
  568. onCancel={this.props.onCancel}
  569. >
  570. <div>
  571. <Tabs
  572. defaultActiveKey="1"
  573. className="test"
  574. activeKey={this.state.tabsKey}
  575. onChange={(e) => { this.setState({ tabsKey: e }) }}
  576. tabBarExtraContent={
  577. <div style={{ fontWeight: 'bold', paddingRight: '15px' }}>
  578. <OrderItemStatus deleteSign={this.state.deleteSign} />
  579. </div>
  580. }
  581. >
  582. <TabPane tab="订单详情" key="1">
  583. <Form
  584. layout="horizontal"
  585. id="demand-form"
  586. style={{ paddingBottom: "40px" }}
  587. >
  588. <Spin spinning={this.state.loading}>
  589. <div className="clearfix">
  590. <FormItem
  591. className="half-item"
  592. {...formItemLayout}
  593. label="订单编号"
  594. >
  595. <span>{this.state.orderNo}</span>
  596. </FormItem>
  597. <FormItem
  598. className="half-item"
  599. {...formItemLayout}
  600. label="合同编号"
  601. >
  602. <span>{this.state.contractNo}</span>
  603. </FormItem>
  604. <FormItem
  605. className="half-item"
  606. {...formItemLayout}
  607. label="客户名称"
  608. >
  609. <span>{this.state.userName}</span>
  610. <EnterpriseNameChange
  611. type='journal'
  612. style={{ marginLeft: 10 }}
  613. enterpriseId={this.state.orderUid} />
  614. </FormItem>
  615. <FormItem
  616. className="half-item"
  617. {...formItemLayout}
  618. label="下单时间"
  619. >
  620. <span>{this.state.signDate}</span>
  621. </FormItem>
  622. <FormItem
  623. className="half-item"
  624. {...formItemLayout}
  625. label="流程状态"
  626. >
  627. <span>{getProcessStatus(this.state.processStatus)}</span>
  628. </FormItem>
  629. <FormItem
  630. className="half-item"
  631. {...formItemLayout}
  632. label="结算状态"
  633. >
  634. <span>
  635. {getLiquidationStatus(this.state.liquidationStatus)}
  636. </span>
  637. </FormItem>
  638. <FormItem
  639. className="half-item"
  640. {...formItemLayout}
  641. label="企业联系人"
  642. >
  643. <span>{this.state.contacts}</span>
  644. </FormItem>
  645. <FormItem
  646. className="half-item"
  647. {...formItemLayout}
  648. label="联系人电话"
  649. >
  650. <span>{this.state.contactMobile}</span>
  651. </FormItem>
  652. <FormItem
  653. className="half-item"
  654. {...formItemLayout}
  655. label="企业法人"
  656. >
  657. <span>{this.state.legalPerson}</span>
  658. </FormItem>
  659. <FormItem
  660. className="half-item"
  661. {...formItemLayout}
  662. label="法人电话"
  663. >
  664. <span>{this.state.legalPersonTel}</span>
  665. </FormItem>
  666. <FormItem
  667. className="half-item"
  668. {...formItemLayout}
  669. label="签单金额(万元)"
  670. >
  671. <span>{this.state.totalAmount}</span>
  672. </FormItem>
  673. <FormItem
  674. className="half-item"
  675. {...formItemLayout}
  676. label="首付金额(万元)"
  677. >
  678. <span>{this.state.firstAmount}</span>
  679. </FormItem>
  680. <FormItem
  681. className="half-item"
  682. {...formItemLayout}
  683. label="特批立项"
  684. >
  685. <span>{getApprovedState(this.state.approval)}</span>
  686. </FormItem>
  687. <FormItem
  688. className="half-item"
  689. {...formItemLayout}
  690. label="已收款项(万元)"
  691. >
  692. <span>{this.state.settlementAmount}</span>
  693. </FormItem>
  694. <FormItem
  695. className="half-item"
  696. {...formItemLayout}
  697. label="订单部门"
  698. >
  699. <span>{this.state.depName}</span>
  700. </FormItem>
  701. <FormItem
  702. className="half-item"
  703. {...formItemLayout}
  704. label="是否外包"
  705. >
  706. {this.state.outsource}
  707. </FormItem>
  708. <div className="clearfix">
  709. <FormItem
  710. labelCol={{ span: 4 }}
  711. wrapperCol={{ span: 16 }}
  712. label="订单留言"
  713. >
  714. <span>{this.state.orderRemarks}</span>
  715. </FormItem>
  716. </div>
  717. <div className="clearfix">
  718. <FormItem
  719. labelCol={{ span: 4 }}
  720. wrapperCol={{ span: 18 }}
  721. label={"合同扫描件"}
  722. >
  723. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  724. {this.props.visible && this.state.orgCodeUrl ? <ImgList fileList={this.state.orgCodeUrl} ItemWidth={'96px'} /> : <div />}
  725. </div>
  726. <Button
  727. style={{
  728. float: "right",
  729. marginRight: "140px",
  730. marginTop: "20px",
  731. }}
  732. onClick={this.getOrderLog}
  733. >
  734. 查看订单 日志
  735. </Button>
  736. </FormItem>
  737. <FormItem
  738. labelCol={{ span: 4 }}
  739. wrapperCol={{ span: 18 }}
  740. label="补充协议"
  741. >
  742. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  743. {this.props.visible && this.state.replenishUrl ? <ImgList domId={'inquiry1'} fileList={this.state.replenishUrl} ItemWidth={'96px'} /> : <div />}
  744. </div>
  745. </FormItem>
  746. </div>
  747. <ContentUrl
  748. processStatus={1}
  749. domId={"followContent"}
  750. contentUrl={this.state.contentUrl}
  751. imgId={"followContentImg"}
  752. />
  753. <div className="clearfix">
  754. <FormItem
  755. className="half-item"
  756. {...formItemLayout}
  757. label="订单负责人"
  758. >
  759. <span>{this.state.salesmanName}</span>
  760. </FormItem>
  761. <FormItem
  762. className="half-item"
  763. {...formItemLayout}
  764. label="订单负责人电话"
  765. >
  766. <span>{this.state.salesmanMobile}</span>
  767. </FormItem>
  768. </div>
  769. <div className="clearfix">
  770. <FormItem
  771. className="half-item"
  772. {...formItemLayout}
  773. label="当前财务负责人"
  774. >
  775. <span>{this.state.nowFinance}</span>
  776. </FormItem>
  777. <FormItem
  778. className="half-item"
  779. {...formItemLayout}
  780. label="当前财务负责人电话"
  781. >
  782. <span>{this.state.nowFinanceMobile}</span>
  783. </FormItem>
  784. </div>
  785. <div className="clearfix">
  786. <FormItem
  787. className="half-item"
  788. {...formItemLayout}
  789. style={{ opacity: ".5" }}
  790. label="原订单负责人"
  791. >
  792. <span>{this.state.oldSalesmanName}</span>
  793. </FormItem>
  794. <FormItem
  795. className="half-item"
  796. {...formItemLayout}
  797. style={{ opacity: ".5" }}
  798. label="原订单负责人电话"
  799. >
  800. <span>{this.state.oldSalesmanMobile}</span>
  801. </FormItem>
  802. </div>
  803. <div className="clearfix">
  804. <FormItem
  805. className="half-item"
  806. style={{ opacity: ".5" }}
  807. {...formItemLayout}
  808. label="实际财务操作人"
  809. >
  810. <span>{this.state.financeName}</span>
  811. </FormItem>
  812. <FormItem
  813. className="half-item"
  814. {...formItemLayout}
  815. style={{ opacity: ".5" }}
  816. label="实际财务操作人电话"
  817. >
  818. <span>{this.state.financeMobile}</span>
  819. </FormItem>
  820. </div>
  821. {/* 协作人员 */}
  822. <OrderCoor orderNo={this.props.orderNo} />
  823. <div>
  824. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  825. 项目业务
  826. </span>
  827. </div>
  828. <div className="patent-table">
  829. <Spin spinning={this.state.orderTaskLoading}>
  830. <Table
  831. columns={this.state.columnsX}
  832. dataSource={this.state.dataSourceX}
  833. pagination={false}
  834. onRowClick={this.tableRowClickX}
  835. bordered
  836. size="small"
  837. />
  838. </Spin>
  839. </div>
  840. <div>
  841. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  842. 催款节点
  843. </span>
  844. <span
  845. style={{
  846. display: this.state.contactList.length ? "none" : "inline-block",
  847. marginLeft: 10,
  848. color: "red",
  849. }}
  850. >
  851. 金额总计(万元): {this.state.totalCui}
  852. </span>
  853. </div>
  854. <div className="clearfix">
  855. <Spin spinning={this.state.newOrderDunLoading}>
  856. <Form layout="horizontal" id="demand-form">
  857. <Table
  858. pagination={false}
  859. bordered
  860. size="small"
  861. columns={
  862. this.state.ContactsListsNew
  863. }
  864. dataSource={
  865. this.state.contactListNew
  866. }
  867. />
  868. <Col
  869. span={24}
  870. offset={9}
  871. style={{ marginTop: "15px" }}
  872. />
  873. </Form>
  874. </Spin>
  875. </div>
  876. </div>
  877. </Spin>
  878. </Form>
  879. </TabPane>
  880. <TabPane tab="客服跟进详情" key="2">
  881. {this.state.tabsKey === '2' ? <CustomerServiceRecord
  882. orderNo={this.props.orderNo}
  883. uid={this.props.uid}
  884. /> : ''}
  885. </TabPane>
  886. </Tabs>
  887. <OrderRiZi
  888. dataSourcerizhi={this.state.dataSourcerizhi}
  889. closeOrderLog={this.closeOrderLog}
  890. visible={this.state.rizhivisible}
  891. loading={this.state.selectOrderLogLoading}
  892. />
  893. {/* {this.state.addnextVisible && <ProjectDetailsReadOnly
  894. infor={this.state.dataInfor}
  895. visible={this.state.addnextVisible}
  896. onCancel={this.nextCancel}
  897. />} */}
  898. {
  899. // 项目业务详情
  900. this.state.addnextVisible &&
  901. <NewEditProject
  902. readOnly={true}
  903. visible={this.state.addnextVisible}
  904. dataInfor={this.state.dataInfor}
  905. onCancel={this.nextCancel}
  906. />
  907. }
  908. </div>
  909. </Modal>
  910. )
  911. }
  912. }
  913. export default FollowUpDetails;