From 88b62806274d142ea94c6eed86c64d63d4080b72 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Thu, 28 Nov 2024 11:29:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=93=E5=BC=80=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/ConversationStore.js | 14 +++++++++++ .../Online/Components/EmailDetail.jsx | 5 +++- .../Online/Input/EmailNewBtn.jsx | 2 +- .../Online/order/CustomerProfile.jsx | 24 ++++++++++++++++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/stores/ConversationStore.js b/src/stores/ConversationStore.js index b257ec2..376ccd0 100644 --- a/src/stores/ConversationStore.js +++ b/src/stores/ConversationStore.js @@ -53,6 +53,7 @@ const initialConversationState = { totalNotify: 0, msgListLoading: false, + detailPopupOpen: false, }; const globalNotifySlice = (set) => ({ @@ -467,6 +468,18 @@ const messageSlice = (set, get) => ({ }, }); +/** + * Email + */ +const emailSlice = (set, get) => ({ + emailMsg: { id: -1, conversationid: '', actionId: '', order_opi: '', coli_sn: '', msgOrigin: {} }, + setEmailMsg: (emailMsg) => set({ emailMsg }), + detailPopupOpen: false, + setDetailOpen: (v) => set({ detailPopupOpen: v }), + openDetail: () => set(() => ({ detailPopupOpen: true })), + closeDetail: () => set(() => ({ detailPopupOpen: false })), +}) + export const useConversationStore = create( devtools((set, get) => ({ ...initialConversationState, @@ -479,6 +492,7 @@ export const useConversationStore = create( ...tagsSlice(set, get), ...filterSlice(set, get), ...globalNotifySlice(set, get), + ...emailSlice(set, get), // state actions addError: (error) => set((state) => ({ errors: [...state.errors, error] })), diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx index 7146299..0d6a12a 100644 --- a/src/views/Conversations/Online/Components/EmailDetail.jsx +++ b/src/views/Conversations/Online/Components/EmailDetail.jsx @@ -18,7 +18,10 @@ const TagColorStyle = (tag) => { } } -const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { +/** + * @property {*} emailMsg - 邮件数据. { conversationid, actionId, order_opi, coli_sn, msgOrigin: { from, to, id, email: { subject, mai_sn, } } } + */ +const EmailDetail = ({ open, setOpen, emailMsg={}, ...props }) => { // console.log('emailDetail', emailMsg); diff --git a/src/views/Conversations/Online/Input/EmailNewBtn.jsx b/src/views/Conversations/Online/Input/EmailNewBtn.jsx index 74d2651..b902006 100644 --- a/src/views/Conversations/Online/Input/EmailNewBtn.jsx +++ b/src/views/Conversations/Online/Input/EmailNewBtn.jsx @@ -49,7 +49,7 @@ const EmailNewBtn = ({ ...props }) => { return ( - + {/* 新邮件: */} {/* { const { notification, message } = App.useApp(); @@ -22,6 +23,7 @@ const CustomerProfile = () => { const currentOrder = useConversationStore(state => state.currentConversation?.coli_sn || ""); const currentConversationID = useConversationStore(state => state.currentConversation?.sn || ""); const [updateCurrentConversation] = useConversationStore(state => [state.updateCurrentConversation]); + const [emailMsg, setEmailMsg, detailPopupOpen, setDetailOpen, openDetail] = useConversationStore(state => [state.emailMsg, state.setEmailMsg, state.detailPopupOpen, state.setDetailOpen, state.openDetail]); const loginUser = useAuthStore(state => state.loginUser); const [ orderDetail, customerDetail, lastQuotation, quotationList, fetchOrderDetail, setOrderPropValue, appendOrderComment, fetchOtherEmail, otherEmailList @@ -83,6 +85,23 @@ const CustomerProfile = () => { const renderOtherEmailList = () => { + } + + const handleEmailClick = (emailItem) => { + const emailMsg = { + conversationid: currentConversationID, + order_opi: orderDetail.opi_sn, + coli_sn: currentOrder, + id: emailItem.MAI_SN, + msgOrigin: { + from: '', + to: '', + id: emailItem.MAI_SN, + email: { mai_sn: emailItem.MAI_SN, subject: emailItem.MAI_Subject, id: emailItem.MAI_SN }, + }, + } + setEmailMsg(emailMsg); + openDetail(); } if (currentOrder) { @@ -220,9 +239,10 @@ const CustomerProfile = () => { } renderItem={(email) => ( { console.info('email...') + handleEmailClick(email) }}> { setNewChatModalVisible(false)} /> + + ); } else {