inSpecial.jsx 31 KB

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