diff --git a/src/actions/EmailActions.js b/src/actions/EmailActions.js index c02f57c..aaf09b8 100644 --- a/src/actions/EmailActions.js +++ b/src/actions/EmailActions.js @@ -1,5 +1,6 @@ import { fetchJSON, postForm } from '@/utils/request'; import { API_HOST, EMAIL_HOST } from '@/config'; +import { isEmpty } from '@/utils/commons'; const parseHTMLString = (html, needText = false) => { const parser = new DOMParser() @@ -89,11 +90,13 @@ 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)); + return { info: { ...encodeEmailInfo(result.MailInfo?.[0] || {}), mailType }, content: mailType === 'text/html' ? html : result.MailContent || '', abstract: bodyText || result.MailContent || '', - attachments: result?.AttachList || [], + attachments, } } diff --git a/src/stores/FormStore.js b/src/stores/FormStore.js index d01c859..f60d169 100644 --- a/src/stores/FormStore.js +++ b/src/stores/FormStore.js @@ -12,11 +12,15 @@ export const useFormStore = create( setMsgHistorySelectMatch: (msgHistorySelectMatch) => set({ msgHistorySelectMatch }), msgListParams: {}, setMsgListParams: (msgListParams) => set(state => ({ msgListParams: {...state.msgListParams, ...msgListParams} })), + ImageAlbum: [], setImageAlbum: (ImageAlbum) => set({ ImageAlbum }), ImagePreviewSrc: '', setImagePreviewSrc: (ImagePreviewSrc) => set({ ImagePreviewSrc }), + EmailList: [], + setEmailList: (EmailList) => set({ EmailList }), + // 订单跟踪页面 orderFollowForm: { type: 'today', diff --git a/src/views/ChatHistory.jsx b/src/views/ChatHistory.jsx index 5daf656..2a41e33 100644 --- a/src/views/ChatHistory.jsx +++ b/src/views/ChatHistory.jsx @@ -9,12 +9,14 @@ import ImageAlbumPreview from './Conversations/History/ImageAlumPreview'; import { flush, pick } from '@/utils/commons'; import { fetchConversationsSearch, CONVERSATION_PAGE_SIZE } from '@/actions/ConversationActions'; import EmailDetail from './Conversations/Online/Components/EmailDetail'; +import SupplierEmailDrawer from './Conversations/Online/Components/EmailListDrawer'; const { Sider, Content } = Layout; const Index = (props) => { const [formValues, setFormValues] = useFormStore((state) => [state.chatHistoryForm, state.setChatHistoryForm]); const [selectedConversation, setSelectedConversation] = useFormStore((state) => [state.chatHistorySelectChat, state.setChatHistorySelectChat]); + const [EmailList, ] = useFormStore((state) => [state.EmailList, ]); const [conversationsListLoading, setConversationsListLoading] = useState(false); const [conversationsList, setConversationsList] = useState([]); @@ -51,10 +53,13 @@ const Index = (props) => { const [emailDetail, setEmailDetail] = useState({}); const [initialPosition, setInitialPosition] = useState({}) const [initialSize, setInitialSize] = useState({}) + const [emailItem, setEmailItem] = useState({}); const onOpenEmail = (emailMsg) => { - setOpenEmailDetail(true); - setEmailDetail({...emailMsg, order_opi: Number(selectedConversation?.opi_sn || 0)}); + // setOpenEmailDetail(true); + // setEmailDetail({...emailMsg, order_opi: Number(selectedConversation?.opi_sn || 0)}); + // console.log(emailMsg); + setEmailItem({ MAI_SN: emailMsg.msgtext?.email?.mai_sn, MAI_Subject: emailMsg.msgtext?.email?.subject, SenderReceiver: '', MAI_SendDate: '' }) } return ( @@ -72,6 +77,7 @@ const Index = (props) => { + diff --git a/src/views/Conversations/History/MessagesList.jsx b/src/views/Conversations/History/MessagesList.jsx index ae74858..a901f79 100644 --- a/src/views/Conversations/History/MessagesList.jsx +++ b/src/views/Conversations/History/MessagesList.jsx @@ -20,6 +20,7 @@ const MessagesList = ({ ...listProps }) => { const [paramsForMsgList, setParamsForMsgList] = useFormStore((state) => [state.msgListParams, state.setMsgListParams]); const [selectMatch, setSelectedMatch] = useFormStore((state) => [state.msgHistorySelectMatch, state.setMsgHistorySelectMatch]); const [setImageAlbumList, setImagePreviewSrc] = useFormStore(useShallow((state) => [state.setImageAlbum, state.setImagePreviewSrc])); + const [ setEmailList] = useFormStore(useShallow((state) => [ state.setEmailList])); const [chatItemMessages, setChatItemMessages] = useState([]); const [messageListPreLoading, setMessageListPreLoading] = useState(false); @@ -110,6 +111,8 @@ const MessagesList = ({ ...listProps }) => { // setParamsForMsgList({ pretime: chatItemMessages[0].msgtime, lasttime: chatItemMessages[chatItemMessages.length - 1].msgtime }); const album = chatItemMessages.filter((ele) => ele.whatsapp_msg_type === 'image').map((ele) => ele.data.uri); setImageAlbumList(album); + const emailList = chatItemMessages.filter((ele) => ele.msg_source === 'email').map(ele => ({...ele, MAI_SN: ele.msgtext?.email?.mai_sn, MAI_Subject: ele.msgtext?.email?.subject, SenderReceiver: ele.from, MAI_SendDate: ele.msgtime, Direction: ele.msg_direction === 'inbound' ? '收' : '发' })).reverse(); + setEmailList(emailList); } return () => {}; }, [chatItemMessages]); diff --git a/src/views/Conversations/Online/Components/EmailContent.jsx b/src/views/Conversations/Online/Components/EmailContent.jsx index f4c050e..0d0344b 100644 --- a/src/views/Conversations/Online/Components/EmailContent.jsx +++ b/src/views/Conversations/Online/Components/EmailContent.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect, useRef } from 'react' -const EmailContent = ({ id, content: MailContent, ...props }) => { +const EmailContent = ({ id, content: MailContent, className='', ...props }) => { const [iframeHeight, setIframeHeight] = useState(800) // Initial height const [content, setContent] = useState(MailContent) const iframeRef = useRef(null) @@ -102,7 +102,7 @@ const EmailContent = ({ id, content: MailContent, ...props }) => { // }, [content]) return ( -
+