ソースを参照

fix: bug#9262、9259、9252、9251、9240

xieyonghong 3 年 前
コミット
24ddadc0c8

+ 1 - 1
src/pages/rule-engine/Scene/Save/action/ListItem/Item.tsx

@@ -388,7 +388,7 @@ export default (props: ItemProps) => {
           })}
         >
           {!!thenTerms?.length && (
-            <div className={'actions-item-filter-warp-tip'}>满足此条件后才会执行后续条件</div>
+            <div className={'actions-item-filter-warp-tip'}>满足此条件后执行后续动作</div>
           )}
           <div className={classNames('actions-item-filter-overflow')}>
             {props.parallel ? null : thenTerms && thenTerms.length ? (

+ 15 - 5
src/pages/rule-engine/Scene/Save/action/notify/NotifyConfig.tsx

@@ -14,6 +14,7 @@ interface Props {
 export default observer((props: Props) => {
   const actionRef = useRef<ActionType>();
   const [searchParam, setSearchParam] = useState({});
+  const [oldRowKey] = useState(NotifyModel.notify?.notifierId);
 
   const columns: ProColumns<ConfigItem>[] = [
     {
@@ -80,8 +81,17 @@ export default observer((props: Props) => {
               }
             },
           }}
-          request={(params) =>
-            queryMessageConfigPaging({
+          request={(params) => {
+            const sorts: any = [];
+
+            if (oldRowKey) {
+              sorts.push({
+                name: 'id',
+                value: oldRowKey,
+              });
+            }
+            sorts.push({ name: 'createTime', order: 'desc' });
+            return queryMessageConfigPaging({
               ...params,
               terms: params?.terms
                 ? [
@@ -103,9 +113,9 @@ export default observer((props: Props) => {
                       value: NotifyModel.notify?.notifyType || props.type,
                     },
                   ],
-              sorts: [{ name: 'createTime', order: 'desc' }],
-            })
-          }
+              sorts: sorts,
+            });
+          }}
           params={searchParam}
           height={'none'}
         />

+ 11 - 1
src/pages/rule-engine/Scene/Save/action/notify/NotifyTemplate.tsx

@@ -14,6 +14,7 @@ interface Props {
 export default observer((props: Props) => {
   const actionRef = useRef<ActionType>();
   const [searchParam, setSearchParam] = useState({});
+  const [oldRowKey] = useState(NotifyModel.notify?.templateId);
 
   const columns: ProColumns<TemplateItem>[] = [
     {
@@ -80,11 +81,20 @@ export default observer((props: Props) => {
             },
           }}
           request={async (params) => {
+            const sorts: any = [];
+
+            if (oldRowKey) {
+              sorts.push({
+                name: 'id',
+                value: oldRowKey,
+              });
+            }
+            sorts.push({ name: 'createTime', order: 'desc' });
             const resp = await queryMessageTemplatePaging(
               NotifyModel.notify?.notifierId || props?.type,
               {
                 ...params,
-                sorts: [{ name: 'createTime', order: 'desc' }],
+                sorts: sorts,
               },
             );
             return {

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

@@ -129,10 +129,14 @@ export default (props: ParamsDropdownProps) => {
           return (
             <MTimePicker
               value={_value ? moment(_value, 'HH:mm:ss') : undefined}
+              type={'time'}
               onChange={(_: any, timeString: string) => {
                 onValueChange(timeString, timeString);
                 setOpen(false);
               }}
+              onOpen={() => {
+                setOpen(false);
+              }}
             />
           );
         case 'tree':

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

@@ -18,7 +18,7 @@ export default (props: Props) => {
 
   return (
     <div>
-      {props.type === 'yyyy-MM-dd' ? (
+      {props.type === 'time' ? (
         <div id={'manual-box'} className={'manual-box'}>
           <TimePicker
             {...props}

+ 2 - 1
src/pages/rule-engine/Scene/Save/device/addModel.tsx

@@ -152,6 +152,7 @@ export default observer((props: AddProps) => {
       TriggerDeviceModel.devicePageSize = props.options.devicePageSize;
       TriggerDeviceModel.productPage = props.options.productPage;
       TriggerDeviceModel.productPageSize = props.options.productPageSize;
+      TriggerDeviceModel.options = props.options;
     }
     setLoading(true);
   }, [props.options]);
@@ -175,7 +176,7 @@ export default observer((props: AddProps) => {
       extraName: '', // 拓展参数
       onlyName: false,
       type: '', // 触发类型
-      typeIcon: typeIconMap[TriggerDeviceModel.options.action],
+      typeIcon: typeIconMap[data.operator],
       productName: '',
       selectorIcon: '',
       time: undefined,

+ 2 - 1
src/pages/rule-engine/Scene/Save/device/deviceList.tsx

@@ -254,7 +254,7 @@ export default observer(() => {
               TriggerDeviceModel.devicePageSize = size;
             }}
             request={(params) => {
-              const sorts: any[] = [{ name: 'createTime', order: 'desc' }];
+              const sorts: any[] = [];
               if (oldRowKey && isArray(oldRowKey)) {
                 oldRowKey.forEach((v) => {
                   sorts.push({
@@ -263,6 +263,7 @@ export default observer(() => {
                   });
                 });
               }
+              sorts.push({ name: 'createTime', order: 'desc' });
               return service.query({
                 ...params,
                 sorts: sorts,

+ 6 - 1
src/pages/rule-engine/Scene/Save/device/index.tsx

@@ -74,7 +74,12 @@ export default observer((props: Props) => {
         _label.push(<span className="trigger-options-extraTime">{options.extraTime}</span>);
       }
       if (options.action) {
-        _label.push(<span className="trigger-options-action">{options.action}</span>);
+        _label.push(
+          <div style={{ display: 'flex', alignItems: 'center' }}>
+            <AIcon type={options.typeIcon} style={{ paddingRight: 4 }} />
+            <span className="trigger-options-action">{options.action}</span>
+          </div>,
+        );
       }
       if (options.type) {
         _label.push(

+ 2 - 2
src/pages/rule-engine/Scene/Save/device/product.tsx

@@ -257,7 +257,7 @@ export default observer(() => {
           TriggerDeviceModel.productPageSize = size;
         }}
         request={(params) => {
-          const sorts: any = [{ name: 'createTime', order: 'desc' }];
+          const sorts: any = [];
 
           if (oldRowKey) {
             sorts.push({
@@ -265,7 +265,7 @@ export default observer(() => {
               value: oldRowKey,
             });
           }
-
+          sorts.push({ name: 'createTime', order: 'desc' });
           return service.query({
             ...params,
             sorts: sorts,

+ 12 - 2
src/pages/rule-engine/Scene/Save/device/type.tsx

@@ -209,14 +209,24 @@ export default forwardRef((props: Props, ref) => {
                 rules={[{ required: true, message: '请选择属性' }]}
               >
                 <Select
+                  showSearch
                   mode={'multiple'}
                   options={readProperty}
                   maxTagCount={'responsive'}
                   placeholder={'请选择属性'}
                   style={{ width: '100%' }}
                   fieldNames={{ label: 'name', value: 'id' }}
-                  onSelect={(v: any, propertyItem: any) => {
-                    TriggerDeviceModel.options.action = '读取' + propertyItem.name;
+                  filterOption={(input: string, option: any) =>
+                    String(option?.name)?.toLowerCase()?.indexOf(String(input).toLowerCase()) >= 0
+                  }
+                  onChange={(v: any, propertyItems: any[]) => {
+                    const names = propertyItems.map((item) => item.name);
+                    let extraStr = '';
+                    if (names.length >= 2) {
+                      names.length = 2;
+                      extraStr = `等${propertyItems.length}个属性`;
+                    }
+                    TriggerDeviceModel.options.action = `读取 ${names.join('、')}${extraStr}`;
                   }}
                 />
               </Form.Item>

+ 3 - 5
src/pages/rule-engine/Scene/Save/terms/term.tsx

@@ -145,11 +145,9 @@ export default observer((props: TermsProps) => {
                     }
                     onDelete={() => {
                       terms.splice(index, 1);
-                      FormModel.current.options?.when[props.whenName]?.terms?.splice(index, 1);
-                      // setTerms([...terms]);
-                      // props.onValueChange({
-                      //   terms: terms,
-                      // });
+                      FormModel.current.options?.when[props.whenName]?.terms?.[
+                        props.name
+                      ]?.terms?.splice(index, 1);
                     }}
                     onAdd={() => {
                       const key = `params_${new Date().getTime()}`;

+ 4 - 0
src/pages/rule-engine/Scene/Save/trigger/operation.tsx

@@ -84,6 +84,7 @@ export default (props: OperatorProps) => {
       <Col span={6}>
         <Select
           // mode="multiple"
+          showSearch
           id={props.id}
           options={props.propertiesList || []}
           value={key}
@@ -100,6 +101,9 @@ export default (props: OperatorProps) => {
             }
             props.onSelect?.(id, item);
           }}
+          filterOption={(input: string, option: any) =>
+            String(option?.name)?.toLowerCase()?.indexOf(String(input).toLowerCase()) >= 0
+          }
           onDeselect={(id: any) => {
             const _value: any = { ...props.value };
             if (id in props.value) {