invoiceApplyListWai.jsx 29 KB

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