invoiceApplyListWai.jsx 31 KB

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