From 775325ca0473b07a50c6d808bae34d54d3dec845 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Tue, 14 May 2024 17:12:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=88=E5=B9=B6=E4=BC=9A=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/ConversationActions.js | 8 ++ .../History/MergeConversationTo.jsx | 126 ++++++++++++++++++ .../Conversations/History/MessagesList.jsx | 6 +- 3 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 src/views/Conversations/History/MergeConversationTo.jsx diff --git a/src/actions/ConversationActions.js b/src/actions/ConversationActions.js index 06618fa..3f849e8 100644 --- a/src/actions/ConversationActions.js +++ b/src/actions/ConversationActions.js @@ -153,6 +153,14 @@ export const fetchMessagesHistory = async (params) => { return parseRenderMessageList(data); } +/** + * @param {object} params { opisn, phone_number_from, phone_number_mergeto } + */ +export const fetchConversationMerge = async (params) => { + const { errcode, result } = await fetchJSON(`${API_HOST}/merge_session`, params); + return errcode !== 0 ? {} : result; +}; + /** * ------------------------------------------------------------------------------------------------ * 未分配 diff --git a/src/views/Conversations/History/MergeConversationTo.jsx b/src/views/Conversations/History/MergeConversationTo.jsx new file mode 100644 index 0000000..c28941a --- /dev/null +++ b/src/views/Conversations/History/MergeConversationTo.jsx @@ -0,0 +1,126 @@ +import { useEffect, useState } from 'react'; +import { Button, Form, Input, Radio, Modal } from 'antd'; +import { MergeCellsOutlined } from '@ant-design/icons'; +import { fetchConversationMerge } from '@/actions/ConversationActions'; +import useAuthStore from '@/stores/AuthStore'; + +export const MergeToForm = ({ currentWAID, initialValues, onFormInstanceReady }) => { + const [form] = Form.useForm(); + + useEffect(() => { + onFormInstanceReady(form); + }, []); + + const [mergeDir, setMergeDir] = useState(initialValues.direction); + + useEffect(() => { + if (mergeDir === 'mergeto') { + form.setFieldValue('phone_number_from', currentWAID); + form.setFieldValue('phone_number_mergeto', ''); + } else { + form.setFieldValue('phone_number_from', ''); + form.setFieldValue('phone_number_mergeto', currentWAID); + } + + return () => {}; + }, [mergeDir]); + + const onValuesChange = (changeValues, allValues) => { + if ('direction' in changeValues) { + setMergeDir(changeValues.direction); + } + }; + + return ( +
+ + + + + + {/* hidden */} + + + {() => ( +
+ {form.getFieldValue('phone_number_from')} + + {form.getFieldValue('phone_number_mergeto')} +
+ )} +
+
+ ); +}; + +const MergeConversationTo = ({ currentWAID, opi_sn, ...props }) => { + const userId = useAuthStore((state) => state.loginUser.userId); + const [open, setOpen] = useState(false); + const [formInstance, setFormInstance] = useState(); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (values) => { + setLoading(true); + await fetchConversationMerge({ ...values, opi_sn }); + setLoading(false); + setOpen(false); + }; + return ( + <> + {['404', '383', '227'].includes(userId) &&