orderDetail.jsx 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139
  1. import React from 'react';
  2. import $ from 'jquery/src/ajax';
  3. import {
  4. Modal,
  5. message,
  6. Spin,
  7. Upload,
  8. Button,
  9. Form,
  10. Table,
  11. Col,
  12. Tag,
  13. Tooltip
  14. } from 'antd';
  15. import {
  16. getjiedian,
  17. splitUrl,
  18. getNewOrderType,
  19. getProcessStatus,
  20. getApproval,
  21. getLiquidationStatus,
  22. getboutique,
  23. getCuikuan,
  24. } from "@/tools";
  25. import OrderRiZi from "@/orderRiZi.jsx";
  26. import ResolutionDetail from "@/resolutionDetail";
  27. import ImgList from "../../../common/imgList";
  28. import { getProjectName } from "../../../tools";
  29. import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  30. import OrderItemStatus from "../../../common/orderItemStatus";
  31. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  32. import OrderCoor from '../../order/orderNew/changeComponent/orderCoor';
  33. import ContentUrl from '../../order/orderNew/contentUrl';
  34. import { salesList } from "@/dataDic.js";
  35. const OrderDetail = Form.create()(
  36. React.createClass({
  37. loadXmu(record) {
  38. this.state.data = [];
  39. this.setState({
  40. loading: true,
  41. });
  42. $.ajax({
  43. method: "get",
  44. dataType: "json",
  45. crossDomain: false,
  46. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  47. data: {
  48. orderNo: record ? record.orderNo : this.props.data.orderNo,
  49. },
  50. success: function (data) {
  51. let theArr = [];
  52. if (!data.data) {
  53. if (data.error && data.error.length) {
  54. message.warning(data.error[0].message);
  55. }
  56. } else {
  57. for (let i = 0; i < data.data.length; i++) {
  58. let thisdata = data.data[i];
  59. thisdata.key = i;
  60. thisdata.sort = thisdata.cSort;
  61. theArr.push(thisdata);
  62. }
  63. }
  64. this.setState({
  65. dataSource: theArr,
  66. pagination: false,
  67. });
  68. }.bind(this),
  69. }).always(
  70. function () {
  71. this.setState({
  72. loading: false,
  73. });
  74. }.bind(this)
  75. );
  76. },
  77. getInitialState() {
  78. return {
  79. rotateDeg: 0,
  80. orderNos: '',
  81. visible: false,
  82. avisible: false,
  83. loading: false,
  84. declarationBatch: 1,
  85. dataInfor: {},
  86. addnextVisible: false,
  87. jsDate: [],
  88. replenishUrl: [],
  89. auditStatus: 0,
  90. textFileList: [],
  91. videoFileList: [],
  92. previewVisibles: false,
  93. pictureUrl: [],
  94. pictureUrlMin: [],
  95. columns: [
  96. {
  97. title: "业务项目名称",
  98. dataIndex: "commodityName",
  99. key: "commodityName",
  100. render: (text, record) => {
  101. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}</span>
  102. }
  103. },
  104. {
  105. title: "项目类别",
  106. dataIndex: "cname",
  107. key: "cname",
  108. },
  109. {
  110. title: "项目数量",
  111. dataIndex: "commodityQuantity",
  112. key: "commodityQuantity",
  113. width: 50,
  114. render: (text, record) => {
  115. if (record.splitStatus == 1) {
  116. return (
  117. <span>
  118. {text}{" "}
  119. <Tag
  120. color="#108ee9"
  121. onClick={(e) => {
  122. e.stopPropagation();
  123. this.showRes(record);
  124. }}
  125. >
  126. 已拆
  127. </Tag>
  128. </span>
  129. );
  130. } else {
  131. return text;
  132. }
  133. },
  134. },
  135. {
  136. title: "金额(万元)",
  137. dataIndex: "commodityPrice",
  138. key: "commodityPrice",
  139. width: 100,
  140. },
  141. {
  142. title: "负责人",
  143. dataIndex: "contacts",
  144. key: "contacts",
  145. },
  146. {
  147. title: "负责人电话",
  148. dataIndex: "contactsMobile",
  149. key: "contactsMobile",
  150. },
  151. {
  152. title: "项目状态",
  153. dataIndex: "projectStatus",
  154. key: "projectStatus",
  155. render: (text) => {
  156. return getProjectName(text);
  157. },
  158. },
  159. {
  160. title: "主要项目",
  161. dataIndex: "main",
  162. key: "main",
  163. width: 50,
  164. render: (text) => {
  165. return text ? "是" : "否";
  166. },
  167. },
  168. {
  169. title: "项目说明",
  170. dataIndex: "taskComment",
  171. key: "taskComment",
  172. width: 200,
  173. render: (text) => {
  174. return (
  175. <Tooltip title={text}>
  176. <div
  177. style={{
  178. width: 180,
  179. overflow: "hidden",
  180. whiteSpace: "nowrap",
  181. textOverflow: "ellipsis",
  182. }}
  183. >{text}</div>
  184. </Tooltip>
  185. )
  186. },
  187. },
  188. ],
  189. columnsX: [
  190. {
  191. title: "流程",
  192. dataIndex: "processName",
  193. key: "processName",
  194. },
  195. {
  196. title: "操作人",
  197. dataIndex: "adminName",
  198. key: "adminName",
  199. },
  200. {
  201. title: "时间",
  202. dataIndex: "createDate",
  203. key: "createDate",
  204. },
  205. ],
  206. ContactsListsNew: [
  207. {
  208. title: "项目名称",
  209. dataIndex: "commodityName",
  210. key: "commodityName",
  211. render: (text, record) => {
  212. return <span>{text + "-" + record.tid}</span>;
  213. },
  214. },
  215. {
  216. title: "项目分类",
  217. dataIndex: "projectType",
  218. key: "projectType",
  219. render: (text) => {
  220. let arr = this.state.dataSource || [];
  221. let str = "";
  222. for (let i = 0; i < arr.length; i++) {
  223. if (this.state.dataSource[i].sort == text) {
  224. str = this.state.dataSource[i].cname;
  225. return <span>{str}</span>;
  226. }
  227. }
  228. },
  229. },
  230. {
  231. title: "催款科目",
  232. dataIndex: "dunTypeName",
  233. key: "dunTypeName",
  234. render: (text, record) => {
  235. if (record.customizeName) {
  236. return text + record.customizeName;
  237. }
  238. return <span>{text}</span>;
  239. },
  240. },
  241. {
  242. title: "时间(天)",
  243. dataIndex: "waitDay",
  244. key: "waitDay",
  245. render: (text, record) => {
  246. if (record.dunTypeName) {
  247. if (record.customizeTimes) {
  248. return record.customizeTimes;
  249. }
  250. return <span>{text}</span>;
  251. }
  252. },
  253. },
  254. {
  255. title: "金额(万元)",
  256. dataIndex: "money",
  257. key: "money",
  258. render: (text, record) => {
  259. if (record.dunTypeName) {
  260. if (record.appropriationRatio) {
  261. let percent = Number(record.appropriationRatio * 100);
  262. percent += "%";
  263. return <span>{percent}(拨款比例)</span>;
  264. } else {
  265. return <span>{text}</span>;
  266. }
  267. }
  268. },
  269. },
  270. {
  271. title: "服务年限",
  272. dataIndex: "startDate",
  273. key: "startDate",
  274. render: (text, record) => {
  275. if (record.dunTypeName) {
  276. return <span>{text}</span>;
  277. }
  278. },
  279. },
  280. {
  281. title: "催款状态",
  282. dataIndex: "status",
  283. key: "status",
  284. render: (text) => {
  285. return <span>{text == 1 ? "已启动" : "未启动"}</span>;
  286. },
  287. },
  288. ],
  289. ContactsLists: [
  290. {
  291. title: "催款科目",
  292. dataIndex: "dunSubject",
  293. key: "dunSubject",
  294. render: (text) => {
  295. return getjiedian(text);
  296. },
  297. },
  298. {
  299. title: "金额(万元)",
  300. dataIndex: "money",
  301. key: "money",
  302. },
  303. {
  304. title: "催款状态",
  305. dataIndex: "dunStatus",
  306. key: "dunStatus",
  307. render: (text) => {
  308. return getCuikuan(text);
  309. },
  310. },
  311. ],
  312. };
  313. },
  314. //点击打卡项目详情
  315. tableRowClick(record) {
  316. if (record.type == "1") {
  317. this.setState({
  318. displayFees: "block",
  319. costReduction: record.costReduction,
  320. officialCost: record.officialCost,
  321. });
  322. } else {
  323. this.setState({
  324. displayFees: "none",
  325. });
  326. }
  327. this.setState({
  328. jid: record.id, //项目ID
  329. kid: record.commodityId, //商品ID
  330. commodityName: record.commodityName, //金额
  331. commodityPrice: record.commodityPrice, //金额
  332. commodityQuantity: record.commodityQuantity, //数量
  333. taskComment: record.taskComment, //备注
  334. main: record.main.toString(), //是否为主要
  335. addnextVisible: true,
  336. dataInfor: record,
  337. addState: 0,
  338. });
  339. },
  340. //项目详情关闭
  341. nextCancel() {
  342. this.setState({
  343. addnextVisible: false,
  344. displayFees: "none",
  345. officialCost: "", //是否有官费
  346. costReduction: "", //是否有费减
  347. });
  348. },
  349. // 拆分详细
  350. showRes(record) {
  351. this.setState({
  352. resVisible: true,
  353. resRecord: record,
  354. });
  355. },
  356. resCancel() {
  357. this.setState({
  358. resVisible: false,
  359. });
  360. },
  361. loadData(record) {
  362. this.state.orderList = [];
  363. $.ajax({
  364. method: "get",
  365. dataType: "json",
  366. crossDomain: false,
  367. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  368. data: {
  369. orderNo: record ? record.orderNo : this.props.data.orderNo,
  370. },
  371. success: function (data) {
  372. let thisData = data.data;
  373. if (!thisData) {
  374. if (data.error && data.error.length) {
  375. message.warning(data.error[0].message);
  376. }
  377. thisData = {};
  378. }
  379. this.setState({
  380. id: thisData.id,
  381. orderUid: thisData.uid,
  382. orderList: thisData,
  383. approval:
  384. thisData.approval == 0
  385. ? thisData.approval.toString()
  386. : thisData.approval,
  387. orderRemarks: thisData.orderRemarks,
  388. orgCodeUrl: thisData.contractPictureUrl
  389. ? splitUrl(
  390. thisData.contractPictureUrl,
  391. ",",
  392. globalConfig.avatarHost + "/upload"
  393. )
  394. : [],
  395. replenishUrl: thisData.agreementUrl
  396. ? splitUrl(
  397. thisData.agreementUrl,
  398. ",",
  399. globalConfig.avatarHost + "/upload"
  400. )
  401. : [],
  402. contentUrl: thisData.serviceContent
  403. ? splitUrl(
  404. thisData.serviceContent,
  405. ",",
  406. globalConfig.avatarHost + "/upload"
  407. )
  408. : [], //图片地址
  409. orderNo: thisData.orderNo, //订单编号
  410. buyerId: thisData.buyerId,
  411. depName: thisData.depName,
  412. outsource: thisData.outsource == 0 ? "否" : "是",
  413. deleteSign: thisData.deleteSign,
  414. });
  415. }.bind(this),
  416. }).always(
  417. function () {
  418. this.setState({
  419. loading: false,
  420. });
  421. }.bind(this)
  422. );
  423. },
  424. rizhi() {
  425. this.setState({
  426. loading: true,
  427. });
  428. $.ajax({
  429. method: "get",
  430. dataType: "json",
  431. crossDomain: false,
  432. url: "/api/admin/newOrder/selectOrderLog",
  433. data: {
  434. orderNo: this.props.data.orderNo,
  435. },
  436. success: function (data) {
  437. let theArr = [];
  438. let thisData = data.data;
  439. if (!thisData.length) {
  440. if (data.error && data.error.length) {
  441. message.warning(data.error[0].message);
  442. }
  443. thisData = {};
  444. } else {
  445. for (let i = 0; i < data.data.length; i++) {
  446. let thisdata = data.data[i];
  447. theArr.push({
  448. processName: thisdata.processName,
  449. adminName: thisdata.adminName,
  450. createDate: thisdata.createDate,
  451. remarks: thisdata.remarks,
  452. });
  453. }
  454. }
  455. this.setState({
  456. dataSourceX: theArr,
  457. });
  458. }.bind(this),
  459. }).always(
  460. function () {
  461. this.setState({
  462. loading: false,
  463. });
  464. }.bind(this)
  465. );
  466. },
  467. getOrderLog() {
  468. this.setState({
  469. avisible: true,
  470. });
  471. this.rizhi();
  472. },
  473. closeOrderLog() {
  474. this.setState({
  475. avisible: false,
  476. });
  477. },
  478. getPictureUrl(e) {
  479. this.setState({ pictureUrl: e });
  480. },
  481. componentWillMount() {
  482. if (this.props.data.orderNo) {
  483. this.setState({
  484. orderNos: this.props.data.orderNo
  485. })
  486. this.loadData();
  487. this.loadXmu();
  488. this.jiedian(this.props.data.orderNo);
  489. this.jiedianNew(this.props.data.orderNo);
  490. } else {
  491. this.state.data = {};
  492. }
  493. },
  494. componentWillReceiveProps(nextProps) {
  495. if (!this.props.visible && nextProps.visible) {
  496. this.state.textFileList = [];
  497. this.state.videoFileList = [];
  498. if (nextProps.data.orderNo) {
  499. this.setState({
  500. orderNos: nextProps.data.orderNo
  501. })
  502. this.loadData(nextProps.data);
  503. this.loadXmu(nextProps.data);
  504. this.jiedian(nextProps.data.orderNo);
  505. this.jiedianNew(nextProps.data.orderNo);
  506. } else {
  507. this.state.data = {};
  508. this.state.pictureUrl = [];
  509. this.state.pictureUrlMin = [];
  510. }
  511. this.props.form.resetFields();
  512. }
  513. },
  514. downImg() {
  515. let num = 0;
  516. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  517. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  518. num = i;
  519. }
  520. }
  521. if (num == this.state.orgCodeUrl.length - 1) {
  522. return message.warning("已经是最后一张了哦");
  523. }
  524. this.state.previewImage = this.state.orgCodeUrl[num + 1].url;
  525. this.setState({
  526. previewImage: this.state.previewImage,
  527. rotateDeg: 0,
  528. });
  529. },
  530. upImg() {
  531. let num = 0;
  532. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  533. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  534. num = i;
  535. }
  536. }
  537. if (num == 0) {
  538. return message.warning("已经是第一张了哦");
  539. }
  540. this.state.previewImage = this.state.orgCodeUrl[num - 1].url;
  541. this.setState({
  542. previewImage: this.state.previewImage,
  543. rotateDeg: 0,
  544. });
  545. },
  546. rotate() {
  547. let rotateDeg = this.state.rotateDeg + 90;
  548. this.setState({
  549. rotateDeg,
  550. });
  551. },
  552. downImgs() {
  553. let num = 0;
  554. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  555. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  556. num = i;
  557. }
  558. }
  559. if (num == this.state.replenishUrl.length - 1) {
  560. return message.warning("已经是最后一张了哦");
  561. }
  562. this.state.previewImage = this.state.replenishUrl[num + 1].url;
  563. this.setState({
  564. previewImage: this.state.previewImage,
  565. rotateDeg: 0,
  566. });
  567. },
  568. upImgs() {
  569. let num = 0;
  570. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  571. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  572. num = i;
  573. }
  574. }
  575. if (num == 0) {
  576. return message.warning("已经是第一张了哦");
  577. }
  578. this.state.previewImage = this.state.replenishUrl[num - 1].url;
  579. this.setState({
  580. previewImage: this.state.previewImage,
  581. rotateDeg: 0,
  582. });
  583. },
  584. rotates() {
  585. let rotateDeg = this.state.rotateDeg + 90;
  586. this.setState({
  587. rotateDeg,
  588. });
  589. },
  590. //节点列表
  591. jiedian(orderNos) {
  592. $.ajax({
  593. method: "get",
  594. dataType: "json",
  595. crossDomain: false,
  596. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  597. data: {
  598. orderNo: orderNos,
  599. },
  600. success: function (data) {
  601. let theArr = [];
  602. let thisData = [];
  603. if (data.error.length || data.data.list == "") {
  604. if (data.error && data.error.length) {
  605. message.warning(data.error[0].message);
  606. }
  607. } else {
  608. for (let i = 0; i < data.data.length; i++) {
  609. thisData = data.data[i];
  610. theArr.push({
  611. key: i,
  612. dunSubject: thisData.dunSubject
  613. ? thisData.dunSubject.toString()
  614. : "", //催款科目
  615. id: thisData.id, //节点Id
  616. money: thisData.money, //催款金额
  617. dunStatus: thisData.dunStatus, //催款状态
  618. orderNo: thisData.orderNo,
  619. });
  620. }
  621. this.setState({
  622. contactList: theArr,
  623. });
  624. }
  625. }.bind(this),
  626. }).always(
  627. function () {
  628. this.setState({
  629. loading: false,
  630. });
  631. }.bind(this)
  632. );
  633. },
  634. //查看催款节点
  635. jiedianNew(orderNos) {
  636. $.ajax({
  637. method: "get",
  638. dataType: "json",
  639. crossDomain: false,
  640. url:
  641. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  642. data: {
  643. orderNo: orderNos,
  644. },
  645. success: function (data) {
  646. if (data.error && data.error.length) {
  647. message.warning(data.error[0].message);
  648. } else {
  649. let theArr = [];
  650. let thisData = [];
  651. let arr = data.data || [];
  652. let totalCui = 0;
  653. for (let i = 0; i < arr.length; i++) {
  654. thisData = arr[i];
  655. totalCui += +thisData.money;
  656. theArr.push({
  657. key: i,
  658. dunSubject: thisData.dunSubject
  659. ? thisData.dunSubject.toString()
  660. : "", //催款科目
  661. id: thisData.id, //节点Id
  662. money: thisData.money, //催款金额
  663. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  664. commodityName: thisData.commodityName,
  665. projectType: thisData.projectType,
  666. dunTypeName: thisData.dunTypeName,
  667. status: thisData.status,
  668. waitDay: thisData.waitDay,
  669. effectiveCount: thisData.effectiveCount,
  670. startDate: thisData.startDate,
  671. dunType: thisData.dunType,
  672. appropriationRatio: thisData.appropriationRatio,
  673. customizeName: thisData.customizeName,
  674. customizeTimes: thisData.customizeTimes,
  675. tid: thisData.tid,
  676. });
  677. }
  678. if (!totalCui) {
  679. totalCui = 0;
  680. }
  681. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  682. this.setState({
  683. contactListNew: theArr,
  684. totalCui,
  685. });
  686. }
  687. }.bind(this),
  688. }).always(
  689. function () {
  690. this.setState({
  691. loading: false,
  692. });
  693. }.bind(this)
  694. );
  695. },
  696. render() {
  697. const theData = this.state.orderList || {};
  698. const FormItem = Form.Item;
  699. const formItemLayout = {
  700. labelCol: { span: 10 },
  701. wrapperCol: { span: 12 },
  702. };
  703. const cuiDataList = this.state.contactList || [];
  704. return (
  705. <div className="login">
  706. <div style={{ position: "absolute", top: '12px', left: '81px', zIndex: 10000 }}>
  707. <OrderItemStatus deleteSign={this.state.deleteSign} />
  708. </div>
  709. {this.state.resVisible &&
  710. <ResolutionDetail
  711. cancel={this.resCancel}
  712. detail={this.state.resRecord}
  713. visible={this.state.resVisible}
  714. id={this.state.resRecord.orderNo}
  715. />
  716. }
  717. <Form layout="horizontal" id="demand-form">
  718. <Spin spinning={this.state.loading}>
  719. <div className="clearfix">
  720. <FormItem
  721. className="half-item"
  722. {...formItemLayout}
  723. label="订单编号"
  724. >
  725. <span>{theData.orderNo}</span>
  726. </FormItem>
  727. <FormItem
  728. className="half-item"
  729. {...formItemLayout}
  730. label="合同编号"
  731. >
  732. <span>{theData.contractNo}</span>
  733. </FormItem>
  734. <FormItem
  735. className="half-item"
  736. {...formItemLayout}
  737. label="客户名称"
  738. >
  739. <span>
  740. {theData.userName}
  741. <EnterpriseNameChange
  742. type='journal'
  743. style={{ marginLeft: 10 }}
  744. enterpriseId={this.state.orderUid} />
  745. </span>
  746. </FormItem>
  747. <FormItem className="half-item"
  748. {...formItemLayout}
  749. label="销售类型"
  750. >
  751. <span>
  752. {(["私有客户-", "签单客户-"][theData.userType] || " ") +
  753. (salesList[theData.salesType] || "")}
  754. {
  755. theData.other != null && theData.other != "" &&
  756. <Tooltip title={theData.other}>
  757. <span>
  758. {"(" + theData.other.toString().slice(0, 10) + (theData.other.toString().length > 9 ? "...)" : ")")}
  759. </span>
  760. </Tooltip>
  761. }
  762. </span>
  763. </FormItem>
  764. <FormItem
  765. className="half-item"
  766. {...formItemLayout}
  767. label="签单时间"
  768. >
  769. <span>{theData.signDate}</span>
  770. </FormItem>
  771. <FormItem
  772. className="half-item"
  773. {...formItemLayout}
  774. label="流程状态"
  775. >
  776. <span>{getProcessStatus(theData.processStatus)}</span>
  777. </FormItem>
  778. <FormItem
  779. className="half-item"
  780. {...formItemLayout}
  781. label="订单类型"
  782. >
  783. <span>{getNewOrderType(theData.orderType)}</span>
  784. </FormItem>
  785. <FormItem
  786. className="half-item"
  787. {...formItemLayout}
  788. label="结算状态"
  789. >
  790. <span>{getLiquidationStatus(theData.liquidationStatus)}</span>
  791. </FormItem>
  792. <FormItem
  793. className="half-item"
  794. {...formItemLayout}
  795. label="签单总金额(万元)"
  796. >
  797. <span>{theData.totalAmount}</span>
  798. </FormItem>
  799. <FormItem
  800. className="half-item"
  801. {...formItemLayout}
  802. label="首付款(万元)"
  803. >
  804. <span>{theData.firstAmount}</span>
  805. </FormItem>
  806. <FormItem
  807. className="half-item"
  808. {...formItemLayout}
  809. label="已收款(万元)"
  810. >
  811. <span>{theData.settlementAmount}</span>
  812. </FormItem>
  813. <FormItem
  814. className="half-item"
  815. {...formItemLayout}
  816. label="是否特批"
  817. >
  818. <span>{getApproval(theData.approval)}</span>
  819. </FormItem>
  820. <FormItem
  821. className="half-item"
  822. {...formItemLayout}
  823. label="是否外包"
  824. >
  825. <span>{this.state.outsource}</span>
  826. </FormItem>
  827. {this.props.data.orderStatus == "6" && (
  828. <FormItem
  829. className="half-item"
  830. {...formItemLayout}
  831. label="已退(万元)"
  832. >
  833. <span>{this.props.data.refundAmount}</span>
  834. </FormItem>
  835. )}
  836. <FormItem
  837. className="half-item"
  838. {...formItemLayout}
  839. label="订单部门"
  840. >
  841. <span>{theData.depName}</span>
  842. </FormItem>
  843. </div>
  844. <div className="clearfix">
  845. <FormItem
  846. labelCol={{ span: 5 }}
  847. wrapperCol={{ span: 18 }}
  848. label="订单留言"
  849. >
  850. <p style={{ maxWidth: 500, wordWrap: "break-word" }}>
  851. {this.state.orderRemarks}
  852. </p>
  853. </FormItem>
  854. </div>
  855. <div className="clearfix">
  856. <FormItem
  857. labelCol={{ span: 5 }}
  858. wrapperCol={{ span: 18 }}
  859. label="合同扫描件"
  860. >
  861. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  862. {this.state.orgCodeUrl ? <ImgList fileList={this.state.orgCodeUrl} ItemWidth={'96px'} /> : <div />}
  863. </div>
  864. <Modal
  865. maskClosable={false}
  866. footer={null}
  867. width={"50%"}
  868. visible={this.state.previewVisible}
  869. onCancel={() => {
  870. this.setState({ previewVisible: false, rotateDeg: 0 });
  871. }}
  872. >
  873. <img
  874. alt=""
  875. style={{
  876. width: "100%",
  877. transform: `rotate(${this.state.rotateDeg}deg)`,
  878. }}
  879. src={this.state.previewImage || ""}
  880. />
  881. <Button
  882. onClick={this.rotate}
  883. style={{
  884. position: "relative",
  885. left: "50%",
  886. transform: "translateX(-50%)",
  887. }}
  888. >
  889. 旋转
  890. </Button>
  891. <Button
  892. onClick={this.upImg}
  893. style={{
  894. position: "absolute",
  895. left: -81,
  896. top: "50%",
  897. transform: "translateY(-50%)",
  898. }}
  899. >
  900. 上一张
  901. </Button>
  902. <Button
  903. onClick={this.downImg}
  904. style={{
  905. position: "absolute",
  906. right: -81,
  907. top: "50%",
  908. transform: "translateY(-50%)",
  909. }}
  910. >
  911. 下一张
  912. </Button>
  913. </Modal>
  914. <Button
  915. style={{
  916. float: "right",
  917. marginRight: "140px",
  918. marginTop: "20px",
  919. }}
  920. onClick={this.getOrderLog}
  921. >
  922. 查看订单日志
  923. </Button>
  924. </FormItem>
  925. <FormItem
  926. labelCol={{ span: 5 }}
  927. wrapperCol={{ span: 18 }}
  928. label="补充协议"
  929. >
  930. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  931. {this.state.replenishUrl ? <ImgList domId={'orderDetail1'} fileList={this.state.replenishUrl} /> : <div />}
  932. </div>
  933. <Modal
  934. maskClosable={false}
  935. footer={null}
  936. width={"50%"}
  937. visible={this.state.previewVisibles}
  938. onCancel={() => {
  939. this.setState({ previewVisibles: false, rotateDeg: 0 });
  940. }}
  941. >
  942. <img
  943. alt=""
  944. style={{
  945. width: "100%",
  946. transform: `rotate(${this.state.rotateDeg}deg)`,
  947. }}
  948. src={this.state.previewImage || ""}
  949. />
  950. <Button
  951. onClick={this.rotates}
  952. style={{
  953. position: "relative",
  954. left: "50%",
  955. transform: "translateX(-50%)",
  956. }}
  957. >
  958. 旋转
  959. </Button>
  960. <Button
  961. onClick={this.upImgs}
  962. style={{
  963. position: "absolute",
  964. left: -81,
  965. top: "50%",
  966. transform: "translateY(-50%)",
  967. }}
  968. >
  969. 上一张
  970. </Button>
  971. <Button
  972. onClick={this.downImgs}
  973. style={{
  974. position: "absolute",
  975. right: -81,
  976. top: "50%",
  977. transform: "translateY(-50%)",
  978. }}
  979. >
  980. 下一张
  981. </Button>
  982. </Modal>
  983. </FormItem>
  984. </div>
  985. <div style={{ marginLeft: "56px" }}>
  986. <ContentUrl
  987. processStatus={1}
  988. domId={"detailContents"}
  989. contentUrl={this.state.contentUrl}
  990. imgId={"detailContentsImg"}
  991. />
  992. </div>
  993. <div className="clearfix">
  994. <FormItem
  995. className="half-item"
  996. {...formItemLayout}
  997. label="订单负责人"
  998. >
  999. <span>{theData.salesmanName}</span>
  1000. </FormItem>
  1001. <FormItem
  1002. className="half-item"
  1003. {...formItemLayout}
  1004. label="订单负责人电话"
  1005. >
  1006. <span>{theData.salesmanMobile}</span>
  1007. </FormItem>
  1008. <FormItem
  1009. className="half-item"
  1010. {...formItemLayout}
  1011. label="当前财务负责人"
  1012. >
  1013. <span>{theData.nowFinance}</span>
  1014. </FormItem>
  1015. <FormItem
  1016. className="half-item"
  1017. {...formItemLayout}
  1018. label="当前财务负责人电话"
  1019. >
  1020. <span>{theData.nowFinanceMobile}</span>
  1021. </FormItem>
  1022. <FormItem
  1023. className="half-item"
  1024. {...formItemLayout}
  1025. style={{ opacity: ".5" }}
  1026. label="原订单负责人"
  1027. >
  1028. <span>{theData.oldSalesmanName}</span>
  1029. </FormItem>
  1030. <FormItem
  1031. className="half-item"
  1032. {...formItemLayout}
  1033. style={{ opacity: ".5" }}
  1034. label="原订单负责人电话"
  1035. >
  1036. <span>{theData.oldSalesmanMobile}</span>
  1037. </FormItem>
  1038. <FormItem
  1039. className="half-item"
  1040. {...formItemLayout}
  1041. style={{ opacity: ".5" }}
  1042. label="实际财务操作人"
  1043. >
  1044. <span>{theData.financeName}</span>
  1045. </FormItem>
  1046. <FormItem
  1047. className="half-item"
  1048. {...formItemLayout}
  1049. style={{ opacity: ".5" }}
  1050. label="实际财务操作人电话"
  1051. >
  1052. <span>{theData.financeMobile}</span>
  1053. </FormItem>
  1054. </div>
  1055. <OrderRiZi
  1056. dataSourcerizhi={this.state.dataSourceX}
  1057. closeOrderLog={this.closeOrderLog}
  1058. visible={this.state.avisible}
  1059. loading={this.state.loading}
  1060. />
  1061. <OrderCoor orderNo={this.state.orderNos} mrs={'20px'} mro={'64px'} />
  1062. <div className="clearfix" style={{ marginBottom: 10 }}>
  1063. <p style={{ fontSize: 18, marginLeft: 20 }}>项目业务</p>
  1064. <div className="patent-table">
  1065. <Spin spinning={this.state.loading}>
  1066. <Table
  1067. columns={this.state.columns}
  1068. dataSource={this.state.dataSource}
  1069. pagination={this.state.pagination}
  1070. onRowClick={this.tableRowClick}
  1071. bordered
  1072. size="small"
  1073. />
  1074. </Spin>
  1075. </div>
  1076. </div>
  1077. <div>
  1078. <span style={{ marginLeft: 20, fontSize: "18px" }}>
  1079. 催款节点
  1080. </span>
  1081. <span
  1082. style={{
  1083. display: cuiDataList.length ? "none" : "inline-block",
  1084. marginLeft: 10,
  1085. color: "red",
  1086. }}
  1087. >
  1088. 金额总计(万元): {this.state.totalCui}
  1089. </span>
  1090. </div>
  1091. <div className="clearfix">
  1092. <Spin spinning={this.state.loading}>
  1093. <Form layout="horizontal" id="demand-form">
  1094. <Table
  1095. pagination={false}
  1096. bordered
  1097. size="small"
  1098. columns={
  1099. cuiDataList.length
  1100. ? this.state.ContactsLists
  1101. : this.state.ContactsListsNew
  1102. }
  1103. dataSource={
  1104. cuiDataList.length
  1105. ? this.state.contactList
  1106. : this.state.contactListNew
  1107. }
  1108. />
  1109. <Col
  1110. span={24}
  1111. offset={9}
  1112. style={{ marginTop: "15px" }}
  1113. ></Col>
  1114. </Form>
  1115. </Spin>
  1116. </div>
  1117. </Spin>
  1118. </Form>
  1119. {this.state.addnextVisible &&
  1120. <ProjectDetailsReadOnly
  1121. infor={this.state.dataInfor}
  1122. visible={this.state.addnextVisible}
  1123. onCancel={this.nextCancel}
  1124. />}
  1125. </div>
  1126. );
  1127. },
  1128. })
  1129. );
  1130. export default OrderDetail;