From b93220378db8b6d944f32db5d3b0d4076d1fc9a9 Mon Sep 17 00:00:00 2001 From: ning <710leo@gmail.com> Date: Tue, 21 Jul 2026 20:56:02 +0800 Subject: [PATCH 1/3] feat: revamp alert mute form with sections, auto-naming, quick durations and empty guide --- .../FormNG/components/SectionCard/index.tsx | 5 +- src/pages/warning/shield/add.tsx | 2 +- .../shield/components/DaysOfWeekSelect.tsx | 63 ++ .../shield/components/PreviewMutedEvents.tsx | 21 +- .../warning/shield/components/operateForm.tsx | 819 +++++++++++------- .../shield/components/utils.summary.test.ts | 106 +++ src/pages/warning/shield/components/utils.ts | 83 ++ src/pages/warning/shield/index.tsx | 68 +- src/pages/warning/shield/locale/en_US.ts | 45 +- src/pages/warning/shield/locale/ja_JP.ts | 44 +- src/pages/warning/shield/locale/ru_RU.ts | 46 +- src/pages/warning/shield/locale/zh_CN.ts | 42 +- src/pages/warning/shield/locale/zh_HK.ts | 42 +- 13 files changed, 1020 insertions(+), 366 deletions(-) create mode 100644 src/pages/warning/shield/components/DaysOfWeekSelect.tsx create mode 100644 src/pages/warning/shield/components/utils.summary.test.ts diff --git a/src/pages/alertRules/FormNG/components/SectionCard/index.tsx b/src/pages/alertRules/FormNG/components/SectionCard/index.tsx index 48692d420..96f1f6584 100644 --- a/src/pages/alertRules/FormNG/components/SectionCard/index.tsx +++ b/src/pages/alertRules/FormNG/components/SectionCard/index.tsx @@ -51,8 +51,10 @@ export default function SectionCard(props: { empty?: boolean; collapsed?: boolean; setCollapsed?: (collapsed: boolean) => void; + /** 收起状态下在标题右侧展示的配置摘要 */ + summary?: React.ReactNode; }) { - const { item, index, sectionRef, children, empty, setCollapsed: onSetCollapsed } = props; + const { item, index, sectionRef, children, empty, summary, setCollapsed: onSetCollapsed } = props; const { t, i18n } = useTranslation('alertRules'); const { darkMode } = useContext(CommonStateContext); const [collapsed, setCollapsed] = useState(props.collapsed ?? item.tag === 'optional'); @@ -113,6 +115,7 @@ export default function SectionCard(props: { )} + {collapsed && summary &&
{summary}
}
diff --git a/src/pages/warning/shield/add.tsx b/src/pages/warning/shield/add.tsx index 2632492a3..5355c9cca 100644 --- a/src/pages/warning/shield/add.tsx +++ b/src/pages/warning/shield/add.tsx @@ -52,8 +52,8 @@ const AddShield: React.FC = () => { }); } catch (e) {} } + // 不预填规则标题,交给表单按筛选条件自动生成 setEventDetail({ - note: t('quick_mute'), group_id: dat.group_id, prod: dat.rule_prod, cate: dat.cate, diff --git a/src/pages/warning/shield/components/DaysOfWeekSelect.tsx b/src/pages/warning/shield/components/DaysOfWeekSelect.tsx new file mode 100644 index 000000000..7219358ca --- /dev/null +++ b/src/pages/warning/shield/components/DaysOfWeekSelect.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { Select, Divider, Space } from 'antd'; +import { useTranslation } from 'react-i18next'; +import _ from 'lodash'; + +import { daysOfWeek } from '@/pages/alertRules/constants'; + +interface Props { + value?: string[]; + onChange?: (value: string[]) => void; + disabled?: boolean; +} + +const PRESETS: { key: 'everyday' | 'workday' | 'weekend'; days: string[] }[] = [ + { key: 'everyday', days: ['1', '2', '3', '4', '5', '6', '0'] }, + { key: 'workday', days: ['1', '2', '3', '4', '5'] }, + { key: 'weekend', days: ['6', '0'] }, +]; + +/** + * 周期屏蔽的星期选择,下拉底部提供「每天 / 工作日 / 周末」快捷选项 + */ +export default function DaysOfWeekSelect(props: Props) { + const { t } = useTranslation('alertMutes'); + const { value, onChange, disabled } = props; + + return ( + { - return { - label: item.name, - value: item.id, - }; - })} - showSearch - optionFilterProp='label' - /> - - - - - -