Commit 7d4330378a5fe624c636ee29033b74e89b47573f

Authored by 曾国涛
1 parent 0a0810a3

feat: 开票功能开发

src/pages/Invoice/components/InvoicingModal.tsx
1 import { PlusOutlined } from '@ant-design/icons'; 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 import { Button, Form, message } from 'antd'; 3 import { Button, Form, message } from 'antd';
10 4
11 const waitTime = (time: number = 100) => { 5 const waitTime = (time: number = 100) => {
@@ -16,7 +10,7 @@ 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 const [form] = Form.useForm<{ name: string; company: string }>(); 14 const [form] = Form.useForm<{ name: string; company: string }>();
21 return ( 15 return (
22 <ModalForm<{ 16 <ModalForm<{
@@ -43,70 +37,6 @@ export default () =&gt; { @@ -43,70 +37,6 @@ export default () =&gt; {
43 message.success('提交成功'); 37 message.success('提交成功');
44 return true; 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,7 +28,7 @@ import { formatDate } from &#39;@/utils/time&#39;;
28 import { PlusOutlined } from '@ant-design/icons'; 28 import { PlusOutlined } from '@ant-design/icons';
29 import { ActionType, ProTable } from '@ant-design/pro-components'; 29 import { ActionType, ProTable } from '@ant-design/pro-components';
30 import { TableDropdown } from '@ant-design/pro-table'; 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 import { useEffect, useRef, useState } from 'react'; 32 import { useEffect, useRef, useState } from 'react';
33 import { INVOCING_STATUS, PAYEE_OPTIONS } from '../Order/constant'; 33 import { INVOCING_STATUS, PAYEE_OPTIONS } from '../Order/constant';
34 import BankImportModal from './components/BankImportModal'; 34 import BankImportModal from './components/BankImportModal';
@@ -47,22 +47,36 @@ const InvoicePage = () =&gt; { @@ -47,22 +47,36 @@ const InvoicePage = () =&gt; {
47 useState(false); 47 useState(false);
48 const [invoiceId, setInvoiceId] = useState(undefined); 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 const reloadInvoiceTable = () => { 82 const reloadInvoiceTable = () => {
@@ -719,6 +733,21 @@ const InvoicePage = () =&gt; { @@ -719,6 +733,21 @@ const InvoicePage = () =&gt; {
719 pagination={{ 733 pagination={{
720 pageSize: 10, 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 request={async (params) => { 751 request={async (params) => {
723 let res = await postServiceInvoiceQueryInvoiceRecordList({ 752 let res = await postServiceInvoiceQueryInvoiceRecordList({
724 data: { 753 data: {
@@ -754,7 +783,6 @@ const InvoicePage = () =&gt; { @@ -754,7 +783,6 @@ const InvoicePage = () =&gt; {
754 dateFormatter="string" 783 dateFormatter="string"
755 headerTitle="待开票列表" 784 headerTitle="待开票列表"
756 scroll={{ x: 1400, y: 360 }} 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,24 +16,12 @@ import {
16 ProFormUploadDragger, 16 ProFormUploadDragger,
17 } from '@ant-design/pro-components'; 17 } from '@ant-design/pro-components';
18 import { Form } from 'antd'; 18 import { Form } from 'antd';
19 -import { useEffect, useState } from 'react';  
20 import { PAYEE_OPTIONS } from '../constant'; 19 import { PAYEE_OPTIONS } from '../constant';
21 20
22 export default ({ dataList, setVisible, onClose }) => { 21 export default ({ dataList, setVisible, onClose }) => {
23 // let subOrderIds = dataList?.map((item) => { 22 // let subOrderIds = dataList?.map((item) => {
24 // return item.id; 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 const [form] = Form.useForm(); 25 const [form] = Form.useForm();
38 return ( 26 return (
39 <DrawerForm 27 <DrawerForm
@@ -70,11 +58,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -70,11 +58,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
70 <ProFormList 58 <ProFormList
71 name="subOrderIdObjs" 59 name="subOrderIdObjs"
72 label="开票订单" 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 deleteIconProps={{ 66 deleteIconProps={{
79 Icon: CloseCircleOutlined, 67 Icon: CloseCircleOutlined,
80 tooltipText: '不需要这行了', 68 tooltipText: '不需要这行了',
@@ -137,16 +125,24 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -137,16 +125,24 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
137 <ProFormSelect 125 <ProFormSelect
138 name="invoicingType" 126 name="invoicingType"
139 label="开具类型" 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 placeholder="请选择开具类型" 133 placeholder="请选择开具类型"
142 rules={[{ required: true, message: '请选择开具类型!' }]} 134 rules={[{ required: true, message: '请选择开具类型!' }]}
143 /> 135 />
144 <ProFormSelect 136 <ProFormSelect
145 name="type" 137 name="type"
146 label="开票类型" 138 label="开票类型"
147 - options={enumToSelect(invoiceTypeValueEnum)}  
148 placeholder="请选择开票类型" 139 placeholder="请选择开票类型"
149 rules={[{ required: true, message: '请选择开票类型!' }]} 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 <ProFormSelect 147 <ProFormSelect
152 name="partyBName" 148 name="partyBName"
src/pages/Order/constant.ts
1 import { postServiceOrderQueryCustomerInformation } from '@/services'; 1 import { postServiceOrderQueryCustomerInformation } from '@/services';
2 import { enumToProTableEnumValue } from '@/utils'; 2 import { enumToProTableEnumValue } from '@/utils';
3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order'; 3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order';
  4 +
4 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3; 5 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3;
5 6
6 export const PAYMENT_CHANNEL_OPTIONS = { 7 export const PAYMENT_CHANNEL_OPTIONS = {
src/pages/Order/index.tsx
@@ -219,6 +219,25 @@ const OrderPage = () =&gt; { @@ -219,6 +219,25 @@ const OrderPage = () =&gt; {
219 setSelectedSubOrderKeys([]); 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 * @param record 243 * @param record
@@ -4009,37 +4028,40 @@ const OrderPage = () =&gt; { @@ -4009,37 +4028,40 @@ const OrderPage = () =&gt; {
4009 {roleCode === 'admin' ? '合并(财务)' : '合并开票'} 4028 {roleCode === 'admin' ? '合并(财务)' : '合并开票'}
4010 </Button>, 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 if (rolePath?.includes('addOrder')) { 4065 if (rolePath?.includes('addOrder')) {
4044 toolBtns.push( 4066 toolBtns.push(
4045 <Button 4067 <Button
@@ -4085,23 +4107,6 @@ const OrderPage = () =&gt; { @@ -4085,23 +4107,6 @@ const OrderPage = () =&gt; {
4085 return toolBtns; 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 return ( 4110 return (
4106 <div className="order-page-container"> 4111 <div className="order-page-container">
4107 <div id="resizeDiv"></div> 4112 <div id="resizeDiv"></div>
src/services/definition.ts
@@ -889,6 +889,36 @@ export interface InventoryMaterialStockReq { @@ -889,6 +889,36 @@ export interface InventoryMaterialStockReq {
889 materialId?: string; 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 export interface InvoiceDto { 922 export interface InvoiceDto {
893 /** 923 /**
894 * @description 924 * @description
@@ -987,6 +1017,11 @@ export interface InvoiceRecordDto { @@ -987,6 +1017,11 @@ export interface InvoiceRecordDto {
987 id?: number; 1017 id?: number;
988 /** 1018 /**
989 * @description 1019 * @description
  1020 + * 发票明细
  1021 + */
  1022 + invoiceDetails?: Array<InvoiceDetail>;
  1023 + /**
  1024 + * @description
990 * 关联发票id 1025 * 关联发票id
991 */ 1026 */
992 invoiceId?: string; 1027 invoiceId?: string;
@@ -1088,6 +1123,10 @@ export interface InvoiceRecordDto { @@ -1088,6 +1123,10 @@ export interface InvoiceRecordDto {
1088 * 开票状态 1123 * 开票状态
1089 */ 1124 */
1090 statusText?: string; 1125 statusText?: string;
  1126 + /**
  1127 + * @description
  1128 + * 子订单id
  1129 + */
1091 subOrderIds?: Array<number>; 1130 subOrderIds?: Array<number>;
1092 /** 1131 /**
1093 * @description 1132 * @description
@@ -1781,19 +1820,9 @@ export interface QueryInvoiceDetailDto { @@ -1781,19 +1820,9 @@ export interface QueryInvoiceDetailDto {
1781 export interface QueryInvoiceRecordDto { 1820 export interface QueryInvoiceRecordDto {
1782 /** 1821 /**
1783 * @description 1822 * @description
1784 - * 开票备注  
1785 - */  
1786 - comment?: string;  
1787 - /**  
1788 - * @description  
1789 * 联系人 1823 * 联系人
1790 */ 1824 */
1791 contactsLike?: string; 1825 contactsLike?: string;
1792 - /**  
1793 - * @description  
1794 - * 开票内容  
1795 - */  
1796 - content?: string;  
1797 /** @format date-time */ 1826 /** @format date-time */
1798 createTimeGe?: string; 1827 createTimeGe?: string;
1799 /** @format date-time */ 1828 /** @format date-time */
@@ -1829,11 +1858,6 @@ export interface QueryInvoiceRecordDto { @@ -1829,11 +1858,6 @@ export interface QueryInvoiceRecordDto {
1829 /** 1858 /**
1830 * @description 1859 * @description
1831 * 开票时间 1860 * 开票时间
1832 - */  
1833 - invoicingTime?: string;  
1834 - /**  
1835 - * @description  
1836 - * 开票时间  
1837 * @format date-time 1861 * @format date-time
1838 */ 1862 */
1839 invoicingTimeGe?: string; 1863 invoicingTimeGe?: string;
@@ -1855,15 +1879,14 @@ export interface QueryInvoiceRecordDto { @@ -1855,15 +1879,14 @@ export interface QueryInvoiceRecordDto {
1855 isUrgent?: boolean; 1879 isUrgent?: boolean;
1856 /** 1880 /**
1857 * @description 1881 * @description
1858 - * 是否加急文本  
1859 - */  
1860 - isUrgentText?: string;  
1861 - /**  
1862 - * @description  
1863 * 订单号 1882 * 订单号
1864 * @format int64 1883 * @format int64
1865 */ 1884 */
1866 mainOrderId?: number; 1885 mainOrderId?: number;
  1886 + /**
  1887 + * @description
  1888 + * 主订单idIn
  1889 + */
1867 mainOrderIdIn?: Array<number>; 1890 mainOrderIdIn?: Array<number>;
1868 /** 1891 /**
1869 * @description 1892 * @description
@@ -1872,33 +1895,18 @@ export interface QueryInvoiceRecordDto { @@ -1872,33 +1895,18 @@ export interface QueryInvoiceRecordDto {
1872 mainOrderIdLike?: string; 1895 mainOrderIdLike?: string;
1873 /** 1896 /**
1874 * @description 1897 * @description
1875 - * 订单来源 1898 + * 是否需要构建发票明细
1876 */ 1899 */
1877 - orderSource?: string; 1900 + needBuildDetails?: boolean;
1878 /** @format int32 */ 1901 /** @format int32 */
1879 pageSize?: number; 1902 pageSize?: number;
1880 /** 1903 /**
1881 * @description 1904 * @description
1882 - * 买方注册地址  
1883 - */  
1884 - partyAAddress?: string;  
1885 - /**  
1886 - * @description  
1887 - * 买方开户行账号  
1888 - */  
1889 - partyABankAccount?: string;  
1890 - /**  
1891 - * @description  
1892 * 买方名称 1905 * 买方名称
1893 */ 1906 */
1894 partyANameLike?: string; 1907 partyANameLike?: string;
1895 /** 1908 /**
1896 * @description 1909 * @description
1897 - * 买方开户行  
1898 - */  
1899 - partyAOpenBank?: string;  
1900 - /**  
1901 - * @description  
1902 * 买方电话号码 1910 * 买方电话号码
1903 */ 1911 */
1904 partyAPhoneNumberLike?: string; 1912 partyAPhoneNumberLike?: string;
@@ -1914,25 +1922,13 @@ export interface QueryInvoiceRecordDto { @@ -1914,25 +1922,13 @@ export interface QueryInvoiceRecordDto {
1914 partyATaxidLike?: string; 1922 partyATaxidLike?: string;
1915 /** 1923 /**
1916 * @description 1924 * @description
1917 - * 抬头类型  
1918 - */  
1919 - partyAType?: string;  
1920 - /**  
1921 - * @description  
1922 * 卖方名称 1925 * 卖方名称
1923 */ 1926 */
1924 partyBName?: string; 1927 partyBName?: string;
1925 /** 1928 /**
1926 * @description 1929 * @description
1927 - * 发票金额  
1928 - * @format double  
1929 - */  
1930 - price?: number;  
1931 - /**  
1932 - * @description  
1933 - * 接收邮箱地址 1930 + * 销售代表
1934 */ 1931 */
1935 - receiveEmail?: string;  
1936 salesCode?: string; 1932 salesCode?: string;
1937 /** 1933 /**
1938 * @description 1934 * @description
@@ -1941,33 +1937,35 @@ export interface QueryInvoiceRecordDto { @@ -1941,33 +1937,35 @@ export interface QueryInvoiceRecordDto {
1941 salesCodeLike?: string; 1937 salesCodeLike?: string;
1942 /** 1938 /**
1943 * @description 1939 * @description
1944 - * 票状态 1940 + * 票状态
1945 */ 1941 */
1946 status?: string; 1942 status?: string;
  1943 + /**
  1944 + * @description
  1945 + * 状态非空
  1946 + */
1947 statusIsNotNull?: boolean; 1947 statusIsNotNull?: boolean;
1948 - statusIsNull?: boolean;  
1949 /** 1948 /**
1950 * @description 1949 * @description
1951 - * 开票状态 1950 + * 状态为空
1952 */ 1951 */
1953 - statusText?: string; 1952 + statusIsNull?: boolean;
1954 /** 1953 /**
1955 * @description 1954 * @description
1956 * 子订单 1955 * 子订单
1957 * @format int64 1956 * @format int64
1958 */ 1957 */
1959 subOrderId?: number; 1958 subOrderId?: number;
1960 - subOrderIdIn?: Array<number>;  
1961 /** 1959 /**
1962 * @description 1960 * @description
1963 - * 子订单 1961 + * 子订单idIn
1964 */ 1962 */
1965 - subOrderIdLike?: string; 1963 + subOrderIdIn?: Array<number>;
1966 /** 1964 /**
1967 * @description 1965 * @description
1968 - * 关联订单 1966 + * 订单
1969 */ 1967 */
1970 - subOrders?: Array<SubOrder>; 1968 + subOrderIdLike?: string;
1971 /** @format int32 */ 1969 /** @format int32 */
1972 total?: number; 1970 total?: number;
1973 /** 1971 /**
@@ -1977,11 +1975,6 @@ export interface QueryInvoiceRecordDto { @@ -1977,11 +1975,6 @@ export interface QueryInvoiceRecordDto {
1977 type?: string; 1975 type?: string;
1978 /** 1976 /**
1979 * @description 1977 * @description
1980 - * 开票类型文本  
1981 - */  
1982 - typeText?: string;  
1983 - /**  
1984 - * @description  
1985 * 用户id 1978 * 用户id
1986 */ 1979 */
1987 uid?: string; 1980 uid?: string;
@@ -2328,6 +2321,8 @@ export interface UpdatePwdVO { @@ -2328,6 +2321,8 @@ export interface UpdatePwdVO {
2328 2321
2329 export interface UserAddressListRequest { 2322 export interface UserAddressListRequest {
2330 keywords?: string; 2323 keywords?: string;
  2324 + /** @format int32 */
  2325 + limit?: number;
2331 } 2326 }
2332 2327
2333 export interface UserCenterInfoRequest { 2328 export interface UserCenterInfoRequest {
@@ -2671,10 +2666,6 @@ export interface SalesRechargePrepaymentUpdateRequest { @@ -2671,10 +2666,6 @@ export interface SalesRechargePrepaymentUpdateRequest {
2671 salesCode?: string; 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 * @description 2670 * @description
2680 * 开票添加对象 2671 * 开票添加对象
@@ -2800,14 +2791,3 @@ export interface Dto { @@ -2800,14 +2791,3 @@ export interface Dto {
2800 */ 2791 */
2801 subOrderIds?: Array<string>; 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,6 +54,7 @@ import type {
54 MaterialUnitListRes, 54 MaterialUnitListRes,
55 MeasureUnitListRes, 55 MeasureUnitListRes,
56 MessageQueryDTO, 56 MessageQueryDTO,
  57 + ModelAndView,
57 OrderAddVO, 58 OrderAddVO,
58 OrderAuditLogQueryVO, 59 OrderAuditLogQueryVO,
59 OrderBaseInfoQueryVO, 60 OrderBaseInfoQueryVO,
@@ -86,7 +87,6 @@ import type { @@ -86,7 +87,6 @@ import type {
86 SaveReply, 87 SaveReply,
87 ServerResult, 88 ServerResult,
88 ShippingWarehouseChangeDto, 89 ShippingWarehouseChangeDto,
89 - SimplePageUtils,  
90 StoreOrderInvoiceRequest, 90 StoreOrderInvoiceRequest,
91 SysLogQueryVO, 91 SysLogQueryVO,
92 SystemCustomFieldReq, 92 SystemCustomFieldReq,
@@ -1540,9 +1540,7 @@ export interface GetErrorResponse { @@ -1540,9 +1540,7 @@ export interface GetErrorResponse {
1540 * @description 1540 * @description
1541 * OK 1541 * OK
1542 */ 1542 */
1543 - 200: {  
1544 - [propertyName: string]: any;  
1545 - }; 1543 + 200: ModelAndView;
1546 /** 1544 /**
1547 * @description 1545 * @description
1548 * Unauthorized 1546 * Unauthorized
@@ -1563,9 +1561,9 @@ export interface GetErrorResponse { @@ -1563,9 +1561,9 @@ export interface GetErrorResponse {
1563 export type GetErrorResponseSuccess = GetErrorResponse[200]; 1561 export type GetErrorResponseSuccess = GetErrorResponse[200];
1564 /** 1562 /**
1565 * @description 1563 * @description
1566 - * error 1564 + * errorHtml
1567 * @tags basic-error-controller 1565 * @tags basic-error-controller
1568 - * @produces * 1566 + * @produces text/html
1569 */ 1567 */
1570 export const getError = /* #__PURE__ */ (() => { 1568 export const getError = /* #__PURE__ */ (() => {
1571 const method = 'get'; 1569 const method = 'get';
@@ -1589,9 +1587,7 @@ export interface PutErrorResponse { @@ -1589,9 +1587,7 @@ export interface PutErrorResponse {
1589 * @description 1587 * @description
1590 * OK 1588 * OK
1591 */ 1589 */
1592 - 200: {  
1593 - [propertyName: string]: any;  
1594 - }; 1590 + 200: ModelAndView;
1595 /** 1591 /**
1596 * @description 1592 * @description
1597 * Created 1593 * Created
@@ -1617,9 +1613,9 @@ export interface PutErrorResponse { @@ -1617,9 +1613,9 @@ export interface PutErrorResponse {
1617 export type PutErrorResponseSuccess = PutErrorResponse[200]; 1613 export type PutErrorResponseSuccess = PutErrorResponse[200];
1618 /** 1614 /**
1619 * @description 1615 * @description
1620 - * error 1616 + * errorHtml
1621 * @tags basic-error-controller 1617 * @tags basic-error-controller
1622 - * @produces * 1618 + * @produces text/html
1623 * @consumes application/json 1619 * @consumes application/json
1624 */ 1620 */
1625 export const putError = /* #__PURE__ */ (() => { 1621 export const putError = /* #__PURE__ */ (() => {
@@ -1644,9 +1640,7 @@ export interface PostErrorResponse { @@ -1644,9 +1640,7 @@ export interface PostErrorResponse {
1644 * @description 1640 * @description
1645 * OK 1641 * OK
1646 */ 1642 */
1647 - 200: {  
1648 - [propertyName: string]: any;  
1649 - }; 1643 + 200: ModelAndView;
1650 /** 1644 /**
1651 * @description 1645 * @description
1652 * Created 1646 * Created
@@ -1672,9 +1666,9 @@ export interface PostErrorResponse { @@ -1672,9 +1666,9 @@ export interface PostErrorResponse {
1672 export type PostErrorResponseSuccess = PostErrorResponse[200]; 1666 export type PostErrorResponseSuccess = PostErrorResponse[200];
1673 /** 1667 /**
1674 * @description 1668 * @description
1675 - * error 1669 + * errorHtml
1676 * @tags basic-error-controller 1670 * @tags basic-error-controller
1677 - * @produces * 1671 + * @produces text/html
1678 * @consumes application/json 1672 * @consumes application/json
1679 */ 1673 */
1680 export const postError = /* #__PURE__ */ (() => { 1674 export const postError = /* #__PURE__ */ (() => {
@@ -1699,9 +1693,7 @@ export interface DeleteErrorResponse { @@ -1699,9 +1693,7 @@ export interface DeleteErrorResponse {
1699 * @description 1693 * @description
1700 * OK 1694 * OK
1701 */ 1695 */
1702 - 200: {  
1703 - [propertyName: string]: any;  
1704 - }; 1696 + 200: ModelAndView;
1705 /** 1697 /**
1706 * @description 1698 * @description
1707 * No Content 1699 * No Content
@@ -1722,9 +1714,9 @@ export interface DeleteErrorResponse { @@ -1722,9 +1714,9 @@ export interface DeleteErrorResponse {
1722 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; 1714 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
1723 /** 1715 /**
1724 * @description 1716 * @description
1725 - * error 1717 + * errorHtml
1726 * @tags basic-error-controller 1718 * @tags basic-error-controller
1727 - * @produces * 1719 + * @produces text/html
1728 */ 1720 */
1729 export const deleteError = /* #__PURE__ */ (() => { 1721 export const deleteError = /* #__PURE__ */ (() => {
1730 const method = 'delete'; 1722 const method = 'delete';
@@ -1748,9 +1740,7 @@ export interface OptionsErrorResponse { @@ -1748,9 +1740,7 @@ export interface OptionsErrorResponse {
1748 * @description 1740 * @description
1749 * OK 1741 * OK
1750 */ 1742 */
1751 - 200: {  
1752 - [propertyName: string]: any;  
1753 - }; 1743 + 200: ModelAndView;
1754 /** 1744 /**
1755 * @description 1745 * @description
1756 * No Content 1746 * No Content
@@ -1771,9 +1761,9 @@ export interface OptionsErrorResponse { @@ -1771,9 +1761,9 @@ export interface OptionsErrorResponse {
1771 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; 1761 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
1772 /** 1762 /**
1773 * @description 1763 * @description
1774 - * error 1764 + * errorHtml
1775 * @tags basic-error-controller 1765 * @tags basic-error-controller
1776 - * @produces * 1766 + * @produces text/html
1777 * @consumes application/json 1767 * @consumes application/json
1778 */ 1768 */
1779 export const optionsError = /* #__PURE__ */ (() => { 1769 export const optionsError = /* #__PURE__ */ (() => {
@@ -1798,9 +1788,7 @@ export interface HeadErrorResponse { @@ -1798,9 +1788,7 @@ export interface HeadErrorResponse {
1798 * @description 1788 * @description
1799 * OK 1789 * OK
1800 */ 1790 */
1801 - 200: {  
1802 - [propertyName: string]: any;  
1803 - }; 1791 + 200: ModelAndView;
1804 /** 1792 /**
1805 * @description 1793 * @description
1806 * No Content 1794 * No Content
@@ -1821,9 +1809,9 @@ export interface HeadErrorResponse { @@ -1821,9 +1809,9 @@ export interface HeadErrorResponse {
1821 export type HeadErrorResponseSuccess = HeadErrorResponse[200]; 1809 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
1822 /** 1810 /**
1823 * @description 1811 * @description
1824 - * error 1812 + * errorHtml
1825 * @tags basic-error-controller 1813 * @tags basic-error-controller
1826 - * @produces * 1814 + * @produces text/html
1827 * @consumes application/json 1815 * @consumes application/json
1828 */ 1816 */
1829 export const headError = /* #__PURE__ */ (() => { 1817 export const headError = /* #__PURE__ */ (() => {
@@ -1848,9 +1836,7 @@ export interface PatchErrorResponse { @@ -1848,9 +1836,7 @@ export interface PatchErrorResponse {
1848 * @description 1836 * @description
1849 * OK 1837 * OK
1850 */ 1838 */
1851 - 200: {  
1852 - [propertyName: string]: any;  
1853 - }; 1839 + 200: ModelAndView;
1854 /** 1840 /**
1855 * @description 1841 * @description
1856 * No Content 1842 * No Content
@@ -1871,9 +1857,9 @@ export interface PatchErrorResponse { @@ -1871,9 +1857,9 @@ export interface PatchErrorResponse {
1871 export type PatchErrorResponseSuccess = PatchErrorResponse[200]; 1857 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
1872 /** 1858 /**
1873 * @description 1859 * @description
1874 - * error 1860 + * errorHtml
1875 * @tags basic-error-controller 1861 * @tags basic-error-controller
1876 - * @produces * 1862 + * @produces text/html
1877 * @consumes application/json 1863 * @consumes application/json
1878 */ 1864 */
1879 export const patchError = /* #__PURE__ */ (() => { 1865 export const patchError = /* #__PURE__ */ (() => {
@@ -8150,7 +8136,7 @@ export interface PostServiceInvoiceApplyInvoiceResponse { @@ -8150,7 +8136,7 @@ export interface PostServiceInvoiceApplyInvoiceResponse {
8150 * @description 8136 * @description
8151 * OK 8137 * OK
8152 */ 8138 */
8153 - 200: ServerResult<SimplePageUtils<InvoiceRecordDto>>; 8139 + 200: ServerResult;
8154 /** 8140 /**
8155 * @description 8141 * @description
8156 * Created 8142 * Created
@@ -8273,6 +8259,77 @@ export const postServiceInvoiceCancelInvoiceAndBankStatement = @@ -8273,6 +8259,77 @@ export const postServiceInvoiceCancelInvoiceAndBankStatement =
8273 return request; 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 /** @description request parameter type for postServiceInvoiceDeleteInvoice */ 8333 /** @description request parameter type for postServiceInvoiceDeleteInvoice */
8277 export interface PostServiceInvoiceDeleteInvoiceOption { 8334 export interface PostServiceInvoiceDeleteInvoiceOption {
8278 /** 8335 /**
@@ -8486,6 +8543,77 @@ export const postServiceInvoiceInvoiceWriteOff = /* #__PURE__ */ (() =&gt; { @@ -8486,6 +8543,77 @@ export const postServiceInvoiceInvoiceWriteOff = /* #__PURE__ */ (() =&gt; {
8486 return request; 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 /** @description request parameter type for postServiceInvoiceQueryInvoice */ 8617 /** @description request parameter type for postServiceInvoiceQueryInvoice */
8490 export interface PostServiceInvoiceQueryInvoiceOption { 8618 export interface PostServiceInvoiceQueryInvoiceOption {
8491 /** 8619 /**
@@ -8648,7 +8776,7 @@ export interface PostServiceInvoiceQueryInvoiceRecordListResponse { @@ -8648,7 +8776,7 @@ export interface PostServiceInvoiceQueryInvoiceRecordListResponse {
8648 * @description 8776 * @description
8649 * OK 8777 * OK
8650 */ 8778 */
8651 - 200: ServerResult<SimplePageUtils<InvoiceRecordDto>>; 8779 + 200: ServerResult;
8652 /** 8780 /**
8653 * @description 8781 * @description
8654 * Created 8782 * Created
@@ -8699,6 +8827,55 @@ export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() =&gt; { @@ -8699,6 +8827,55 @@ export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() =&gt; {
8699 return request; 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 /** @description request parameter type for postServiceInvoiceReissue */ 8879 /** @description request parameter type for postServiceInvoiceReissue */
8703 export interface PostServiceInvoiceReissueOption { 8880 export interface PostServiceInvoiceReissueOption {
8704 /** 8881 /**