followUpDetails.jsx 39 KB

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