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