import { LinkOutlined, MailOutlined, PhoneOutlined, UserOutlined, WhatsAppOutlined } from "@ant-design/icons"; import { App, Button, Card, Empty, Flex, Select, Spin, Typography, Divider, Modal, List, Row, Col, Tag } from "antd"; import { useEffect, useState, useRef, useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { copy, isEmpty } from "@/utils/commons"; import { Conditional } from "@/components/Conditional"; import useConversationStore from "@/stores/ConversationStore"; import { useOrderStore, OrderLabelDefaultOptions, OrderStatusDefaultOptions } from "@/stores/OrderStore"; import useAuthStore from "@/stores/AuthStore"; import QuotesHistory from "./QuotesHistory"; import ConversationBind from "./../ConversationBind"; import ConversationsNewItem from "./../ConversationsNewItem"; import { useConversationNewItem } from "@/hooks/useConversation"; import EmailDetail from './../Components/EmailDetail'; const CustomerProfile = () => { const { notification, message } = App.useApp(); const [loading, setLoading] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); const [currentOrderNumber, setOrderNumber] = useState(false); const [orderList, setOrderList] = useState([]); const orderCommentRef = useRef(null); const currentOrder = useConversationStore(state => state.currentConversation?.coli_sn || ""); const currentConversationID = useConversationStore(state => state.currentConversation?.sn || ""); const channels = useConversationStore(state => state.currentConversation?.channels); 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, fetchHistoryOrder ] = useOrderStore(s => [ s.orderDetail, s.customerDetail, s.lastQuotation, s.quotationList, s.fetchOrderDetail, s.setOrderPropValue, s.appendOrderComment, s.fetchOtherEmail, s.otherEmailList, s.fetchHistoryOrder ]); const [chatOrder, setChatOrder] = useState(currentOrder); const orderLabelOptions = copy(OrderLabelDefaultOptions); orderLabelOptions.unshift({ value: 0, label: "未设置", disabled: true }); const orderStatusOptions = copy(OrderStatusDefaultOptions); const getHistoryOrder = (email, whatsappid='') => { return fetchHistoryOrder(loginUser.userId, email, whatsappid) .then(orderList => { const mapOrderList = orderList.map(o => { return { value: o.coli_sn, label: o.coli_id } }) mapOrderList.unshift({ value: 0, label: "全部" }); setOrderList(mapOrderList) if (!isEmpty(orderList)) { setChatOrder(currentOrder) } }) } useEffect(() => { setChatOrder(currentOrder) if (currentOrder) { setLoading(true); fetchOrderDetail(currentOrder) .then(result => { setOrderNumber(result.orderDetail.order_no) setChatOrder(result.orderDetail.order_no) const queryEmail = result.customerDetail.email || channels?.email || ''; const queryWA = channels?.whatsapp_phone_number || '' getHistoryOrder(queryEmail, queryWA) }) .finally(() => setLoading(false)) .catch(reason => { notification.error({ message: "查询出错", description: reason.message, placement: "top", duration: 60, }); }); fetchOtherEmail(currentOrder) .then(result => { // console.info(result) }) .finally(() => setLoading(false)) .catch(reason => { notification.error({ message: "查询供应商邮件出错", description: reason.message, placement: "top", duration: 60, }); }); } }, [currentOrder]); let regularText = ""; if (orderDetail.buytime > 0) regularText = "(R" + orderDetail.buytime + ")"; const { openOrderContactConversation } = useConversationNewItem(); const [newChatModalVisible, setNewChatModalVisible] = useState(false); const [newChatFormValues, setNewChatFormValues] = useState({}); const handleNewChat = async values => { const newContact = { wa_id: values.wa_id }; openOrderContactConversation(newContact.wa_id); setNewChatModalVisible(false); }; const handleEmailClick = useCallback((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) { return (
{ setChatOrder(x); updateCurrentConversation({ coli_sn: x }); }} />} actions={[ { setOrderPropValue(currentOrder, "orderstatus", value) .then(() => { message.success("设置成功"); }) .catch(reason => { notification.error({ message: "设置出错", description: reason.message, placement: "top", duration: 60, }); }); }} value={orderDetail.states} options={orderStatusOptions} />, ]}> {customerDetail.name + regularText} {customerDetail.phone} {customerDetail.email} 最新报价 0} whenFalse={暂无报价}>} whenTrue={ <>

 {lastQuotation.lettertitle}

} />
供应商邮件 ( { handleEmailClick(email) }}>
From: {email.SenderReceiver}
Subject: {email.MAI_Subject}
)} /> 表单信息

{ const orderCommnet = orderCommentRef.current.value; if (isEmpty(orderCommnet)) { message.warning("请输入备注后再提交。"); } else { appendOrderComment(loginUser.userId, currentOrder, orderCommnet) .then(() => { message.success("添加成功"); setIsModalOpen(false); }) .catch(reason => { notification.error({ message: "添加出错", description: reason.message, placement: "top", duration: 60, }); }); } orderCommentRef.current.value = ""; }} onCancel={() => { setIsModalOpen(false); }}>
setNewChatModalVisible(false)} />
); } else { return ( 暂无相关订单}> updateCurrentConversation({ coli_sn })} /> ); } }; export default CustomerProfile;