Merge branch 'main' of github.com:hainatravel/global-sales

dev/emitter
LiaoYijun 10 months ago
commit a9727bccd7

@ -304,7 +304,12 @@ const conversationSlice = (set, get) => ({
// conversationsList: [...conversationsList],
}));
},
updateCurrentConversation: (conversation) => set((state) => ({ currentConversation: { ...state.currentConversation, ...conversation } })),
updateCurrentConversation: (conversation) => {
const { updateConversationItem, currentConversation } = get();
updateConversationItem({...currentConversation, ...conversation})
return set((state) => ({ currentConversation: { ...state.currentConversation, ...conversation } }))
},
updateConversationItem: (conversation) => {
const { conversationsList } = get();
const targetId = conversation.sn;
@ -443,8 +448,10 @@ const messageSlice = (set, get) => ({
"whatsapp_phone_number": message.type === 'email' ? null : message.from,
},
};
conversationsList.splice(targetIndex, 1);
conversationsList.unshift(newConversation);
if (String(targetId)!== '0') {
conversationsList.splice(targetIndex, 1);
conversationsList.unshift(newConversation);
}
// console.log('find in list, i:', targetIndex);
// console.log('find in list, chat updated and Top: \n', JSON.stringify(newConversation, null, 2));
// console.log('list updated : \n', JSON.stringify(conversationsList, null, 2));

@ -40,7 +40,7 @@ const EmailDetail = ({ open, setOpen, emailMsg={}, ...props }) => {
const onOpenEditor = (msgOrigin, action) => {
const { from, to } = msgOrigin
setOpenEmailEditor(true)
setFromEmail(to)
setFromEmail(action === 'edit' ? from : to)
setAction(action)
setOpen(false)
}
@ -120,7 +120,7 @@ const EmailDetail = ({ open, setOpen, emailMsg={}, ...props }) => {
}
return (
<div className={`flex items-center w-full ${className || ''}`}>
<div className={`flex justify-end items-center w-full ${className || ''}`}>
{btns}
</div>
)
@ -140,22 +140,22 @@ const EmailDetail = ({ open, setOpen, emailMsg={}, ...props }) => {
initial={{ top: 74 }}
onMove={onHandleMove}
onResize={onHandleResize}
footer={<ActionBtns className='w-full' />}>
footer={<ActionBtns className='w-full !justify-start' />}>
<div className='email-container flex flex-col gap-2 *:p-2 *:rounded-sm *:border-b *:border-gray-200 *:shadow-1md'>
<div className=' font-bold'>{mailData.info?.MAI_Subject || emailMsg?.msgOrigin?.subject}</div>
<div>
<div className={['flex justify-between', window.innerWidth < 600 ? 'flex-row' : 'flex-row'].join(' ')}>
<div className='flex gap-2 mb-2 items-center'>
<div className={['flex flex-wrap justify-end', window.innerWidth < 600 ? 'flex-col' : 'flex-row '].join(' ')}>
<div className=' grow shrink basis-0 flex flex-wrap gap-2 mb-2 items-center'>
<Avatar className='' style={TagColorStyle(mailData.info?.MAI_From, true)}>
{(mailData.info?.MAI_From || '').substring(0, 1)}
</Avatar>
<div className=' flex flex-col'>
<span className=' font-bold text-base'>{mailData.info?.fromName}</span>
<span className='text-neutral-500'>{mailData.info?.MAI_From}</span>
<div className=' flex flex-col '>
{/* <span className=' font-bold text-base'>{mailData.info?.fromName}</span> */}
<span className='text-neutral-500 text-wrap break-words break-all '>{mailData.info?.MAI_From}</span>
</div>
</div>
<div className='flex flex-col justify-start gap-1 items-end'>
<div className=' shrink-0 flex flex-col justify-start gap-1 items-end'>
<ActionBtns />
<div className='text-xs '>{mailData.info?.MAI_SendDate || emailMsg.localDate}</div>
</div>

@ -99,34 +99,40 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, toEma
const [emailOrder, setEmailOrder] = useState('');
const [emailMat, setEmailMat] = useState('');
const stateReset = () => {
setStickToProps({})
setStickToCid('')
setEmailOrder('')
setEmailOPI('')
setNewFromEmail('')
setNewToEmail('')
}
// : ID,
// , 使focus, ID
// , , ID,
const [stickToCid, setStickToCid] = useState(conversationid);
useEffect(() => {
// console.log('emailEditorPopup effect', open, '\nto', toEmail)
setStickToProps({ fromEmail, fromUser, fromOrder, toEmail, conversationid, quoteid, action });
if (isEmpty(quoteid)) {
// console.log('emailEditorPopup effect', open, '\nto', toEmail)
setStickToProps({ fromEmail, fromUser, fromOrder, toEmail, conversationid, quoteid, action });
setStickToCid(conversationid)
setEmailOrder(fromOrder)
setEmailOPI(fromUser)
setNewFromEmail(fromEmail)
setNewToEmail(toEmail)
setStickToCid(conversationid)
setEmailOrder(fromOrder)
setEmailOPI(fromUser)
setNewFromEmail(fromEmail)
setNewToEmail(toEmail)
const _findMat = emailListAddrMapped?.[fromEmail]?.mat_sn
setEmailMat(_findMat)
const _findMat = emailListAddrMapped?.[fromEmail]?.mat_sn
setEmailMat(_findMat)
if (open !== true) {
form.resetFields()
if (open !== true) {
form.resetFields()
}
}
return () => {
setStickToProps({})
setStickToCid('')
setEmailOrder('')
setEmailOPI('')
setNewFromEmail('')
setNewToEmail('')
stateReset()
}
}, [open])
@ -148,7 +154,7 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, toEma
}
return () => {}
}, [mailData])
}, [mailData, open])
const handleSwitchEmail = (labelValue) => {
const { value } = labelValue
@ -206,11 +212,12 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, fromOrder, toEma
// bcc: quote.bcc || '',
subject: `Re: ${info.MAI_Subject || ''}`,
};
const forwardValues = { subject: `Fw: ${info.MAI_Subject || ''}` };
const forwardValues = { from: newFromEmail, subject: `Fw: ${info.MAI_Subject || ''}` };
if (action === 'reply') {
form.setFieldsValue(_formValues);
setInitialForm(_formValues);
} else if (action === 'forward') {
setStickToCid('0');
form.setFieldsValue(forwardValues);
setInitialForm(forwardValues);
} else if (action === 'edit') {

@ -266,7 +266,7 @@ const InputTemplate = ({ disabled = false, invokeSendMessage }) => {
</div>
{isEmpty(dataSource) && isEmpty(searchContent) ? (
<Tabs items={[
{ key: 'marketing', label: '营销问候', children: <CategoryList key={'utility-templates'} dataSource={templateCMapped?.MARKETING || []} {...{ handleSendTemplate, activeInput, onInput, valueMapped}} />},
{ key: 'marketing', label: '营销', children: <CategoryList key={'utility-templates'} dataSource={templateCMapped?.MARKETING || []} {...{ handleSendTemplate, activeInput, onInput, valueMapped}} />},
{ key: 'utility', label: '持续跟进', children: <CategoryList key={'utility-templates'} dataSource={templateCMapped?.UTILITY || []} {...{ handleSendTemplate, activeInput, onInput, valueMapped}} />},
...(Object.keys(templateLangMapped).map(lang => ({

Loading…
Cancel
Save