Jelajahi Sumber

feat: merge

xieyonghong 3 tahun lalu
induk
melakukan
ce4e36ef2c

+ 6 - 0
src/components/ProTableCard/CardItems/Scene/MyTooltip/index.tsx

@@ -0,0 +1,6 @@
+import { TooltipProps } from 'antd/lib/tooltip';
+import { Tooltip } from 'antd';
+
+export default (props: TooltipProps) => {
+  return <Tooltip {...props} overlayInnerStyle={{ color: 'black' }} color={'white'} />;
+};

+ 76 - 32
src/components/ProTableCard/CardItems/Scene/index.tsx

@@ -8,6 +8,7 @@ import type { SceneItem } from '@/pages/rule-engine/Scene/typings';
 import { CheckOutlined, DownOutlined, UpOutlined } from '@ant-design/icons';
 import classNames from 'classnames';
 import { ActionsType, BranchesThen } from '@/pages/rule-engine/Scene/typings';
+import MyTooltip from './MyTooltip';
 
 const imageMap = new Map();
 imageMap.set('timer', require('/public/images/scene/scene-timer.png'));
@@ -75,6 +76,19 @@ const selectorRender = (obj: any) => {
   }
 };
 
+const selectorContextRender = (obj: any) => {
+  switch (obj?.selector) {
+    case 'all':
+      return `所有的${obj?.productId}`;
+    case 'fixed':
+      return `设备${(obj?.selectorValues || '').map((item: any) => item?.name).join(',')}`;
+    case 'org':
+      return `部门${(obj?.selectorValues || '').map((item: any) => item?.name).join(',')}`;
+    default:
+      return '';
+  }
+};
+
 const timerRender = (timer: any) => {
   if (timer?.trigger && timer?.mod) {
     const trigger = timer?.trigger;
@@ -182,7 +196,6 @@ const notifyRender = (data: ActionsType | undefined) => {
 };
 
 const deviceRender = (data: ActionsType | undefined) => {
-  console.log(data);
   switch (data?.device?.selector) {
     case 'relation':
       return (
@@ -191,7 +204,7 @@ const deviceRender = (data: ActionsType | undefined) => {
           与【触发设备】具有相同【关系名称】的【产品名称】设备的【属性/功能】
         </div>
       );
-    case 'tag': //`【读取/设置/执行】【标签名称】为【标签值】【并且/或者】【标签名称】为【标签值】的【产品名称】【属性/功能】`
+    case 'tag':
       return (
         <div>
           {data?.options?.type || ''}
@@ -275,7 +288,7 @@ const actionRender = (action: ActionsType, index: number) => {
 
 const conditionsRender = (when: any[], index: number) => {
   if (when.length) {
-    return when[index];
+    return (when[index]?.terms || []).join('');
   }
   return '';
 };
@@ -307,17 +320,24 @@ const ContentRender = (data: SceneCardProps) => {
     const operation: any = data.trigger.device?.operation;
     return (
       <div className={styles['card-item-content-box']}>
-        <div className={styles['card-item-content-trigger']}>
-          {selectorRender(obj)}
-          {operation ? (
-            <span>
-              {timerRender(operation?.timer)}
-              {operatorRender(operation)}
-            </span>
-          ) : (
-            ''
-          )}
-        </div>
+        <MyTooltip
+          placement="topLeft"
+          title={`${
+            selectorContextRender(obj) + timerRender(operation?.timer) + operatorRender(operation)
+          }`}
+        >
+          <div className={classNames(styles['card-item-content-trigger'], 'ellipsis')}>
+            {selectorRender(obj)}
+            {operation ? (
+              <span>
+                {timerRender(operation?.timer)}
+                {operatorRender(operation)}
+              </span>
+            ) : (
+              ''
+            )}
+          </div>
+        </MyTooltip>
         <div className={styles['card-item-content-action']}>
           {(visible ? data.branches || [] : (data?.branches || []).slice(0, 2)).map(
             (item: any, index) => {
@@ -329,14 +349,21 @@ const ContentRender = (data: SceneCardProps) => {
                   <div className={styles['card-item-content-action-item-right']}>
                     <div className={styles['card-item-content-action-item-right-item']}>
                       <div className={styles['right-item-left']}>
-                        <div className={classNames(styles['trigger-conditions'], 'ellipsis')}>
-                          {conditionsRender(data.options?.terms || [], index)}
-                        </div>
-                        {item.shakeLimit?.enabled && (
-                          <div className={classNames(styles['trigger-shake'], 'ellipsis')}>
-                            ({item.shakeLimit?.time}秒内发生{item.shakeLimit?.threshold}
-                            次以上时执行一次)
+                        <MyTooltip title={conditionsRender(data.options?.terms || [], index)}>
+                          <div className={classNames(styles['trigger-conditions'], 'ellipsis')}>
+                            {conditionsRender(data.options?.terms || [], index)}
                           </div>
+                        </MyTooltip>
+                        {item.shakeLimit?.enabled && (
+                          <MyTooltip
+                            title={`(${item.shakeLimit?.time}秒内发生${item.shakeLimit?.threshold}
+                            次以上时执行一次)`}
+                          >
+                            <div className={classNames(styles['trigger-shake'], 'ellipsis')}>
+                              ({item.shakeLimit?.time}秒内发生{item.shakeLimit?.threshold}
+                              次以上时执行一次)
+                            </div>
+                          </MyTooltip>
                         )}
                       </div>
                       <div className={styles['right-item-right']}>
@@ -371,20 +398,37 @@ const ContentRender = (data: SceneCardProps) => {
         </div>
       </div>
     );
-  } else if (type !== 'device' && data.actions?.length) {
+  } else if (type !== 'device' && data.branches?.length) {
     return (
       <div className={styles['card-item-content-box']}>
         <div className={styles['card-item-content-action']}>
-          {data.actions?.length && (
-            <div className={styles['card-item-content-action-item']}>
-              <div className={styles['card-item-content-action-item-left']}>执行</div>
-              <div className={styles['card-item-content-action-item-right']}>
-                {(data?.actions || []).map((item: any, index) => {
-                  return actionRender(item, index);
-                })}
-              </div>
-            </div>
-          )}
+          {data.branches?.length &&
+            (data?.branches || []).map((item: any, index) => {
+              return (
+                <div className={styles['card-item-content-action-item']} key={item?.key || index}>
+                  <div className={styles['card-item-content-action-item-left']}>执行</div>
+                  <div className={styles['card-item-content-action-item-right']}>
+                    <div className={styles['card-item-content-action-item-right-item']}>
+                      <div className={styles['right-item-right']}>
+                        {(item?.then || []).map((i: BranchesThen, _index: number) => {
+                          console.log(i);
+                          return (
+                            <div key={i?.key || _index} className={styles['right-item-right-item']}>
+                              <div className={styles['trigger-ways']}>
+                                {i.parallel ? '并行执行' : '串行执行'}
+                              </div>
+                              <div className={classNames(styles['right-item-right-item-contents'])}>
+                                {branchesActionRender(Array.isArray(i?.actions) ? i?.actions : [])}
+                              </div>
+                            </div>
+                          );
+                        })}
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              );
+            })}
         </div>
       </div>
     );

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

@@ -132,15 +132,7 @@ export default (props: ItemProps) => {
           </div>
         );
       default:
-        return (
-          <AddButton
-            onClick={() => {
-              setVisible(true);
-            }}
-          >
-            点击配置执行动作
-          </AddButton>
-        );
+        return null;
     }
   };
 
@@ -225,7 +217,7 @@ export default (props: ItemProps) => {
           }}
           save={(data: ActionsType, options) => {
             // FormModel.actions[props.name] = data;
-            props.onUpdate(props, options);
+            props.onUpdate(data, options);
             setVisible(false);
           }}
           type={props.type}

+ 7 - 3
src/pages/rule-engine/Scene/Save/action/notify/NotifyConfig.tsx

@@ -7,7 +7,11 @@ import { ExtraNoticeConfigCard } from '@/components/ProTableCard/CardItems/notic
 import { observer } from '@formily/react';
 import { NotifyModel } from './index';
 
-export default observer(() => {
+interface Props {
+  type: string;
+}
+
+export default observer((props: Props) => {
   const actionRef = useRef<ActionType>();
   const [searchParam, setSearchParam] = useState({});
 
@@ -85,7 +89,7 @@ export default observer(() => {
                         {
                           column: 'type',
                           termType: 'eq',
-                          value: NotifyModel.notify?.notifyType || '',
+                          value: NotifyModel.notify?.notifyType || props.type,
                         },
                       ],
                     },
@@ -94,7 +98,7 @@ export default observer(() => {
                     {
                       column: 'type',
                       termType: 'eq',
-                      value: NotifyModel.notify?.notifyType || '',
+                      value: NotifyModel.notify?.notifyType || props.type,
                     },
                   ],
               sorts: [{ name: 'createTime', order: 'desc' }],

+ 12 - 5
src/pages/rule-engine/Scene/Save/action/notify/NotifyTemplate.tsx

@@ -7,7 +7,11 @@ import { ExtraNoticeTemplateCard } from '@/components/ProTableCard/CardItems/not
 import { observer } from '@formily/react';
 import { NotifyModel } from './index';
 
-export default observer(() => {
+interface Props {
+  type: string;
+}
+
+export default observer((props: Props) => {
   const actionRef = useRef<ActionType>();
   const [searchParam, setSearchParam] = useState({});
 
@@ -75,10 +79,13 @@ export default observer(() => {
             },
           }}
           request={async (params) => {
-            const resp = await queryMessageTemplatePaging(NotifyModel.notify?.notifierId || '', {
-              ...params,
-              sorts: [{ name: 'createTime', order: 'desc' }],
-            });
+            const resp = await queryMessageTemplatePaging(
+              NotifyModel.notify?.notifierId || props?.type,
+              {
+                ...params,
+                sorts: [{ name: 'createTime', order: 'desc' }],
+              },
+            );
             return {
               code: resp.message,
               result: {

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

@@ -65,9 +65,9 @@ export default observer((props: Props) => {
       case 'way':
         return <NotifyWay ref={WayRef} value={NotifyModel.notify?.notifyType} />;
       case 'config':
-        return <NotifyConfig />;
+        return <NotifyConfig type={NotifyModel.notify.notifyType || ''} />;
       case 'template':
-        return <NotifyTemplate />;
+        return <NotifyTemplate type={NotifyModel.notify.notifyType || ''} />;
       case 'variable':
         return <VariableDefinitions name={props.name} ref={VariableRef} />;
       default:

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

@@ -68,7 +68,7 @@ const Scene = () => {
           style={{ padding: 0 }}
           isPermission={permission.tigger}
           tooltip={{
-            title: record.state?.value === 'disabled' ? '未启用,不能手动触发' : '手动触发',
+            title: record.state?.value === 'disabled' ? '未启用,不能手动触发' : '',
           }}
           disabled={record.state?.value === 'disabled'}
           popConfirm={{
@@ -294,4 +294,5 @@ const Scene = () => {
     </PageContainer>
   );
 };
+
 export default Scene;