index.jsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import { Modal } from "antd";
  2. import React, { useState, useRef, useEffect } from "react";
  3. import Alarm from "../../../../../entry";
  4. import { Radio } from "antd";
  5. import { useMemoizedFn } from "ahooks";
  6. export function AlarmConfig(props) {
  7. const [type, setType] = useState(0);
  8. const [groupList, setGroupList] = useState([]);
  9. const compRef = useRef(null);
  10. const easyRef = useRef(null);
  11. const onModalOk = useMemoizedFn(async () => {
  12. if (type === 1) {
  13. await compRef.current.ok();
  14. } else {
  15. await easyRef.current.ok();
  16. }
  17. });
  18. const onEasyConfirm = () => {
  19. props.onConfirm();
  20. };
  21. const onComplexConfirm = (id) => {
  22. props.onConfirm({ ruleId: id ?? 0 });
  23. };
  24. useEffect(() => {
  25. if (props.visible) {
  26. setType(0);
  27. }
  28. }, [props.visible, props.ruleId]);
  29. return (
  30. <>
  31. <Modal
  32. getContainer={document.getElementById("diagram-container")}
  33. open={props.visible}
  34. width={type === 0 ? 500 : 1200}
  35. onCancel={() => {
  36. props.onClose();
  37. }}
  38. onOk={onModalOk}
  39. title={
  40. <div
  41. style={{
  42. fontSize: 16,
  43. }}
  44. >
  45. 告警配置
  46. </div>
  47. }
  48. forceRender
  49. zIndex="1002"
  50. maskClosable={false}
  51. >
  52. {props.visible && (
  53. <>
  54. {props.isDiagram ? (
  55. <>
  56. <Radio.Group
  57. style={{ marginLeft: 40 }}
  58. value={type}
  59. onChange={(e) => setType(e.target.value)}
  60. >
  61. <Radio.Button value={0}>简单告警</Radio.Button>
  62. <Radio.Button value={1}>复杂告警</Radio.Button>
  63. </Radio.Group>
  64. <div style={{ display: type === 0 ? "block" : "none" }}>
  65. <Alarm.EasyConfig
  66. ref={easyRef}
  67. pointId={props.pointId}
  68. groupList={groupList}
  69. onConfirm={onEasyConfirm}
  70. readonly
  71. ></Alarm.EasyConfig>
  72. </div>
  73. <div style={{ display: type === 1 ? "block" : "none" }}>
  74. <Alarm.ComplexConfig
  75. ref={compRef}
  76. editId={props.ruleId}
  77. groupList={groupList}
  78. onConfirm={onComplexConfirm}
  79. showList={true}
  80. ></Alarm.ComplexConfig>
  81. </div>
  82. </>
  83. ) : (
  84. <></>
  85. )}
  86. </>
  87. )}
  88. </Modal>
  89. </>
  90. );
  91. }