inSpecial.jsx 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import "./public.less";
  4. import {
  5. Form,
  6. Button,
  7. Input,
  8. Select,
  9. Spin,
  10. Table,
  11. message,
  12. Modal,
  13. Upload
  14. } from "antd";
  15. import {
  16. getProjectStatus,
  17. getProvinceA,
  18. getInvoiceStatus,
  19. getprovince,
  20. splitUrl
  21. } from "@/tools";
  22. const FormItem = Form.Item;
  23. const inSpecial = React.createClass({
  24. departmentList() {
  25. this.setState({
  26. loading: true
  27. });
  28. $.ajax({
  29. method: "get",
  30. dataType: "json",
  31. crossDomain: false,
  32. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  33. data: {},
  34. success: function(data) {
  35. let thedata = data.data;
  36. let theArr = [];
  37. if (!thedata) {
  38. if (data.error && data.error.length) {
  39. message.warning(data.error[0].message);
  40. }
  41. } else {
  42. thedata.map(function(item, index) {
  43. theArr.push({
  44. key: index,
  45. name: item.name,
  46. id: item.id
  47. });
  48. });
  49. }
  50. this.setState({
  51. departmentArr: theArr
  52. });
  53. }.bind(this)
  54. }).always(
  55. function() {
  56. this.setState({
  57. loading: false
  58. });
  59. }.bind(this)
  60. );
  61. },
  62. loadData(pageNo) {
  63. this.state.data = [];
  64. this.setState({
  65. loading: true
  66. });
  67. $.ajax({
  68. method: "get",
  69. dataType: "json",
  70. crossDomain: false,
  71. url:
  72. globalConfig.context +
  73. "/api/admin/orderInvoice/approvalOrderInvoiceList",
  74. data: {
  75. pageNo: pageNo || 1,
  76. pageSize: this.state.pagination.pageSize,
  77. name: this.state.nameSearch, //客户名称
  78. orderNo: this.state.orderNoSearch,
  79. orderDep: this.state.departmenttList,
  80. type: 0,
  81. approval: this.state.processStatus
  82. },
  83. success: function(data) {
  84. let theArr = [];
  85. if (!data.data || !data.data.list) {
  86. if (data.error && data.error.length) {
  87. message.warning(data.error[0].message);
  88. }
  89. } else {
  90. for (let i = 0; i < data.data.list.length; i++) {
  91. let thisdata = data.data.list[i];
  92. theArr.push({
  93. key: i,
  94. id: thisdata.id,
  95. status: thisdata.status,
  96. unitName: thisdata.unitName,
  97. orderno: thisdata.orderno,
  98. name: thisdata.name,
  99. projectStatus: thisdata.projectStatus,
  100. amount: thisdata.amount,
  101. sumAmount: thisdata.sumAmount,
  102. createTime: thisdata.createTime
  103. ? new Date(thisdata.createTime).toLocaleString()
  104. : "",
  105. settlementAmount: thisdata.settlementAmount,
  106. notAmount: thisdata.notAmount,
  107. approval: thisdata.approval
  108. });
  109. }
  110. }
  111. this.state.pagination.current = data.data.pageNo;
  112. this.state.pagination.total = data.data.totalCount;
  113. if (data.data && data.data.list && !data.data.list.length) {
  114. this.state.pagination.current = 0;
  115. this.state.pagination.total = 0;
  116. }
  117. this.setState({
  118. totalPage: data.data.totalPage,
  119. dataSource: theArr,
  120. pagination: this.state.pagination
  121. });
  122. }.bind(this)
  123. }).always(
  124. function() {
  125. this.setState({
  126. loading: false
  127. });
  128. }.bind(this)
  129. );
  130. },
  131. invoiceData() {
  132. this.setState({
  133. loading: true
  134. });
  135. $.ajax({
  136. method: "get",
  137. dataType: "json",
  138. crossDomain: false,
  139. url:
  140. globalConfig.context + "/api/admin/orderInvoice/selectByIdOrderInvoice",
  141. data: {
  142. id: this.state.id
  143. },
  144. success: function(data) {
  145. let thisdata = data.data;
  146. this.setState({
  147. orderNo: thisdata.orderNo,
  148. type: thisdata.type,
  149. status: thisdata.status,
  150. remarks: thisdata.remarks,
  151. invoiceType: thisdata.invoiceType,
  152. unitName: thisdata.unitName,
  153. taxNumber: thisdata.taxNumber,
  154. amount: thisdata.amount,
  155. banks: thisdata.banks,
  156. content: thisdata.content,
  157. unitAddress: thisdata.unitAddress,
  158. invoiceRemarks: thisdata.invoiceRemarks,
  159. unitMobile: thisdata.unitMobile,
  160. post: thisdata.post,
  161. addressee: thisdata.addressee,
  162. addresseeMobile: thisdata.addresseeMobile,
  163. addresseeProvince: thisdata.addresseeProvince,
  164. addresseeCity: thisdata.addresseeCity,
  165. addresseeArea: thisdata.addresseeArea,
  166. alreadyAmount: thisdata.alreadyAmount,
  167. recipientAddress: thisdata.recipientAddress,
  168. orgCodeUrl: thisdata.voucherUrl
  169. ? splitUrl(
  170. thisdata.voucherUrl,
  171. ",",
  172. globalConfig.avatarHost + "/upload"
  173. )
  174. : []
  175. });
  176. }.bind(this)
  177. }).done(
  178. function() {
  179. this.setState({
  180. loading: false
  181. });
  182. }.bind(this)
  183. );
  184. },
  185. getInitialState() {
  186. return {
  187. searchMore: true,
  188. assignVisible: false,
  189. releaseDate: [],
  190. totalPage: 0,
  191. boHuivisible: false,
  192. selectedRowKeys: [],
  193. selectedRows: [],
  194. loading: false,
  195. reason: "",
  196. foo: 0,
  197. pagination: {
  198. defaultCurrent: 1,
  199. defaultPageSize: 10,
  200. showQuickJumper: true,
  201. pageSize: 10,
  202. onChange: function(page) {
  203. this.loadData(page);
  204. }.bind(this),
  205. showTotal: function(total) {
  206. return "共" + total + "条数据";
  207. }
  208. },
  209. columns: [
  210. {
  211. title: "编号",
  212. dataIndex: "id",
  213. key: "id",
  214. fixed: "left"
  215. },
  216. {
  217. title: "客户",
  218. dataIndex: "unitName",
  219. key: "unitName"
  220. },
  221. {
  222. title: "跟单人/签单人",
  223. dataIndex: "name",
  224. key: "name"
  225. },
  226. {
  227. title: "项目状态",
  228. dataIndex: "projectStatus",
  229. key: "projectStatus",
  230. render: text => {
  231. return getProjectStatus(text);
  232. }
  233. },
  234. {
  235. title: "申请开票(万)",
  236. dataIndex: "amount",
  237. key: "amount"
  238. },
  239. {
  240. title: "已开票(万)",
  241. dataIndex: "sumAmount",
  242. key: "sumAmount"
  243. },
  244. {
  245. title: "已收款",
  246. dataIndex: "settlementAmount",
  247. key: "settlementAmount"
  248. },
  249. {
  250. title: "未收款",
  251. dataIndex: "notAmount",
  252. key: "notAmount"
  253. },
  254. {
  255. title: "申请时间",
  256. dataIndex: "createTime",
  257. key: "createTime"
  258. },
  259. {
  260. title: "操作",
  261. dataIndex: "caozuo",
  262. key: "caouzo",
  263. render: (_text, record, index) => {
  264. return (
  265. <div>
  266. {
  267. <Button
  268. type="primary"
  269. onClick={e => {
  270. e.stopPropagation(), this.visit(index);
  271. }}
  272. style={{ background: "deepskyblue", border: "none" }}
  273. >
  274. 申请内容
  275. </Button>
  276. }
  277. {record.approval !== 2 ? (
  278. <Button
  279. type="primary"
  280. style={{ marginLeft: "10px" }}
  281. onClick={e => {
  282. e.stopPropagation(),
  283. this.setState({ examine: 2 }, () => {
  284. this.sende(record);
  285. });
  286. }}
  287. >
  288. 通过
  289. </Button>
  290. ) : (
  291. ""
  292. )}
  293. {record.approval !== 2 ? (
  294. <Button
  295. type="danger"
  296. onClick={e => {
  297. e.stopPropagation(),
  298. this.setState({ examine: 3 }, () => {
  299. this.reject(record);
  300. });
  301. }}
  302. style={{ marginLeft: "10px" }}
  303. >
  304. 拒绝
  305. </Button>
  306. ) : (
  307. ""
  308. )}
  309. {record.approval === 2 ? (
  310. <Button
  311. style={{ marginLeft: "10px", color: "black" }}
  312. disabled={true}
  313. >
  314. 已通过
  315. </Button>
  316. ) : (
  317. ""
  318. )}
  319. {
  320. <Button
  321. type="primary"
  322. style={{
  323. marginLeft: "10px",
  324. background: "orangered",
  325. border: "none"
  326. }}
  327. onClick={e => {
  328. e.stopPropagation(), this.inRecord(record, index);
  329. }}
  330. >
  331. 开票记录
  332. </Button>
  333. }
  334. </div>
  335. );
  336. }
  337. }
  338. ],
  339. columnsDate: [
  340. {
  341. title: "编号",
  342. dataIndex: "id",
  343. key: "id"
  344. },
  345. {
  346. title: "订单编号",
  347. dataIndex: "orderno",
  348. key: "orderno"
  349. },
  350. {
  351. title: "开票金额(万元)",
  352. dataIndex: "amount",
  353. key: "amount"
  354. },
  355. {
  356. title: "申请时间",
  357. dataIndex: "createTime",
  358. key: "createTime"
  359. },
  360. {
  361. title: "开票状态",
  362. dataIndex: "status",
  363. key: "status",
  364. render: text => {
  365. return getInvoiceStatus(text);
  366. }
  367. }
  368. ],
  369. dataSource: [],
  370. searchTime: [,]
  371. };
  372. },
  373. loadSend(record) {
  374. this.setState({
  375. loading: true
  376. });
  377. if (this.state.examine === 3 && this.state.reason === "") {
  378. message.warning("拒绝理由不能为空!");
  379. return;
  380. }
  381. $.ajax({
  382. method: "post",
  383. dataType: "json",
  384. crossDomain: false,
  385. url: globalConfig.context + "/api/admin/orderInvoice/approvalExamine",
  386. data: {
  387. id: this.state.examine === 2 ? record.id : this.state.id,
  388. examine: this.state.examine,
  389. reason: this.state.reason
  390. },
  391. success: function() {}.bind(this)
  392. }).done(
  393. function() {
  394. this.setState({
  395. loading: false
  396. });
  397. if (this.state.examine === 2) {
  398. message.success("通过成功!");
  399. this.loadData();
  400. } else {
  401. message.success("拒绝成功!");
  402. this.resetReason();
  403. this.rejectCancels();
  404. this.loadData();
  405. }
  406. }.bind(this)
  407. );
  408. },
  409. //重置拒绝理由
  410. resetReason() {
  411. this.setState({
  412. reason: ""
  413. });
  414. },
  415. sende(record) {
  416. this.loadSend(record);
  417. },
  418. commit() {
  419. this.loadSend();
  420. this.setState({
  421. avisible: false
  422. });
  423. },
  424. visit(index) {
  425. this.setState(
  426. {
  427. id: this.state.dataSource[index].id,
  428. avisible: true
  429. },
  430. () => {
  431. this.invoiceData();
  432. }
  433. );
  434. },
  435. visitCancels() {
  436. this.setState({
  437. avisible: false
  438. });
  439. },
  440. reject(record) {
  441. this.setState({
  442. visibleR: true,
  443. id: record.id
  444. });
  445. },
  446. rejectCancels() {
  447. this.setState({
  448. visibleR: false
  449. });
  450. },
  451. inRecordData() {
  452. this.setState({
  453. loading: true
  454. });
  455. $.ajax({
  456. method: "get",
  457. dataType: "json",
  458. crossDomain: false,
  459. url:
  460. globalConfig.context +
  461. "/api/admin/orderInvoice/salesmanOrderInvoiceList",
  462. data: {
  463. orderNo: this.state.orderNo2
  464. },
  465. success: function(data) {
  466. let theArr = [];
  467. let sum = 0;
  468. if (!data.data) {
  469. if (data.error && data.error.length) {
  470. message.warning(data.error[0].message);
  471. }
  472. } else {
  473. for (let i = 0; i < data.data.list.length; i++) {
  474. let thisdata = data.data.list[i];
  475. sum += parseFloat(thisdata.amount);
  476. theArr.push({
  477. id: thisdata.id,
  478. orderno: thisdata.orderno, //订单编号
  479. amount: thisdata.amount, //签单金额
  480. createTime: thisdata.createTime, //流程状态
  481. status: thisdata.status, //结算状态
  482. rejectReason: thisdata.rejectReason
  483. });
  484. }
  485. }
  486. this.setState({
  487. recordData: theArr,
  488. sum: sum.toFixed(4)
  489. });
  490. }.bind(this)
  491. }).done(
  492. function() {
  493. this.setState({
  494. loading: false
  495. });
  496. }.bind(this)
  497. );
  498. },
  499. inRecord(record) {
  500. this.setState(
  501. {
  502. bvisible: true,
  503. orderNo2: record.orderno
  504. },
  505. () => {
  506. this.inRecordData();
  507. }
  508. );
  509. },
  510. inRecordCanl() {
  511. this.setState({
  512. bvisible: false
  513. });
  514. },
  515. search() {
  516. this.loadData();
  517. },
  518. componentWillMount() {
  519. this.departmentList();
  520. this.loadData();
  521. },
  522. reset() {
  523. this.state.nameSearch = "";
  524. this.state.releaseDate = [];
  525. this.state.orderNoSearch = "";
  526. this.state.processStatus = [];
  527. this.state.departmenttList = [];
  528. this.loadData();
  529. },
  530. render() {
  531. const formItemLayout = {
  532. labelCol: { span: 8 },
  533. wrapperCol: { span: 14 }
  534. };
  535. var departmentArr = this.state.departmentArr || [];
  536. return (
  537. <div className="user-content">
  538. <div className="content-title">
  539. <span>省内特批</span>
  540. </div>
  541. <div className="user-search">
  542. <Input
  543. placeholder="营销员名称"
  544. value={this.state.nameSearch}
  545. onChange={e => {
  546. this.setState({ nameSearch: e.target.value });
  547. }}
  548. />
  549. <Input
  550. placeholder="订单编号"
  551. value={this.state.orderNoSearch}
  552. onChange={e => {
  553. this.setState({ orderNoSearch: e.target.value });
  554. }}
  555. />
  556. <Select
  557. placeholder="订单部门"
  558. style={{ width: 150, marginRight: 10 }}
  559. value={this.state.departmenttList}
  560. onChange={e => {
  561. this.setState({ departmenttList: e });
  562. }}
  563. >
  564. {departmentArr.map(function(item) {
  565. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  566. })}
  567. </Select>
  568. <Select
  569. placeholder="特批状态"
  570. onChange={e => {
  571. this.setState({ processStatus: e });
  572. }}
  573. style={{ width: 160, marginRight: 5 }}
  574. value={this.state.processStatus}
  575. >
  576. <Option value="1">特批未审核</Option>
  577. <Option value="2">特批已审核</Option>
  578. </Select>
  579. <Button
  580. type="primary"
  581. onClick={this.search}
  582. style={{ marginLeft: 10 }}
  583. >
  584. 搜索
  585. </Button>
  586. <Button onClick={this.reset}>重置</Button>
  587. </div>
  588. <div className="patent-table">
  589. <Spin spinning={this.state.loading}>
  590. <Table
  591. columns={this.state.columns}
  592. scroll={{ x: 1500, y: 0 }}
  593. dataSource={this.state.dataSource}
  594. pagination={this.state.pagination}
  595. />
  596. </Spin>
  597. </div>
  598. <Modal
  599. visible={this.state.visibleR}
  600. className="admin-desc-content"
  601. footer=""
  602. title="拒绝理由"
  603. width="400px"
  604. onCancel={this.rejectCancels}
  605. >
  606. <Input.TextArea
  607. placeholder="请输入拒绝理由"
  608. rows={4}
  609. value={this.state.reason}
  610. onChange={e => {
  611. this.setState({ reason: e.target.value });
  612. }}
  613. ></Input.TextArea>
  614. <div className="clearfix" style={{ marginTop: "20px" }}>
  615. <Button
  616. type="primary"
  617. onClick={e => {
  618. e.stopPropagation(), this.commit();
  619. }}
  620. style={{ float: "right" }}
  621. >
  622. 提交
  623. </Button>
  624. </div>
  625. </Modal>
  626. <Modal
  627. className="admin-desc-content"
  628. footer=""
  629. title="开具发票申请单"
  630. width="900px"
  631. visible={this.state.avisible}
  632. onOk={this.visitOks}
  633. onCancel={this.visitCancels}
  634. >
  635. <Form
  636. layout="horizontal"
  637. id="demand-form"
  638. style={{ paddingBottom: "40px" }}
  639. >
  640. <Spin spinning={this.state.loading}>
  641. <div className="clearfix">
  642. <div className="clearfix">
  643. <FormItem
  644. className="half-item"
  645. {...formItemLayout}
  646. label="合同编号"
  647. >
  648. <span>{this.state.contractNo}</span>
  649. </FormItem>
  650. <FormItem
  651. className="half-item"
  652. {...formItemLayout}
  653. label="备注"
  654. >
  655. <span>{this.state.remarks}</span>
  656. </FormItem>
  657. </div>
  658. <div className="clearfix">
  659. <FormItem
  660. className="half-item"
  661. {...formItemLayout}
  662. label={
  663. <span>
  664. <strong style={{ color: "#f00" }}>*</strong>省内/外
  665. </span>
  666. }
  667. >
  668. <span>{getProvinceA(this.state.type)}</span>
  669. </FormItem>
  670. </div>
  671. <hr
  672. style={{
  673. border: "1px dashed #aaa",
  674. width: "90%",
  675. margin: "auto"
  676. }}
  677. />
  678. <div style={{ marginTop: "13px", marginLeft: "16px" }}>
  679. <span style={{ fontSize: "14px" }}>发票内容</span>
  680. </div>
  681. <div className="clearfix">
  682. <FormItem
  683. className="half-item"
  684. {...formItemLayout}
  685. label={
  686. <span>
  687. <strong style={{ color: "#f00" }}>*</strong>发票类型
  688. </span>
  689. }
  690. >
  691. <span>
  692. {this.state.invoiceType === 0
  693. ? "增值税专用发票"
  694. : this.state.invoiceType === 1
  695. ? "增值税普通发票"
  696. : "其他"}
  697. </span>
  698. </FormItem>
  699. </div>
  700. <div className="clearfix">
  701. <FormItem
  702. className="half-item"
  703. {...formItemLayout}
  704. label={
  705. <span>
  706. <strong style={{ color: "#f00" }}>*</strong>单位名称
  707. </span>
  708. }
  709. >
  710. <span>{this.state.unitName}</span>
  711. </FormItem>
  712. <FormItem
  713. className="half-item"
  714. {...formItemLayout}
  715. label={
  716. <span>
  717. <strong style={{ color: "#f00" }}>*</strong>税号
  718. </span>
  719. }
  720. >
  721. <span>{this.state.taxNumber}</span>
  722. </FormItem>
  723. <FormItem
  724. className="half-item"
  725. {...formItemLayout}
  726. label={
  727. <span>
  728. <strong style={{ color: "#f00" }}>*</strong>
  729. 开票金额(万元)
  730. </span>
  731. }
  732. >
  733. <span>{this.state.amount}</span>
  734. </FormItem>
  735. <FormItem
  736. className="half-item"
  737. {...formItemLayout}
  738. label={
  739. <span>
  740. <strong style={{ color: "#f00" }}>*</strong>
  741. 开户行银行账号
  742. </span>
  743. }
  744. >
  745. <span>{this.state.banks}</span>
  746. </FormItem>
  747. <FormItem
  748. className="half-item"
  749. {...formItemLayout}
  750. label={
  751. <span>
  752. <strong style={{ color: "#f00" }}>*</strong>
  753. 开票内容及说明
  754. </span>
  755. }
  756. >
  757. <span>{this.state.content}</span>
  758. </FormItem>
  759. <FormItem
  760. className="half-item"
  761. {...formItemLayout}
  762. label={
  763. <span>
  764. <strong style={{ color: "#f00" }}>*</strong>单位地址
  765. </span>
  766. }
  767. >
  768. <span>{this.state.unitAddress}</span>
  769. </FormItem>
  770. <FormItem
  771. className="half-item"
  772. {...formItemLayout}
  773. label="备注"
  774. >
  775. <span>{this.state.invoiceRemarks}</span>
  776. </FormItem>
  777. <FormItem
  778. className="half-item"
  779. {...formItemLayout}
  780. label={
  781. <span>
  782. <strong style={{ color: "#f00" }}>*</strong>单位电话
  783. </span>
  784. }
  785. >
  786. <span>{this.state.unitMobile}</span>
  787. </FormItem>
  788. </div>
  789. <div className="clearfix">
  790. <FormItem
  791. labelCol={{ span: 4 }}
  792. wrapperCol={{ span: 18 }}
  793. label={
  794. <span>
  795. <strong style={{ color: "#f00" }}>*</strong>附件
  796. </span>
  797. }
  798. >
  799. <Upload
  800. className="demandDetailShow-upload"
  801. listType="picture-card"
  802. fileList={this.state.orgCodeUrl}
  803. onPreview={file => {
  804. this.setState({
  805. previewImage: file.url || file.thumbUrl,
  806. previewVisible: true
  807. });
  808. }}
  809. ></Upload>
  810. <Modal
  811. maskClosable={false}
  812. footer={null}
  813. visible={this.state.previewVisible}
  814. onCancel={() => {
  815. this.setState({ previewVisible: false });
  816. }}
  817. >
  818. <img
  819. alt=""
  820. style={{ width: "100%" }}
  821. src={this.state.previewImage || ""}
  822. />
  823. </Modal>
  824. </FormItem>
  825. </div>
  826. <hr
  827. style={{
  828. border: "1px dashed #aaa",
  829. width: "90%",
  830. margin: "auto"
  831. }}
  832. />
  833. <div className="clearfix" style={{ marginTop: "10px" }}>
  834. <FormItem
  835. className="half-item"
  836. {...formItemLayout}
  837. label="发票是否邮寄:"
  838. >
  839. <span>{this.state.post === 0 ? "是" : "否"}</span>
  840. </FormItem>
  841. </div>
  842. {this.state.post === 0 ? (
  843. <div>
  844. <div className="clearfix">
  845. <FormItem
  846. className="half-item"
  847. {...formItemLayout}
  848. label="收信人姓名"
  849. >
  850. <span>{this.state.addressee}</span>
  851. </FormItem>
  852. <FormItem
  853. className="half-item"
  854. {...formItemLayout}
  855. label="电话"
  856. >
  857. <span>{this.state.addresseeMobile}</span>
  858. </FormItem>
  859. </div>
  860. <div className="clearfix">
  861. <FormItem
  862. className="half-item"
  863. {...formItemLayout}
  864. label="省-市-区"
  865. >
  866. <span>
  867. {getprovince(this.state.addresseeProvince)}/
  868. {getprovince(this.state.addresseeCity)}/
  869. {getprovince(this.state.addresseeArea)}
  870. </span>
  871. </FormItem>
  872. </div>
  873. <div className="clearfix">
  874. <FormItem
  875. className="half-item"
  876. {...formItemLayout}
  877. label="详细地址"
  878. >
  879. <span>{this.state.recipientAddress}</span>
  880. </FormItem>
  881. </div>
  882. </div>
  883. ) : (
  884. ""
  885. )}
  886. <FormItem
  887. className="half-item"
  888. {...formItemLayout}
  889. label={
  890. <span>
  891. <strong style={{ color: "#f00" }}>*</strong>开票金额总计
  892. </span>
  893. }
  894. >
  895. <span>{this.state.alreadyAmount}万元</span>
  896. </FormItem>
  897. </div>
  898. </Spin>
  899. </Form>
  900. </Modal>
  901. <Modal
  902. visible={this.state.bvisible}
  903. footer=""
  904. title="开票历史记录"
  905. className="admin-desc-content"
  906. width="900px"
  907. onCancel={this.inRecordCanl}
  908. >
  909. <Spin spinning={this.state.loading}>
  910. <div className="patent-table">
  911. <Table
  912. columns={this.state.columnsDate}
  913. dataSource={this.state.recordData}
  914. pagination={false}
  915. />
  916. <div className="clearfix" style={{ marginTop: "20px" }}>
  917. <FormItem
  918. className="half-item"
  919. {...formItemLayout}
  920. label={<span style={{ fontSize: "14px" }}>开票总计</span>}
  921. >
  922. <span>{this.state.sum}</span>
  923. </FormItem>
  924. </div>
  925. </div>
  926. </Spin>
  927. </Modal>
  928. </div>
  929. );
  930. }
  931. });
  932. export default inSpecial;