import { useState, useEffect } from 'react' import { App, Button, Divider, Avatar } from 'antd' import { LoadingOutlined, ApiOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons'; import { EditIcon, ReplyIcon, ResendIcon, ShareForwardIcon } from '@/components/Icons' import { isEmpty, TagColorStyle } from '@/utils/commons' import EmailEditorPopup from '../Input/EmailEditorPopup' import DnDModal from '@/components/DndModal' import useStyleStore from '@/stores/StyleStore' import { useEmailDetail, } from '@/hooks/useEmail'; import { EMAIL_ATTA_HOST } from '@/config'; import EmailBindFormModal from './EmailBind'; import EmailContent from './EmailContent'; /** * @property {*} emailMsg - 邮件数据. { conversationid, actionId, order_opi, coli_sn, msgOrigin: { from, to, id, email: { subject, mai_sn, } } } */ const EmailDetailInline = ({ mailID, emailMsg={}, disabled=false, ...props }) => { // console.log('emailDetail', emailMsg); const {notification, message} = App.useApp() const { conversationid, actionId, order_opi, coli_sn } = emailMsg const { mai_sn, id } = emailMsg.msgOrigin?.email || emailMsg.msgOrigin || {} // const mailID = mai_sn || id const [action, setAction] = useState('') const [openEmailEditor, setOpenEmailEditor] = useState(false) const [fromEmail, setFromEmail] = useState('') useEffect(() => { setOpenEmailEditor(false) return () => {} }, [mailID]) const onOpenEditor = (msgOrigin, action) => { const { from, to } = msgOrigin setOpenEmailEditor(true) setFromEmail(action === 'edit' ? from : to) setAction(action) // setOpen(false) } const { loading, mailData, orderDetail, postEmailResend } = useEmailDetail(mailID) const [showBindBtn, setShowBindBtn] = useState(false); useEffect(() => { setShowBindBtn(isEmpty(mailData.info?.MAI_COLI_SN)) return () => {} }, [mailData.info?.MAI_COLI_SN]) const handleResend = async () => { if (isEmpty(mai_sn)) { return false } try { await postEmailResend({ mai_sn, conversationid, actionId }) // setOpen(false) } catch (err) { notification.error({ message: "请求失败", description: err.message, placement: "top", duration: 3, }); } } /** * 根据状态, 显示操作 * * 已保存: [] * * 已发送: 回复, 转发 * * 失败: 重发 * todo: disabled 不显示 */ const ActionBtns = ({className, ...props}) => { const { status } = mailData.info let btns = [] // 没有关联订单的邮件`绑定订单` if (showBindBtn) { btns.push( setShowBindBtn(false)} {...{conversationid, mai_sn, showBindBtn}} />) btns.push(); } switch (status) { case 'accepted': break case 'sent': case '': // 接收的邮件没有发送状态 btns.push( ) btns.push( ) break case 'failed': btns.push( ) btns.push( ) break default: break } return (
{btns}
) } return ( <>
{loading ? : null}{mailData.info?.MAI_Subject || emailMsg?.msgOrigin?.subject}
{(mailData.info?.MAI_From || '').substring(0, 1)}
{/* {mailData.info?.fromName} */} {mailData.info?.MAI_From}
{mailData.info?.MAI_SendDate || emailMsg.localDate}
收件人 {mailData.info?.MAI_To}
{mailData.info?.MAI_CS && (
抄送 {mailData.info.MAI_CS}
)} {mailData.info?.bcc && (
密送 {mailData.info.bcc}
)} {mailData.attachments.length > 0 && (
共{mailData.attachments.length}个附件
{mailData.attachments.map((atta) => ( {atta.ATI_Name} ))}
)} {mailData.info?.mailType === 'text/html' ? :
}
) } export default EmailDetailInline