diff --git a/.gitignore b/.gitignore index a8dcb06..970a368 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ schema* vonage-client* **/test +*.bak diff --git a/src/actions/EmailActions.js b/src/actions/EmailActions.js index 448a911..e0599b3 100644 --- a/src/actions/EmailActions.js +++ b/src/actions/EmailActions.js @@ -142,6 +142,72 @@ export const fetchEmailBindOrderAction = async (params) => { * @param {object} { opi_sn } */ export const getEmailDirAction = async (params = { opi_sn: '' }) => { + return [ + { + "MDR_SN": 1474, + "MDR_Name": "收件箱", + "MDR_ParentSN": 1, + "MDR_Type": 1, + "MDR_Order": 1 + }, + { + "MDR_SN": 1475, + "MDR_Name": "未读邮件", + "MDR_ParentSN": 1, + "MDR_Type": 2, + "MDR_Order": 2 + }, + { + "MDR_SN": 1476, + "MDR_Name": "已发邮件", + "MDR_ParentSN": 1, + "MDR_Type": 3, + "MDR_Order": 3 + }, + { + "MDR_SN": 1477, + "MDR_Name": "待发邮件", + "MDR_ParentSN": 1, + "MDR_Type": 4, + "MDR_Order": 4 + }, + { + "MDR_SN": 1478, + "MDR_Name": "草稿", + "MDR_ParentSN": 1, + "MDR_Type": 5, + "MDR_Order": 5 + }, + { + "MDR_SN": 1479, + "MDR_Name": "垃圾邮件", + "MDR_ParentSN": 1, + "MDR_Type": 6, + "MDR_Order": 6 + }, + { + "MDR_SN": 1480, + "MDR_Name": "已处理邮件", + "MDR_ParentSN": 1, + "MDR_Type": 7, + "MDR_Order": 7 + }, + { + "MDR_SN": 1504, + "MDR_Name": "客户信息模板", + "MDR_ParentSN": 1, + "MDR_Type": 0, + "MDR_Order": 100 + }, + { + "MDR_SN": 1505, + "MDR_Name": "客户信息模板", + "MDR_ParentSN": 1474, + "MDR_Type": 0, + "MDR_Order": 100 + } +]; + const { errcode, result } = await fetchJSON(`${EMAIL_HOST}/email/dir`, params); return errcode === 0 ? [] : result; } ; diff --git a/src/assets/icons/mail-unread-fill.svg b/src/assets/icons/mail-unread-fill.svg new file mode 100644 index 0000000..fe215b9 --- /dev/null +++ b/src/assets/icons/mail-unread-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mail-unread-line.svg b/src/assets/icons/mail-unread-line.svg new file mode 100644 index 0000000..98f7eb3 --- /dev/null +++ b/src/assets/icons/mail-unread-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Icons.jsx b/src/components/Icons.jsx index 338fa77..d093358 100644 --- a/src/components/Icons.jsx +++ b/src/components/Icons.jsx @@ -15,6 +15,7 @@ import EditLineSVG from '@/assets/icons/quill-pen-line.svg?react'; import MailDownloadLineSVG from '@/assets/icons/mail-download-line.svg?react'; import MailAddLineSVG from '@/assets/icons/mail-add-line.svg?react'; import MailCheckSVG from '@/assets/icons/mail-check-line.svg?react'; +import MailUnreadSVG from '@/assets/icons/mail-unread-line.svg?react'; import TextSVG from '@/assets/icons/text.svg?react'; @@ -32,6 +33,7 @@ export const EditIcon = (props) => ; export const MailDownloadIcon = (props) => ; export const MailAddloadIcon = (props) => ; export const MailCheckIcon = (props) => ; +export const MailUnreadIcon = (props) => ; export const TextIcon = (props) => ; diff --git a/src/views/orders/Follow.jsx b/src/views/orders/Follow.jsx index bd8b7c0..467ea1b 100644 --- a/src/views/orders/Follow.jsx +++ b/src/views/orders/Follow.jsx @@ -3,7 +3,7 @@ import useAuthStore from '@/stores/AuthStore' import { PERM_IMPORT_EMAIL } from '@/stores/AuthStore' import useFormStore from '@/stores/FormStore' import { useOrderStore } from '@/stores/OrderStore' -import { copy, isNotEmpty, isEmpty } from '@/utils/commons' +import { copy, isNotEmpty, isEmpty, groupBy, cloneDeep, sortBy, sortArrayByOrder } from '@/utils/commons' import { WhatsAppOutlined, ImportOutlined, @@ -17,7 +17,8 @@ import { SaveOutlined, PlusOutlined, SearchOutlined, - ReloadOutlined,ReadOutlined, + ReloadOutlined, + ReadOutlined, CompassOutlined, CheckSquareTwoTone, CarryOutTwoTone, @@ -29,68 +30,106 @@ import { FolderTwoTone, CalendarTwoTone, CalendarOutlined, - HeartTwoTone, MoneyCollectTwoTone + HeartTwoTone, + MoneyCollectTwoTone, FolderOutlined, DeleteOutlined, + SendOutlined, + ClockCircleOutlined, + FormOutlined, } from '@ant-design/icons' -import { App, Badge, Empty, Flex, Button, Drawer , Space, Radio, Table, Tabs, Divider, Tag, Tooltip, List, Dropdown , Segmented, Tree, Typography, Input, Descriptions, Checkbox, Layout, Row, Col } from 'antd' +import { + App, + Badge, + Empty, + Flex, + Button, + Drawer, + Space, + Radio, + Table, + Tabs, + Divider, + Tag, + Tooltip, + List, + Dropdown, + Segmented, + Tree, + Typography, + Input, + Descriptions, + Checkbox, + Layout, + Row, + Col, +} from 'antd' import dayjs from 'dayjs' import { useCallback, useEffect, useState } from 'react' +import { InboxIcon, MailCheckIcon, MailUnreadIcon, SendPlaneFillIcon } from '@/components/Icons' import { Link } from 'react-router-dom' import { useShallow } from 'zustand/react/shallow' import { UNREAD_MARK } from '@/actions/ConversationActions' import AdvanceSearchForm from './AdvanceSearchForm' import EmailDetailInline from '../Conversations/Online/Components/EmailDetailInline' +import { getEmailDirAction } from '@/actions/EmailActions' -function OrderGroupTable({ formValues }) { +const EmailDirTypeIcons = { + '0': { component: FolderOutlined, color: '#ffe78f', className: 'text-blue-500' }, + '1': { component: InboxIcon, color: '', className: 'text-indigo-500' }, + '2': { component: MailUnreadIcon, color: '', className: 'text-indigo-500' }, + '3': { component: SendPlaneFillIcon, color: '', className: 'text-primary' }, + '4': { component: ClockCircleOutlined, color: '', className: 'text-yellow-500' }, + '5': { component: FormOutlined, color: '', className: 'text-blue-500' }, + '6': { component: DeleteOutlined, color: '', className: 'text-red-500' }, + '7': { component: MailCheckIcon, color: '', className: 'text-yellow-600' }, +} +const deptMap = new Map([ + ['1', 'CH'], // CH直销组 + ['2', 'CH大客户组'], + ['7', '市场推广'], + ['8', '德语市场'], + ['9', '日语市场'], + ['10', '商旅市场'], + ['11', '法语市场'], + ['12', '西语市场'], + ['13', '英文在线组'], + ['14', '商务Biztravel'], + ['15', 'CH产品'], + ['16', 'APP移动项目组'], + ['17', 'ChinaTravel组'], + ['18', 'CT市场'], + ['20', '俄语市场'], + ['21', '意语市场'], + ['22', '爱游网'], + ['23', '三峡站'], + ['24', '桂林站'], + ['25', '上海站'], + ['26', '北京站'], + ['27', '西藏站'], + ['28', 'AH'], // AH亚洲项目组 + ['29', 'DMC地接组'], + ['30', 'Trippest项目组'], // + ['31', '花梨鹰'], + ['32', 'Daytours板块'], + ['33', 'GH'], // GH项目组 + ['34', 'trippest网站'], + ['35', 'newsletter营销'], +]) - const deptMap = new Map([ - ['1', 'CH直销组'], - ['2', 'CH大客户组'], - ['7', '市场推广'], - ['8', '德语市场'], - ['9', '日语市场'], - ['10', '商旅市场'], - ['11', '法语市场'], - ['12', '西语市场'], - ['13', '英文在线组'], - ['14', '商务Biztravel'], - ['15', 'CH产品'], - ['16', 'APP移动项目组'], - ['17', 'ChinaTravel组'], - ['18', 'CT市场'], - ['20', '俄语市场'], - ['21', '意语市场'], - ['22', '爱游网'], - ['23', '三峡站'], - ['24', '桂林站'], - ['25', '上海站'], - ['26', '北京站'], - ['27', '西藏站'], - ['28', 'AH亚洲项目组'], - ['29', 'DMC地接组'], - ['30', 'Trippest项目组'], - ['31', '花梨鹰'], - ['32', 'Daytours板块'], - ['33', 'GH项目组'], - ['34', 'trippest网站'], - ['35', 'newsletter营销'], - ]) - -} +function OrderGroupTable({ formValues }) {} function Follow() { + const orderList = useOrderStore((state) => state.orderList) + const fetchOrderList = useOrderStore((state) => state.fetchOrderList) - const [openMail, setOpenMail] = useState(false); - const [mailSubject, setSubject] = useState(''); - - const [openOrder, setOpenOrder] = useState(false); -const [collapsed, setCollapsed] = useState(false) + const [openOrder, setOpenOrder] = useState(false) + const [collapsed, setCollapsed] = useState(false) const [formValues, setFormValues] = useFormStore(useShallow((state) => [state.orderFollowForm, state.setOrderFollowForm])) const [advanceChecked, toggleAdvance] = useFormStore(useShallow((state) => [state.orderFollowAdvanceChecked, state.setOrderFollowAdvanceChecked])) const batchImportEmailMessage = useOrderStore((state) => state.batchImportEmailMessage) - const [isPermitted] = useAuthStore((state) => [state.isPermitted]) + const [loginUser, isPermitted] = useAuthStore((state) => [state.loginUser, state.isPermitted]) const handleImportEmail = useCallback(() => { batchImportEmailMessage() @@ -100,17 +139,69 @@ const [collapsed, setCollapsed] = useState(false) setFormValues({ ...values, type: 'advance' }) }, []) - const [activeEmailId, setActiveEmailId] = useState(0); + const [activeEmailId, setActiveEmailId] = useState(0) + + const [mailboxDir, setMailboxDir] = useState([]); + const DirTypeIcon = ({ type }) => { + const Icon = EmailDirTypeIcons[type || '0'].component + const className = EmailDirTypeIcons[type || '0'].className + return + } + + const getOPIEmailDir = async (opi_sn=0) => { + const x = await getEmailDirAction(opi_sn) + const mailboxSort = x.sort(sortBy('MDR_Order')); + const dirs = mailboxSort.map((ele) => { + return { ...ele, key: ele.MDR_SN, title: ele.MDR_Name, icon: } + }) + setMailboxDir(dirs) + } + + const [stickyTreeData, setStickyTreeData] = useState([{ title: '今日任务', key: 'today' }, { title: '待办任务', key: 'todo' }]); + const [deiStickyTree, setDeiStickyTree] = useState({}); + useEffect(() => { + fetchOrderList({ type: 'today' }, loginUser) + getOPIEmailDir(); + return () => {} + }, []) + + // 1新订单;2未读消息;3需一催;4需二催;5需三催;6未处理邮件;入境提醒coli_ordertype=7,余款提醒coli_ordertype=8 + useEffect(() => { + const byDEI = groupBy(orderList, 'OPI_DEI_SN'); + // console.log(byDEI, 'byDEI') + const byState = Object.keys(byDEI).reduce((acc, key) => { + // const stickyIndex0 = byDEI[key].filter(ele => [1, 2, 6].includes(ele.COLI_StateCode)) + // const stickyIndex1 = byDEI[key].filter(ele => ![1, 2, 6].includes(ele.COLI_StateCode)) + const sticky = groupBy(byDEI[key], ele => [1, 2, 6].includes(ele.COLI_StateCode) ? 0 : 1); + // const sticky = groupBy(byDEI[key], ele => [1, 2, 6].includes(ele.COLI_StateCode) ? 'today' : 'todo'); + // console.log(sticky, ';;;;'); + const deiName = deptMap.get(`${key}`); + const treeNode = [{ title: '今日任务', key: 'today', icon: ,children: (sticky[0]||[]).map(o => ({...o, key: o.COLI_SN, title: `(${o.COLI_State})${o.COLI_ID}`})) }, { title: '待办任务', key: 'todo', icon: ,children: (sticky[1] || []).map(o => ({...o, key: o.COLI_SN, title: `(${o.COLI_State})${o.COLI_ID}`})) }]; + // { key, title: deiName, children: sticky[0] }; + return {...acc, [key]: treeNode}; + }, {}); + setDeiStickyTree(byState); + console.log(byState, 'byState') + + + return () => { + + } + }, [orderList]) + + return ( <> - - - + + + - { @@ -118,488 +209,475 @@ const [collapsed, setCollapsed] = useState(false) }} defaultExpandedKeys={['0-0-today-task', '0-1-todo-list']} defaultSelectedKeys={['0-0-0']} - treeData={[ - { - title: '今日任务', - key: '0-0-today-task', - icon: , - children: [ + treeData={[...deiStickyTree['28']||deiStickyTree['30']||[], ...mailboxDir] + // [ + // { + // title: '今日任务', + // key: '0-0-today-task', + // icon: , + // children: [ + // { + // title: '(新订单)HXZ240913082', + // key: '0-0-0', + // }, + // { + // title: '(老邮件)HXZ241017089', + // key: '0-0-1', + // }, + // ], + // }, + // { + // title: '待办任务', + // key: '0-1-todo-list', + // icon: , + // children: [ + // { + // title: '(一催)HXZ250213117', + // key: '0-1-0', + // }, + // { + // title: '(二催)HXZ250213117', + // key: '0-1-1', + // }, + // { + // title: '(三催)HXZ250213117', + // key: '0-1-2', + // }, + // { + // title: '(余款收付)HXZ250209048', + // key: '0-1-3', + // }, + // { + // title: '(入境提醒)HXZ250209048', + // key: '0-1-4', + // }, + // ], + // }, + // { + // title: '草稿', + // key: '0-2-draft', + // icon: , + // }, + // { + // title: '收件箱', + // key: '0-3-inbox', + // icon: , + // children: [ + // { + // title: '1月', + // key: '0-3-0', + // icon: , + // }, + // { + // title: '2月', + // key: '0-3-1', + // icon: , + // }, + // { + // title: '3月', + // key: '0-3-2', + // icon: , + // }, + // { + // title: '4月', + // key: '0-3-3', + // icon: , + // }, + // { + // title: '5月', + // key: '0-3-4', + // icon: , + // children: [ + // { + // title: 'Albee240422193452', + // key: 'Albee240422193452', + // }, + // { + // title: 'Albee240422193285', + // key: 'Albee240422193285', + // }, + // { + // title: 'Albee240422193752', + // key: 'Albee240422193752', + // }, + // { + // title: 'Albee2404221934583', + // key: 'Albee2404221934583', + // }, + // { + // title: 'Albee2404221937836', + // key: 'Albee2404221937836', + // }, + // ], + // }, + // ], + // }, + // { + // title: '已发送', + // key: '0-4-sent', + // icon: , + // }, + // { + // title: '已处理', + // key: '0-5-completed', + // icon: , + // }, + // ] + } + /> + + + + + + + { + console.info('menu', item) + }, + }} + onClick={() => { + console.info('新邮件') + }}> + 新邮件 + + {}} + onPressEnter={(e) => { + return false + }} + placeholder={`邮件主题`} + /> + {}}>高级搜索 + + + + + + + + } /> + + + } /> + + + } /> + + + } + itemLayout='vertical' + size='large' + pagination={false} + dataSource={[ { - title: '(新订单)HXZ240913082', - key: '0-0-0', + key: 5291957, // Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: '250520-LSS250429038 团的 变更 �确认:Japan Fleet', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '(老邮件)HXZ241017089', - key: '0-0-1', + key: 5277561, // Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Your Thailand Private tour by Asia Highlights 超长主题怎么办????????????到框框到得奖看到', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, - ], - }, - { - title: '待办任务', - key: '0-1-todo-list', - icon: , - children: [ { - title: '(一催)HXZ250213117', - key: '0-1-0', + key: 5119909, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Personal information', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '(二催)HXZ250213117', - key: '0-1-1', + key: 5115479, // Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Your Future Trip with Asia Highlights', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '(三催)HXZ250213117', - key: '0-1-2', + key: 5113514, // Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: '回复: 回复:中华游251110-LSS250413051(AH)团计划', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '(余款收付)HXZ250209048', - key: '0-1-3', + key: 5113512, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Greeting from Asia Highlights Alisa', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '(入境提醒)HXZ250209048', - key: '0-1-4', + key: 5113508, // Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Have you made any decisions about your Japan trip', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, - ], - }, - { - title: '草稿', - key: '0-2-draft', - icon: , - }, - { - title: '收件箱', - key: '0-3-inbox', - icon: , - children: [ { - title: '1月', - key: '0-3-0', - icon: , + key: 5112214, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Sri Lanka tour', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '2月', - key: '0-3-1', - icon: , + key: 5095421, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: How do you like the itinerary 3', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '3月', - key: '0-3-2', - icon: , + key: 5095097, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Re: Re: Final cost', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '4月', - key: '0-3-3', - icon: , + key: 5095083, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Reference Number: LSS240628079', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, { - title: '5月', - key: '0-3-4', - icon: , - children: [ - { - title: 'Albee240422193452', - key: 'Albee240422193452', - }, - { - title: 'Albee240422193285', - key: 'Albee240422193285', - }, - { - title: 'Albee240422193752', - key: 'Albee240422193752', - }, - { - title: 'Albee2404221934583', - key: 'Albee2404221934583', - }, - { - title: 'Albee2404221937836', - key: 'Albee2404221937836', - }, - ], + key: 5093980, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Personal information and Hiroshima tour for 2 people', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', }, - ], - }, - { - title: '已发送', - key: '0-4-sent', - icon: , - }, - { - title: '已处理', - key: '0-5-completed', - icon: , - }, - ]} - /> - - - - - - - - - - {console.info('menu', item)}, -}} onClick={() => {console.info('新邮件')}}> - 新邮件 - - {}} - onPressEnter={(e) => { - return false - }} - placeholder={`邮件主题`} - /> - {}} >高级搜索 - - - - - - - - } /> - - - } /> - - - } /> - - } - itemLayout="vertical" - size="large" - pagination={false} - dataSource={[ - { - key: 5291957, // Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: '250520-LSS250429038 团的 变更 �确认:Japan Fleet', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5277561, // Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Your Thailand Private tour by Asia Highlights 超长主题怎么办????????????到框框到得奖看到', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5119909, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Personal information', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5115479, // Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Your Future Trip with Asia Highlights', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5113514, // Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: '回复: 回复:中华游251110-LSS250413051(AH)团计划', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5113512, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Greeting from Asia Highlights Alisa', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5113508, // Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Have you made any decisions about your Japan trip', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5112214, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Sri Lanka tour', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5095421, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: How do you like the itinerary 3', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5095097, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Re: Re: Final cost', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5095083, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Reference Number: LSS240628079', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5093980, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Personal information and Hiroshima tour for 2 people', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - { - key: 5093968, //Math.random().toString(36).substring(2, 9), - description: 'Fran Grundman ', - title: 'Re: Asia Travel Tips /LSS250429038', - mailDate: '2025-05-01 19:21:00', - orderNo: 'LSS250501006', - country: 'Thailand', - }, - ]} - renderItem={item => ( - 回复, - // 转发, - // ]} - extra={ - - } - - > - {console.info('item: ', item); setActiveEmailId(item.key)}} - title={ setSubject(item.title)}>{item.title}} - description={item.description + ' ' + item.mailDate} - /> - {item.content}LSS250501006, Thailand - - )} - /> - - - - - {/* */} - - - - - setCollapsed(value)} collapsedWidth={0} reverseArrow={true}> - - - - LSS250501006 - - - - - - Jorgina(R1) - - - - Thailand - - - - {}}> - 6596823833 - - - - - Jorgina@gmail.com - - - - {}}> - 6596826951 - - - - - 出发日期:2025-09-18,已下计划 - - - 特殊要求: - 在华城市 桂林 对酒店和房型要求 5-star - - - 外联备注: - 泰国马来水灯节 - - - - 表单信息 + { + key: 5093968, //Math.random().toString(36).substring(2, 9), + description: 'Fran Grundman ', + title: 'Re: Asia Travel Tips /LSS250429038', + mailDate: '2025-05-01 19:21:00', + orderNo: 'LSS250501006', + country: 'Thailand', + }, + ]} + renderItem={(item) => ( + 回复, + // 转发, + // ]} + extra={}> + { + console.info('item: ', item) + setActiveEmailId(item.key) + }} + title={ + {}}> + {item.title} + + } + description={item.description + ' ' + item.mailDate} + /> + {item.content}LSS250501006, Thailand + + )} + /> + + + + + {/* */} + + + + setCollapsed(value)} + collapsedWidth={0} + reverseArrow={true}> + + + + LSS250501006 + + + + + + Jorgina(R1) + + + + Thailand + + + + {}}> + 6596823833 + + + + + Jorgina@gmail.com + + + + {}}> + 6596826951 + + + + + 出发日期:2025-09-18,已下计划 + + + 特殊要求: + 在华城市 桂林 对酒店和房型要求 5-star + + + 外联备注: + 泰国马来水灯节 + + + + 表单信息 - - - - - } /> - - - { - setOpenOrder(true) - }}> - 订单状态 - - - - - setOpenMail(false)} - extra={ - - - 回复 - - - 回复全部 - - - 转发 - - - 已处理 - - - } - footer={ - footer - } - > - ', - }, - { - key: '2', - label: '收件人', - children: '', - }, - { - key: '3', - label: '发送日期', - children: '2025-05-16 14:11', - }, -]} /> - {Math.random().toString(36).substring(2, 9)}Some contents... - Some {Math.random().toString(36).substring(2, 9)}contents... - Some contents...{Math.random().toString(36).substring(2, 9)} - + + + + + } /> + + + { + setOpenOrder(true) + }}> + 订单状态 + + + + setOpenOrder(false)} - > - - 是否重要 - - - - - 状态 - - + onClose={() => setOpenOrder(false)}> + + 是否重要 + + + + 状态 + + - - 催信 - - + + 催信 + + - > ) }
{Math.random().toString(36).substring(2, 9)}Some contents...
Some {Math.random().toString(36).substring(2, 9)}contents...
Some contents...{Math.random().toString(36).substring(2, 9)}