You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/src/views/Conversations/Online/Components/EmailQuotation.jsx

93 lines
3.2 KiB
React

import { useEffect, useState } from 'react'
import { App, Button } from 'antd'
import EmailEditorPopup from '../Input/EmailEditorPopup'
import { useOrderStore } from '@/stores/OrderStore'
import useAuthStore from '@/stores/AuthStore'
import useConversationStore from '@/stores/ConversationStore'
import { getEmailQuotationDraftAction } from '@/actions/EmailActions'
import { isEmpty } from '@/utils/commons'
const EmailQuotation = ({ sfi_sn, ...props }) => {
const {notification} = App.useApp()
const currentConversation = useConversationStore((state) => state.currentConversation)
const { userId, username, emailList, email } = useAuthStore((state) => state.loginUser)
const [orderDetail, customerDetail] = useOrderStore((s) => [s.orderDetail, s.customerDetail])
const emailListOption = emailList?.map((ele) => ({ ...ele, label: ele.email, key: ele.email, value: ele.email })) || []
const emailListAddrMapped = emailListOption?.reduce((r, v) => ({ ...r, [v.email]: v }), {})
const [pickEmail, setPickEmail] = useState({ key: email, email })
useEffect(() => {
const order_opi = Number(orderDetail?.opi_sn || userId)
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) ||
emailListOption?.find((ele) => ele.default === true) ||
emailListOption?.find((ele) => ele.backup === true) ||
emailListOption[0]
setPickEmail(find)
return () => {}
}, [orderDetail])
const [draftLoading, setDraftLoading] = useState(false)
const [draft, setDraft] = useState({})
const getEmailDraft = async ({ sfi_sn, coli_sn, lgc = 1 }) => {
if (isEmpty(sfi_sn)) {
return false
}
try {
setDraftLoading(true)
const data = await getEmailQuotationDraftAction({ sfi_sn, coli_sn, lgc })
setDraft(data)
setDraftLoading(false)
} catch (err) {
setDraftLoading(false)
notification.error({
message: '请求失败',
description: err.message || '网络异常',
placement: 'top',
duration: 3,
})
}
}
const [editorOpen, setEditorOpen] = useState(false)
return (
<>
<Button
type='link'
key={'email-now'}
onClick={async () => {
getEmailDraft({ sfi_sn, coli_sn: currentConversation.coli_sn })
setEditorOpen(true)
}}>
邮件
</Button>
<EmailEditorPopup
open={editorOpen}
setOpen={setEditorOpen}
fromEmail={pickEmail.key}
fromUser={orderDetail.opi_sn}
toEmail={currentConversation?.channels?.email || customerDetail?.email}
fromOrder={currentConversation.coli_sn}
oid={orderDetail?.order_no}
conversationid={currentConversation.sn}
// emailMsg={ReferEmailMsg}
// quoteid={mailID}
// initial={{ ...initialPosition, ...initialSize }}
// mailData={mailData}
draft={draft}
action={'new'}
key={`email-quotation-new-popup_${currentConversation.sn}`}
/>
</>
)
}
export default EmailQuotation