followUpDetails.jsx 43 KB

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