outSpecial.jsx 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import "./public.less";
  4. import {
  5. Form,
  6. Button,
  7. Input,
  8. Spin,
  9. Table,
  10. message,
  11. Modal,
  12. Upload,
  13. Tabs,
  14. Popconfirm,
  15. Tooltip,
  16. } from "antd";
  17. import {
  18. getProvinceA,
  19. getInvoiceStatus,
  20. getprovince,
  21. getStatus,
  22. getProcessStatus,
  23. getPeople,
  24. splitUrl,
  25. } from "@/tools";
  26. const FormItem = Form.Item;
  27. import OrderDesc from "../orderDetail/orderDesc";
  28. import { ChooseList } from "../../order/orderNew/chooseList";
  29. import { getProjectName } from "../../../tools";
  30. import LogPopup from "../../../common/logPopup";
  31. const outSpecial = React.createClass({
  32. loadData(pageNo) {
  33. this.state.data = [];
  34. this.setState({
  35. loading: true,
  36. });
  37. $.ajax({
  38. method: "get",
  39. dataType: "json",
  40. crossDomain: false,
  41. url:
  42. globalConfig.context +
  43. "/api/admin/orderInvoice/approvalOrderInvoiceList",
  44. data: {
  45. pageNo: pageNo || 1,
  46. pageSize: this.state.pagination.pageSize,
  47. name: this.state.nameSearch, //客户名称
  48. orderNo: this.state.orderNoSearch,
  49. orderDep: this.state.departmenttList,
  50. type: 1,
  51. },
  52. success: function (data) {
  53. let theArr = [];
  54. if (!data.data || !data.data.list) {
  55. if (data.error && data.error.length) {
  56. message.warning(data.error[0].message);
  57. }
  58. } else {
  59. for (let i = 0; i < data.data.list.length; i++) {
  60. let thisdata = data.data.list[i];
  61. theArr.push({
  62. key: i,
  63. id: thisdata.id,
  64. status: thisdata.status,
  65. unitName: thisdata.unitName,
  66. orderNo: thisdata.orderNo,
  67. name: thisdata.name,
  68. projectStatus: thisdata.projectStatus,
  69. examineName: thisdata.examineName,
  70. processStatus: thisdata.processStatus,
  71. amount: thisdata.amount,
  72. sumAmount: thisdata.sumAmount,
  73. createTime: thisdata.createTime
  74. ? new Date(thisdata.createTime).toLocaleString()
  75. : "",
  76. settlementAmount: thisdata.settlementAmount,
  77. notAmount: thisdata.notAmount,
  78. approval: thisdata.approval,
  79. });
  80. }
  81. }
  82. this.state.pagination.current = data.data.pageNo;
  83. this.state.pagination.total = data.data.totalCount;
  84. if (data.data && data.data.list && !data.data.list.length) {
  85. this.state.pagination.current = 0;
  86. this.state.pagination.total = 0;
  87. }
  88. this.setState({
  89. totalPage: data.data.totalPage,
  90. dataSource: theArr,
  91. pagination: this.state.pagination,
  92. });
  93. }.bind(this),
  94. }).always(
  95. function () {
  96. this.setState({
  97. loading: false,
  98. });
  99. }.bind(this)
  100. );
  101. },
  102. invoiceData() {
  103. this.setState({
  104. loading: true,
  105. });
  106. $.ajax({
  107. method: "get",
  108. dataType: "json",
  109. crossDomain: false,
  110. url:
  111. globalConfig.context + "/api/admin/orderInvoice/selectByIdOrderInvoice",
  112. data: {
  113. id: this.state.id,
  114. },
  115. success: function (data) {
  116. let thisdata = data.data;
  117. this.setState({
  118. orderNo: thisdata.orderNo,
  119. type: thisdata.type,
  120. status: thisdata.status,
  121. remarks: thisdata.remarks,
  122. invoiceType: thisdata.invoiceType,
  123. unitName: thisdata.unitName,
  124. taxNumber: thisdata.taxNumber,
  125. amount: thisdata.amount,
  126. banks: thisdata.banks,
  127. content: thisdata.content,
  128. unitAddress: thisdata.unitAddress,
  129. invoiceRemarks: thisdata.invoiceRemarks,
  130. unitMobile: thisdata.unitMobile,
  131. contractNo: thisdata.contractNo,
  132. post: thisdata.post,
  133. addressee: thisdata.addressee,
  134. addresseeMobile: thisdata.addresseeMobile,
  135. addresseeProvince: thisdata.addresseeProvince,
  136. addresseeCity: thisdata.addresseeCity,
  137. addresseeArea: thisdata.addresseeArea,
  138. alreadyAmount: thisdata.alreadyAmount,
  139. recipientAddress: thisdata.recipientAddress,
  140. orgCodeUrl: thisdata.voucherUrl
  141. ? splitUrl(
  142. thisdata.voucherUrl,
  143. ",",
  144. globalConfig.avatarHost + "/upload"
  145. )
  146. : [],
  147. });
  148. }.bind(this),
  149. }).done(
  150. function () {
  151. this.setState({
  152. loading: false,
  153. });
  154. }.bind(this)
  155. );
  156. },
  157. getInitialState() {
  158. return {
  159. searchMore: true,
  160. assignVisible: false,
  161. releaseDate: [],
  162. totalPage: 0,
  163. boHuivisible: false,
  164. selectedRowKeys: [],
  165. selectedRows: [],
  166. contractNo: "",
  167. loading: false,
  168. reason: "",
  169. foo: 0,
  170. pagination: {
  171. defaultCurrent: 1,
  172. defaultPageSize: 10,
  173. showQuickJumper: true,
  174. pageSize: 10,
  175. onChange: function (page) {
  176. this.loadData(page);
  177. }.bind(this),
  178. showTotal: function (total) {
  179. return "共" + total + "条数据";
  180. },
  181. },
  182. columns: [
  183. {
  184. title: "编号",
  185. dataIndex: "id",
  186. key: "id",
  187. },
  188. {
  189. title: "客户",
  190. dataIndex: "unitName",
  191. key: "unitName",
  192. // width: 100,
  193. render: (text) => {
  194. return (
  195. <Tooltip title={text}>
  196. <div
  197. style={{
  198. // maxWidth: "100px",
  199. // overflow: "hidden",
  200. // textOverflow: "ellipsis",
  201. // whiteSpace: "nowrap",
  202. }}
  203. >
  204. {text}
  205. </div>
  206. </Tooltip>
  207. );
  208. },
  209. },
  210. {
  211. title: "跟单人/签单人",
  212. dataIndex: "name",
  213. key: "name",
  214. },
  215. {
  216. title: "开票状态",
  217. dataIndex: "status",
  218. key: "status",
  219. render: (text, record) => {
  220. // return getStatus(text);
  221. return getInvoiceStatus(text, record);
  222. },
  223. },
  224. {
  225. title: "流程状态",
  226. dataIndex: "processStatus",
  227. key: "processStatus",
  228. render: (text, record) => {
  229. return getProcessStatus(text, record.examineName, record.approval);
  230. },
  231. },
  232. {
  233. title: "项目状态",
  234. dataIndex: "projectStatus",
  235. key: "projectStatus",
  236. render: (text) => {
  237. return getProjectName(text);
  238. },
  239. },
  240. {
  241. title: "申请开票(万)",
  242. dataIndex: "amount",
  243. key: "amount",
  244. },
  245. {
  246. title: "已开票(万)",
  247. dataIndex: "sumAmount",
  248. key: "sumAmount",
  249. },
  250. {
  251. title: "已收款",
  252. dataIndex: "settlementAmount",
  253. key: "settlementAmount",
  254. },
  255. {
  256. title: "未收款",
  257. dataIndex: "notAmount",
  258. key: "notAmount",
  259. },
  260. {
  261. title: "申请时间",
  262. dataIndex: "createTime",
  263. key: "createTime",
  264. },
  265. {
  266. title: "操作",
  267. dataIndex: "caozuo",
  268. key: "caouzo",
  269. render: (text, record, index) => {
  270. return (
  271. <div>
  272. {
  273. <Button
  274. type="primary"
  275. onClick={(e) => {
  276. e.stopPropagation(), this.visit(index);
  277. }}
  278. style={{ background: "deepskyblue", border: "none" }}
  279. >
  280. 申请内容
  281. </Button>
  282. }
  283. {record.approval !== 2 ? (
  284. <Popconfirm
  285. placement="top"
  286. title="确定要通过吗?"
  287. onConfirm={(e) => {
  288. e.stopPropagation();
  289. this.setState({ examine: 2 }, () => {
  290. this.sende(record);
  291. });
  292. }}
  293. okText="确定"
  294. cancelText="取消"
  295. >
  296. <Button
  297. type="primary"
  298. style={{ marginLeft: "10px" }}
  299. onClick={(e) => {
  300. e.stopPropagation();
  301. }}
  302. >
  303. 通过
  304. </Button>
  305. </Popconfirm>
  306. ) : (
  307. ""
  308. )}
  309. {record.approval !== 2 ? (
  310. <Popconfirm
  311. placement="top"
  312. title="确定要拒绝吗?"
  313. onConfirm={(e) => {
  314. e.stopPropagation();
  315. this.setState({ examine: 3 }, () => {
  316. this.reject(record);
  317. });
  318. }}
  319. okText="确定"
  320. cancelText="取消"
  321. >
  322. <Button
  323. type="danger"
  324. onClick={(e) => {
  325. e.stopPropagation();
  326. }}
  327. style={{ marginLeft: "10px" }}
  328. >
  329. 拒绝
  330. </Button>
  331. </Popconfirm>
  332. ) : (
  333. ""
  334. )}
  335. {record.approval === 2 ? (
  336. <Button
  337. style={{ marginLeft: "10px", color: "black" }}
  338. disabled={true}
  339. >
  340. 已通过
  341. </Button>
  342. ) : (
  343. ""
  344. )}
  345. {
  346. <Button
  347. type="primary"
  348. style={{
  349. marginLeft: "10px",
  350. background: "orangered",
  351. border: "none",
  352. }}
  353. onClick={(e) => {
  354. e.stopPropagation(), this.inRecord(record, index);
  355. }}
  356. >
  357. 开票记录
  358. </Button>
  359. }
  360. </div>
  361. );
  362. },
  363. },
  364. ],
  365. columnsDate: [
  366. {
  367. title: "编号",
  368. dataIndex: "id",
  369. key: "id",
  370. },
  371. {
  372. title: "订单编号",
  373. dataIndex: "orderNo",
  374. key: "orderNo",
  375. },
  376. {
  377. title: "开票金额(万元)",
  378. dataIndex: "amount",
  379. key: "amount",
  380. },
  381. {
  382. title: "申请时间",
  383. dataIndex: "createTime",
  384. key: "createTime",
  385. },
  386. {
  387. title: "开票状态",
  388. dataIndex: "status",
  389. key: "status",
  390. render: (text, record) => {
  391. return (
  392. <div>
  393. {getInvoiceStatus(text, record)} <LogPopup id={record.id} />
  394. </div>
  395. );
  396. },
  397. },
  398. ],
  399. dataSource: [],
  400. searchTime: [,],
  401. };
  402. },
  403. loadSend(record) {
  404. this.setState({
  405. loading: true,
  406. });
  407. if (this.state.examine === 3 && this.state.reason === "") {
  408. message.warning("拒绝理由不能为空!");
  409. return;
  410. }
  411. $.ajax({
  412. method: "post",
  413. dataType: "json",
  414. crossDomain: false,
  415. url: globalConfig.context + "/api/admin/orderInvoice/approvalExamine",
  416. data: {
  417. id: this.state.examine === 2 ? record.id : this.state.id,
  418. examine: this.state.examine,
  419. reason: this.state.reason,
  420. },
  421. success: function () { }.bind(this),
  422. }).done(
  423. function () {
  424. this.setState({
  425. loading: false,
  426. });
  427. if (this.state.examine === 2) {
  428. message.success("通过成功!");
  429. this.loadData();
  430. } else {
  431. message.success("拒绝成功!");
  432. this.resetReason();
  433. this.rejectCancels();
  434. this.loadData();
  435. }
  436. }.bind(this)
  437. );
  438. },
  439. //重置拒绝理由
  440. resetReason() {
  441. this.setState({
  442. reason: "",
  443. });
  444. },
  445. sende(record) {
  446. this.loadSend(record);
  447. },
  448. commit() {
  449. this.loadSend();
  450. this.setState({
  451. avisible: false,
  452. });
  453. },
  454. visit(index) {
  455. this.setState(
  456. {
  457. id: this.state.dataSource[index].id,
  458. avisible: true,
  459. },
  460. () => {
  461. this.invoiceData();
  462. }
  463. );
  464. },
  465. visitCancels() {
  466. this.setState({
  467. avisible: false,
  468. });
  469. },
  470. reject(record) {
  471. this.setState({
  472. visibleR: true,
  473. id: record.id,
  474. });
  475. },
  476. rejectCancels() {
  477. this.setState({
  478. visibleR: false,
  479. });
  480. },
  481. inRecordData() {
  482. this.setState({
  483. loading: true,
  484. });
  485. $.ajax({
  486. method: "get",
  487. dataType: "json",
  488. crossDomain: false,
  489. url:
  490. globalConfig.context +
  491. "/api/admin/orderInvoice/salesmanOrderInvoiceList",
  492. data: {
  493. orderNo: this.state.orderNo2,
  494. },
  495. success: function (data) {
  496. let theArr = [];
  497. let sum = 0;
  498. if (!data.data) {
  499. if (data.error && data.error.length) {
  500. message.warning(data.error[0].message);
  501. }
  502. } else {
  503. for (let i = 0; i < data.data.list.length; i++) {
  504. let thisdata = data.data.list[i];
  505. sum += parseFloat(thisdata.amount);
  506. theArr.push({
  507. id: thisdata.id,
  508. orderNo: thisdata.orderNo, //订单编号
  509. amount: thisdata.amount, //签单金额
  510. createTime: thisdata.createTime, //流程状态
  511. status: thisdata.status, //结算状态
  512. rejectReason: thisdata.rejectReason,
  513. approval: thisdata.approval, //0非特批 1待审核 2审核通过
  514. examineName: thisdata.examineName,
  515. });
  516. }
  517. }
  518. this.setState({
  519. recordData: theArr,
  520. sum: sum.toFixed(6),
  521. });
  522. }.bind(this),
  523. }).done(
  524. function () {
  525. this.setState({
  526. loading: false,
  527. });
  528. }.bind(this)
  529. );
  530. },
  531. inRecord(record) {
  532. this.setState(
  533. {
  534. bvisible: true,
  535. orderNo2: record.orderNo,
  536. },
  537. () => {
  538. this.inRecordData();
  539. }
  540. );
  541. },
  542. inRecordCanl() {
  543. this.setState({
  544. bvisible: false,
  545. });
  546. },
  547. search() {
  548. this.loadData();
  549. },
  550. componentWillMount() {
  551. this.loadData();
  552. },
  553. // componentDidMount() {
  554. // window.setTimeout(() => {
  555. // console.log("321", this.state);
  556. // },100)
  557. // },
  558. reset() {
  559. this.state.nameSearch = "";
  560. this.state.releaseDate = [];
  561. this.state.orderNoSearch = "";
  562. this.state.processStatus = [];
  563. this.state.departmenttList = [];
  564. this.loadData();
  565. },
  566. tableRowClick(record) {
  567. this.state.RowData = record;
  568. this.setState({
  569. showDesc: true,
  570. });
  571. },
  572. closeDesc(e, s) {
  573. this.state.showDesc = e;
  574. if (s) {
  575. this.loadData(this.state.page);
  576. }
  577. },
  578. changeList(arr) {
  579. const newArr = [];
  580. this.state.columns.forEach((item) => {
  581. arr.forEach((val) => {
  582. if (val === item.title) {
  583. newArr.push(item);
  584. }
  585. });
  586. });
  587. this.setState({
  588. changeList: newArr,
  589. });
  590. },
  591. render() {
  592. const formItemLayout = {
  593. labelCol: { span: 8 },
  594. wrapperCol: { span: 14 },
  595. };
  596. const { TabPane } = Tabs;
  597. return (
  598. <div className="user-content">
  599. <div className="content-title" style={{ marginBottom: 10 }}>
  600. <span style={{ fontWeight: 900, fontSize: 16 }}>省外特批</span>
  601. </div>
  602. <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
  603. <TabPane tab="搜索" key="1">
  604. <div className="user-search">
  605. <Input
  606. placeholder="订单编号"
  607. value={this.state.orderNoSearch}
  608. onChange={(e) => {
  609. this.setState({ orderNoSearch: e.target.value });
  610. }}
  611. />
  612. <Input
  613. placeholder="营销员名称"
  614. value={this.state.nameSearch}
  615. style={{ marginLeft: 10 }}
  616. onChange={(e) => {
  617. this.setState({ nameSearch: e.target.value });
  618. }}
  619. />
  620. {/*<Select placeholder="订单部门"
  621. style={{ width: 150 ,marginRight:10}}
  622. value={this.state.departmenttList}
  623. onChange={(e) => { this.setState({ departmenttList: e }) }}>
  624. {
  625. departmentArr.map(function (item) {
  626. return <Select.Option key={item.id} >{item.name}</Select.Option>
  627. })
  628. }
  629. </Select>*/}
  630. <Button
  631. type="primary"
  632. onClick={this.search}
  633. style={{ marginLeft: 10 }}
  634. >
  635. 搜索
  636. </Button>
  637. <Button onClick={this.reset}>重置</Button>
  638. </div>
  639. </TabPane>
  640. <TabPane tab="更改表格显示数据" key="2">
  641. <div style={{ marginLeft: 10 }}>
  642. <ChooseList
  643. columns={this.state.columns}
  644. changeFn={this.changeList}
  645. changeList={this.state.changeList}
  646. top={55}
  647. margin={11}
  648. />
  649. </div>
  650. </TabPane>
  651. </Tabs>
  652. <div className="patent-table">
  653. <Spin spinning={this.state.loading}>
  654. <Table
  655. columns={
  656. this.state.changeList
  657. ? this.state.changeList
  658. : this.state.columns
  659. }
  660. style={{
  661. cursor: "pointer",
  662. }}
  663. scroll={{ x: 1500, y: 0 }}
  664. onRowClick={this.tableRowClick}
  665. dataSource={this.state.dataSource}
  666. pagination={this.state.pagination}
  667. bordered
  668. size="small"
  669. />
  670. </Spin>
  671. </div>
  672. <Modal
  673. visible={this.state.visibleR}
  674. className="admin-desc-content"
  675. footer=""
  676. title="拒绝理由"
  677. width="400px"
  678. onCancel={this.rejectCancels}
  679. >
  680. <Input.TextArea
  681. placeholder="请输入拒绝理由"
  682. rows={4}
  683. value={this.state.reason}
  684. onChange={(e) => {
  685. this.setState({ reason: e.target.value });
  686. }}
  687. />
  688. <div className="clearfix" style={{ marginTop: "20px" }}>
  689. <Button
  690. type="primary"
  691. loading={this.state.loading}
  692. onClick={(e) => {
  693. e.stopPropagation(), this.commit();
  694. }}
  695. style={{ float: "right" }}
  696. >
  697. 提交
  698. </Button>
  699. </div>
  700. </Modal>
  701. <Modal
  702. className="admin-desc-content"
  703. footer=""
  704. title="开具发票申请单"
  705. width="1200px"
  706. visible={this.state.avisible}
  707. onOk={this.visitOks}
  708. onCancel={this.visitCancels}
  709. >
  710. <Form
  711. layout="horizontal"
  712. id="demand-form"
  713. style={{ paddingBottom: "40px" }}
  714. >
  715. <Spin spinning={this.state.loading}>
  716. <div className="clearfix">
  717. <div className="clearfix">
  718. <FormItem
  719. className="half-item"
  720. {...formItemLayout}
  721. label="合同编号"
  722. >
  723. <span>{this.state.contractNo}</span>
  724. </FormItem>
  725. <FormItem
  726. className="half-item"
  727. {...formItemLayout}
  728. label="备注"
  729. >
  730. <span>{this.state.remarks}</span>
  731. </FormItem>
  732. </div>
  733. <div className="clearfix">
  734. <FormItem
  735. className="half-item"
  736. {...formItemLayout}
  737. label={
  738. <span>
  739. <strong style={{ color: "#f00" }}>*</strong>省内/外
  740. </span>
  741. }
  742. >
  743. <span>{getProvinceA(this.state.type)}</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="1200px"
  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 outSpecial;