import { useState } from 'react' import { App, Button, Divider, Avatar } from 'antd' import { LoadingOutlined, ApiOutlined } 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'; /** * @property {*} emailMsg - 邮件数据. { conversationid, actionId, order_opi, coli_sn, msgOrigin: { from, to, id, email: { subject, mai_sn, } } } */ const EmailDetail = ({ open, setOpen, emailMsg={}, ...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 [initialPosition, setInitialPosition] = useState({}) const [initialSize, setInitialSize] = useState({}) function onHandleMove(e) { const { top, left, width, height } = e setInitialPosition({ top, left }) } function onHandleResize(e) { const { top, left, width, height } = e setInitialPosition({ top, left }) setInitialSize({ width, height }) } const [action, setAction] = useState('') const [openEmailEditor, setOpenEmailEditor] = useState(false) const [fromEmail, setFromEmail] = useState('') const onOpenEditor = (msgOrigin, action) => { const { from, to } = msgOrigin setOpenEmailEditor(true) setFromEmail(action === 'edit' ? from : to) setAction(action) setOpen(false) } const [mobile] = useStyleStore((state) => [state.mobile]) const { loading, mailData, postEmailResend } = useEmailDetail(mailID) 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, }); } } /** * 根据状态, 显示操作 * * 已保存: [] * * 已发送: 回复, 转发 * * 失败: 重发 */ const ActionBtns = ({className, ...props}) => { const { status } = mailData.info let btns = [] // 没有关联订单的邮件`绑定订单` if (isEmpty( mailData.info?.MAI_COLI_SN)) { btns.push( ); 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?.email?.subject} } initial={{ top: 74 }} onMove={onHandleMove} onResize={onHandleResize} footer={}>
{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?.cc && (
抄送: {mailData.info.cc}
)} {mailData.info?.bcc && (
密送: {mailData.info.bcc}
)} {mailData.attachments.length > 0 && (
共{mailData.attachments.length}个附件
{mailData.attachments.map((atta) => ( {atta.ATI_Name} ))}
)}
) } export default EmailDetail