Commit 7e09e9e920fad7e4eba52e44f0bdcbdcc53e4249

Authored by 曾国涛
1 parent 705a59b2

feat: 开票功能开发

src/pages/Invoice/components/InvoiceDetailTable.tsx
... ... @@ -23,42 +23,42 @@ export default ({ recordId, details, updateDetails, readOnly }) => {
23 23 readonly: readOnly,
24 24 dataIndex: 'projectName',
25 25 valueType: 'text',
26   - width: '30%',
  26 + ellipsis: true,
27 27 },
28 28 {
29 29 title: '规格型号',
30 30 readonly: readOnly,
31 31 dataIndex: 'specification',
32 32 valueType: 'text',
33   - width: '30%',
  33 + ellipsis: true,
34 34 },
35 35 {
36 36 title: '单位',
37 37 readonly: readOnly,
38 38 dataIndex: 'unit',
39 39 valueType: 'text',
40   - width: '30%',
  40 + ellipsis: true,
41 41 },
42 42 {
43 43 title: '数量',
44 44 readonly: readOnly,
45 45 dataIndex: 'quantity',
46 46 valueType: 'digit',
47   - width: '30%',
  47 + ellipsis: true,
48 48 },
49 49 {
50 50 title: '单价',
51 51 readonly: readOnly,
52 52 dataIndex: 'price',
53 53 valueType: 'digit',
54   - width: '30%',
  54 + ellipsis: true,
55 55 },
56 56 {
57 57 title: '金额',
58 58 readonly: readOnly,
59 59 dataIndex: 'totalPrice',
60 60 valueType: 'digit',
61   - width: '30%',
  61 + ellipsis: true,
62 62 },
63 63 {
64 64 title: '税率/征收率',
... ... @@ -67,14 +67,14 @@ export default ({ recordId, details, updateDetails, readOnly }) => {
67 67 valueType: () => ({
68 68 type: 'percent',
69 69 }),
70   - width: '30%',
  70 + ellipsis: true,
71 71 },
72 72 {
73 73 title: '税额',
74 74 readonly: readOnly,
75 75 dataIndex: 'taxPrice',
76 76 valueType: 'digit',
77   - width: '30%',
  77 + ellipsis: true,
78 78 },
79 79 {
80 80 title: '操作',
... ...
src/pages/Invoice/components/InvoicingModal.tsx
1 1 import { RESPONSE_CODE } from '@/constants/enum';
2 2 import { postServiceInvoiceInvoicing } from '@/services';
3   -import { PlusOutlined } from '@ant-design/icons';
4 3 import { ModalForm } from '@ant-design/pro-components';
5 4 import { Button, Form, message } from 'antd';
6 5  
7   -export default ({ selectedRowKeys }) => {
  6 +export default ({ selectedRowKeys, reloadRecordTable }) => {
8 7 const [form] = Form.useForm<{ name: string; company: string }>();
9 8 return (
10 9 <ModalForm<{
... ... @@ -13,8 +12,7 @@ export default ({ selectedRowKeys }) =&gt; {
13 12 }>
14 13 title="开票"
15 14 trigger={
16   - <Button type="primary">
17   - <PlusOutlined />
  15 + <Button type="primary" disabled={selectedRowKeys?.length === 0}>
18 16 开票
19 17 </Button>
20 18 }
... ... @@ -34,6 +32,7 @@ export default ({ selectedRowKeys }) =&gt; {
34 32 if (res.result === RESPONSE_CODE.SUCCESS) {
35 33 message.success(res.message);
36 34 }
  35 + reloadRecordTable();
37 36 message.success('提交成功');
38 37 return true;
39 38 }}
... ...
src/pages/Invoice/index.tsx
... ... @@ -89,6 +89,10 @@ const InvoicePage = () =&gt; {
89 89 const reloadBankStatementTable = () => {
90 90 bankActionRef.current?.reload();
91 91 };
  92 + const reloadRecordTable = () => {
  93 + waitDealrecordActionRef.current?.reload();
  94 + processedRecordRef.current?.reload();
  95 + };
92 96  
93 97 const getTableCellText = (target: any) => {
94 98 if (!target) {
... ... @@ -107,6 +111,7 @@ const InvoicePage = () =&gt; {
107 111 dataIndex: 'index',
108 112 valueType: 'indexBorder',
109 113 hideInSearch: true,
  114 + ellipsis: true,
110 115 width: 48,
111 116 },
112 117 {
... ... @@ -115,12 +120,14 @@ const InvoicePage = () =&gt; {
115 120 dataIndex: 'id',
116 121 copyable: true,
117 122 hideInSearch: true,
118   - width: 200,
  123 + ellipsis: true,
  124 + width: 100,
119 125 },
120 126 {
121 127 title: '发票状态',
122 128 valueType: 'Text',
123 129 dataIndex: 'statusText',
  130 + ellipsis: true,
124 131 hideInSearch: true,
125 132 },
126 133 {
... ... @@ -128,12 +135,13 @@ const InvoicePage = () =&gt; {
128 135 dataIndex: 'createTime',
129 136 valueType: 'dateTime',
130 137 hideInSearch: true,
131   - width: 200,
  138 + ellipsis: true,
132 139 },
133 140 {
134 141 title: '销售代表',
135 142 valueType: 'text',
136 143 hideInSearch: true,
  144 + ellipsis: true,
137 145 dataIndex: 'createByName',
138 146 },
139 147 {
... ... @@ -141,42 +149,49 @@ const InvoicePage = () =&gt; {
141 149 valueType: 'text',
142 150 dataIndex: 'partyAName',
143 151 hideInSearch: true,
  152 + ellipsis: true,
144 153 },
145 154 {
146 155 title: '购方税号',
147 156 valueType: 'text',
148 157 hideInSearch: true,
149 158 dataIndex: 'partyATaxid',
  159 + ellipsis: true,
150 160 },
151 161 {
152 162 title: '收款单位',
153 163 valueType: 'text',
154 164 hideInSearch: true,
155 165 dataIndex: 'partyBName',
  166 + ellipsis: true,
156 167 },
157 168 {
158 169 title: '开票金额',
159 170 valueType: 'money',
160 171 dataIndex: 'price',
161 172 hideInSearch: true,
  173 + ellipsis: true,
162 174 },
163 175 {
164 176 title: '开具类型',
165 177 valueType: 'Text',
166 178 dataIndex: 'invoicingTypeText',
167 179 hideInSearch: true,
  180 + ellipsis: true,
168 181 },
169 182 {
170 183 title: '发票类型',
171 184 valueType: 'Text',
172 185 dataIndex: 'typeText',
173 186 hideInSearch: true,
  187 + ellipsis: true,
174 188 },
175 189 {
176 190 title: '是否加急',
177 191 valueType: 'Text',
178 192 dataIndex: 'isUrgentText',
179 193 hideInSearch: true,
  194 + ellipsis: true,
180 195 },
181 196  
182 197 {
... ... @@ -188,20 +203,11 @@ const InvoicePage = () =&gt; {
188 203 {
189 204 title: '收款单位',
190 205 valueType: 'select',
191   - dataIndex: 'partyBNameLike',
  206 + dataIndex: 'partyB',
192 207 filters: true,
193 208 onFilter: true,
194 209 hideInTable: true,
195   - valueEnum: {
196   - yes: {
197   - text: '是',
198   - status: true,
199   - },
200   - no: {
201   - text: '否',
202   - status: false,
203   - },
204   - },
  210 + valueEnum: enumToProTableEnumValue(PAYEE_OPTIONS),
205 211 },
206 212 {
207 213 title: '主订单号',
... ... @@ -278,23 +284,6 @@ const InvoicePage = () =&gt; {
278 284 },
279 285 },
280 286 {
281   - title: '申请开票时间',
282   - dataIndex: 'createTime',
283   - valueType: 'dateRange',
284   - width: 200,
285   - hideInTable: true,
286   - search: {
287   - transform: (value) => {
288   - if (value) {
289   - return {
290   - createTimeGe: value[0],
291   - createTimeLe: value[1],
292   - };
293   - }
294   - },
295   - },
296   - },
297   - {
298 287 title: '操作',
299 288 valueType: 'option',
300 289 key: 'option',
... ... @@ -315,81 +304,89 @@ const InvoicePage = () =&gt; {
315 304 {
316 305 dataIndex: 'index',
317 306 valueType: 'indexBorder',
318   - width: 48,
319 307 },
320 308 {
321 309 title: '记录编号',
322 310 valueType: 'text',
323 311 dataIndex: 'id',
324 312 copyable: true,
325   - width: 200,
  313 + ellipsis: true,
326 314 },
327 315 {
328 316 title: '发票号码',
329 317 valueType: 'text',
330 318 dataIndex: 'invoiceNumber',
331 319 copyable: true,
332   - width: 200,
  320 + ellipsis: true,
333 321 },
334 322 {
335 323 title: '开票日期',
336 324 dataIndex: 'invoicingTime',
337 325 valueType: 'dateTime',
338 326 hideInSearch: true,
339   - width: 200,
  327 + ellipsis: true,
340 328 },
341 329 {
342 330 title: '发票类型',
343 331 valueType: 'Text',
344 332 dataIndex: 'typeText',
345 333 hideInSearch: true,
  334 + ellipsis: true,
346 335 },
347 336 {
348 337 title: '发票状态',
349 338 valueType: 'Text',
350 339 dataIndex: 'statusText',
351 340 hideInSearch: true,
  341 + ellipsis: true,
352 342 },
353 343 {
354 344 title: '购方名称',
355 345 valueType: 'text',
356 346 dataIndex: 'partyAName',
357 347 hideInSearch: true,
  348 + ellipsis: true,
358 349 },
359 350 {
360 351 title: '购方税号',
361 352 valueType: 'text',
362 353 dataIndex: 'partyATaxid',
  354 + ellipsis: true,
363 355 },
364 356 {
365 357 title: '收款单位',
366 358 valueType: 'text',
367 359 dataIndex: 'partyBName',
368 360 hideInSearch: true,
  361 + ellipsis: true,
369 362 },
370 363 {
371 364 title: '联系人',
372 365 valueType: 'text',
373 366 dataIndex: 'contacts',
374 367 hideInSearch: true,
  368 + ellipsis: true,
375 369 },
376 370 {
377 371 title: '申请人',
378 372 valueType: 'text',
379 373 dataIndex: 'createByName',
380 374 hideInSearch: true,
  375 + ellipsis: true,
381 376 },
382 377 {
383 378 title: '开票金额(元)',
384 379 valueType: 'money',
385 380 dataIndex: 'price',
386 381 hideInSearch: true,
  382 + ellipsis: true,
387 383 },
388 384 {
389 385 title: '备注',
390 386 valueType: 'text',
391 387 dataIndex: 'contacts',
392 388 hideInSearch: true,
  389 + ellipsis: true,
393 390 },
394 391  
395 392 {
... ... @@ -445,7 +442,6 @@ const InvoicePage = () =&gt; {
445 442 title: '开票日期',
446 443 dataIndex: 'invoicingTime',
447 444 valueType: 'dateRange',
448   - width: 200,
449 445 hideInTable: true,
450 446 search: {
451 447 transform: (value) => {
... ... @@ -459,6 +455,15 @@ const InvoicePage = () =&gt; {
459 455 },
460 456 },
461 457 {
  458 + title: '收款单位',
  459 + valueType: 'select',
  460 + dataIndex: 'partyB',
  461 + filters: true,
  462 + onFilter: true,
  463 + hideInTable: true,
  464 + valueEnum: enumToProTableEnumValue(PAYEE_OPTIONS),
  465 + },
  466 + {
462 467 title: '操作',
463 468 valueType: 'option',
464 469 key: 'option',
... ... @@ -767,6 +772,7 @@ const InvoicePage = () =&gt; {
767 772 }}
768 773 rowSelection={{
769 774 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  775 + alwaysShowAlert: true,
770 776 }}
771 777 tableAlertOptionRender={({ selectedRowKeys, selectedRows }) => {
772 778 console.log(selectedRows);
... ... @@ -774,6 +780,7 @@ const InvoicePage = () =&gt; {
774 780 return (
775 781 <Space size={16}>
776 782 <InvoicingModal
  783 + reloadRecordTable={reloadRecordTable}
777 784 key="button"
778 785 selectedRowKeys={selectedRowKeys}
779 786 />
... ... @@ -788,6 +795,7 @@ const InvoicePage = () =&gt; {
788 795 'WAITING_FOR_INVOICING',
789 796 'AUDITING',
790 797 'AUDITING_NOT_PASSED',
  798 + 'CANCELED',
791 799 ],
792 800 },
793 801 });
... ...
src/pages/Order/components/InvoicingDrawerForm.tsx
... ... @@ -5,7 +5,6 @@ import {
5 5 postServiceInvoiceApplyInvoice,
6 6 } from '@/services';
7 7 import { enumToSelect } from '@/utils';
8   -import { CloseCircleOutlined } from '@ant-design/icons';
9 8 import {
10 9 DrawerForm,
11 10 ProFormGroup,
... ... @@ -13,16 +12,19 @@ import {
13 12 ProFormMoney,
14 13 ProFormSelect,
15 14 ProFormText,
  15 + ProFormTextArea,
16 16 ProFormUploadDragger,
17 17 } from '@ant-design/pro-components';
18 18 import { Form } from 'antd';
  19 +import { useEffect } from 'react';
19 20 import { PAYEE_OPTIONS } from '../constant';
20 21  
21   -export default ({ dataList, setVisible, onClose }) => {
  22 +export default ({ dataList, mainOrderList, setVisible, onClose }) => {
22 23 // let subOrderIds = dataList?.map((item) => {
23 24 // return item.id;
24 25 // });
25 26 const [form] = Form.useForm();
  27 + useEffect(() => {}, []);
26 28 return (
27 29 <DrawerForm
28 30 open
... ... @@ -57,19 +59,17 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
57 59 >
58 60 <ProFormList
59 61 name="subOrderIdObjs"
  62 + readonly={true}
60 63 label="开票订单"
61 64 initialValue={dataList.map((item) => {
62 65 return {
63 66 value: item.id,
64 67 };
65 68 })}
66   - deleteIconProps={{
67   - Icon: CloseCircleOutlined,
68   - tooltipText: '不需要这行了',
69   - }}
  69 + deleteIconProps={false}
70 70 >
71 71 <ProFormGroup key="group">
72   - <ProFormText name="value" label="" />
  72 + <ProFormText readonly={true} name="value" label="" />
73 73 </ProFormGroup>
74 74 </ProFormList>
75 75 <ProFormText
... ... @@ -81,6 +81,9 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
81 81 width="md"
82 82 name="partyAName"
83 83 label="购方名称"
  84 + initialValue={
  85 + mainOrderList?.length === 1 ? mainOrderList[0].institution : ''
  86 + }
84 87 placeholder="请输入名称"
85 88 />
86 89 <ProFormText
... ... @@ -95,22 +98,12 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
95 98 placeholder="请输入名称"
96 99 />
97 100 <ProFormText
98   - rules={[
99   - {
100   - required: true,
101   - },
102   - ]}
103 101 width="md"
104 102 name="partyAOpenBank"
105 103 label="开户银行"
106 104 placeholder="请输入名称"
107 105 />
108 106 <ProFormText
109   - rules={[
110   - {
111   - required: true,
112   - },
113   - ]}
114 107 width="md"
115 108 name="partyABankAccount"
116 109 label="开户行账号"
... ... @@ -120,7 +113,9 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
120 113 label="开票金额"
121 114 name="price"
122 115 locale="en-GB"
123   - initialValue={22.22}
  116 + initialValue={dataList.reduce((accumulator, currentValue) => {
  117 + return accumulator + currentValue.subOrderPayment;
  118 + }, 0)}
124 119 />
125 120 <ProFormSelect
126 121 name="invoicingType"
... ... @@ -162,6 +157,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
162 157 rules={[{ required: true, message: '请选择是否加急!' }]}
163 158 />
164 159 <ProFormUploadDragger name="drag-pic" label="拖拽上传" />
  160 + <ProFormTextArea
  161 + name="applyInvoicingNotes"
  162 + label="备注"
  163 + placeholder="请输入名称"
  164 + />
165 165 </DrawerForm>
166 166 );
167 167 };
... ...
src/pages/Order/components/ReissueModal.tsx
... ... @@ -13,7 +13,7 @@ import {
13 13 import { Form } from 'antd';
14 14 import { useEffect, useState } from 'react';
15 15  
16   -export default ({ setVisible, mainOrder, onClose }) => {
  16 +export default ({ setVisible, subOrders, onClose }) => {
17 17 const [invoiceSelectList, setInvoiceSelectList] = useState([]);
18 18 const [mainOrders, setMainOrders] = useState('');
19 19 const [submitting, setSubmitting] = useState(false);
... ... @@ -21,10 +21,9 @@ export default ({ setVisible, mainOrder, onClose }) =&gt; {
21 21 const [form] = Form.useForm<{ invoiceId: string; notes: string }>();
22 22  
23 23 let getInvoiceSelectList = async () => {
24   - console.log(mainOrder);
25 24 const res = await postServiceInvoiceFindInvoice({
26 25 data: {
27   - mainOrderId: mainOrder.id,
  26 + subOrderIdIn: subOrders.map((item) => item.id),
28 27 },
29 28 });
30 29 setInvoiceSelectList([]);
... ...
src/pages/Order/constant.ts
1   -import { postServiceOrderQueryCustomerInformation } from '@/services';
2   -import { enumToProTableEnumValue } from '@/utils';
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + postServiceConstAfterInvoicingStatus,
  4 + postServiceOrderQueryCustomerInformation,
  5 +} from '@/services';
  6 +import { enumToProTableEnumValue, enumToSelect } from '@/utils';
3 7 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order';
4 8  
5 9 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3;
... ... @@ -116,11 +120,10 @@ export const CHECK_TYPE = {
116 120 */
117 121 export const getNeedInvoicing = (subOrder: any) => {
118 122 if (subOrder.invoicingTime !== null && subOrder.invoicingTime !== undefined) {
119   - if (subOrder.afterInvoicingStatus === 'REISSUE') {
120   - return '重新开票';
121   - } else {
122   - return '已开票';
123   - }
  123 + return '已开票';
  124 + }
  125 + if (subOrder.afterInvoicingStatus === 'REISSUE') {
  126 + return '重新开票';
124 127 }
125 128 if (subOrder.invoicingStatus === 'UN_INVOICE') {
126 129 return '不需开票';
... ... @@ -222,12 +225,21 @@ export const FINANCIAL_STATUS_OPTIONS = {
222 225 UN_INVOICING: '取消开票',
223 226 };
224 227  
225   -export const AFTER_INVOICING_STATUS = {
  228 +export const getAfterInvoicingStatus = async () => {
  229 + let res = await postServiceConstAfterInvoicingStatus();
  230 + if (res.result === RESPONSE_CODE.SUCCESS) {
  231 + return res.data;
  232 + }
  233 + return {};
  234 +};
  235 +export let AFTER_INVOICING_STATUS = {
226 236 NOT_YET_INVOICED: '尚未开票',
227 237 APPLY_FOR_INVOICING: '申请开票',
228 238 URGENT_INVOICE_AUDITING: '加急待审核',
229 239 PARTIAL_INVOICING: '部分开票',
230 240 COMPLETE_INVOICING: '完全开票',
  241 + INVOICING: '开票中',
  242 + REISSUE: '重新开票',
231 243 };
232 244  
233 245 export const TAGS_COLOR = new Map<string, string>([
... ... @@ -272,6 +284,7 @@ export const TAGS_COLOR = new Map&lt;string, string&gt;([
272 284 ['AUDIT_PASS', 'success'],
273 285 ['AUDIT_NOTPASS', 'error'],
274 286 ['WAIT_CONFIRM_DELIVER_AFTER_INVOICE', 'processing'],
  287 + ['INVOICING', 'processing'],
275 288 ]);
276 289 export const SALES_CODE_OPTIONS = [
277 290 { label: 'D-Linda', value: 'D-Linda' },
... ... @@ -606,7 +619,10 @@ export const MAIN_ORDER_COLUMNS = [
606 619 dataIndex: 'afterInvoicingStatus',
607 620 valueType: 'select',
608 621 hideInTable: true,
609   - valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS),
  622 + request: async () => {
  623 + let status = await getAfterInvoicingStatus();
  624 + return enumToSelect(status);
  625 + },
610 626 },
611 627 {
612 628 title: '发票号码',
... ...
src/pages/Order/index.tsx
... ... @@ -6,6 +6,7 @@ import {
6 6 postKingdeeRepSalBillOutbound,
7 7 postKingdeeRepSalOrderSave,
8 8 postServiceConstCanApplyAfterInvoicingStatus,
  9 + postServiceInvoiceCancelApply,
9 10 postServiceOrderCancelSend,
10 11 postServiceOrderNoNeedSend,
11 12 postServiceOrderOrderCancel,
... ... @@ -96,7 +97,6 @@ import ProductionTimeModal from &#39;./components/ProductionTimeModal&#39;;
96 97 import ShippingWarehouseChangeModal from './components/ShippingWarehouseChangeModal';
97 98 import UploadPayBillModal from './components/UploadPayBillModal';
98 99 import {
99   - AFTER_INVOICING_STATUS,
100 100 CHECK_TYPE,
101 101 LOGISTICS_STATUS_OPTIONS,
102 102 MAIN_ORDER_COLUMNS,
... ... @@ -111,6 +111,7 @@ import {
111 111 PRODUCT_BELONG_DEPARTMENT_OPTIONS,
112 112 SHIPPING_WAREHOUSE_OPTIONS,
113 113 TAGS_COLOR,
  114 + getAfterInvoicingStatus,
114 115 getInvoicingType,
115 116 getNeedInvoicing,
116 117 } from './constant';
... ... @@ -190,6 +191,7 @@ const OrderPage = () =&gt; {
190 191 const mainTableFormRef = useRef<ProFormInstance>();
191 192 let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储
192 193 const [messageApi, contextHolder] = message.useMessage();
  194 + const [afterInvoicingStatus, setAfterInvoicingStatus] = useState({});
193 195 const [
194 196 shippingWarehouseChangeModalVisible,
195 197 setShippingWarehouseChangeModalVisible,
... ... @@ -220,6 +222,14 @@ const OrderPage = () =&gt; {
220 222 };
221 223  
222 224 useEffect(() => {
  225 + let initAfterInvoicingStatus = async () => {
  226 + const afteInvoicingStatus = await getAfterInvoicingStatus();
  227 + setAfterInvoicingStatus(afteInvoicingStatus);
  228 + };
  229 + initAfterInvoicingStatus();
  230 + }, []);
  231 +
  232 + useEffect(() => {
223 233 // 使用URLSearchParams来解析查询参数
224 234 const params = new URLSearchParams(location.search);
225 235 const id = params.get('id');
... ... @@ -1051,7 +1061,7 @@ const OrderPage = () =&gt; {
1051 1061 ? optRecord.invoicingUrgentCause
1052 1062 : enumValueToLabel(
1053 1063 optRecord.afterInvoicingStatus,
1054   - AFTER_INVOICING_STATUS,
  1064 + afterInvoicingStatus,
1055 1065 )
1056 1066 }
1057 1067 >
... ... @@ -1060,7 +1070,7 @@ const OrderPage = () =&gt; {
1060 1070 >
1061 1071 {enumValueToLabel(
1062 1072 optRecord.afterInvoicingStatus,
1063   - AFTER_INVOICING_STATUS,
  1073 + afterInvoicingStatus,
1064 1074 )}
1065 1075 </Tag>
1066 1076 </Tooltip>
... ... @@ -1274,6 +1284,7 @@ const OrderPage = () =&gt; {
1274 1284 type="link"
1275 1285 onClick={() => {
1276 1286 setCurrentMainId(record.id);
  1287 + setCurretnOptSubId(optRecord.mainOrderId);
1277 1288 setReissueVisible(true);
1278 1289 console.log(reissueVisible);
1279 1290 }}
... ... @@ -1455,6 +1466,27 @@ const OrderPage = () =&gt; {
1455 1466 ) : (
1456 1467 ''
1457 1468 )}
  1469 + {optRecord.subPath?.includes('saleCancelInvoicing') ? (
  1470 + <ButtonConfirm
  1471 + className="p-0"
  1472 + title="确认取消申请开票?"
  1473 + text="取消申请(新)"
  1474 + onConfirm={async () => {
  1475 + let res = await postServiceInvoiceCancelApply({
  1476 + data: {
  1477 + subOrderIds: [optRecord.id],
  1478 + },
  1479 + });
  1480 +
  1481 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  1482 + message.success(res.message);
  1483 + refreshTable();
  1484 + }
  1485 + }}
  1486 + />
  1487 + ) : (
  1488 + ''
  1489 + )}
1458 1490 {optRecord.subPath?.includes('noNeedInvoicingEdit') ? (
1459 1491 <Button
1460 1492 className="p-0"
... ... @@ -3093,6 +3125,43 @@ const OrderPage = () =&gt; {
3093 3125 ''
3094 3126 )}
3095 3127  
  3128 + {/*{record.mainPath?.includes('applyInvoicing') ? (
  3129 + <Button
  3130 + type="link"
  3131 + className="p-0"
  3132 + onClick={() => {
  3133 + let selectedSubOrders = subOrderSelectedMap.get(
  3134 + record.id,
  3135 + );
  3136 + if (selectedSubOrders === undefined) {
  3137 + selectedSubOrders = record.subOrderInformationLists;
  3138 + }
  3139 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3140 + if (
  3141 + selectedSubOrders[i].invoicingStatus ===
  3142 + 'UN_INVOICE' ||
  3143 + selectedSubOrders[i].afterInvoicingStatus ===
  3144 + 'APPLY_FOR_INVOICING'
  3145 + ) {
  3146 + message.error(
  3147 + '请选择需要开票且未申请开票的子订单进行申请',
  3148 + );
  3149 + return;
  3150 + }
  3151 + }
  3152 +
  3153 + createOptObject(null, record.id);
  3154 + setApplyForInvoicingVisible(true);
  3155 + setIsEdit(false);
  3156 + setIsMainOrder(false);
  3157 + }}
  3158 + >
  3159 + 申请开票
  3160 + </Button>
  3161 + ) : (
  3162 + ''
  3163 + )}*/}
  3164 +
3096 3165 {record.mainPath?.includes('updateOrder') ? (
3097 3166 <Button
3098 3167 className="p-0"
... ... @@ -4609,7 +4678,11 @@ const OrderPage = () =&gt; {
4609 4678 }
4610 4679 }}
4611 4680 mainOrder={buildMainOrder()}
4612   - subOrders={buildSubOrders()}
  4681 + subOrders={
  4682 + isMainOrder
  4683 + ? [...subOrderSelectedMap.values()].flat()
  4684 + : buildSubOrders()
  4685 + }
4613 4686 onClose={() => {
4614 4687 setReissueVisible(false);
4615 4688 clearOptObject();
... ... @@ -4681,6 +4754,7 @@ const OrderPage = () =&gt; {
4681 4754 clearOptObject();
4682 4755 }
4683 4756 }}
  4757 + mainOrderList={[...mainOrderSelectedMap.values()].flat()}
4684 4758 onClose={() => {
4685 4759 setInvoicingDrawerFormVisible(false);
4686 4760 setIsMainOrder(true);
... ...
src/services/definition.ts
... ... @@ -528,6 +528,220 @@ export interface ApiQueryOrderStatusCountsRequest {
528 528 uid?: number;
529 529 }
530 530  
  531 +export interface ApplyInvoiceDto {
  532 + /**
  533 + * @description
  534 + * 备注
  535 + */
  536 + applyInvoicingNotes?: string;
  537 + /**
  538 + * @description
  539 + * 开票备注
  540 + */
  541 + comment?: string;
  542 + /**
  543 + * @description
  544 + * 联系人
  545 + */
  546 + contacts?: string;
  547 + /**
  548 + * @description
  549 + * 开票内容
  550 + */
  551 + content?: string;
  552 + createByName?: string;
  553 + /** @format date-time */
  554 + createTime?: string;
  555 + /**
  556 + * @description
  557 + * id
  558 + * @format int64
  559 + */
  560 + id?: number;
  561 + /**
  562 + * @description
  563 + * 发票地址
  564 + */
  565 + invoiceAddress?: string;
  566 + /**
  567 + * @description
  568 + * 发票明细
  569 + */
  570 + invoiceDetails?: Array<InvoiceDetail>;
  571 + /**
  572 + * @description
  573 + * 关联发票id
  574 + */
  575 + invoiceId?: string;
  576 + /**
  577 + * @description
  578 + * 发票号码
  579 + */
  580 + invoiceNumber?: string;
  581 + /**
  582 + * @description
  583 + * 开票人
  584 + */
  585 + invoicingPerson?: string;
  586 + /**
  587 + * @description
  588 + * 开票时间
  589 + * @format date-time
  590 + */
  591 + invoicingTime?: string;
  592 + /**
  593 + * @description
  594 + * 开具类型
  595 + */
  596 + invoicingType?: string;
  597 + /**
  598 + * @description
  599 + * 开具类型
  600 + */
  601 + invoicingTypeText?: string;
  602 + /** @format date */
  603 + invoicingdate?: string;
  604 + /**
  605 + * @description
  606 + * 是否加急
  607 + */
  608 + isUrgent?: boolean;
  609 + /**
  610 + * @description
  611 + * 是否加急文本
  612 + */
  613 + isUrgentText?: string;
  614 + logicDelete?: boolean;
  615 + /**
  616 + * @description
  617 + * 买方注册地址
  618 + */
  619 + partyAAddress?: string;
  620 + /**
  621 + * @description
  622 + * 买方开户行账号
  623 + */
  624 + partyABankAccount?: string;
  625 + /**
  626 + * @description
  627 + * 买方名称
  628 + */
  629 + partyAName?: string;
  630 + /**
  631 + * @description
  632 + * 买方开户行
  633 + */
  634 + partyAOpenBank?: string;
  635 + /**
  636 + * @description
  637 + * 买方电话号码
  638 + */
  639 + partyAPhoneNumber?: string;
  640 + /**
  641 + * @description
  642 + * 买方税号
  643 + */
  644 + partyATaxid?: string;
  645 + /**
  646 + * @description
  647 + * 抬头类型
  648 + */
  649 + partyAType?: string;
  650 + partyB?: string;
  651 + /**
  652 + * @description
  653 + * 卖方注册地址
  654 + */
  655 + partyBAddress?: string;
  656 + /**
  657 + * @description
  658 + * 卖方开户行账号
  659 + */
  660 + partyBBankAccount?: string;
  661 + /**
  662 + * @description
  663 + * 卖方名称
  664 + */
  665 + partyBName?: string;
  666 + /**
  667 + * @description
  668 + * 卖方开户行
  669 + */
  670 + partyBOpenBank?: string;
  671 + /**
  672 + * @description
  673 + * 卖方电话号码
  674 + */
  675 + partyBPhoneNumber?: string;
  676 + /**
  677 + * @description
  678 + * 卖方税号
  679 + */
  680 + partyBTaxid?: string;
  681 + /**
  682 + * @description
  683 + * 发票金额
  684 + * @format double
  685 + */
  686 + price?: number;
  687 + /**
  688 + * @description
  689 + * 接收邮箱地址
  690 + */
  691 + receiveEmail?: string;
  692 + /**
  693 + * @description
  694 + * 订单来源
  695 + */
  696 + salesCodes?: Array<string>;
  697 + /**
  698 + * @description
  699 + * 订单来源
  700 + */
  701 + salesCodesText?: string;
  702 + /**
  703 + * @description
  704 + * 开票状态
  705 + */
  706 + status?: string;
  707 + /**
  708 + * @description
  709 + * 开票状态
  710 + */
  711 + statusText?: string;
  712 + /**
  713 + * @description
  714 + * 子订单id
  715 + */
  716 + subOrderIds?: Array<number>;
  717 + /**
  718 + * @description
  719 + * 关联订单
  720 + */
  721 + subOrders?: Array<SubOrder>;
  722 + /** @format double */
  723 + totalPrice?: number;
  724 + totalPriceText?: string;
  725 + /**
  726 + * @description
  727 + * 开票类型
  728 + */
  729 + type?: string;
  730 + /**
  731 + * @description
  732 + * 开票类型文本
  733 + */
  734 + typeText?: string;
  735 + /**
  736 + * @description
  737 + * 用户id
  738 + */
  739 + uid?: string;
  740 + updateByName?: string;
  741 + /** @format date-time */
  742 + updateTime?: string;
  743 +}
  744 +
531 745 export interface AuditDto {
532 746 /**
533 747 * @description
... ... @@ -1074,6 +1288,7 @@ export interface InvoiceRecordDto {
1074 1288 * 抬头类型
1075 1289 */
1076 1290 partyAType?: string;
  1291 + partyB?: string;
1077 1292 /**
1078 1293 * @description
1079 1294 * 卖方注册地址
... ... @@ -1935,6 +2150,7 @@ export interface QueryInvoiceRecordDto {
1935 2150 * 买方税号
1936 2151 */
1937 2152 partyATaxidLike?: string;
  2153 + partyB?: string;
1938 2154 /**
1939 2155 * @description
1940 2156 * 卖方名称
... ... @@ -1959,6 +2175,11 @@ export interface QueryInvoiceRecordDto {
1959 2175 * @description
1960 2176 * 状态非空
1961 2177 */
  2178 + statusIn?: Array<string>;
  2179 + /**
  2180 + * @description
  2181 + * 状态非空
  2182 + */
1962 2183 statusIsNotNull?: boolean;
1963 2184 /**
1964 2185 * @description
... ... @@ -2039,6 +2260,201 @@ export interface ReissueInvoiceDto {
2039 2260 notes?: string;
2040 2261 }
2041 2262  
  2263 +export interface ResearchGroupAccountAddRequest {
  2264 + /**
  2265 + * @description
  2266 + * 关联的账号id
  2267 + * @format int64
  2268 + */
  2269 + accountId?: number;
  2270 + /**
  2271 + * @description
  2272 + * 关联的账号名称
  2273 + */
  2274 + accountName?: string;
  2275 + /**
  2276 + * @description
  2277 + * 关联的账号手机号
  2278 + */
  2279 + accountPhone?: string;
  2280 + /**
  2281 + * @description
  2282 + * 课题组id
  2283 + * @format int64
  2284 + */
  2285 + groupId?: number;
  2286 +}
  2287 +
  2288 +export interface ResearchGroupAccountEditRequest {
  2289 + /**
  2290 + * @description
  2291 + * 关联的账号id
  2292 + * @format int64
  2293 + */
  2294 + accountId?: number;
  2295 + /**
  2296 + * @description
  2297 + * 关联的账号名称
  2298 + */
  2299 + accountName?: string;
  2300 + /**
  2301 + * @description
  2302 + * 关联的账号手机号
  2303 + */
  2304 + accountPhone?: string;
  2305 + /**
  2306 + * @description
  2307 + * 课题组id
  2308 + * @format int64
  2309 + */
  2310 + groupId?: number;
  2311 + /**
  2312 + * @description
  2313 + * 主键id
  2314 + * @format int64
  2315 + */
  2316 + id?: number;
  2317 +}
  2318 +
  2319 +export interface ResearchGroupAddRequest {
  2320 + accounts?: Array<ResearchGroupAccountAddRequest>;
  2321 + /**
  2322 + * @description
  2323 + * 课题组名称
  2324 + */
  2325 + group?: string;
  2326 + /**
  2327 + * @description
  2328 + * 课题组负责人
  2329 + */
  2330 + leader?: string;
  2331 + members?: Array<ResearchGroupMemberAddRequest>;
  2332 +}
  2333 +
  2334 +export interface ResearchGroupDeleteRequest {
  2335 + /**
  2336 + * @description
  2337 + * 主键id
  2338 + */
  2339 + ids?: Array<number>;
  2340 +}
  2341 +
  2342 +export interface ResearchGroupDetailRequest {
  2343 + /**
  2344 + * @description
  2345 + * 主键id
  2346 + * @format int64
  2347 + */
  2348 + id?: number;
  2349 +}
  2350 +
  2351 +export interface ResearchGroupEditRequest {
  2352 + /**
  2353 + * @description
  2354 + * 课题组预存账号
  2355 + */
  2356 + accounts?: Array<ResearchGroupAccountEditRequest>;
  2357 + /**
  2358 + * @description
  2359 + * 课题组名称
  2360 + */
  2361 + group?: string;
  2362 + /**
  2363 + * @description
  2364 + * 主键id
  2365 + * @format int64
  2366 + */
  2367 + id?: number;
  2368 + /**
  2369 + * @description
  2370 + * 课题组负责人
  2371 + */
  2372 + leader?: string;
  2373 + /**
  2374 + * @description
  2375 + * 课题组成员集合
  2376 + */
  2377 + members?: Array<ResearchGroupMemberEditRequest>;
  2378 +}
  2379 +
  2380 +export interface ResearchGroupListRequest {
  2381 + /**
  2382 + * @description
  2383 + * 预存账号手机号
  2384 + */
  2385 + accountPhone?: string;
  2386 + /** @format int32 */
  2387 + current?: number;
  2388 + /**
  2389 + * @description
  2390 + * 课题组名称
  2391 + */
  2392 + group?: string;
  2393 + /**
  2394 + * @description
  2395 + * 课题组负责人
  2396 + */
  2397 + leader?: string;
  2398 + /**
  2399 + * @description
  2400 + * 课题组成员名称
  2401 + */
  2402 + memberName?: string;
  2403 + /**
  2404 + * @description
  2405 + * 课题组成员手机号
  2406 + */
  2407 + memberPhone?: string;
  2408 + /** @format int32 */
  2409 + pageSize?: number;
  2410 + /** @format int32 */
  2411 + total?: number;
  2412 +}
  2413 +
  2414 +export interface ResearchGroupMemberAddRequest {
  2415 + /**
  2416 + * @description
  2417 + * 课题组ID
  2418 + * @format int64
  2419 + */
  2420 + groupId?: number;
  2421 + /**
  2422 + * @description
  2423 + * 成员名称
  2424 + */
  2425 + memberName?: string;
  2426 + /**
  2427 + * @description
  2428 + * 成员手机号
  2429 + */
  2430 + memberPhone?: string;
  2431 +}
  2432 +
  2433 +export interface ResearchGroupMemberEditRequest {
  2434 + /**
  2435 + * @description
  2436 + * 课题组ID
  2437 + * @format int64
  2438 + */
  2439 + groupId?: number;
  2440 + /**
  2441 + * @description
  2442 + * 主键id
  2443 + * @format int64
  2444 + */
  2445 + id?: number;
  2446 + /**
  2447 + * @description
  2448 + * 成员名称
  2449 + */
  2450 + memberName?: string;
  2451 + /**
  2452 + * @description
  2453 + * 成员手机号
  2454 + */
  2455 + memberPhone?: string;
  2456 +}
  2457 +
2042 2458 export interface ResetPwdVO {
2043 2459 /** @format int64 */
2044 2460 userId?: number;
... ... @@ -2147,6 +2563,7 @@ export interface SubOrder {
2147 2563 postAuditStatus?: string;
2148 2564 /** @format date-time */
2149 2565 postAuditStatusUpdateTime?: string;
  2566 + preAfterInvoicingStatus?: string;
2150 2567 procureConvertNotes?: string;
2151 2568 procureNotes?: string;
2152 2569 /** @format date-time */
... ... @@ -2425,6 +2842,11 @@ export interface UserListRequest {
2425 2842 uid?: number;
2426 2843 /**
2427 2844 * @description
  2845 + * ids
  2846 + */
  2847 + uids?: Array<number>;
  2848 + /**
  2849 + * @description
2428 2850 * 用户名
2429 2851 */
2430 2852 username?: string;
... ... @@ -2814,6 +3236,38 @@ export interface StoreOrderInvoiceRequest {
2814 3236 updateTime?: string;
2815 3237 }
2816 3238  
  3239 +/**
  3240 + * @description
  3241 + * 保存用户地址请求对象
  3242 + */
  3243 +export interface UserAddressSaveRequest {
  3244 + /**
  3245 + * @description
  3246 + * 联系电话
  3247 + */
  3248 + customerContactNumber: string;
  3249 + /**
  3250 + * @description
  3251 + * 客户姓名
  3252 + */
  3253 + customerName: string;
  3254 + /**
  3255 + * @description
  3256 + * 收货地址
  3257 + */
  3258 + customerShippingAddress?: string;
  3259 + /**
  3260 + * @description
  3261 + * 客户单位
  3262 + */
  3263 + institution?: string;
  3264 + /**
  3265 + * @description
  3266 + * 课题组老师
  3267 + */
  3268 + institutionContactName?: string;
  3269 +}
  3270 +
2817 3271 export interface UploadPaymentReceiptDTO {
2818 3272 /**
2819 3273 * @description
... ...
src/services/request.ts
... ... @@ -29,6 +29,7 @@ import type {
29 29 ApiOrderEvaluatedRequest,
30 30 ApiQueryOrderDetailRequest,
31 31 ApiQueryOrderStatusCountsRequest,
  32 + ApplyInvoiceDto,
32 33 AuditDto,
33 34 AuditVO,
34 35 CancelInvoiceAndBankStatementDto,
... ... @@ -54,7 +55,6 @@ import type {
54 55 MaterialUnitListRes,
55 56 MeasureUnitListRes,
56 57 MessageQueryDTO,
57   - ModelAndView,
58 58 OrderAddVO,
59 59 OrderAuditLogQueryVO,
60 60 OrderBaseInfoQueryVO,
... ... @@ -77,6 +77,11 @@ import type {
77 77 QueryMainOrderDto,
78 78 QueryReportFormsDto,
79 79 ReissueInvoiceDto,
  80 + ResearchGroupAddRequest,
  81 + ResearchGroupDeleteRequest,
  82 + ResearchGroupDetailRequest,
  83 + ResearchGroupEditRequest,
  84 + ResearchGroupListRequest,
80 85 ResetPwdVO,
81 86 SalOrderSaveDto,
82 87 SalesRechargePrepaymentAuditRequest,
... ... @@ -98,6 +103,7 @@ import type {
98 103 UpdatePwdVO,
99 104 UploadPaymentReceiptDTO,
100 105 UserAddressListRequest,
  106 + UserAddressSaveRequest,
101 107 UserCenterInfoRequest,
102 108 UserDetailRequest,
103 109 UserListRequest,
... ... @@ -1463,6 +1469,78 @@ export const postCanrdApiUserDetail = /* #__PURE__ */ (() =&gt; {
1463 1469 return request;
1464 1470 })();
1465 1471  
  1472 +/** @description request parameter type for postCanrdApiUserInnerOrderSystemAddressSave */
  1473 +export interface PostCanrdApiUserInnerOrderSystemAddressSaveOption {
  1474 + /**
  1475 + * @description
  1476 + * request
  1477 + */
  1478 + body: {
  1479 + /**
  1480 + @description
  1481 + request */
  1482 + request: UserAddressSaveRequest;
  1483 + };
  1484 +}
  1485 +
  1486 +/** @description response type for postCanrdApiUserInnerOrderSystemAddressSave */
  1487 +export interface PostCanrdApiUserInnerOrderSystemAddressSaveResponse {
  1488 + /**
  1489 + * @description
  1490 + * OK
  1491 + */
  1492 + 200: ServerResult;
  1493 + /**
  1494 + * @description
  1495 + * Created
  1496 + */
  1497 + 201: any;
  1498 + /**
  1499 + * @description
  1500 + * Unauthorized
  1501 + */
  1502 + 401: any;
  1503 + /**
  1504 + * @description
  1505 + * Forbidden
  1506 + */
  1507 + 403: any;
  1508 + /**
  1509 + * @description
  1510 + * Not Found
  1511 + */
  1512 + 404: any;
  1513 +}
  1514 +
  1515 +export type PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess =
  1516 + PostCanrdApiUserInnerOrderSystemAddressSaveResponse[200];
  1517 +/**
  1518 + * @description
  1519 + * 查询地址信息
  1520 + * @tags canrd-mobile-api-controller
  1521 + * @produces *
  1522 + * @consumes application/json
  1523 + */
  1524 +export const postCanrdApiUserInnerOrderSystemAddressSave =
  1525 + /* #__PURE__ */ (() => {
  1526 + const method = 'post';
  1527 + const url = '/canrd/api/user/innerOrderSystem/address/save';
  1528 + function request(
  1529 + option: PostCanrdApiUserInnerOrderSystemAddressSaveOption,
  1530 + ): Promise<PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess> {
  1531 + return requester(request.url, {
  1532 + method: request.method,
  1533 + ...option,
  1534 + }) as unknown as Promise<PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess>;
  1535 + }
  1536 +
  1537 + /** http method */
  1538 + request.method = method;
  1539 + /** request url */
  1540 + request.url = url;
  1541 + return request;
  1542 + })();
  1543 +
1466 1544 /** @description request parameter type for postCanrdApiUserList */
1467 1545 export interface PostCanrdApiUserListOption {
1468 1546 /**
... ... @@ -1540,7 +1618,9 @@ export interface GetErrorResponse {
1540 1618 * @description
1541 1619 * OK
1542 1620 */
1543   - 200: ModelAndView;
  1621 + 200: {
  1622 + [propertyName: string]: any;
  1623 + };
1544 1624 /**
1545 1625 * @description
1546 1626 * Unauthorized
... ... @@ -1561,9 +1641,9 @@ export interface GetErrorResponse {
1561 1641 export type GetErrorResponseSuccess = GetErrorResponse[200];
1562 1642 /**
1563 1643 * @description
1564   - * errorHtml
  1644 + * error
1565 1645 * @tags basic-error-controller
1566   - * @produces text/html
  1646 + * @produces *
1567 1647 */
1568 1648 export const getError = /* #__PURE__ */ (() => {
1569 1649 const method = 'get';
... ... @@ -1587,7 +1667,9 @@ export interface PutErrorResponse {
1587 1667 * @description
1588 1668 * OK
1589 1669 */
1590   - 200: ModelAndView;
  1670 + 200: {
  1671 + [propertyName: string]: any;
  1672 + };
1591 1673 /**
1592 1674 * @description
1593 1675 * Created
... ... @@ -1613,9 +1695,9 @@ export interface PutErrorResponse {
1613 1695 export type PutErrorResponseSuccess = PutErrorResponse[200];
1614 1696 /**
1615 1697 * @description
1616   - * errorHtml
  1698 + * error
1617 1699 * @tags basic-error-controller
1618   - * @produces text/html
  1700 + * @produces *
1619 1701 * @consumes application/json
1620 1702 */
1621 1703 export const putError = /* #__PURE__ */ (() => {
... ... @@ -1640,7 +1722,9 @@ export interface PostErrorResponse {
1640 1722 * @description
1641 1723 * OK
1642 1724 */
1643   - 200: ModelAndView;
  1725 + 200: {
  1726 + [propertyName: string]: any;
  1727 + };
1644 1728 /**
1645 1729 * @description
1646 1730 * Created
... ... @@ -1666,9 +1750,9 @@ export interface PostErrorResponse {
1666 1750 export type PostErrorResponseSuccess = PostErrorResponse[200];
1667 1751 /**
1668 1752 * @description
1669   - * errorHtml
  1753 + * error
1670 1754 * @tags basic-error-controller
1671   - * @produces text/html
  1755 + * @produces *
1672 1756 * @consumes application/json
1673 1757 */
1674 1758 export const postError = /* #__PURE__ */ (() => {
... ... @@ -1693,7 +1777,9 @@ export interface DeleteErrorResponse {
1693 1777 * @description
1694 1778 * OK
1695 1779 */
1696   - 200: ModelAndView;
  1780 + 200: {
  1781 + [propertyName: string]: any;
  1782 + };
1697 1783 /**
1698 1784 * @description
1699 1785 * No Content
... ... @@ -1714,9 +1800,9 @@ export interface DeleteErrorResponse {
1714 1800 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
1715 1801 /**
1716 1802 * @description
1717   - * errorHtml
  1803 + * error
1718 1804 * @tags basic-error-controller
1719   - * @produces text/html
  1805 + * @produces *
1720 1806 */
1721 1807 export const deleteError = /* #__PURE__ */ (() => {
1722 1808 const method = 'delete';
... ... @@ -1740,7 +1826,9 @@ export interface OptionsErrorResponse {
1740 1826 * @description
1741 1827 * OK
1742 1828 */
1743   - 200: ModelAndView;
  1829 + 200: {
  1830 + [propertyName: string]: any;
  1831 + };
1744 1832 /**
1745 1833 * @description
1746 1834 * No Content
... ... @@ -1761,9 +1849,9 @@ export interface OptionsErrorResponse {
1761 1849 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
1762 1850 /**
1763 1851 * @description
1764   - * errorHtml
  1852 + * error
1765 1853 * @tags basic-error-controller
1766   - * @produces text/html
  1854 + * @produces *
1767 1855 * @consumes application/json
1768 1856 */
1769 1857 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -1788,7 +1876,9 @@ export interface HeadErrorResponse {
1788 1876 * @description
1789 1877 * OK
1790 1878 */
1791   - 200: ModelAndView;
  1879 + 200: {
  1880 + [propertyName: string]: any;
  1881 + };
1792 1882 /**
1793 1883 * @description
1794 1884 * No Content
... ... @@ -1809,9 +1899,9 @@ export interface HeadErrorResponse {
1809 1899 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
1810 1900 /**
1811 1901 * @description
1812   - * errorHtml
  1902 + * error
1813 1903 * @tags basic-error-controller
1814   - * @produces text/html
  1904 + * @produces *
1815 1905 * @consumes application/json
1816 1906 */
1817 1907 export const headError = /* #__PURE__ */ (() => {
... ... @@ -1836,7 +1926,9 @@ export interface PatchErrorResponse {
1836 1926 * @description
1837 1927 * OK
1838 1928 */
1839   - 200: ModelAndView;
  1929 + 200: {
  1930 + [propertyName: string]: any;
  1931 + };
1840 1932 /**
1841 1933 * @description
1842 1934 * No Content
... ... @@ -1857,9 +1949,9 @@ export interface PatchErrorResponse {
1857 1949 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
1858 1950 /**
1859 1951 * @description
1860   - * errorHtml
  1952 + * error
1861 1953 * @tags basic-error-controller
1862   - * @produces text/html
  1954 + * @produces *
1863 1955 * @consumes application/json
1864 1956 */
1865 1957 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -7611,22 +7703,22 @@ export const postPrepaidUpdate = /* #__PURE__ */ (() =&gt; {
7611 7703 return request;
7612 7704 })();
7613 7705  
7614   -/** @description request parameter type for postServiceBankStatementDeleteBankStatement */
7615   -export interface PostServiceBankStatementDeleteBankStatementOption {
  7706 +/** @description request parameter type for postResearchGroupsAdd */
  7707 +export interface PostResearchGroupsAddOption {
7616 7708 /**
7617 7709 * @description
7618   - * dto
  7710 + * request
7619 7711 */
7620 7712 body: {
7621 7713 /**
7622 7714 @description
7623   - dto */
7624   - dto: Dto;
  7715 + request */
  7716 + request: ResearchGroupAddRequest;
7625 7717 };
7626 7718 }
7627 7719  
7628   -/** @description response type for postServiceBankStatementDeleteBankStatement */
7629   -export interface PostServiceBankStatementDeleteBankStatementResponse {
  7720 +/** @description response type for postResearchGroupsAdd */
  7721 +export interface PostResearchGroupsAddResponse {
7630 7722 /**
7631 7723 * @description
7632 7724 * OK
... ... @@ -7654,51 +7746,50 @@ export interface PostServiceBankStatementDeleteBankStatementResponse {
7654 7746 404: any;
7655 7747 }
7656 7748  
7657   -export type PostServiceBankStatementDeleteBankStatementResponseSuccess =
7658   - PostServiceBankStatementDeleteBankStatementResponse[200];
  7749 +export type PostResearchGroupsAddResponseSuccess =
  7750 + PostResearchGroupsAddResponse[200];
7659 7751 /**
7660 7752 * @description
7661   - * 删除银行流水
7662   - * @tags 银行流水
  7753 + * 新增课题组信息
  7754 + * @tags research-groups-controller
7663 7755 * @produces *
7664 7756 * @consumes application/json
7665 7757 */
7666   -export const postServiceBankStatementDeleteBankStatement =
7667   - /* #__PURE__ */ (() => {
7668   - const method = 'post';
7669   - const url = '/service/bankStatement/deleteBankStatement';
7670   - function request(
7671   - option: PostServiceBankStatementDeleteBankStatementOption,
7672   - ): Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess> {
7673   - return requester(request.url, {
7674   - method: request.method,
7675   - ...option,
7676   - }) as unknown as Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess>;
7677   - }
  7758 +export const postResearchGroupsAdd = /* #__PURE__ */ (() => {
  7759 + const method = 'post';
  7760 + const url = '/research/groups/add';
  7761 + function request(
  7762 + option: PostResearchGroupsAddOption,
  7763 + ): Promise<PostResearchGroupsAddResponseSuccess> {
  7764 + return requester(request.url, {
  7765 + method: request.method,
  7766 + ...option,
  7767 + }) as unknown as Promise<PostResearchGroupsAddResponseSuccess>;
  7768 + }
7678 7769  
7679   - /** http method */
7680   - request.method = method;
7681   - /** request url */
7682   - request.url = url;
7683   - return request;
7684   - })();
  7770 + /** http method */
  7771 + request.method = method;
  7772 + /** request url */
  7773 + request.url = url;
  7774 + return request;
  7775 +})();
7685 7776  
7686   -/** @description request parameter type for postServiceBankStatementEditBankStatement */
7687   -export interface PostServiceBankStatementEditBankStatementOption {
  7777 +/** @description request parameter type for postResearchGroupsDelete */
  7778 +export interface PostResearchGroupsDeleteOption {
7688 7779 /**
7689 7780 * @description
7690   - * dto
  7781 + * request
7691 7782 */
7692 7783 body: {
7693 7784 /**
7694 7785 @description
7695   - dto */
7696   - dto: Dto;
  7786 + request */
  7787 + request: ResearchGroupDeleteRequest;
7697 7788 };
7698 7789 }
7699 7790  
7700   -/** @description response type for postServiceBankStatementEditBankStatement */
7701   -export interface PostServiceBankStatementEditBankStatementResponse {
  7791 +/** @description response type for postResearchGroupsDelete */
  7792 +export interface PostResearchGroupsDeleteResponse {
7702 7793 /**
7703 7794 * @description
7704 7795 * OK
... ... @@ -7726,42 +7817,55 @@ export interface PostServiceBankStatementEditBankStatementResponse {
7726 7817 404: any;
7727 7818 }
7728 7819  
7729   -export type PostServiceBankStatementEditBankStatementResponseSuccess =
7730   - PostServiceBankStatementEditBankStatementResponse[200];
  7820 +export type PostResearchGroupsDeleteResponseSuccess =
  7821 + PostResearchGroupsDeleteResponse[200];
7731 7822 /**
7732 7823 * @description
7733   - * 编辑银行流水
7734   - * @tags 银行流水
  7824 + * 删除课题组信息
  7825 + * @tags research-groups-controller
7735 7826 * @produces *
7736 7827 * @consumes application/json
7737 7828 */
7738   -export const postServiceBankStatementEditBankStatement =
7739   - /* #__PURE__ */ (() => {
7740   - const method = 'post';
7741   - const url = '/service/bankStatement/editBankStatement';
7742   - function request(
7743   - option: PostServiceBankStatementEditBankStatementOption,
7744   - ): Promise<PostServiceBankStatementEditBankStatementResponseSuccess> {
7745   - return requester(request.url, {
7746   - method: request.method,
7747   - ...option,
7748   - }) as unknown as Promise<PostServiceBankStatementEditBankStatementResponseSuccess>;
7749   - }
  7829 +export const postResearchGroupsDelete = /* #__PURE__ */ (() => {
  7830 + const method = 'post';
  7831 + const url = '/research/groups/delete';
  7832 + function request(
  7833 + option: PostResearchGroupsDeleteOption,
  7834 + ): Promise<PostResearchGroupsDeleteResponseSuccess> {
  7835 + return requester(request.url, {
  7836 + method: request.method,
  7837 + ...option,
  7838 + }) as unknown as Promise<PostResearchGroupsDeleteResponseSuccess>;
  7839 + }
7750 7840  
7751   - /** http method */
7752   - request.method = method;
7753   - /** request url */
7754   - request.url = url;
7755   - return request;
7756   - })();
  7841 + /** http method */
  7842 + request.method = method;
  7843 + /** request url */
  7844 + request.url = url;
  7845 + return request;
  7846 +})();
7757 7847  
7758   -/** @description response type for postServiceBankStatementExportTemplate */
7759   -export interface PostServiceBankStatementExportTemplateResponse {
  7848 +/** @description request parameter type for postResearchGroupsDetail */
  7849 +export interface PostResearchGroupsDetailOption {
  7850 + /**
  7851 + * @description
  7852 + * request
  7853 + */
  7854 + body: {
  7855 + /**
  7856 + @description
  7857 + request */
  7858 + request: ResearchGroupDetailRequest;
  7859 + };
  7860 +}
  7861 +
  7862 +/** @description response type for postResearchGroupsDetail */
  7863 +export interface PostResearchGroupsDetailResponse {
7760 7864 /**
7761 7865 * @description
7762 7866 * OK
7763 7867 */
7764   - 200: any;
  7868 + 200: ServerResult;
7765 7869 /**
7766 7870 * @description
7767 7871 * Created
... ... @@ -7784,22 +7888,25 @@ export interface PostServiceBankStatementExportTemplateResponse {
7784 7888 404: any;
7785 7889 }
7786 7890  
7787   -export type PostServiceBankStatementExportTemplateResponseSuccess =
7788   - PostServiceBankStatementExportTemplateResponse[200];
  7891 +export type PostResearchGroupsDetailResponseSuccess =
  7892 + PostResearchGroupsDetailResponse[200];
7789 7893 /**
7790 7894 * @description
7791   - * 下载银行流水模板
7792   - * @tags 银行流水
  7895 + * 查询课题组信息
  7896 + * @tags research-groups-controller
7793 7897 * @produces *
7794 7898 * @consumes application/json
7795 7899 */
7796   -export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() => {
  7900 +export const postResearchGroupsDetail = /* #__PURE__ */ (() => {
7797 7901 const method = 'post';
7798   - const url = '/service/bankStatement/exportTemplate';
7799   - function request(): Promise<PostServiceBankStatementExportTemplateResponseSuccess> {
  7902 + const url = '/research/groups/detail';
  7903 + function request(
  7904 + option: PostResearchGroupsDetailOption,
  7905 + ): Promise<PostResearchGroupsDetailResponseSuccess> {
7800 7906 return requester(request.url, {
7801 7907 method: request.method,
7802   - }) as unknown as Promise<PostServiceBankStatementExportTemplateResponseSuccess>;
  7908 + ...option,
  7909 + }) as unknown as Promise<PostResearchGroupsDetailResponseSuccess>;
7803 7910 }
7804 7911  
7805 7912 /** http method */
... ... @@ -7809,22 +7916,22 @@ export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() =&gt; {
7809 7916 return request;
7810 7917 })();
7811 7918  
7812   -/** @description request parameter type for postServiceBankStatementImportBankStatementForm */
7813   -export interface PostServiceBankStatementImportBankStatementFormOption {
  7919 +/** @description request parameter type for postResearchGroupsEdit */
  7920 +export interface PostResearchGroupsEditOption {
7814 7921 /**
7815 7922 * @description
7816   - * file
  7923 + * request
7817 7924 */
7818   - formData: {
  7925 + body: {
7819 7926 /**
7820 7927 @description
7821   - file */
7822   - file: File;
  7928 + request */
  7929 + request: ResearchGroupEditRequest;
7823 7930 };
7824 7931 }
7825 7932  
7826   -/** @description response type for postServiceBankStatementImportBankStatementForm */
7827   -export interface PostServiceBankStatementImportBankStatementFormResponse {
  7933 +/** @description response type for postResearchGroupsEdit */
  7934 +export interface PostResearchGroupsEditResponse {
7828 7935 /**
7829 7936 * @description
7830 7937 * OK
... ... @@ -7852,51 +7959,50 @@ export interface PostServiceBankStatementImportBankStatementFormResponse {
7852 7959 404: any;
7853 7960 }
7854 7961  
7855   -export type PostServiceBankStatementImportBankStatementFormResponseSuccess =
7856   - PostServiceBankStatementImportBankStatementFormResponse[200];
  7962 +export type PostResearchGroupsEditResponseSuccess =
  7963 + PostResearchGroupsEditResponse[200];
7857 7964 /**
7858 7965 * @description
7859   - * 导入银行流水表格
7860   - * @tags 银行流水
  7966 + * 编辑课题组信息
  7967 + * @tags research-groups-controller
7861 7968 * @produces *
7862   - * @consumes multipart/form-data
  7969 + * @consumes application/json
7863 7970 */
7864   -export const postServiceBankStatementImportBankStatementForm =
7865   - /* #__PURE__ */ (() => {
7866   - const method = 'post';
7867   - const url = '/service/bankStatement/importBankStatementForm';
7868   - function request(
7869   - option: PostServiceBankStatementImportBankStatementFormOption,
7870   - ): Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess> {
7871   - return requester(request.url, {
7872   - method: request.method,
7873   - ...option,
7874   - }) as unknown as Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess>;
7875   - }
  7971 +export const postResearchGroupsEdit = /* #__PURE__ */ (() => {
  7972 + const method = 'post';
  7973 + const url = '/research/groups/edit';
  7974 + function request(
  7975 + option: PostResearchGroupsEditOption,
  7976 + ): Promise<PostResearchGroupsEditResponseSuccess> {
  7977 + return requester(request.url, {
  7978 + method: request.method,
  7979 + ...option,
  7980 + }) as unknown as Promise<PostResearchGroupsEditResponseSuccess>;
  7981 + }
7876 7982  
7877   - /** http method */
7878   - request.method = method;
7879   - /** request url */
7880   - request.url = url;
7881   - return request;
7882   - })();
  7983 + /** http method */
  7984 + request.method = method;
  7985 + /** request url */
  7986 + request.url = url;
  7987 + return request;
  7988 +})();
7883 7989  
7884   -/** @description request parameter type for postServiceBankStatementQueryBankStatement */
7885   -export interface PostServiceBankStatementQueryBankStatementOption {
  7990 +/** @description request parameter type for postResearchGroupsList */
  7991 +export interface PostResearchGroupsListOption {
7886 7992 /**
7887 7993 * @description
7888   - * dto
  7994 + * request
7889 7995 */
7890 7996 body: {
7891 7997 /**
7892 7998 @description
7893   - dto */
7894   - dto: QueryBankStatementDto;
  7999 + request */
  8000 + request: ResearchGroupListRequest;
7895 8001 };
7896 8002 }
7897 8003  
7898   -/** @description response type for postServiceBankStatementQueryBankStatement */
7899   -export interface PostServiceBankStatementQueryBankStatementResponse {
  8004 +/** @description response type for postResearchGroupsList */
  8005 +export interface PostResearchGroupsListResponse {
7900 8006 /**
7901 8007 * @description
7902 8008 * OK
... ... @@ -7924,26 +8030,367 @@ export interface PostServiceBankStatementQueryBankStatementResponse {
7924 8030 404: any;
7925 8031 }
7926 8032  
7927   -export type PostServiceBankStatementQueryBankStatementResponseSuccess =
7928   - PostServiceBankStatementQueryBankStatementResponse[200];
  8033 +export type PostResearchGroupsListResponseSuccess =
  8034 + PostResearchGroupsListResponse[200];
7929 8035 /**
7930 8036 * @description
7931   - * 查询银行流水
7932   - * @tags 银行流水
  8037 + * 课题组列表
  8038 + * @tags research-groups-controller
7933 8039 * @produces *
7934 8040 * @consumes application/json
7935 8041 */
7936   -export const postServiceBankStatementQueryBankStatement =
7937   - /* #__PURE__ */ (() => {
7938   - const method = 'post';
7939   - const url = '/service/bankStatement/queryBankStatement';
7940   - function request(
7941   - option: PostServiceBankStatementQueryBankStatementOption,
7942   - ): Promise<PostServiceBankStatementQueryBankStatementResponseSuccess> {
7943   - return requester(request.url, {
7944   - method: request.method,
7945   - ...option,
7946   - }) as unknown as Promise<PostServiceBankStatementQueryBankStatementResponseSuccess>;
  8042 +export const postResearchGroupsList = /* #__PURE__ */ (() => {
  8043 + const method = 'post';
  8044 + const url = '/research/groups/list';
  8045 + function request(
  8046 + option: PostResearchGroupsListOption,
  8047 + ): Promise<PostResearchGroupsListResponseSuccess> {
  8048 + return requester(request.url, {
  8049 + method: request.method,
  8050 + ...option,
  8051 + }) as unknown as Promise<PostResearchGroupsListResponseSuccess>;
  8052 + }
  8053 +
  8054 + /** http method */
  8055 + request.method = method;
  8056 + /** request url */
  8057 + request.url = url;
  8058 + return request;
  8059 +})();
  8060 +
  8061 +/** @description request parameter type for postServiceBankStatementDeleteBankStatement */
  8062 +export interface PostServiceBankStatementDeleteBankStatementOption {
  8063 + /**
  8064 + * @description
  8065 + * dto
  8066 + */
  8067 + body: {
  8068 + /**
  8069 + @description
  8070 + dto */
  8071 + dto: Dto;
  8072 + };
  8073 +}
  8074 +
  8075 +/** @description response type for postServiceBankStatementDeleteBankStatement */
  8076 +export interface PostServiceBankStatementDeleteBankStatementResponse {
  8077 + /**
  8078 + * @description
  8079 + * OK
  8080 + */
  8081 + 200: ServerResult;
  8082 + /**
  8083 + * @description
  8084 + * Created
  8085 + */
  8086 + 201: any;
  8087 + /**
  8088 + * @description
  8089 + * Unauthorized
  8090 + */
  8091 + 401: any;
  8092 + /**
  8093 + * @description
  8094 + * Forbidden
  8095 + */
  8096 + 403: any;
  8097 + /**
  8098 + * @description
  8099 + * Not Found
  8100 + */
  8101 + 404: any;
  8102 +}
  8103 +
  8104 +export type PostServiceBankStatementDeleteBankStatementResponseSuccess =
  8105 + PostServiceBankStatementDeleteBankStatementResponse[200];
  8106 +/**
  8107 + * @description
  8108 + * 删除银行流水
  8109 + * @tags 银行流水
  8110 + * @produces *
  8111 + * @consumes application/json
  8112 + */
  8113 +export const postServiceBankStatementDeleteBankStatement =
  8114 + /* #__PURE__ */ (() => {
  8115 + const method = 'post';
  8116 + const url = '/service/bankStatement/deleteBankStatement';
  8117 + function request(
  8118 + option: PostServiceBankStatementDeleteBankStatementOption,
  8119 + ): Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess> {
  8120 + return requester(request.url, {
  8121 + method: request.method,
  8122 + ...option,
  8123 + }) as unknown as Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess>;
  8124 + }
  8125 +
  8126 + /** http method */
  8127 + request.method = method;
  8128 + /** request url */
  8129 + request.url = url;
  8130 + return request;
  8131 + })();
  8132 +
  8133 +/** @description request parameter type for postServiceBankStatementEditBankStatement */
  8134 +export interface PostServiceBankStatementEditBankStatementOption {
  8135 + /**
  8136 + * @description
  8137 + * dto
  8138 + */
  8139 + body: {
  8140 + /**
  8141 + @description
  8142 + dto */
  8143 + dto: Dto;
  8144 + };
  8145 +}
  8146 +
  8147 +/** @description response type for postServiceBankStatementEditBankStatement */
  8148 +export interface PostServiceBankStatementEditBankStatementResponse {
  8149 + /**
  8150 + * @description
  8151 + * OK
  8152 + */
  8153 + 200: ServerResult;
  8154 + /**
  8155 + * @description
  8156 + * Created
  8157 + */
  8158 + 201: any;
  8159 + /**
  8160 + * @description
  8161 + * Unauthorized
  8162 + */
  8163 + 401: any;
  8164 + /**
  8165 + * @description
  8166 + * Forbidden
  8167 + */
  8168 + 403: any;
  8169 + /**
  8170 + * @description
  8171 + * Not Found
  8172 + */
  8173 + 404: any;
  8174 +}
  8175 +
  8176 +export type PostServiceBankStatementEditBankStatementResponseSuccess =
  8177 + PostServiceBankStatementEditBankStatementResponse[200];
  8178 +/**
  8179 + * @description
  8180 + * 编辑银行流水
  8181 + * @tags 银行流水
  8182 + * @produces *
  8183 + * @consumes application/json
  8184 + */
  8185 +export const postServiceBankStatementEditBankStatement =
  8186 + /* #__PURE__ */ (() => {
  8187 + const method = 'post';
  8188 + const url = '/service/bankStatement/editBankStatement';
  8189 + function request(
  8190 + option: PostServiceBankStatementEditBankStatementOption,
  8191 + ): Promise<PostServiceBankStatementEditBankStatementResponseSuccess> {
  8192 + return requester(request.url, {
  8193 + method: request.method,
  8194 + ...option,
  8195 + }) as unknown as Promise<PostServiceBankStatementEditBankStatementResponseSuccess>;
  8196 + }
  8197 +
  8198 + /** http method */
  8199 + request.method = method;
  8200 + /** request url */
  8201 + request.url = url;
  8202 + return request;
  8203 + })();
  8204 +
  8205 +/** @description response type for postServiceBankStatementExportTemplate */
  8206 +export interface PostServiceBankStatementExportTemplateResponse {
  8207 + /**
  8208 + * @description
  8209 + * OK
  8210 + */
  8211 + 200: any;
  8212 + /**
  8213 + * @description
  8214 + * Created
  8215 + */
  8216 + 201: any;
  8217 + /**
  8218 + * @description
  8219 + * Unauthorized
  8220 + */
  8221 + 401: any;
  8222 + /**
  8223 + * @description
  8224 + * Forbidden
  8225 + */
  8226 + 403: any;
  8227 + /**
  8228 + * @description
  8229 + * Not Found
  8230 + */
  8231 + 404: any;
  8232 +}
  8233 +
  8234 +export type PostServiceBankStatementExportTemplateResponseSuccess =
  8235 + PostServiceBankStatementExportTemplateResponse[200];
  8236 +/**
  8237 + * @description
  8238 + * 下载银行流水模板
  8239 + * @tags 银行流水
  8240 + * @produces *
  8241 + * @consumes application/json
  8242 + */
  8243 +export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() => {
  8244 + const method = 'post';
  8245 + const url = '/service/bankStatement/exportTemplate';
  8246 + function request(): Promise<PostServiceBankStatementExportTemplateResponseSuccess> {
  8247 + return requester(request.url, {
  8248 + method: request.method,
  8249 + }) as unknown as Promise<PostServiceBankStatementExportTemplateResponseSuccess>;
  8250 + }
  8251 +
  8252 + /** http method */
  8253 + request.method = method;
  8254 + /** request url */
  8255 + request.url = url;
  8256 + return request;
  8257 +})();
  8258 +
  8259 +/** @description request parameter type for postServiceBankStatementImportBankStatementForm */
  8260 +export interface PostServiceBankStatementImportBankStatementFormOption {
  8261 + /**
  8262 + * @description
  8263 + * file
  8264 + */
  8265 + formData: {
  8266 + /**
  8267 + @description
  8268 + file */
  8269 + file: File;
  8270 + };
  8271 +}
  8272 +
  8273 +/** @description response type for postServiceBankStatementImportBankStatementForm */
  8274 +export interface PostServiceBankStatementImportBankStatementFormResponse {
  8275 + /**
  8276 + * @description
  8277 + * OK
  8278 + */
  8279 + 200: ServerResult;
  8280 + /**
  8281 + * @description
  8282 + * Created
  8283 + */
  8284 + 201: any;
  8285 + /**
  8286 + * @description
  8287 + * Unauthorized
  8288 + */
  8289 + 401: any;
  8290 + /**
  8291 + * @description
  8292 + * Forbidden
  8293 + */
  8294 + 403: any;
  8295 + /**
  8296 + * @description
  8297 + * Not Found
  8298 + */
  8299 + 404: any;
  8300 +}
  8301 +
  8302 +export type PostServiceBankStatementImportBankStatementFormResponseSuccess =
  8303 + PostServiceBankStatementImportBankStatementFormResponse[200];
  8304 +/**
  8305 + * @description
  8306 + * 导入银行流水表格
  8307 + * @tags 银行流水
  8308 + * @produces *
  8309 + * @consumes multipart/form-data
  8310 + */
  8311 +export const postServiceBankStatementImportBankStatementForm =
  8312 + /* #__PURE__ */ (() => {
  8313 + const method = 'post';
  8314 + const url = '/service/bankStatement/importBankStatementForm';
  8315 + function request(
  8316 + option: PostServiceBankStatementImportBankStatementFormOption,
  8317 + ): Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess> {
  8318 + return requester(request.url, {
  8319 + method: request.method,
  8320 + ...option,
  8321 + }) as unknown as Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess>;
  8322 + }
  8323 +
  8324 + /** http method */
  8325 + request.method = method;
  8326 + /** request url */
  8327 + request.url = url;
  8328 + return request;
  8329 + })();
  8330 +
  8331 +/** @description request parameter type for postServiceBankStatementQueryBankStatement */
  8332 +export interface PostServiceBankStatementQueryBankStatementOption {
  8333 + /**
  8334 + * @description
  8335 + * dto
  8336 + */
  8337 + body: {
  8338 + /**
  8339 + @description
  8340 + dto */
  8341 + dto: QueryBankStatementDto;
  8342 + };
  8343 +}
  8344 +
  8345 +/** @description response type for postServiceBankStatementQueryBankStatement */
  8346 +export interface PostServiceBankStatementQueryBankStatementResponse {
  8347 + /**
  8348 + * @description
  8349 + * OK
  8350 + */
  8351 + 200: ServerResult;
  8352 + /**
  8353 + * @description
  8354 + * Created
  8355 + */
  8356 + 201: any;
  8357 + /**
  8358 + * @description
  8359 + * Unauthorized
  8360 + */
  8361 + 401: any;
  8362 + /**
  8363 + * @description
  8364 + * Forbidden
  8365 + */
  8366 + 403: any;
  8367 + /**
  8368 + * @description
  8369 + * Not Found
  8370 + */
  8371 + 404: any;
  8372 +}
  8373 +
  8374 +export type PostServiceBankStatementQueryBankStatementResponseSuccess =
  8375 + PostServiceBankStatementQueryBankStatementResponse[200];
  8376 +/**
  8377 + * @description
  8378 + * 查询银行流水
  8379 + * @tags 银行流水
  8380 + * @produces *
  8381 + * @consumes application/json
  8382 + */
  8383 +export const postServiceBankStatementQueryBankStatement =
  8384 + /* #__PURE__ */ (() => {
  8385 + const method = 'post';
  8386 + const url = '/service/bankStatement/queryBankStatement';
  8387 + function request(
  8388 + option: PostServiceBankStatementQueryBankStatementOption,
  8389 + ): Promise<PostServiceBankStatementQueryBankStatementResponseSuccess> {
  8390 + return requester(request.url, {
  8391 + method: request.method,
  8392 + ...option,
  8393 + }) as unknown as Promise<PostServiceBankStatementQueryBankStatementResponseSuccess>;
7947 8394 }
7948 8395  
7949 8396 /** http method */
... ... @@ -7953,6 +8400,60 @@ export const postServiceBankStatementQueryBankStatement =
7953 8400 return request;
7954 8401 })();
7955 8402  
  8403 +/** @description response type for postServiceConstAfterInvoicingStatus */
  8404 +export interface PostServiceConstAfterInvoicingStatusResponse {
  8405 + /**
  8406 + * @description
  8407 + * OK
  8408 + */
  8409 + 200: ServerResult;
  8410 + /**
  8411 + * @description
  8412 + * Created
  8413 + */
  8414 + 201: any;
  8415 + /**
  8416 + * @description
  8417 + * Unauthorized
  8418 + */
  8419 + 401: any;
  8420 + /**
  8421 + * @description
  8422 + * Forbidden
  8423 + */
  8424 + 403: any;
  8425 + /**
  8426 + * @description
  8427 + * Not Found
  8428 + */
  8429 + 404: any;
  8430 +}
  8431 +
  8432 +export type PostServiceConstAfterInvoicingStatusResponseSuccess =
  8433 + PostServiceConstAfterInvoicingStatusResponse[200];
  8434 +/**
  8435 + * @description
  8436 + * 申请开票后状态
  8437 + * @tags front-const-controller
  8438 + * @produces *
  8439 + * @consumes application/json
  8440 + */
  8441 +export const postServiceConstAfterInvoicingStatus = /* #__PURE__ */ (() => {
  8442 + const method = 'post';
  8443 + const url = '/service/const/afterInvoicingStatus';
  8444 + function request(): Promise<PostServiceConstAfterInvoicingStatusResponseSuccess> {
  8445 + return requester(request.url, {
  8446 + method: request.method,
  8447 + }) as unknown as Promise<PostServiceConstAfterInvoicingStatusResponseSuccess>;
  8448 + }
  8449 +
  8450 + /** http method */
  8451 + request.method = method;
  8452 + /** request url */
  8453 + request.url = url;
  8454 + return request;
  8455 +})();
  8456 +
7956 8457 /** @description response type for postServiceConstCanApplyAfterInvoicingStatus */
7957 8458 export interface PostServiceConstCanApplyAfterInvoicingStatusResponse {
7958 8459 /**
... ... @@ -8251,7 +8752,7 @@ export interface PostServiceInvoiceApplyInvoiceOption {
8251 8752 /**
8252 8753 @description
8253 8754 dto */
8254   - dto: InvoiceRecordDto;
  8755 + dto: ApplyInvoiceDto;
8255 8756 };
8256 8757 }
8257 8758  
... ... @@ -8312,6 +8813,77 @@ export const postServiceInvoiceApplyInvoice = /* #__PURE__ */ (() =&gt; {
8312 8813 return request;
8313 8814 })();
8314 8815  
  8816 +/** @description request parameter type for postServiceInvoiceCancelApply */
  8817 +export interface PostServiceInvoiceCancelApplyOption {
  8818 + /**
  8819 + * @description
  8820 + * dto
  8821 + */
  8822 + body: {
  8823 + /**
  8824 + @description
  8825 + dto */
  8826 + dto: Dto;
  8827 + };
  8828 +}
  8829 +
  8830 +/** @description response type for postServiceInvoiceCancelApply */
  8831 +export interface PostServiceInvoiceCancelApplyResponse {
  8832 + /**
  8833 + * @description
  8834 + * OK
  8835 + */
  8836 + 200: ServerResult;
  8837 + /**
  8838 + * @description
  8839 + * Created
  8840 + */
  8841 + 201: any;
  8842 + /**
  8843 + * @description
  8844 + * Unauthorized
  8845 + */
  8846 + 401: any;
  8847 + /**
  8848 + * @description
  8849 + * Forbidden
  8850 + */
  8851 + 403: any;
  8852 + /**
  8853 + * @description
  8854 + * Not Found
  8855 + */
  8856 + 404: any;
  8857 +}
  8858 +
  8859 +export type PostServiceInvoiceCancelApplyResponseSuccess =
  8860 + PostServiceInvoiceCancelApplyResponse[200];
  8861 +/**
  8862 + * @description
  8863 + * 取消申请
  8864 + * @tags 发票
  8865 + * @produces *
  8866 + * @consumes application/json
  8867 + */
  8868 +export const postServiceInvoiceCancelApply = /* #__PURE__ */ (() => {
  8869 + const method = 'post';
  8870 + const url = '/service/invoice/cancelApply';
  8871 + function request(
  8872 + option: PostServiceInvoiceCancelApplyOption,
  8873 + ): Promise<PostServiceInvoiceCancelApplyResponseSuccess> {
  8874 + return requester(request.url, {
  8875 + method: request.method,
  8876 + ...option,
  8877 + }) as unknown as Promise<PostServiceInvoiceCancelApplyResponseSuccess>;
  8878 + }
  8879 +
  8880 + /** http method */
  8881 + request.method = method;
  8882 + /** request url */
  8883 + request.url = url;
  8884 + return request;
  8885 +})();
  8886 +
8315 8887 /** @description request parameter type for postServiceInvoiceCancelInvoiceAndBankStatement */
8316 8888 export interface PostServiceInvoiceCancelInvoiceAndBankStatementOption {
8317 8889 /**
... ... @@ -8599,6 +9171,103 @@ export const postServiceInvoiceDownloadInvoice = /* #__PURE__ */ (() =&gt; {
8599 9171 return request;
8600 9172 })();
8601 9173  
  9174 +/** @description response type for getServiceInvoiceExport */
  9175 +export interface GetServiceInvoiceExportResponse {
  9176 + /**
  9177 + * @description
  9178 + * OK
  9179 + */
  9180 + 200: any;
  9181 + /**
  9182 + * @description
  9183 + * Unauthorized
  9184 + */
  9185 + 401: any;
  9186 + /**
  9187 + * @description
  9188 + * Forbidden
  9189 + */
  9190 + 403: any;
  9191 + /**
  9192 + * @description
  9193 + * Not Found
  9194 + */
  9195 + 404: any;
  9196 +}
  9197 +
  9198 +export type GetServiceInvoiceExportResponseSuccess =
  9199 + GetServiceInvoiceExportResponse[200];
  9200 +/**
  9201 + * @description
  9202 + * download
  9203 + * @tags 发票
  9204 + * @produces *
  9205 + */
  9206 +export const getServiceInvoiceExport = /* #__PURE__ */ (() => {
  9207 + const method = 'get';
  9208 + const url = '/service/invoice/export';
  9209 + function request(): Promise<GetServiceInvoiceExportResponseSuccess> {
  9210 + return requester(request.url, {
  9211 + method: request.method,
  9212 + }) as unknown as Promise<GetServiceInvoiceExportResponseSuccess>;
  9213 + }
  9214 +
  9215 + /** http method */
  9216 + request.method = method;
  9217 + /** request url */
  9218 + request.url = url;
  9219 + return request;
  9220 +})();
  9221 +
  9222 +/** @description response type for getServiceInvoiceExportInvoiceDetailsTemplate */
  9223 +export interface GetServiceInvoiceExportInvoiceDetailsTemplateResponse {
  9224 + /**
  9225 + * @description
  9226 + * OK
  9227 + */
  9228 + 200: any;
  9229 + /**
  9230 + * @description
  9231 + * Unauthorized
  9232 + */
  9233 + 401: any;
  9234 + /**
  9235 + * @description
  9236 + * Forbidden
  9237 + */
  9238 + 403: any;
  9239 + /**
  9240 + * @description
  9241 + * Not Found
  9242 + */
  9243 + 404: any;
  9244 +}
  9245 +
  9246 +export type GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess =
  9247 + GetServiceInvoiceExportInvoiceDetailsTemplateResponse[200];
  9248 +/**
  9249 + * @description
  9250 + * 导出发票明细模板
  9251 + * @tags 发票
  9252 + * @produces *
  9253 + */
  9254 +export const getServiceInvoiceExportInvoiceDetailsTemplate =
  9255 + /* #__PURE__ */ (() => {
  9256 + const method = 'get';
  9257 + const url = '/service/invoice/exportInvoiceDetailsTemplate';
  9258 + function request(): Promise<GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess> {
  9259 + return requester(request.url, {
  9260 + method: request.method,
  9261 + }) as unknown as Promise<GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess>;
  9262 + }
  9263 +
  9264 + /** http method */
  9265 + request.method = method;
  9266 + /** request url */
  9267 + request.url = url;
  9268 + return request;
  9269 + })();
  9270 +
8602 9271 /** @description request parameter type for postServiceInvoiceFindInvoice */
8603 9272 export interface PostServiceInvoiceFindInvoiceOption {
8604 9273 /**
... ... @@ -9376,6 +10045,148 @@ export const postServiceInvoiceReissue = /* #__PURE__ */ (() =&gt; {
9376 10045 return request;
9377 10046 })();
9378 10047  
  10048 +/** @description request parameter type for postServiceInvoiceReissueAudit */
  10049 +export interface PostServiceInvoiceReissueAuditOption {
  10050 + /**
  10051 + * @description
  10052 + * dto
  10053 + */
  10054 + body: {
  10055 + /**
  10056 + @description
  10057 + dto */
  10058 + dto: AuditDto;
  10059 + };
  10060 +}
  10061 +
  10062 +/** @description response type for postServiceInvoiceReissueAudit */
  10063 +export interface PostServiceInvoiceReissueAuditResponse {
  10064 + /**
  10065 + * @description
  10066 + * OK
  10067 + */
  10068 + 200: ServerResult;
  10069 + /**
  10070 + * @description
  10071 + * Created
  10072 + */
  10073 + 201: any;
  10074 + /**
  10075 + * @description
  10076 + * Unauthorized
  10077 + */
  10078 + 401: any;
  10079 + /**
  10080 + * @description
  10081 + * Forbidden
  10082 + */
  10083 + 403: any;
  10084 + /**
  10085 + * @description
  10086 + * Not Found
  10087 + */
  10088 + 404: any;
  10089 +}
  10090 +
  10091 +export type PostServiceInvoiceReissueAuditResponseSuccess =
  10092 + PostServiceInvoiceReissueAuditResponse[200];
  10093 +/**
  10094 + * @description
  10095 + * 重新开票审核
  10096 + * @tags 发票
  10097 + * @produces *
  10098 + * @consumes application/json
  10099 + */
  10100 +export const postServiceInvoiceReissueAudit = /* #__PURE__ */ (() => {
  10101 + const method = 'post';
  10102 + const url = '/service/invoice/reissueAudit';
  10103 + function request(
  10104 + option: PostServiceInvoiceReissueAuditOption,
  10105 + ): Promise<PostServiceInvoiceReissueAuditResponseSuccess> {
  10106 + return requester(request.url, {
  10107 + method: request.method,
  10108 + ...option,
  10109 + }) as unknown as Promise<PostServiceInvoiceReissueAuditResponseSuccess>;
  10110 + }
  10111 +
  10112 + /** http method */
  10113 + request.method = method;
  10114 + /** request url */
  10115 + request.url = url;
  10116 + return request;
  10117 +})();
  10118 +
  10119 +/** @description request parameter type for postServiceInvoiceUrgentInvoicing */
  10120 +export interface PostServiceInvoiceUrgentInvoicingOption {
  10121 + /**
  10122 + * @description
  10123 + * dto
  10124 + */
  10125 + body: {
  10126 + /**
  10127 + @description
  10128 + dto */
  10129 + dto: AuditDto;
  10130 + };
  10131 +}
  10132 +
  10133 +/** @description response type for postServiceInvoiceUrgentInvoicing */
  10134 +export interface PostServiceInvoiceUrgentInvoicingResponse {
  10135 + /**
  10136 + * @description
  10137 + * OK
  10138 + */
  10139 + 200: ServerResult;
  10140 + /**
  10141 + * @description
  10142 + * Created
  10143 + */
  10144 + 201: any;
  10145 + /**
  10146 + * @description
  10147 + * Unauthorized
  10148 + */
  10149 + 401: any;
  10150 + /**
  10151 + * @description
  10152 + * Forbidden
  10153 + */
  10154 + 403: any;
  10155 + /**
  10156 + * @description
  10157 + * Not Found
  10158 + */
  10159 + 404: any;
  10160 +}
  10161 +
  10162 +export type PostServiceInvoiceUrgentInvoicingResponseSuccess =
  10163 + PostServiceInvoiceUrgentInvoicingResponse[200];
  10164 +/**
  10165 + * @description
  10166 + * 加急开票审核
  10167 + * @tags 发票
  10168 + * @produces *
  10169 + * @consumes application/json
  10170 + */
  10171 +export const postServiceInvoiceUrgentInvoicing = /* #__PURE__ */ (() => {
  10172 + const method = 'post';
  10173 + const url = '/service/invoice/urgentInvoicing';
  10174 + function request(
  10175 + option: PostServiceInvoiceUrgentInvoicingOption,
  10176 + ): Promise<PostServiceInvoiceUrgentInvoicingResponseSuccess> {
  10177 + return requester(request.url, {
  10178 + method: request.method,
  10179 + ...option,
  10180 + }) as unknown as Promise<PostServiceInvoiceUrgentInvoicingResponseSuccess>;
  10181 + }
  10182 +
  10183 + /** http method */
  10184 + request.method = method;
  10185 + /** request url */
  10186 + request.url = url;
  10187 + return request;
  10188 +})();
  10189 +
9379 10190 /** @description request parameter type for postServiceOrderAddOrder */
9380 10191 export interface PostServiceOrderAddOrderOption {
9381 10192 /**
... ... @@ -13103,6 +13914,77 @@ export const postServiceOrderSaleCancelInvoicing = /* #__PURE__ */ (() =&gt; {
13103 13914 return request;
13104 13915 })();
13105 13916  
  13917 +/** @description request parameter type for postServiceOrderSalesConfirm */
  13918 +export interface PostServiceOrderSalesConfirmOption {
  13919 + /**
  13920 + * @description
  13921 + * dto
  13922 + */
  13923 + body: {
  13924 + /**
  13925 + @description
  13926 + dto */
  13927 + dto: Dto;
  13928 + };
  13929 +}
  13930 +
  13931 +/** @description response type for postServiceOrderSalesConfirm */
  13932 +export interface PostServiceOrderSalesConfirmResponse {
  13933 + /**
  13934 + * @description
  13935 + * OK
  13936 + */
  13937 + 200: ServerResult;
  13938 + /**
  13939 + * @description
  13940 + * Created
  13941 + */
  13942 + 201: any;
  13943 + /**
  13944 + * @description
  13945 + * Unauthorized
  13946 + */
  13947 + 401: any;
  13948 + /**
  13949 + * @description
  13950 + * Forbidden
  13951 + */
  13952 + 403: any;
  13953 + /**
  13954 + * @description
  13955 + * Not Found
  13956 + */
  13957 + 404: any;
  13958 +}
  13959 +
  13960 +export type PostServiceOrderSalesConfirmResponseSuccess =
  13961 + PostServiceOrderSalesConfirmResponse[200];
  13962 +/**
  13963 + * @description
  13964 + * 销售订单确认
  13965 + * @tags 内部订单
  13966 + * @produces *
  13967 + * @consumes application/json
  13968 + */
  13969 +export const postServiceOrderSalesConfirm = /* #__PURE__ */ (() => {
  13970 + const method = 'post';
  13971 + const url = '/service/order/salesConfirm';
  13972 + function request(
  13973 + option: PostServiceOrderSalesConfirmOption,
  13974 + ): Promise<PostServiceOrderSalesConfirmResponseSuccess> {
  13975 + return requester(request.url, {
  13976 + method: request.method,
  13977 + ...option,
  13978 + }) as unknown as Promise<PostServiceOrderSalesConfirmResponseSuccess>;
  13979 + }
  13980 +
  13981 + /** http method */
  13982 + request.method = method;
  13983 + /** request url */
  13984 + request.url = url;
  13985 + return request;
  13986 +})();
  13987 +
13106 13988 /** @description request parameter type for postServiceOrderSendProduct */
13107 13989 export interface PostServiceOrderSendProductOption {
13108 13990 /**
... ...
src/utils/index.ts
... ... @@ -10,6 +10,7 @@ function enumToSelect(data: any) {
10 10  
11 11 //将枚举的value值转换为label
12 12 function enumValueToLabel(value: any, enumObj: any) {
  13 + console.log(value, enumObj);
13 14 if (enumObj !== undefined) {
14 15 return enumObj[value];
15 16 }
... ...