Commit 1d87cfcc9e78ab67c42ba91f400e5ae8f939e87a

Authored by zhongnanhuang
1 parent 6b0d7fb3

feat: update 发票对账

src/pages/Invoice/components/BankChooseModal.tsx
@@ -7,28 +7,36 @@ import { @@ -7,28 +7,36 @@ import {
7 } from '@/services'; 7 } from '@/services';
8 import { enumValueToLabel, formatDateTime } from '@/utils'; 8 import { enumValueToLabel, formatDateTime } from '@/utils';
9 import { formatDate } from '@/utils/time'; 9 import { formatDate } from '@/utils/time';
10 -import {  
11 - ActionType,  
12 - ProCard,  
13 - ProFormInstance,  
14 - ProTable,  
15 -} from '@ant-design/pro-components'; 10 +
  11 +import { ActionType, ProCard, ProTable } from '@ant-design/pro-components';
16 import { Button, Divider, Flex, Modal, Tag, message } from 'antd'; 12 import { Button, Divider, Flex, Modal, Tag, message } from 'antd';
17 -import { useEffect, useRef, useState } from 'react'; 13 +import { useRef, useState } from 'react';
18 import { BANK_STATEMENT_COLUMNS, INVOICE_STATUS } from '../constant'; 14 import { BANK_STATEMENT_COLUMNS, INVOICE_STATUS } from '../constant';
19 import '../index.less'; 15 import '../index.less';
20 export default ({ invoiceId, setVisible, onClose }) => { 16 export default ({ invoiceId, setVisible, onClose }) => {
21 const [bankData, setBankData] = useState([]); 17 const [bankData, setBankData] = useState([]);
22 - const [page, setPage] = useState(1);  
23 - const [pageSize, setPageSize] = useState(10);  
24 - const [total, setTotal] = useState(0);  
25 const [selectedStatement, setSelectedStatement] = useState([]); 18 const [selectedStatement, setSelectedStatement] = useState([]);
26 - const [loading, setLoading] = useState(false); 19 + const [selectedStatementIdSet, setSelectedStatementIdSet] = useState(
  20 + new Set(),
  21 + );
  22 +
  23 + // 添加元素到Set
  24 + const addElement = (element) => {
  25 + setSelectedStatementIdSet((prevSet) => new Set([...prevSet, element]));
  26 + };
  27 +
  28 + // 从Set中删除元素
  29 + const removeElement = (element) => {
  30 + setSelectedStatementIdSet((prevSet) => {
  31 + const newSet = new Set(prevSet);
  32 + newSet.delete(element);
  33 + return newSet;
  34 + });
  35 + };
  36 +
27 const [btnLoading, setBtnLoading] = useState(false); 37 const [btnLoading, setBtnLoading] = useState(false);
28 38
29 const actionRef = useRef<ActionType>(); 39 const actionRef = useRef<ActionType>();
30 - const formRef = useRef<ProFormInstance>();  
31 -  
32 const getTableCellText = (target: any) => { 40 const getTableCellText = (target: any) => {
33 if (!target) { 41 if (!target) {
34 return ''; 42 return '';
@@ -41,21 +49,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -41,21 +49,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
41 return target; 49 return target;
42 }; 50 };
43 51
44 - const loadBankData = async (params: any) => {  
45 - setLoading(true);  
46 - let searchParams = formRef?.current?.getFieldFormatValue();  
47 - console.log(searchParams);  
48 - const res = await postServiceBankStatementQueryBankStatement({  
49 - data: { ...searchParams, ...params, status: 'ABNORMAL' },  
50 - });  
51 - if (res) {  
52 - setBankData(res?.data?.data || []);  
53 - setTotal(res?.data?.total || 0);  
54 - }  
55 -  
56 - setLoading(false);  
57 - };  
58 -  
59 /** 52 /**
60 * 加载银行流水列表表格的各个列格式 53 * 加载银行流水列表表格的各个列格式
61 */ 54 */
@@ -65,6 +58,10 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -65,6 +58,10 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
65 let dataIndex = item.dataIndex; 58 let dataIndex = item.dataIndex;
66 let dataType = item.valueType; 59 let dataType = item.valueType;
67 60
  61 + if (item.dataIndex === 'status') {
  62 + newItem.hideInSearch = true;
  63 + }
  64 +
68 newItem.render = (text, record) => { 65 newItem.render = (text, record) => {
69 let textValue = record[dataIndex]; 66 let textValue = record[dataIndex];
70 67
@@ -93,7 +90,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -93,7 +90,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
93 90
94 case 'status': { 91 case 'status': {
95 //这里状态不显示在筛选条件中,只能筛异常的流水 92 //这里状态不显示在筛选条件中,只能筛异常的流水
96 - newItem.hideInSearch = true;  
97 return ( 93 return (
98 <EllipsisDiv 94 <EllipsisDiv
99 text={enumValueToLabel( 95 text={enumValueToLabel(
@@ -133,19 +129,24 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -133,19 +129,24 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
133 key="choose" 129 key="choose"
134 type="link" 130 type="link"
135 onClick={() => { 131 onClick={() => {
136 - //去掉表格中对应的数据  
137 - let newBankData = bankData.filter((item) => {  
138 - return item.id !== record.id;  
139 - });  
140 - setBankData(newBankData);  
141 -  
142 - //添加到已选中区域中  
143 - let newSelectedStatement = [...selectedStatement];  
144 - newSelectedStatement.push(record);  
145 - setSelectedStatement(newSelectedStatement); 132 + //已经选中,取消选中
  133 + if (selectedStatementIdSet.has(record.id)) {
  134 + setSelectedStatement(
  135 + selectedStatement.filter((item) => {
  136 + return item.id !== record.id;
  137 + }),
  138 + );
  139 + removeElement(record.id);
  140 + } else {
  141 + //添加到已选中区域中
  142 + let newSelectedStatement = [...selectedStatement];
  143 + newSelectedStatement.push(record);
  144 + setSelectedStatement(newSelectedStatement);
  145 + addElement(record.id);
  146 + }
146 }} 147 }}
147 > 148 >
148 - 选中 149 + {selectedStatementIdSet.has(record.id) ? '取消选中' : '选中'}
149 </Button>, 150 </Button>,
150 ], 151 ],
151 }); 152 });
@@ -153,68 +154,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -153,68 +154,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
153 return columns; 154 return columns;
154 }; 155 };
155 156
156 - /**  
157 - * 银行流水表  
158 - * @param param0  
159 - * @returns  
160 - */  
161 - const BankTable = ({ actionRef = undefined }) => {  
162 - return (  
163 - <ProTable  
164 - loading={loading}  
165 - columns={bankStatementColumnsInit()}  
166 - actionRef={actionRef}  
167 - formRef={formRef}  
168 - cardBordered  
169 - pagination={{  
170 - pageSize: pageSize,  
171 - current: page,  
172 - total: total,  
173 - onChange: (page, pageSize) => {  
174 - setPage(page);  
175 - setPageSize(pageSize);  
176 - loadBankData({ current: page, pageSize: pageSize });  
177 - },  
178 - }}  
179 - dataSource={bankData}  
180 - columnsState={{  
181 - persistenceKey: 'pro-table-singe-demos',  
182 - persistenceType: 'localStorage',  
183 - defaultValue: {  
184 - option: { fixed: 'right', disable: true },  
185 - },  
186 - onChange(value) {  
187 - console.log('value: ', value);  
188 - },  
189 - }}  
190 - search={{  
191 - labelWidth: 'auto',  
192 - span: 8,  
193 - }}  
194 - options={{  
195 - setting: {  
196 - listsHeight: 400,  
197 - },  
198 - reload: () => {  
199 - loadBankData({ current: 1 });  
200 - },  
201 - }}  
202 - form={{}}  
203 - onSubmit={() => {  
204 - loadBankData({ current: 1 });  
205 - }}  
206 - onReset={() => {  
207 - formRef.current?.resetFields();  
208 - loadBankData({ current: 1 });  
209 - }}  
210 - dateFormatter="string"  
211 - headerTitle="银行流水"  
212 - scroll={{ x: 1400, y: 360 }}  
213 - toolBarRender={() => []}  
214 - />  
215 - );  
216 - };  
217 -  
218 const removeSelectedStatement = (record: any) => { 157 const removeSelectedStatement = (record: any) => {
219 console.log(record); 158 console.log(record);
220 console.log(selectedStatement); 159 console.log(selectedStatement);
@@ -258,11 +197,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -258,11 +197,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
258 return tags; 197 return tags;
259 }; 198 };
260 199
261 - useEffect(() => {  
262 - message.info('1');  
263 - loadBankData({ current: page, pageSize: pageSize });  
264 - }, []);  
265 -  
266 return ( 200 return (
267 <> 201 <>
268 <Modal 202 <Modal
@@ -305,7 +239,59 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -305,7 +239,59 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
305 </Flex> 239 </Flex>
306 </ProCard> 240 </ProCard>
307 241
308 - <BankTable actionRef={actionRef}></BankTable> 242 + <ProTable
  243 + columns={bankStatementColumnsInit()}
  244 + actionRef={actionRef}
  245 + cardBordered
  246 + pagination={{
  247 + pageSize: 10,
  248 + }}
  249 + editable={{
  250 + type: 'multiple',
  251 + onSave: async (rowKey, data) => {
  252 + console.log(rowKey, data);
  253 + },
  254 + actionRender: (row, config, defaultDom) => [
  255 + defaultDom.save,
  256 + defaultDom.cancel,
  257 + ],
  258 + }}
  259 + request={async (params) => {
  260 + const res = await postServiceBankStatementQueryBankStatement({
  261 + data: { ...params },
  262 + });
  263 + if (res) {
  264 + return {
  265 + data: res?.data?.data || [],
  266 + total: res?.data?.total || 0,
  267 + };
  268 + }
  269 + }}
  270 + columnsState={{
  271 + persistenceKey: 'pro-table-singe-demos',
  272 + persistenceType: 'localStorage',
  273 + defaultValue: {
  274 + option: { fixed: 'right', disable: true },
  275 + },
  276 + onChange(value) {
  277 + console.log('value: ', value);
  278 + },
  279 + }}
  280 + rowKey="id"
  281 + search={{
  282 + labelWidth: 'auto',
  283 + }}
  284 + options={{
  285 + setting: {
  286 + listsHeight: 400,
  287 + },
  288 + }}
  289 + form={{}}
  290 + dateFormatter="string"
  291 + headerTitle="银行流水列表"
  292 + scroll={{ x: 1400, y: 360 }}
  293 + toolBarRender={() => []}
  294 + />
309 </Modal> 295 </Modal>
310 </> 296 </>
311 ); 297 );
src/pages/Invoice/index.tsx
@@ -381,7 +381,6 @@ const InvoicePage = () =&gt; { @@ -381,7 +381,6 @@ const InvoicePage = () =&gt; {
381 icon={<PlusOutlined />} 381 icon={<PlusOutlined />}
382 onClick={() => { 382 onClick={() => {
383 setBankImportModalVisible(true); 383 setBankImportModalVisible(true);
384 - // console.log("test")  
385 }} 384 }}
386 type="primary" 385 type="primary"
387 > 386 >