feat: 获取顾问签名, 加载到编辑器

dev/emitter
Lei OT 10 months ago
parent 29aca91b48
commit 34a1b0fd86

@ -4,13 +4,16 @@ import testData from './test1.json';
/**
* 获取顾问签名
* @param {object} { opi_sn }
*/
export const salesSignature = async (opisn, lgc = 1) => {
export const getSalesSignatureAction = async (params) => {
try {
const html = await fetchJSON(`http://202.103.68.35/CustomerManager/english/mailsign.asp`, { WL_SN: opisn, LGC: lgc });
const { result } = await fetchJSON(`${EMAIL_HOST}/email_sign`, params)
const { SignContent: html } = result
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const bodyContent = doc.body.innerHTML;
return bodyContent;
} catch (error) {
return '';

@ -1,10 +1,34 @@
import { useState, useEffect } from 'react'
import { useState, useEffect, useCallback } from 'react'
import { isEmpty } from '@/utils/commons'
import { getEmailDetailAction, postResendEmailAction, } from '@/actions/EmailActions'
import { getEmailDetailAction, postResendEmailAction, getSalesSignatureAction } from '@/actions/EmailActions'
import { App } from 'antd'
import useConversationStore from '@/stores/ConversationStore';
import { msgStatusRenderMapped } from '@/channel/bubbleMsgUtils';
export const useEmailSignature = (opi_sn) => {
const [signature, setSignature] = useState('')
const getSignature = useCallback(async () => {
if (isEmpty(opi_sn)) {
return false
}
try {
const data = await getSalesSignatureAction({ opi_sn })
setSignature(data)
} catch (err) {
console.error(err)
}
}, [opi_sn])
useEffect(() => {
getSignature()
}, [opi_sn])
return { signature, getSignature }
}
/**
* @param mai_sn 邮件编号ID
* @param data 直接传递, 不重复获取

@ -238,7 +238,7 @@ const EmailComposer = ({ ...props }) => {
value={pickEmail}
onChange={(val) => {
setPickEmail(val)
setFromUser(val.opi_sn)
setFromUser(emailListAddrMapped?.[val.value]?.opi_sn)
}}
// variant={'borderless'}
/>

@ -14,7 +14,7 @@ import { cloneDeep, isEmpty, } from '@/utils/commons';
import './EmailEditor.css';
import { postSendEmail } from '@/actions/EmailActions';
import { sentMsgTypeMapped, } from '@/channel/bubbleMsgUtils';
import { EmailBuilder, useEmailDetail } from '@/hooks/useEmail';
import { EmailBuilder, useEmailDetail, useEmailSignature } from '@/hooks/useEmail';
import useSnippetStore from '@/stores/SnippetStore'
import { useOrderStore } from '@/stores/OrderStore'
@ -29,7 +29,7 @@ const getAbstract = (longtext) => {
return abstract;
};
const generateQuoteContent = (mailData) => `<br><br>
const generateQuoteContent = (mailData) => `<br>
<hr>
<p>
<b>
@ -60,7 +60,7 @@ const generateQuoteContent = (mailData) => `<br><br>
</p>
`;
const generateMailContent = (mailData) => `
const generateMailContent = (mailData) => `<br><br>
<p>
${mailData.content}
</p>`
@ -86,7 +86,6 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, oid,
const emailListMatMapped = emailListOption?.reduce((r, v) => ({ ...r, [v.mat_sn]: v }), {});
// console.log('emailListMapped', emailListOption, emailListAddrMapped);
const mai_sn = quoteid;
const { loading: getLoading, mailData } = useEmailDetail(mai_sn, _mailData)
@ -163,6 +162,8 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, oid,
setEmailOPI(_findMat?.opi_sn)
};
const { signature } = useEmailSignature(emailOPI)
const [isRichText, setIsRichText] = useState(mobile === false);
// const [isRichText, setIsRichText] = useState(false); //
const [htmlContent, setHtmlContent] = useState('');
@ -198,10 +199,14 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, oid,
const { info } = mailData
// setShowCc(!isEmpty(mailData.info?.MAI_CS));
const signatureBody = generateMailContent({ content: signature })
const preQuoteBody = generateQuoteContent(mailData)
const _initialContent = isEmpty(mailData.info) ? signatureBody : signatureBody+preQuoteBody
if (!isEmpty(mailData.info) && action !== 'edit') {
setInitialContent(preQuoteBody)
setInitialContent(_initialContent)
}
const _formValues = {
@ -234,11 +239,11 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, oid,
const newEmail = { to: newToEmail, subject: draft?.subject || '' }
form.setFieldsValue(newEmail)
setInitialForm(newEmail)
setInitialContent(draft?.content || '')
setInitialContent((draft?.content || '') + signatureBody)
}
return () => {}
}, [propsSerialize, mailData.info, newToEmail, newFromEmail]);
}, [propsSerialize, mailData.info, signature, newToEmail, newFromEmail]);
const [openPlainTextConfirm, setOpenPlainTextConfirm] = useState(false);
const handlePlainTextOpenChange = ({ target }) => {

Loading…
Cancel
Save