diff --git a/src/stores/OrderStore.js b/src/stores/OrderStore.js index b7227c9..7d8f682 100644 --- a/src/stores/OrderStore.js +++ b/src/stores/OrderStore.js @@ -232,8 +232,31 @@ export const OrderStatusDefaultOptionsMapped = OrderStatusDefaultOptions.reduce( return { ...acc, [String(cur.value)]: cur } }, {}) +/** + * @useage 订单跟踪:高级搜索 + */ export const RemindStateDefaultOptions = [ { value: '1', label: '一催' }, { value: '2', label: '二催' }, { value: '3', label: '三催' } ] + +/** + * @useage 订单信息: 标记状态 + */ +export const remindStatusOptions = [ + { value: '1', label: '已发一催' }, + { value: '2', label: '已发二催' }, + { value: '3', label: '已发三催' }, + { value: 'important', label: '重点团' }, + { value: 'sendsurvey', label: '已发 travel advisor survey' }, +]; + + +/** + * @param {Object} params { coli_sn, remindstate } + */ +export const fetchSetRemindStateAction = async (params) => { + const { errcode, result } = await fetchJSON(`${API_HOST}/SetRemindState`, params); + return errcode === 0 ? result : {}; +}; diff --git a/src/views/Conversations/Online/order/CustomerProfile.jsx b/src/views/Conversations/Online/order/CustomerProfile.jsx index 749514b..2eeecb8 100644 --- a/src/views/Conversations/Online/order/CustomerProfile.jsx +++ b/src/views/Conversations/Online/order/CustomerProfile.jsx @@ -1,5 +1,5 @@ import { LinkOutlined, MailOutlined, PhoneOutlined, UserOutlined, WhatsAppOutlined, FieldNumberOutlined } from "@ant-design/icons"; -import { App, Button, Card, Empty, Flex, Select, Spin, Typography, Divider, Modal, List, Row, Col, Tag } from "antd"; +import { App, Button, Card, Empty, Flex, Select, Spin, Typography, Divider, Modal, List, Row, Col, Tag, Checkbox } from "antd"; import { useEffect, useState, useRef, useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { useShallow } from 'zustand/react/shallow'; @@ -7,7 +7,7 @@ import { useShallow } from 'zustand/react/shallow'; import { copy, isEmpty } from "@/utils/commons"; import { Conditional } from "@/components/Conditional"; import useConversationStore from "@/stores/ConversationStore"; -import { useOrderStore, OrderLabelDefaultOptions, OrderStatusDefaultOptions } from "@/stores/OrderStore"; +import { useOrderStore, OrderLabelDefaultOptions, OrderStatusDefaultOptions, remindStatusOptions, fetchSetRemindStateAction } from "@/stores/OrderStore"; import useAuthStore from "@/stores/AuthStore"; import QuotesHistory from "./QuotesHistory"; import ConversationBind from "./../ConversationBind"; @@ -40,6 +40,7 @@ const CustomerProfile = () => { const [resetOrderStore] = useOrderStore(state => [state.resetOrderStore]) const [chatOrder, setChatOrder] = useState(currentOrder); + const [orderRemindState, setOrderRemindState] = useState(orderDetail.remindstate); const orderLabelOptions = copy(OrderLabelDefaultOptions); orderLabelOptions.unshift({ value: 0, label: "未设置", disabled: true }); @@ -76,6 +77,7 @@ const CustomerProfile = () => { prevOrder.current = currentOrder setOrderNumber(result.orderDetail.order_no) setChatOrder(result.orderDetail.order_no) + setOrderRemindState(String(result.orderDetail.remindstate)); const queryEmail = result.customerDetail.email || channels?.email || ''; const queryWA = result.customerDetail.whatsapp_phone_number || result.customerDetail.phone || channels?.whatsapp_phone_number || '' getHistoryOrder(queryEmail, queryWA) @@ -145,6 +147,24 @@ const CustomerProfile = () => { updateCurrentConversation({ coli_sn }); }; + const handleSetRemindState = async (checkedValue) => { + const state = checkedValue.filter(v => v !== orderRemindState); + const oldState = orderRemindState; + + try { + if (isEmpty(state)) { + setOrderRemindState(null); + } else { + setOrderRemindState(state[0]); + } + await fetchSetRemindStateAction({ coli_sn: chatOrder, remindstate: state }); + message.success('设置成功'); + } catch (error) { + notification.warning({ message: '设置失败', description: error.message, placement: 'top', duration: 60 }); + setOrderRemindState(oldState); + } + } + if (currentOrder) { return (
@@ -253,6 +273,10 @@ const CustomerProfile = () => { + + 催信: + + 最新报价