import React, { useEffect, useState } from 'react'; import { Modal, message, Input, Form, Button } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import cronParse from 'cron-parser'; import EditableTagGroup from '@/components/tag'; const CronModal = ({ cron, handleCancel, visible, }: { cron?: any; visible: boolean; handleCancel: (needUpdate?: boolean) => void; }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const handleOk = async (values: any) => { setLoading(true); const method = cron ? 'put' : 'post'; const payload = { ...values }; if (cron) { payload.id = cron.id; } try { const { code, data } = await request[method](`${config.apiPrefix}crons`, { data: payload, }); if (code === 200) { message.success(cron ? '更新Cron成功' : '新建Cron成功'); } else { message.error(data); } setLoading(false); handleCancel(data); } catch (error: any) { setLoading(false); } }; useEffect(() => { form.resetFields(); }, [cron, visible]); return ( { form .validateFields() .then((values) => { handleOk(values); }) .catch((info) => { console.log('Validate Failed:', info); }); }} onCancel={() => handleCancel()} confirmLoading={loading} >
{ if (!value || cronParse.parseExpression(value).hasNext()) { return Promise.resolve(); } else { return Promise.reject('Cron表达式格式有误'); } }, }, ]} >
); }; const CronLabelModal = ({ ids, handleCancel, visible, }: { ids: Array; visible: boolean; handleCancel: (needUpdate?: boolean) => void; }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const update = async (action: 'delete' | 'post') => { form .validateFields() .then(async (values) => { setLoading(true); const payload = { ids, labels: values.labels }; const { code, data } = await request[action]( `${config.apiPrefix}crons/labels`, { data: payload, }, ); if (code === 200) { message.success( action === 'post' ? '添加Labels成功' : '删除Labels成功', ); } else { message.error(data); } setLoading(false); handleCancel(true); }) .catch((info) => { console.log('Validate Failed:', info); }); }; useEffect(() => { form.resetFields(); }, [ids, visible]); const buttons = [ , , , ]; return ( handleCancel(false)} confirmLoading={loading} >
); }; export { CronModal as default, CronLabelModal };