|
|
|
@ -10,6 +10,7 @@ import LexicalEditor from '@/components/LexicalEditor';
|
|
|
|
|
|
|
|
|
|
import { isEmpty } from '@/utils/commons';
|
|
|
|
|
import './EmailEditor.css';
|
|
|
|
|
import { postSendEmail } from '@/actions/EmailActions';
|
|
|
|
|
|
|
|
|
|
const getAbstract = (longtext) => {
|
|
|
|
|
const lines = longtext.split('\n');
|
|
|
|
@ -46,21 +47,6 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
form.setFieldValue('abstract', getAbstract(textContent));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onHandleSend = () => {
|
|
|
|
|
console.log('onSend callback', '\nisRichText', isRichText);
|
|
|
|
|
// console.log(form.getFieldsValue());
|
|
|
|
|
const body = structuredClone(form.getFieldsValue());
|
|
|
|
|
body.content = isRichText ? htmlContent : textContent;
|
|
|
|
|
body.fromEmail = newFromEmail || fromEmail;
|
|
|
|
|
console.log('body', body);
|
|
|
|
|
form.validateFields().then((values) => {
|
|
|
|
|
form.resetFields();
|
|
|
|
|
});
|
|
|
|
|
// .catch((err) => {})
|
|
|
|
|
|
|
|
|
|
// setOpen(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const [newFromEmail, setNewFromEmail] = useState('');
|
|
|
|
|
const [initialForm, setInitialForm] = useState({});
|
|
|
|
|
const [initialContent, setInitialContent] = useState('');
|
|
|
|
@ -134,7 +120,8 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
setInitialContent(preQuoteBody);
|
|
|
|
|
const _formValues = {
|
|
|
|
|
to: replyToEmail || fromEmail,
|
|
|
|
|
cc: quote.cc,
|
|
|
|
|
cc: quote.cc || '',
|
|
|
|
|
bcc: quote.bcc || '',
|
|
|
|
|
subject: `Re: ${subject}`,
|
|
|
|
|
};
|
|
|
|
|
const forwardValues = { subject: `Fw: ${subject}` };
|
|
|
|
@ -188,9 +175,40 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
return e?.fileList;
|
|
|
|
|
};
|
|
|
|
|
const uploadProps = {
|
|
|
|
|
action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload',
|
|
|
|
|
// action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload',
|
|
|
|
|
// onChange: handleChange,
|
|
|
|
|
// multiple: true,
|
|
|
|
|
fileList,
|
|
|
|
|
beforeUpload: (file) => {
|
|
|
|
|
setFileList(prev => [...prev, file]);
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
onRemove: (file) => {
|
|
|
|
|
const index = fileList.indexOf(file);
|
|
|
|
|
const newFileList = fileList.slice();
|
|
|
|
|
newFileList.splice(index, 1);
|
|
|
|
|
setFileList(newFileList);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onHandleSend = async () => {
|
|
|
|
|
console.log('onSend callback', '\nisRichText', isRichText);
|
|
|
|
|
// console.log(form.getFieldsValue());
|
|
|
|
|
const body = structuredClone(form.getFieldsValue());
|
|
|
|
|
body.mailcontent = isRichText ? htmlContent : textContent;
|
|
|
|
|
body.from = newFromEmail || fromEmail;
|
|
|
|
|
body.attaList = fileList;
|
|
|
|
|
body.opi_sn = 29; // debug:
|
|
|
|
|
body.mat_sn = 278;
|
|
|
|
|
console.log('body', body);
|
|
|
|
|
await form.validateFields();
|
|
|
|
|
await postSendEmail(body);
|
|
|
|
|
// form.validateFields().then((values) => {
|
|
|
|
|
// form.resetFields();
|
|
|
|
|
// });
|
|
|
|
|
// .catch((err) => {})
|
|
|
|
|
|
|
|
|
|
// setOpen(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
@ -233,16 +251,16 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
size='small'
|
|
|
|
|
layout={'inline'}
|
|
|
|
|
variant={'borderless'}
|
|
|
|
|
initialValues={{}}
|
|
|
|
|
// initialValues={{}}
|
|
|
|
|
// onFinish={() => {}}
|
|
|
|
|
className='email-editor-wrapper *:mb-2 *:border-b *:border-t-0 *:border-x-0 *:border-indigo-100 *:border-solid '
|
|
|
|
|
requiredMark={false}
|
|
|
|
|
// labelCol={{ span: 3 }}
|
|
|
|
|
>
|
|
|
|
|
<Form.Item label='收件人' name={'to'} rules={[{ required: true }]} className='w-full'>
|
|
|
|
|
<Form.Item label='收件人' className='w-full'>
|
|
|
|
|
{/* <Space.Compact className='w-full'> */}
|
|
|
|
|
<Flex justify='space-between'>
|
|
|
|
|
<Mentions // todo: 用客人列表
|
|
|
|
|
{/* <Mentions // todo: 用客人列表
|
|
|
|
|
split='; '
|
|
|
|
|
options={[
|
|
|
|
|
{ value: 'lyt@hainatravel.com', label: 'OT' },
|
|
|
|
@ -250,7 +268,10 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
{ value: 'yesmeck', label: 'yesmeck' },
|
|
|
|
|
]}
|
|
|
|
|
placeholder='@'
|
|
|
|
|
/>
|
|
|
|
|
/> */}
|
|
|
|
|
<Form.Item name={'to'} rules={[{ required: true }]} className='flex-1'>
|
|
|
|
|
<Input />
|
|
|
|
|
</Form.Item>
|
|
|
|
|
<Flex gap={4}>
|
|
|
|
|
{!showCc && (
|
|
|
|
|
<Button type='text' onClick={handleShowCc}>
|
|
|
|
@ -292,7 +313,7 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini
|
|
|
|
|
<Input />
|
|
|
|
|
</Form.Item>
|
|
|
|
|
<Form.Item
|
|
|
|
|
name='upload'
|
|
|
|
|
name='atta'
|
|
|
|
|
label=''
|
|
|
|
|
className='w-full py-1 border-b-0'
|
|
|
|
|
valuePropName='fileList'
|
|
|
|
|