perf: 邮件列表: 搜索结果

main
Lei OT 3 days ago
parent 9ed85c81b2
commit eabb53e0a9

@ -384,7 +384,7 @@ export const searchEmailListAction = async ({opi_sn = '', mailboxtype = 'ALL', s
// formData.append('content', content) // formData.append('content', content)
const { errcode, result } = await postForm(`${API_HOST_V3}/mail_search`, formData) const { errcode, result } = await postForm(`${API_HOST_V3}/mail_search`, formData)
const ret = errcode === 0 ? result : [] const ret = errcode === 0 ? result : []
notifyMailboxUpdate({ type: 'maillist-search-result', query: [sender, receiver, subject].filter(s => s).join(' '), data: ret.map(ele => ({...ele, key: ele.MAI_SN})) }) notifyMailboxUpdate({ type: 'maillist-search-result', query: [sender, receiver, subject].filter(s => s).join(' '), data: ret.map(ele => ({...ele, key: ele.MAI_SN, showFolder: true })) })
return ret; return ret;
} }

@ -1,5 +1,5 @@
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { ReloadOutlined, ReadOutlined, RightOutlined, LeftOutlined, SearchOutlined, MailOutlined, DeleteOutlined } from '@ant-design/icons' import { ReloadOutlined, ReadOutlined, RightOutlined, LeftOutlined, SearchOutlined, MailOutlined, DeleteOutlined, CloseOutlined, CloseCircleTwoTone, CloseCircleOutlined } from '@ant-design/icons'
import { Flex, Button, Tooltip, List, Form, Row, Col, Input, Checkbox, DatePicker, Switch, Breadcrumb, Skeleton, Popconfirm } from 'antd' import { Flex, Button, Tooltip, List, Form, Row, Col, Input, Checkbox, DatePicker, Switch, Breadcrumb, Skeleton, Popconfirm } from 'antd'
import { useEmailList } from '@/hooks/useEmail' import { useEmailList } from '@/hooks/useEmail'
import { isEmpty } from '@/utils/commons' import { isEmpty } from '@/utils/commons'
@ -70,8 +70,8 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
const mailItemRender = (item) => { const mailItemRender = (item) => {
const isOrderNode = mailboxDir.COLI_SN > 0 const isOrderNode = mailboxDir.COLI_SN > 0
const orderNumber = isEmpty(item.MAI_COLI_ID) || isOrderNode ? '' : item.MAI_COLI_ID + ' - ' const orderNumber = isEmpty(item.MAI_COLI_ID) || isOrderNode ? '' : item.MAI_COLI_ID + ' - '
const folderName = isOrderNode ? `[${item.FDir}]` : '' const folderName = (item.showFolder) ? `[${item.FDir}] ` : ''
const orderMailType = <span className='text-blue-400 text-xs'>{item.MAT_Name}</span> const orderMailType = item.MAT_Name ? <span className='text-neutral-600 text-xs'>{item.MAT_Name}</span> : ''
const countryName = isEmpty(item.CountryCN) ? '' : '[' + item.CountryCN + '] ' const countryName = isEmpty(item.CountryCN) ? '' : '[' + item.CountryCN + '] '
const mailStateClass = item.MOI_ReadState === 0 ? 'font-bold' : '' const mailStateClass = item.MOI_ReadState === 0 ? 'font-bold' : ''
const hasAtta = item.MAI_Attachment !== 0 ? <AttachmentIcon className='text-blue-500' /> : null const hasAtta = item.MAI_Attachment !== 0 ? <AttachmentIcon className='text-blue-500' /> : null
@ -94,11 +94,15 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
}}> }}>
<Flex gap='small' vertical={true} justify='space-between' className='cursor-pointer'> <Flex gap='small' vertical={true} justify='space-between' className='cursor-pointer'>
<div> <div>
{orderNumber} {folderName}{orderNumber}
<span className={mailStateClass}>{item.MAI_Subject || '[无主题]'}</span> <span className={mailStateClass}>{item.MAI_Subject || '[无主题]'}</span>
{hasAtta} {hasAtta}
</div> </div>
<span className='text-neutral-500 text-wrap break-words break-all '>{countryName + item.SenderReceiver + ' ' + item.SRDate}</span> <Flex dir='col' gap='small' align='center' justify='flex-end' wrap className='text-neutral-500 text-wrap break-words break-all '>
<span className='mr-auto'>{countryName + item.SenderReceiver}</span>
{orderMailType}
<span className=''>{item.SRDate}</span>
</Flex>
</Flex> </Flex>
</div> </div>
</li> </li>
@ -170,6 +174,7 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
} }
})} })}
/> />
{tempBreadcrumb && (<Button type="text" icon={<CloseCircleOutlined />} onClick={() => refresh()} />)}
<Flex align='center' justify='space-between' className='ml-auto'> <Flex align='center' justify='space-between' className='ml-auto'>
<span>已选: {selectedItems.length} </span> <span>已选: {selectedItems.length} </span>
<span> <span>

Loading…
Cancel
Save