import { useState } from 'react' import { App, Button, Divider, Avatar } from 'antd' import { LoadingOutlined } from '@ant-design/icons'; import { EditIcon, ReplyIcon, ResendIcon, ShareForwardIcon } from '@/components/Icons' import { isEmpty, stringToColour } from '@/utils/commons' import EmailEditorPopup from '../Input/EmailEditorPopup' import DnDModal from '@/components/DndModal' import useStyleStore from '@/stores/StyleStore' import { useEmailDetail, } from '@/hooks/useEmail'; const TagColorStyle = (tag) => { const color = stringToColour(tag) return { color: `${color}`, borderColor: `${color}66`, backgroundColor: `${color}0D`, } } const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { // console.log('emailDetail', emailMsg); const {notification, message} = App.useApp() const { conversationid, actionId, order_opi } = 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 } = msgOrigin setOpenEmailEditor(true) setFromEmail(from) 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 = (props) => { // const { status } = mailData.info // todo: 1 需要后端返回`状态` [accepted, sent, failed] const { status } = { status: 'failed' } // debug: 0 let btns = [] switch (status) { case 'accepted': break case 'sent': btns.push( ) btns.push( ) break case 'failed': btns.push( ) btns.push( ) break default: break } return (
{btns}
) } return ( <> {loading ? : null} {mailData.info?.subject || emailMsg?.msgOrigin?.email?.subject} } initial={{ top: 74 }} onMove={onHandleMove} onResize={onHandleResize} footer={mobile ? : null}>
{mailData.info?.subject || emailMsg?.msgOrigin?.subject}
{(mailData.info?.MAI_From || '').substring(0, 1)}
{mailData.info?.fromName} {mailData.info?.MAI_From}
{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.name} ))}
)}
) } export default EmailDetail