|
@ -1,5 +1,5 @@ |
|
|
import {useTranslation} from '@/i18n.ts' |
|
|
import {useTranslation} from '@/i18n.ts' |
|
|
import {Badge, Button, Divider, Form, Input, Select, Space, Tooltip} from 'antd' |
|
|
|
|
|
|
|
|
import {Badge, Button, Divider, Form, Input, Select, Space, Table, TableColumnsType, Tooltip} from 'antd' |
|
|
import {useAtom, useAtomValue} from 'jotai' |
|
|
import {useAtom, useAtomValue} from 'jotai' |
|
|
import React, {useEffect, useMemo, useState} from 'react' |
|
|
import React, {useEffect, useMemo, useState} from 'react' |
|
|
import {BetaSchemaForm, ProColumns, ProFormColumnsType,} from '@ant-design/pro-components' |
|
|
import {BetaSchemaForm, ProColumns, ProFormColumnsType,} from '@ant-design/pro-components' |
|
@ -11,6 +11,7 @@ import {Table as ProTable} from '@/components/table' |
|
|
import {msgListAtom, msgSearchAtom, saveMsgAtom} from "@/store/message/my.ts"; |
|
|
import {msgListAtom, msgSearchAtom, saveMsgAtom} from "@/store/message/my.ts"; |
|
|
import {templateAllListAtom} from "@/store/message/template.ts"; |
|
|
import {templateAllListAtom} from "@/store/message/template.ts"; |
|
|
import {coverType, IMsgTemplate} from "@/types/message/template.ts"; |
|
|
import {coverType, IMsgTemplate} from "@/types/message/template.ts"; |
|
|
|
|
|
import dayjs from "dayjs"; |
|
|
|
|
|
|
|
|
const i18nPrefix = 'msgMy.list' |
|
|
const i18nPrefix = 'msgMy.list' |
|
|
|
|
|
|
|
@ -83,7 +84,7 @@ const MdwMessage = () => { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: t(`${i18nPrefix}.columns.type`, '消息类型'), |
|
|
|
|
|
|
|
|
title: t(`${i18nPrefix}.columns.type`, '通道类型'), |
|
|
dataIndex: 'type', |
|
|
dataIndex: 'type', |
|
|
valueType: 'select', |
|
|
valueType: 'select', |
|
|
fieldProps: { |
|
|
fieldProps: { |
|
@ -104,9 +105,12 @@ const MdwMessage = () => { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: t(`${i18nPrefix}.columns.token`, 'Telegram Token'), |
|
|
|
|
|
|
|
|
title: t(`${i18nPrefix}.columns.token`, 'Telegram BOT API Token'), |
|
|
dataIndex: 'token', |
|
|
dataIndex: 'token', |
|
|
valueType: 'text', |
|
|
valueType: 'text', |
|
|
|
|
|
fieldProps: { |
|
|
|
|
|
placeholder: "请输入 @BotFather 获取到的BOT的API Token" |
|
|
|
|
|
}, |
|
|
formItemProps: { |
|
|
formItemProps: { |
|
|
hidden: templateType != 'TG', |
|
|
hidden: templateType != 'TG', |
|
|
rules: [ |
|
|
rules: [ |
|
@ -179,14 +183,14 @@ const MdwMessage = () => { |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: t(`${i18nPrefix}.columns.dest`, '收件人(多个收件人用英文逗号隔开,如果类型是TG,则填token)'), |
|
|
|
|
|
|
|
|
title: t(`${i18nPrefix}.columns.dest`, '收件人(多个收件人用英文逗号隔开;如果类型是Telegram,请填写User ID或Chat ID)'), |
|
|
dataIndex: 'dest', |
|
|
dataIndex: 'dest', |
|
|
valueType: 'textarea', |
|
|
valueType: 'textarea', |
|
|
fieldProps: { |
|
|
fieldProps: { |
|
|
maxLength: 1000, |
|
|
maxLength: 1000, |
|
|
showCount: true, |
|
|
showCount: true, |
|
|
rows: 5, |
|
|
rows: 5, |
|
|
placeholder: 'aaa@qq.com,bbb@gmail.com', |
|
|
|
|
|
|
|
|
placeholder: 'aaa@qq.com,bbb@gmail.com,-1001953214222,-1001953214333', |
|
|
}, |
|
|
}, |
|
|
formItemProps: { |
|
|
formItemProps: { |
|
|
rules: [ |
|
|
rules: [ |
|
@ -225,7 +229,19 @@ const MdwMessage = () => { |
|
|
dataIndex: 'content', |
|
|
dataIndex: 'content', |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: t(`${i18nPrefix}.columns.dest`, '收件人'), |
|
|
|
|
|
|
|
|
title: t(`${i18nPrefix}.columns.send_at`, '预计发送时间'), |
|
|
|
|
|
dataIndex: 'send_at', |
|
|
|
|
|
render: (_, record) => { |
|
|
|
|
|
return <div>{record.send_at == 0 ? "立即" : dayjs(record.send_at).format('YYYY-MM-DD HH:mm:ss')}</div> |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
] as ProColumns[] |
|
|
|
|
|
}, [search, currentTemplate]) |
|
|
|
|
|
|
|
|
|
|
|
const expandedRowRender = (record) => { |
|
|
|
|
|
const expandedColumns: TableColumnsType = [ |
|
|
|
|
|
{ |
|
|
|
|
|
title: "收件人", |
|
|
dataIndex: 'dest', |
|
|
dataIndex: 'dest', |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -240,28 +256,13 @@ const MdwMessage = () => { |
|
|
{ |
|
|
{ |
|
|
title: t(`${i18nPrefix}.columns.send_at`, '发送时间'), |
|
|
title: t(`${i18nPrefix}.columns.send_at`, '发送时间'), |
|
|
dataIndex: 'send_at', |
|
|
dataIndex: 'send_at', |
|
|
|
|
|
render: (_, record) => { |
|
|
|
|
|
return <div>{record.send_at == 0 ? 0 : dayjs(record.send_at*1000).format('YYYY-MM-DD HH:mm:ss')}</div> |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
// {
|
|
|
|
|
|
// title: t(`${i18nPrefix}.columns.option`, '操作'),
|
|
|
|
|
|
// key: 'option',
|
|
|
|
|
|
// valueType: 'option',
|
|
|
|
|
|
// fixed: 'right',
|
|
|
|
|
|
// render: (_, record) => [
|
|
|
|
|
|
// <Popconfirm
|
|
|
|
|
|
// key={'del_confirm'}
|
|
|
|
|
|
// disabled={isDeleting}
|
|
|
|
|
|
// onConfirm={() => {
|
|
|
|
|
|
// deleteAppPackage(record.id)
|
|
|
|
|
|
// }}
|
|
|
|
|
|
// title={t('message.deleteConfirm')}>
|
|
|
|
|
|
// <a key="del">
|
|
|
|
|
|
// {t('actions.delete', '删除')}
|
|
|
|
|
|
// </a>
|
|
|
|
|
|
// </Popconfirm>,
|
|
|
|
|
|
// ]
|
|
|
|
|
|
// }
|
|
|
|
|
|
] as ProColumns[] |
|
|
|
|
|
}, [search, currentTemplate]) |
|
|
|
|
|
|
|
|
]; |
|
|
|
|
|
return <Table columns={expandedColumns} dataSource={record.dest} pagination={false}/>; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
|
|
|
|
|
@ -354,6 +355,9 @@ const MdwMessage = () => { |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
}} |
|
|
}} |
|
|
|
|
|
expandable={{ |
|
|
|
|
|
expandedRowRender, |
|
|
|
|
|
}} |
|
|
/> |
|
|
/> |
|
|
<BetaSchemaForm |
|
|
<BetaSchemaForm |
|
|
grid={true} |
|
|
grid={true} |
|
@ -376,7 +380,7 @@ const MdwMessage = () => { |
|
|
|
|
|
|
|
|
}} |
|
|
}} |
|
|
onFinish={async (values) => { |
|
|
onFinish={async (values) => { |
|
|
saveOrUpdate({...values, "template_id": currentTemplate?.id}) |
|
|
|
|
|
|
|
|
saveOrUpdate({...values, "alias": currentTemplate?.alias}) |
|
|
}} |
|
|
}} |
|
|
columns={drawerColumns as ProFormColumnsType[]}/> |
|
|
columns={drawerColumns as ProFormColumnsType[]}/> |
|
|
<BetaSchemaForm |
|
|
<BetaSchemaForm |
|
|