examine.jsx 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684
  1. import React from "react";
  2. import {
  3. Icon,
  4. Button,
  5. Input,
  6. Spin,
  7. Table,
  8. message,
  9. DatePicker,
  10. Upload,
  11. Form,
  12. Modal,
  13. Tabs,
  14. Col
  15. } from "antd";
  16. import $ from "jquery/src/ajax";
  17. import moment from "moment";
  18. import {
  19. getLiquidationStatus,
  20. getApprovedState,
  21. getProcessStatus,
  22. splitUrl,
  23. getjiedian,
  24. getboutique,
  25. getCuikuan,
  26. getProjectStatus,
  27. moneyVerify,
  28. ShowModal
  29. } from "@/tools.js";
  30. import "./customer.less";
  31. import ShowModalDiv from "@/showModal.jsx";
  32. //图片组件
  33. const PicturesWall = React.createClass({
  34. getInitialState() {
  35. return {
  36. previewVisible: false,
  37. previewImage: "",
  38. fileList: this.props.pictureUrl
  39. };
  40. },
  41. handleCancel() {
  42. this.setState({
  43. previewVisible: false
  44. });
  45. },
  46. handlePreview(file) {
  47. this.setState({
  48. previewImage: file.url || file.thumbUrl,
  49. previewVisible: true
  50. });
  51. },
  52. handleChange(info) {
  53. let fileList = info.fileList;
  54. this.setState({
  55. fileList
  56. });
  57. this.props.fileList(fileList);
  58. },
  59. componentWillReceiveProps(nextProps) {
  60. this.state.fileList = nextProps.pictureUrl;
  61. this.state.pojectApplicationUrl = undefined;
  62. },
  63. render() {
  64. const { previewVisible, previewImage, fileList } = this.state;
  65. const uploadButton = (
  66. <div>
  67. <Icon type="plus" />
  68. <div className="ant-upload-text">点击上传</div>
  69. </div>
  70. );
  71. return (
  72. <div style={{ display: "inline-block" }}>
  73. <Upload
  74. action={
  75. globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"
  76. }
  77. data={{ sign: "order_outsource" }}
  78. listType="picture-card"
  79. fileList={fileList}
  80. onPreview={this.handlePreview}
  81. onChange={this.handleChange}
  82. >
  83. {fileList.length >= 18 ? null : uploadButton}
  84. </Upload>
  85. <Modal
  86. maskClosable={false}
  87. visible={previewVisible}
  88. footer={null}
  89. onCancel={this.handleCancel}
  90. >
  91. <img alt="example" style={{ width: "100%" }} src={previewImage} />
  92. </Modal>
  93. </div>
  94. );
  95. }
  96. });
  97. const IntentionCustomer = Form.create()(
  98. React.createClass({
  99. loadData(pageNo) {
  100. this.setState({
  101. visitModul: false,
  102. loading: true,
  103. ispage: pageNo,
  104. modalVisible: false
  105. });
  106. $.ajax({
  107. method: "get",
  108. dataType: "json",
  109. crossDomain: false,
  110. url: globalConfig.context + "/api/admin/newOrder/orderNewList",
  111. data: {
  112. pageNo: pageNo || 1,
  113. pageSize: this.state.pagination.pageSize,
  114. specially: 1, //审核列表
  115. name: this.state.customerName, //名称
  116. orderNo: this.state.orderNoSearch, //订单编号
  117. starTime: this.state.releaseDate[0], //开始时间
  118. endTime: this.state.releaseDate[1] //结束时间
  119. },
  120. success: function(data) {
  121. ShowModal(this);
  122. let theArr = [];
  123. if (data.error.length || data.data.list == "") {
  124. if (data.error && data.error.length) {
  125. message.warning(data.error[0].message);
  126. }
  127. } else {
  128. for (let i = 0; i < data.data.list.length; i++) {
  129. let thisdata = data.data.list[i];
  130. theArr.push({
  131. key: i,
  132. id: thisdata.id, //用户ID
  133. orderNo: thisdata.orderNo, //订单编号
  134. totalAmount: thisdata.totalAmount, //签单金额
  135. processStatus: thisdata.processStatus, //流程状态
  136. liquidationStatus: thisdata.liquidationStatus, //结算状态
  137. approval: thisdata.approval, //特批状态
  138. signDate: thisdata.signDate, //签单时间
  139. userName: thisdata.userName, //客户名称
  140. salesmanName: thisdata.salesmanName, //营销员名称
  141. financeName: thisdata.financeName, //财务名称
  142. createDate: thisdata.createDate, //下单时间
  143. depName: thisdata.depName,
  144. orderStatus: thisdata.orderStatus
  145. });
  146. }
  147. this.state.pagination.total = data.data.totalCount;
  148. this.state.pagination.current = data.data.pageNo;
  149. }
  150. if (data.data && data.data.list && !data.data.list.length) {
  151. this.state.pagination.total = 0;
  152. }
  153. this.setState({
  154. dataSource: theArr,
  155. pageNo: pageNo,
  156. pagination: this.state.pagination,
  157. selectedRowKeys: []
  158. });
  159. }.bind(this)
  160. }).always(
  161. function() {
  162. this.setState({
  163. loading: false
  164. });
  165. }.bind(this)
  166. );
  167. },
  168. getInitialState() {
  169. return {
  170. page: 1,
  171. releaseDate: [],
  172. selectedRowKeys: [],
  173. pictureUrl: [],
  174. attachmentUrl: [],
  175. paginations: false,
  176. activeKey: "1",
  177. confirmLoading: false,
  178. aloading: false,
  179. pagination: {
  180. defaultCurrent: 1,
  181. defaultPageSize: 10,
  182. showQuickJumper: true,
  183. pageSize: 10,
  184. onChange: function(page) {
  185. this.loadData(page);
  186. }.bind(this),
  187. showTotal: function(total) {
  188. return "共" + total + "条数据";
  189. }
  190. },
  191. columns: [
  192. {
  193. title: "订单编号",
  194. dataIndex: "orderNo",
  195. key: "orderNo"
  196. },
  197. {
  198. title: "下单时间",
  199. dataIndex: "createDate",
  200. key: "createTime"
  201. },
  202. {
  203. title: "合同签订时间",
  204. dataIndex: "signDate",
  205. key: "signDate"
  206. },
  207. {
  208. title: "客户名称",
  209. dataIndex: "userName",
  210. key: "userName",
  211. render: text => {
  212. return text && text.length > 9 ? text.substr(0, 9) + "..." : text;
  213. }
  214. },
  215. {
  216. title: "流程状态",
  217. dataIndex: "processStatus",
  218. key: "processStatus",
  219. render: text => {
  220. return getProcessStatus(text);
  221. }
  222. },
  223. {
  224. title: "订单部门",
  225. dataIndex: "depName",
  226. key: "depName"
  227. },
  228. {
  229. title: "签单金额(万元)",
  230. dataIndex: "totalAmount",
  231. key: "totalAmount"
  232. },
  233. {
  234. title: "结算状态",
  235. dataIndex: "liquidationStatus",
  236. key: "liquidationStatus",
  237. render: text => {
  238. return getLiquidationStatus(text);
  239. }
  240. },
  241. {
  242. title: "是否特批",
  243. dataIndex: "approval",
  244. key: "approval",
  245. render: text => {
  246. return getApprovedState(text);
  247. }
  248. },
  249. {
  250. title: "订单负责人",
  251. dataIndex: "salesmanName",
  252. key: "salesmanName"
  253. },
  254. {
  255. title: "财务负责人",
  256. dataIndex: "financeName",
  257. key: "financeName"
  258. }
  259. ],
  260. data: [],
  261. dataSource: [],
  262. columnsX: [
  263. {
  264. title: "业务项目名称",
  265. dataIndex: "commodityName",
  266. key: "commodityName"
  267. },
  268. {
  269. title: "项目类别",
  270. dataIndex: "cname",
  271. key: "cname"
  272. },
  273. {
  274. title: "项目数量",
  275. dataIndex: "commodityQuantity",
  276. key: "commodityQuantity"
  277. },
  278. {
  279. title: "金额(万元)",
  280. dataIndex: "commodityPrice",
  281. key: "commodityPrice"
  282. },
  283. {
  284. title: "负责人",
  285. dataIndex: "contacts",
  286. key: "contacts"
  287. },
  288. {
  289. title: "负责人电话",
  290. dataIndex: "contactsMobile",
  291. key: "contactsMobile"
  292. },
  293. {
  294. title: "项目状态",
  295. dataIndex: "projectStatus",
  296. key: "projectStatus",
  297. render: text => {
  298. return getProjectStatus(text);
  299. }
  300. },
  301. {
  302. title: "主要项目",
  303. dataIndex: "main",
  304. key: "main",
  305. render: text => {
  306. return text ? "是" : "否";
  307. }
  308. },
  309. {
  310. title: "项目说明",
  311. dataIndex: "taskComment",
  312. key: "taskComment",
  313. render: text => {
  314. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  315. }
  316. }
  317. ],
  318. columnsrizhi: [
  319. {
  320. title: "流程",
  321. dataIndex: "processName",
  322. key: "processName"
  323. },
  324. {
  325. title: "操作人",
  326. dataIndex: "adminName",
  327. key: "adminName"
  328. },
  329. {
  330. title: "时间",
  331. dataIndex: "createDate",
  332. key: "createDate"
  333. }
  334. ],
  335. dataSourceX: [],
  336. ContactsLists: [
  337. {
  338. title: "催款科目",
  339. dataIndex: "dunSubject",
  340. key: "dunSubject",
  341. render: text => {
  342. return getjiedian(text);
  343. }
  344. },
  345. {
  346. title: "金额(万)",
  347. dataIndex: "money",
  348. key: "money"
  349. },
  350. {
  351. title: "催款状态",
  352. dataIndex: "dunStatus",
  353. key: "dunStatus",
  354. render: text => {
  355. return getCuikuan(text);
  356. }
  357. }
  358. ]
  359. };
  360. },
  361. //页面加载函数
  362. componentWillMount() {
  363. this.loadData();
  364. },
  365. //整行点击
  366. tableRowClick(record) {
  367. this.setState({
  368. visible: true,
  369. orderStatus: record.orderStatus,
  370. id: record.id
  371. });
  372. this.xiangqing(record.orderNo);
  373. this.xiangmu(record.orderNo);
  374. this.jiedian(record.orderNo);
  375. },
  376. //点击打卡项目详情
  377. tableRowClickX(record) {
  378. this.setState({
  379. jid: record.id, //项目ID
  380. kid: record.commodityId, //商品ID
  381. commodityName: record.commodityName, //金额
  382. commodityPrice: record.commodityPrice, //金额
  383. commodityQuantity: record.commodityQuantity, //数量
  384. taskComment: record.taskComment, //备注
  385. main: record.main.toString(), //是否为主要
  386. addnextVisible: true,
  387. addState: 0
  388. });
  389. },
  390. //项目详情关闭
  391. nextCancel() {
  392. this.setState({
  393. addnextVisible: false
  394. });
  395. },
  396. //订单详情
  397. xiangqing(orderNos) {
  398. $.ajax({
  399. method: "get",
  400. dataType: "json",
  401. crossDomain: false,
  402. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  403. data: {
  404. orderNo: orderNos
  405. },
  406. success: function(data) {
  407. if (data.error.length || data.data.list == "") {
  408. if (data.error && data.error.length) {
  409. message.warning(data.error[0].message);
  410. }
  411. } else {
  412. let thisdata = data.data;
  413. this.setState({
  414. orderNo: thisdata.orderNo, //订单编号
  415. contractNo: thisdata.contractNo, //合同编号
  416. userName: thisdata.userName, //客户名称
  417. signDate: thisdata.signDate, //签单时间
  418. processStatus: thisdata.processStatus, //流程状态
  419. liquidationStatus: thisdata.liquidationStatus, //结算状态
  420. contacts: thisdata.contacts, //企业联系人
  421. contactMobile: thisdata.contactMobile, //联系人电话
  422. legalPerson: thisdata.legalPerson, //法人
  423. legalPersonTel: thisdata.legalPersonTel, //法人电话
  424. firstAmount: thisdata.firstAmount, //签单金额
  425. totalAmount: thisdata.totalAmount, //首付金额
  426. approval: thisdata.approval, //特批状态
  427. settlementAmount: thisdata.settlementAmount, //已收款项
  428. orderRemarks: thisdata.orderRemarks, //订单留言
  429. orgCodeUrl: thisdata.contractPictureUrl
  430. ? splitUrl(
  431. thisdata.contractPictureUrl,
  432. ",",
  433. globalConfig.avatarHost + "/upload"
  434. )
  435. : [], //图片地址
  436. salesmanName: thisdata.salesmanName, //营销员名称
  437. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  438. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  439. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  440. financeName: thisdata.financeName, //财务名称
  441. financeMobile: thisdata.financeMobile, //财务电话
  442. nowFinance: thisdata.nowFinance, //财务名称
  443. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  444. depName: thisdata.depName,
  445. outsource: thisdata.outsource == 0 ? "否" : "是"
  446. });
  447. }
  448. }.bind(this)
  449. }).always(
  450. function() {
  451. this.setState({
  452. loading: false
  453. });
  454. }.bind(this)
  455. );
  456. },
  457. //项目列表
  458. xiangmu(orderNos) {
  459. $.ajax({
  460. method: "get",
  461. dataType: "json",
  462. crossDomain: false,
  463. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  464. data: {
  465. orderNo: orderNos
  466. },
  467. success: function(data) {
  468. let theArr = [];
  469. if (data.error.length || data.data.list == "") {
  470. if (data.error && data.error.length) {
  471. message.warning(data.error[0].message);
  472. }
  473. } else {
  474. for (let i = 0; i < data.data.length; i++) {
  475. let thisdata = data.data[i];
  476. theArr.push({
  477. key: i,
  478. id: thisdata.id,
  479. orderNo: thisdata.orderNo, //订单编号
  480. commodityId: thisdata.commodityId, //项目ID
  481. commodityName: thisdata.commodityName, //项目名称
  482. cname: thisdata.cname, //项目类别
  483. commodityPrice: thisdata.commodityPrice, //项目价格
  484. commodityQuantity: thisdata.commodityQuantity, //项目数量
  485. main: thisdata.main, //是否为主要任务
  486. taskComment: thisdata.taskComment, //任务说明
  487. contacts: thisdata.contacts, //联系人
  488. contactsMobile: thisdata.contactsMobile, //联系人电话
  489. projectStatus: thisdata.projectStatus //项目状态
  490. });
  491. }
  492. }
  493. this.setState({
  494. dataSourceX: theArr
  495. });
  496. }.bind(this)
  497. }).always(
  498. function() {
  499. this.setState({
  500. loading: false
  501. });
  502. }.bind(this)
  503. );
  504. },
  505. rizhi() {
  506. console.log(this.state.orderNo);
  507. this.setState({
  508. loading: true
  509. });
  510. $.ajax({
  511. method: "get",
  512. dataType: "json",
  513. crossDomain: false,
  514. url: "/api/admin/newOrder/selectOrderLog",
  515. data: {
  516. orderNo: this.state.orderNo
  517. },
  518. success: function(data) {
  519. let theArr = [];
  520. let thisData = data.data;
  521. if (!thisData.length) {
  522. if (data.error && data.error.length) {
  523. message.warning(data.error[0].message);
  524. }
  525. thisData = {};
  526. } else {
  527. for (let i = 0; i < data.data.length; i++) {
  528. let thisdata = data.data[i];
  529. theArr.push({
  530. processName: thisdata.processName,
  531. adminName: thisdata.adminName,
  532. createDate: thisdata.createDate
  533. });
  534. }
  535. }
  536. this.setState({
  537. dataSourcerizhi: theArr
  538. });
  539. }.bind(this)
  540. }).always(
  541. function() {
  542. this.setState({
  543. loading: false
  544. });
  545. }.bind(this)
  546. );
  547. },
  548. getOrderLog() {
  549. this.setState({
  550. rizhivisible: true
  551. });
  552. this.rizhi();
  553. },
  554. closeOrderLog() {
  555. this.setState({
  556. rizhivisible: false
  557. });
  558. },
  559. //节点列表
  560. jiedian(orderNos) {
  561. $.ajax({
  562. method: "get",
  563. dataType: "json",
  564. crossDomain: false,
  565. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  566. data: {
  567. orderNo: orderNos
  568. },
  569. success: function(data) {
  570. let theArr = [];
  571. let thisData = [];
  572. if (data.error.length || data.data.list == "") {
  573. if (data.error && data.error.length) {
  574. message.warning(data.error[0].message);
  575. }
  576. } else {
  577. for (let i = 0; i < data.data.length; i++) {
  578. thisData = data.data[i];
  579. theArr.push({
  580. key: i,
  581. dunSubject: thisData.dunSubject
  582. ? thisData.dunSubject.toString()
  583. : "", //催款科目
  584. id: thisData.id, //节点Id
  585. money: thisData.money, //催款金额
  586. dunStatus: thisData.dunStatus //催款状态
  587. });
  588. }
  589. this.setState({
  590. contactList: theArr
  591. });
  592. }
  593. }.bind(this)
  594. }).always(
  595. function() {
  596. this.setState({
  597. loading: false
  598. });
  599. }.bind(this)
  600. );
  601. },
  602. //审核通过
  603. examOk() {
  604. $.ajax({
  605. method: "post",
  606. dataType: "json",
  607. crossDomain: false,
  608. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  609. data: {
  610. orderNo: this.state.orderNo,
  611. orderStatus: 2
  612. },
  613. success: function(data) {
  614. if (data.error.length || data.data.list == "") {
  615. if (data.error && data.error.length) {
  616. message.warning(data.error[0].message);
  617. }
  618. } else {
  619. message.success("该订单已通过审核~");
  620. this.setState({
  621. visible: false
  622. });
  623. this.reset();
  624. }
  625. }.bind(this)
  626. }).always(
  627. function() {
  628. this.setState({
  629. loading: false
  630. });
  631. }.bind(this)
  632. );
  633. },
  634. //通过发给外包
  635. outsourcing() {
  636. $.ajax({
  637. method: "post",
  638. dataType: "json",
  639. crossDomain: false,
  640. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  641. data: {
  642. orderNo: this.state.orderNo,
  643. orderStatus: 2,
  644. outsource: 1
  645. },
  646. success: function(data) {
  647. if (data.error.length || data.data.list == "") {
  648. if (data.error && data.error.length) {
  649. message.warning(data.error[0].message);
  650. }
  651. } else {
  652. message.success("该订单已通过审核~");
  653. this.setState({
  654. visible: false
  655. });
  656. this.reset();
  657. }
  658. }.bind(this)
  659. }).always(
  660. function() {
  661. this.setState({
  662. loading: false
  663. });
  664. }.bind(this)
  665. );
  666. },
  667. //审核不通过
  668. examOks() {
  669. this.setState({
  670. aloading: true
  671. });
  672. $.ajax({
  673. method: "post",
  674. dataType: "json",
  675. crossDomain: false,
  676. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  677. data: {
  678. orderNo: this.state.orderNo,
  679. orderStatus: 3,
  680. reason: this.state.reason
  681. },
  682. success: function(data) {
  683. if (data.error.length || data.data.list == "") {
  684. if (data.error && data.error.length) {
  685. message.warning(data.error[0].message);
  686. this.setState({
  687. aloading: true
  688. });
  689. }
  690. } else {
  691. message.success("该订单已被拒绝~");
  692. this.setState({
  693. visible: false,
  694. aloading: false,
  695. noVisible: false,
  696. reason: ""
  697. });
  698. this.reset();
  699. }
  700. }.bind(this)
  701. }).always(
  702. function() {
  703. this.setState({
  704. loading: false
  705. });
  706. }.bind(this)
  707. );
  708. },
  709. //点击拒绝
  710. examNo() {
  711. this.setState({
  712. noVisible: true
  713. });
  714. },
  715. callback(key) {
  716. let url = window.location.href.substring(7);
  717. this.setState({
  718. activeKey: key
  719. });
  720. if (this.state.pictureUrl.length) {
  721. let picArr = [];
  722. this.state.pictureUrl.map(function(item) {
  723. if (
  724. item.response &&
  725. item.response.data &&
  726. item.response.data.length
  727. ) {
  728. picArr.push(item.response.data);
  729. }
  730. });
  731. }
  732. if (key === "2") {
  733. this.setState({
  734. loading: true
  735. });
  736. $.ajax({
  737. method: "get",
  738. dataType: "json",
  739. crossDomain: false,
  740. url:
  741. globalConfig.context +
  742. "/api/admin/outsourceOrg/orderOutsourceDtails",
  743. data: {
  744. orderNo: this.state.orderNo
  745. },
  746. success: function(data) {
  747. if (data.data) {
  748. let thisdata = data.data;
  749. this.setState({
  750. id: thisdata.id,
  751. createTimes: thisdata.createTimes,
  752. auditTimes: thisdata.auditTimes,
  753. remarks: thisdata.remarks,
  754. attachmentUrl: thisdata.attachmentUrl
  755. ? splitUrl(
  756. thisdata.attachmentUrl,
  757. ",",
  758. globalConfig.avatarHost + "/upload",
  759. url
  760. )
  761. : [],
  762. fileUrl: thisdata.attachmentUrl
  763. ? splitUrl(
  764. thisdata.attachmentUrl,
  765. ",",
  766. globalConfig.avatarHost + "/upload",
  767. url
  768. )
  769. : [],
  770. pictureUrl: thisdata.pictureUrl
  771. ? splitUrl(
  772. thisdata.pictureUrl,
  773. ",",
  774. globalConfig.avatarHost + "/upload",
  775. url
  776. )
  777. : [], //图片地址
  778. amount: thisdata.amount,
  779. companyName: thisdata.companyName,
  780. outsourceRemarks: thisdata.outsourceRemarks,
  781. unitNumber: thisdata.unitNumber,
  782. unitPrice: thisdata.unitPrice
  783. });
  784. }
  785. }.bind(this)
  786. }).always(
  787. function() {
  788. this.setState({
  789. loading: false
  790. });
  791. }.bind(this)
  792. );
  793. }
  794. },
  795. getUrl(url) {
  796. let theorgCodeUrl = [];
  797. if (url.length) {
  798. let picArr = [];
  799. url.map(function(item) {
  800. if (
  801. item.response &&
  802. item.response.data &&
  803. item.response.data.length
  804. ) {
  805. picArr.push(item.response.data);
  806. }
  807. });
  808. theorgCodeUrl = picArr.join(",");
  809. }
  810. return theorgCodeUrl;
  811. },
  812. sureOut() {
  813. if (!this.state.companyName) {
  814. message.warning("公司名称不能为空");
  815. return;
  816. }
  817. if (!this.state.unitPrice) {
  818. message.warning("单价不能为空");
  819. return;
  820. }
  821. if(moneyVerify(this.state.unitPrice)) {
  822. return
  823. }
  824. if (!this.state.unitNumber) {
  825. message.warning("数量不能为空");
  826. return;
  827. }
  828. if (!this.state.amount) {
  829. message.warning("总金额不能为空");
  830. return;
  831. }
  832. if (moneyVerify(this.state.amount)) {
  833. return;
  834. }
  835. if (!this.state.outsourceRemarks) {
  836. message.warning("备注不能为空");
  837. return;
  838. }
  839. if (this.state.pictureUrl.length === 0) {
  840. message.warning("合同扫描件不能为空");
  841. return;
  842. }
  843. $.ajax({
  844. method: "POST",
  845. dataType: "json",
  846. crossDomain: false,
  847. url: globalConfig.context + "/api/admin/outsourceOrg/auditOutsource",
  848. data: {
  849. id: this.state.id,
  850. orderNo: this.state.orderNo,
  851. companyName: this.state.companyName,
  852. amount: this.state.amount,
  853. outsourceRemarks: this.state.outsourceRemarks,
  854. unitNumber: this.state.unitNumber,
  855. unitPrice: this.state.unitPrice,
  856. attachmentUrl: this.getUrl(this.state.attachmentUrl).length
  857. ? this.getUrl(this.state.attachmentUrl)
  858. : "",
  859. orderStatus: 2,
  860. pictureUrl: this.getUrl(this.state.pictureUrl).length
  861. ? this.getUrl(this.state.pictureUrl)
  862. : ""
  863. }
  864. }).done(
  865. function(data) {
  866. this.setState({
  867. loading: false
  868. });
  869. if (!data.error.length) {
  870. message.success("发起成功!");
  871. this.outReset();
  872. this.visitCancel();
  873. } else {
  874. message.warning(data.error[0].message);
  875. }
  876. }.bind(this)
  877. );
  878. },
  879. //关闭输入理由框
  880. noCancel() {
  881. this.setState({
  882. noVisible: false,
  883. aloading: false,
  884. reason: ""
  885. });
  886. },
  887. //搜索
  888. search() {
  889. this.setState({
  890. //signBillVisible:false
  891. });
  892. this.loadData();
  893. },
  894. //重置
  895. reset() {
  896. this.setState({
  897. signBillVisible: false
  898. });
  899. this.state.orderNo = "";
  900. this.state.customerName = "";
  901. this.state.releaseDate[0] = undefined;
  902. this.state.releaseDate[1] = undefined;
  903. this.state.approval = undefined;
  904. this.loadData(1);
  905. },
  906. outReset() {
  907. this.setState({
  908. companyName: "",
  909. amount: "",
  910. unitPrice: "",
  911. unitNumber: "",
  912. outsourceRemarks: "",
  913. attachmentUrl: [],
  914. pictureUrl: []
  915. });
  916. },
  917. resets() {
  918. this.state.orderNo = "";
  919. this.state.customerName = "";
  920. this.state.releaseDate[0] = undefined;
  921. this.state.releaseDate[1] = undefined;
  922. },
  923. getOrgCodeUrl(e) {
  924. this.setState({ pictureUrl: e });
  925. },
  926. //关闭详情
  927. visitCancel() {
  928. this.setState(
  929. {
  930. visible: false
  931. },
  932. () => {
  933. this.setState({
  934. activeKey: "1"
  935. });
  936. }
  937. );
  938. this.resets();
  939. this.loadData();
  940. },
  941. visitOk() {
  942. this.setState({
  943. visible: false
  944. });
  945. this.resets();
  946. },
  947. render() {
  948. const formItemLayout = {
  949. labelCol: { span: 8 },
  950. wrapperCol: { span: 14 }
  951. };
  952. const FormItem = Form.Item;
  953. const { TabPane } = Tabs;
  954. const { TextArea } = Input;
  955. const { RangePicker } = DatePicker;
  956. return (
  957. <div className="user-content">
  958. <ShowModalDiv ShowModal={this.state.showModal} />
  959. <div className="content-title">
  960. <span>订单审核</span>
  961. </div>
  962. <div className="user-search">
  963. <Input
  964. placeholder="客户名称"
  965. style={{ width: "150px", marginBottom: "10px" }}
  966. value={this.state.customerName}
  967. onChange={e => {
  968. this.setState({ customerName: e.target.value });
  969. }}
  970. />
  971. <Input
  972. placeholder="订单编号"
  973. style={{ width: "150px" }}
  974. value={this.state.orderNoSearch}
  975. onChange={e => {
  976. this.setState({ orderNoSearch: e.target.value });
  977. }}
  978. />
  979. <span style={{ marginRight: "10px" }}>下单时间 :</span>
  980. <RangePicker
  981. value={[
  982. this.state.releaseDate[0]
  983. ? moment(this.state.releaseDate[0])
  984. : null,
  985. this.state.releaseDate[1]
  986. ? moment(this.state.releaseDate[1])
  987. : null
  988. ]}
  989. onChange={(data, dataString) => {
  990. this.setState({ releaseDate: dataString });
  991. }}
  992. />
  993. <Button
  994. type="primary"
  995. onClick={this.search}
  996. style={{ marginLeft: "10px" }}
  997. >
  998. 搜索
  999. </Button>
  1000. <Button onClick={this.reset}>重置</Button>
  1001. <div className="patent-table">
  1002. <Spin spinning={this.state.loading}>
  1003. <Table
  1004. columns={this.state.columns}
  1005. dataSource={this.state.dataSource}
  1006. pagination={this.state.pagination}
  1007. onRowClick={this.tableRowClick}
  1008. />
  1009. </Spin>
  1010. </div>
  1011. <Modal
  1012. className="customeDetails"
  1013. footer=""
  1014. width="900px"
  1015. visible={this.state.visible}
  1016. onOk={this.visitOk}
  1017. onCancel={this.visitCancel}
  1018. >
  1019. <Tabs activeKey={this.state.activeKey} onChange={this.callback}>
  1020. <TabPane tab="订单详情" key="1">
  1021. <Form
  1022. layout="horizontal"
  1023. onSubmit={this.handleSubmit}
  1024. id="demand-form"
  1025. style={{ paddingBottom: "40px" }}
  1026. >
  1027. <Spin spinning={this.state.loading}>
  1028. <div className="clearfix">
  1029. <FormItem
  1030. className="half-item"
  1031. {...formItemLayout}
  1032. label="订单编号"
  1033. >
  1034. <span>{this.state.orderNo}</span>
  1035. </FormItem>
  1036. <FormItem
  1037. className="half-item"
  1038. {...formItemLayout}
  1039. label="合同编号"
  1040. >
  1041. <span>{this.state.contractNo}</span>
  1042. </FormItem>
  1043. <FormItem
  1044. className="half-item"
  1045. {...formItemLayout}
  1046. label="客户名称"
  1047. >
  1048. <span>{this.state.userName}</span>
  1049. </FormItem>
  1050. <FormItem
  1051. className="half-item"
  1052. {...formItemLayout}
  1053. label="合同签订时间"
  1054. >
  1055. <span>{this.state.signDate}</span>
  1056. </FormItem>
  1057. <FormItem
  1058. className="half-item"
  1059. {...formItemLayout}
  1060. label="流程状态"
  1061. >
  1062. <span>
  1063. {getProcessStatus(this.state.processStatus)}
  1064. </span>
  1065. </FormItem>
  1066. <FormItem
  1067. className="half-item"
  1068. {...formItemLayout}
  1069. label="结算状态"
  1070. >
  1071. <span>
  1072. {getLiquidationStatus(this.state.liquidationStatus)}
  1073. </span>
  1074. </FormItem>
  1075. <FormItem
  1076. className="half-item"
  1077. {...formItemLayout}
  1078. label="企业联系人"
  1079. >
  1080. <span>{this.state.contacts}</span>
  1081. </FormItem>
  1082. <FormItem
  1083. className="half-item"
  1084. {...formItemLayout}
  1085. label="联系人电话"
  1086. >
  1087. <span>{this.state.contactMobile}</span>
  1088. </FormItem>
  1089. <FormItem
  1090. className="half-item"
  1091. {...formItemLayout}
  1092. label="企业法人"
  1093. >
  1094. <span>{this.state.legalPerson}</span>
  1095. </FormItem>
  1096. <FormItem
  1097. className="half-item"
  1098. {...formItemLayout}
  1099. label="法人电话"
  1100. >
  1101. <span>{this.state.legalPersonTel}</span>
  1102. </FormItem>
  1103. <FormItem
  1104. className="half-item"
  1105. {...formItemLayout}
  1106. label="签单金额(万元)"
  1107. >
  1108. <span>{this.state.totalAmount}</span>
  1109. </FormItem>
  1110. <FormItem
  1111. className="half-item"
  1112. {...formItemLayout}
  1113. label="首付金额(万元)"
  1114. >
  1115. <span>{this.state.firstAmount}</span>
  1116. </FormItem>
  1117. <FormItem
  1118. className="half-item"
  1119. {...formItemLayout}
  1120. label="特批立项"
  1121. >
  1122. <span>{getApprovedState(this.state.approval)}</span>
  1123. </FormItem>
  1124. <FormItem
  1125. className="half-item"
  1126. {...formItemLayout}
  1127. label="已收款项(万元)"
  1128. >
  1129. <span>{this.state.settlementAmount}</span>
  1130. </FormItem>
  1131. <FormItem
  1132. className="half-item"
  1133. {...formItemLayout}
  1134. label="订单部门"
  1135. >
  1136. <span>{this.state.depName}</span>
  1137. </FormItem>
  1138. <FormItem
  1139. className="half-item"
  1140. {...formItemLayout}
  1141. label="是否外包"
  1142. >
  1143. {this.state.outsource}
  1144. </FormItem>
  1145. <div className="clearfix">
  1146. <FormItem
  1147. labelCol={{ span: 4 }}
  1148. wrapperCol={{ span: 16 }}
  1149. label="订单留言"
  1150. >
  1151. <p style={{ width: 500, wordWrap: "break-word" }}>
  1152. {this.state.orderRemarks}
  1153. </p>
  1154. </FormItem>
  1155. </div>
  1156. <div className="clearfix">
  1157. <FormItem
  1158. labelCol={{ span: 4 }}
  1159. wrapperCol={{ span: 18 }}
  1160. label="合同扫描件"
  1161. >
  1162. <Upload
  1163. className="demandDetailShow-upload"
  1164. listType="picture-card"
  1165. fileList={this.state.orgCodeUrl}
  1166. onPreview={file => {
  1167. this.setState({
  1168. previewImage: file.url || file.thumbUrl,
  1169. previewVisible: true
  1170. });
  1171. }}
  1172. ></Upload>
  1173. <Modal
  1174. maskClosable={false}
  1175. footer={null}
  1176. visible={this.state.previewVisible}
  1177. onCancel={() => {
  1178. this.setState({ previewVisible: false });
  1179. }}
  1180. >
  1181. <img
  1182. alt=""
  1183. style={{ width: "100%" }}
  1184. src={this.state.previewImage || ""}
  1185. />
  1186. </Modal>
  1187. <Button
  1188. style={{
  1189. float: "right",
  1190. marginRight: "140px",
  1191. marginTop: "20px"
  1192. }}
  1193. onClick={this.getOrderLog}
  1194. >
  1195. 查看订单日志
  1196. </Button>
  1197. </FormItem>
  1198. </div>
  1199. <div className="clearfix">
  1200. <FormItem
  1201. className="half-item"
  1202. {...formItemLayout}
  1203. label="订单负责人"
  1204. >
  1205. <span>{this.state.salesmanName}</span>
  1206. </FormItem>
  1207. <FormItem
  1208. className="half-item"
  1209. {...formItemLayout}
  1210. label="订单负责人电话"
  1211. >
  1212. <span>{this.state.salesmanMobile}</span>
  1213. </FormItem>
  1214. </div>
  1215. <div className="clearfix">
  1216. <FormItem
  1217. className="half-item"
  1218. {...formItemLayout}
  1219. label="当前财务负责人"
  1220. >
  1221. <span>{this.state.nowFinance}</span>
  1222. </FormItem>
  1223. <FormItem
  1224. className="half-item"
  1225. {...formItemLayout}
  1226. label="当前财务负责人电话"
  1227. >
  1228. <span>{this.state.nowFinanceMobile}</span>
  1229. </FormItem>
  1230. </div>
  1231. <div className="clearfix">
  1232. <FormItem
  1233. className="half-item"
  1234. {...formItemLayout}
  1235. style={{ opacity: ".5" }}
  1236. label="原订单负责人"
  1237. >
  1238. <span>{this.state.oldSalesmanName}</span>
  1239. </FormItem>
  1240. <FormItem
  1241. className="half-item"
  1242. {...formItemLayout}
  1243. style={{ opacity: ".5" }}
  1244. label="原订单负责人电话"
  1245. >
  1246. <span>{this.state.oldSalesmanMobile}</span>
  1247. </FormItem>
  1248. </div>
  1249. <div className="clearfix">
  1250. <FormItem
  1251. className="half-item"
  1252. style={{ opacity: ".5" }}
  1253. {...formItemLayout}
  1254. label="实际财务操作人"
  1255. >
  1256. <span>{this.state.financeName}</span>
  1257. </FormItem>
  1258. <FormItem
  1259. className="half-item"
  1260. {...formItemLayout}
  1261. style={{ opacity: ".5" }}
  1262. label="实际财务操作人电话"
  1263. >
  1264. <span>{this.state.financeMobile}</span>
  1265. </FormItem>
  1266. </div>
  1267. <div>
  1268. <span
  1269. style={{ marginLeft: "50px", fontSize: "20px" }}
  1270. >
  1271. 催款节点
  1272. </span>
  1273. {this.state.processStatus == 0 ? (
  1274. <Button
  1275. type="primary"
  1276. onClick={this.addcontact}
  1277. style={{
  1278. float: "right",
  1279. marginRight: "50px",
  1280. marginBottom: "15px"
  1281. }}
  1282. >
  1283. 添加催款节点
  1284. </Button>
  1285. ) : (
  1286. ""
  1287. )}
  1288. </div>
  1289. <div className="clearfix">
  1290. <Spin spinning={this.state.loading}>
  1291. <Form layout="horizontal" id="demand-form">
  1292. <Table
  1293. pagination={false}
  1294. columns={this.state.ContactsLists}
  1295. dataSource={this.state.contactList}
  1296. />
  1297. <Col
  1298. span={24}
  1299. offset={9}
  1300. style={{ marginTop: "15px" }}
  1301. ></Col>
  1302. </Form>
  1303. </Spin>
  1304. </div>
  1305. <div>
  1306. <span
  1307. style={{ marginLeft: "50px", fontSize: "20px" }}
  1308. >
  1309. 项目业务
  1310. </span>
  1311. {this.state.processStatus == 0 ? (
  1312. <Button
  1313. type="primary"
  1314. onClick={this.addDetailed}
  1315. style={{
  1316. float: "right",
  1317. marginRight: "50px",
  1318. marginBottom: "15px"
  1319. }}
  1320. >
  1321. 添加项目明细
  1322. </Button>
  1323. ) : (
  1324. ""
  1325. )}
  1326. </div>
  1327. <div className="patent-table">
  1328. <Spin spinning={this.state.loading}>
  1329. <Table
  1330. columns={this.state.columnsX}
  1331. dataSource={this.state.dataSourceX}
  1332. pagination={this.state.paginations}
  1333. onRowClick={this.tableRowClickX}
  1334. />
  1335. </Spin>
  1336. </div>
  1337. <div className="addSave" style={{ marginTop: "15px" }}>
  1338. <Button
  1339. type="primary"
  1340. onClick={this.examOk}
  1341. style={{ marginLeft: "200px" }}
  1342. htmlType="submit"
  1343. >
  1344. 通过
  1345. </Button>
  1346. <Button
  1347. type="primary"
  1348. onClick={this.examNo}
  1349. style={{ marginLeft: "50px" }}
  1350. htmlType="submit"
  1351. >
  1352. 驳回
  1353. </Button>
  1354. <Button
  1355. type="ghost"
  1356. onClick={this.visitCancel}
  1357. style={{ marginLeft: "50px" }}
  1358. >
  1359. 取消
  1360. </Button>
  1361. {/*<Button className='warn-button' type="primary" onClick={this.outsourcing} style={{marginLeft:"50px"}}>通过不走总部</Button>
  1362. <p className='hint'>提示:高于总部价格,费用个人承担!</p>*/}
  1363. </div>
  1364. </div>
  1365. </Spin>
  1366. </Form>
  1367. </TabPane>
  1368. <TabPane tab="外包(不走总部)" key="2">
  1369. <div className="clearfix">
  1370. <FormItem
  1371. className="half-item"
  1372. {...formItemLayout}
  1373. label={
  1374. <span>
  1375. <strong style={{ color: "#f00" }}>*</strong>外包公司
  1376. </span>
  1377. }
  1378. >
  1379. <Input
  1380. value={this.state.companyName}
  1381. onChange={e => {
  1382. this.setState({
  1383. companyName: e.target.value
  1384. });
  1385. }}
  1386. placeholder="请填写外包公司名称"
  1387. />
  1388. </FormItem>
  1389. <span className="tip">如多个公司,请用间隔</span>
  1390. </div>
  1391. <div className="clearfix">
  1392. <FormItem
  1393. className="half-item"
  1394. {...formItemLayout}
  1395. label={
  1396. <span>
  1397. <strong style={{ color: "#f00" }}>*</strong>单价(万元)
  1398. </span>
  1399. }
  1400. >
  1401. <Input
  1402. value={this.state.unitPrice}
  1403. onChange={e => {
  1404. this.setState({
  1405. unitPrice: e.target.value
  1406. });
  1407. }}
  1408. placeholder="请填写单价"
  1409. />
  1410. </FormItem>
  1411. </div>
  1412. <div className="clearfix">
  1413. <FormItem
  1414. className="half-item"
  1415. {...formItemLayout}
  1416. label={
  1417. <span>
  1418. <strong style={{ color: "#f00" }}>*</strong>数量(个)
  1419. </span>
  1420. }
  1421. >
  1422. <Input
  1423. value={this.state.unitNumber}
  1424. onChange={e => {
  1425. this.setState({
  1426. unitNumber: e.target.value
  1427. });
  1428. }}
  1429. placeholder="请填写数量"
  1430. />
  1431. </FormItem>
  1432. </div>
  1433. <div className="clearfix">
  1434. <FormItem
  1435. className="half-item"
  1436. {...formItemLayout}
  1437. label={
  1438. <span>
  1439. <strong style={{ color: "#f00" }}>*</strong>
  1440. 总金额(万元)
  1441. </span>
  1442. }
  1443. >
  1444. <Input
  1445. value={this.state.amount}
  1446. onChange={e => {
  1447. this.setState({
  1448. amount: e.target.value
  1449. });
  1450. }}
  1451. placeholder="请填写本次外包公司的价格"
  1452. />
  1453. </FormItem>
  1454. </div>
  1455. {/*<div className="clearfix">
  1456. <FormItem className="half-item"
  1457. {...formItemLayout}
  1458. label="上传协议文件" style={{height:"auto"}}>
  1459. <Upload header={{authorization: 'authorization-text'}} action={globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"}
  1460. data={(e)=>{
  1461. return {
  1462. 'sign': e.name.substring(0,e.name.lastIndexOf("."))
  1463. }
  1464. }}
  1465. fileList={this.state.attachmentUrl}
  1466. onChange={(e)=>{
  1467. this.setState({attachmentUrl:e.fileList})
  1468. }}>
  1469. {this.state.attachmentUrl.length>1?null:<Button>
  1470. <Icon type="upload" /> 点击上传
  1471. </Button>}
  1472. </Upload>
  1473. <span className="tip" style={{display:"inline-block"}}>支持文件格式: doc,excel,ppt</span>
  1474. </FormItem>
  1475. </div>*/}
  1476. <div className="clearfix">
  1477. <FormItem
  1478. className="half-item"
  1479. style={{ height: "auto" }}
  1480. {...formItemLayout}
  1481. label={
  1482. <span>
  1483. <strong style={{ color: "#f00" }}>*</strong>备注
  1484. </span>
  1485. }
  1486. >
  1487. <TextArea
  1488. rows={4}
  1489. value={this.state.outsourceRemarks}
  1490. onChange={e => {
  1491. this.setState({
  1492. outsourceRemarks: e.target.value
  1493. });
  1494. }}
  1495. placeholder="请输入备注"
  1496. />
  1497. </FormItem>
  1498. </div>
  1499. <p
  1500. className="tip"
  1501. style={{
  1502. paddingBottom: "12px",
  1503. width: "240px",
  1504. marginLeft: "145px"
  1505. }}
  1506. >
  1507. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  1508. </p>
  1509. <div className="clearfix">
  1510. <FormItem
  1511. labelCol={{ span: 4 }}
  1512. wrapperCol={{ span: 18 }}
  1513. label={
  1514. <span>
  1515. <strong style={{ color: "#f00" }}>*</strong>
  1516. 合同/协议扫描件
  1517. <span style={{ color: "#f00" }}>(外包合同)</span>
  1518. </span>
  1519. }
  1520. >
  1521. <PicturesWall
  1522. fileList={this.getOrgCodeUrl}
  1523. pictureUrl={this.state.pictureUrl}
  1524. />
  1525. <p>请上传与外包公司签订的合同协议</p>
  1526. <p>图片建议:要清晰。</p>
  1527. </FormItem>
  1528. </div>
  1529. <div className="clearfix">
  1530. <div
  1531. style={{ display: "inline-black", textAlign: "center" }}
  1532. >
  1533. <Button type="primary" onClick={this.sureOut}>
  1534. 确认发起外包,不通过总部
  1535. </Button>
  1536. <p className="tip">提示:高于总部价格,费用个人承担</p>
  1537. </div>
  1538. </div>
  1539. </TabPane>
  1540. </Tabs>
  1541. </Modal>
  1542. <Modal
  1543. maskClosable={false}
  1544. visible={this.state.addnextVisible}
  1545. onOk={this.nextCancel}
  1546. onCancel={this.nextCancel}
  1547. confirmLoading={this.state.confirmLoading}
  1548. width="800px"
  1549. title={"项目任务详情"}
  1550. footer=""
  1551. className="admin-desc-content"
  1552. >
  1553. <Form layout="horizontal" id="demand-form">
  1554. <Spin spinning={this.state.loading}>
  1555. <div className="clearfix">
  1556. <FormItem
  1557. className="half-item"
  1558. {...formItemLayout}
  1559. label="项目名称"
  1560. >
  1561. <span>{this.state.commodityName}</span>
  1562. </FormItem>
  1563. <FormItem
  1564. className="half-item"
  1565. {...formItemLayout}
  1566. label="项目数量"
  1567. >
  1568. <span>{this.state.commodityQuantity}</span>
  1569. </FormItem>
  1570. <FormItem
  1571. className="half-item"
  1572. {...formItemLayout}
  1573. label="金额(万元)"
  1574. >
  1575. <span>{this.state.commodityPrice}</span>
  1576. </FormItem>
  1577. <FormItem
  1578. className="half-item"
  1579. {...formItemLayout}
  1580. label="主要项目"
  1581. >
  1582. <span>{getboutique(this.state.main)}</span>
  1583. </FormItem>
  1584. <div className="clearfix">
  1585. <FormItem
  1586. labelCol={{ span: 4 }}
  1587. wrapperCol={{ span: 16 }}
  1588. label="服务说明"
  1589. >
  1590. <span>{this.state.taskComment}</span>
  1591. </FormItem>
  1592. </div>
  1593. </div>
  1594. </Spin>
  1595. </Form>
  1596. </Modal>
  1597. <Modal
  1598. maskClosable={false}
  1599. visible={this.state.noVisible}
  1600. onOk={this.handleOk}
  1601. onCancel={this.noCancel}
  1602. width="400px"
  1603. title={"拒绝理由"}
  1604. footer=""
  1605. className="admin-desc-content"
  1606. confirmLoading={this.state.confirmLoading}
  1607. >
  1608. <Form layout="horizontal" id="demand-form">
  1609. <Spin spinning={this.state.loading}>
  1610. <div className="clearfix">
  1611. <FormItem
  1612. labelCol={{ span: 4 }}
  1613. wrapperCol={{ span: 16 }}
  1614. label="拒绝理由"
  1615. >
  1616. <Input
  1617. type="textarea"
  1618. placeholder="请输入拒绝理由"
  1619. rows={4}
  1620. value={this.state.reason}
  1621. onChange={e => {
  1622. this.setState({ reason: e.target.value });
  1623. }}
  1624. />
  1625. </FormItem>
  1626. </div>
  1627. <div className="clearfix">
  1628. <Button
  1629. className="cancel"
  1630. type="primary"
  1631. onClick={this.examOks}
  1632. style={{ marginLeft: "50px" }}
  1633. htmlType="submit"
  1634. loading={this.state.aloading}
  1635. >
  1636. 确定
  1637. </Button>
  1638. <Button
  1639. className="cancel"
  1640. type="ghost"
  1641. onClick={this.noCancel}
  1642. style={{ marginLeft: "50px" }}
  1643. >
  1644. 取消
  1645. </Button>
  1646. </div>
  1647. </Spin>
  1648. </Form>
  1649. </Modal>
  1650. <Modal
  1651. visible={this.state.rizhivisible}
  1652. className="admin-desc-content"
  1653. width="800px"
  1654. maskClosable={false}
  1655. title="订单日志"
  1656. footer={null}
  1657. onCancel={this.closeOrderLog}
  1658. >
  1659. <div className="patent-table">
  1660. <Spin spinning={this.state.loading}>
  1661. <Table
  1662. columns={this.state.columnsrizhi}
  1663. dataSource={this.state.dataSourcerizhi}
  1664. pagination={false}
  1665. />
  1666. </Spin>
  1667. </div>
  1668. </Modal>
  1669. </div>
  1670. </div>
  1671. );
  1672. }
  1673. })
  1674. );
  1675. export default IntentionCustomer;