Просмотр исходного кода

fix: 修复场景联动相关bug

wzyyy 2 лет назад
Родитель
Сommit
a8569b5a8f

+ 4 - 1
src/app.tsx

@@ -285,7 +285,10 @@ const MenuItemIcon = (
     // @ts-ignore
     // @ts-ignore
     const menuItem = React.cloneElement(defaultDom, {
     const menuItem = React.cloneElement(defaultDom, {
       // @ts-ignore
       // @ts-ignore
-      children: [<AIcon type={menuItemProps.icon as string} />, defaultDom.props.children[1]],
+      children: [
+        <AIcon type={menuItemProps.icon as string} size={16} />,
+        defaultDom.props.children[1],
+      ],
       ...props,
       ...props,
     });
     });
     return menuItem;
     return menuItem;

+ 40 - 15
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/functionCall.tsx

@@ -23,9 +23,10 @@ interface FunctionCallProps {
 export default (props: FunctionCallProps) => {
 export default (props: FunctionCallProps) => {
   const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
   const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
   const formRef = useRef<ProFormInstance<any>>();
   const formRef = useRef<ProFormInstance<any>>();
+  const [data, setData] = useState<any>([]);
 
 
   useEffect(() => {
   useEffect(() => {
-    // console.log(props.value, props.functionData);
+    // console.log('----props', props.value);
     if (props.functionData && props.functionData.length) {
     if (props.functionData && props.functionData.length) {
       setEditableRowKeys(props.functionData.map((d) => d.id));
       setEditableRowKeys(props.functionData.map((d) => d.id));
       if (props.value) {
       if (props.value) {
@@ -35,17 +36,22 @@ export default (props: FunctionCallProps) => {
             return {
             return {
               ...item,
               ...item,
               value: oldValue.value,
               value: oldValue.value,
+              source: oldValue?.source,
+              upperKey: oldValue?.upperKey,
             };
             };
           }
           }
           return item;
           return item;
         });
         });
+        // console.log('----tableData',tableData)
         formRef.current?.setFieldsValue({
         formRef.current?.setFieldsValue({
           table: tableData,
           table: tableData,
         });
         });
+        setData(tableData);
       } else {
       } else {
         formRef.current?.setFieldsValue({
         formRef.current?.setFieldsValue({
           table: props.functionData,
           table: props.functionData,
         });
         });
+        setData(props.functionData);
       }
       }
     } else {
     } else {
       formRef.current?.setFieldsValue({
       formRef.current?.setFieldsValue({
@@ -56,7 +62,6 @@ export default (props: FunctionCallProps) => {
 
 
   const getItemNode = (record: any) => {
   const getItemNode = (record: any) => {
     const type = record.type;
     const type = record.type;
-    // console.log('------', record)
     return (
     return (
       <TypeModel
       <TypeModel
         value={record.value}
         value={record.value}
@@ -66,25 +71,24 @@ export default (props: FunctionCallProps) => {
         branchGroup={props.branchGroup}
         branchGroup={props.branchGroup}
         thenName={props.thenName}
         thenName={props.thenName}
         format={record?.format}
         format={record?.format}
+        source={record?.source}
         onChange={(value, source) => {
         onChange={(value, source) => {
           record.source = source;
           record.source = source;
           record.value = value;
           record.value = value;
           record.upperKey = value;
           record.upperKey = value;
-          // props.onChange(value)
-          // const arr = data.filter((item:any)=>item.id!==record.id)
-          // console.log('-----typeModel', arr, record,[record],data)
-          // formRef.current?.setFieldsValue({
-          //   table: [
-          //     ...arr,
-          //     record
-          //   ],
-          // });
+
+          const arr = data.filter((item: any) => item.id !== record.id);
+          if (value && source) {
+            formRef.current?.setFieldsValue({
+              table: [...arr, record],
+            });
+          }
         }}
         }}
       />
       />
     );
     );
   };
   };
 
 
-  const columns: ProColumns<FunctionTableDataType>[] = [
+  const columns: ProColumns<any>[] = [
     {
     {
       dataIndex: 'name',
       dataIndex: 'name',
       title: '参数名称',
       title: '参数名称',
@@ -113,17 +117,38 @@ export default (props: FunctionCallProps) => {
       formRef={formRef}
       formRef={formRef}
       name={props.name || 'proForm'}
       name={props.name || 'proForm'}
       submitter={false}
       submitter={false}
-      onValuesChange={() => {
-        const values = formRef.current?.getFieldsValue();
-        // console.log(values.table, 'values');
+      onValuesChange={async () => {
+        const values = await formRef.current?.validateFields();
+        console.log('------values', values.table);
+        const arr = values.table.map((item: any) => {
+          if (item.source === 'fixed') {
+            return {
+              name: item.id,
+              value: item.value,
+              source: item.source,
+            };
+          } else {
+            return {
+              name: item.id,
+              upperKey: item.value,
+              source: item.source,
+            };
+          }
+        });
+        console.log('------arr', arr);
         if (props.onChange) {
         if (props.onChange) {
           props.onChange(
           props.onChange(
             values.table.map((item: any) => ({
             values.table.map((item: any) => ({
               name: item.id,
               name: item.id,
               value: item.value,
               value: item.value,
+              upperKey: item.value,
+              source: item.source,
             })),
             })),
           );
           );
         }
         }
+        // if (props.onChange) {
+        //   props.onChange(arr);
+        // }
       }}
       }}
     >
     >
       <EditableProTable
       <EditableProTable

+ 5 - 1
src/pages/rule-engine/Scene/Save/components/Buttons/Dropdown.tsx

@@ -148,7 +148,11 @@ const DropdownButton = (props: DropdownButtonProps) => {
         className={classNames(styles['dropdown-button'], props.className, typeClassName)}
         className={classNames(styles['dropdown-button'], props.className, typeClassName)}
         onClick={() => {
         onClick={() => {
           console.log(props.options, myValue, FormModel.current.trigger?.device);
           console.log(props.options, myValue, FormModel.current.trigger?.device);
-          if (!FormModel.current.trigger?.device && props.type !== 'termType') {
+          if (
+            FormModel.current.trigger?.type === 'device' &&
+            !FormModel.current.trigger?.device &&
+            props.type !== 'termType'
+          ) {
             onlyMessage('请先配置设备触发规则', 'warning');
             onlyMessage('请先配置设备触发规则', 'warning');
           }
           }
           if (props.options.length === 0 && props.type === 'termType') {
           if (props.options.length === 0 && props.type === 'termType') {

+ 1 - 1
src/pages/rule-engine/Scene/Save/components/Buttons/ParamsDropdown.tsx

@@ -279,7 +279,7 @@ export default (props: ParamsDropdownProps) => {
     if (props.metricsOptions) {
     if (props.metricsOptions) {
       let _value = props.value?.value;
       let _value = props.value?.value;
       if ('name' in props) {
       if ('name' in props) {
-        _value = props.value?.value[props.name!];
+        _value = props.value?.value?.[props.name!];
       }
       }
       findLabel(_value, props.metricsOptions || [], 'name');
       findLabel(_value, props.metricsOptions || [], 'name');
     }
     }

+ 9 - 4
src/pages/rule-engine/Scene/Save/components/ShakeLimit/index.tsx

@@ -40,13 +40,18 @@ export default (props: ShakeLimitProps) => {
   };
   };
 
 
   const timeChange = (value: number | null) => {
   const timeChange = (value: number | null) => {
-    setTime(value);
-    props.onChange?.('time', value);
+    if (value) {
+      setTime(value);
+      props.onChange?.('time', value);
+      console.log(value);
+    }
   };
   };
 
 
   const thresholdChange = (value: number | null) => {
   const thresholdChange = (value: number | null) => {
-    setThreshold(value);
-    props.onChange?.('threshold', value);
+    if (value) {
+      setThreshold(value);
+      props.onChange?.('threshold', value);
+    }
   };
   };
 
 
   const alarmFirstChange = (value: boolean) => {
   const alarmFirstChange = (value: boolean) => {

+ 2 - 2
src/pages/rule-engine/Scene/Save/terms/index.tsx

@@ -73,8 +73,8 @@ export default observer((props: Props) => {
             key: 'branches_' + key,
             key: 'branches_' + key,
             shakeLimit: {
             shakeLimit: {
               enabled: false,
               enabled: false,
-              time: 0,
-              threshold: 0,
+              time: 1,
+              threshold: 1,
               alarmFirst: false,
               alarmFirst: false,
             },
             },
             then: [],
             then: [],

+ 28 - 11
src/pages/rule-engine/Scene/Save/terms/paramsItem.tsx

@@ -104,6 +104,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
   const [valueOptions] = useState<any>(undefined);
   const [valueOptions] = useState<any>(undefined);
   const [metricsOptions, setMetricsOptions] = useState<any[]>([]);
   const [metricsOptions, setMetricsOptions] = useState<any[]>([]);
   const [valueType, setValueType] = useState('');
   const [valueType, setValueType] = useState('');
+  const [isRange, setIsRange] = useState<boolean>(false);
 
 
   const { paramOptions, valueOptions: paramsValueOptions } = useOption(props.options, 'column');
   const { paramOptions, valueOptions: paramsValueOptions } = useOption(props.options, 'column');
 
 
@@ -194,6 +195,15 @@ const ParamsItem = observer((props: ParamsItemProps) => {
     labelCache.current = props.label || [undefined, undefined, {}, 'and'];
     labelCache.current = props.label || [undefined, undefined, {}, 'and'];
   }, [props.label]);
   }, [props.label]);
 
 
+  // useEffect(()=>{
+  //   if(props.data.value?.source && metricsOptions.length!==0){
+  //     const arr = metricsOptions.filter((item:any)=>item.range)
+  //     if(arr.length!==0){
+  //       setIsRange(true)
+  //     }
+  //   }
+  // },[metricsOptions])
+
   return (
   return (
     <div className="terms-params-item">
     <div className="terms-params-item">
       {!props.isFirst && (
       {!props.isFirst && (
@@ -293,11 +303,11 @@ const ParamsItem = observer((props: ParamsItemProps) => {
             });
             });
           }}
           }}
         />
         />
-        {DoubleFilter.includes(termType) && !metricsOptions.length ? (
+        {DoubleFilter.includes(termType) && !isRange ? (
           <>
           <>
             <ParamsDropdown
             <ParamsDropdown
               options={valueOptions}
               options={valueOptions}
-              metricsOptions={metricsOptions.filter((mItem) => {
+              metricsOptions={metricsOptions?.filter((mItem) => {
                 if (ValueRef.current.termType && DoubleFilter.includes(ValueRef.current.termType)) {
                 if (ValueRef.current.termType && DoubleFilter.includes(ValueRef.current.termType)) {
                   return mItem.range;
                   return mItem.range;
                 } else {
                 } else {
@@ -315,6 +325,13 @@ const ParamsItem = observer((props: ParamsItemProps) => {
                   value: [v.value, ValueRef.current.value?.value?.[1]],
                   value: [v.value, ValueRef.current.value?.value?.[1]],
                   source: v.source,
                   source: v.source,
                 };
                 };
+                // console.log('-----',v.source,v.value)
+                if (v.source === 'metric' && v.value) {
+                  setIsRange(true);
+                  _myValue.value = v.value;
+                } else {
+                  setIsRange(false);
+                }
                 ValueRef.current.value = _myValue;
                 ValueRef.current.value = _myValue;
                 setValue(_myValue);
                 setValue(_myValue);
                 labelCache.current[2] = { ...labelCache.current[2], 0: lb };
                 labelCache.current[2] = { ...labelCache.current[2], 0: lb };
@@ -326,14 +343,14 @@ const ParamsItem = observer((props: ParamsItemProps) => {
             />
             />
             <ParamsDropdown
             <ParamsDropdown
               options={valueOptions}
               options={valueOptions}
-              metricsOptions={metricsOptions.filter((mItem) => {
-                if (ValueRef.current.termType && DoubleFilter.includes(ValueRef.current.termType)) {
-                  return mItem.range;
-                } else {
-                  return !mItem.range;
-                }
-              })}
-              isMetric={!!metricsOptions.length}
+              // metricsOptions={metricsOptions?.filter((mItem) => {
+              //   if (ValueRef.current.termType && DoubleFilter.includes(ValueRef.current.termType)) {
+              //     return mItem.range;
+              //   } else {
+              //     return !mItem.range;
+              //   }
+              // })}
+              // isMetric={!!metricsOptions.length}
               type="value"
               type="value"
               placeholder="参数值"
               placeholder="参数值"
               valueType={valueType}
               valueType={valueType}
@@ -378,7 +395,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
               ValueRef.current.value = v;
               ValueRef.current.value = v;
               if (!!metricsOptions.length) {
               if (!!metricsOptions.length) {
                 if (DoubleFilter.includes(termType)) {
                 if (DoubleFilter.includes(termType)) {
-                  labelCache.current[2] = { 0: v?.value?.[0], 1: v?.value[1] };
+                  labelCache.current[2] = { 0: v?.value?.[0], 1: v?.value?.[1] };
                 } else {
                 } else {
                   labelCache.current[2] = { 0: lb };
                   labelCache.current[2] = { 0: lb };
                 }
                 }

+ 1 - 1
src/pages/system/Platforms/Api/basePage.tsx

@@ -159,8 +159,8 @@ export default (props: TableProps) => {
                   style={{ padding: 0, width: '100%', textAlign: 'left' }}
                   style={{ padding: 0, width: '100%', textAlign: 'left' }}
                   onClick={() => {
                   onClick={() => {
                     console.log(record);
                     console.log(record);
-                    ApiModel.swagger = record;
                     ApiModel.showTable = false;
                     ApiModel.showTable = false;
+                    ApiModel.swagger = record;
                   }}
                   }}
                 >
                 >
                   <span className={'ellipsis'}>{text}</span>
                   <span className={'ellipsis'}>{text}</span>

+ 1 - 0
src/pages/system/Platforms/Api/swagger-ui/base.tsx

@@ -29,6 +29,7 @@ export default observer(() => {
         return false;
         return false;
       });
       });
     }
     }
+    // console.log('-----value',value)
     return value;
     return value;
   };
   };