查找订单→邮箱目录

dev/ckeditor
Lei OT 3 months ago
parent 318c2256b3
commit 2d4edd6c64

@ -165,15 +165,17 @@ const todoTypes = {
}
/**
* 顾问的邮箱目录
* @param {object} { opi_sn }
* @param {object} { opi_sn, year, by_start_date, by_success, important, if_want_book, if_thinking }
*/
export const getEmailDirAction = async (params = { opi_sn: '' }) => {
export const getEmailDirAction = async (params = { opi_sn: '' }, retOrder=false) => {
const defaultParams = { opi_sn: 0, year: dayjs().year(), by_start_date: -1, by_success: -1, important: -1, if_want_book: -1, if_thinking: -1 }
const { errcode, result } = await fetchJSON(`${API_HOST_V3}/email_dir`, { ...defaultParams, ...params })
const mailboxSort = result //.sort(sortBy('MDR_Order'));
let tree = buildTree(mailboxSort, { key: 'VKey', parent: 'VParent', name: 'VName', iconIndex: 'ImageIndex', rootKeys: [1], ignoreKeys: [-227001, -227002] })
tree = tree.filter((ele) => ele.key !== 1)
return errcode === 0 ? { [`${params.opi_sn}`]: tree } : { [`${params.opi_sn}`]: [] }
const retTree = errcode === 0 ? tree : [];
const orderList = groupBy(result, row => `${row.IsTrue}`)?.['0'] || [];
return retOrder !== false ? orderList : { [`${params.opi_sn}`]: retTree }
};
export const getTodoOrdersAction = async (params) => {
const opi_arr = params.opisn.split(',')
@ -347,17 +349,13 @@ const updateEmailKeyFun = {
const channel = getEmailChangesChannel()
channel.postMessage(notificationPayload)
// - 当前tab
// console.log(`[EmailDetail] Emitted internal`, EMAIL_CHANNEL_NAME, notificationPayload);
internalEventEmitter.emit(EMAIL_CHANNEL_NAME, notificationPayload);
},
processed: async (params) => {
const readRow0 = await readIndexDB(params.mai_sn_list[0], 'listrow', 'mailbox')
console.log('first000', readRow0);
const listKey = readRow0?.data?.listKey || '';
if (listKey) {
console.log('first', listKey);
const readCache = await readIndexDB(listKey, 'maillist', 'mailbox')
console.log('222', readCache);
const updatedMailList = readCache.data.filter(mai_sn => !params.mai_sn_list.includes(mai_sn));
writeIndexDB([{ key: listKey, data: updatedMailList }], 'maillist', 'mailbox')
// 通知邮件列表数据更新
@ -366,7 +364,6 @@ const updateEmailKeyFun = {
const channel = getEmailChangesChannel()
channel.postMessage(notificationPayload)
// - 当前tab
// console.log(`[EmailDetail] Emitted internal`, EMAIL_CHANNEL_NAME, notificationPayload);
internalEventEmitter.emit(EMAIL_CHANNEL_NAME, notificationPayload);
}
}

@ -155,7 +155,7 @@ export const EmailBindFormModal = ({ mai_sn, conversationid, userId, coliID, onB
onCancel={() => {
setOpen(false)
}}
destroyOnClose>
destroyOnHidden>
{/* <AdvanceSearchForm onSubmit={onSearchOrder} loading={searchLoading} /> */}
<Form
// layout={'inline'}

@ -7,6 +7,7 @@ import { isEmpty } from '@/utils/commons'
import { MailboxDirIcon } from './MailboxDirIcon'
import { AttachmentIcon, MailCheckIcon, MailOpenIcon } from '@/components/Icons'
import NewEmailButton from './NewEmailButton'
import MailOrderSearchModal from './MailOrderSearchModal'
const { RangePicker } = DatePicker
@ -172,7 +173,7 @@ const MailBox = ({ mailboxDir, onMailItemClick, ...props }) => {
markAsProcessed(selectedItems.map((item) => item.MAI_SN)).then(() => setSelectedItems([]))
}}
>已处理</Button>
<Button size='small' icon={<SearchOutlined />}>查找</Button>
<MailOrderSearchModal />
</div>
<div className='bg-white h-auto p-1 flex gap-1 items-center hidden'>
<Form

@ -0,0 +1,120 @@
import { createContext, useEffect, useState } from 'react'
import { ReloadOutlined, ReadOutlined, RightOutlined, LeftOutlined, SearchOutlined, MailOutlined } from '@ant-design/icons'
import { Button, Modal, Form, Input, Checkbox, Select, Radio, DatePicker, Divider } from 'antd'
import dayjs from 'dayjs'
import { getEmailDirAction } from '@/actions/EmailActions'
import { objectMapper } from '@/utils/commons'
import useConversationStore from '@/stores/ConversationStore'
const yearsArray = Array.from({ length: new Date().getFullYear() - 2004 + 1 }, (_, i) => ({ key: 2004 + i, value: 2004 + i, label: 2004 + i }))
const MailOrderSearchModal = ({ ...props }) => {
const [currentMailboxOPI] = useConversationStore((state) => [state.currentMailboxOPI])
const [setMailboxNestedDirsActive, setMailboxActiveNode] = useConversationStore((state) => [state.setMailboxNestedDirsActive, state.setMailboxActiveNode])
const [open, setOpen] = useState(false)
const [form] = Form.useForm()
const [loading, setLoading] = useState(false)
const [formValues, setFormValues] = useState()
const onSubmitSearchMailOrder = async (values) => {
console.log('Received values of form: ', values)
setFormValues(values)
// setOpen(false)
setLoading(true)
const valuesToSub = objectMapper(values, {
year: { key: 'year', transform: (val) => (val ? dayjs(val).year() : '') },
important: { key: 'important', transform: (val) => (val ? '1' : '0') },
by_success: { key: 'by_success', transform: (val) => (val ? '1' : '0') },
if_want_book: { key: 'if_want_book', transform: (val) => (val ? '1' : '0') },
if_thinking: { key: 'if_thinking', transform: (val) => (val ? '1' : '0') },
by_start_date: { key: 'by_start_date', transform: (val) => (val ? '1' : '0') },
})
const result = await getEmailDirAction({ ...valuesToSub, opi_sn: currentMailboxOPI }, true)
console.log('res', result)
setLoading(false)
// setMailboxActiveNode({
// key: 1130915,
// parent: -1,
// iconIndex: 13,
// title: 'QYCAH250101022',
// parentTitle: '1',
// parentIconIndex: 1,
// VKey: 1130915,
// VName: 'QYCAH250101022',
// VParent: -1,
// ImageIndex: 13,
// COLI_SN: 1130915,
// OrderSourceType: 227001,
// IsTrue: 0,
// ApplyDate: '2025-01-01T00:06:00',
// StartDate: '2024-12-16',
// IsSuccess: 0,
// OPI_SN: 586,
// })
setOpen(false)
}
return (
<>
<Button key={'bound'} onClick={() => setOpen(true)} size='small' icon={<SearchOutlined className='' />}>
查找
</Button>
<Modal
width={window.innerWidth < 700 ? '95%' : 960}
title='查找订单' //mask={false}
open={open}
cancelText='关闭'
okText='查找'
confirmLoading={loading}
okButtonProps={{ autoFocus: true, htmlType: 'submit' }}
onCancel={() => setOpen(false)}
// footer={null}
destroyOnHidden
modalRender={(dom) => (
<Form
layout='inline'
size='small'
form={form}
name='searchmailorder_form_in_modal'
initialValues={{ year: dayjs() }}
clearOnDestroy
onFinish={(values) => onSubmitSearchMailOrder(values)}
className='[&_.ant-form-item]:m-2'>
{dom}
</Form>
)}>
<Form.Item name='year' label='年份'>
<DatePicker picker='year' maxDate={dayjs()} />
</Form.Item>
<Form.Item name='important' label='重要程度'>
<Radio.Group
options={[
{ key: '240001', value: '240001', label: '普通' },
{ key: '240002', value: '240002', label: '较重要' },
{ key: '240003', value: '240003', label: '很重要' },
]}
optionType='button'
/>
</Form.Item>
<div className='flex'>
<Form.Item name='by_success' className='' valuePropName='checked'>
<Checkbox>成行订单</Checkbox>
</Form.Item>
<Form.Item name='if_want_book' className='' valuePropName='checked'>
<Checkbox>要预定</Checkbox>
</Form.Item>
<Form.Item name='if_thinking' className='' valuePropName='checked'>
<Checkbox>犹豫中</Checkbox>
</Form.Item>
</div>
<Form.Item name='by_start_date' className='' valuePropName='checked'>
<Checkbox>按出发日期</Checkbox>
</Form.Item>
{/* <Divider className='my-2' /> */}
<Form.Item name='order' label='订单号' className=''>
<Input />
</Form.Item>
</Modal>
</>
)
}
export default MailOrderSearchModal
Loading…
Cancel
Save