Commit 7d4330378a5fe624c636ee29033b74e89b47573f

Authored by 曾国涛
1 parent 0a0810a3

feat: 开票功能开发

src/pages/Invoice/components/InvoicingModal.tsx
1 1 import { PlusOutlined } from '@ant-design/icons';
2   -import {
3   - ModalForm,
4   - ProForm,
5   - ProFormDateRangePicker,
6   - ProFormSelect,
7   - ProFormText,
8   -} from '@ant-design/pro-components';
  2 +import { ModalForm } from '@ant-design/pro-components';
9 3 import { Button, Form, message } from 'antd';
10 4  
11 5 const waitTime = (time: number = 100) => {
... ... @@ -16,7 +10,7 @@ const waitTime = (time: number = 100) => {
16 10 });
17 11 };
18 12  
19   -export default () => {
  13 +export default ({}) => {
20 14 const [form] = Form.useForm<{ name: string; company: string }>();
21 15 return (
22 16 <ModalForm<{
... ... @@ -43,70 +37,6 @@ export default () =&gt; {
43 37 message.success('提交成功');
44 38 return true;
45 39 }}
46   - >
47   - <ProForm.Group>
48   - <ProFormText
49   - width="md"
50   - name="name"
51   - label="签约客户名称"
52   - tooltip="最长为 24 位"
53   - placeholder="请输入名称"
54   - />
55   -
56   - <ProFormText
57   - width="md"
58   - name="company"
59   - label="我方公司名称"
60   - placeholder="请输入名称"
61   - />
62   - </ProForm.Group>
63   - <ProForm.Group>
64   - <ProFormText
65   - width="md"
66   - name="contract"
67   - label="合同名称"
68   - placeholder="请输入名称"
69   - />
70   - <ProFormDateRangePicker name="contractTime" label="合同生效时间" />
71   - </ProForm.Group>
72   - <ProForm.Group>
73   - <ProFormSelect
74   - request={async () => [
75   - {
76   - value: 'chapter',
77   - label: '盖章后生效',
78   - },
79   - ]}
80   - width="xs"
81   - name="useMode"
82   - label="合同约定生效方式"
83   - />
84   - <ProFormSelect
85   - width="xs"
86   - options={[
87   - {
88   - value: 'time',
89   - label: '履行完终止',
90   - },
91   - ]}
92   - name="unusedMode"
93   - label="合同约定失效效方式"
94   - />
95   - </ProForm.Group>
96   - <ProFormText width="sm" name="id" label="主合同编号" />
97   - <ProFormText
98   - name="project"
99   - disabled
100   - label="项目名称"
101   - initialValue="xxxx项目"
102   - />
103   - <ProFormText
104   - width="xs"
105   - name="mangerName"
106   - disabled
107   - label="商务经理"
108   - initialValue="启途"
109   - />
110   - </ModalForm>
  40 + ></ModalForm>
111 41 );
112 42 };
... ...
src/pages/Invoice/index.tsx
... ... @@ -28,7 +28,7 @@ import { formatDate } from &#39;@/utils/time&#39;;
28 28 import { PlusOutlined } from '@ant-design/icons';
29 29 import { ActionType, ProTable } from '@ant-design/pro-components';
30 30 import { TableDropdown } from '@ant-design/pro-table';
31   -import { Button, Tabs, message } from 'antd';
  31 +import { Button, Space, Table, Tabs, message } from 'antd';
32 32 import { useEffect, useRef, useState } from 'react';
33 33 import { INVOCING_STATUS, PAYEE_OPTIONS } from '../Order/constant';
34 34 import BankImportModal from './components/BankImportModal';
... ... @@ -47,22 +47,36 @@ const InvoicePage = () =&gt; {
47 47 useState(false);
48 48 const [invoiceId, setInvoiceId] = useState(undefined);
49 49  
50   - useEffect(async () => {
51   - let invoiceTypeRet = await postServiceConstInvoiceType();
52   - setInvoiceTypeValueEnum(invoiceTypeRet.data);
53   - let invoicingTypeRet = await postServiceConstInvoicingType();
54   - setInvoicingTypeValueEnum(invoicingTypeRet.data);
55   - const res = await postServiceOrderQuerySalesCode();
56   - let map = {};
57   - res.data?.forEach((item) => {
58   - map[item.userName] = {
59   - text: item.userName,
60   - status: item.userName,
61   - };
62   - console.log(map);
63   - });
64   - setSalesCodeValueEnum(map);
65   - console.log(map);
  50 + useEffect(() => {
  51 + async function extracted() {
  52 + let invoiceTypeRet = await postServiceConstInvoiceType();
  53 + setInvoiceTypeValueEnum(invoiceTypeRet.data);
  54 + }
  55 + extracted().catch(console.error);
  56 + }, []);
  57 +
  58 + useEffect(() => {
  59 + async function extracted() {
  60 + let invoicingTypeRet = await postServiceConstInvoicingType();
  61 + setInvoicingTypeValueEnum(invoicingTypeRet.data);
  62 + }
  63 + extracted().catch(console.error);
  64 + }, []);
  65 +
  66 + useEffect(() => {
  67 + async function extracted() {
  68 + const res = await postServiceOrderQuerySalesCode();
  69 + let map = {};
  70 + res.data?.forEach((item) => {
  71 + map[item.userName] = {
  72 + text: item.userName,
  73 + status: item.userName,
  74 + };
  75 + });
  76 + setSalesCodeValueEnum(map);
  77 + }
  78 +
  79 + extracted().catch(console.error);
66 80 }, []);
67 81  
68 82 const reloadInvoiceTable = () => {
... ... @@ -719,6 +733,21 @@ const InvoicePage = () =&gt; {
719 733 pagination={{
720 734 pageSize: 10,
721 735 }}
  736 + rowSelection={{
  737 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  738 + }}
  739 + tableAlertOptionRender={({ selectedRowKeys, selectedRows }) => {
  740 + console.log(selectedRows);
  741 + console.log(selectedRowKeys);
  742 + return (
  743 + <Space size={16}>
  744 + <InvoicingModal
  745 + key="button"
  746 + selectedRowKeys={selectedRowKeys}
  747 + />
  748 + </Space>
  749 + );
  750 + }}
722 751 request={async (params) => {
723 752 let res = await postServiceInvoiceQueryInvoiceRecordList({
724 753 data: {
... ... @@ -754,7 +783,6 @@ const InvoicePage = () =&gt; {
754 783 dateFormatter="string"
755 784 headerTitle="待开票列表"
756 785 scroll={{ x: 1400, y: 360 }}
757   - toolBarRender={() => [<InvoicingModal key="button" />]}
758 786 />
759 787 ),
760 788 },
... ...
src/pages/Order/components/InvoicingDrawerForm.tsx
... ... @@ -16,24 +16,12 @@ import {
16 16 ProFormUploadDragger,
17 17 } from '@ant-design/pro-components';
18 18 import { Form } from 'antd';
19   -import { useEffect, useState } from 'react';
20 19 import { PAYEE_OPTIONS } from '../constant';
21 20  
22 21 export default ({ dataList, setVisible, onClose }) => {
23 22 // let subOrderIds = dataList?.map((item) => {
24 23 // return item.id;
25 24 // });
26   - const [invoiceTypeValueEnum, setInvoiceTypeValueEnum] = useState({});
27   - const [invoicingTypeValueEnum, setInvoicingTypeValueEnum] = useState({});
28   - let initEnum = async () => {
29   - let invoiceTypeRet = await postServiceConstInvoiceType();
30   - setInvoiceTypeValueEnum(invoiceTypeRet.data);
31   - let invoicingTypeRet = await postServiceConstInvoicingType();
32   - setInvoicingTypeValueEnum(invoicingTypeRet.data);
33   - };
34   - useEffect(() => {
35   - initEnum();
36   - }, []);
37 25 const [form] = Form.useForm();
38 26 return (
39 27 <DrawerForm
... ... @@ -70,11 +58,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
70 58 <ProFormList
71 59 name="subOrderIdObjs"
72 60 label="开票订单"
73   - /*initialValue={subOrders.map((item) => {
74   - return {
75   - value:item.id
76   - }
77   - })}*/
  61 + initialValue={dataList.map((item) => {
  62 + return {
  63 + value: item.id,
  64 + };
  65 + })}
78 66 deleteIconProps={{
79 67 Icon: CloseCircleOutlined,
80 68 tooltipText: '不需要这行了',
... ... @@ -137,16 +125,24 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
137 125 <ProFormSelect
138 126 name="invoicingType"
139 127 label="开具类型"
140   - options={enumToSelect(invoicingTypeValueEnum)}
  128 + request={async () => {
  129 + let invoicingTypeRet = await postServiceConstInvoicingType();
  130 + let options = enumToSelect(invoicingTypeRet.data);
  131 + return options;
  132 + }}
141 133 placeholder="请选择开具类型"
142 134 rules={[{ required: true, message: '请选择开具类型!' }]}
143 135 />
144 136 <ProFormSelect
145 137 name="type"
146 138 label="开票类型"
147   - options={enumToSelect(invoiceTypeValueEnum)}
148 139 placeholder="请选择开票类型"
149 140 rules={[{ required: true, message: '请选择开票类型!' }]}
  141 + request={async () => {
  142 + let invoiceTypeRet = await postServiceConstInvoiceType();
  143 + let options = enumToSelect(invoiceTypeRet.data);
  144 + return options;
  145 + }}
150 146 />
151 147 <ProFormSelect
152 148 name="partyBName"
... ...
src/pages/Order/constant.ts
1 1 import { postServiceOrderQueryCustomerInformation } from '@/services';
2 2 import { enumToProTableEnumValue } from '@/utils';
3 3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order';
  4 +
4 5 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3;
5 6  
6 7 export const PAYMENT_CHANNEL_OPTIONS = {
... ...
src/pages/Order/index.tsx
... ... @@ -219,6 +219,25 @@ const OrderPage = () =&gt; {
219 219 setSelectedSubOrderKeys([]);
220 220 };
221 221  
  222 + useEffect(() => {
  223 + // 使用URLSearchParams来解析查询参数
  224 + const params = new URLSearchParams(location.search);
  225 + const id = params.get('id');
  226 + if (id) {
  227 + mainTableFormRef.current?.setFieldValue('id', id);
  228 + }
  229 + }, []);
  230 +
  231 + useEffect(() => {
  232 + const initEnum = async () => {
  233 + let invoiceTypeRet = await postServiceConstCanApplyAfterInvoicingStatus();
  234 + if (invoiceTypeRet.result === RESPONSE_CODE.SUCCESS) {
  235 + setCanApplyAfterInvoicingStatus(invoiceTypeRet.data);
  236 + }
  237 + };
  238 + initEnum();
  239 + }, []);
  240 +
222 241 /**
223 242 * 复制订单到剪贴板
224 243 * @param record
... ... @@ -4009,37 +4028,40 @@ const OrderPage = () =&gt; {
4009 4028 {roleCode === 'admin' ? '合并(财务)' : '合并开票'}
4010 4029 </Button>,
4011 4030 );
4012   - toolBtns.push(
4013   - <Button
4014   - type="primary"
4015   - key="inv"
4016   - onClick={() => {
4017   - setIsMainOrder(true);
4018   - if (isMainOrder) {
4019   - let flat = [...subOrderSelectedMap.values()].flat();
4020   - //获取flat的中每个元素的afterInvoicingStatus
4021   - let afterInvoicingStatusList = flat.map((item) => {
4022   - return item.afterInvoicingStatus;
4023   - });
4024   - //判断flat中的每个元素是否都存在于canApplyAfterInvoicingStatus中
4025   - if (
4026   - !afterInvoicingStatusList.every((item) => {
4027   - return canApplyAfterInvoicingStatus.includes(item);
4028   - })
4029   - ) {
4030   - message.error('订单状态不正确,请检查!');
4031   - return;
4032   - }
4033   - }
4034   - setInvoicingDrawerFormVisible(true);
4035   - }}
4036   - disabled={selectedSubOrderKeys?.length === 0}
4037   - >
4038   - 申请开票
4039   - </Button>,
4040   - );
4041 4031 }
4042 4032  
  4033 + toolBtns.push(
  4034 + <Button
  4035 + type="primary"
  4036 + key="inv"
  4037 + onClick={() => {
  4038 + setIsMainOrder(true);
  4039 + let flat = [...subOrderSelectedMap.values()].flat();
  4040 + //遍历flat,判断afterInvoicingStatusList存在于canApplyAfterInvoicingStatus
  4041 + flat.forEach((item) => {
  4042 + console.log(item);
  4043 + console.log(item.invoicingStatus === 'UN_INVOICE');
  4044 + console.log(item.afterInvoicingStatus !== null);
  4045 + if (
  4046 + item.invoicingStatus === 'UN_INVOICE' ||
  4047 + (item.afterInvoicingStatus !== null &&
  4048 + !canApplyAfterInvoicingStatus.includes(
  4049 + item.afterInvoicingStatus,
  4050 + ))
  4051 + ) {
  4052 + message.error('存在不能进行开票的订单');
  4053 + return;
  4054 + }
  4055 + });
  4056 + //遍历afterInvoicingStatusList
  4057 + setInvoicingDrawerFormVisible(true);
  4058 + }}
  4059 + disabled={selectedSubOrderKeys?.length === 0}
  4060 + >
  4061 + 申请开票
  4062 + </Button>,
  4063 + );
  4064 +
4043 4065 if (rolePath?.includes('addOrder')) {
4044 4066 toolBtns.push(
4045 4067 <Button
... ... @@ -4085,23 +4107,6 @@ const OrderPage = () =&gt; {
4085 4107 return toolBtns;
4086 4108 }
4087 4109  
4088   - let initEnum = async () => {
4089   - let invoiceTypeRet = await postServiceConstCanApplyAfterInvoicingStatus();
4090   - if (invoiceTypeRet.result === RESPONSE_CODE.SUCCESS) {
4091   - setCanApplyAfterInvoicingStatus(invoiceTypeRet.data);
4092   - }
4093   - };
4094   -
4095   - useEffect(() => {
4096   - initEnum();
4097   - // 使用URLSearchParams来解析查询参数
4098   - const params = new URLSearchParams(location.search);
4099   - const id = params.get('id');
4100   - if (id) {
4101   - mainTableFormRef.current?.setFieldValue('id', id);
4102   - }
4103   - }, []);
4104   -
4105 4110 return (
4106 4111 <div className="order-page-container">
4107 4112 <div id="resizeDiv"></div>
... ...
src/services/definition.ts
... ... @@ -889,6 +889,36 @@ export interface InventoryMaterialStockReq {
889 889 materialId?: string;
890 890 }
891 891  
  892 +export interface InvoiceDetail {
  893 + /**
  894 + * @description
  895 + * 单价
  896 + * @format double
  897 + */
  898 + price?: number;
  899 + /**
  900 + * @description
  901 + * 项目名称
  902 + */
  903 + projectName?: string;
  904 + /**
  905 + * @description
  906 + * 数量
  907 + * @format int32
  908 + */
  909 + quantity?: number;
  910 + /**
  911 + * @description
  912 + * 规格型号
  913 + */
  914 + specification?: string;
  915 + /**
  916 + * @description
  917 + * 单位
  918 + */
  919 + unit?: string;
  920 +}
  921 +
892 922 export interface InvoiceDto {
893 923 /**
894 924 * @description
... ... @@ -987,6 +1017,11 @@ export interface InvoiceRecordDto {
987 1017 id?: number;
988 1018 /**
989 1019 * @description
  1020 + * 发票明细
  1021 + */
  1022 + invoiceDetails?: Array<InvoiceDetail>;
  1023 + /**
  1024 + * @description
990 1025 * 关联发票id
991 1026 */
992 1027 invoiceId?: string;
... ... @@ -1088,6 +1123,10 @@ export interface InvoiceRecordDto {
1088 1123 * 开票状态
1089 1124 */
1090 1125 statusText?: string;
  1126 + /**
  1127 + * @description
  1128 + * 子订单id
  1129 + */
1091 1130 subOrderIds?: Array<number>;
1092 1131 /**
1093 1132 * @description
... ... @@ -1781,19 +1820,9 @@ export interface QueryInvoiceDetailDto {
1781 1820 export interface QueryInvoiceRecordDto {
1782 1821 /**
1783 1822 * @description
1784   - * 开票备注
1785   - */
1786   - comment?: string;
1787   - /**
1788   - * @description
1789 1823 * 联系人
1790 1824 */
1791 1825 contactsLike?: string;
1792   - /**
1793   - * @description
1794   - * 开票内容
1795   - */
1796   - content?: string;
1797 1826 /** @format date-time */
1798 1827 createTimeGe?: string;
1799 1828 /** @format date-time */
... ... @@ -1829,11 +1858,6 @@ export interface QueryInvoiceRecordDto {
1829 1858 /**
1830 1859 * @description
1831 1860 * 开票时间
1832   - */
1833   - invoicingTime?: string;
1834   - /**
1835   - * @description
1836   - * 开票时间
1837 1861 * @format date-time
1838 1862 */
1839 1863 invoicingTimeGe?: string;
... ... @@ -1855,15 +1879,14 @@ export interface QueryInvoiceRecordDto {
1855 1879 isUrgent?: boolean;
1856 1880 /**
1857 1881 * @description
1858   - * 是否加急文本
1859   - */
1860   - isUrgentText?: string;
1861   - /**
1862   - * @description
1863 1882 * 订单号
1864 1883 * @format int64
1865 1884 */
1866 1885 mainOrderId?: number;
  1886 + /**
  1887 + * @description
  1888 + * 主订单idIn
  1889 + */
1867 1890 mainOrderIdIn?: Array<number>;
1868 1891 /**
1869 1892 * @description
... ... @@ -1872,33 +1895,18 @@ export interface QueryInvoiceRecordDto {
1872 1895 mainOrderIdLike?: string;
1873 1896 /**
1874 1897 * @description
1875   - * 订单来源
  1898 + * 是否需要构建发票明细
1876 1899 */
1877   - orderSource?: string;
  1900 + needBuildDetails?: boolean;
1878 1901 /** @format int32 */
1879 1902 pageSize?: number;
1880 1903 /**
1881 1904 * @description
1882   - * 买方注册地址
1883   - */
1884   - partyAAddress?: string;
1885   - /**
1886   - * @description
1887   - * 买方开户行账号
1888   - */
1889   - partyABankAccount?: string;
1890   - /**
1891   - * @description
1892 1905 * 买方名称
1893 1906 */
1894 1907 partyANameLike?: string;
1895 1908 /**
1896 1909 * @description
1897   - * 买方开户行
1898   - */
1899   - partyAOpenBank?: string;
1900   - /**
1901   - * @description
1902 1910 * 买方电话号码
1903 1911 */
1904 1912 partyAPhoneNumberLike?: string;
... ... @@ -1914,25 +1922,13 @@ export interface QueryInvoiceRecordDto {
1914 1922 partyATaxidLike?: string;
1915 1923 /**
1916 1924 * @description
1917   - * 抬头类型
1918   - */
1919   - partyAType?: string;
1920   - /**
1921   - * @description
1922 1925 * 卖方名称
1923 1926 */
1924 1927 partyBName?: string;
1925 1928 /**
1926 1929 * @description
1927   - * 发票金额
1928   - * @format double
1929   - */
1930   - price?: number;
1931   - /**
1932   - * @description
1933   - * 接收邮箱地址
  1930 + * 销售代表
1934 1931 */
1935   - receiveEmail?: string;
1936 1932 salesCode?: string;
1937 1933 /**
1938 1934 * @description
... ... @@ -1941,33 +1937,35 @@ export interface QueryInvoiceRecordDto {
1941 1937 salesCodeLike?: string;
1942 1938 /**
1943 1939 * @description
1944   - * 票状态
  1940 + * 票状态
1945 1941 */
1946 1942 status?: string;
  1943 + /**
  1944 + * @description
  1945 + * 状态非空
  1946 + */
1947 1947 statusIsNotNull?: boolean;
1948   - statusIsNull?: boolean;
1949 1948 /**
1950 1949 * @description
1951   - * 开票状态
  1950 + * 状态为空
1952 1951 */
1953   - statusText?: string;
  1952 + statusIsNull?: boolean;
1954 1953 /**
1955 1954 * @description
1956 1955 * 子订单
1957 1956 * @format int64
1958 1957 */
1959 1958 subOrderId?: number;
1960   - subOrderIdIn?: Array<number>;
1961 1959 /**
1962 1960 * @description
1963   - * 子订单
  1961 + * 子订单idIn
1964 1962 */
1965   - subOrderIdLike?: string;
  1963 + subOrderIdIn?: Array<number>;
1966 1964 /**
1967 1965 * @description
1968   - * 关联订单
  1966 + * 订单
1969 1967 */
1970   - subOrders?: Array<SubOrder>;
  1968 + subOrderIdLike?: string;
1971 1969 /** @format int32 */
1972 1970 total?: number;
1973 1971 /**
... ... @@ -1977,11 +1975,6 @@ export interface QueryInvoiceRecordDto {
1977 1975 type?: string;
1978 1976 /**
1979 1977 * @description
1980   - * 开票类型文本
1981   - */
1982   - typeText?: string;
1983   - /**
1984   - * @description
1985 1978 * 用户id
1986 1979 */
1987 1980 uid?: string;
... ... @@ -2328,6 +2321,8 @@ export interface UpdatePwdVO {
2328 2321  
2329 2322 export interface UserAddressListRequest {
2330 2323 keywords?: string;
  2324 + /** @format int32 */
  2325 + limit?: number;
2331 2326 }
2332 2327  
2333 2328 export interface UserCenterInfoRequest {
... ... @@ -2671,10 +2666,6 @@ export interface SalesRechargePrepaymentUpdateRequest {
2671 2666 salesCode?: string;
2672 2667 }
2673 2668  
2674   -export type ServerResultSimplePageUtilsInvoiceRecordDto = ServerResult<
2675   - SimplePageUtils<InvoiceRecordDto>
2676   ->;
2677   -export type SimplePageUtilsInvoiceRecordDto = SimplePageUtils<InvoiceRecordDto>;
2678 2669 /**
2679 2670 * @description
2680 2671 * 开票添加对象
... ... @@ -2800,14 +2791,3 @@ export interface Dto {
2800 2791 */
2801 2792 subOrderIds?: Array<string>;
2802 2793 }
2803   -
2804   -export interface SimplePageUtils<InvoiceRecordDto = any> {
2805   - /** @format int64 */
2806   - count?: number;
2807   - data?: Array<InvoiceRecordDto>;
2808   - /** @format int64 */
2809   - pageSize?: number;
2810   - specialPath?: Array<string>;
2811   - /** @format int64 */
2812   - total?: number;
2813   -}
... ...
src/services/request.ts
... ... @@ -54,6 +54,7 @@ import type {
54 54 MaterialUnitListRes,
55 55 MeasureUnitListRes,
56 56 MessageQueryDTO,
  57 + ModelAndView,
57 58 OrderAddVO,
58 59 OrderAuditLogQueryVO,
59 60 OrderBaseInfoQueryVO,
... ... @@ -86,7 +87,6 @@ import type {
86 87 SaveReply,
87 88 ServerResult,
88 89 ShippingWarehouseChangeDto,
89   - SimplePageUtils,
90 90 StoreOrderInvoiceRequest,
91 91 SysLogQueryVO,
92 92 SystemCustomFieldReq,
... ... @@ -1540,9 +1540,7 @@ export interface GetErrorResponse {
1540 1540 * @description
1541 1541 * OK
1542 1542 */
1543   - 200: {
1544   - [propertyName: string]: any;
1545   - };
  1543 + 200: ModelAndView;
1546 1544 /**
1547 1545 * @description
1548 1546 * Unauthorized
... ... @@ -1563,9 +1561,9 @@ export interface GetErrorResponse {
1563 1561 export type GetErrorResponseSuccess = GetErrorResponse[200];
1564 1562 /**
1565 1563 * @description
1566   - * error
  1564 + * errorHtml
1567 1565 * @tags basic-error-controller
1568   - * @produces *
  1566 + * @produces text/html
1569 1567 */
1570 1568 export const getError = /* #__PURE__ */ (() => {
1571 1569 const method = 'get';
... ... @@ -1589,9 +1587,7 @@ export interface PutErrorResponse {
1589 1587 * @description
1590 1588 * OK
1591 1589 */
1592   - 200: {
1593   - [propertyName: string]: any;
1594   - };
  1590 + 200: ModelAndView;
1595 1591 /**
1596 1592 * @description
1597 1593 * Created
... ... @@ -1617,9 +1613,9 @@ export interface PutErrorResponse {
1617 1613 export type PutErrorResponseSuccess = PutErrorResponse[200];
1618 1614 /**
1619 1615 * @description
1620   - * error
  1616 + * errorHtml
1621 1617 * @tags basic-error-controller
1622   - * @produces *
  1618 + * @produces text/html
1623 1619 * @consumes application/json
1624 1620 */
1625 1621 export const putError = /* #__PURE__ */ (() => {
... ... @@ -1644,9 +1640,7 @@ export interface PostErrorResponse {
1644 1640 * @description
1645 1641 * OK
1646 1642 */
1647   - 200: {
1648   - [propertyName: string]: any;
1649   - };
  1643 + 200: ModelAndView;
1650 1644 /**
1651 1645 * @description
1652 1646 * Created
... ... @@ -1672,9 +1666,9 @@ export interface PostErrorResponse {
1672 1666 export type PostErrorResponseSuccess = PostErrorResponse[200];
1673 1667 /**
1674 1668 * @description
1675   - * error
  1669 + * errorHtml
1676 1670 * @tags basic-error-controller
1677   - * @produces *
  1671 + * @produces text/html
1678 1672 * @consumes application/json
1679 1673 */
1680 1674 export const postError = /* #__PURE__ */ (() => {
... ... @@ -1699,9 +1693,7 @@ export interface DeleteErrorResponse {
1699 1693 * @description
1700 1694 * OK
1701 1695 */
1702   - 200: {
1703   - [propertyName: string]: any;
1704   - };
  1696 + 200: ModelAndView;
1705 1697 /**
1706 1698 * @description
1707 1699 * No Content
... ... @@ -1722,9 +1714,9 @@ export interface DeleteErrorResponse {
1722 1714 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
1723 1715 /**
1724 1716 * @description
1725   - * error
  1717 + * errorHtml
1726 1718 * @tags basic-error-controller
1727   - * @produces *
  1719 + * @produces text/html
1728 1720 */
1729 1721 export const deleteError = /* #__PURE__ */ (() => {
1730 1722 const method = 'delete';
... ... @@ -1748,9 +1740,7 @@ export interface OptionsErrorResponse {
1748 1740 * @description
1749 1741 * OK
1750 1742 */
1751   - 200: {
1752   - [propertyName: string]: any;
1753   - };
  1743 + 200: ModelAndView;
1754 1744 /**
1755 1745 * @description
1756 1746 * No Content
... ... @@ -1771,9 +1761,9 @@ export interface OptionsErrorResponse {
1771 1761 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
1772 1762 /**
1773 1763 * @description
1774   - * error
  1764 + * errorHtml
1775 1765 * @tags basic-error-controller
1776   - * @produces *
  1766 + * @produces text/html
1777 1767 * @consumes application/json
1778 1768 */
1779 1769 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -1798,9 +1788,7 @@ export interface HeadErrorResponse {
1798 1788 * @description
1799 1789 * OK
1800 1790 */
1801   - 200: {
1802   - [propertyName: string]: any;
1803   - };
  1791 + 200: ModelAndView;
1804 1792 /**
1805 1793 * @description
1806 1794 * No Content
... ... @@ -1821,9 +1809,9 @@ export interface HeadErrorResponse {
1821 1809 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
1822 1810 /**
1823 1811 * @description
1824   - * error
  1812 + * errorHtml
1825 1813 * @tags basic-error-controller
1826   - * @produces *
  1814 + * @produces text/html
1827 1815 * @consumes application/json
1828 1816 */
1829 1817 export const headError = /* #__PURE__ */ (() => {
... ... @@ -1848,9 +1836,7 @@ export interface PatchErrorResponse {
1848 1836 * @description
1849 1837 * OK
1850 1838 */
1851   - 200: {
1852   - [propertyName: string]: any;
1853   - };
  1839 + 200: ModelAndView;
1854 1840 /**
1855 1841 * @description
1856 1842 * No Content
... ... @@ -1871,9 +1857,9 @@ export interface PatchErrorResponse {
1871 1857 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
1872 1858 /**
1873 1859 * @description
1874   - * error
  1860 + * errorHtml
1875 1861 * @tags basic-error-controller
1876   - * @produces *
  1862 + * @produces text/html
1877 1863 * @consumes application/json
1878 1864 */
1879 1865 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -8150,7 +8136,7 @@ export interface PostServiceInvoiceApplyInvoiceResponse {
8150 8136 * @description
8151 8137 * OK
8152 8138 */
8153   - 200: ServerResult<SimplePageUtils<InvoiceRecordDto>>;
  8139 + 200: ServerResult;
8154 8140 /**
8155 8141 * @description
8156 8142 * Created
... ... @@ -8273,6 +8259,77 @@ export const postServiceInvoiceCancelInvoiceAndBankStatement =
8273 8259 return request;
8274 8260 })();
8275 8261  
  8262 +/** @description request parameter type for postServiceInvoiceDealInvoicingResult */
  8263 +export interface PostServiceInvoiceDealInvoicingResultOption {
  8264 + /**
  8265 + * @description
  8266 + * dto
  8267 + */
  8268 + body: {
  8269 + /**
  8270 + @description
  8271 + dto */
  8272 + dto: Dto;
  8273 + };
  8274 +}
  8275 +
  8276 +/** @description response type for postServiceInvoiceDealInvoicingResult */
  8277 +export interface PostServiceInvoiceDealInvoicingResultResponse {
  8278 + /**
  8279 + * @description
  8280 + * OK
  8281 + */
  8282 + 200: ServerResult;
  8283 + /**
  8284 + * @description
  8285 + * Created
  8286 + */
  8287 + 201: any;
  8288 + /**
  8289 + * @description
  8290 + * Unauthorized
  8291 + */
  8292 + 401: any;
  8293 + /**
  8294 + * @description
  8295 + * Forbidden
  8296 + */
  8297 + 403: any;
  8298 + /**
  8299 + * @description
  8300 + * Not Found
  8301 + */
  8302 + 404: any;
  8303 +}
  8304 +
  8305 +export type PostServiceInvoiceDealInvoicingResultResponseSuccess =
  8306 + PostServiceInvoiceDealInvoicingResultResponse[200];
  8307 +/**
  8308 + * @description
  8309 + * 拉取开票结果
  8310 + * @tags 发票
  8311 + * @produces *
  8312 + * @consumes application/json
  8313 + */
  8314 +export const postServiceInvoiceDealInvoicingResult = /* #__PURE__ */ (() => {
  8315 + const method = 'post';
  8316 + const url = '/service/invoice/dealInvoicingResult';
  8317 + function request(
  8318 + option: PostServiceInvoiceDealInvoicingResultOption,
  8319 + ): Promise<PostServiceInvoiceDealInvoicingResultResponseSuccess> {
  8320 + return requester(request.url, {
  8321 + method: request.method,
  8322 + ...option,
  8323 + }) as unknown as Promise<PostServiceInvoiceDealInvoicingResultResponseSuccess>;
  8324 + }
  8325 +
  8326 + /** http method */
  8327 + request.method = method;
  8328 + /** request url */
  8329 + request.url = url;
  8330 + return request;
  8331 +})();
  8332 +
8276 8333 /** @description request parameter type for postServiceInvoiceDeleteInvoice */
8277 8334 export interface PostServiceInvoiceDeleteInvoiceOption {
8278 8335 /**
... ... @@ -8486,6 +8543,77 @@ export const postServiceInvoiceInvoiceWriteOff = /* #__PURE__ */ (() =&gt; {
8486 8543 return request;
8487 8544 })();
8488 8545  
  8546 +/** @description request parameter type for postServiceInvoiceInvoicing */
  8547 +export interface PostServiceInvoiceInvoicingOption {
  8548 + /**
  8549 + * @description
  8550 + * dto
  8551 + */
  8552 + body: {
  8553 + /**
  8554 + @description
  8555 + dto */
  8556 + dto: Dto;
  8557 + };
  8558 +}
  8559 +
  8560 +/** @description response type for postServiceInvoiceInvoicing */
  8561 +export interface PostServiceInvoiceInvoicingResponse {
  8562 + /**
  8563 + * @description
  8564 + * OK
  8565 + */
  8566 + 200: ServerResult;
  8567 + /**
  8568 + * @description
  8569 + * Created
  8570 + */
  8571 + 201: any;
  8572 + /**
  8573 + * @description
  8574 + * Unauthorized
  8575 + */
  8576 + 401: any;
  8577 + /**
  8578 + * @description
  8579 + * Forbidden
  8580 + */
  8581 + 403: any;
  8582 + /**
  8583 + * @description
  8584 + * Not Found
  8585 + */
  8586 + 404: any;
  8587 +}
  8588 +
  8589 +export type PostServiceInvoiceInvoicingResponseSuccess =
  8590 + PostServiceInvoiceInvoicingResponse[200];
  8591 +/**
  8592 + * @description
  8593 + * 开票
  8594 + * @tags 发票
  8595 + * @produces *
  8596 + * @consumes application/json
  8597 + */
  8598 +export const postServiceInvoiceInvoicing = /* #__PURE__ */ (() => {
  8599 + const method = 'post';
  8600 + const url = '/service/invoice/invoicing';
  8601 + function request(
  8602 + option: PostServiceInvoiceInvoicingOption,
  8603 + ): Promise<PostServiceInvoiceInvoicingResponseSuccess> {
  8604 + return requester(request.url, {
  8605 + method: request.method,
  8606 + ...option,
  8607 + }) as unknown as Promise<PostServiceInvoiceInvoicingResponseSuccess>;
  8608 + }
  8609 +
  8610 + /** http method */
  8611 + request.method = method;
  8612 + /** request url */
  8613 + request.url = url;
  8614 + return request;
  8615 +})();
  8616 +
8489 8617 /** @description request parameter type for postServiceInvoiceQueryInvoice */
8490 8618 export interface PostServiceInvoiceQueryInvoiceOption {
8491 8619 /**
... ... @@ -8648,7 +8776,7 @@ export interface PostServiceInvoiceQueryInvoiceRecordListResponse {
8648 8776 * @description
8649 8777 * OK
8650 8778 */
8651   - 200: ServerResult<SimplePageUtils<InvoiceRecordDto>>;
  8779 + 200: ServerResult;
8652 8780 /**
8653 8781 * @description
8654 8782 * Created
... ... @@ -8699,6 +8827,55 @@ export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() =&gt; {
8699 8827 return request;
8700 8828 })();
8701 8829  
  8830 +/** @description response type for getServiceInvoiceQueryReadyInvoiceRecordList */
  8831 +export interface GetServiceInvoiceQueryReadyInvoiceRecordListResponse {
  8832 + /**
  8833 + * @description
  8834 + * OK
  8835 + */
  8836 + 200: ServerResult;
  8837 + /**
  8838 + * @description
  8839 + * Unauthorized
  8840 + */
  8841 + 401: any;
  8842 + /**
  8843 + * @description
  8844 + * Forbidden
  8845 + */
  8846 + 403: any;
  8847 + /**
  8848 + * @description
  8849 + * Not Found
  8850 + */
  8851 + 404: any;
  8852 +}
  8853 +
  8854 +export type GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess =
  8855 + GetServiceInvoiceQueryReadyInvoiceRecordListResponse[200];
  8856 +/**
  8857 + * @description
  8858 + * 获取要开票记录列表
  8859 + * @tags 发票
  8860 + * @produces *
  8861 + */
  8862 +export const getServiceInvoiceQueryReadyInvoiceRecordList =
  8863 + /* #__PURE__ */ (() => {
  8864 + const method = 'get';
  8865 + const url = '/service/invoice/queryReadyInvoiceRecordList';
  8866 + function request(): Promise<GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess> {
  8867 + return requester(request.url, {
  8868 + method: request.method,
  8869 + }) as unknown as Promise<GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess>;
  8870 + }
  8871 +
  8872 + /** http method */
  8873 + request.method = method;
  8874 + /** request url */
  8875 + request.url = url;
  8876 + return request;
  8877 + })();
  8878 +
8702 8879 /** @description request parameter type for postServiceInvoiceReissue */
8703 8880 export interface PostServiceInvoiceReissueOption {
8704 8881 /**
... ...