import { PageContainer } from '@ant-design/pro-layout'; import { useRef, useState } from 'react'; import type { ActionType, ProColumns } from '@jetlinks/pro-table'; import { ArrowDownOutlined, BugOutlined, DeleteOutlined, EditOutlined, PlusOutlined, UnorderedListOutlined, } from '@ant-design/icons'; import { Button, message, Popconfirm, Space, Tooltip, Upload } from 'antd'; import { useIntl } from '@@/plugin-locale/localeExports'; import Service from '@/pages/notice/Template/service'; import ConfigService from '@/pages/notice/Config/service'; import SearchComponent from '@/components/SearchComponent'; import { history, useLocation } from 'umi'; import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu'; import { model } from '@formily/reactive'; import Debug from './Debug'; import Log from '@/pages/notice/Template/Log'; import { downloadObject } from '@/utils/util'; import moment from 'moment'; import { ProTableCard } from '@/components'; import NoticeCard, { typeList } from '@/components/ProTableCard/CardItems/noticeTemplate'; import { observer } from '@formily/react'; export const service = new Service('notifier/template'); export const configService = new ConfigService('notifier/config'); export const state = model<{ current?: TemplateItem; debug?: boolean; log?: boolean; }>({ debug: false, log: false, }); const Template = observer(() => { const intl = useIntl(); const location = useLocation<{ id: string }>(); const id = (location as any).query?.id; const actionRef = useRef(); const columns: ProColumns[] = [ { dataIndex: 'name', title: '模版名称', }, { dataIndex: 'provider', title: '通知方式', renderText: (text, record) => typeList[record.type][record.provider], }, { dataIndex: 'description', title: '说明', // valueType: 'dateTime', }, { title: intl.formatMessage({ id: 'pages.data.option', defaultMessage: '操作', }), valueType: 'option', align: 'center', width: 200, render: (text, record) => [ { state.current = record; history.push(getMenuPathByParams(MENUS_CODE['notice/Template/Detail'], id)); }} > , { await service.remove(record.id); actionRef.current?.reload(); }} > , { downloadObject( record, `${record.name}-${moment(new Date()).format('YYYY/MM/DD HH:mm:ss')}`, ); }} > , { state.debug = true; state.current = record; }} > , { state.log = true; }} > , ], }, ]; const [param, setParam] = useState({}); return ( { actionRef.current?.reset?.(); setParam(data); }} /> actionRef={actionRef} rowKey="id" search={false} params={param} columns={columns} headerTitle={ { const reader = new FileReader(); reader.readAsText(file); reader.onload = async (result) => { const text = result.target?.result as string; if (!file.type.includes('json')) { message.warning('文件内容格式错误'); return; } try { const data = JSON.parse(text || '{}'); const res: any = await service.savePatch(data); if (res.status === 200) { message.success('操作成功'); actionRef.current?.reload(); } } catch { message.warning('文件内容格式错误'); } }; return false; }} > { const resp: any = await service.queryNoPagingPost({ ...param, paging: false }); if (resp.status === 200) { downloadObject(resp.result, '通知模版数据'); message.success('导出成功'); } else { message.error('导出错误'); } }} > } gridColumn={3} cardRender={(record) => ( { state.current = record; history.push(getMenuPathByParams(MENUS_CODE['notice/Template/Detail'], id)); }} > 编辑 , , , , { await service.remove(record.id); actionRef.current?.reset?.(); }} > , ]} /> )} request={async (params) => service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] }) } /> {state.log && } ); }); export default Template;