mySettlementDetaile.jsx 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. import React from 'react';
  2. import { Table, Modal, message, Spin, Input, Button, Form, Radio } from 'antd';
  3. import $ from 'jquery/src/ajax';
  4. import '../../userMangagement.less';
  5. import { getApprovedState, getPaymentState, getOrderState, getProjectState, getOrderChannel, getChangeState, getOrderType, getTransactionProject, getTransactionChannel } from '../../../../tools.js';
  6. const MySettlementDetaile = Form.create()(React.createClass({
  7. loadData(record) {
  8. this.state.data = [];
  9. this.setState({
  10. loading: true
  11. });
  12. $.ajax({
  13. method: "get",
  14. dataType: "json",
  15. crossDomain: false,
  16. url: globalConfig.context + '/api/admin/order/getOrderCommodity',
  17. data: {
  18. orderNo: record ? record.orderNo : this.props.datauser.orderNo
  19. },
  20. success: function (data) {
  21. let theArr = [];
  22. if (!data.data) {
  23. if (data.error && data.error.length) {
  24. message.warning(data.error[0].message);
  25. };
  26. } else {
  27. for (let i = 0; i < data.data.length; i++) {
  28. let thisdata = data.data[i];
  29. theArr.push({
  30. key: i,
  31. id: thisdata.id,
  32. orderNo: thisdata.orderNo,
  33. commodityName: thisdata.commodityName,
  34. commodityType: thisdata.commodityType,
  35. commodityMode: thisdata.commodityMode,
  36. commodityQuantity: thisdata.commodityQuantity,
  37. commodityPrice: thisdata.commodityPrice,
  38. discountPrice: thisdata.discountPrice,
  39. commodityFirstPayment: thisdata.commodityFirstPayment,
  40. createTimes: thisdata.createTimes,
  41. discountFirstPayment: thisdata.discountFirstPayment,
  42. remarks: thisdata.remarks,
  43. });
  44. };
  45. }
  46. this.setState({
  47. dataSource: theArr,
  48. });
  49. }.bind(this),
  50. }).always(function () {
  51. this.setState({
  52. loading: false
  53. });
  54. }.bind(this));
  55. },
  56. getInitialState() {
  57. return {
  58. loading: false,
  59. visible: false,
  60. contractState: false,
  61. orgCodeUrl: [],
  62. lookflowList: [],
  63. checkedKeys: [],
  64. columns: [
  65. {
  66. title: '业务项目名称',
  67. dataIndex: 'commodityName',
  68. key: 'commodityName',
  69. render: (text, record) => {
  70. return <span>
  71. {text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}
  72. <div>
  73. {record.cSort == 6 && record.projectType == 1 && <span>(含{record.htMember == 1 ? '高新会员&' : ''}{record.additionalDeduction == 1 ? '加计扣除&' : ''}{record.rdAwardsubsidy == 1 ? '研发奖补' : ''})</span>}
  74. {record.cSort == 6 && ([0, 3].indexOf(record.projectType) > -1) && <span>(仅提供单边会员服务)</span>}
  75. {record.cSort == 6 && record.projectType == 2 && <span>(仅填报表,仅咨询,不出备查资料)</span>}
  76. {record.cSort == 3 && <span>{record.technologyProjectType==0?'(简易项目)':record.technologyProjectType==1?'(市区级)':record.technologyProjectType==2?'(省级)':record.technologyProjectType==3?'(国家级)':''}</span>}
  77. {record.cSort == 8 ? (record.type != 2 && record.patentType == 1) ? <span>(变更)</span> : <span>{record.ordinaryRisk == 0 ? '(普通申请)' : record.ordinaryRisk == 1 ? '(风险代理)' : ''}</span> : ""}
  78. {record.type == 2 && <span>({record.days == 0 ? '普通' : record.days == 1 ? '加急' : ''}{record.scheme == 0 ? '&无方案' : record.scheme == 1 ? '&有方案' : ''})</span>}
  79. </div>
  80. </span>
  81. }
  82. }, {
  83. title: '项目类别',
  84. dataIndex: 'commodityType',
  85. key: 'commodityType',
  86. render: (text) => {
  87. return (getOrderType(text))
  88. }
  89. }, {
  90. title: '项目数量',
  91. dataIndex: 'commodityQuantity',
  92. key: 'commodityQuantity'
  93. }, {
  94. title: '服务市价(万元)',
  95. dataIndex: 'commodityPrice',
  96. key: 'commodityPrice'
  97. }, {
  98. title: '实签价格(万元)',
  99. dataIndex: 'discountPrice',
  100. key: 'discountPrice'
  101. }, {
  102. title: '下单时间',
  103. dataIndex: 'createTimes',
  104. key: 'createTimes'
  105. }, {
  106. title: '项目说明',
  107. dataIndex: 'remarks',
  108. key: 'remarks',
  109. render: (text) => {
  110. return (text && text.length > 8 ? text.substr(0, 8) + '…' : text)
  111. }
  112. }
  113. ],
  114. flowList: [
  115. {
  116. title: '平台流水号',
  117. dataIndex: 'billNo',
  118. key: 'billNo',
  119. }, {
  120. title: '平台流水时间',
  121. dataIndex: 'createTime',
  122. key: 'createTime'
  123. }, {
  124. title: '流水金额(万元)',
  125. dataIndex: 'transactionAmount',
  126. key: 'transactionAmount'
  127. }, {
  128. title: '付款人名称',
  129. dataIndex: 'payerName',
  130. key: 'payerName'
  131. }, {
  132. title: '收款人名称',
  133. dataIndex: 'payeeName',
  134. key: 'payeeName'
  135. },
  136. {
  137. title: '流水科目',
  138. dataIndex: 'transactionSubject',
  139. key: 'transactionSubject',
  140. render: (text) => { return getTransactionProject(text) }
  141. }, {
  142. title: '流水外联',
  143. dataIndex: 'transactionChannel',
  144. key: 'transactionChannel',
  145. render: (text) => { return getTransactionChannel(text) }
  146. }, {
  147. title: '财务流水号',
  148. dataIndex: 'financialPayNo',
  149. key: 'financialPayNo',
  150. }, {
  151. title: '财务流水时间',
  152. dataIndex: 'financialPayTime',
  153. key: 'financialPayTime',
  154. }, {
  155. title: '流水确认',
  156. dataIndex: 'confirmSign',
  157. key: 'confirmSign',
  158. render: (text) => { return text ? '已确认' : '待确认' }
  159. }, {
  160. title: '确认时间',
  161. dataIndex: 'confirmTime',
  162. key: 'confirmTime',
  163. }
  164. ]
  165. };
  166. },
  167. //查看基本详情基本信息
  168. loaduser(record) {
  169. if (record) {
  170. this.state.orderList = []
  171. $.ajax({
  172. method: "get",
  173. dataType: "json",
  174. crossDomain: false,
  175. url: globalConfig.context + '/api/admin/order/getServiceOrderDetail',
  176. data: {
  177. orderNo: record.orderNo
  178. },
  179. success: function (data) {
  180. let thisData = data.data;
  181. if (!thisData) {
  182. if (data.error && data.error.length) {
  183. message.warning(data.error[0].message);
  184. };
  185. thisData = {};
  186. };
  187. this.setState({
  188. orderType: thisData.orderType,
  189. id: thisData.id,
  190. contractNo: thisData.contractNo,
  191. orderList: thisData,
  192. orderAmount: thisData.orderAmount,
  193. firstPayment: thisData.firstPayment,
  194. signTotalAmount: thisData.signTotalAmount,
  195. signFirstPayment: thisData.signFirstPayment,
  196. approval: thisData.approval == 0 ? thisData.approval.toString() : thisData.approval,
  197. orderRemarks: thisData.orderRemarks,
  198. orgCodeUrl: thisData.orgCodeUrl ? splitUrl(thisData.orgCodeUrl, ',', globalConfig.avatarHost + '/upload') : [],
  199. //签单
  200. orderNo: thisData.orderNo,//订单编号
  201. buyerName: thisData.buyerName,
  202. });
  203. }.bind(this),
  204. }).always(function () {
  205. this.setState({
  206. loading: false
  207. });
  208. }.bind(this));
  209. }
  210. },
  211. handleOk() {
  212. this.setState({
  213. visible: false,
  214. });
  215. this.props.closeDesc(false, true);
  216. },
  217. handleCancel() {
  218. this.setState({
  219. visible: false,
  220. });
  221. this.props.closeDesc(false);
  222. },
  223. componentWillMount() {
  224. },
  225. nextCancel() {
  226. this.setState({
  227. addnextVisible: false
  228. })
  229. },
  230. lookflow() {
  231. this.setState({
  232. loading: true,
  233. lookVisible: true,
  234. })
  235. this.state.lookSource = [];
  236. $.ajax({
  237. method: "get",
  238. dataType: "json",
  239. crossDomain: false,
  240. url: globalConfig.context + '/api/admin/order/getBillByOrderNo',
  241. data: {
  242. orderNo: this.props.datauser.orderNo,
  243. },
  244. success: function (data) {
  245. let theArr = [];
  246. if (!data.data) {
  247. if (data.error && data.error.length) {
  248. message.warning(data.error[0].message);
  249. };
  250. } else {
  251. for (let i = 0; i < data.data.length; i++) {
  252. let thisdata = data.data[i];
  253. theArr.push({
  254. key: i,
  255. billNo: thisdata.billNo,
  256. transactionAmount: thisdata.transactionAmount,
  257. createTime: thisdata.createTime,
  258. transactionAmount: thisdata.transactionAmount,
  259. payerName: thisdata.payerName,
  260. payeeName: thisdata.payeeName,
  261. transactionSubject: thisdata.transactionSubject,
  262. transactionChannel: thisdata.transactionChannel,
  263. financialPayNo: thisdata.financialPayNo,
  264. financialPayTime: thisdata.financialPayTime,
  265. orderNo: thisdata.orderNo,
  266. departmentName: thisdata.departmentName,
  267. salesmanName: thisdata.salesmanName,
  268. financeName: thisdata.financeName,
  269. confirmSign: thisdata.confirmSign,
  270. deleteSign: thisdata.deleteSign,
  271. confirmTime: thisdata.confirmTime
  272. });
  273. };
  274. };
  275. this.setState({
  276. lookflowList: theArr,
  277. });
  278. }.bind(this),
  279. }).always(function () {
  280. this.setState({
  281. loading: false
  282. });
  283. }.bind(this));
  284. },
  285. //保存合同编号
  286. subContract(e) {
  287. e.preventDefault();
  288. this.setState({
  289. loading: true
  290. });
  291. let api = '/api/admin/order/updateServiceOrder';
  292. $.ajax({
  293. method: "POST",
  294. dataType: "json",
  295. crossDomain: false,
  296. url: globalConfig.context + api,
  297. data: {
  298. orderNo: this.state.orderNo,
  299. contractNo: this.state.contractNo,
  300. signTotalAmount: this.state.signTotalAmount,
  301. signFirstPayment: this.state.signFirstPayment,
  302. }
  303. }).done(function (data) {
  304. this.setState({
  305. loading: false
  306. });
  307. if (!data.error.length) {
  308. message.success('保存成功!');
  309. this.handleOk()
  310. } else {
  311. message.warning(data.error[0].message);
  312. }
  313. }.bind(this));
  314. },
  315. lookCancel() {
  316. this.setState({
  317. lookVisible: false
  318. })
  319. },
  320. tableRowClick(record) {
  321. this.setState({
  322. editFw: record,
  323. addnextVisible: true,
  324. });
  325. },
  326. /* -----变更操作开始----- */
  327. //新建变更
  328. addChange() {
  329. this.setState({
  330. addChangeState: true,
  331. stateAdd: 1,
  332. changeRemarks: ''
  333. })
  334. },
  335. //产看变更记录
  336. lookChange() {
  337. this.setState({
  338. addChangeState: true,
  339. stateAdd: 0
  340. })
  341. this.lookChangeData()
  342. },
  343. //查看变更列表修改变更
  344. modifyChangeCancel() {
  345. this.setState({
  346. modifyChangeState: false
  347. })
  348. },
  349. //获取变更记录
  350. lookChangeData() {
  351. this.setState({
  352. loading: true
  353. });
  354. $.ajax({
  355. method: "get",
  356. dataType: "json",
  357. crossDomain: false,
  358. url: globalConfig.context + '/api/admin/order/viewOrderChange',
  359. data: {
  360. orderNo: this.props.datauser.orderNo,
  361. },
  362. success: function (data) {
  363. let theArr = [];
  364. if (!data.data) {
  365. if (data.error && data.error.length) {
  366. message.warning(data.error[0].message);
  367. };
  368. } else {
  369. for (let i = 0; i < data.data.length; i++) {
  370. theArr = data.data;
  371. };
  372. };
  373. this.setState({
  374. changeHtml: theArr,
  375. });
  376. }.bind(this),
  377. }).always(function () {
  378. this.setState({
  379. loading: false
  380. });
  381. }.bind(this));
  382. },
  383. //添加变更状态
  384. addChangeCancel() {
  385. this.setState({
  386. addChangeState: false
  387. })
  388. },
  389. //新建变更
  390. subChangeState(e) {
  391. e.preventDefault();
  392. this.setState({
  393. loading: true
  394. });
  395. $.ajax({
  396. method: "POST",
  397. dataType: "json",
  398. crossDomain: false,
  399. url: globalConfig.context + '/api/admin/order/addOrderChange',
  400. data: {
  401. orderNo: this.props.datauser.orderNo,
  402. changeComment: this.state.changeRemarks
  403. }
  404. }).done(function (data) {
  405. this.setState({
  406. loading: false
  407. });
  408. if (!data.error.length) {
  409. message.success('保存成功!');
  410. this.addChangeCancel();
  411. this.loaduser(this.props.datauser);
  412. } else {
  413. message.warning(data.error[0].message);
  414. }
  415. }.bind(this));
  416. },
  417. //查看修改变更
  418. modifyChange(item) {
  419. this.setState({
  420. modifyChangeState: true,
  421. changePromoter: item.creater,
  422. changeTime: item.createTime,
  423. changeState: item.changeStatus,
  424. changeRemarks: item.changeComment,
  425. idt: item.changeId,
  426. orderNot: item.orderNo
  427. })
  428. },
  429. //删除变更
  430. modifyDelete(item) {
  431. this.setState({
  432. loading: true
  433. });
  434. $.ajax({
  435. method: "get",
  436. dataType: "json",
  437. crossDomain: false,
  438. url: globalConfig.context + '/api/admin/order/deleteOrderChange',
  439. data: {
  440. changeId: item.changeId,
  441. }
  442. }).done(function (data) {
  443. this.setState({
  444. loading: false
  445. });
  446. if (!data.error.length) {
  447. message.success('删除成功!');
  448. this.lookChangeData();
  449. this.loaduser()
  450. } else {
  451. message.warning(data.error[0].message);
  452. }
  453. }.bind(this));
  454. },
  455. //修改变更保存
  456. changeModify(e) {
  457. e.preventDefault();
  458. this.setState({
  459. loading: true
  460. });
  461. $.ajax({
  462. method: "POST",
  463. dataType: "json",
  464. crossDomain: false,
  465. url: globalConfig.context + '/api/admin/order/updateOrderChange',
  466. data: {
  467. changeId: this.state.idt,
  468. changeStatus: this.state.changeState,
  469. changeComment: this.state.changeRemarks
  470. }
  471. }).done(function (data) {
  472. this.setState({
  473. loading: false
  474. });
  475. if (!data.error.length) {
  476. message.success('保存成功!');
  477. this.modifyChangeCancel();
  478. this.lookChangeData();
  479. this.loaduser(this.props.datauser)
  480. } else {
  481. message.warning(data.error[0].message);
  482. }
  483. }.bind(this));
  484. },
  485. /*-----变更操作结束----*/
  486. componentWillReceiveProps(nextProps) { //props改变时触发
  487. this.state.visible = nextProps.showDesc;
  488. if (nextProps.userDetaile && nextProps.showDesc) {
  489. this.loaduser(nextProps.datauser);
  490. this.loadData(nextProps.datauser);
  491. }
  492. },
  493. render() {
  494. const FormItem = Form.Item
  495. const formItemLayout = {
  496. labelCol: { span: 8 },
  497. wrapperCol: { span: 14 },
  498. };
  499. const changeHtml = this.state.changeHtml || [];
  500. const editFws = this.state.editFw || [];
  501. const orderDetaiel = this.state.orderList || [];
  502. return (
  503. <div>
  504. <Modal maskClosable={false} visible={this.state.visible}
  505. onOk={this.handleOk} onCancel={this.handleCancel}
  506. width='1200px'
  507. title='查看订单详情'
  508. footer=''
  509. className="admin-desc-content">
  510. <Form layout="horizontal" id="demand-form" style={{ paddingBottom: '40px' }} >
  511. <Spin spinning={this.state.loading}>
  512. <div className="clearfix">
  513. <div className="clearfix">
  514. <FormItem className="half-item"
  515. {...formItemLayout}
  516. label="订单编号" >
  517. <span>{orderDetaiel.orderNo}</span>
  518. </FormItem>
  519. <FormItem className="half-item"
  520. {...formItemLayout}
  521. label="下单时间" >
  522. <span>{orderDetaiel.createTime}</span>
  523. </FormItem>
  524. <FormItem className="half-item"
  525. {...formItemLayout}
  526. label="客户名称" >
  527. <span>{orderDetaiel.buyerName}</span>
  528. </FormItem>
  529. <FormItem className="half-item"
  530. {...formItemLayout}
  531. label="订单类型" >
  532. <span>{getOrderType(orderDetaiel.orderType)}</span>
  533. </FormItem>
  534. <FormItem className="half-item"
  535. {...formItemLayout}
  536. label="订单外联" >
  537. <span>{getOrderChannel(orderDetaiel.orderChannel)}</span>
  538. </FormItem>
  539. <FormItem className="half-item"
  540. {...formItemLayout}
  541. label="订单状态" >
  542. <span>{getOrderState(orderDetaiel.orderStatus)}</span>
  543. </FormItem>
  544. <FormItem className="half-item"
  545. {...formItemLayout}
  546. label="已收款项" >
  547. <span>{orderDetaiel.actuallyTotalAmount + "万元"}</span>
  548. </FormItem>
  549. <FormItem className="half-item"
  550. {...formItemLayout}
  551. label="结算状态" >
  552. <span>{getPaymentState(orderDetaiel.liquidationStatus)}</span>
  553. </FormItem>
  554. <FormItem className="half-item"
  555. {...formItemLayout}
  556. label="市价订单金额" >
  557. <span>{orderDetaiel.orderAmount + "万元"}</span>
  558. </FormItem>
  559. <FormItem className="half-item"
  560. {...formItemLayout}
  561. label="市价首款金额" >
  562. <span>{orderDetaiel.firstPayment + "万元"}</span>
  563. </FormItem>
  564. <div className='clearfix'>
  565. <FormItem className="half-item"
  566. {...formItemLayout}
  567. label="实签订单金额" >
  568. <span>{orderDetaiel.signTotalAmount + "万元"}</span>
  569. </FormItem>
  570. <FormItem className="half-item"
  571. {...formItemLayout}
  572. label="实签首款金额" >
  573. <span>{orderDetaiel.signFirstPayment + "万元"}</span>
  574. </FormItem>
  575. <FormItem className="half-item"
  576. {...formItemLayout}
  577. label="特批立项" >
  578. <span>{getApprovedState(orderDetaiel.approval)}</span>
  579. </FormItem>
  580. <FormItem className="half-item"
  581. {...formItemLayout}
  582. label="合同编号" >
  583. <Input placeholder="请输入合同编号" value={this.state.contractNo} onChange={(e) => { this.setState({ contractNo: e.target.value }) }} style={{ width: '240px' }} />
  584. </FormItem>
  585. <div className='clearfix'>
  586. <FormItem
  587. labelCol={{ span: 4 }}
  588. wrapperCol={{ span: 16 }}
  589. label="订单留言" >
  590. <span>{orderDetaiel.orderRemarks}</span>
  591. </FormItem>
  592. </div>
  593. <div className='clearfix'>
  594. <div className="changeStatusTxt">
  595. <FormItem className="half-item"
  596. {...formItemLayout}
  597. style={{ color: 'red' }}
  598. label="变更状态" >
  599. <span>{getChangeState(orderDetaiel.changeStatus)}</span>
  600. </FormItem>
  601. </div>
  602. <div className="clearfix">
  603. <FormItem className="half-item"
  604. {...formItemLayout}
  605. label="变更操作" >
  606. <Button onClick={this.addChange}>添加变更</Button>
  607. </FormItem>
  608. <FormItem className="half-item"
  609. {...formItemLayout}
  610. label="变更操作" >
  611. <Button onClick={this.lookChange}>查看变更纪录</Button>
  612. </FormItem>
  613. </div>
  614. </div>
  615. </div>
  616. </div>
  617. <div className='clearfix'>
  618. <FormItem className="half-item"
  619. {...formItemLayout}
  620. label="订单负责人" >
  621. <span>{orderDetaiel.salesmanName}</span>
  622. </FormItem>
  623. <FormItem className="half-item"
  624. {...formItemLayout}
  625. label="业务品类" >
  626. <span>{orderDetaiel.projectType}</span>
  627. </FormItem>
  628. </div>
  629. <div className='clearfix'>
  630. <FormItem className="half-item"
  631. {...formItemLayout}
  632. label="意向时间" >
  633. <span>{orderDetaiel.createTime}</span>
  634. </FormItem>
  635. <FormItem className="half-item"
  636. {...formItemLayout}
  637. label="签单时间" >
  638. <span>{orderDetaiel.signTime}</span>
  639. </FormItem>
  640. <FormItem className="half-item"
  641. {...formItemLayout}
  642. label="财务负责人" >
  643. <span>{orderDetaiel.financeName}</span>
  644. <Button onClick={this.lookflow} style={{ float: 'right' }}>查看流水</Button>
  645. </FormItem>
  646. <FormItem className="half-item"
  647. {...formItemLayout}
  648. label="项目负责人" >
  649. <span>{orderDetaiel.technicianName}</span>
  650. </FormItem>
  651. <FormItem className="half-item"
  652. {...formItemLayout}
  653. label="立项时间" >
  654. <span>{orderDetaiel.setUpTime}</span>
  655. </FormItem>
  656. <FormItem className="half-item"
  657. {...formItemLayout}
  658. label="项目状态" >
  659. <span>{getProjectState(orderDetaiel.projectStage)}</span>
  660. </FormItem>
  661. </div>
  662. <div>
  663. <span style={{ marginLeft: '50px', fontSize: '20px' }}>项目业务</span>
  664. </div>
  665. <div className="patent-table">
  666. <Spin spinning={this.state.loading}>
  667. <Table columns={this.state.columns}
  668. dataSource={this.state.dataSource}
  669. pagination={false}
  670. onRowClick={this.tableRowClick}
  671. />
  672. </Spin>
  673. </div>
  674. <div style={{ marginTop: '10px' }}>
  675. <Button type="primary" onClick={this.subContract} style={{ float: 'left', marginLeft: '200px' }}>保存</Button>
  676. <Button className="cancel" type="ghost" onClick={this.handleCancel} style={{ float: 'right', marginRight: '200px' }}>返回</Button>
  677. </div>
  678. </div>
  679. </Spin>
  680. </Form >
  681. </Modal>
  682. <Modal maskClosable={false} visible={this.state.addnextVisible}
  683. onOk={this.nextCancel} onCancel={this.nextCancel}
  684. width='550px'
  685. title='查看明细服务'
  686. footer=''
  687. className="admin-desc-content">
  688. <Form layout="horizontal" id="demand-form">
  689. <Spin spinning={this.state.loading}>
  690. <div className="clearfix">
  691. <FormItem className="half-item"
  692. {...formItemLayout}
  693. label="服务名称" >
  694. <span>{editFws.commodityName}</span>
  695. </FormItem>
  696. <FormItem className="half-item"
  697. {...formItemLayout}
  698. label="市场价格" >
  699. <span>{editFws.commodityPrice + "万元"}</span>
  700. </FormItem>
  701. <FormItem className="half-item"
  702. {...formItemLayout}
  703. label="实签价格" >
  704. <span>{editFws.discountPrice + "万元"}</span>
  705. </FormItem>
  706. <FormItem className="half-item"
  707. {...formItemLayout}
  708. label="服务数量" >
  709. <span>{editFws.commodityQuantity}</span>
  710. </FormItem>
  711. <FormItem className="half-item"
  712. {...formItemLayout}
  713. label="市场首付金额" >
  714. <span>{editFws.commodityFirstPayment + "万元"}</span>
  715. </FormItem>
  716. <FormItem className="half-item"
  717. {...formItemLayout}
  718. label="签单首付金额" >
  719. <span>{editFws.discountFirstPayment + "万元"}</span>
  720. </FormItem>
  721. <div className='clearfix'>
  722. <FormItem
  723. labelCol={{ span: 4 }}
  724. wrapperCol={{ span: 16 }}
  725. label="服务说明" >
  726. <span>{editFws.remarks}</span>
  727. </FormItem>
  728. </div>
  729. </div>
  730. </Spin>
  731. </Form >
  732. </Modal>
  733. <Modal maskClosable={false} visible={this.state.lookVisible}
  734. onOk={this.lookCancel} onCancel={this.lookCancel}
  735. width='1300px'
  736. title='查看流水'
  737. footer=''
  738. className="admin-desc-content">
  739. <Form layout="horizontal" id="demand-form">
  740. <Spin spinning={this.state.loading}>
  741. <div className="clearfix">
  742. <Table columns={this.state.flowList}
  743. dataSource={this.state.lookflowList}
  744. pagination={false}
  745. />
  746. </div>
  747. </Spin>
  748. </Form >
  749. </Modal>
  750. <Modal maskClosable={false} visible={this.state.addChangeState}
  751. onOk={this.addChangeCancel} onCancel={this.addChangeCancel}
  752. width='800px'
  753. title={this.state.stateAdd ? '添加变更' : '查看变更记录'}
  754. footer=''
  755. className="admin-desc-content">
  756. <Form layout="horizontal" id="demand-form">
  757. <Spin spinning={this.state.loading}>
  758. <div className="clearfix">
  759. {this.state.stateAdd ? <div className="clearfix">
  760. <FormItem
  761. labelCol={{ span: 4 }}
  762. wrapperCol={{ span: 16 }}
  763. label="变更说明" >
  764. <Input type="textarea" placeholder="请输入变更说明" rows={4} value={this.state.changeRemarks}
  765. onChange={(e) => { this.setState({ changeRemarks: e.target.value }) }} />
  766. </FormItem>
  767. <div className="clearfix">
  768. <Button type="primary" onClick={this.subChangeState} style={{ margin: "10px 50px 10px 128px" }}>保存</Button>
  769. <Button onClick={this.addChangeCancel}>取消</Button>
  770. </div>
  771. </div> :
  772. <div>
  773. {
  774. changeHtml.length ? changeHtml.map(function (item, index) {
  775. return (<div className="changeBorder" key={index}>
  776. <FormItem className="half-item"
  777. {...formItemLayout}
  778. label="变更发起人" >
  779. <span>{item.creater}</span>
  780. </FormItem>
  781. <FormItem className="half-item"
  782. {...formItemLayout}
  783. label="变更申请时间" >
  784. <span>{item.createTime}</span>
  785. </FormItem>
  786. <div className='clearfix'>
  787. <FormItem className="half-item"
  788. {...formItemLayout}
  789. label="变更状态" >
  790. <span>{getChangeState(item.changeStatus)}</span>
  791. </FormItem>
  792. <FormItem className="half-item"
  793. {...formItemLayout}
  794. label="变更操作" >
  795. <Button onClick={() => { this.modifyChange(item) }}>修改</Button>
  796. {/*<Button type="danger" onClick={(e)=>{this.modifyDelete(item)}}>删除</Button>*/}
  797. </FormItem>
  798. </div>
  799. <div className='clearfix changeRemark'>
  800. <FormItem
  801. labelCol={{ span: 4 }}
  802. wrapperCol={{ span: 16 }}
  803. label="变更说明" >
  804. <p>{item.changeComment}</p>
  805. </FormItem>
  806. </div>
  807. </div>)
  808. }, this) : <p style={{ textAlign: "center" }}>暂无变更记录</p>}
  809. </div>
  810. }
  811. </div>
  812. </Spin>
  813. </Form >
  814. </Modal>
  815. <Modal maskClosable={false} visible={this.state.modifyChangeState}
  816. onOk={this.modifyChangeCancel} onCancel={this.modifyChangeCancel}
  817. width='600px'
  818. title="修改变更 "
  819. footer=''
  820. className="admin-desc-content">
  821. <Form layout="horizontal" id="demand-form">
  822. <Spin spinning={this.state.loading}>
  823. <div className="clearfix">
  824. <div className="clearfix">
  825. <FormItem className="half-item"
  826. {...formItemLayout}
  827. label="变更发起人" >
  828. <span>{this.state.changePromoter}</span>
  829. </FormItem>
  830. <FormItem className="half-item"
  831. {...formItemLayout}
  832. label="变更申请时间" >
  833. <span>{this.state.changeTime}</span>
  834. </FormItem>
  835. <div className='clearfix'>
  836. <FormItem
  837. labelCol={{ span: 4 }}
  838. wrapperCol={{ span: 16 }}
  839. label="变更状态" >
  840. <Radio.Group onChange={(e) => { this.setState({ changeState: e.target.value }) }} value={this.state.changeState}>
  841. <Radio value={1}>变更中</Radio>
  842. <Radio value={2}>变更完成</Radio>
  843. </Radio.Group>
  844. </FormItem>
  845. </div>
  846. <div className='clearfix'>
  847. <FormItem
  848. labelCol={{ span: 4 }}
  849. wrapperCol={{ span: 16 }}
  850. label="变更说明" >
  851. <Input type="textarea" placeholder="请输入变更说明" rows={4} value={this.state.changeRemarks}
  852. onChange={(e) => { this.setState({ changeRemarks: e.target.value }) }} />
  853. </FormItem>
  854. </div>
  855. <div className="clearfix">
  856. <Button type="primary" onClick={this.changeModify} style={{ margin: "10px 95px" }}>保存</Button>
  857. <Button onClick={this.modifyChangeCancel}>取消</Button>
  858. </div>
  859. </div>
  860. </div>
  861. </Spin>
  862. </Form >
  863. </Modal>
  864. </div>
  865. )
  866. }
  867. }));
  868. export default MySettlementDetaile;