diff --git a/src/actions/EmailActions.js b/src/actions/EmailActions.js index 8e7350e..f46959e 100644 --- a/src/actions/EmailActions.js +++ b/src/actions/EmailActions.js @@ -100,8 +100,8 @@ export const getEmailDetailAction = async (params) => { const { html, bodyContent, bodyText } = mailType === 'text/html' ? parseHTMLString(cleanContent, true) : { html: '', bodyContent: '', bodyText: '' }; - const attachments = (isEmpty(result?.AttachList) ? [] : result.AttachList).filter(ele => isEmpty(ele.ATI_ContentID) || !ele.ATI_Name.includes('ContentFile')); - const insideAttachments = (isEmpty(result?.AttachList) ? [] : result.AttachList).filter(ele => !isEmpty(ele.ATI_ContentID) && ele.ATI_Name.includes('ContentFile')); + const attachments = (isEmpty(result?.AttachList) ? [] : result.AttachList).filter(ele => isEmpty(ele.ATI_ContentID) || ele.ATI_ContentID == '0'); + const insideAttachments = (isEmpty(result?.AttachList) ? [] : result.AttachList).filter(ele => !isEmpty(ele.ATI_ContentID) && ele.ATI_ContentID != '0'); const ret = { info: { ...encodeEmailInfo(result.MailInfo?.[0] || {}), mailType }, diff --git a/src/hooks/useEmail.js b/src/hooks/useEmail.js index 7f9ad78..114815a 100644 --- a/src/hooks/useEmail.js +++ b/src/hooks/useEmail.js @@ -42,7 +42,7 @@ export const useEmailSignature = (opi_sn) => { * - If `number`: 直接传递, 直接获取订单详情 * - If `false`: 不需要获取订单信息 */ -export const useEmailDetail = (mai_sn=0, data={}, oid=0) => { +export const useEmailDetail = (mai_sn=0, data={}, oid=0, markRead=false) => { const {notification} = App.useApp() const [loading, setLoading] = useState(false) const [mailData, setMailData] = useState({ loading, info: { MAI_COLI_SN: 0 }, content: '', attachments: [], AttachList: [] }) @@ -76,11 +76,13 @@ export const useEmailDetail = (mai_sn=0, data={}, oid=0) => { setColiSN(oid === false ? 0 : data.info.MAI_COLI_SN) setLoading(false) // `已读` - updateEmailAction({ - opi_sn: data.info.MAI_OPI_SN, - mai_sn_list: [Number(mai_sn) || maiSN], - set: { read: 1 }, - }) + if (markRead !== false && data.info?.MOI_ReadState !== 1) { + updateEmailAction({ + opi_sn: data.info.MAI_OPI_SN, + mai_sn_list: [Number(mai_sn) || maiSN], + set: { read: 1 }, + }) + } } catch (err) { setLoading(false) notification.error({ diff --git a/src/views/Conversations/Online/Components/EmailDetailInline.jsx b/src/views/Conversations/Online/Components/EmailDetailInline.jsx index 4dc4588..279573d 100644 --- a/src/views/Conversations/Online/Components/EmailDetailInline.jsx +++ b/src/views/Conversations/Online/Components/EmailDetailInline.jsx @@ -17,9 +17,11 @@ const extTypeMapped = { pdf: { icon: FilePdfOutlined, color: '#ad0b00' }, doc: { icon: FileWordOutlined, color: '#103f91' }, docx: { icon: FileWordOutlined, color: '#103f91' }, + rtf: { icon: FileWordOutlined, color: '#103f91' }, xls: { icon: FileExcelOutlined, color: '#0c7d0c' }, xlsx: { icon: FileExcelOutlined, color: '#0c7d0c' }, jpg: { icon: FileImageOutlined, color: '#1985ff' }, + jpeg: { icon: FileImageOutlined, color: '#1985ff' }, png: { icon: FileImageOutlined, color: '#1985ff' }, gif: { icon: FileGifOutlined, color: '#1985ff' }, html: { icon: GlobalOutlined, color: '#1985ff' }, @@ -30,7 +32,7 @@ const extTypeMapped = { /** * @property {*} emailMsg - 邮件数据. { conversationid, actionId, order_opi, coli_sn, msgOrigin: { from, to, id, email: { subject, mai_sn, } } } */ -const EmailDetailInline = ({ mailID, emailMsg = {}, disabled = false, variant, size, ...props }) => { +const EmailDetailInline = ({ mailID, emailMsg = {}, disabled = false, variant, size, autoMark = false, ...props }) => { // console.log('emailDetail', emailMsg); const componentRef = useRef(null); const [compactBtn, setCompactBtn] = useState(size==='small'); @@ -80,7 +82,7 @@ const EmailDetailInline = ({ mailID, emailMsg = {}, disabled = false, variant, s } } - const { loading, mailData, orderDetail, postEmailResend } = useEmailDetail(mailID, null, false) + const { loading, mailData, orderDetail, postEmailResend } = useEmailDetail(mailID, null, false, autoMark) const [showBindBtn, setShowBindBtn] = useState(false) useEffect(() => { setShowBindBtn(mailID ? isEmpty(mailData.info?.MAI_COLI_SN) : false) @@ -301,7 +303,26 @@ const EmailDetailInline = ({ mailID, emailMsg = {}, disabled = false, variant, s /> )} - {mailData.insideAttachments.length > 0 &&  文内附件 ({mailData.insideAttachments.length}) 已在正文显示} + {mailData.insideAttachments.length > 0 &&
+ + 点击展开 文内附件 ({mailData.insideAttachments.length}) 已在正文显示 + + ( + + + + openPopup(`${EMAIL_ATTA_HOST}${atta.ATI_ServerFile}`, atta.ATI_SN)} size='small' className='text-blue-500 cursor-pointer'> + {atta.ATI_Name} + + + + )} + /> +
} )} diff --git a/src/views/orders/Follow.jsx b/src/views/orders/Follow.jsx index 4cd4029..a5863ff 100644 --- a/src/views/orders/Follow.jsx +++ b/src/views/orders/Follow.jsx @@ -158,7 +158,7 @@ function Follow() { onClickEmailItem(item)} currentActiveMailItem={activeEmailId} /> - {}} /> + {}} autoMark={true} />