Commit 3b242eff9fa8a74e41d636ae99a1e2e16f879dbb

Authored by zhongnanhuang
2 parents 1973d190 3759cd10
.umirc.ts
... ... @@ -72,19 +72,26 @@ export default defineConfig({
72 72 component: './Invoice/InvoiceRecord',
73 73 },
74 74 {
75   - name: '发票管理',
  75 + name: '发票核销',
76 76 path: 'invoice',
77 77 icon: 'BookOutlined',
78 78 access: 'canReadAdminAndFinance',
79 79 component: './Invoice/Invoice',
80 80 },
81 81 {
82   - name: '发票核销',
  82 + name: '银行流水',
83 83 path: 'invoiceVerification',
84 84 icon: 'BookOutlined',
85 85 access: 'canReadAdminAndFinance',
86 86 component: './Invoice/InvoiceVerification',
87 87 },
  88 + {
  89 + name: '手动开票白名单',
  90 + path: 'OldInvoicingWhiteList',
  91 + icon: 'BookOutlined',
  92 + access: 'canReadAdminAndFinance',
  93 + component: './Invoice/whiteList',
  94 + },
88 95 ],
89 96 },
90 97 {
... ... @@ -133,7 +140,7 @@ export default defineConfig({
133 140 path: '/procure',
134 141 component: './procure',
135 142 icon: 'BookOutlined',
136   - access: 'canReadAdmin',
  143 + access: 'canReadAdminAndWarehouseKeeperAndProcure',
137 144 },
138 145 /*{
139 146 name: '用户管理',
... ...
src/access.ts
... ... @@ -5,6 +5,7 @@ export default (initialState: API.UserInfo) => {
5 5 const canReadAdmin = roleSmallVO?.code === 'admin';
6 6 const canReadProcure = roleSmallVO?.code === 'procure';
7 7 const canReadFinance = roleSmallVO?.code === 'finance';
  8 + const canReadWarehouseKeeper = roleSmallVO?.code === 'warehouseKeeper';
8 9 const canReadSales =
9 10 roleSmallVO?.code === 'salesManager' ||
10 11 roleSmallVO?.code === 'salesRepresentative';
... ... @@ -17,5 +18,7 @@ export default (initialState: API.UserInfo) => {
17 18 canReadAdminAndFinanceAndSales:
18 19 canReadFinance || canReadAdmin || canReadSales,
19 20 canReadAdminAndSales: canReadAdmin || canReadSales,
  21 + canReadAdminAndWarehouseKeeperAndProcure:
  22 + canReadWarehouseKeeper || canReadAdmin || canReadProcure,
20 23 };
21 24 };
... ...
src/pages/Invoice/Invoice/index.tsx
... ... @@ -112,8 +112,9 @@ const InvoiceRecord = () => {
112 112 <a
113 113 key="editable"
114 114 onClick={() => {
  115 + console.log(JSON.stringify(record));
115 116 setInvoiceVerificationVisible(true);
116   - setInvoiceId(record.invoiceId);
  117 + setInvoiceId(record.id);
117 118 }}
118 119 >
119 120 核销
... ... @@ -129,7 +130,7 @@ const InvoiceRecord = () =&gt; {
129 130 type="link"
130 131 onClick={() => {
131 132 setInvoiceVerificationVisible(true);
132   - setInvoiceId(record.invoiceId);
  133 + setInvoiceId(record.id);
133 134 }}
134 135 >
135 136 查看
... ...
src/pages/Invoice/InvoiceRecord/components/InvoiceRecordDetailModal.tsx
... ... @@ -21,7 +21,7 @@ import {
21 21 import { Button, Divider, Form, Space, message } from 'antd';
22 22 import { useEffect, useRef, useState } from 'react';
23 23  
24   -export default ({ id, setVisible }) => {
  24 +export default ({ id, setVisible, reloadTable }) => {
25 25 const [readOnly, setReadOnly] = useState(true);
26 26 const [detailTableData, setDetailTableData] = useState([]);
27 27 const [payees, setPayees] = useState([]);
... ... @@ -124,6 +124,7 @@ export default ({ id, setVisible }) =&gt; {
124 124 message.success('提交成功');
125 125 }
126 126 setVisible(false);
  127 + reloadTable();
127 128 return true;
128 129 }}
129 130 >
... ... @@ -168,6 +169,7 @@ export default ({ id, setVisible }) =&gt; {
168 169 },
169 170 });
170 171 if (result.result === RESPONSE_CODE.SUCCESS) {
  172 + reloadTable();
171 173 message.success('提交成功');
172 174 }
173 175 return true;
... ...
src/pages/Invoice/InvoiceRecord/index.tsx
... ... @@ -12,7 +12,8 @@ import {
12 12 import { excelExport } from '@/services/exportRequest';
13 13 import { enumToProTableEnumValue, enumToSelect } from '@/utils';
14 14 import { ActionType, ModalForm, ProTable } from '@ant-design/pro-components';
15   -import { Button, Divider, Space, Tooltip, message } from 'antd';
  15 +import { Button, Divider, Space, Table, Tooltip, message } from 'antd';
  16 +import axios from 'axios';
16 17 import { useEffect, useRef, useState } from 'react';
17 18  
18 19 const InvoiceRecord = () => {
... ... @@ -49,6 +50,40 @@ const InvoiceRecord = () =&gt; {
49 50 extracted().catch(console.error);
50 51 }, []);
51 52  
  53 + const downloadImportTemplate = async (urls) => {
  54 + messageApi.open({
  55 + type: 'loading',
  56 + content: '下载中',
  57 + duration: 0,
  58 + });
  59 + axios({
  60 + url: '/api/file/directDown',
  61 + method: 'post',
  62 + responseType: 'blob',
  63 + headers: { Authorization: localStorage.getItem('token') },
  64 + data: urls,
  65 + })
  66 + .then((response) => {
  67 + // 创建一个新的 Blob 对象,它包含了服务器响应的数据(即你的 Excel 文件)
  68 + const blob = new Blob([response.data]); // Excel 的 MIME 类型
  69 + const downloadUrl = window.URL.createObjectURL(blob);
  70 + const a = document.createElement('a');
  71 + a.href = downloadUrl;
  72 + a.download = '发票.zip'; // 你可以为文件命名
  73 + document.body.appendChild(a);
  74 + a.click(); // 模拟点击操作来下载文件
  75 + URL.revokeObjectURL(downloadUrl); // 释放掉 blob 对象所占用的内存
  76 + document.body.removeChild(a);
  77 + })
  78 + .catch((error) => {
  79 + // 处理错误
  80 + console.error('下载错误', error);
  81 + })
  82 + .finally(() => {
  83 + messageApi.destroy();
  84 + });
  85 + };
  86 +
52 87 const processedRecordColumns = [
53 88 {
54 89 dataIndex: 'index',
... ... @@ -204,6 +239,7 @@ const InvoiceRecord = () =&gt; {
204 239 },
205 240 {
206 241 title: '开票状态',
  242 + key: 'status',
207 243 valueType: 'select',
208 244 dataIndex: 'status',
209 245 filters: true,
... ... @@ -215,9 +251,9 @@ const InvoiceRecord = () =&gt; {
215 251 },
216 252 },
217 253 {
218   - title: '销售代表',
  254 + title: '申请人',
219 255 valueType: 'select',
220   - dataIndex: 'salesCode',
  256 + dataIndex: 'createByName',
221 257 filters: true,
222 258 onFilter: true,
223 259 hideInTable: true,
... ... @@ -400,6 +436,32 @@ const InvoiceRecord = () =&gt; {
400 436 listsHeight: 400,
401 437 },
402 438 }}
  439 + rowSelection={{
  440 + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom
  441 + // 注释该行则默认不显示下拉选项
  442 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  443 + alwaysShowAlert: true,
  444 + }}
  445 + tableAlertOptionRender={({ selectedRowKeys, selectedRows }) => {
  446 + console.log(selectedRows);
  447 + console.log(selectedRowKeys);
  448 + return (
  449 + <Space size={16}>
  450 + <Button
  451 + type={'primary'}
  452 + onClick={() => {
  453 + const urls = selectedRows.map((item) => {
  454 + return item.invoiceAddress;
  455 + });
  456 + downloadImportTemplate(urls);
  457 + }}
  458 + disabled={selectedRowKeys.length === 0}
  459 + >
  460 + 下载发票
  461 + </Button>
  462 + </Space>
  463 + );
  464 + }}
403 465 form={{}}
404 466 dateFormatter="string"
405 467 headerTitle="待开票列表"
... ... @@ -412,6 +474,9 @@ const InvoiceRecord = () =&gt; {
412 474 key="detail"
413 475 id={invoiceRecord.id}
414 476 setVisible={setInvoiceRecordDetailVisible}
  477 + reloadTable={() => {
  478 + processedRecordRef?.current?.reload();
  479 + }}
415 480 />
416 481 ) : (
417 482 ''
... ...
src/pages/Invoice/constant.tsx
... ... @@ -93,6 +93,7 @@ export const INVOICE_COLUMNS = [
93 93 title: '金额',
94 94 dataIndex: 'money',
95 95 valueType: 'money',
  96 + hideInTable: true,
96 97 width: 100,
97 98 },
98 99 {
... ... @@ -131,6 +132,7 @@ export const INVOICE_COLUMNS = [
131 132 title: '备注',
132 133 dataIndex: 'notes',
133 134 valueType: 'text',
  135 + hideInSearch: true,
134 136 width: 250,
135 137 },
136 138 ];
... ...
src/pages/Invoice/waitProcessRecord/components/InvoiceRecordDetailModal.tsx deleted 100644 → 0
1   -import { RESPONSE_CODE } from '@/constants/enum';
2   -import InvoiceDetailTable from '@/pages/Invoice/waitProcessRecord/components/InvoiceDetailTable';
3   -import {
4   - postServiceConstGetPayeeEnum,
5   - postServiceConstInvoiceType,
6   - postServiceConstInvoicingType,
7   - postServiceInvoiceGetInvoiceRecord,
8   - postServiceInvoiceModifyRecord,
9   -} from '@/services';
10   -import { enumToSelect } from '@/utils';
11   -import {
12   - ModalForm,
13   - ProCard,
14   - ProForm,
15   - ProFormInstance,
16   - ProFormList,
17   - ProFormSelect,
18   - ProFormText,
19   - ProFormTextArea,
20   -} from '@ant-design/pro-components';
21   -import { Button, Divider, Form, Space, message } from 'antd';
22   -import { useEffect, useRef, useState } from 'react';
23   -
24   -export default ({ id, setVisible }) => {
25   - const [readOnly, setReadOnly] = useState(true);
26   - const [detailTableData, setDetailTableData] = useState([]);
27   - const [payees, setPayees] = useState([]);
28   - const [payeeNameOptions, setPayeeNameOptions] = useState([]);
29   - const formRef = useRef<ProFormInstance>();
30   - const [form] = Form.useForm();
31   -
32   - useEffect(() => {
33   - console.log('id' + id);
34   - const getPayees = async () => {
35   - let res = await postServiceConstGetPayeeEnum();
36   - setPayees(res.data);
37   - let payeeNameOptions = res.data.map((item) => {
38   - return {
39   - label: item.payeeName,
40   - value: item.payeeName,
41   - };
42   - });
43   - setPayeeNameOptions(payeeNameOptions);
44   - };
45   - getPayees();
46   - }, []);
47   - const getRecord = async (id) => {
48   - let ret = await postServiceInvoiceGetInvoiceRecord({
49   - query: {
50   - id: id,
51   - },
52   - });
53   - console.log(ret.data);
54   - const updatedInvoiceDetails = ret.data.invoiceDetails?.map(
55   - (item, index) => ({
56   - ...item, // 保留原有属性
57   - tid: index + 1, // 添加tid属性,这里以T开头,后面跟索引+1,仅作示例,实际可根据需求生成tid
58   - }),
59   - );
60   - setDetailTableData(updatedInvoiceDetails);
61   - };
62   - useEffect(() => {
63   - getRecord(id);
64   - }, []);
65   -
66   - const updateDetails = (values) => {
67   - setDetailTableData(values);
68   - };
69   - return (
70   - <>
71   - <Space>
72   - <ModalForm
73   - open
74   - title="发票详情"
75   - formRef={formRef}
76   - request={async () => {
77   - let ret = await postServiceInvoiceGetInvoiceRecord({
78   - query: {
79   - id: id,
80   - },
81   - });
82   - const data = ret.data;
83   - const orderIdMap = data.orderIdMap;
84   - const orderIdList = [];
85   -
86   - // 使用Object.entries()遍历属性
87   - Object.entries(orderIdMap).forEach(([key, value]) => {
88   - const orderId = {
89   - mainId: key,
90   - subIds: value,
91   - };
92   - orderIdList.push(orderId);
93   - });
94   - return {
95   - ...data,
96   - orderIdList: orderIdList,
97   - };
98   - }}
99   - submitter={{
100   - render: () => {
101   - return [
102   - <Button
103   - type={readOnly ? 'primary' : 'default'}
104   - key="ok"
105   - onClick={() => {
106   - setReadOnly(!readOnly);
107   - }}
108   - >
109   - {readOnly ? '编辑' : '取消编辑'}
110   - </Button>,
111   - <>
112   - {!readOnly && (
113   - <Button
114   - type="primary"
115   - key="submit"
116   - onClick={async () => {
117   - const result = await postServiceInvoiceModifyRecord({
118   - data: {
119   - ...form.getFieldsValue(),
120   - invoiceDetails: [...detailTableData],
121   - },
122   - });
123   - if (result.result === RESPONSE_CODE.SUCCESS) {
124   - message.success('提交成功');
125   - }
126   - setVisible(false);
127   - return true;
128   - }}
129   - >
130   - 提交
131   - </Button>
132   - )}
133   - </>,
134   - /*<Button
135   - type={'default'}
136   - key="ok"
137   - onClick={() => {
138   - setVisible(false)
139   - }}
140   - >
141   - 取消
142   - </Button>,*/
143   - ];
144   - },
145   - }}
146   - width={1200}
147   - form={form}
148   - autoFocusFirstInput
149   - modalProps={{
150   - destroyOnClose: true,
151   - onCancel: () => {
152   - setVisible(false);
153   - },
154   - }}
155   - grid={true}
156   - layout="horizontal"
157   - rowProps={{
158   - gutter: [0, 0],
159   - }}
160   - submitTimeout={2000}
161   - onFinish={async (values) => {
162   - const result = await postServiceInvoiceModifyRecord({
163   - data: {
164   - ...values,
165   - invoiceDetails: {
166   - ...detailTableData,
167   - },
168   - },
169   - });
170   - if (result.result === RESPONSE_CODE.SUCCESS) {
171   - message.success('提交成功');
172   - }
173   - return true;
174   - }}
175   - >
176   - <ProCard
177   - title="基础信息"
178   - bordered
179   - //
180   - headStyle={{}}
181   - headerBordered
182   - size={'small'}
183   - >
184   - <ProForm.Group>
185   - <ProFormText
186   - readonly
187   - name="id"
188   - label="订单批号"
189   - colProps={{
190   - span: 5,
191   - }}
192   - tooltip="最长为 24 位"
193   - placeholder="请输入名称"
194   - />
195   -
196   - <ProFormText
197   - readonly
198   - width="md"
199   - colProps={{
200   - span: 5,
201   - }}
202   - name="createByName"
203   - label="销售代表"
204   - placeholder="请输入名称"
205   - />
206   - <ProFormText
207   - readonly
208   - width="md"
209   - colProps={{
210   - span: 5,
211   - }}
212   - name="createTime"
213   - label="申请时间"
214   - placeholder="请输入名称"
215   - />
216   - <ProFormSelect
217   - name="type"
218   - label="发票类型"
219   - colProps={{
220   - span: 5,
221   - }}
222   - readonly={readOnly}
223   - request={async () => {
224   - let invoiceTypeRet = await postServiceConstInvoiceType();
225   - return enumToSelect(invoiceTypeRet.data);
226   - }}
227   - placeholder="Please select a country"
228   - rules={[
229   - { required: true, message: 'Please select your country!' },
230   - ]}
231   - />
232   - <ProFormSelect
233   - name="invoicingType"
234   - readonly={readOnly}
235   - label="开具类型"
236   - colProps={{
237   - span: 4,
238   - }}
239   - request={async () => {
240   - let invoicingTypeRet = await postServiceConstInvoicingType();
241   - let options = enumToSelect(invoicingTypeRet.data);
242   - return options;
243   - }}
244   - placeholder="Please select a country"
245   - rules={[
246   - { required: true, message: 'Please select your country!' },
247   - ]}
248   - />
249   - <ProFormList
250   - label="订单号"
251   - name="orderIdList"
252   - creatorButtonProps={false}
253   - itemRender={({}, { record }) => {
254   - console.log('record' + JSON.stringify(record));
255   - return (
256   - <Space>
257   - <Button
258   - key={record.mainId}
259   - className="pl-1 pr-0"
260   - type="link"
261   - target="_blank"
262   - href={'/order?id=' + record.mainId}
263   - >
264   - {record.mainId}
265   - </Button>
266   - (
267   - {record.subIds.map((item) => {
268   - return (
269   - <Button
270   - key={item}
271   - className="pl-1 pr-0"
272   - type="link"
273   - target="_blank"
274   - href={'/order?subOrderId=' + item}
275   - >
276   - {item}
277   - </Button>
278   - );
279   - })}
280   - )
281   - <Divider type="vertical" />
282   - </Space>
283   - );
284   - }}
285   - >
286   - <ProFormText allowClear={false} width="xs" name={['name']} />
287   - </ProFormList>
288   - </ProForm.Group>
289   - </ProCard>
290   - <hr />
291   - <ProCard title="购方信息" bordered headerBordered size={'small'}>
292   - <ProForm.Group>
293   - <ProFormText
294   - readonly={readOnly}
295   - width="md"
296   - colProps={{
297   - span: 8,
298   - }}
299   - name="partyAName"
300   - label="购方名称"
301   - placeholder="请输入名称"
302   - />
303   - <ProFormText
304   - readonly={readOnly}
305   - width="md"
306   - colProps={{
307   - span: 8,
308   - }}
309   - name="partyATaxid"
310   - label="购方税号"
311   - placeholder="请输入名称"
312   - />
313   - <ProFormText
314   - readonly={readOnly}
315   - width="md"
316   - colProps={{
317   - span: 8,
318   - }}
319   - label="开户银行"
320   - name={'partyAOpenBank'}
321   - placeholder="请输入名称"
322   - />
323   - <ProFormText
324   - readonly={readOnly}
325   - width="md"
326   - colProps={{
327   - span: 8,
328   - }}
329   - name="partyABankAccount"
330   - label="银行账号"
331   - placeholder="请输入名称"
332   - />
333   - <ProFormText
334   - readonly={readOnly}
335   - width="md"
336   - colProps={{
337   - span: 8,
338   - }}
339   - name="partyAAddress"
340   - label="购方地址"
341   - placeholder="请输入名称"
342   - />
343   - <ProFormText
344   - readonly={readOnly}
345   - width="md"
346   - colProps={{
347   - span: 8,
348   - }}
349   - name="partyAPhoneNumber"
350   - label="电话"
351   - placeholder="请输入名称"
352   - />
353   - </ProForm.Group>
354   - </ProCard>
355   - <hr />
356   - <ProCard title="销方信息" bordered headerBordered size={'small'}>
357   - <ProForm.Group>
358   - <ProFormSelect
359   - readonly={readOnly}
360   - width="md"
361   - name="partyBName"
362   - options={payeeNameOptions}
363   - onChange={(value: any) => {
364   - let payee = payees.find((item: any) => {
365   - return item.payeeName === value;
366   - });
367   - console.log(JSON.stringify(payee));
368   - form.setFieldsValue({
369   - partyBTaxid: payee.taxId,
370   - partyBBankAccount: payee.bankAccount,
371   - partyBOpenBank: payee.openBank,
372   - partyBAddress: payee.address,
373   - partyBPhoneNumber: payee.phoneNumber,
374   - });
375   - }}
376   - label="销方名称"
377   - colProps={{
378   - span: 8,
379   - }}
380   - placeholder="请输入名称"
381   - />
382   -
383   - <ProFormText
384   - readonly
385   - width="md"
386   - name="partyBTaxid"
387   - label="销方税号"
388   - colProps={{
389   - span: 8,
390   - }}
391   - placeholder="请输入名称"
392   - />
393   - <ProFormText
394   - readonly
395   - width="md"
396   - name="partyBOpenBank"
397   - label="开户银行"
398   - colProps={{
399   - span: 8,
400   - }}
401   - placeholder="请输入名称"
402   - />
403   - <ProFormText
404   - readonly
405   - width="md"
406   - name="partyBBankAccount"
407   - label="银行账号"
408   - colProps={{
409   - span: 8,
410   - }}
411   - placeholder="请输入名称"
412   - />
413   - <ProFormText
414   - readonly
415   - width="md"
416   - colProps={{
417   - span: 8,
418   - }}
419   - name="partyBAddress"
420   - label="销方地址"
421   - placeholder="请输入名称"
422   - />
423   - <ProFormText
424   - readonly
425   - width="md"
426   - colProps={{
427   - span: 8,
428   - }}
429   - name="partyBPhoneNumber"
430   - label="电话"
431   - placeholder="请输入名称"
432   - />
433   - </ProForm.Group>
434   - </ProCard>
435   - <hr />
436   - <ProCard title="发票明细" bordered headerBordered size={'small'}>
437   - <InvoiceDetailTable
438   - recordId={id}
439   - details={detailTableData}
440   - updateDetails={updateDetails}
441   - readOnly={readOnly}
442   - />
443   - </ProCard>
444   - <hr />
445   - <ProCard title="备注" bordered headerBordered size={'small'}>
446   - <ProFormTextArea
447   - readonly={readOnly}
448   - name="comment"
449   - placeholder="请输入备注"
450   - />
451   - </ProCard>
452   - </ModalForm>
453   - </Space>
454   - </>
455   - );
456   -};
src/pages/Invoice/waitProcessRecord/components/ManualInvoicingModal.tsx
... ... @@ -38,6 +38,7 @@ export default ({ record }) =&gt; {
38 38 isSuccess: true,
39 39 invoiceRecordId: record.id,
40 40 manual: true,
  41 + invoiceDetailDtoList: record.invoiceDetails,
41 42 },
42 43 });
43 44 if (res.result === RESPONSE_CODE.SUCCESS) {
... ...
src/pages/Invoice/waitProcessRecord/index.tsx
  1 +import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceRecord/components/InvoiceRecordDetailModal';
1 2 import InvoiceModal from '@/pages/Invoice/waitProcessRecord/components/InvoiceModal';
2   -import InvoiceRecordDetailModal from '@/pages/Invoice/waitProcessRecord/components/InvoiceRecordDetailModal';
3 3 import InvoicingModal from '@/pages/Invoice/waitProcessRecord/components/InvoicingModal';
4 4 import ManualInvoicingModal from '@/pages/Invoice/waitProcessRecord/components/ManualInvoicingModal';
5 5 import { PAYEE_OPTIONS } from '@/pages/Order/constant';
... ... @@ -120,7 +120,7 @@ const InvoiceRecord = () =&gt; {
120 120 hideInTable: true,
121 121 },
122 122 {
123   - title: '销售代表',
  123 + title: '申请人',
124 124 valueType: 'text',
125 125 hideInSearch: true,
126 126 ellipsis: true,
... ... @@ -258,6 +258,7 @@ const InvoiceRecord = () =&gt; {
258 258 {
259 259 title: '开票状态',
260 260 valueType: 'select',
  261 + key: 'status',
261 262 dataIndex: 'status',
262 263 filters: true,
263 264 onFilter: true,
... ... @@ -383,7 +384,6 @@ const InvoiceRecord = () =&gt; {
383 384 'WAITING_FOR_INVOICING',
384 385 'AUDITING',
385 386 'AUDITING_NOT_PASSED',
386   - 'CANCELED',
387 387 ],
388 388 needBuildDetails: true,
389 389 needBuildSubOrders: true,
... ... @@ -423,6 +423,9 @@ const InvoiceRecord = () =&gt; {
423 423 key="detail"
424 424 id={invoiceRecord.id}
425 425 setVisible={setInvoiceRecordDetailVisible}
  426 + reloadTable={() => {
  427 + waitDealrecordActionRef?.current?.reload();
  428 + }}
426 429 />
427 430 ) : (
428 431 ''
... ...
src/pages/Invoice/whiteList/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import { RESPONSE_CODE } from '@/constants/enum';
  3 +import {
  4 + postOldInvoicingWhiteListBatchAdd,
  5 + postOldInvoicingWhiteListPage,
  6 + postOldInvoicingWhiteListRemove,
  7 +} from '@/services';
  8 +import { PlusOutlined } from '@ant-design/icons';
  9 +import {
  10 + ActionType,
  11 + ModalForm,
  12 + ProColumns,
  13 + ProFormTextArea,
  14 + ProTable,
  15 +} from '@ant-design/pro-components';
  16 +import { Button, message } from 'antd';
  17 +import { useRef } from 'react';
  18 +export const waitTimePromise = async (time: number = 100) => {
  19 + return new Promise((resolve) => {
  20 + setTimeout(() => {
  21 + resolve(true);
  22 + }, time);
  23 + });
  24 +};
  25 +
  26 +export const waitTime = async (time: number = 100) => {
  27 + await waitTimePromise(time);
  28 +};
  29 +
  30 +const columns: ProColumns[] = [
  31 + {
  32 + dataIndex: 'index',
  33 + valueType: 'indexBorder',
  34 + width: 48,
  35 + },
  36 + {
  37 + title: '订单号',
  38 + dataIndex: 'mainOrderId',
  39 + ellipsis: true,
  40 + },
  41 + {
  42 + title: '添加时间',
  43 + dataIndex: 'createTime',
  44 + hideInSearch: true,
  45 + ellipsis: true,
  46 + },
  47 + {
  48 + title: '添加人',
  49 + dataIndex: 'createByName',
  50 + hideInSearch: true,
  51 + ellipsis: true,
  52 + },
  53 + {
  54 + title: '创建时间',
  55 + valueType: 'dateTimeRange',
  56 + hideInTable: true,
  57 + search: {
  58 + transform: (value) => {
  59 + if (value) {
  60 + return {
  61 + createTimeGe: value[0],
  62 + createTimeLe: value[1],
  63 + };
  64 + }
  65 + },
  66 + },
  67 + },
  68 + {
  69 + title: '操作',
  70 + valueType: 'option',
  71 + key: 'option',
  72 + render: (text, record, _, action) => [
  73 + <ButtonConfirm
  74 + key="delete"
  75 + className="p-0"
  76 + title={'确认删除此项吗?'}
  77 + text="删除"
  78 + onConfirm={async () => {
  79 + await postOldInvoicingWhiteListRemove({
  80 + query: {
  81 + mainOrderId: record.mainOrderId,
  82 + },
  83 + });
  84 + action?.reload();
  85 + }}
  86 + />,
  87 + ],
  88 + },
  89 +];
  90 +
  91 +export default () => {
  92 + const actionRef = useRef<ActionType>();
  93 + return (
  94 + <ProTable
  95 + columns={columns}
  96 + actionRef={actionRef}
  97 + cardBordered
  98 + request={async (params) => {
  99 + const res = await postOldInvoicingWhiteListPage({
  100 + data: params,
  101 + });
  102 + return res.data;
  103 + }}
  104 + rowKey="id"
  105 + search={{
  106 + labelWidth: 'auto',
  107 + }}
  108 + options={{
  109 + setting: {
  110 + listsHeight: 400,
  111 + },
  112 + }}
  113 + pagination={{
  114 + pageSize: 5,
  115 + onChange: (page) => console.log(page),
  116 + }}
  117 + dateFormatter="string"
  118 + headerTitle="白名单"
  119 + toolBarRender={() => [
  120 + <ModalForm
  121 + key="add"
  122 + title="添加"
  123 + trigger={
  124 + <Button type="primary">
  125 + <PlusOutlined />
  126 + 添加
  127 + </Button>
  128 + }
  129 + autoFocusFirstInput
  130 + modalProps={{
  131 + destroyOnClose: true,
  132 + onCancel: () => console.log('run'),
  133 + }}
  134 + submitTimeout={2000}
  135 + onFinish={async (values) => {
  136 + const res = await postOldInvoicingWhiteListBatchAdd({
  137 + data: values,
  138 + });
  139 + if (res.result === RESPONSE_CODE.SUCCESS) {
  140 + actionRef.current?.reload();
  141 + message.success('添加成功');
  142 + return true;
  143 + }
  144 + }}
  145 + >
  146 + <ProFormTextArea
  147 + name="orderIdsText"
  148 + label="订单号"
  149 + placeholder="请输入订单号,多个用逗号分割"
  150 + rules={[
  151 + {
  152 + required: true,
  153 + message: '请输入订单号,多个用逗号分割',
  154 + },
  155 + ]}
  156 + ></ProFormTextArea>
  157 + </ModalForm>,
  158 + ]}
  159 + />
  160 + );
  161 +};
... ...
src/pages/Order/components/InvoicingDrawerForm.tsx
... ... @@ -123,19 +123,6 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
123 123 const openBank = form.getFieldValue('openBank');
124 124 const bankAccount = form.getFieldValue('bankAccount');
125 125 const bankCode = form.getFieldValue('bankCode');
126   - console.log(
127   - '开户名称: ' +
128   - partyBName +
129   - '\n' +
130   - '开户行: ' +
131   - openBank +
132   - '\n' +
133   - '账号: ' +
134   - bankAccount +
135   - '\n' +
136   - '银行联行号: ' +
137   - bankCode,
138   - );
139 126 return {
140 127 ...form.getFieldsValue(),
141 128 totalPrice: totalPrice,
... ... @@ -205,7 +192,6 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
205 192 let res = await postServiceInvoiceWaitReissueInvoices({
206 193 data: reissueIds,
207 194 });
208   - console.log(res.data);
209 195 return enum2ReverseSelect(res.data);
210 196 }}
211 197 />
... ... @@ -289,15 +275,6 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
289 275 label="联系人"
290 276 rules={[{ required: true, message: '请选择银行联行号!' }]}
291 277 />
292   - <ProFormMoney
293   - label="开票金额"
294   - name="price"
295   - locale="zh-CN"
296   - rules={[{ required: true, message: '请填写开票金额!' }]}
297   - initialValue={dataListCopy.reduce((accumulator, currentValue) => {
298   - return accumulator + currentValue.subOrderPayment;
299   - }, 0)}
300   - />
301 278 <ProFormSelect
302 279 name="invoicingType"
303 280 label="开具类型"
... ... @@ -388,23 +365,19 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
388 365 placeholder="请选择是否加急"
389 366 rules={[{ required: true, message: '请选择是否加急!' }]}
390 367 />
  368 + <ProFormMoney
  369 + label="开票金额"
  370 + name="price"
  371 + locale="zh-CN"
  372 + disabled={true}
  373 + rules={[{ required: true, message: '请填写开票金额!' }]}
  374 + initialValue={dataListCopy.reduce((accumulator, currentValue) => {
  375 + return accumulator + currentValue.subOrderPayment;
  376 + }, 0)}
  377 + />
391 378 <ProFormList
392 379 name="invoiceDetails"
393 380 label="开票明细"
394   - /*initialValue={dataListCopy.map((item) => {
395   - console.log("item"+JSON.stringify(item));
396   - return {
397   - productName: item.productName,
398   - projectName: item.projectName,
399   - subOrderId: item.id,
400   - /!*projectName: item.productName,*!/
401   - specification: item.parameters,
402   - unit: item.unit,
403   - quantity: item.quantity,
404   - price: item.productPrice,
405   - totalPrice: item.subOrderPayment,
406   - };
407   - })}*/
408 381 rules={[
409 382 {
410 383 required: true,
... ... @@ -488,9 +461,6 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
488 461 option.productAndServiceCatagoryAbbreviation +
489 462 '*' +
490 463 option.name;
491   - console.log(
492   - 'copyList' + JSON.stringify(listMeta.record.projectName),
493   - );
494 464 form.setFieldValue('invoiceDetails', copyList);
495 465 }}
496 466 debounceTime={1000}
... ... @@ -575,6 +545,18 @@ export default ({ dataList, setVisible, mainOrder, onClose }) =&gt; {
575 545 key={'totalPrice' + listMeta.index}
576 546 label="金额"
577 547 name="totalPrice"
  548 + onChange={() => {
  549 + const invoiceDetails = form.getFieldValue('invoiceDetails');
  550 + console.log('invoiceDetails', invoiceDetails);
  551 + const totalPrice = invoiceDetails.reduce(
  552 + (accumulator, currentValue) => {
  553 + return FloatAdd(accumulator, currentValue.totalPrice);
  554 + },
  555 + 0,
  556 + );
  557 + console.log('totalPrice', totalPrice);
  558 + form.setFieldValue('price', totalPrice);
  559 + }}
578 560 rules={[
579 561 {
580 562 validator: (_, value) => {
... ...
src/pages/Order/components/OrderDrawer.tsx
... ... @@ -1215,6 +1215,37 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1215 1215 placeholder="请输入课题组"
1216 1216 rules={[{ required: true, message: '课题组必填' }]}
1217 1217 />
  1218 + {/*<ProFormSelect
  1219 + key={'institutionContactName'}
  1220 + width="md"
  1221 + showSearch
  1222 + name="institutionContactName"
  1223 + rules={[{ required: true, message: '请输入课题组名称!' }]}
  1224 + request={async (value) => {
  1225 + const keywords = value.keyWords;
  1226 + const res = await postResearchGroupsNameSet({
  1227 + data: {
  1228 + groupName: keywords,
  1229 + },
  1230 + });
  1231 + let options = res?.data?.map((c: any) => {
  1232 + return {
  1233 + label: c,
  1234 + value: c,
  1235 + key: c,
  1236 + };
  1237 + });
  1238 + return options;
  1239 + }}
  1240 + fieldProps={{
  1241 + filterOption() {
  1242 + return true;
  1243 + },
  1244 + }}
  1245 + debounceTime={1000}
  1246 + label="课题组名称"
  1247 + placeholder="请输入名称"
  1248 + />*/}
1218 1249 <div
1219 1250 style={{
1220 1251 display: 'flex',
... ...
src/pages/procure/components/AddDrawer.tsx renamed to src/pages/procure/components/AddOrModifyDrawer.tsx
1 1 import { RESPONSE_CODE } from '@/constants/enum';
2 2 import {
3 3 postOrderErpOrderStagesUpload,
4   - postProcureReturnBillAdd,
  4 + postProcureReturnBillAddOrModify,
5 5 postServiceConstStores,
6 6 } from '@/services';
7 7 import { enumToSelect } from '@/utils';
... ... @@ -14,44 +14,76 @@ import {
14 14 } from '@ant-design/pro-components';
15 15 import { Button, Form, message } from 'antd';
16 16 import { RcFile } from 'antd/es/upload';
17   -
18   -export default ({ reloadTable }) => {
  17 +export default ({ data, type, reloadTable }) => {
19 18 const [form] = Form.useForm();
  19 + const onfinish = async (values) => {
  20 + const res = await postProcureReturnBillAddOrModify({
  21 + data: values,
  22 + });
  23 + if (res.result === RESPONSE_CODE.SUCCESS) {
  24 + message.success('新增成功');
  25 + reloadTable();
  26 + return true;
  27 + }
  28 + // 不返回不会关闭弹框
  29 + };
  30 + const optType = {
  31 + add: {
  32 + readOnly: false,
  33 + title: '新增采购退货单',
  34 + button: (
  35 + <Button size={'small'} type="primary">
  36 + 新增
  37 + </Button>
  38 + ),
  39 + onFinish: onfinish,
  40 + },
  41 + modify: {
  42 + readOnly: false,
  43 + title: '修改采购退货单',
  44 + button: (
  45 + <Button size={'small'} type="link">
  46 + 编辑
  47 + </Button>
  48 + ),
  49 + onFinish: onfinish,
  50 + },
  51 + detail: {
  52 + readOnly: true,
  53 + title: '查看采购退货单',
  54 + button: (
  55 + <Button size={'small'} type="link">
  56 + 查看
  57 + </Button>
  58 + ),
  59 + onFinish: () => {},
  60 + },
  61 + };
20 62 return (
21 63 <DrawerForm
22   - title="新增采购退货单"
  64 + title={optType[type].title}
23 65 resize={{
24 66 onResize() {
25 67 console.log('resize!');
26 68 },
27 69 maxWidth: window.innerWidth * 0.8,
28   - minWidth: 300,
  70 + minWidth: 400,
29 71 }}
30 72 form={form}
31   - trigger={<Button type="primary">新增</Button>}
  73 + trigger={optType[type].button}
32 74 autoFocusFirstInput
33 75 drawerProps={{
34 76 destroyOnClose: true,
35 77 }}
36 78 submitTimeout={2000}
37   - onFinish={async (values) => {
38   - const res = await postProcureReturnBillAdd({
39   - data: values,
40   - });
41   - if (res.result === RESPONSE_CODE.SUCCESS) {
42   - message.success('新增成功');
43   - return true;
44   - }
45   - message.success('提交成功');
46   - reloadTable();
47   - // 不返回不会关闭弹框
48   - return true;
49   - }}
  79 + onFinish={optType[type].onFinish}
50 80 >
51 81 <ProFormText
52 82 name="consignee"
53 83 label="收货人"
54 84 placeholder="请输入收货人"
  85 + readonly={optType[type].readOnly}
  86 + initialValue={data?.consignee}
55 87 rules={[
56 88 {
57 89 required: true,
... ... @@ -63,6 +95,8 @@ export default ({ reloadTable }) =&gt; {
63 95 name="phoneNumber"
64 96 label="联系电话"
65 97 placeholder="请输入联系电话"
  98 + initialValue={data?.phoneNumber}
  99 + readonly={optType[type].readOnly}
66 100 rules={[
67 101 {
68 102 required: true,
... ... @@ -74,6 +108,8 @@ export default ({ reloadTable }) =&gt; {
74 108 name="address"
75 109 label="收货地址"
76 110 placeholder="请输入收货地址"
  111 + initialValue={data?.address}
  112 + readonly={optType[type].readOnly}
77 113 rules={[
78 114 {
79 115 required: true,
... ... @@ -85,6 +121,8 @@ export default ({ reloadTable }) =&gt; {
85 121 name="productDetail"
86 122 label="产品明细"
87 123 placeholder="请输入产品明细"
  124 + initialValue={data?.productDetail}
  125 + readonly={optType[type].readOnly}
88 126 rules={[
89 127 {
90 128 required: true,
... ... @@ -94,6 +132,11 @@ export default ({ reloadTable }) =&gt; {
94 132 ></ProFormTextArea>
95 133 <ProFormSelect
96 134 name="sendStoreCode"
  135 + readonly={optType[type].readOnly}
  136 + fieldProps={{
  137 + labelInValue: false,
  138 + }}
  139 + initialValue={data ? data?.sendStoreCode + '' : null}
97 140 label="发货仓库"
98 141 request={async () => {
99 142 const res = await postServiceConstStores();
... ... @@ -109,12 +152,15 @@ export default ({ reloadTable }) =&gt; {
109 152 <ProFormTextArea
110 153 name="notes"
111 154 label="备注"
  155 + initialValue={data?.notes}
  156 + readonly={optType[type].readOnly}
112 157 placeholder="请输入备注"
113 158 ></ProFormTextArea>
114 159 <ProFormUploadDragger
115 160 label="附件"
116 161 name="attachmentsFile"
117 162 action="upload.do"
  163 + hidden={optType[type].readOnly}
118 164 onChange={(info) => {
119 165 const uploadFile = async ({ fileList: newFileList }) => {
120 166 if (newFileList.length > 0) {
... ... @@ -138,7 +184,15 @@ export default ({ reloadTable }) =&gt; {
138 184 }}
139 185 max={1}
140 186 />
141   - <ProFormText name="attachments" hidden></ProFormText>
  187 + <a hidden={!optType[type].readOnly} href={data?.attachments} download>
  188 + 下载附件
  189 + </a>
  190 + <ProFormText
  191 + initialValue={data?.attachments}
  192 + name="attachments"
  193 + hidden
  194 + ></ProFormText>
  195 + <ProFormText initialValue={data?.id} name="id" hidden></ProFormText>
142 196 </DrawerForm>
143 197 );
144 198 };
... ...
src/pages/procure/components/StatusTransitionModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + postProcureReturnBillAudit,
  4 + postProcureReturnBillSend,
  5 +} from '@/services';
  6 +import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
  7 +import { Button, Form, message } from 'antd';
  8 +
  9 +export default ({ type, ids, reloadTable }) => {
  10 + const transitionTypes = {
  11 + audit: {
  12 + title: '审核',
  13 + notesLabel: '驳回原因',
  14 + notesPlaceholder: '请输入驳回原因',
  15 + submitText: '通过',
  16 + resetText: '驳回',
  17 + onfinish: async (values) => {
  18 + const res = await postProcureReturnBillAudit({
  19 + data: {
  20 + ids: ids,
  21 + transitionNotes: values.transitionNotes,
  22 + },
  23 + });
  24 + if (res.result === RESPONSE_CODE.SUCCESS) {
  25 + message.success('操作成功');
  26 + reloadTable();
  27 + return true;
  28 + } else {
  29 + message.error('操作失败');
  30 + }
  31 + },
  32 + },
  33 + send: {
  34 + title: '发货',
  35 + notesLabel: '发货信息',
  36 + notesPlaceholder: '请输入发货信息(如:顺丰快递,SF24070802324)',
  37 + submitText: '发货',
  38 + resetText: '取消',
  39 + onfinish: async (values) => {
  40 + const res = await postProcureReturnBillSend({
  41 + data: {
  42 + ids: ids,
  43 + transitionNotes: values.transitionNotes,
  44 + },
  45 + });
  46 + if (res.result === RESPONSE_CODE.SUCCESS) {
  47 + message.success('操作成功');
  48 + reloadTable();
  49 + return true;
  50 + } else {
  51 + message.error('操作失败');
  52 + }
  53 + },
  54 + },
  55 + };
  56 + const [form] = Form.useForm();
  57 + return (
  58 + <ModalForm
  59 + title={transitionTypes[type].title}
  60 + trigger={
  61 + <Button size={'small'} type="link">
  62 + {transitionTypes[type].title}
  63 + </Button>
  64 + }
  65 + form={form}
  66 + autoFocusFirstInput
  67 + modalProps={{
  68 + destroyOnClose: true,
  69 + onCancel: () => console.log('run'),
  70 + }}
  71 + submitter={{
  72 + searchConfig: {
  73 + submitText: transitionTypes[type].submitText,
  74 + resetText: transitionTypes[type].resetText,
  75 + },
  76 + }}
  77 + onFinish={transitionTypes[type].onfinish}
  78 + >
  79 + <ProFormTextArea
  80 + name="transitionNotes"
  81 + label={transitionTypes[type].notesLabel}
  82 + placeholder={transitionTypes[type].notesPlaceholder}
  83 + />
  84 + </ModalForm>
  85 + );
  86 +};
... ...
src/pages/procure/index.tsx
1   -import AddDrawer from '@/pages/procure/components/AddDrawer';
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + default as AddDrawer,
  4 + default as AddOrModifyDrawer,
  5 +} from '@/pages/procure/components/AddOrModifyDrawer';
  6 +import StatusTransitionModal from '@/pages/procure/components/StatusTransitionModal';
2 7 import {
3 8 postProcureReturnBillPage,
  9 + postProcureReturnBillRemove,
4 10 postServiceConstProcureReturnBills,
5 11 postServiceConstStores,
6 12 } from '@/services';
7 13 import { orderExport } from '@/services/order';
8 14 import { enumToSelect } from '@/utils';
9 15 import type { ActionType, ProColumns } from '@ant-design/pro-components';
10   -import { ProTable, TableDropdown } from '@ant-design/pro-components';
11   -import { Button, message } from 'antd';
  16 +import { ProTable } from '@ant-design/pro-components';
  17 +import { Button, Popconfirm, message } from 'antd';
12 18 import { useRef } from 'react';
  19 +
13 20 export const waitTimePromise = async (time: number = 100) => {
14 21 return new Promise((resolve) => {
15 22 setTimeout(() => {
... ... @@ -22,188 +29,226 @@ export const waitTime = async (time: number = 100) =&gt; {
22 29 await waitTimePromise(time);
23 30 };
24 31  
25   -const columns: ProColumns[] = [
26   - {
27   - title: '订单编号',
28   - width: 120,
29   - dataIndex: 'id',
30   - ellipsis: true,
31   - hideInSearch: true,
32   - },
33   - {
34   - title: '收获人',
35   - width: 120,
36   - dataIndex: 'consignee',
37   - ellipsis: true,
38   - hideInSearch: true,
39   - },
40   - {
41   - title: '联系电话',
42   - width: 120,
43   - dataIndex: 'phoneNumber',
44   - ellipsis: true,
45   - hideInSearch: true,
46   - },
47   - {
48   - title: '收货地址',
49   - width: 120,
50   - dataIndex: 'address',
51   - ellipsis: true,
52   - hideInSearch: true,
53   - },
54   - {
55   - title: '产品明细',
56   - width: 120,
57   - dataIndex: 'productDetail',
58   - ellipsis: true,
59   - hideInSearch: true,
60   - },
61   - {
62   - title: '发货仓库',
63   - width: 120,
64   - dataIndex: 'sendStoreText',
65   - ellipsis: true,
66   - hideInSearch: true,
67   - },
68   - {
69   - title: '创建人',
70   - width: 120,
71   - dataIndex: 'createByName',
72   - ellipsis: true,
73   - hideInSearch: true,
74   - },
75   - {
76   - title: '创建时间',
77   - width: 120,
78   - valueType: 'dateTime',
79   - dataIndex: 'createTime',
80   - ellipsis: true,
81   - hideInSearch: true,
82   - },
83   - {
84   - title: '订单状态',
85   - width: 120,
86   - dataIndex: 'statusText',
87   - ellipsis: true,
88   - hideInSearch: true,
89   - },
90   - {
91   - title: '附件',
92   - width: 120,
93   - dataIndex: 'attachments',
94   - ellipsis: true,
95   - hideInSearch: true,
96   - },
97   - {
98   - title: '备注',
99   - width: 120,
100   - dataIndex: 'notes',
101   - ellipsis: true,
102   - hideInSearch: true,
103   - },
104   - {
105   - title: '发货信息',
106   - width: 120,
107   - dataIndex: 'sendInfo',
108   - ellipsis: true,
109   - hideInSearch: true,
110   - },
111   -
112   - {
113   - title: '订单编号',
114   - width: 120,
115   - dataIndex: 'id',
116   - hideInTable: true,
117   - },
118   - {
119   - title: '收货人',
120   - width: 120,
121   - dataIndex: 'consigneeLike',
122   - hideInTable: true,
123   - },
124   - {
125   - title: '联系电话',
126   - width: 120,
127   - dataIndex: 'phoneNumberLike',
128   - hideInTable: true,
129   - },
130   - {
131   - title: '发货仓库',
132   - width: 120,
133   - dataIndex: 'sendStore',
134   - valueType: 'select',
135   - hideInTable: true,
136   - request: async () => {
137   - const res = await postServiceConstStores();
138   - return enumToSelect(res.data);
139   - },
140   - },
141   - {
142   - title: '订单状态',
143   - width: 120,
144   - dataIndex: 'status',
145   - valueType: 'select',
146   - hideInTable: true,
147   - request: async () => {
148   - const res = await postServiceConstProcureReturnBills();
149   - return enumToSelect(res.data);
150   - },
151   - },
152   - {
153   - title: '创建人',
154   - width: 120,
155   - dataIndex: 'createByNameLike',
156   - hideInTable: true,
157   - },
158   - {
159   - title: '创建时间',
160   - dataIndex: 'createTime',
161   - valueType: 'dateTimeRange',
162   - search: {
163   - transform: (value: any) => ({
164   - createTimeGe: value[0],
165   - createTimeLe: value[1],
166   - }),
167   - },
168   - hideInTable: true,
169   - },
170   - {
171   - title: '操作',
172   - valueType: 'option',
173   - key: 'option',
174   - render: (text, record, _, action) => [
175   - <a
176   - key="editable"
177   - onClick={() => {
178   - action?.startEditable?.(record.id);
179   - }}
180   - >
181   - 编辑
182   - </a>,
183   - <a href={record.url} target="_blank" rel="noopener noreferrer" key="view">
184   - 查看
185   - </a>,
186   - <TableDropdown
187   - key="actionGroup"
188   - onSelect={() => action?.reload()}
189   - menus={[
190   - { key: 'copy', name: '复制' },
191   - { key: 'delete', name: '删除' },
192   - ]}
193   - />,
194   - ],
195   - },
196   -];
197   -
198 32 export default () => {
199 33 const [messageApi, contextHolder] = message.useMessage();
200 34 const actionRef = useRef<ActionType>();
  35 + const reloadTable = () => {
  36 + actionRef.current?.reload();
  37 + };
  38 + const columns: ProColumns[] = [
  39 + {
  40 + title: '订单编号',
  41 + width: 120,
  42 + dataIndex: 'id',
  43 + ellipsis: true,
  44 + hideInSearch: true,
  45 + },
  46 + {
  47 + title: '收货人',
  48 + width: 120,
  49 + dataIndex: 'consignee',
  50 + ellipsis: true,
  51 + hideInSearch: true,
  52 + },
  53 + {
  54 + title: '联系电话',
  55 + width: 120,
  56 + dataIndex: 'phoneNumber',
  57 + ellipsis: true,
  58 + hideInSearch: true,
  59 + },
  60 + {
  61 + title: '收货地址',
  62 + width: 120,
  63 + dataIndex: 'address',
  64 + ellipsis: true,
  65 + hideInSearch: true,
  66 + },
  67 + {
  68 + title: '产品明细',
  69 + width: 120,
  70 + dataIndex: 'productDetail',
  71 + ellipsis: true,
  72 + hideInSearch: true,
  73 + },
  74 + {
  75 + title: '发货仓库',
  76 + width: 120,
  77 + dataIndex: 'sendStoreText',
  78 + ellipsis: true,
  79 + hideInSearch: true,
  80 + },
  81 + {
  82 + title: '创建人',
  83 + width: 120,
  84 + dataIndex: 'createByName',
  85 + ellipsis: true,
  86 + hideInSearch: true,
  87 + },
  88 + {
  89 + title: '创建时间',
  90 + width: 120,
  91 + valueType: 'dateTime',
  92 + dataIndex: 'createTime',
  93 + ellipsis: true,
  94 + hideInSearch: true,
  95 + },
  96 + {
  97 + title: '订单状态',
  98 + width: 120,
  99 + dataIndex: 'statusText',
  100 + ellipsis: true,
  101 + hideInSearch: true,
  102 + },
  103 + {
  104 + title: '附件',
  105 + width: 120,
  106 + dataIndex: 'attachments',
  107 + ellipsis: true,
  108 + hideInSearch: true,
  109 + },
  110 + {
  111 + title: '备注',
  112 + width: 120,
  113 + dataIndex: 'notes',
  114 + ellipsis: true,
  115 + hideInSearch: true,
  116 + },
  117 + {
  118 + title: '发货信息',
  119 + width: 120,
  120 + dataIndex: 'sendInfo',
  121 + ellipsis: true,
  122 + hideInSearch: true,
  123 + },
  124 + {
  125 + title: '订单编号',
  126 + width: 120,
  127 + dataIndex: 'id',
  128 + hideInTable: true,
  129 + },
  130 + {
  131 + title: '收货人',
  132 + width: 120,
  133 + dataIndex: 'consigneeLike',
  134 + hideInTable: true,
  135 + },
  136 + {
  137 + title: '联系电话',
  138 + width: 120,
  139 + dataIndex: 'phoneNumberLike',
  140 + hideInTable: true,
  141 + },
  142 + {
  143 + title: '发货仓库',
  144 + width: 120,
  145 + dataIndex: 'sendStore',
  146 + valueType: 'select',
  147 + hideInTable: true,
  148 + request: async () => {
  149 + const res = await postServiceConstStores();
  150 + return enumToSelect(res.data);
  151 + },
  152 + },
  153 + {
  154 + title: '订单状态',
  155 + width: 120,
  156 + dataIndex: 'status',
  157 + valueType: 'select',
  158 + hideInTable: true,
  159 + request: async () => {
  160 + const res = await postServiceConstProcureReturnBills();
  161 + return enumToSelect(res.data);
  162 + },
  163 + },
  164 + {
  165 + title: '创建人',
  166 + width: 120,
  167 + dataIndex: 'createByNameLike',
  168 + hideInTable: true,
  169 + },
  170 + {
  171 + title: '创建时间',
  172 + dataIndex: 'createTime',
  173 + valueType: 'dateTimeRange',
  174 + search: {
  175 + transform: (value: any) => ({
  176 + createTimeGe: value[0],
  177 + createTimeLe: value[1],
  178 + }),
  179 + },
  180 + hideInTable: true,
  181 + },
  182 + {
  183 + title: '操作',
  184 + valueType: 'option',
  185 + key: 'option',
  186 + width: 220,
  187 + render: (text, record, _, action) => [
  188 + <>
  189 + {record.paths?.includes('AUDIT') && (
  190 + <StatusTransitionModal
  191 + type="audit"
  192 + ids={[record.id]}
  193 + reloadTable={reloadTable}
  194 + />
  195 + )}
  196 + </>,
  197 + <>
  198 + {record.paths?.includes('SEND') && (
  199 + <StatusTransitionModal
  200 + type="send"
  201 + ids={[record.id]}
  202 + reloadTable={reloadTable}
  203 + />
  204 + )}
  205 + </>,
  206 + <AddOrModifyDrawer
  207 + key={'detail'}
  208 + reloadTable={reloadTable}
  209 + data={record}
  210 + type={'detail'}
  211 + />,
  212 + <AddOrModifyDrawer
  213 + key={'add'}
  214 + reloadTable={() => {
  215 + action?.reload();
  216 + }}
  217 + data={record}
  218 + type={'modify'}
  219 + />,
  220 + <Popconfirm
  221 + key="delete"
  222 + title="删除单据"
  223 + description="确定删除单据?"
  224 + onConfirm={async () => {
  225 + const res = await postProcureReturnBillRemove({
  226 + query: {
  227 + id: record.id,
  228 + },
  229 + });
  230 + if (res.result === RESPONSE_CODE.SUCCESS) {
  231 + message.success('删除成功');
  232 + action?.reload();
  233 + }
  234 + }}
  235 + okText="确认"
  236 + cancelText="取消"
  237 + >
  238 + <Button size={'small'} type="link" danger>
  239 + 删除
  240 + </Button>
  241 + </Popconfirm>,
  242 + ],
  243 + },
  244 + ];
201 245 return (
202 246 <>
203 247 <ProTable
204 248 columns={columns}
205 249 actionRef={actionRef}
206 250 cardBordered
  251 + size={'small'}
207 252 request={async (params, sort, filter) => {
208 253 console.log(sort, filter);
209 254 const res = await postProcureReturnBillPage({
... ... @@ -240,7 +285,7 @@ export default () =&gt; {
240 285 duration: 0,
241 286 });
242 287 orderExport(
243   - '/api/admin/client/exportClients',
  288 + '/api/procureReturnBill/export',
244 289 '客户信息.xlsx',
245 290 'POST',
246 291 values,
... ... @@ -281,9 +326,9 @@ export default () =&gt; {
281 326 toolBarRender={() => [
282 327 <AddDrawer
283 328 key="add"
284   - reloadTable={() => {
285   - actionRef.current?.reload();
286   - }}
  329 + data={null}
  330 + type="add"
  331 + reloadTable={reloadTable}
287 332 />,
288 333 ]}
289 334 />
... ...
src/services/definition.ts
... ... @@ -203,6 +203,7 @@ export interface AdminClientDto {
203 203 }
204 204  
205 205 export interface AdminDeptQueryVO {
  206 + createByName?: string;
206 207 /** @format int32 */
207 208 current?: number;
208 209 /** @format int32 */
... ... @@ -247,6 +248,7 @@ export interface AdminInvoicingAccountDTO {
247 248 }
248 249  
249 250 export interface AdminJobQueryVO {
  251 + createByName?: string;
250 252 /** @format int32 */
251 253 current?: number;
252 254 /** @format int32 */
... ... @@ -277,6 +279,7 @@ export interface AdminMenuQueryVO {
277 279 /** @format int32 */
278 280 cache?: number;
279 281 component?: string;
  282 + createByName?: string;
280 283 /** @format int32 */
281 284 current?: number;
282 285 /** @format int32 */
... ... @@ -326,6 +329,7 @@ export interface AdminMenuVO {
326 329 }
327 330  
328 331 export interface AdminRoleQueryVO {
  332 + createByName?: string;
329 333 /** @format int32 */
330 334 current?: number;
331 335 dataScope?: string;
... ... @@ -358,6 +362,7 @@ export interface AdminRoleVO {
358 362 }
359 363  
360 364 export interface AdminUserLoginByPhoneVO {
  365 + createByName?: string;
361 366 /** @format int32 */
362 367 current?: number;
363 368 /** @format int32 */
... ... @@ -373,6 +378,7 @@ export interface AdminUserLoginByPhoneVO {
373 378 }
374 379  
375 380 export interface AdminUserLoginByPwdVO {
  381 + createByName?: string;
376 382 /** @format int32 */
377 383 current?: number;
378 384 /** @format int32 */
... ... @@ -391,6 +397,7 @@ export interface AdminUserLoginByPwdVO {
391 397  
392 398 export interface AdminUserModifyPwdVO {
393 399 confirmPassword?: string;
  400 + createByName?: string;
394 401 /** @format int32 */
395 402 current?: number;
396 403 /** @format int32 */
... ... @@ -407,6 +414,7 @@ export interface AdminUserModifyPwdVO {
407 414 }
408 415  
409 416 export interface AdminUserPasswordRecoverEmailVO {
  417 + createByName?: string;
410 418 /** @format int32 */
411 419 current?: number;
412 420 /** @format int32 */
... ... @@ -421,6 +429,7 @@ export interface AdminUserPasswordRecoverEmailVO {
421 429 }
422 430  
423 431 export interface AdminUserQueryVO {
  432 + createByName?: string;
424 433 /** @format int32 */
425 434 current?: number;
426 435 email?: string;
... ... @@ -445,6 +454,7 @@ export interface AdminUserQueryVO {
445 454  
446 455 export interface AdminUserRegisterVO {
447 456 confirmPassword?: string;
  457 + createByName?: string;
448 458 /** @format int32 */
449 459 current?: number;
450 460 email?: string;
... ... @@ -658,6 +668,7 @@ export interface ApiCreateProductRequest {
658 668 }
659 669  
660 670 export interface ApiOrderCustomersRequest {
  671 + createByName?: string;
661 672 /** @format int32 */
662 673 current?: number;
663 674 /** @format int32 */
... ... @@ -958,6 +969,7 @@ export interface AuditDto {
958 969 }
959 970  
960 971 export interface AuditVO {
  972 + createByName?: string;
961 973 /** @format int32 */
962 974 current?: number;
963 975 /** @format int32 */
... ... @@ -1036,6 +1048,7 @@ export interface CancelSendOrderDto {
1036 1048 }
1037 1049  
1038 1050 export interface CaptchaMessageVO {
  1051 + createByName?: string;
1039 1052 /** @format int32 */
1040 1053 current?: number;
1041 1054 /** @format int32 */
... ... @@ -1290,6 +1303,7 @@ export interface CustomerSaveReq {
1290 1303 }
1291 1304  
1292 1305 export interface DictionaryQueryVO {
  1306 + createByName?: string;
1293 1307 /** @format int32 */
1294 1308 current?: number;
1295 1309 dictCode?: string;
... ... @@ -1412,6 +1426,12 @@ export interface InvoiceDto {
1412 1426 * 收款时间
1413 1427 * @format date-time
1414 1428 */
  1429 + collectionDatetime?: string;
  1430 + /**
  1431 + * @description
  1432 + * 收款时间
  1433 + * @format date-time
  1434 + */
1415 1435 collectionTime?: string;
1416 1436 /**
1417 1437 * @description
... ... @@ -1457,6 +1477,11 @@ export interface InvoiceDto {
1457 1477 notes?: string;
1458 1478 /**
1459 1479 * @description
  1480 + * 权限路径
  1481 + */
  1482 + path?: Array<string>;
  1483 + /**
  1484 + * @description
1460 1485 * 收款单位
1461 1486 */
1462 1487 payee?: string;
... ... @@ -1706,6 +1731,8 @@ export interface InvoiceRecordQueryRequest {
1706 1731 * 联系人
1707 1732 */
1708 1733 contactsLike?: string;
  1734 + createByName?: string;
  1735 + createNameIn?: Array<string>;
1709 1736 /** @format date-time */
1710 1737 createTimeGe?: string;
1711 1738 /** @format date-time */
... ... @@ -2052,6 +2079,7 @@ export interface MeasureUnitListResRow {
2052 2079 }
2053 2080  
2054 2081 export interface MessageQueryDTO {
  2082 + createByName?: string;
2055 2083 /** @format int32 */
2056 2084 current?: number;
2057 2085 /** @format int32 */
... ... @@ -2095,6 +2123,7 @@ export interface OrderAddVO {
2095 2123 export interface OrderAuditLogQueryVO {
2096 2124 /** @format int64 */
2097 2125 applyId?: number;
  2126 + createByName?: string;
2098 2127 /** @format int32 */
2099 2128 current?: number;
2100 2129 /** @format int32 */
... ... @@ -2139,6 +2168,7 @@ export interface OrderBaseFieldVO {
2139 2168 export interface OrderBaseInfoQueryVO {
2140 2169 cnColor?: string;
2141 2170 collection?: string;
  2171 + createByName?: string;
2142 2172 /** @format int32 */
2143 2173 current?: number;
2144 2174 customerCode?: string;
... ... @@ -2227,6 +2257,7 @@ export interface OrderFieldLockApplyQueryVO {
2227 2257 applyUserId?: number;
2228 2258 /** @format int64 */
2229 2259 auditUserId?: number;
  2260 + createByName?: string;
2230 2261 /** @format int32 */
2231 2262 current?: number;
2232 2263 /** @format int32 */
... ... @@ -2296,6 +2327,7 @@ export interface OrderMainProDo {
2296 2327 }
2297 2328  
2298 2329 export interface OrderOptLogQueryVO {
  2330 + createByName?: string;
2299 2331 /** @format int32 */
2300 2332 current?: number;
2301 2333 /** @format int32 */
... ... @@ -2559,6 +2591,11 @@ export interface ProcurePrintDto {
2559 2591 ids?: Array<number>;
2560 2592 }
2561 2593  
  2594 +export interface ProcureReturnBillApprovalDto {
  2595 + ids?: Array<number>;
  2596 + transitionNotes?: string;
  2597 +}
  2598 +
2562 2599 export interface ProcureReturnBillDto {
2563 2600 /**
2564 2601 * @description
... ... @@ -2614,6 +2651,12 @@ export interface ProcureReturnBillDto {
2614 2651 /**
2615 2652 * @description
2616 2653 * 发货仓库
  2654 + * @format int32
  2655 + */
  2656 + sendStoreCode?: number;
  2657 + /**
  2658 + * @description
  2659 + * 发货仓库
2617 2660 */
2618 2661 sendStoreText?: string;
2619 2662 /**
... ... @@ -2627,6 +2670,7 @@ export interface ProcureReturnBillDto {
2627 2670 * @format int32
2628 2671 */
2629 2672 statusCode?: number;
  2673 + statusNotes?: string;
2630 2674 /**
2631 2675 * @description
2632 2676 * 订单状态
... ... @@ -2691,6 +2735,7 @@ export interface QueryBankStatementDto {
2691 2735 * @format date
2692 2736 */
2693 2737 collectionDatetimeEnd?: string;
  2738 + createByName?: string;
2694 2739 /** @format int32 */
2695 2740 current?: number;
2696 2741 /** @format int32 */
... ... @@ -2727,6 +2772,7 @@ export interface QueryClientDto {
2727 2772 companyAddressLike?: string;
2728 2773 companyIds?: Array<number>;
2729 2774 companyNameLike?: string;
  2775 + createByName?: string;
2730 2776 createByUserIdIn?: Array<number>;
2731 2777 /** @format date-time */
2732 2778 createTimeGe?: string;
... ... @@ -2754,6 +2800,7 @@ export interface QueryCommunicationInfoDto {
2754 2800 /** @format int64 */
2755 2801 clientId?: number;
2756 2802 content?: string;
  2803 + createByName?: string;
2757 2804 /** @format int32 */
2758 2805 current?: number;
2759 2806 /** @format date-time */
... ... @@ -2812,6 +2859,7 @@ export interface QueryInvoiceDetailDto {
2812 2859 }
2813 2860  
2814 2861 export interface QueryInvoiceProjectDto {
  2862 + createByName?: string;
2815 2863 /** @format int32 */
2816 2864 current?: number;
2817 2865 /** @format int32 */
... ... @@ -2831,6 +2879,8 @@ export interface QueryInvoiceRecordDto {
2831 2879 * 联系人
2832 2880 */
2833 2881 contactsLike?: string;
  2882 + createByName?: string;
  2883 + createNameIn?: Array<string>;
2834 2884 /** @format date-time */
2835 2885 createTimeGe?: string;
2836 2886 /** @format date-time */
... ... @@ -3025,6 +3075,7 @@ export interface QueryMainOrderDto {
3025 3075  
3026 3076 export interface QueryProcureReturnBillDto {
3027 3077 consigneeLike?: string;
  3078 + createByName?: string;
3028 3079 createByNameLike?: string;
3029 3080 /** @format date-time */
3030 3081 createTimeGe?: string;
... ... @@ -3079,6 +3130,26 @@ export interface QueryReportFormsDto {
3079 3130 statisticsMethod?: string;
3080 3131 }
3081 3132  
  3133 +export interface QueryUseOldInvoicingDto {
  3134 + createByName?: string;
  3135 + /** @format date-time */
  3136 + createTimeGe?: string;
  3137 + /** @format date-time */
  3138 + createTimeLe?: string;
  3139 + /** @format int32 */
  3140 + current?: number;
  3141 + /** @format int32 */
  3142 + end?: number;
  3143 + /** @format int64 */
  3144 + mainOrderId?: number;
  3145 + /** @format int32 */
  3146 + pageSize?: number;
  3147 + /** @format int32 */
  3148 + start?: number;
  3149 + /** @format int32 */
  3150 + total?: number;
  3151 +}
  3152 +
3082 3153 export interface ReissueInvoiceDto {
3083 3154 /** @format int64 */
3084 3155 invoiceId?: number;
... ... @@ -3212,6 +3283,7 @@ export interface ResearchGroupListRequest {
3212 3283 * 公司名称
3213 3284 */
3214 3285 companyNameLike?: string;
  3286 + createByName?: string;
3215 3287 /** @format int32 */
3216 3288 current?: number;
3217 3289 /** @format int32 */
... ... @@ -3622,6 +3694,7 @@ export interface SubOrder {
3622 3694 export interface SysLogQueryVO {
3623 3695 address?: string;
3624 3696 browser?: string;
  3697 + createByName?: string;
3625 3698 /** @format int32 */
3626 3699 current?: number;
3627 3700 description?: string;
... ... @@ -3792,6 +3865,10 @@ export interface UpdatePwdVO {
3792 3865 userId?: number;
3793 3866 }
3794 3867  
  3868 +export interface UseOldInvoicingDto {
  3869 + orderIdsText?: string;
  3870 +}
  3871 +
3795 3872 export interface UserAddressListRequest {
3796 3873 keywords?: string;
3797 3874 /** @format int32 */
... ... @@ -3799,6 +3876,7 @@ export interface UserAddressListRequest {
3799 3876 }
3800 3877  
3801 3878 export interface UserCenterInfoRequest {
  3879 + createByName?: string;
3802 3880 /** @format int32 */
3803 3881 current?: number;
3804 3882 /** @format int32 */
... ... @@ -3824,6 +3902,7 @@ export interface UserCenterInfoRequest {
3824 3902 }
3825 3903  
3826 3904 export interface UserDetailRequest {
  3905 + createByName?: string;
3827 3906 /** @format int32 */
3828 3907 current?: number;
3829 3908 /** @format int32 */
... ... @@ -3847,6 +3926,7 @@ export interface UserDetailRequest {
3847 3926 }
3848 3927  
3849 3928 export interface UserListRequest {
  3929 + createByName?: string;
3850 3930 /** @format int32 */
3851 3931 current?: number;
3852 3932 /**
... ... @@ -3996,26 +4076,50 @@ export interface InvoiceDetail {
3996 4076 * @format double
3997 4077 */
3998 4078 price?: number;
  4079 + /**
  4080 + * @description
  4081 + * 项目名称
  4082 + */
3999 4083 projectName?: string;
4000   - /** @format double */
  4084 + /**
  4085 + * @description
  4086 + * 数量
  4087 + * @format double
  4088 + */
4001 4089 quantity?: number;
4002 4090 /**
4003 4091 * @description
4004 4092 * 型号
4005 4093 */
4006 4094 specification?: string;
4007   - /** @format int64 */
  4095 + /**
  4096 + * @description
  4097 + * 关联子订单id
  4098 + * @format int64
  4099 + */
4008 4100 subOrderId?: number;
4009   - /** @format double */
  4101 + /**
  4102 + * @description
  4103 + * 税额
  4104 + * @format double
  4105 + */
4010 4106 taxPrice?: number;
4011   - /** @format double */
  4107 + /**
  4108 + * @description
  4109 + * 税率
  4110 + * @format double
  4111 + */
4012 4112 taxRate?: number;
4013 4113 /**
4014 4114 * @description
4015   - * 总价
  4115 + * 总价(金额+税额)
4016 4116 * @format double
4017 4117 */
4018 4118 totalPrice?: number;
  4119 + /**
  4120 + * @description
  4121 + * 单位
  4122 + */
4019 4123 unit?: string;
4020 4124 }
4021 4125  
... ... @@ -4190,6 +4294,7 @@ export interface SalesRechargePrepaymentRequest {
4190 4294 * 创建人员
4191 4295 */
4192 4296 createBy?: string;
  4297 + createByName?: string;
4193 4298 /**
4194 4299 * @description
4195 4300 * 创建时间开始时间
... ...
src/services/request.ts
... ... @@ -83,6 +83,7 @@ import type {
83 83 ProcureConvertProcureDto,
84 84 ProcureOrderDto,
85 85 ProcurePrintDto,
  86 + ProcureReturnBillApprovalDto,
86 87 ProcureReturnBillDto,
87 88 ProductInformationDto,
88 89 QueryAfterSalesInfoSnapshotDto,
... ... @@ -98,6 +99,7 @@ import type {
98 99 QueryMainOrderDto,
99 100 QueryProcureReturnBillDto,
100 101 QueryReportFormsDto,
  102 + QueryUseOldInvoicingDto,
101 103 ReissueInvoiceDto,
102 104 ResearchGroupAddRequest,
103 105 ResearchGroupDeleteRequest,
... ... @@ -129,6 +131,7 @@ import type {
129 131 UpdateHirePurchaseDto,
130 132 UpdatePwdVO,
131 133 UploadPaymentReceiptDTO,
  134 + UseOldInvoicingDto,
132 135 UserAddressListRequest,
133 136 UserAddressSaveRequest,
134 137 UserCenterInfoRequest,
... ... @@ -3566,6 +3569,76 @@ export const patchError = /* #__PURE__ */ (() =&gt; {
3566 3569 return request;
3567 3570 })();
3568 3571  
  3572 +/** @description request parameter type for postFileDirectDown */
  3573 +export interface PostFileDirectDownOption {
  3574 + /**
  3575 + * @description
  3576 + * urls
  3577 + */
  3578 + body: {
  3579 + /**
  3580 + @description
  3581 + urls */
  3582 + urls: Array<string>;
  3583 + };
  3584 +}
  3585 +
  3586 +/** @description response type for postFileDirectDown */
  3587 +export interface PostFileDirectDownResponse {
  3588 + /**
  3589 + * @description
  3590 + * OK
  3591 + */
  3592 + 200: any;
  3593 + /**
  3594 + * @description
  3595 + * Created
  3596 + */
  3597 + 201: any;
  3598 + /**
  3599 + * @description
  3600 + * Unauthorized
  3601 + */
  3602 + 401: any;
  3603 + /**
  3604 + * @description
  3605 + * Forbidden
  3606 + */
  3607 + 403: any;
  3608 + /**
  3609 + * @description
  3610 + * Not Found
  3611 + */
  3612 + 404: any;
  3613 +}
  3614 +
  3615 +export type PostFileDirectDownResponseSuccess = PostFileDirectDownResponse[200];
  3616 +/**
  3617 + * @description
  3618 + * directDownFile
  3619 + * @tags file-controller
  3620 + * @produces *
  3621 + * @consumes application/json
  3622 + */
  3623 +export const postFileDirectDown = /* #__PURE__ */ (() => {
  3624 + const method = 'post';
  3625 + const url = '/file/directDown';
  3626 + function request(
  3627 + option: PostFileDirectDownOption,
  3628 + ): Promise<PostFileDirectDownResponseSuccess> {
  3629 + return requester(request.url, {
  3630 + method: request.method,
  3631 + ...option,
  3632 + }) as unknown as Promise<PostFileDirectDownResponseSuccess>;
  3633 + }
  3634 +
  3635 + /** http method */
  3636 + request.method = method;
  3637 + /** request url */
  3638 + request.url = url;
  3639 + return request;
  3640 +})();
  3641 +
3569 3642 /** @description request parameter type for postKingdeeRepCustomer */
3570 3643 export interface PostKingdeeRepCustomerOption {
3571 3644 /**
... ... @@ -4347,6 +4420,221 @@ export const postOfficialWebsiteUploadAliOss = /* #__PURE__ */ (() =&gt; {
4347 4420 return request;
4348 4421 })();
4349 4422  
  4423 +/** @description request parameter type for postOldInvoicingWhiteListBatchAdd */
  4424 +export interface PostOldInvoicingWhiteListBatchAddOption {
  4425 + /**
  4426 + * @description
  4427 + * useOldInvoicingDto
  4428 + */
  4429 + body: {
  4430 + /**
  4431 + @description
  4432 + useOldInvoicingDto */
  4433 + useOldInvoicingDto: UseOldInvoicingDto;
  4434 + };
  4435 +}
  4436 +
  4437 +/** @description response type for postOldInvoicingWhiteListBatchAdd */
  4438 +export interface PostOldInvoicingWhiteListBatchAddResponse {
  4439 + /**
  4440 + * @description
  4441 + * OK
  4442 + */
  4443 + 200: ServerResult;
  4444 + /**
  4445 + * @description
  4446 + * Created
  4447 + */
  4448 + 201: any;
  4449 + /**
  4450 + * @description
  4451 + * Unauthorized
  4452 + */
  4453 + 401: any;
  4454 + /**
  4455 + * @description
  4456 + * Forbidden
  4457 + */
  4458 + 403: any;
  4459 + /**
  4460 + * @description
  4461 + * Not Found
  4462 + */
  4463 + 404: any;
  4464 +}
  4465 +
  4466 +export type PostOldInvoicingWhiteListBatchAddResponseSuccess =
  4467 + PostOldInvoicingWhiteListBatchAddResponse[200];
  4468 +/**
  4469 + * @description
  4470 + * 批量添加
  4471 + * @tags 旧开票白名单
  4472 + * @produces *
  4473 + * @consumes application/json
  4474 + */
  4475 +export const postOldInvoicingWhiteListBatchAdd = /* #__PURE__ */ (() => {
  4476 + const method = 'post';
  4477 + const url = '/oldInvoicingWhiteList/batchAdd';
  4478 + function request(
  4479 + option: PostOldInvoicingWhiteListBatchAddOption,
  4480 + ): Promise<PostOldInvoicingWhiteListBatchAddResponseSuccess> {
  4481 + return requester(request.url, {
  4482 + method: request.method,
  4483 + ...option,
  4484 + }) as unknown as Promise<PostOldInvoicingWhiteListBatchAddResponseSuccess>;
  4485 + }
  4486 +
  4487 + /** http method */
  4488 + request.method = method;
  4489 + /** request url */
  4490 + request.url = url;
  4491 + return request;
  4492 +})();
  4493 +
  4494 +/** @description request parameter type for postOldInvoicingWhiteListPage */
  4495 +export interface PostOldInvoicingWhiteListPageOption {
  4496 + /**
  4497 + * @description
  4498 + * dto
  4499 + */
  4500 + body: {
  4501 + /**
  4502 + @description
  4503 + dto */
  4504 + dto: QueryUseOldInvoicingDto;
  4505 + };
  4506 +}
  4507 +
  4508 +/** @description response type for postOldInvoicingWhiteListPage */
  4509 +export interface PostOldInvoicingWhiteListPageResponse {
  4510 + /**
  4511 + * @description
  4512 + * OK
  4513 + */
  4514 + 200: ServerResult;
  4515 + /**
  4516 + * @description
  4517 + * Created
  4518 + */
  4519 + 201: any;
  4520 + /**
  4521 + * @description
  4522 + * Unauthorized
  4523 + */
  4524 + 401: any;
  4525 + /**
  4526 + * @description
  4527 + * Forbidden
  4528 + */
  4529 + 403: any;
  4530 + /**
  4531 + * @description
  4532 + * Not Found
  4533 + */
  4534 + 404: any;
  4535 +}
  4536 +
  4537 +export type PostOldInvoicingWhiteListPageResponseSuccess =
  4538 + PostOldInvoicingWhiteListPageResponse[200];
  4539 +/**
  4540 + * @description
  4541 + * 查询
  4542 + * @tags 旧开票白名单
  4543 + * @produces *
  4544 + * @consumes application/json
  4545 + */
  4546 +export const postOldInvoicingWhiteListPage = /* #__PURE__ */ (() => {
  4547 + const method = 'post';
  4548 + const url = '/oldInvoicingWhiteList/page';
  4549 + function request(
  4550 + option: PostOldInvoicingWhiteListPageOption,
  4551 + ): Promise<PostOldInvoicingWhiteListPageResponseSuccess> {
  4552 + return requester(request.url, {
  4553 + method: request.method,
  4554 + ...option,
  4555 + }) as unknown as Promise<PostOldInvoicingWhiteListPageResponseSuccess>;
  4556 + }
  4557 +
  4558 + /** http method */
  4559 + request.method = method;
  4560 + /** request url */
  4561 + request.url = url;
  4562 + return request;
  4563 +})();
  4564 +
  4565 +/** @description request parameter type for postOldInvoicingWhiteListRemove */
  4566 +export interface PostOldInvoicingWhiteListRemoveOption {
  4567 + /**
  4568 + * @description
  4569 + * mainOrderId
  4570 + * @format int64
  4571 + */
  4572 + query?: {
  4573 + /**
  4574 + @description
  4575 + mainOrderId
  4576 + @format int64 */
  4577 + mainOrderId?: number;
  4578 + };
  4579 +}
  4580 +
  4581 +/** @description response type for postOldInvoicingWhiteListRemove */
  4582 +export interface PostOldInvoicingWhiteListRemoveResponse {
  4583 + /**
  4584 + * @description
  4585 + * OK
  4586 + */
  4587 + 200: ServerResult;
  4588 + /**
  4589 + * @description
  4590 + * Created
  4591 + */
  4592 + 201: any;
  4593 + /**
  4594 + * @description
  4595 + * Unauthorized
  4596 + */
  4597 + 401: any;
  4598 + /**
  4599 + * @description
  4600 + * Forbidden
  4601 + */
  4602 + 403: any;
  4603 + /**
  4604 + * @description
  4605 + * Not Found
  4606 + */
  4607 + 404: any;
  4608 +}
  4609 +
  4610 +export type PostOldInvoicingWhiteListRemoveResponseSuccess =
  4611 + PostOldInvoicingWhiteListRemoveResponse[200];
  4612 +/**
  4613 + * @description
  4614 + * 移除
  4615 + * @tags 旧开票白名单
  4616 + * @produces *
  4617 + * @consumes application/json
  4618 + */
  4619 +export const postOldInvoicingWhiteListRemove = /* #__PURE__ */ (() => {
  4620 + const method = 'post';
  4621 + const url = '/oldInvoicingWhiteList/remove';
  4622 + function request(
  4623 + option?: PostOldInvoicingWhiteListRemoveOption,
  4624 + ): Promise<PostOldInvoicingWhiteListRemoveResponseSuccess> {
  4625 + return requester(request.url, {
  4626 + method: request.method,
  4627 + ...option,
  4628 + }) as unknown as Promise<PostOldInvoicingWhiteListRemoveResponseSuccess>;
  4629 + }
  4630 +
  4631 + /** http method */
  4632 + request.method = method;
  4633 + /** request url */
  4634 + request.url = url;
  4635 + return request;
  4636 +})();
  4637 +
4350 4638 /** @description request parameter type for postOrderErpApplyList */
4351 4639 export interface PostOrderErpApplyListOption {
4352 4640 /**
... ... @@ -10596,8 +10884,8 @@ export const postProcureReturnBillAdd = /* #__PURE__ */ (() =&gt; {
10596 10884 return request;
10597 10885 })();
10598 10886  
10599   -/** @description request parameter type for postProcureReturnBillModify */
10600   -export interface PostProcureReturnBillModifyOption {
  10887 +/** @description request parameter type for postProcureReturnBillAddOrModify */
  10888 +export interface PostProcureReturnBillAddOrModifyOption {
10601 10889 /**
10602 10890 * @description
10603 10891 * dto
... ... @@ -10610,8 +10898,8 @@ export interface PostProcureReturnBillModifyOption {
10610 10898 };
10611 10899 }
10612 10900  
10613   -/** @description response type for postProcureReturnBillModify */
10614   -export interface PostProcureReturnBillModifyResponse {
  10901 +/** @description response type for postProcureReturnBillAddOrModify */
  10902 +export interface PostProcureReturnBillAddOrModifyResponse {
10615 10903 /**
10616 10904 * @description
10617 10905 * OK
... ... @@ -10639,25 +10927,25 @@ export interface PostProcureReturnBillModifyResponse {
10639 10927 404: any;
10640 10928 }
10641 10929  
10642   -export type PostProcureReturnBillModifyResponseSuccess =
10643   - PostProcureReturnBillModifyResponse[200];
  10930 +export type PostProcureReturnBillAddOrModifyResponseSuccess =
  10931 + PostProcureReturnBillAddOrModifyResponse[200];
10644 10932 /**
10645 10933 * @description
10646   - * 修改
  10934 + * 添加或修改
10647 10935 * @tags procure-return-bill-controller
10648 10936 * @produces *
10649 10937 * @consumes application/json
10650 10938 */
10651   -export const postProcureReturnBillModify = /* #__PURE__ */ (() => {
  10939 +export const postProcureReturnBillAddOrModify = /* #__PURE__ */ (() => {
10652 10940 const method = 'post';
10653   - const url = '/procureReturnBill/modify';
  10941 + const url = '/procureReturnBill/addOrModify';
10654 10942 function request(
10655   - option: PostProcureReturnBillModifyOption,
10656   - ): Promise<PostProcureReturnBillModifyResponseSuccess> {
  10943 + option: PostProcureReturnBillAddOrModifyOption,
  10944 + ): Promise<PostProcureReturnBillAddOrModifyResponseSuccess> {
10657 10945 return requester(request.url, {
10658 10946 method: request.method,
10659 10947 ...option,
10660   - }) as unknown as Promise<PostProcureReturnBillModifyResponseSuccess>;
  10948 + }) as unknown as Promise<PostProcureReturnBillAddOrModifyResponseSuccess>;
10661 10949 }
10662 10950  
10663 10951 /** http method */
... ... @@ -10667,8 +10955,8 @@ export const postProcureReturnBillModify = /* #__PURE__ */ (() =&gt; {
10667 10955 return request;
10668 10956 })();
10669 10957  
10670   -/** @description request parameter type for postProcureReturnBillPage */
10671   -export interface PostProcureReturnBillPageOption {
  10958 +/** @description request parameter type for postProcureReturnBillAudit */
  10959 +export interface PostProcureReturnBillAuditOption {
10672 10960 /**
10673 10961 * @description
10674 10962 * dto
... ... @@ -10677,12 +10965,12 @@ export interface PostProcureReturnBillPageOption {
10677 10965 /**
10678 10966 @description
10679 10967 dto */
10680   - dto: QueryProcureReturnBillDto;
  10968 + dto: ProcureReturnBillApprovalDto;
10681 10969 };
10682 10970 }
10683 10971  
10684   -/** @description response type for postProcureReturnBillPage */
10685   -export interface PostProcureReturnBillPageResponse {
  10972 +/** @description response type for postProcureReturnBillAudit */
  10973 +export interface PostProcureReturnBillAuditResponse {
10686 10974 /**
10687 10975 * @description
10688 10976 * OK
... ... @@ -10710,25 +10998,25 @@ export interface PostProcureReturnBillPageResponse {
10710 10998 404: any;
10711 10999 }
10712 11000  
10713   -export type PostProcureReturnBillPageResponseSuccess =
10714   - PostProcureReturnBillPageResponse[200];
  11001 +export type PostProcureReturnBillAuditResponseSuccess =
  11002 + PostProcureReturnBillAuditResponse[200];
10715 11003 /**
10716 11004 * @description
10717   - * 分页查询
  11005 + * 审核
10718 11006 * @tags procure-return-bill-controller
10719 11007 * @produces *
10720 11008 * @consumes application/json
10721 11009 */
10722   -export const postProcureReturnBillPage = /* #__PURE__ */ (() => {
  11010 +export const postProcureReturnBillAudit = /* #__PURE__ */ (() => {
10723 11011 const method = 'post';
10724   - const url = '/procureReturnBill/page';
  11012 + const url = '/procureReturnBill/audit';
10725 11013 function request(
10726   - option: PostProcureReturnBillPageOption,
10727   - ): Promise<PostProcureReturnBillPageResponseSuccess> {
  11014 + option: PostProcureReturnBillAuditOption,
  11015 + ): Promise<PostProcureReturnBillAuditResponseSuccess> {
10728 11016 return requester(request.url, {
10729 11017 method: request.method,
10730 11018 ...option,
10731   - }) as unknown as Promise<PostProcureReturnBillPageResponseSuccess>;
  11019 + }) as unknown as Promise<PostProcureReturnBillAuditResponseSuccess>;
10732 11020 }
10733 11021  
10734 11022 /** http method */
... ... @@ -10738,16 +11026,373 @@ export const postProcureReturnBillPage = /* #__PURE__ */ (() =&gt; {
10738 11026 return request;
10739 11027 })();
10740 11028  
10741   -/** @description request parameter type for postResearchGroupMemberRequestsAdd */
10742   -export interface PostResearchGroupMemberRequestsAddOption {
  11029 +/** @description request parameter type for postProcureReturnBillExport */
  11030 +export interface PostProcureReturnBillExportOption {
10743 11031 /**
10744 11032 * @description
10745   - * request
  11033 + * dto
10746 11034 */
10747 11035 body: {
10748 11036 /**
10749 11037 @description
10750   - request */
  11038 + dto */
  11039 + dto: QueryProcureReturnBillDto;
  11040 + };
  11041 +}
  11042 +
  11043 +/** @description response type for postProcureReturnBillExport */
  11044 +export interface PostProcureReturnBillExportResponse {
  11045 + /**
  11046 + * @description
  11047 + * OK
  11048 + */
  11049 + 200: any;
  11050 + /**
  11051 + * @description
  11052 + * Created
  11053 + */
  11054 + 201: any;
  11055 + /**
  11056 + * @description
  11057 + * Unauthorized
  11058 + */
  11059 + 401: any;
  11060 + /**
  11061 + * @description
  11062 + * Forbidden
  11063 + */
  11064 + 403: any;
  11065 + /**
  11066 + * @description
  11067 + * Not Found
  11068 + */
  11069 + 404: any;
  11070 +}
  11071 +
  11072 +export type PostProcureReturnBillExportResponseSuccess =
  11073 + PostProcureReturnBillExportResponse[200];
  11074 +/**
  11075 + * @description
  11076 + * 导出客户信息
  11077 + * @tags procure-return-bill-controller
  11078 + * @produces *
  11079 + * @consumes application/json
  11080 + */
  11081 +export const postProcureReturnBillExport = /* #__PURE__ */ (() => {
  11082 + const method = 'post';
  11083 + const url = '/procureReturnBill/export';
  11084 + function request(
  11085 + option: PostProcureReturnBillExportOption,
  11086 + ): Promise<PostProcureReturnBillExportResponseSuccess> {
  11087 + return requester(request.url, {
  11088 + method: request.method,
  11089 + ...option,
  11090 + }) as unknown as Promise<PostProcureReturnBillExportResponseSuccess>;
  11091 + }
  11092 +
  11093 + /** http method */
  11094 + request.method = method;
  11095 + /** request url */
  11096 + request.url = url;
  11097 + return request;
  11098 +})();
  11099 +
  11100 +/** @description request parameter type for postProcureReturnBillModify */
  11101 +export interface PostProcureReturnBillModifyOption {
  11102 + /**
  11103 + * @description
  11104 + * dto
  11105 + */
  11106 + body: {
  11107 + /**
  11108 + @description
  11109 + dto */
  11110 + dto: ProcureReturnBillDto;
  11111 + };
  11112 +}
  11113 +
  11114 +/** @description response type for postProcureReturnBillModify */
  11115 +export interface PostProcureReturnBillModifyResponse {
  11116 + /**
  11117 + * @description
  11118 + * OK
  11119 + */
  11120 + 200: ServerResult;
  11121 + /**
  11122 + * @description
  11123 + * Created
  11124 + */
  11125 + 201: any;
  11126 + /**
  11127 + * @description
  11128 + * Unauthorized
  11129 + */
  11130 + 401: any;
  11131 + /**
  11132 + * @description
  11133 + * Forbidden
  11134 + */
  11135 + 403: any;
  11136 + /**
  11137 + * @description
  11138 + * Not Found
  11139 + */
  11140 + 404: any;
  11141 +}
  11142 +
  11143 +export type PostProcureReturnBillModifyResponseSuccess =
  11144 + PostProcureReturnBillModifyResponse[200];
  11145 +/**
  11146 + * @description
  11147 + * 修改
  11148 + * @tags procure-return-bill-controller
  11149 + * @produces *
  11150 + * @consumes application/json
  11151 + */
  11152 +export const postProcureReturnBillModify = /* #__PURE__ */ (() => {
  11153 + const method = 'post';
  11154 + const url = '/procureReturnBill/modify';
  11155 + function request(
  11156 + option: PostProcureReturnBillModifyOption,
  11157 + ): Promise<PostProcureReturnBillModifyResponseSuccess> {
  11158 + return requester(request.url, {
  11159 + method: request.method,
  11160 + ...option,
  11161 + }) as unknown as Promise<PostProcureReturnBillModifyResponseSuccess>;
  11162 + }
  11163 +
  11164 + /** http method */
  11165 + request.method = method;
  11166 + /** request url */
  11167 + request.url = url;
  11168 + return request;
  11169 +})();
  11170 +
  11171 +/** @description request parameter type for postProcureReturnBillPage */
  11172 +export interface PostProcureReturnBillPageOption {
  11173 + /**
  11174 + * @description
  11175 + * dto
  11176 + */
  11177 + body: {
  11178 + /**
  11179 + @description
  11180 + dto */
  11181 + dto: QueryProcureReturnBillDto;
  11182 + };
  11183 +}
  11184 +
  11185 +/** @description response type for postProcureReturnBillPage */
  11186 +export interface PostProcureReturnBillPageResponse {
  11187 + /**
  11188 + * @description
  11189 + * OK
  11190 + */
  11191 + 200: ServerResult;
  11192 + /**
  11193 + * @description
  11194 + * Created
  11195 + */
  11196 + 201: any;
  11197 + /**
  11198 + * @description
  11199 + * Unauthorized
  11200 + */
  11201 + 401: any;
  11202 + /**
  11203 + * @description
  11204 + * Forbidden
  11205 + */
  11206 + 403: any;
  11207 + /**
  11208 + * @description
  11209 + * Not Found
  11210 + */
  11211 + 404: any;
  11212 +}
  11213 +
  11214 +export type PostProcureReturnBillPageResponseSuccess =
  11215 + PostProcureReturnBillPageResponse[200];
  11216 +/**
  11217 + * @description
  11218 + * 分页查询
  11219 + * @tags procure-return-bill-controller
  11220 + * @produces *
  11221 + * @consumes application/json
  11222 + */
  11223 +export const postProcureReturnBillPage = /* #__PURE__ */ (() => {
  11224 + const method = 'post';
  11225 + const url = '/procureReturnBill/page';
  11226 + function request(
  11227 + option: PostProcureReturnBillPageOption,
  11228 + ): Promise<PostProcureReturnBillPageResponseSuccess> {
  11229 + return requester(request.url, {
  11230 + method: request.method,
  11231 + ...option,
  11232 + }) as unknown as Promise<PostProcureReturnBillPageResponseSuccess>;
  11233 + }
  11234 +
  11235 + /** http method */
  11236 + request.method = method;
  11237 + /** request url */
  11238 + request.url = url;
  11239 + return request;
  11240 +})();
  11241 +
  11242 +/** @description request parameter type for postProcureReturnBillRemove */
  11243 +export interface PostProcureReturnBillRemoveOption {
  11244 + /**
  11245 + * @description
  11246 + * id
  11247 + * @format int64
  11248 + */
  11249 + query: {
  11250 + /**
  11251 + @description
  11252 + id
  11253 + @format int64 */
  11254 + id: number;
  11255 + };
  11256 +}
  11257 +
  11258 +/** @description response type for postProcureReturnBillRemove */
  11259 +export interface PostProcureReturnBillRemoveResponse {
  11260 + /**
  11261 + * @description
  11262 + * OK
  11263 + */
  11264 + 200: ServerResult;
  11265 + /**
  11266 + * @description
  11267 + * Created
  11268 + */
  11269 + 201: any;
  11270 + /**
  11271 + * @description
  11272 + * Unauthorized
  11273 + */
  11274 + 401: any;
  11275 + /**
  11276 + * @description
  11277 + * Forbidden
  11278 + */
  11279 + 403: any;
  11280 + /**
  11281 + * @description
  11282 + * Not Found
  11283 + */
  11284 + 404: any;
  11285 +}
  11286 +
  11287 +export type PostProcureReturnBillRemoveResponseSuccess =
  11288 + PostProcureReturnBillRemoveResponse[200];
  11289 +/**
  11290 + * @description
  11291 + * 删除
  11292 + * @tags procure-return-bill-controller
  11293 + * @produces *
  11294 + * @consumes application/json
  11295 + */
  11296 +export const postProcureReturnBillRemove = /* #__PURE__ */ (() => {
  11297 + const method = 'post';
  11298 + const url = '/procureReturnBill/remove';
  11299 + function request(
  11300 + option: PostProcureReturnBillRemoveOption,
  11301 + ): Promise<PostProcureReturnBillRemoveResponseSuccess> {
  11302 + return requester(request.url, {
  11303 + method: request.method,
  11304 + ...option,
  11305 + }) as unknown as Promise<PostProcureReturnBillRemoveResponseSuccess>;
  11306 + }
  11307 +
  11308 + /** http method */
  11309 + request.method = method;
  11310 + /** request url */
  11311 + request.url = url;
  11312 + return request;
  11313 +})();
  11314 +
  11315 +/** @description request parameter type for postProcureReturnBillSend */
  11316 +export interface PostProcureReturnBillSendOption {
  11317 + /**
  11318 + * @description
  11319 + * dto
  11320 + */
  11321 + body: {
  11322 + /**
  11323 + @description
  11324 + dto */
  11325 + dto: ProcureReturnBillApprovalDto;
  11326 + };
  11327 +}
  11328 +
  11329 +/** @description response type for postProcureReturnBillSend */
  11330 +export interface PostProcureReturnBillSendResponse {
  11331 + /**
  11332 + * @description
  11333 + * OK
  11334 + */
  11335 + 200: ServerResult;
  11336 + /**
  11337 + * @description
  11338 + * Created
  11339 + */
  11340 + 201: any;
  11341 + /**
  11342 + * @description
  11343 + * Unauthorized
  11344 + */
  11345 + 401: any;
  11346 + /**
  11347 + * @description
  11348 + * Forbidden
  11349 + */
  11350 + 403: any;
  11351 + /**
  11352 + * @description
  11353 + * Not Found
  11354 + */
  11355 + 404: any;
  11356 +}
  11357 +
  11358 +export type PostProcureReturnBillSendResponseSuccess =
  11359 + PostProcureReturnBillSendResponse[200];
  11360 +/**
  11361 + * @description
  11362 + * 发货
  11363 + * @tags procure-return-bill-controller
  11364 + * @produces *
  11365 + * @consumes application/json
  11366 + */
  11367 +export const postProcureReturnBillSend = /* #__PURE__ */ (() => {
  11368 + const method = 'post';
  11369 + const url = '/procureReturnBill/send';
  11370 + function request(
  11371 + option: PostProcureReturnBillSendOption,
  11372 + ): Promise<PostProcureReturnBillSendResponseSuccess> {
  11373 + return requester(request.url, {
  11374 + method: request.method,
  11375 + ...option,
  11376 + }) as unknown as Promise<PostProcureReturnBillSendResponseSuccess>;
  11377 + }
  11378 +
  11379 + /** http method */
  11380 + request.method = method;
  11381 + /** request url */
  11382 + request.url = url;
  11383 + return request;
  11384 +})();
  11385 +
  11386 +/** @description request parameter type for postResearchGroupMemberRequestsAdd */
  11387 +export interface PostResearchGroupMemberRequestsAddOption {
  11388 + /**
  11389 + * @description
  11390 + * request
  11391 + */
  11392 + body: {
  11393 + /**
  11394 + @description
  11395 + request */
10751 11396 request: ResearchGroupMemberRequestAddRequest;
10752 11397 };
10753 11398 }
... ... @@ -11573,6 +12218,77 @@ export const postResearchGroupsList = /* #__PURE__ */ (() =&gt; {
11573 12218 return request;
11574 12219 })();
11575 12220  
  12221 +/** @description request parameter type for postResearchGroupsNameSet */
  12222 +export interface PostResearchGroupsNameSetOption {
  12223 + /**
  12224 + * @description
  12225 + * request
  12226 + */
  12227 + body: {
  12228 + /**
  12229 + @description
  12230 + request */
  12231 + request: ResearchGroupListRequest;
  12232 + };
  12233 +}
  12234 +
  12235 +/** @description response type for postResearchGroupsNameSet */
  12236 +export interface PostResearchGroupsNameSetResponse {
  12237 + /**
  12238 + * @description
  12239 + * OK
  12240 + */
  12241 + 200: ServerResult;
  12242 + /**
  12243 + * @description
  12244 + * Created
  12245 + */
  12246 + 201: any;
  12247 + /**
  12248 + * @description
  12249 + * Unauthorized
  12250 + */
  12251 + 401: any;
  12252 + /**
  12253 + * @description
  12254 + * Forbidden
  12255 + */
  12256 + 403: any;
  12257 + /**
  12258 + * @description
  12259 + * Not Found
  12260 + */
  12261 + 404: any;
  12262 +}
  12263 +
  12264 +export type PostResearchGroupsNameSetResponseSuccess =
  12265 + PostResearchGroupsNameSetResponse[200];
  12266 +/**
  12267 + * @description
  12268 + * 课题组名称列表
  12269 + * @tags research-groups-controller
  12270 + * @produces *
  12271 + * @consumes application/json
  12272 + */
  12273 +export const postResearchGroupsNameSet = /* #__PURE__ */ (() => {
  12274 + const method = 'post';
  12275 + const url = '/research/groups/nameSet';
  12276 + function request(
  12277 + option: PostResearchGroupsNameSetOption,
  12278 + ): Promise<PostResearchGroupsNameSetResponseSuccess> {
  12279 + return requester(request.url, {
  12280 + method: request.method,
  12281 + ...option,
  12282 + }) as unknown as Promise<PostResearchGroupsNameSetResponseSuccess>;
  12283 + }
  12284 +
  12285 + /** http method */
  12286 + request.method = method;
  12287 + /** request url */
  12288 + request.url = url;
  12289 + return request;
  12290 +})();
  12291 +
11576 12292 /** @description request parameter type for postServiceBankStatementDeleteBankStatement */
11577 12293 export interface PostServiceBankStatementDeleteBankStatementOption {
11578 12294 /**
... ... @@ -12819,8 +13535,8 @@ export const postServiceConstTradeStatus = /* #__PURE__ */ (() =&gt; {
12819 13535  
12820 13536 /** @description request parameter type for getServiceInvoiceListInvoiceProject */
12821 13537 export interface GetServiceInvoiceListInvoiceProjectOption {
12822   - /** @format int32 */
12823 13538 query?: {
  13539 + createByName?: string;
12824 13540 /**
12825 13541 @format int32 */
12826 13542 current?: number;
... ... @@ -13938,6 +14654,71 @@ export const postServiceInvoiceImportInvoiceDetails = /* #__PURE__ */ (() =&gt; {
13938 14654 return request;
13939 14655 })();
13940 14656  
  14657 +/** @description request parameter type for getServiceInvoiceInvoiceProjectPage */
  14658 +export interface GetServiceInvoiceInvoiceProjectPageOption {
  14659 + /**
  14660 + * @description
  14661 + * dto
  14662 + */
  14663 + body: {
  14664 + /**
  14665 + @description
  14666 + dto */
  14667 + dto: QueryInvoiceProjectDto;
  14668 + };
  14669 +}
  14670 +
  14671 +/** @description response type for getServiceInvoiceInvoiceProjectPage */
  14672 +export interface GetServiceInvoiceInvoiceProjectPageResponse {
  14673 + /**
  14674 + * @description
  14675 + * OK
  14676 + */
  14677 + 200: ServerResult;
  14678 + /**
  14679 + * @description
  14680 + * Unauthorized
  14681 + */
  14682 + 401: any;
  14683 + /**
  14684 + * @description
  14685 + * Forbidden
  14686 + */
  14687 + 403: any;
  14688 + /**
  14689 + * @description
  14690 + * Not Found
  14691 + */
  14692 + 404: any;
  14693 +}
  14694 +
  14695 +export type GetServiceInvoiceInvoiceProjectPageResponseSuccess =
  14696 + GetServiceInvoiceInvoiceProjectPageResponse[200];
  14697 +/**
  14698 + * @description
  14699 + * 查询开票项目
  14700 + * @tags 发票
  14701 + * @produces *
  14702 + */
  14703 +export const getServiceInvoiceInvoiceProjectPage = /* #__PURE__ */ (() => {
  14704 + const method = 'get';
  14705 + const url = '/service/invoice/invoiceProjectPage';
  14706 + function request(
  14707 + option: GetServiceInvoiceInvoiceProjectPageOption,
  14708 + ): Promise<GetServiceInvoiceInvoiceProjectPageResponseSuccess> {
  14709 + return requester(request.url, {
  14710 + method: request.method,
  14711 + ...option,
  14712 + }) as unknown as Promise<GetServiceInvoiceInvoiceProjectPageResponseSuccess>;
  14713 + }
  14714 +
  14715 + /** http method */
  14716 + request.method = method;
  14717 + /** request url */
  14718 + request.url = url;
  14719 + return request;
  14720 +})();
  14721 +
13941 14722 /** @description request parameter type for postServiceInvoiceInvoiceWriteOff */
13942 14723 export interface PostServiceInvoiceInvoiceWriteOffOption {
13943 14724 /**
... ...