feat: email dropdown

2.0/email-builder
Lei OT 11 months ago
parent 921cb2e7b9
commit 0aef1342a9

@ -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 }}

@ -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 (
<Flex gap={8} className='p-2 bg-gray-200 rounded rounded-b-none border-gray-300 border-solid border border-b-0 border-x-0' align={'center'} justify={'flex-end'}>
<span>新邮件:</span>
@ -27,21 +49,18 @@ const EmailComposer = ({ ...props }) => {
// disabled={!talkabled}
menu={{
selectable: true,
items: [
{ email: 'lyt@hainatravel.com', label: 'LYT <lyt@hainatravel.com>', key: 'lyt@hainatravel.com' },
{ email: 'lot@hainatravel.com', label: 'LOT <lot@hainatravel.com>', 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={<DownOutlined />}>
{pickEmail.label}&nbsp;&lt;{pickEmail.key}&gt;
{pickEmail?.email}
</Dropdown.Button>
</ConfigProvider>
{/* {[
@ -57,7 +76,7 @@ const EmailComposer = ({ ...props }) => {
</Button>
))} */}
{/* <EmailEditor {...{ open, setOpen }} fromEmail={fromEmail} key={'email-editor'} /> */}
<EmailEditorPopup {...{ open, setOpen }} fromEmail={fromEmail} key={'email-editor-popup'} />
<EmailEditorPopup {...{ open, setOpen }} fromEmail={fromEmail} fromUser={fromUser} key={'email-editor-popup'} />
{/* <EmailEditorPopup2 {...{ open, setOpen }} fromEmail={fromEmail} key={'email-editor-popup2'} /> */}
</Flex>
);

@ -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
</Checkbox>
</Popconfirm>
<Select
options={[
{ key: 'lyt@hainatravel.com', value: 'lyt@hainatravel.com', label: 'LYT <lyt@hainatravel.com>' },
{ key: 'XXX@chinahighlights.com', value: 'XXX@chinahighlights.com', label: 'XXX <XXX@chinahighlights.com>' },
]}
options={emailListOption}
value={newFromEmail || fromEmail}
onChange={(val) => setNewFromEmail(val)}
variant={'borderless'}

Loading…
Cancel
Save