wzyyy 3 лет назад
Родитель
Сommit
dec7bcf819

+ 20 - 25
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/TypeModel.tsx

@@ -9,11 +9,12 @@ import ObjModel from './ObjModel';
 import { FormModel } from '../../..';
 import { BuiltInParamsHandleTreeData } from '@/pages/rule-engine/Scene/Save/components/BuiltInParams';
 import { queryBuiltInParams } from '@/pages/rule-engine/Scene/Save/action/service';
-
+import { observer } from '@formily/reactive-react';
+import DeviceModel from '../model';
 interface Props {
   value: any;
   type: string;
-  onChange?: (data: any, source?: any) => void;
+  onChange?: (data: any, source?: any, text?: any) => void;
   record?: any; //功能-枚举
   elements?: []; //属性-枚举
   name?: any;
@@ -25,14 +26,14 @@ interface Props {
   label?: string; //枚举回显
 }
 
-export default (props: Props) => {
+export default observer((props: Props) => {
   const [value, setValue] = useState<any>(props.value || undefined);
   const [visible, setVisible] = useState<boolean>(false);
   const [objVisiable, setObjVisable] = useState<boolean>(false);
   const [source, setSource] = useState<string>(props.source || 'fixed');
   const [builtInList, setBuiltInList] = useState<any[]>([]);
   const [labelValue, setLabelValue] = useState<any>('');
-  const [dateOpen, setDateOpen] = useState<boolean>();
+  const [open, setOpen] = useState<boolean>(false);
 
   const filterLabel = (nodes: any[]) => {
     let lable: any;
@@ -68,8 +69,8 @@ export default (props: Props) => {
       if (res.status === 200) {
         const _data = BuiltInParamsHandleTreeData(res.result);
         const filterData = filterParamsData(props.type, _data);
-        console.log('_data', _data);
-        console.log('filterData', filterData);
+        // console.log('_data', _data);
+        // console.log('filterData', filterData);
         // console.log('type',props.type)
         setBuiltInList(filterData);
         const label = filterLabel(filterData);
@@ -189,34 +190,26 @@ export default (props: Props) => {
       case 'date':
         return (
           <MTimePicker
-            onOpen={(param) => {
-              setDateOpen(param);
-            }}
             type={props.format}
             value={moment(
               value ? value : new Date(),
               props.format === 'HH:mm:ss' ? 'HH:mm:ss' : 'yyyy-MM-dd HH:mm:ss',
             )}
+            onOpen={() => {
+              setOpen(false);
+            }}
             onChange={(_: any, timeString: string) => {
+              // setDateOpen(false)
+              console.log('timeString', timeString);
               setValue(timeString);
               setLabelValue(timeString);
               if (props.onChange) {
                 props.onChange(timeString);
               }
+              // setOpen(false)
             }}
           />
         );
-      // case 'password':
-      //   return (
-      //     <Input.Password
-      //       value={value}
-      //       style={{ width: '100%', textAlign: 'left' }}
-      //       placeholder={'请输入'}
-      //       onChange={(e) => {
-      //         onChange(e.target.value);
-      //       }}
-      //     />
-      //   );
       default:
         return (
           <Input
@@ -257,11 +250,12 @@ export default (props: Props) => {
                   props.onColumns(e.node.column);
                 }
               }
-              setDateOpen(false);
+              setOpen(false);
               setLabelValue(e.node.description);
+              DeviceModel.actionName = e.node.description;
               setValue(selectedKeys[0]);
               if (props.onChange) {
-                props.onChange(selectedKeys[0], source);
+                props.onChange(selectedKeys[0], source, e.node.description);
               }
             }}
           />
@@ -277,19 +271,20 @@ export default (props: Props) => {
         style={{ width: '100%', height: '100%' }}
         inputProps={{
           placeholder: '请选择',
-          disabled: true,
         }}
         tabKey={source}
         itemList={itemList}
         value={value}
         onChange={(val: any, tabKey: any) => {
+          // setOpen(false)
           setValue(val);
           setSource(tabKey);
           if (props.onChange) {
             props.onChange(val, tabKey);
           }
         }}
-        open={dateOpen}
+        open={open}
+        openChange={setOpen}
         type={props.type}
         labelValue={labelValue}
       />
@@ -326,4 +321,4 @@ export default (props: Props) => {
       )}
     </div>
   );
-};
+});

+ 3 - 3
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/WriteProperty.tsx

@@ -10,7 +10,7 @@ interface Props {
   onChange?: (value?: any, text?: any) => void;
   propertiesChange?: (value?: string) => void;
   name?: any;
-  onColumns?: (col: any) => void;
+  onColumns?: (col: any, text?: any) => void;
   thenName: number;
   branchGroup?: number;
   onRest?: (value: any) => void;
@@ -27,7 +27,7 @@ export default (props: Props) => {
   const [label, setLabel] = useState<any>();
 
   useEffect(() => {
-    console.log(props.value);
+    // console.log(props.value);
     if (props.value) {
       if (props.properties && props.properties.length) {
         if (0 in props.value) {
@@ -50,7 +50,7 @@ export default (props: Props) => {
                   (item: any) => item.value === props.value[key].value?.[0],
                 ).text;
                 setLabel(text);
-                console.log(text);
+                // console.log(text);
               }
             }
           });

+ 3 - 4
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/index.tsx

@@ -173,9 +173,7 @@ export default observer((props: Props) => {
               // { required: true, message: '请选择属性' },
               () => ({
                 validator(_, value) {
-                  console.log('---------', value);
                   const isValue = Object.values(value)?.[0];
-                  console.log(isValue);
                   if (isValue) {
                     return Promise.resolve();
                   }
@@ -189,9 +187,11 @@ export default observer((props: Props) => {
               name={props.name}
               branchGroup={props.branchGroup}
               thenName={props.thenName}
-              onColumns={(col) => {
+              onColumns={(col, text) => {
                 // console.log('col',col,[col])
                 DeviceModel.columns = [col];
+                DeviceModel.actionName = text;
+                // console.log(text)
               }}
               onChange={(value, text) => {
                 const item = value[Object.keys(value)?.[0]]?.value;
@@ -199,7 +199,6 @@ export default observer((props: Props) => {
                 DeviceModel.propertiesValue = item;
               }}
               onRest={(value: any) => {
-                console.log(1111111);
                 form.setFieldValue(['message', 'properties'], {
                   [value]: undefined,
                 });

+ 5 - 1
src/pages/rule-engine/Scene/Save/action/DeviceOutput/index.tsx

@@ -127,6 +127,10 @@ export default observer((props: Props) => {
       _options.propertiesValue = DeviceModel.propertiesValue;
       _options.columns = DeviceModel.columns;
       _options.otherColumns = DeviceModel.columns;
+      const cur: any = Object.values(value.message.properties)?.[0];
+      if (cur?.source === 'upper') {
+        _options.propertiesValue = DeviceModel.actionName;
+      }
     }
     if (_options.selector === 'tag') {
       _options.taglist = DeviceModel.selectorValues?.[0]?.value.map((it: any) => ({
@@ -136,7 +140,7 @@ export default observer((props: Props) => {
       }));
       // console.log(_options.taglist, 'taglist')
     }
-    // console.log(item);
+    // console.log(item,_options);
     props.save(item, _options);
     init();
   };

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/DeviceOutput/model.ts

@@ -25,6 +25,7 @@ type ModelType = {
   propertiesName: string;
   propertiesValue: string;
   columns: string[];
+  actionName: string;
 };
 
 const DeviceModel = model<ModelType>({
@@ -45,6 +46,7 @@ const DeviceModel = model<ModelType>({
   propertiesName: '',
   propertiesValue: '',
   columns: [],
+  actionName: '',
 });
 
 export default DeviceModel;

+ 4 - 3
src/pages/rule-engine/Scene/Save/components/ParamsSelect/components/MTimePicker/index.tsx

@@ -4,7 +4,7 @@ import type { TimePickerProps } from 'antd/lib/time-picker';
 import { useEffect, useState } from 'react';
 
 type Props = TimePickerProps & {
-  onOpen?: (open: boolean) => void;
+  onOpen?: (open?: boolean) => void;
   type?: string;
 };
 
@@ -33,7 +33,7 @@ export default (props: Props) => {
             open
             onOk={() => {
               if (props.onOpen) {
-                props.onOpen(false);
+                props.onOpen();
               }
             }}
             // @ts-ignore
@@ -56,12 +56,13 @@ export default (props: Props) => {
             }}
             value={myValue}
             onChange={(value, timeString) => {
+              // console.log(value)
               setMyValue(value);
               props.onChange?.(value, timeString);
             }}
             onOk={() => {
               if (props.onOpen) {
-                props.onOpen(false);
+                props.onOpen();
               }
             }}
           />

+ 5 - 4
src/pages/rule-engine/Scene/Save/components/ParamsSelect/index.tsx

@@ -43,13 +43,11 @@ export default (props: Props) => {
 
   useEffect(() => {
     if (props.labelValue) {
-      console.log(props.labelValue);
       setValue(props.labelValue);
     }
   }, [props.labelValue]);
 
   useEffect(() => {
-    // console.log(props.open)
     if (props.open !== undefined) {
       setOpen(props.open);
     }
@@ -59,7 +57,11 @@ export default (props: Props) => {
     <Dropdown
       trigger={['click']}
       open={open}
-      onOpenChange={setOpen}
+      onOpenChange={(val) => {
+        if (props.openChange) {
+          props.openChange(val);
+        }
+      }}
       dropdownRender={() => (
         <div className="select-box">
           <div className={'select-box-header-top'}>
@@ -69,7 +71,6 @@ export default (props: Props) => {
                   key={item.key}
                   className={classNames('select-header-title', item.key === tabKey ? 'active' : '')}
                   onClick={() => {
-                    // console.log('----------',item.key)
                     setTabKey(item.key);
                     setValue(undefined);
                     props.onChange(undefined, item.key);