contractJsy.js 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136
  1. import React from "react";
  2. import { Button, Input, Spin, Table, message, Form, Modal, Tabs } from "antd";
  3. import $ from "jquery/src/ajax";
  4. import {
  5. getNewOrderStatus,
  6. getProcessStatusNew,
  7. splitUrl,
  8. getjiedian,
  9. getboutique,
  10. getCuikuan,
  11. getProjectStatus
  12. } from "@/tools.js";
  13. import "./customer.less";
  14. import { ChangeDetail } from "./changeComponent/changeDetailJsy.js";
  15. import { SearchInput } from "./changeComponent/searchInput.js";
  16. import OrderDetail from "./changeComponent/orderDetail";
  17. const contractChange = Form.create()(
  18. React.createClass({
  19. loadData(pageNo) {
  20. this.setState({
  21. loading: true
  22. });
  23. $.ajax({
  24. method: "get",
  25. dataType: "json",
  26. crossDomain: false,
  27. url: globalConfig.context + "/api/admin/orderChange/orderChangeList",
  28. data: {
  29. pageNo: pageNo || 1,
  30. pageSize: this.state.pagination.pageSize,
  31. userName: this.state.searchData.userNameSearch,
  32. processState: this.props.processState,
  33. timeType: this.state.searchData.timeTypeSearch,
  34. startTime: this.state.searchData.releaseDate[0],
  35. endTime: this.state.searchData.releaseDate[1],
  36. salesmanName: this.state.searchData.salesmanNameSearch,
  37. complete: this.state.searchData.completeSearch || 1,
  38. depId: this.state.searchData.depIdSearch
  39. },
  40. success: function(data) {
  41. let theArr = [];
  42. if (data.error.length || data.data.list == "") {
  43. if (data.error && data.error.length) {
  44. message.warning(data.error[0].message);
  45. }
  46. } else {
  47. for (let i = 0; i < data.data.list.length; i++) {
  48. let thisdata = data.data.list[i];
  49. theArr.push({
  50. key: i,
  51. orderNo: thisdata.orderNo,
  52. createTimes: thisdata.createTimes,
  53. nickname: thisdata.nickname,
  54. orderType: thisdata.orderType,
  55. establishTimes: thisdata.establishTimes,
  56. orderStatus: thisdata.orderStatus,
  57. totalAmount: thisdata.totalAmount,
  58. settlementAmount: thisdata.settlementAmount,
  59. arrears: thisdata.arrears,
  60. salesmanName: thisdata.salesmanName,
  61. depName: thisdata.depName,
  62. processState: thisdata.processState,
  63. type: thisdata.type,
  64. status: thisdata.status,
  65. id: thisdata.id,
  66. processStateText:
  67. thisdata.status !== 4
  68. ? getProcessStatusNew(thisdata.processState) + "审核中"
  69. : getProcessStatusNew(thisdata.processState) + "已完成"
  70. });
  71. }
  72. this.state.pagination.total = data.data.totalCount;
  73. this.state.pagination.current = data.data.pageNo;
  74. }
  75. if (data.data && data.data.list && !data.data.list.length) {
  76. this.state.pagination.total = 0;
  77. }
  78. this.setState({
  79. dataSource: theArr,
  80. pageNo: pageNo,
  81. pagination: this.state.pagination
  82. });
  83. }.bind(this)
  84. }).always(
  85. function() {
  86. this.setState({
  87. loading: false
  88. });
  89. }.bind(this)
  90. );
  91. },
  92. getInitialState() {
  93. return {
  94. page: 1,
  95. searchData: {
  96. releaseDate: []
  97. },
  98. primaryOrderData: {}, //原订单数据
  99. orderData: {}, //现订单数据
  100. pictureUrl: [],
  101. voucherUrl: [],
  102. attachmentUrl: [],
  103. contractData: {},
  104. additionalOrderData: {},
  105. paginations: false,
  106. activeKey: "1",
  107. confirmLoading: false,
  108. aloading: false,
  109. pagination: {
  110. defaultCurrent: 1,
  111. defaultPageSize: 10,
  112. showQuickJumper: true,
  113. pageSize: 10,
  114. onChange: function(page) {
  115. this.loadData(page);
  116. }.bind(this),
  117. showTotal: function(total) {
  118. return "共" + total + "条数据";
  119. }
  120. },
  121. columns: [
  122. {
  123. title: "订单编号",
  124. dataIndex: "orderNo",
  125. key: "orderNo"
  126. },
  127. {
  128. title: "提交时间",
  129. dataIndex: "createTimes",
  130. key: "createTimes"
  131. },
  132. {
  133. title: "客户名称",
  134. dataIndex: "nickname",
  135. key: "nickname"
  136. },
  137. {
  138. title: "订单类型",
  139. dataIndex: "orderType",
  140. key: "orderType",
  141. render: text => {
  142. return text ? "科技项目" : "认证项目";
  143. }
  144. },
  145. {
  146. title: "下单时间",
  147. dataIndex: "establishTimes",
  148. key: "establishTimes"
  149. },
  150. {
  151. title: "订单状态",
  152. dataIndex: "orderStatus",
  153. key: "orderStatus",
  154. render: text => {
  155. return getNewOrderStatus(text);
  156. }
  157. },
  158. {
  159. title: "合同额(万元)",
  160. dataIndex: "totalAmount",
  161. key: "totalAmount",
  162. render: () => {
  163. return "***";
  164. }
  165. },
  166. {
  167. title: "已付额(万元)",
  168. dataIndex: "settlementAmount",
  169. key: "settlementAmount",
  170. render: () => {
  171. return "***";
  172. }
  173. },
  174. {
  175. title: "欠款(万元)",
  176. dataIndex: "arrears",
  177. key: "arrears",
  178. render: () => {
  179. return "***";
  180. }
  181. },
  182. {
  183. title: "订单负责人",
  184. dataIndex: "salesmanName",
  185. key: "salesmanName"
  186. },
  187. {
  188. title: "订单部门",
  189. dataIndex: "depName",
  190. key: "depName"
  191. },
  192. {
  193. title: "审核状态",
  194. dataIndex: "processStateText",
  195. key: "processStateText"
  196. }
  197. ],
  198. dataSource: [],
  199. columnsX: [
  200. {
  201. title: "业务项目名称",
  202. dataIndex: "commodityName",
  203. key: "commodityName"
  204. },
  205. {
  206. title: "项目类别",
  207. dataIndex: "cname",
  208. key: "cname"
  209. },
  210. {
  211. title: "项目数量",
  212. dataIndex: "commodityQuantity",
  213. key: "commodityQuantity"
  214. },
  215. {
  216. title: "金额(万元)",
  217. dataIndex: "commodityPrice",
  218. key: "commodityPrice"
  219. },
  220. {
  221. title: "负责人",
  222. dataIndex: "contacts",
  223. key: "contacts"
  224. },
  225. {
  226. title: "负责人电话",
  227. dataIndex: "contactsMobile",
  228. key: "contactsMobile"
  229. },
  230. {
  231. title: "项目状态",
  232. dataIndex: "projectStatus",
  233. key: "projectStatus",
  234. render: text => {
  235. return getProjectStatus(text);
  236. }
  237. },
  238. {
  239. title: "主要项目",
  240. dataIndex: "main",
  241. key: "main",
  242. render: text => {
  243. return text ? "是" : "否";
  244. }
  245. },
  246. {
  247. title: "项目说明",
  248. dataIndex: "taskComment",
  249. key: "taskComment",
  250. render: text => {
  251. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  252. }
  253. }
  254. ],
  255. columnsrizhi: [
  256. {
  257. title: "流程",
  258. dataIndex: "processName",
  259. key: "processName"
  260. },
  261. {
  262. title: "操作人",
  263. dataIndex: "adminName",
  264. key: "adminName"
  265. },
  266. {
  267. title: "时间",
  268. dataIndex: "createDate",
  269. key: "createDate"
  270. }
  271. ],
  272. dataSourceX: [],
  273. ContactsLists: [
  274. {
  275. title: "催款科目",
  276. dataIndex: "dunSubject",
  277. key: "dunSubject",
  278. render: text => {
  279. return getjiedian(text);
  280. }
  281. },
  282. {
  283. title: "金额(万)",
  284. dataIndex: "money",
  285. key: "money"
  286. },
  287. {
  288. title: "催款状态",
  289. dataIndex: "dunStatus",
  290. key: "dunStatus",
  291. render: text => {
  292. return getCuikuan(text);
  293. }
  294. }
  295. ]
  296. };
  297. },
  298. //页面加载函数
  299. componentWillMount() {
  300. this.loadData();
  301. },
  302. //整行点击
  303. tableRowClick(record) {
  304. this.setState(
  305. {
  306. visible: true,
  307. type: record.type,
  308. status: record.status,
  309. buttonStatus: true,
  310. orderStatus: record.orderStatus,
  311. processStateText: record.processStateText,
  312. id: record.id,
  313. orderNo: record.orderNo
  314. },
  315. () => {
  316. this.xiangqing(record.orderNo);
  317. this.xiangmu(record.orderNo);
  318. this.jiedian(record.orderNo);
  319. }
  320. );
  321. },
  322. //点击打卡项目详情
  323. tableRowClickX(record) {
  324. this.setState({
  325. jid: record.id, //项目ID
  326. kid: record.commodityId, //商品ID
  327. commodityName: record.commodityName, //金额
  328. commodityPrice: record.commodityPrice, //金额
  329. commodityQuantity: record.commodityQuantity, //数量
  330. taskComment: record.taskComment, //备注
  331. main: record.main.toString(), //是否为主要
  332. addnextVisible: true,
  333. addState: 0
  334. });
  335. },
  336. //项目详情关闭
  337. nextCancel() {
  338. this.setState({
  339. addnextVisible: false
  340. });
  341. },
  342. // 合同变更详情
  343. ChangeDetail(orderNo) {
  344. let url = window.location.href.substring(7);
  345. $.ajax({
  346. method: "get",
  347. dataType: "json",
  348. crossDomain: false,
  349. url: globalConfig.context + "/api/admin/orderChange/orderChangeDetails",
  350. data: {
  351. orderNo: orderNo
  352. },
  353. success: function(data) {
  354. if (data.data) {
  355. let thisdata = data.data;
  356. Object.assign(thisdata, {
  357. processStateText: this.state.processStateText,
  358. userName: this.state.userName,
  359. contractNo: this.state.contractNo
  360. });
  361. this.setState({
  362. contractData: thisdata,
  363. voucherUrl: thisdata.voucherUrl
  364. ? splitUrl(
  365. thisdata.voucherUrl,
  366. ",",
  367. globalConfig.avatarHost + "/upload",
  368. url
  369. )
  370. : []
  371. });
  372. }
  373. }.bind(this)
  374. });
  375. },
  376. //订单详情
  377. xiangqing(orderNos) {
  378. $.ajax({
  379. method: "get",
  380. dataType: "json",
  381. crossDomain: false,
  382. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  383. data: {
  384. orderNo: orderNos
  385. },
  386. success: function(data) {
  387. if (data.error.length || data.data.list == "") {
  388. if (data.error && data.error.length) {
  389. message.warning(data.error[0].message);
  390. }
  391. } else {
  392. let thisdata = data.data;
  393. this.setState({
  394. userName: thisdata.userName,
  395. primaryOrderNo: thisdata.primaryOrder,
  396. additionalOrder: thisdata.additionalOrder,
  397. contractNo: thisdata.contractNo,
  398. // arrears: thisdata.arrears,
  399. orderData: thisdata
  400. });
  401. }
  402. }.bind(this)
  403. });
  404. },
  405. // 原订单数据
  406. primaryOrder(primaryOrder) {
  407. $.ajax({
  408. method: "get",
  409. dataType: "json",
  410. crossDomain: false,
  411. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  412. data: {
  413. orderNo: primaryOrder
  414. },
  415. success: function(data) {
  416. if (data.error.length || data.data.list == "") {
  417. if (data.error && data.error.length) {
  418. message.warning(data.error[0].message);
  419. }
  420. } else {
  421. let thisdata = data.data;
  422. this.setState({
  423. primaryOrderData: thisdata
  424. });
  425. }
  426. }.bind(this)
  427. });
  428. },
  429. // 附加订单数据
  430. additionalOrder(additionalOrder) {
  431. $.ajax({
  432. method: "get",
  433. dataType: "json",
  434. crossDomain: false,
  435. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  436. data: {
  437. orderNo: additionalOrder
  438. },
  439. success: function(data) {
  440. if (data.error.length || data.data.list == "") {
  441. if (data.error && data.error.length) {
  442. message.warning(data.error[0].message);
  443. }
  444. } else {
  445. let thisdata = data.data;
  446. this.setState({
  447. additionalOrderData: thisdata
  448. });
  449. }
  450. }.bind(this)
  451. });
  452. },
  453. //项目列表
  454. xiangmu(orderNos) {
  455. $.ajax({
  456. method: "get",
  457. dataType: "json",
  458. crossDomain: false,
  459. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  460. data: {
  461. orderNo: orderNos
  462. },
  463. success: function(data) {
  464. let theArr = [];
  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. for (let i = 0; i < data.data.length; i++) {
  471. let thisdata = data.data[i];
  472. theArr.push({
  473. key: i,
  474. id: thisdata.id,
  475. orderNo: thisdata.orderNo, //订单编号
  476. commodityId: thisdata.commodityId, //项目ID
  477. commodityName: thisdata.commodityName, //项目名称
  478. cname: thisdata.cname, //项目类别
  479. commodityPrice: thisdata.commodityPrice, //项目价格
  480. commodityQuantity: thisdata.commodityQuantity, //项目数量
  481. main: thisdata.main, //是否为主要任务
  482. taskComment: thisdata.taskComment, //任务说明
  483. contacts: thisdata.contacts, //联系人
  484. contactsMobile: thisdata.contactsMobile, //联系人电话
  485. projectStatus: thisdata.projectStatus //项目状态
  486. });
  487. }
  488. }
  489. this.setState({
  490. dataSourceX: theArr
  491. });
  492. }.bind(this)
  493. });
  494. },
  495. search(obj) {
  496. this.setState(
  497. {
  498. searchData: obj
  499. },
  500. () => {
  501. this.loadData(1);
  502. }
  503. );
  504. },
  505. rizhi(orderNo) {
  506. $.ajax({
  507. method: "get",
  508. dataType: "json",
  509. crossDomain: false,
  510. url: "/api/admin/newOrder/selectOrderLog",
  511. data: {
  512. orderNo: orderNo
  513. },
  514. success: function(data) {
  515. let theArr = [];
  516. let thisData = data.data;
  517. if (!thisData.length) {
  518. if (data.error && data.error.length) {
  519. message.warning(data.error[0].message);
  520. }
  521. thisData = {};
  522. } else {
  523. for (let i = 0; i < data.data.length; i++) {
  524. let thisdata = data.data[i];
  525. theArr.push({
  526. processName: thisdata.processName,
  527. adminName: thisdata.adminName,
  528. createDate: thisdata.createDate
  529. });
  530. }
  531. }
  532. this.setState({
  533. dataSourcerizhi: theArr
  534. });
  535. }.bind(this)
  536. });
  537. },
  538. getOrderLog(orderNo) {
  539. this.setState({
  540. rizhivisible: true
  541. });
  542. this.rizhi(orderNo);
  543. },
  544. closeOrderLog() {
  545. this.setState({
  546. rizhivisible: false
  547. });
  548. },
  549. //节点列表
  550. jiedian(orderNos) {
  551. $.ajax({
  552. method: "get",
  553. dataType: "json",
  554. crossDomain: false,
  555. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  556. data: {
  557. orderNo: orderNos
  558. },
  559. success: function(data) {
  560. let theArr = [];
  561. let thisData = [];
  562. if (data.error.length || data.data.list == "") {
  563. if (data.error && data.error.length) {
  564. message.warning(data.error[0].message);
  565. }
  566. } else {
  567. for (let i = 0; i < data.data.length; i++) {
  568. thisData = data.data[i];
  569. theArr.push({
  570. key: i,
  571. dunSubject: thisData.dunSubject
  572. ? thisData.dunSubject.toString()
  573. : "", //催款科目
  574. id: thisData.id, //节点Id
  575. money: thisData.money, //催款金额
  576. dunStatus: thisData.dunStatus //催款状态
  577. });
  578. }
  579. this.setState({
  580. contactList: theArr
  581. });
  582. }
  583. }.bind(this)
  584. });
  585. },
  586. //审核通过
  587. examOk() {
  588. $.ajax({
  589. method: "post",
  590. dataType: "json",
  591. crossDomain: false,
  592. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  593. data: {
  594. orderNo: this.state.orderNo,
  595. orderStatus: 2
  596. },
  597. success: function(data) {
  598. if (data.error.length || data.data.list == "") {
  599. if (data.error && data.error.length) {
  600. message.warning(data.error[0].message);
  601. }
  602. } else {
  603. message.success("该订单已通过审核~");
  604. this.setState({
  605. visible: false
  606. });
  607. this.reset();
  608. }
  609. }.bind(this)
  610. }).always(
  611. function() {
  612. this.setState({
  613. loading: false
  614. });
  615. }.bind(this)
  616. );
  617. },
  618. //通过发给外包
  619. outsourcing() {
  620. $.ajax({
  621. method: "post",
  622. dataType: "json",
  623. crossDomain: false,
  624. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  625. data: {
  626. orderNo: this.state.orderNo,
  627. orderStatus: 2,
  628. outsource: 1
  629. },
  630. success: function(data) {
  631. if (data.error.length || data.data.list == "") {
  632. if (data.error && data.error.length) {
  633. message.warning(data.error[0].message);
  634. }
  635. } else {
  636. message.success("该订单已通过审核~");
  637. this.setState({
  638. visible: false
  639. });
  640. this.reset();
  641. }
  642. }.bind(this)
  643. }).always(
  644. function() {
  645. this.setState({
  646. loading: false
  647. });
  648. }.bind(this)
  649. );
  650. },
  651. //审核不通过
  652. examOks() {
  653. this.setState({
  654. aloading: true
  655. });
  656. $.ajax({
  657. method: "post",
  658. dataType: "json",
  659. crossDomain: false,
  660. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  661. data: {
  662. orderNo: this.state.orderNo,
  663. orderStatus: 3,
  664. reason: this.state.reason
  665. },
  666. success: function(data) {
  667. if (data.error.length || data.data.list == "") {
  668. if (data.error && data.error.length) {
  669. message.warning(data.error[0].message);
  670. this.setState({
  671. aloading: true
  672. });
  673. }
  674. } else {
  675. message.success("该订单已被拒绝~");
  676. this.setState({
  677. visible: false,
  678. aloading: false,
  679. noVisible: false,
  680. reason: ""
  681. });
  682. this.reset();
  683. }
  684. }.bind(this)
  685. }).always(
  686. function() {
  687. this.setState({
  688. loading: false
  689. });
  690. }.bind(this)
  691. );
  692. },
  693. //点击拒绝
  694. examNo() {
  695. this.setState({
  696. noVisible: true
  697. });
  698. },
  699. callback(key) {
  700. this.setState({
  701. activeKey: key
  702. });
  703. if (key === "1") {
  704. this.xiangmu(this.state.orderNo);
  705. this.jiedian(this.state.orderNo);
  706. }
  707. if (key === "2") {
  708. this.ChangeDetail(this.state.orderNo);
  709. }
  710. if (key === "3") {
  711. this.primaryOrder(this.state.primaryOrderNo);
  712. this.xiangmu(this.state.primaryOrderNo);
  713. this.jiedian(this.state.primaryOrderNo);
  714. }
  715. if (key === "4") {
  716. this.additionalOrder(this.state.additionalOrder);
  717. this.xiangmu(this.state.additionalOrder);
  718. this.jiedian(this.state.additionalOrder);
  719. this.setState({
  720. buttonStatusA: false
  721. });
  722. } else {
  723. this.setState({
  724. buttonStatusA: true
  725. });
  726. }
  727. },
  728. closeDesc(e, s) {
  729. this.state.activeKey = "1";
  730. this.state.userDetaile = false;
  731. this.state.signBillVisible = false;
  732. this.state.visible = e;
  733. if (s) {
  734. this.loadData(this.state.pageNo);
  735. }
  736. },
  737. // 获取原订单编号
  738. getPrimaryOrder(value) {
  739. this.setState({
  740. primaryOrder: value
  741. });
  742. },
  743. getAdditionalOrder(value) {
  744. this.setState({
  745. additionalOrder: value
  746. });
  747. },
  748. getUrl(url) {
  749. let theorgCodeUrl = [];
  750. if (url.length) {
  751. let picArr = [];
  752. url.map(function(item) {
  753. if (
  754. item.response &&
  755. item.response.data &&
  756. item.response.data.length
  757. ) {
  758. picArr.push(item.response.data);
  759. }
  760. });
  761. theorgCodeUrl = picArr.join(",");
  762. }
  763. return theorgCodeUrl;
  764. },
  765. sureOut() {
  766. if (!this.state.companyName) {
  767. message.warning("公司名称不能为空");
  768. return;
  769. }
  770. if (!this.state.unitPrice) {
  771. message.warning("单价不能为空");
  772. return;
  773. }
  774. if (!this.state.unitNumber) {
  775. message.warning("数量不能为空");
  776. return;
  777. }
  778. if (!this.state.amount) {
  779. message.warning("总金额不能为空");
  780. return;
  781. }
  782. if (!this.state.outsourceRemarks) {
  783. message.warning("备注不能为空");
  784. return;
  785. }
  786. if (this.state.pictureUrl.length === 0) {
  787. message.warning("合同扫描件不能为空");
  788. return;
  789. }
  790. $.ajax({
  791. method: "POST",
  792. dataType: "json",
  793. crossDomain: false,
  794. url: globalConfig.context + "/api/admin/outsourceOrg/auditOutsource",
  795. data: {
  796. id: this.state.id,
  797. orderNo: this.state.orderNo,
  798. companyName: this.state.companyName,
  799. amount: this.state.amount,
  800. outsourceRemarks: this.state.outsourceRemarks,
  801. unitNumber: this.state.unitNumber,
  802. unitPrice: this.state.unitPrice,
  803. attachmentUrl: this.getUrl(this.state.attachmentUrl).length
  804. ? this.getUrl(this.state.attachmentUrl)
  805. : "",
  806. orderStatus: 2,
  807. pictureUrl: this.getUrl(this.state.pictureUrl).length
  808. ? this.getUrl(this.state.pictureUrl)
  809. : ""
  810. }
  811. }).done(
  812. function(data) {
  813. this.setState({
  814. loading: false
  815. });
  816. if (!data.error.length) {
  817. message.success("发起成功!");
  818. this.outReset();
  819. this.visitCancel();
  820. } else {
  821. message.warning(data.error[0].message);
  822. }
  823. }.bind(this)
  824. );
  825. },
  826. //关闭输入理由框
  827. noCancel() {
  828. this.setState({
  829. noVisible: false,
  830. aloading: false,
  831. reason: ""
  832. });
  833. },
  834. //重置
  835. reset() {
  836. this.setState({
  837. signBillVisible: false
  838. });
  839. this.state.orderNo = "";
  840. this.state.customerName = "";
  841. this.state.releaseDate[0] = undefined;
  842. this.state.releaseDate[1] = undefined;
  843. this.state.approval = undefined;
  844. this.loadData(1);
  845. },
  846. outReset() {
  847. this.setState({
  848. companyName: "",
  849. amount: "",
  850. unitPrice: "",
  851. unitNumber: "",
  852. outsourceRemarks: "",
  853. attachmentUrl: [],
  854. pictureUrl: []
  855. });
  856. },
  857. getOrgCodeUrl(e) {
  858. this.setState({ pictureUrl: e });
  859. },
  860. //关闭详情
  861. visitCancel() {
  862. this.setState(
  863. {
  864. visible: false,
  865. activeKey: "1"
  866. },
  867. () => {
  868. this.setState({
  869. activeKey: "1"
  870. });
  871. }
  872. );
  873. this.loadData(this.state.pageNo);
  874. },
  875. visitOk() {
  876. this.setState({
  877. visible: false
  878. });
  879. },
  880. render() {
  881. const formItemLayout = {
  882. labelCol: { span: 8 },
  883. wrapperCol: { span: 14 }
  884. };
  885. const FormItem = Form.Item;
  886. const { TabPane } = Tabs;
  887. return (
  888. <div className="user-content">
  889. <div className="content-title">
  890. <span>合同变更审核订单</span>
  891. </div>
  892. <div className="user-search">
  893. <SearchInput search={this.search} />
  894. <div className="patent-table">
  895. <Spin spinning={this.state.loading}>
  896. <Table
  897. columns={this.state.columns}
  898. dataSource={this.state.dataSource}
  899. pagination={this.state.pagination}
  900. onRowClick={this.tableRowClick}
  901. />
  902. </Spin>
  903. </div>
  904. <Modal
  905. className="customeDetails"
  906. footer=""
  907. maskClosable={false}
  908. width="900px"
  909. visible={this.state.visible}
  910. onOk={this.visitOk}
  911. onCancel={this.visitCancel}
  912. >
  913. <Tabs activeKey={this.state.activeKey} onChange={this.callback}>
  914. <TabPane tab="订单详情" key="1">
  915. <Form
  916. layout="horizontal"
  917. onSubmit={this.handleSubmit}
  918. id="demand-form"
  919. style={{ paddingBottom: "40px" }}
  920. >
  921. <Spin spinning={this.state.loading}>
  922. <OrderDetail
  923. processState={this.props.processState}
  924. orderData={this.state.orderData}
  925. getOrderLog={this.getOrderLog}
  926. dataSourceX={this.state.dataSourceX}
  927. contactList={this.state.contactList}
  928. orderNo={this.state.orderNo}
  929. />
  930. </Spin>
  931. </Form>
  932. </TabPane>
  933. <TabPane tab="合同变更记录" key="2">
  934. <ChangeDetail
  935. data={this.state.contractData}
  936. pictureUrl={this.state.voucherUrl}
  937. processState={this.props.processState}
  938. loadData={this.callback}
  939. reset={this.state.visible}
  940. />
  941. </TabPane>
  942. {this.state.status === 4 ? (
  943. <TabPane tab="原订单" key="3">
  944. <Form
  945. layout="horizontal"
  946. onSubmit={this.handleSubmit}
  947. id="demand-form"
  948. style={{ paddingBottom: "40px" }}
  949. >
  950. <Spin spinning={this.state.loading}>
  951. <OrderDetail
  952. processState={this.props.processState}
  953. orderData={this.state.primaryOrderData}
  954. getOrderLog={this.getOrderLog}
  955. dataSourceX={this.state.dataSourceX}
  956. contactList={this.state.contactList}
  957. orderNo={this.state.primaryOrderNo}
  958. />
  959. </Spin>
  960. </Form>
  961. </TabPane>
  962. ) : (
  963. ""
  964. )}
  965. {this.state.status === 4 ? (
  966. this.state.type === 4 || this.state.type === 5 ? (
  967. <TabPane tab="附加订单" key="4">
  968. <OrderDetail
  969. processState={this.props.processState}
  970. orderData={this.state.additionalOrderData}
  971. getOrderLog={this.getOrderLog}
  972. dataSourceX={this.state.dataSourceX}
  973. contactList={this.state.contactList}
  974. orderNo={this.state.additionalOrder}
  975. />
  976. </TabPane>
  977. ) : (
  978. ""
  979. )
  980. ) : (
  981. ""
  982. )}
  983. </Tabs>
  984. </Modal>
  985. <Modal
  986. maskClosable={false}
  987. visible={this.state.addnextVisible}
  988. onOk={this.nextCancel}
  989. onCancel={this.nextCancel}
  990. confirmLoading={this.state.confirmLoading}
  991. width="800px"
  992. title={"项目任务详情"}
  993. footer=""
  994. className="admin-desc-content"
  995. >
  996. <Form layout="horizontal" id="demand-form">
  997. <Spin spinning={this.state.loading}>
  998. <div className="clearfix">
  999. <FormItem
  1000. className="half-item"
  1001. {...formItemLayout}
  1002. label="项目名称"
  1003. >
  1004. <span>{this.state.commodityName}</span>
  1005. </FormItem>
  1006. <FormItem
  1007. className="half-item"
  1008. {...formItemLayout}
  1009. label="项目数量"
  1010. >
  1011. <span>{this.state.commodityQuantity}</span>
  1012. </FormItem>
  1013. <FormItem
  1014. className="half-item"
  1015. {...formItemLayout}
  1016. label="金额(万元)"
  1017. >
  1018. <span>{this.state.commodityPrice}</span>
  1019. </FormItem>
  1020. <FormItem
  1021. className="half-item"
  1022. {...formItemLayout}
  1023. label="主要项目"
  1024. >
  1025. <span>{getboutique(this.state.main)}</span>
  1026. </FormItem>
  1027. <div className="clearfix">
  1028. <FormItem
  1029. labelCol={{ span: 4 }}
  1030. wrapperCol={{ span: 16 }}
  1031. label="服务说明"
  1032. >
  1033. <span>{this.state.taskComment}</span>
  1034. </FormItem>
  1035. </div>
  1036. </div>
  1037. </Spin>
  1038. </Form>
  1039. </Modal>
  1040. <Modal
  1041. maskClosable={false}
  1042. visible={this.state.noVisible}
  1043. onOk={this.handleOk}
  1044. onCancel={this.noCancel}
  1045. width="400px"
  1046. title={"拒绝理由"}
  1047. footer=""
  1048. className="admin-desc-content"
  1049. confirmLoading={this.state.confirmLoading}
  1050. >
  1051. <Form layout="horizontal" id="demand-form">
  1052. <Spin spinning={this.state.loading}>
  1053. <div className="clearfix">
  1054. <FormItem
  1055. labelCol={{ span: 4 }}
  1056. wrapperCol={{ span: 16 }}
  1057. label="拒绝理由"
  1058. >
  1059. <Input
  1060. type="textarea"
  1061. placeholder="请输入拒绝理由"
  1062. rows={4}
  1063. value={this.state.reason}
  1064. onChange={e => {
  1065. this.setState({ reason: e.target.value });
  1066. }}
  1067. />
  1068. </FormItem>
  1069. </div>
  1070. <div className="clearfix">
  1071. <Button
  1072. className="cancel"
  1073. type="primary"
  1074. onClick={this.examOks}
  1075. style={{ marginLeft: "50px" }}
  1076. htmlType="submit"
  1077. loading={this.state.aloading}
  1078. >
  1079. 确定
  1080. </Button>
  1081. <Button
  1082. className="cancel"
  1083. type="ghost"
  1084. onClick={this.noCancel}
  1085. style={{ marginLeft: "50px" }}
  1086. >
  1087. 取消
  1088. </Button>
  1089. </div>
  1090. </Spin>
  1091. </Form>
  1092. </Modal>
  1093. <Modal
  1094. visible={this.state.rizhivisible}
  1095. className="admin-desc-content"
  1096. width="800px"
  1097. maskClosable={false}
  1098. title="订单日志"
  1099. footer={null}
  1100. onCancel={this.closeOrderLog}
  1101. >
  1102. <div className="patent-table">
  1103. <Spin spinning={this.state.loading}>
  1104. <Table
  1105. columns={this.state.columnsrizhi}
  1106. dataSource={this.state.dataSourcerizhi}
  1107. pagination={false}
  1108. />
  1109. </Spin>
  1110. </div>
  1111. </Modal>
  1112. </div>
  1113. </div>
  1114. );
  1115. }
  1116. })
  1117. );
  1118. export default contractChange;