Merge remote-tracking branch 'origin/客户运营'
commit
fbccb2ebe3
@ -0,0 +1,41 @@
|
||||
import { create } from 'zustand'
|
||||
import { devtools } from 'zustand/middleware'
|
||||
import { fetchJSON, postForm } from '@/utils/request'
|
||||
import { HT3, EMAIL_HOST } from '@/config'
|
||||
import { isNotEmpty, prepareUrl } from '@/utils/commons'
|
||||
|
||||
export const useCustomerRelationStore = create((set, get) => ({
|
||||
loading: false,
|
||||
setLoading: (loading) => set({ loading }),
|
||||
|
||||
tasksList: [],
|
||||
|
||||
fetchSearchTasks: async (data) => {
|
||||
set({ loading: true })
|
||||
const formData = new FormData()
|
||||
for (const key in data) {
|
||||
formData.append(key, data[key])
|
||||
}
|
||||
fetch(`${HT3}/customerrelation/search_tasks`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res.ok) {
|
||||
throw new Error(`HTTP error! status: ${res.status}`)
|
||||
}
|
||||
return res.json()
|
||||
})
|
||||
.then((data) => {
|
||||
set({ tasksList: data })
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Fetch error:', error)
|
||||
})
|
||||
.finally(() => {
|
||||
set({ loading: false })
|
||||
})
|
||||
},
|
||||
}))
|
||||
|
||||
export default useCustomerRelationStore
|
@ -0,0 +1,119 @@
|
||||
import React, { useState } from 'react'
|
||||
import { Form, Input, Button, DatePicker, Select, Table } from 'antd'
|
||||
import dayjs from 'dayjs'
|
||||
import useCustomerRelationStore from '@/stores/CustomerRelationStore'
|
||||
|
||||
const { RangePicker } = DatePicker
|
||||
const { Option } = Select
|
||||
|
||||
const Index = () => {
|
||||
const { loading, tasksList, fetchSearchTasks } = useCustomerRelationStore()
|
||||
|
||||
// 定义默认值
|
||||
const initialFormValues = {
|
||||
crt_coli_id: '', // 客人名字默认空
|
||||
dateRange: [dayjs().startOf('M'), dayjs().endOf('M')], // 默认本月
|
||||
crt_status: '', // 状态默认所有
|
||||
}
|
||||
|
||||
// 搜索表单提交
|
||||
const onFinish = (values) => {
|
||||
const formattedValues = {
|
||||
...values,
|
||||
start_date: values.dateRange ? values.dateRange[0].format('YYYY-MM-DD') : '',
|
||||
end_date: values.dateRange ? values.dateRange[1].endOf('day').format('YYYY-MM-DD HH:mm:ss') : '',
|
||||
}
|
||||
fetchSearchTasks(formattedValues)
|
||||
}
|
||||
|
||||
const DATE_RANGE_PRESETS = [
|
||||
{
|
||||
label: '本周',
|
||||
value: [dayjs().startOf('w'), dayjs().endOf('w')],
|
||||
},
|
||||
{
|
||||
label: '上周',
|
||||
value: [dayjs().startOf('w').subtract(7, 'days'), dayjs().endOf('w').subtract(7, 'days')],
|
||||
},
|
||||
{
|
||||
label: '本月',
|
||||
value: [dayjs().startOf('M'), dayjs().endOf('M')],
|
||||
},
|
||||
{
|
||||
label: '上月',
|
||||
value: [dayjs().subtract(1, 'M').startOf('M'), dayjs().subtract(1, 'M').endOf('M')],
|
||||
},
|
||||
{
|
||||
label: '前三月',
|
||||
value: [dayjs().subtract(2, 'M').startOf('M'), dayjs().endOf('M')],
|
||||
},
|
||||
{
|
||||
label: '本年',
|
||||
value: [dayjs().startOf('y'), dayjs().endOf('y')],
|
||||
},
|
||||
]
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{ title: '团号', dataIndex: 'crt_coli_id', key: 'crt_coli_id' },
|
||||
{ title: '客人', dataIndex: 'crt_mei_firstname', key: 'crt_mei_firstname', render: (text, record) => record.crt_mei_firstname + ' ' + record.crt_mei_lastname },
|
||||
{ title: '国家', dataIndex: 'crt_coi2_country', key: 'crt_coi2_country' },
|
||||
// { title: '时区', dataIndex: 'ct_coi_code', key: 'ct_coi_code' },
|
||||
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'crt_status',
|
||||
key: 'crt_status',
|
||||
render: (status) => {
|
||||
if (status == '0') {
|
||||
return '待发送'
|
||||
} else if (status == '99') {
|
||||
return '已发送'
|
||||
}
|
||||
return '失败'
|
||||
},
|
||||
},
|
||||
{ title: '发送时间', dataIndex: 'crt_send_datetime', key: 'crt_send_datetime' },
|
||||
{ title: '模板', dataIndex: 'crt_template', key: 'crt_template' },
|
||||
{ title: 'WhatsApp', dataIndex: 'crt_whatsapp', key: 'crt_whatsapp' },
|
||||
{ title: '会话ID', dataIndex: 'crt_conversation_id', key: 'crt_conversation_id' },
|
||||
{ title: '消息ID', dataIndex: 'crt_message_id', key: 'crt_message_id' },
|
||||
// { title: '邮箱', dataIndex: 'crt_mei_maillist', key: 'crt_mei_maillist' },
|
||||
// { title: '创建时间', dataIndex: 'ct_datetime', key: 'ct_datetime' },
|
||||
// { title: '客人国家', dataIndex: 'crt_mei_country', key: 'crt_mei_country' },
|
||||
|
||||
]
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* 搜索栏 */}
|
||||
<Form layout='inline' onFinish={onFinish} style={{ marginBottom: 24 }} initialValues={initialFormValues}>
|
||||
<Form.Item label='团号' name='crt_coli_id'>
|
||||
<Input placeholder='输入团号' />
|
||||
</Form.Item>
|
||||
<Form.Item label='任务时间' name='dateRange'>
|
||||
<RangePicker allowClear={true} inputReadOnly={true} presets={DATE_RANGE_PRESETS} />
|
||||
</Form.Item>
|
||||
<Form.Item label='状态' name='crt_status'>
|
||||
<Select placeholder='请选择状态' style={{ width: 120 }}>
|
||||
<Option value=''>所有</Option>
|
||||
<Option value='0'>待发送</Option>
|
||||
<Option value='99'>已发送</Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item>
|
||||
<Button type='primary' htmlType='submit'>
|
||||
搜索
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
|
||||
{/* 搜索结果 */}
|
||||
|
||||
<span>搜索结果总数: {tasksList && tasksList.length}</span>
|
||||
|
||||
<Table dataSource={tasksList} columns={columns} pagination={false} rowKey='crt_sn' loading={loading} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default Index
|
Loading…
Reference in New Issue