Jelajahi Sumber

无法连接后端,未进行调试

yukai 2 tahun lalu
induk
melakukan
488bd8741c

+ 0 - 1
src/views/iot/scene/manage/component/actionItem.vue

@@ -115,7 +115,6 @@ const delScenesDetail = (index: number) => {
 
 
 //修改一条场景
 //修改一条场景
 const saveData = (data: any) => {
 const saveData = (data: any) => {
-  console.log(actionList.value,"111111111111111111");
 			let ids = props.scene_id;
 			let ids = props.scene_id;
 			api.manage.editDetail({ id: ids, bodyjson:actionList.value }).then((res: any) => {
 			api.manage.editDetail({ id: ids, bodyjson:actionList.value }).then((res: any) => {
 				  getOneDetail();
 				  getOneDetail();

+ 47 - 94
src/views/iot/scene/manage/component/actionParallelItem.vue

@@ -1,7 +1,7 @@
 
 
 <template>
 <template>
   <div class="type-item">
   <div class="type-item">
-    <div v-for="(item, index) in parallellist" :key="index" class="item " :class="index > 0 ? 'biankang' : ''">
+    <div v-for="(item, index) in parallel" :key="index" class="item " :class="index > 0 ? 'biankang' : ''">
       <div class="conicon" style="width: 100%; text-align: right; position: relative; right: -8px; top: -8px; color: red"
       <div class="conicon" style="width: 100%; text-align: right; position: relative; right: -8px; top: -8px; color: red"
         v-if="index > 0">
         v-if="index > 0">
         <el-icon @click="delScene(index)">
         <el-icon @click="delScene(index)">
@@ -9,112 +9,61 @@
         </el-icon>
         </el-icon>
       </div>
       </div>
       <div class="product flex flex-warp">
       <div class="product flex flex-warp">
-
-        <el-form-item label="动作类型:" prop="product_key">
-          <el-select v-model="item.product_key" filterable placeholder="请选择产品">
+        <el-form-item label="动作类型:" prop="actionType">
+          <el-select v-model="item.actionType" filterable placeholder="请选择动作类型" @change="saveData">
             <el-option v-for="it in sourceActionTypeData" :key="it.key" :label="it.name" :value="it.key">
             <el-option v-for="it in sourceActionTypeData" :key="it.key" :label="it.name" :value="it.key">
               <span style="float: left">{{ it.name }}</span>
               <span style="float: left">{{ it.name }}</span>
               <span style="float: right; font-size: 13px">{{ it.key }}</span>
               <span style="float: right; font-size: 13px">{{ it.key }}</span>
             </el-option>
             </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="用户类型:" prop="device_key">
-          <el-select v-model="item.device_key" filterable placeholder="请选择设备">
-            <el-option v-for="it in sourceData" :key="it.key" :label="it.name" :value="it.key">
-              <span style="float: left">{{ it.name }}</span>
-              <span style="float: right; font-size: 13px">{{ it.key }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="触发类型:" prop="type">
-          <el-select v-model="item.type" filterable placeholder="请选择触发类型">
-            <el-option v-for="it in sourceData" :key="it.key" :label="it.name" :value="it.key">
-              <span style="float: left">{{ it.name }}</span>
-              <span style="float: right; font-size: 13px">{{ it.key }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="属性:" prop="type">
-          <el-select v-model="item.type" filterable placeholder="请选择触发类型">
-            <el-option v-for="it in sourceData" :key="it.key" :label="it.name" :value="it.key">
-              <span style="float: left">{{ it.name }}</span>
-              <span style="float: right; font-size: 13px">{{ it.key }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
+        <DeviceOut :index="index" :sourceData="sourceData" v-if="item.actionType==='deviceOutput'" @SetSaveData="SetSaveData"></DeviceOut>
+        <SendNotice  :index="index" v-if="item.actionType==='sendNotice'"  @SetSaveData="SetSaveData"></SendNotice>
+        <CallWebService :index="index"  v-if="item.actionType==='callWebService'"  @SetSaveData="SetSaveData"></CallWebService>
+        <TriggerAlarm :index="index"  v-if="item.actionType==='triggerAlarm'"  @saveData="saveData"></TriggerAlarm>
+        <DelayExecution  :index="index" v-if="item.actionType==='delayExecution'"  @saveData="saveData"></DelayExecution>
+        <TriggerCustomEvent :index="index"  v-if="item.actionType==='triggerCustomEvent'"  @saveData="saveData"></TriggerCustomEvent>
       </div>
       </div>
-
-
     </div>
     </div>
     <div>
     <div>
       <div class=" flex-center">
       <div class=" flex-center">
-        <el-button :icon="DocumentAdd" @click="addScene()" style="border: 1px solid #409eff;color: #409eff;">新增并行动作</el-button>
+        <el-button :icon="DocumentAdd" @click="addScene()"
+          style="border: 1px solid #409eff;color: #409eff;">新增串行动作</el-button>
       </div>
       </div>
     </div>
     </div>
-
-
-
-
-
   </div>
   </div>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { PropType, ref  } from 'vue'
+import { PropType, ref,watch  } from 'vue'
 import { DocumentAdd, CircleClose } from '@element-plus/icons-vue';
 import { DocumentAdd, CircleClose } from '@element-plus/icons-vue';
-
-
-
-interface IConditionItem {
-  param?: string;
-  operator?: string;
-  value?: string;
-}
+import DeviceOut from './actionType/deviceOut.vue';
+import SendNotice from './actionType/sendNotice.vue';
+import CallWebService from './actionType/callWebService.vue';
+import TriggerAlarm from './actionType/triggerAlarm.vue';
+import DelayExecution from './actionType/delayExecution.vue';
+import TriggerCustomEvent from './actionType/triggerCustomEvent.vue';
+const deviceListData = ref<testIValueType[]>([]);
+const emit = defineEmits(['addScenesDetail','delScenesDetail','saveData']);
 
 
 interface IValueType {
 interface IValueType {
-  type?: string;
-  product_key?: string;
-  device_key?: string;
-  where?: string;
-  cronExpression?: string;
-  condition?: {
-    list?: IConditionItem[] ;
-  }[];
+  actionType?:string;
 }
 }
-
-
-
 interface testIValueType {
 interface testIValueType {
-  key: string;
+  key?: string;
   name?: string;
   name?: string;
 
 
 }
 }
 
 
 const props = defineProps({
 const props = defineProps({
 
 
-  parallellist: {
+  parallel: {
     type: Array as PropType<IValueType[]>,
     type: Array as PropType<IValueType[]>,
     default: () => []
     default: () => []
   },
   },
   sourceData: {
   sourceData: {
     type: Array as PropType<testIValueType[]>,
     type: Array as PropType<testIValueType[]>,
-    default: () => [{
-      'key': 'test',
-      'name': '测试',
-    }, {
-      'key': 'test',
-      'name': '测试',
-    }, {
-      'key': 'test',
-      'name': '测试',
-    }, {
-      'key': 'test',
-      'name': '测试',
-    }, {
-      'key': 'test',
-      'name': '测试',
-    }]
+    default: () => []
   },
   },
   sourceActionTypeData: {
   sourceActionTypeData: {
     type: Array as PropType<testIValueType[]>,
     type: Array as PropType<testIValueType[]>,
@@ -134,35 +83,37 @@ const props = defineProps({
       'key': 'delayExecution',
       'key': 'delayExecution',
       'name': '延迟执行',
       'name': '延迟执行',
     }, {
     }, {
-        'key': 'triggerCustomEvent',
-        'name': '触发场景自定义事件',
+      'key': 'triggerCustomEvent',
+      'name': '触发场景自定义事件',
     }]
     }]
-  },
-
+  }
 })
 })
+const serialValue = ref(props.parallel);
+
+const saveData=()=>{
+  emit('saveData',props.parallel);
+}
+watch(() => props.parallel, (newSerial) => {
+  serialValue.value = newSerial;
+});
+
 
 
 
 
+
+const SetSaveData = (data:any) => {
+  serialValue.value[data.index] = data.data;
+  emit('saveData', serialValue.value);
+}
 const addScene = () => {
 const addScene = () => {
-  props.parallellist.push({
-    'product_key': '',
-    'device_key': '',
-    'type': '',
-    'condition':[{
-								'list': [{
-											'param': '',
-											'operator': '',
-											'value': ''
-										}]
-							}]
+  props.parallel.push({
+    'actionType': '',
   });
   });
 };
 };
 const delScene = (index: number) => {
 const delScene = (index: number) => {
-  props.parallellist.splice(index, 1);
+  props.parallel.splice(index, 1);
 }
 }
-
 </script>
 </script>
 <style scoped lang="scss">
 <style scoped lang="scss">
-
 .type-item {
 .type-item {
   width: 100%;
   width: 100%;
 
 
@@ -186,7 +137,7 @@ const delScene = (index: number) => {
 
 
   .biankang {
   .biankang {
 
 
-    border: 1px dashed #959596;;
+    border: 1px solid #d6d6d6;
     border-radius: 10px;
     border-radius: 10px;
   }
   }
 
 
@@ -205,6 +156,7 @@ const delScene = (index: number) => {
 
 
   .product {
   .product {
     margin-bottom: 20px;
     margin-bottom: 20px;
+
     .el-form-item {
     .el-form-item {
       margin-left: 30px;
       margin-left: 30px;
       margin-bottom: 10px;
       margin-bottom: 10px;
@@ -213,3 +165,4 @@ const delScene = (index: number) => {
 
 
 }
 }
 </style>
 </style>
+

+ 1 - 1
src/views/iot/scene/manage/component/actionType/triggerCustomEvent.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <el-form-item label="自定义场景:" prop="executeAction" class="form-item">
   <el-form-item label="自定义场景:" prop="executeAction" class="form-item">
-    <el-select v-model="fromData.executeAction" filterable placeholder="请选择自定义场景" @change="getTemplist">
+    <el-select v-model="fromData.executeAction" filterable placeholder="请选择自定义场景" @change="saveData">
       <el-option v-for="item in sceneList" :key="item.id" :label="item.name" :value="item.id" />
       <el-option v-for="item in sceneList" :key="item.id" :label="item.name" :value="item.id" />
     </el-select>
     </el-select>
   </el-form-item>
   </el-form-item>