outSpecial.jsx 29 KB

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