From 0aef1342a90ae65f5ed3c97a0ca7a0899e48c762 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Fri, 1 Nov 2024 15:17:31 +0800 Subject: [PATCH] feat: email dropdown --- .../Online/Components/EmailDetail.jsx | 4 +- .../Online/Input/EmailChannelTab.jsx | 45 +++++++++++++------ .../Online/Input/EmailEditorPopup.jsx | 14 +++--- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx index ce23bd9..05b11bb 100644 --- a/src/views/Conversations/Online/Components/EmailDetail.jsx +++ b/src/views/Conversations/Online/Components/EmailDetail.jsx @@ -20,7 +20,8 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { // console.log('emailMsg', emailMsg); let { conversationid, } = emailMsg - const { mai_sn } = emailMsg.msgtext?.email || {} + // const { mai_sn } = emailMsg.msgtext?.email || {} + const mai_sn = 5036841 // debug: 0 // const [open, setOpen] = useState(false); const [initialPosition, setInitialPosition] = useState({}) const [initialSize, setInitialSize] = useState({}) @@ -173,6 +174,7 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { open={openEmailEditor} setOpen={setOpenEmailEditor} fromEmail={fromEmail} + fromUser={mailData.info?.MAI_OPI_SN} conversationID={conversationid} quote={ReferEmailMsg} initial={{ ...initialPosition, ...initialSize }} diff --git a/src/views/Conversations/Online/Input/EmailChannelTab.jsx b/src/views/Conversations/Online/Input/EmailChannelTab.jsx index 6ca4e62..efa354c 100644 --- a/src/views/Conversations/Online/Input/EmailChannelTab.jsx +++ b/src/views/Conversations/Online/Input/EmailChannelTab.jsx @@ -1,16 +1,39 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { Button, ConfigProvider, Dropdown, Flex } from 'antd'; import { DownOutlined } from '@ant-design/icons'; import EmailEditorPopup from './EmailEditorPopup'; import useStyleStore from '@/stores/StyleStore'; +import useAuthStore from '@/stores/AuthStore'; // import { isEmpty, } from '@/utils/commons'; -// import useConversationStore from '@/stores/ConversationStore'; +import useConversationStore from '@/stores/ConversationStore'; +import { useOrderStore, } from "@/stores/OrderStore"; const EmailComposer = ({ ...props }) => { const [mobile] = useStyleStore((state) => [state.mobile]); + + const {userId, username, emailList} = useAuthStore((state) => state.loginUser); // const websocketOpened = useConversationStore((state) => state.websocketOpened); - // const currentConversation = useConversationStore((state) => state.currentConversation); + const currentConversation = useConversationStore((state) => state.currentConversation); // const talkabled = !isEmpty(currentConversation.sn) && websocketOpened; + const { orderDetail, } = useOrderStore(); + + const emailListOption = emailList?.map(ele => ({ ...ele, label: ele.email, key: ele.email })) || []; + + const [pickEmail, setPickEmail] = useState({}); + const [fromUser, setFromUser] = useState(); + + useEffect(() => { + const order_opi = Number(orderDetail?.opi_sn || userId) + setFromUser(order_opi); + + const find = + emailListOption?.find((ele) => ele.opi_sn === order_opi && ele.default === true) || + emailListOption?.find((ele) => ele.opi_sn === order_opi && ele.backup === true) || + emailListOption?.find((ele) => ele.opi_sn === order_opi) + setPickEmail(find) + return () => {} + }, [orderDetail]) + const [open, setOpen] = useState(false); const [fromEmail, setFromEmail] = useState(''); @@ -18,7 +41,6 @@ const EmailComposer = ({ ...props }) => { setOpen(true); setFromEmail(email_addr); }; - const [pickEmail, setPickEmail] = useState({ label: 'LYT', key: 'lyt@hainatravel.com' }); return ( 新邮件: @@ -27,21 +49,18 @@ const EmailComposer = ({ ...props }) => { // disabled={!talkabled} menu={{ selectable: true, - items: [ - { email: 'lyt@hainatravel.com', label: 'LYT ', key: 'lyt@hainatravel.com' }, - { email: 'lot@hainatravel.com', label: 'LOT ', key: 'lot@hainatravel.com' }, - ], + items: emailListOption, onClick: ({ key }) => { - // todo: 读取邮箱列表 - console.log(key); - setPickEmail({ label: key, key }); + const find = emailListOption?.find(ele => ele.email === key); + setPickEmail(find); openEditor(key); }, + selectedKeys: [pickEmail?.email], }} onClick={() => openEditor(pickEmail.key)} type='primary' className='w-auto' icon={}> - {pickEmail.label} <{pickEmail.key}> + {pickEmail?.email} {/* {[ @@ -57,7 +76,7 @@ const EmailComposer = ({ ...props }) => { ))} */} {/* */} - + {/* */} ); diff --git a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx index 23650b6..5547c6b 100644 --- a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx +++ b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx @@ -6,6 +6,7 @@ import '@dckj/react-better-modal/dist/index.css'; import DnDModal from '@/components/DndModal'; import useStyleStore from '@/stores/StyleStore'; import useConversationStore from '@/stores/ConversationStore'; +import useAuthStore from '@/stores/AuthStore'; import LexicalEditor from '@/components/LexicalEditor'; @@ -22,8 +23,10 @@ const getAbstract = (longtext) => { return abstract; }; -const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, initial = {}, action = 'reply', ...props }) => { +const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, reference, quote = {}, initial = {}, action = 'reply', ...props }) => { const [mobile] = useStyleStore((state) => [state.mobile]); + const [userId, username, emailList] = useAuthStore((state) => [state.loginUser.userId, state.loginUser.username, state.loginUser.emailList]); + const emailListOption = emailList?.map(ele => ({ ...ele, label: ele.email, key: ele.email, value: ele.email })) || []; const [form] = Form.useForm(); @@ -195,9 +198,9 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini body.mailcontent = isRichText ? htmlContent : textContent; body.from = newFromEmail || fromEmail; body.attaList = fileList; - body.opi_sn = 29; // debug: + body.opi_sn = fromUser; body.mat_sn = 278; - // console.log('body', body); + console.log('body', body); const values = await form.validateFields(); const msgObj = { type: 'email', @@ -242,10 +245,7 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini