Browse Source

feat:状态格式转换

ananzhusen 11 months ago
parent
commit
c62af9b7ce
1 changed files with 76 additions and 0 deletions
  1. 76 0
      src/services/common.ts

+ 76 - 0
src/services/common.ts

@@ -1179,6 +1179,7 @@ export function dealDataBeforeOpen(data){
           // 老格式
           if (event.name === 'valueUpdate') {
             if (event.where && event.where.key) {
+              /*
               if (!pen.realTimes) {
                 pen.realTimes = [];
               }
@@ -1215,6 +1216,52 @@ export function dealDataBeforeOpen(data){
                 });
               }
               pen.events.splice(i, 1);
+              i--;*/
+
+              //new
+              if (!pen.triggers) {
+                pen.triggers = [];
+              }
+              let trigger = {
+                name: '状态1',
+                conditionType: 'and',
+               
+                conditions: [
+                  {
+                    type: event.where?.type === 'custom' ? 'fn' : '',
+                    key: event.where?.key,
+                    operator: event.where?.comparison,
+                    value: event.where?.value,
+                    fnJs: event.where?.fnJs,
+                  },
+                ],
+                actions: [
+                  {
+                    action: event.action,
+                    value: event.value,
+                    params: event.params,
+                  },
+                ],
+              };
+              let index = pen.triggers.findIndex(
+                (el) => el.temKey === event.where.key
+              );
+              if(index !== -1){
+                const state = pen.triggers[index].status;
+                const idx = state.findIndex((el)=>el.conditions?.length&&el.conditions[0].key === trigger.conditions[0].key&&el.conditions[0].operator === trigger.conditions[0].operator&&el.conditions[0].value === trigger.conditions[0].value);
+                if(idx!==-1){
+                  state[idx].actions.push(...deepClone(trigger.actions));
+                }else{
+                  pen.triggers[index].status.push(trigger);
+                }
+              }else{
+                pen.triggers.push({
+                  temKey:event.where?.key,
+                  name:`场景状态${i+1}`,
+                  status:[trigger]
+                });
+              }
+              pen.events.splice(i, 1);
               i--;
             } else {
               //TODO 没有选择触发条件的情况
@@ -1275,5 +1322,34 @@ export function dealDataBeforeOpen(data){
         // });
       }
     }
+    //状态格式转换
+    if(!(pen.triggers?.length) && pen.realTimes?.length){
+      pen.triggers = [];
+      pen.realTimes.forEach((realTime,index)=>{
+        const delIdx = [];
+        realTime.triggers?.forEach((trigger,_idx)=>{
+          if(trigger.conditions?.length){
+            trigger.conditions.forEach((condition,_idx)=>{
+              condition.key = realTime.key;
+            });
+            if(trigger.conditions?.length === 1){
+              const _idx2 = realTime.triggers.findIndex((el)=>el.conditions?.length&&el.conditions[0].key === trigger.conditions[0].key&&el.conditions[0].operator === trigger.conditions[0].operator&&el.conditions[0].value === trigger.conditions[0].value);
+              if(_idx !== _idx2){
+                realTime.triggers[_idx2].actions.push(...deepClone(realTime.triggers[_idx].actions));
+                delIdx.push(_idx);
+              }
+            }
+          }
+        });
+        delIdx.forEach((idx,index)=>{
+          realTime.triggers.splice((idx-index),1);
+        });
+        pen.triggers.push({
+          name:`状态情况${index+1}`,
+          status:deepClone(realTime.triggers)
+        });
+        delete realTime.triggers;
+      });
+    }
   })
 }