Ver código fonte

fix(triggerTerm): fix Trigger label

lind 3 anos atrás
pai
commit
bda3e782ec

+ 1 - 1
src/pages/rule-engine/Scene/Save/components/TimeSelect/index.tsx

@@ -74,7 +74,7 @@ export default (props: TimeSelect) => {
   useEffect(() => {
   useEffect(() => {
     document.body.onclick = (e) => {
     document.body.onclick = (e) => {
       const elem: any = e.target;
       const elem: any = e.target;
-      const isSelectDom = elem && elem.className.includes('time-select');
+      const isSelectDom = elem && elem.className?.includes?.('time-select');
 
 
       if (!isSelectDom) {
       if (!isSelectDom) {
         setVisible(false);
         setVisible(false);

+ 43 - 5
src/pages/rule-engine/Scene/TriggerTerm/index.tsx

@@ -30,6 +30,7 @@ import { useAsyncDataSource } from '@/utils/util';
 import { Store } from 'jetlinks-store';
 import { Store } from 'jetlinks-store';
 import { treeFilter } from '@/utils/tree';
 import { treeFilter } from '@/utils/tree';
 import FInputGroup from '@/components/FInputGroup';
 import FInputGroup from '@/components/FInputGroup';
+import { Button } from 'antd';
 
 
 const service = new Service('scene');
 const service = new Service('scene');
 
 
@@ -46,11 +47,40 @@ const TriggerTerm = (props: Props, ref: any) => {
     service.getParseTerm(props.params).then((data) => {
     service.getParseTerm(props.params).then((data) => {
       Store.set('trigger-parse-term', data);
       Store.set('trigger-parse-term', data);
       parseTermRef.current = data;
       parseTermRef.current = data;
-      return data.map((item: any) => ({
-        column: item.column,
-        name: item.name,
-        children: item.children,
-      }));
+      const handleName = (_data: any): any => (
+        <Space>
+          {_data.name}
+          <div style={{ color: 'grey', marginLeft: '5px' }}>{_data.description}</div>
+        </Space>
+      );
+      const handleChildrenName = (_data: any[]): any[] => {
+        if (_data?.length > 0) {
+          return _data.map((it) => {
+            if (it.children) {
+              return {
+                ...it,
+                key: it.column,
+                name: handleName(it),
+                disabled: true,
+                children: handleChildrenName(it.children),
+              };
+            }
+            return { ...it, key: it.column, name: handleName(it) };
+          });
+        } else {
+          return [];
+        }
+      };
+      return data.map((item: any) => {
+        const disabled = item.children?.length > 0;
+        return {
+          column: item.column,
+          key: item.column,
+          name: handleName(item),
+          disabled: disabled,
+          children: handleChildrenName(item.children),
+        };
+      });
     });
     });
 
 
   const form = useMemo(
   const form = useMemo(
@@ -227,6 +257,7 @@ const TriggerTerm = (props: Props, ref: any) => {
                         'x-component-props': {
                         'x-component-props': {
                           placeholder: '请选择参数',
                           placeholder: '请选择参数',
                           fieldNames: { value: 'column', label: 'name', options: 'children' },
                           fieldNames: { value: 'column', label: 'name', options: 'children' },
+                          // treeNodeLabelProp: 'name',
                         },
                         },
                         'x-reactions': '{{useAsyncDataSource(getParseTerm)}}',
                         'x-reactions': '{{useAsyncDataSource(getParseTerm)}}',
                       },
                       },
@@ -320,6 +351,13 @@ const TriggerTerm = (props: Props, ref: any) => {
   return (
   return (
     <Form form={form} layout="vertical" className={styles.form}>
     <Form form={form} layout="vertical" className={styles.form}>
       <SchemaField schema={schema} scope={{ useAsyncDataSource, getParseTerm }} />
       <SchemaField schema={schema} scope={{ useAsyncDataSource, getParseTerm }} />
+      <Button
+        onClick={async () => {
+          console.log(await form.submit(), '保存');
+        }}
+      >
+        保存
+      </Button>
     </Form>
     </Form>
   );
   );
 };
 };