From 09125b32aca1fe067b276a6903a55445fd353bda Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 6 Nov 2024 11:48:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BB=E5=8A=A8=E6=94=B6=E9=82=AE?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/EmailActions.js | 35 ++++++++++++++++++- src/assets/icons/mail-download-line.svg | 1 + src/components/Icons.jsx | 2 ++ .../Online/Components/EmailDetail.jsx | 2 +- .../Online/Components/EmailFetch.jsx | 30 ++++++++++++++++ .../Online/ConversationsList.jsx | 2 ++ 6 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/assets/icons/mail-download-line.svg create mode 100644 src/views/Conversations/Online/Components/EmailFetch.jsx diff --git a/src/actions/EmailActions.js b/src/actions/EmailActions.js index f6c0465..f5198e1 100644 --- a/src/actions/EmailActions.js +++ b/src/actions/EmailActions.js @@ -29,7 +29,7 @@ export const postSendEmail = async (body) => { attaList.forEach(function (item) { formData.append('attachment', item); }); - const {result} = await postForm(`${EMAIL_HOST}/sendmail`, formData); + const { result } = await postForm(`${EMAIL_HOST}/sendmail`, formData); return result; }; @@ -54,3 +54,36 @@ export const getEmailDetailAction = async (param) => { const { result } = await fetchJSON(`${EMAIL_HOST}/getmail`, param); return { info: result.MailInfo?.[0] || {}, content: result.MailContent || '', attachments: result?.AttachList || [] }; } + +/** + * 主动收邮件 + * @param {object} { opi_sn, mai_sn } + * @ignore 用下面的接口代替, 收所有账户 + */ +export const getEmailFetchAction = async (param) => { + const { result } = await fetchJSON(`${EMAIL_HOST}/email_fetch`, param); + return result; +}; + + +/** + * 主动收邮件, 所有账户 + * @param {object} { opi_sn, mai_sn } + */ +export const getAllEmailFetchAction = async (emailList) => { + try { + const promises = emailList.map((eaccount) => fetchJSON(`${EMAIL_HOST}/email_fetch`, { + opi_sn: eaccount.opi_sn, + mat_sn: eaccount.mat_sn, + // 以下是废弃的参数 + externalid: 0, + actionid: 0, + token: 0, + })) + const result = await Promise.all(promises); + return result; + } catch (error) { + console.error('Error:', error); + throw error; + } +}; diff --git a/src/assets/icons/mail-download-line.svg b/src/assets/icons/mail-download-line.svg new file mode 100644 index 0000000..4a884ba --- /dev/null +++ b/src/assets/icons/mail-download-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Icons.jsx b/src/components/Icons.jsx index 53c2465..d352efe 100644 --- a/src/components/Icons.jsx +++ b/src/components/Icons.jsx @@ -12,6 +12,7 @@ import SendPlaneFillSVG from '@/assets/icons/send-plane-fill.svg?react'; import SendPlaneLineSVG from '@/assets/icons/send-plane-line.svg?react'; import ResendLineSVG from '@/assets/icons/reset-left-line.svg?react'; import EditLineSVG from '@/assets/icons/quill-pen-line.svg?react'; +import MailDownloadLineSVG from '@/assets/icons/mail-download-line.svg?react'; export const ReplyIcon = (props) => ; @@ -25,6 +26,7 @@ export const SendPlaneFillIcon = (props) => ; export const ResendIcon = (props) => ; export const EditIcon = (props) => ; +export const MailDownloadIcon = (props) => ; const WABSvg = () => ( diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx index 1d690dd..ecec562 100644 --- a/src/views/Conversations/Online/Components/EmailDetail.jsx +++ b/src/views/Conversations/Online/Components/EmailDetail.jsx @@ -19,7 +19,7 @@ const TagColorStyle = (tag) => { const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { - console.log('emailDetail', emailMsg); + // console.log('emailDetail', emailMsg); const { conversationid, order_opi } = emailMsg const { mai_sn, id } = emailMsg.msgOrigin?.email || emailMsg.msgOrigin || {} // todo: 发送之后, 赋值id, 否则详情打不开 diff --git a/src/views/Conversations/Online/Components/EmailFetch.jsx b/src/views/Conversations/Online/Components/EmailFetch.jsx new file mode 100644 index 0000000..e2da6fe --- /dev/null +++ b/src/views/Conversations/Online/Components/EmailFetch.jsx @@ -0,0 +1,30 @@ +import { createContext, useEffect, useState } from 'react' +import { App, Tooltip, Button } from 'antd' +import { PlusOutlined, LoadingOutlined, HistoryOutlined, FireOutlined, AudioTwoTone } from '@ant-design/icons' +import { getEmailFetchAction, getAllEmailFetchAction } from '@/actions/EmailActions' +import useAuthStore from '@/stores/AuthStore' +import { MailDownloadIcon } from '@/components/Icons' + +const EmailFetch = ({ ...props }) => { + const { message } = App.useApp() + const { userId, emailList } = useAuthStore((state) => state.loginUser) + const [getEmailLoading, setEmailLoading] = useState(false) + const [fetchingText, setFetchingText] = useState('收邮件') + const handleGetEmail = async () => { + setEmailLoading(true) + // const ret = await getEmailFetchAction({ ...{}, opi_sn: userId }) + const ret = await getAllEmailFetchAction(emailList) + // setFetchingText('正在接收邮件...'); + setEmailLoading(false) + message.info('正在接收邮件...') // .info + } + + return ( + <> + + : } /> + + + ) +} +export default EmailFetch diff --git a/src/views/Conversations/Online/ConversationsList.jsx b/src/views/Conversations/Online/ConversationsList.jsx index b5fde52..2db5fe1 100644 --- a/src/views/Conversations/Online/ConversationsList.jsx +++ b/src/views/Conversations/Online/ConversationsList.jsx @@ -13,6 +13,7 @@ import ChatListFilter from './Components/ChatListFilter'; import useStyleStore from '@/stores/StyleStore'; import dayjs from 'dayjs'; import { DATETIME_FORMAT } from '@/config'; +import EmailFetch from './Components/EmailFetch'; /** * [] @@ -259,6 +260,7 @@ const Conversations = () => { // addonBefore={} // enterButton={'Filter'} /> + : } type='text' />