test: 保存邮件发送

2.0/email-builder
Lei OT 11 months ago
parent 4e391b5c81
commit 66806e57ec

@ -1,5 +1,5 @@
import { fetchJSON, postForm } from '@/utils/request';
import { API_HOST } from '@/config';
import { API_HOST, EMAIL_HOST } from '@/config';
import testData from './test1.json';
/**
@ -18,11 +18,16 @@ export const salesSignature = async (opisn, lgc = 1) => {
};
export const postSendEmail = async (body) => {
const { attaList, atta, content, ...bodyData } = body;
const formData = new FormData();
Object.keys(body).forEach(function (key) {
formData.append(key, body[key]);
Object.keys(bodyData).forEach(function (key) {
formData.append(key, bodyData[key]);
});
const { errcode, result } = await postForm(`http://202.103.68.18:888/service-mail/sendmail`, formData);
attaList.forEach(function (item) {
formData.append('attachment', item);
});
const result = await postForm(`${EMAIL_HOST}/sendmail`, formData);
return result;
};
export const getEmailDetailAction = async (param) => {

@ -8,6 +8,7 @@ export const API_HOST = 'http://202.103.68.157:8889/v2';
// export const API_HOST = 'https://p9axztuwd7x8a7.mycht.cn/whatsapp_server';
export const WS_URL = 'wss://p9axztuwd7x8a7.mycht.cn/whatsapp_server'; // prod:
export const VONAGE_URL = 'https://p9axztuwd7x8a7.mycht.cn/vonage-server'; // 语音和视频接口:
export const EMAIL_HOST = 'http://202.103.68.231:888/service-mail';
export const DATE_FORMAT = 'YYYY-MM-DD';
export const DATETIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';

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

Loading…
Cancel
Save