import { PageContainer } from '@ant-design/pro-layout'; import type { ActionType, ProColumns } from '@jetlinks/pro-table'; import { ArrowDownOutlined, BarsOutlined, BugOutlined, DeleteOutlined, EditOutlined, PlusOutlined, UnorderedListOutlined, } from '@ant-design/icons'; import { Button, message, Popconfirm, Space, Tooltip, Upload } from 'antd'; import { useRef, useState } from 'react'; import { useIntl } from '@@/plugin-locale/localeExports'; import { downloadObject } from '@/utils/util'; import Service from '@/pages/notice/Config/service'; import { observer } from '@formily/react'; import SearchComponent from '@/components/SearchComponent'; import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu'; import { history, useLocation } from 'umi'; import { model } from '@formily/reactive'; import moment from 'moment'; import { ProTableCard } from '@/components'; import NoticeConfig from '@/components/ProTableCard/CardItems/noticeConfig'; import Debug from '@/pages/notice/Config/Debug'; import Log from '@/pages/notice/Config/Log'; import { typeList } from '@/components/ProTableCard/CardItems/noticeTemplate'; export const service = new Service('notifier/config'); export const state = model<{ current?: ConfigItem; debug?: boolean; log?: boolean; }>({ debug: false, log: false, }); const Config = observer(() => { const intl = useIntl(); const actionRef = useRef(); const location = useLocation<{ id: string }>(); const id = (location as any).query?.id; const columns: ProColumns[] = [ { dataIndex: 'name', title: '配置名称', }, { dataIndex: 'provider', title: '通知方式', renderText: (text, record) => typeList[record.type][record.provider], }, { dataIndex: 'description', title: '说明', }, { title: intl.formatMessage({ id: 'pages.data.option', defaultMessage: '操作', }), valueType: 'option', align: 'center', width: 200, render: (text, record) => [ { // setLoading(true); state.current = record; history.push(getMenuPathByParams(MENUS_CODE['notice/Config/Detail'], id)); }} > , downloadObject( record, `通知配置${record.name}-${moment(new Date()).format('YYYY/MM/DD HH:mm:ss')}`, ) } key="download" > , { state.debug = true; state.current = record; }} > , { state.log = true; }} > , { await service.remove(record.id); message.success( intl.formatMessage({ id: 'pages.data.option.success', defaultMessage: '操作成功!', }), ); actionRef.current?.reload(); }} title="确认删除?" > , ], }, ]; const [param, setParam] = useState({}); return ( { actionRef.current?.reset?.(); setParam(data); }} /> rowKey="id" actionRef={actionRef} 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 || '{}'); if (Array.isArray(data)) { message.warning('文件内容格式错误'); return; } 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} request={async (params) => service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] }) } cardRender={(record) => ( { // setLoading(true); state.current = record; history.push(getMenuPathByParams(MENUS_CODE['notice/Config/Detail'], id)); }} > 编辑 , , , , { await service.remove(record.id); actionRef.current?.reset?.(); }} > , ]} /> )} /> {state.log && } ); }); export default Config;