ananzhusen 11 месяцев назад
Родитель
Сommit
9272e4f13d

+ 1 - 0
src/services/common.ts

@@ -1341,6 +1341,7 @@ export function dealDataBeforeOpen(data){
           if(trigger.conditions?.length){
             trigger.conditions.forEach((condition,_idx)=>{
               condition.key = realTime.key;
+              condition.keyLabel = realTime.label || 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);

+ 46 - 2
src/views/components/PenDatas.vue

@@ -284,7 +284,9 @@
           </div>
         </div>
         <div v-if="props.pen.children?.length" class="c-titile">
-          子节点数据
+          <t-tooltip content="ctrl+shift+点击,可选中子图元">
+            子节点数据
+          </t-tooltip>
         </div>
         <template v-for="(cPen) in childrenPens">
           <div
@@ -885,6 +887,15 @@ const options = ref<any>([
 ]);
 
 const moreOptions = ref<any>([
+  {
+    value: 'view',
+    content: '查看状态',
+  },
+  {
+    value: 'custom',
+    content: '自定义状态',
+    divider: true
+  },
   {
     value: 'edit',
     content: '编辑',
@@ -1615,6 +1626,39 @@ const onCMenuMore = (e: any, item: any, i: number, pen:Pen)=>{
       pen.realTimes.splice(i, 1);
       meta2d.initBinds();
       break;
+    case 'custom':
+      if(!pen.triggers){
+        pen.triggers = [];
+      }
+      pen.triggers.push({
+        name: `状态场景${pen.triggers.length + 1}`,
+        status:[
+          {
+            name:'状态1',
+            conditionType: 'and',
+            conditions: [{
+              type:'',
+              operator: "=",
+              key: item.key,//"text",
+              keyLabel: item.label,
+              value: undefined
+            }],
+            actions: [],
+          },
+          {
+            name:'状态2',
+            conditionType: 'and',
+            conditions: [],
+            actions: [],
+          }
+        ],
+      });
+      meta2d.active(meta2d.find(pen.id));
+      emit('tabchange',pen.triggers.length-1);
+      break;
+    case 'view':
+      meta2d.active(meta2d.find(pen.id));
+      emit('tabchange',-1);
     default:
       break;
   }
@@ -1837,7 +1881,7 @@ const addTrigger = (item:any, e:any, i:any) => {
       break;
   }
   if(!['edit', 'delete'].includes(e.value)){
-    emit('tabchange',true);
+    emit('tabchange',props.pen.triggers.length-1);
   }
 }
 

+ 2 - 2
src/views/components/PenProps.vue

@@ -1834,10 +1834,10 @@ const isDom = computed(() => {
 });
 
 const status = ref<any>(null);
-const tabChange = (tab: number) => {
+const tabChange = (index: number) => {
   data.tab = 5;
   setTimeout(()=>{
-    status.value.editLast();
+    status.value.editLast(index);
   },1000);
 };
 

+ 4 - 3
src/views/components/PenStatus.vue

@@ -306,9 +306,10 @@ const onEditTrigger = (data: any) => {
   penTree.value = getPenTree();
 };
 
-const editLast = () => {
-  const i = props.pen.triggers.length;
-  onEditTrigger(props.pen.triggers[i - 1]);
+const editLast = (index) => {
+  if(index>-1){
+    onEditTrigger(props.pen.triggers[index]);
+  }
 };
 
 const addTriggerStatus = (triger: any) => {