fix: 订单列表: 全选

main
Lei OT 6 months ago
parent 846725d7aa
commit 9c0ac172df

@ -141,6 +141,7 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
current: newCurrent, current: newCurrent,
pagedList: getPagedData(mailList, newCurrent), pagedList: getPagedData(mailList, newCurrent),
})) }))
setSelectedItems([]);
} }
} }
@ -152,6 +153,7 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
current: newCurrent, current: newCurrent,
pagedList: getPagedData(mailList, newCurrent), pagedList: getPagedData(mailList, newCurrent),
})) }))
setSelectedItems([]);
} }
} }
@ -171,7 +173,8 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
checked={selectedItems.some((i) => i.MAI_SN === item.MAI_SN)} checked={selectedItems.some((i) => i.MAI_SN === item.MAI_SN)}
onClick={(e) => { onClick={(e) => {
const isChecked = e.target.checked const isChecked = e.target.checked
const updatedSelection = isChecked ? [...selectedItems, item] : selectedItems.filter((item) => item.MAI_SN !== item.MAI_SN) const noCurrent = selectedItems.filter((i) => i.MAI_SN !== item.MAI_SN);
const updatedSelection = isChecked ? [...noCurrent, item] : noCurrent;
setSelectedItems(updatedSelection) setSelectedItems(updatedSelection)
}}></Checkbox> }}></Checkbox>
</div> </div>
@ -203,12 +206,12 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
<Flex wrap gap='middle' justify={'center'} className='min-w-30 px-1'> <Flex wrap gap='middle' justify={'center'} className='min-w-30 px-1'>
<Tooltip title='全选'> <Tooltip title='全选'>
<Checkbox <Checkbox
indeterminate={selectedItems.length > 0 && selectedItems.length < pagination.pagedList.length} indeterminate={selectedItems.length > 0 && selectedItems.length < Math.min(pagination.current * PAGE_SIZE, (pagination.total - ((pagination.current - 1) * PAGE_SIZE)))}
checked={pagination.pagedList.length === 0 ? false : pagination.pagedList.every((item) => selectedItems.some((selected) => selected.MAI_SN === item.MAI_SN))} checked={pagination.total === 0 ? false : pagination.pagedList.reduce((a, item) => a.concat(item.data), []).every((item) => selectedItems.some((selected) => selected.MAI_SN === item.MAI_SN))}
onChange={(e) => { onChange={(e) => {
const isChecked = e.target.checked const isChecked = e.target.checked
if (isChecked) { if (isChecked) {
setSelectedItems((prev) => [...prev, ...pagination.pagedList]) setSelectedItems(pagination.pagedList.reduce((a, item) => a.concat(item.data), []))
} else { } else {
setSelectedItems([]) setSelectedItems([])
} }

Loading…
Cancel
Save