Commit d9033a556587e1a994e038f364f05d38d9766998

Authored by 曾国涛
1 parent 0afddbf9

feat(invoice): 优化重开票功能和记录展示

- 在 ReissueModal 组件中添加 disable 属性,根据选中项控制按钮状态
- 优化 ReissueRecord 组件中的发票号码展示,支持换行显示
-增加冲红功能相关逻辑和接口调用
- 调整日期时间范围查询,提高搜索准确性
- 优化备注字段展示,支持模糊查询
.umirc.ts
@@ -14,14 +14,14 @@ export default defineConfig({ @@ -14,14 +14,14 @@ export default defineConfig({
14 }, 14 },
15 proxy: { 15 proxy: {
16 '/api/': { 16 '/api/': {
17 - // target: 'http://localhost:8085/', 17 + target: 'http://localhost:8085/',
18 // target: 'http://192.168.1.6:8085/', 18 // target: 'http://192.168.1.6:8085/',
19 - target: 'http://39.108.227.113:8085/', 19 + //target: 'http://39.108.227.113:8085/',
20 changeOrigin: true, 20 changeOrigin: true,
21 pathRewrite: { '^/api': '' }, 21 pathRewrite: { '^/api': '' },
22 }, 22 },
23 '/previewApi/': { 23 '/previewApi/': {
24 - target: 'http://39.108.227.113:8092/', 24 + //target: 'http://39.108.227.113:8092/',
25 changeOrigin: true, 25 changeOrigin: true,
26 pathRewrite: { '^/previewApi': '' }, 26 pathRewrite: { '^/previewApi': '' },
27 }, 27 },
src/pages/Invoice/Invoice/components/ReissueModal.tsx
@@ -3,7 +3,7 @@ import { postServiceInvoiceReissueInvoices } from '@/services'; @@ -3,7 +3,7 @@ import { postServiceInvoiceReissueInvoices } from '@/services';
3 import { ModalForm, ProFormTextArea } from '@ant-design/pro-components'; 3 import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
4 import { Button, Form, message } from 'antd'; 4 import { Button, Form, message } from 'antd';
5 5
6 -export default ({ invoiceIds, onClose }) => { 6 +export default ({ invoiceIds, onClose, disable }) => {
7 const [form] = Form.useForm<{ name: string; company: string }>(); 7 const [form] = Form.useForm<{ name: string; company: string }>();
8 return ( 8 return (
9 <ModalForm<{ 9 <ModalForm<{
@@ -11,7 +11,11 @@ export default ({ invoiceIds, onClose }) =&gt; { @@ -11,7 +11,11 @@ export default ({ invoiceIds, onClose }) =&gt; {
11 company: string; 11 company: string;
12 }> 12 }>
13 title="重新开票" 13 title="重新开票"
14 - trigger={<Button type="primary">重新开票</Button>} 14 + trigger={
  15 + <Button type="primary" disabled={disable}>
  16 + 重新开票
  17 + </Button>
  18 + }
15 form={form} 19 form={form}
16 autoFocusFirstInput 20 autoFocusFirstInput
17 modalProps={{ 21 modalProps={{
src/pages/Invoice/Invoice/index.tsx
@@ -233,6 +233,7 @@ const InvoiceRecord = () =&gt; { @@ -233,6 +233,7 @@ const InvoiceRecord = () =&gt; {
233 // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom 233 // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom
234 // 注释该行则默认不显示下拉选项 234 // 注释该行则默认不显示下拉选项
235 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT], 235 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  236 + alwaysShowAlert: true,
236 }} 237 }}
237 tableAlertRender={({ selectedRowKeys, onCleanSelected }) => { 238 tableAlertRender={({ selectedRowKeys, onCleanSelected }) => {
238 return ( 239 return (
@@ -252,6 +253,7 @@ const InvoiceRecord = () =&gt; { @@ -252,6 +253,7 @@ const InvoiceRecord = () =&gt; {
252 <Space size={16}> 253 <Space size={16}>
253 <ReissueModal 254 <ReissueModal
254 invoiceIds={selectedRowKeys} 255 invoiceIds={selectedRowKeys}
  256 + disable={selectedRowKeys.length === 0}
255 onClose={() => { 257 onClose={() => {
256 invoiceActionRef.current?.reload(); 258 invoiceActionRef.current?.reload();
257 onCleanSelected(); 259 onCleanSelected();
src/pages/Invoice/ReissueRecord/components/Audit.tsx
1 import { RESPONSE_CODE } from '@/constants/enum'; 1 import { RESPONSE_CODE } from '@/constants/enum';
2 import { postServiceInvoiceReissueAudit } from '@/services'; 2 import { postServiceInvoiceReissueAudit } from '@/services';
3 -import { ModalForm, ProFormText } from '@ant-design/pro-components'; 3 +import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
4 import { Button, Form, message } from 'antd'; 4 import { Button, Form, message } from 'antd';
5 5
6 export default ({ recordIds, onClose }) => { 6 export default ({ recordIds, onClose }) => {
@@ -70,7 +70,7 @@ export default ({ recordIds, onClose }) =&gt; { @@ -70,7 +70,7 @@ export default ({ recordIds, onClose }) =&gt; {
70 return true; 70 return true;
71 }} 71 }}
72 > 72 >
73 - <ProFormText width="xs" name="notes" label="备注" /> 73 + <ProFormTextArea name="notes" label="备注" />
74 </ModalForm> 74 </ModalForm>
75 ); 75 );
76 }; 76 };
src/pages/Invoice/ReissueRecord/index.tsx
@@ -2,8 +2,9 @@ import ButtonConfirm from &#39;@/components/ButtomConfirm&#39;; @@ -2,8 +2,9 @@ import ButtonConfirm from &#39;@/components/ButtomConfirm&#39;;
2 import { RESPONSE_CODE } from '@/constants/enum'; 2 import { RESPONSE_CODE } from '@/constants/enum';
3 import Audit from '@/pages/Invoice/ReissueRecord/components/Audit'; 3 import Audit from '@/pages/Invoice/ReissueRecord/components/Audit';
4 import { 4 import {
5 - postServiceConstBeforeInvoicingInvoiceRecordStatus, 5 + postServiceConstInvoiceReissueRecordStatus,
6 postServiceInvoiceReissueRecordDelete, 6 postServiceInvoiceReissueRecordDelete,
  7 + postServiceInvoiceReissueRecordFlush,
7 postServiceInvoiceReissueRecords, 8 postServiceInvoiceReissueRecords,
8 } from '@/services'; 9 } from '@/services';
9 import { enumToSelect } from '@/utils'; 10 import { enumToSelect } from '@/utils';
@@ -34,7 +35,11 @@ export default () =&gt; { @@ -34,7 +35,11 @@ export default () =&gt; {
34 title: '重开的发票', 35 title: '重开的发票',
35 dataIndex: 'invoiceNumbers', 36 dataIndex: 'invoiceNumbers',
36 render: (_, record) => { 37 render: (_, record) => {
37 - return record.invoiceNumbers?.join(','); 38 + return (
  39 + <div style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>
  40 + {record.invoiceNumbers?.join(',\n')}
  41 + </div>
  42 + );
38 }, 43 },
39 ellipsis: true, 44 ellipsis: true,
40 hideInSearch: true, 45 hideInSearch: true,
@@ -89,17 +94,17 @@ export default () =&gt; { @@ -89,17 +94,17 @@ export default () =&gt; {
89 }, 94 },
90 { 95 {
91 title: '申请人', 96 title: '申请人',
92 - dataIndex: 'createByName', 97 + dataIndex: 'createByNameLike',
93 hideInTable: true, 98 hideInTable: true,
94 }, 99 },
95 { 100 {
96 title: '重开原因', 101 title: '重开原因',
97 - dataIndex: 'notes', 102 + dataIndex: 'notesLike',
98 hideInTable: true, 103 hideInTable: true,
99 }, 104 },
100 { 105 {
101 title: '申请时间', 106 title: '申请时间',
102 - valueType: 'dateRange', 107 + valueType: 'dateTimeRange',
103 hideInTable: true, 108 hideInTable: true,
104 search: { 109 search: {
105 transform: (value) => { 110 transform: (value) => {
@@ -121,7 +126,7 @@ export default () =&gt; { @@ -121,7 +126,7 @@ export default () =&gt; {
121 onFilter: true, 126 onFilter: true,
122 hideInTable: true, 127 hideInTable: true,
123 request: async () => { 128 request: async () => {
124 - const res = await postServiceConstBeforeInvoicingInvoiceRecordStatus(); 129 + const res = await postServiceConstInvoiceReissueRecordStatus();
125 return enumToSelect(res.data); 130 return enumToSelect(res.data);
126 }, 131 },
127 }, 132 },
@@ -146,7 +151,7 @@ export default () =&gt; { @@ -146,7 +151,7 @@ export default () =&gt; {
146 }, 151 },
147 { 152 {
148 title: '冲红时间', 153 title: '冲红时间',
149 - valueType: 'dateRange', 154 + valueType: 'dateTimeRange',
150 hideInTable: true, 155 hideInTable: true,
151 search: { 156 search: {
152 transform: (value) => { 157 transform: (value) => {
@@ -193,6 +198,23 @@ export default () =&gt; { @@ -193,6 +198,23 @@ export default () =&gt; {
193 }} 198 }}
194 /> 199 />
195 ), 200 ),
  201 + record.paths?.includes('flush') && (
  202 + <ButtonConfirm
  203 + key="flush"
  204 + className="p-0"
  205 + title={'确认冲红发票?'}
  206 + text="冲红"
  207 + onConfirm={async () => {
  208 + let res = await postServiceInvoiceReissueRecordFlush({
  209 + data: { id: record.id },
  210 + });
  211 + if (res) {
  212 + message.success(res.message);
  213 + actionRef.current?.reload();
  214 + }
  215 + }}
  216 + />
  217 + ),
196 ]; 218 ];
197 }, 219 },
198 }, 220 },
src/services/definition.ts
@@ -3575,8 +3575,6 @@ export interface ResearchGroupListRequest { @@ -3575,8 +3575,6 @@ export interface ResearchGroupListRequest {
3575 /** @format int32 */ 3575 /** @format int32 */
3576 page?: number; 3576 page?: number;
3577 /** @format int32 */ 3577 /** @format int32 */
3578 - page?: number;  
3579 - /** @format int32 */  
3580 pageSize?: number; 3578 pageSize?: number;
3581 /** @format int32 */ 3579 /** @format int32 */
3582 start?: number; 3580 start?: number;
@@ -4097,7 +4095,6 @@ export interface TicketsVo { @@ -4097,7 +4095,6 @@ export interface TicketsVo {
4097 origin?: string; 4095 origin?: string;
4098 result?: string; 4096 result?: string;
4099 resultAnnexName?: string; 4097 resultAnnexName?: string;
4100 - resultAnnexUrl?: string;  
4101 status?: string; 4098 status?: string;
4102 type?: string; 4099 type?: string;
4103 typeText?: string; 4100 typeText?: string;
@@ -4490,10 +4487,8 @@ export interface ClientCommunicationInfo { @@ -4490,10 +4487,8 @@ export interface ClientCommunicationInfo {
4490 id?: number; 4487 id?: number;
4491 list?: Array<LittleTicketsDO>; 4488 list?: Array<LittleTicketsDO>;
4492 logicDelete?: boolean; 4489 logicDelete?: boolean;
4493 - ticketsAttachments?: string;  
4494 - ticketsDetail?: string; 4490 + ticketsList?: Array<TicketsVo>;
4495 ticketsStatus?: string; 4491 ticketsStatus?: string;
4496 - ticketsType?: string;  
4497 ticketsTypeText?: string; 4492 ticketsTypeText?: string;
4498 /** 4493 /**
4499 * @description 4494 * @description
@@ -4624,10 +4619,22 @@ export interface InvoiceDetail { @@ -4624,10 +4619,22 @@ export interface InvoiceDetail {
4624 4619
4625 export interface InvoiceReissueRecord { 4620 export interface InvoiceReissueRecord {
4626 createByName?: string; 4621 createByName?: string;
  4622 + /**
  4623 + * @description
  4624 + * 创建人名称模糊查询
  4625 + */
4627 createByNameLike?: string; 4626 createByNameLike?: string;
4628 - /** @format date-time */ 4627 + /**
  4628 + * @description
  4629 + * 创建时间大于等于
  4630 + * @format date-time
  4631 + */
4629 createDatetimeGe?: string; 4632 createDatetimeGe?: string;
4630 - /** @format date-time */ 4633 + /**
  4634 + * @description
  4635 + * 创建时间小于等于
  4636 + * @format date-time
  4637 + */
4631 createDatetimeLe?: string; 4638 createDatetimeLe?: string;
4632 /** @format date-time */ 4639 /** @format date-time */
4633 createTime?: string; 4640 createTime?: string;
@@ -4635,24 +4642,61 @@ export interface InvoiceReissueRecord { @@ -4635,24 +4642,61 @@ export interface InvoiceReissueRecord {
4635 current?: number; 4642 current?: number;
4636 /** @format int32 */ 4643 /** @format int32 */
4637 end?: number; 4644 end?: number;
  4645 + /**
  4646 + * @description
  4647 + * 财务经理
  4648 + */
4638 financeManager?: string; 4649 financeManager?: string;
4639 - /** @format date-time */ 4650 + /**
  4651 + * @description
  4652 + * 冲红时间
  4653 + * @format date-time
  4654 + */
4640 flushDatetime?: string; 4655 flushDatetime?: string;
4641 - /** @format date-time */ 4656 + /**
  4657 + * @description
  4658 + * 冲红时间大于等于
  4659 + * @format date-time
  4660 + */
4642 flushDatetimeGe?: string; 4661 flushDatetimeGe?: string;
4643 - /** @format date-time */ 4662 + /**
  4663 + * @description
  4664 + * 冲红时间小于等于
  4665 + * @format date-time
  4666 + */
4644 flushDatetimeLe?: string; 4667 flushDatetimeLe?: string;
  4668 + /**
  4669 + * @description
  4670 + * 冲红状态
  4671 + */
4645 flushStatus?: string; 4672 flushStatus?: string;
4646 flushStatusText?: string; 4673 flushStatusText?: string;
4647 - /** @format int64 */ 4674 + /**
  4675 + * @description
  4676 + * 主键ID
  4677 + * @format int64
  4678 + */
4648 id?: number; 4679 id?: number;
4649 idIn?: Array<number>; 4680 idIn?: Array<number>;
  4681 + /**
  4682 + * @description
  4683 + * 发票ID列表
  4684 + */
4650 invoiceIdIn?: Array<string>; 4685 invoiceIdIn?: Array<string>;
4651 invoiceIds?: Array<number>; 4686 invoiceIds?: Array<number>;
  4687 + /**
  4688 + * @description
  4689 + * 发票号码
  4690 + */
4652 invoiceNumber?: string; 4691 invoiceNumber?: string;
4653 invoiceNumbers?: Array<string>; 4692 invoiceNumbers?: Array<string>;
4654 logicDelete?: boolean; 4693 logicDelete?: boolean;
4655 notes?: string; 4694 notes?: string;
  4695 + /**
  4696 + * @description
  4697 + * 备注
  4698 + */
  4699 + notesLike?: string;
4656 /** @format int32 */ 4700 /** @format int32 */
4657 pageSize?: number; 4701 pageSize?: number;
4658 passed?: boolean; 4702 passed?: boolean;
@@ -4661,6 +4705,10 @@ export interface InvoiceReissueRecord { @@ -4661,6 +4705,10 @@ export interface InvoiceReissueRecord {
4661 reissueStatus?: string; 4705 reissueStatus?: string;
4662 /** @format int32 */ 4706 /** @format int32 */
4663 start?: number; 4707 start?: number;
  4708 + /**
  4709 + * @description
  4710 + * 审核状态
  4711 + */
4664 status?: string; 4712 status?: string;
4665 statusText?: string; 4713 statusText?: string;
4666 /** @format int32 */ 4714 /** @format int32 */
src/services/request.ts
@@ -5919,77 +5919,6 @@ export const postOrderErpAuthGenerateToken = /* #__PURE__ */ (() =&gt; { @@ -5919,77 +5919,6 @@ export const postOrderErpAuthGenerateToken = /* #__PURE__ */ (() =&gt; {
5919 return request; 5919 return request;
5920 })(); 5920 })();
5921 5921
5922 -/** @description request parameter type for postOrderErpAuthGenerateToken */  
5923 -export interface PostOrderErpAuthGenerateTokenOption {  
5924 - /**  
5925 - * @description  
5926 - * tokenApiDto  
5927 - */  
5928 - body: {  
5929 - /**  
5930 - @description  
5931 - tokenApiDto */  
5932 - tokenApiDto: TokenApiDto;  
5933 - };  
5934 -}  
5935 -  
5936 -/** @description response type for postOrderErpAuthGenerateToken */  
5937 -export interface PostOrderErpAuthGenerateTokenResponse {  
5938 - /**  
5939 - * @description  
5940 - * OK  
5941 - */  
5942 - 200: ServerResult;  
5943 - /**  
5944 - * @description  
5945 - * Created  
5946 - */  
5947 - 201: any;  
5948 - /**  
5949 - * @description  
5950 - * Unauthorized  
5951 - */  
5952 - 401: any;  
5953 - /**  
5954 - * @description  
5955 - * Forbidden  
5956 - */  
5957 - 403: any;  
5958 - /**  
5959 - * @description  
5960 - * Not Found  
5961 - */  
5962 - 404: any;  
5963 -}  
5964 -  
5965 -export type PostOrderErpAuthGenerateTokenResponseSuccess =  
5966 - PostOrderErpAuthGenerateTokenResponse[200];  
5967 -/**  
5968 - * @description  
5969 - * 生成token  
5970 - * @tags login-controller  
5971 - * @produces *  
5972 - * @consumes application/json  
5973 - */  
5974 -export const postOrderErpAuthGenerateToken = /* #__PURE__ */ (() => {  
5975 - const method = 'post';  
5976 - const url = '/order/erp/auth/generateToken';  
5977 - function request(  
5978 - option: PostOrderErpAuthGenerateTokenOption,  
5979 - ): Promise<PostOrderErpAuthGenerateTokenResponseSuccess> {  
5980 - return requester(request.url, {  
5981 - method: request.method,  
5982 - ...option,  
5983 - }) as unknown as Promise<PostOrderErpAuthGenerateTokenResponseSuccess>;  
5984 - }  
5985 -  
5986 - /** http method */  
5987 - request.method = method;  
5988 - /** request url */  
5989 - request.url = url;  
5990 - return request;  
5991 -})();  
5992 -  
5993 /** @description request parameter type for postOrderErpAuthLoginByPhone */ 5922 /** @description request parameter type for postOrderErpAuthLoginByPhone */
5994 export interface PostOrderErpAuthLoginByPhoneOption { 5923 export interface PostOrderErpAuthLoginByPhoneOption {
5995 /** 5924 /**
@@ -18227,6 +18156,77 @@ export const postServiceInvoiceReissueRecordDelete = /* #__PURE__ */ (() =&gt; { @@ -18227,6 +18156,77 @@ export const postServiceInvoiceReissueRecordDelete = /* #__PURE__ */ (() =&gt; {
18227 return request; 18156 return request;
18228 })(); 18157 })();
18229 18158
  18159 +/** @description request parameter type for postServiceInvoiceReissueRecordFlush */
  18160 +export interface PostServiceInvoiceReissueRecordFlushOption {
  18161 + /**
  18162 + * @description
  18163 + * dto
  18164 + */
  18165 + body: {
  18166 + /**
  18167 + @description
  18168 + dto */
  18169 + dto: InvoiceReissueRecord;
  18170 + };
  18171 +}
  18172 +
  18173 +/** @description response type for postServiceInvoiceReissueRecordFlush */
  18174 +export interface PostServiceInvoiceReissueRecordFlushResponse {
  18175 + /**
  18176 + * @description
  18177 + * OK
  18178 + */
  18179 + 200: ServerResult;
  18180 + /**
  18181 + * @description
  18182 + * Created
  18183 + */
  18184 + 201: any;
  18185 + /**
  18186 + * @description
  18187 + * Unauthorized
  18188 + */
  18189 + 401: any;
  18190 + /**
  18191 + * @description
  18192 + * Forbidden
  18193 + */
  18194 + 403: any;
  18195 + /**
  18196 + * @description
  18197 + * Not Found
  18198 + */
  18199 + 404: any;
  18200 +}
  18201 +
  18202 +export type PostServiceInvoiceReissueRecordFlushResponseSuccess =
  18203 + PostServiceInvoiceReissueRecordFlushResponse[200];
  18204 +/**
  18205 + * @description
  18206 + * flushReissueRecord
  18207 + * @tags 发票
  18208 + * @produces *
  18209 + * @consumes application/json
  18210 + */
  18211 +export const postServiceInvoiceReissueRecordFlush = /* #__PURE__ */ (() => {
  18212 + const method = 'post';
  18213 + const url = '/service/invoice/reissueRecord/flush';
  18214 + function request(
  18215 + option: PostServiceInvoiceReissueRecordFlushOption,
  18216 + ): Promise<PostServiceInvoiceReissueRecordFlushResponseSuccess> {
  18217 + return requester(request.url, {
  18218 + method: request.method,
  18219 + ...option,
  18220 + }) as unknown as Promise<PostServiceInvoiceReissueRecordFlushResponseSuccess>;
  18221 + }
  18222 +
  18223 + /** http method */
  18224 + request.method = method;
  18225 + /** request url */
  18226 + request.url = url;
  18227 + return request;
  18228 +})();
  18229 +
18230 /** @description request parameter type for postServiceInvoiceReissueRecords */ 18230 /** @description request parameter type for postServiceInvoiceReissueRecords */
18231 export interface PostServiceInvoiceReissueRecordsOption { 18231 export interface PostServiceInvoiceReissueRecordsOption {
18232 /** 18232 /**