Просмотр исходного кода

fix: 场景联动-动作类型/触发类型 将前端写死改为字典获取

yanglzh 1 год назад
Родитель
Сommit
ff954c3c76

+ 8 - 29
src/views/iot/scene/manage/component/actionParallelItem.vue

@@ -11,9 +11,9 @@
       <div class="product flex flex-warp">
         <el-form-item label="动作类型:" prop="actionType">
           <el-select v-model="item.actionType" filterable clearable placeholder="请选择动作类型" @change="saveData">
-            <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: right; font-size: 13px">{{ it.key }}</span>
+            <el-option v-for="it in sence_action_type" :key="it.value" :label="it.label" :value="it.value">
+              <span style="float: left">{{ it.label }}</span>
+              <span style="float: right; font-size: 13px">{{ it.value }}</span>
             </el-option>
           </el-select>
         </el-form-item>
@@ -35,7 +35,7 @@
 </template>
 
 <script lang="ts" setup>
-import { PropType, ref,watch  } from 'vue'
+import { PropType, ref, watch, getCurrentInstance  } from 'vue'
 import { DocumentAdd, CircleClose } from '@element-plus/icons-vue';
 import DeviceOut from './actionType/deviceOut.vue';
 import SendNotice from './actionType/sendNotice.vue';
@@ -43,8 +43,10 @@ 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','delData','saveData']);
+const emit = defineEmits(['addScenesDetail', 'delData', 'saveData']);
+
+const { proxy } = getCurrentInstance() as any;
+const { sence_action_type } = proxy.useDict('sence_action_type');
 
 interface IValueType {
   actionType?:string;
@@ -52,7 +54,6 @@ interface IValueType {
 interface testIValueType {
   key?: string;
   name?: string;
-
 }
 
 const props = defineProps({
@@ -68,28 +69,6 @@ const props = defineProps({
   index: {
     type: Number ,
     default: () => []
-  },
-  sourceActionTypeData: {
-    type: Array as PropType<testIValueType[]>,
-    default: () => [{
-      'key': 'deviceOutput',
-      'name': '设备输出',
-    }, {
-      'key': 'sendNotice',
-      'name': '发送通知',
-    }, {
-      'key': 'callWebService',
-      'name': '调用WEB服务',
-    }, {
-      'key': "triggerAlarm",
-      'name': '触发告警',
-    }, {
-      'key': 'delayExecution',
-      'name': '延迟执行',
-    }, {
-      'key': 'triggerCustomEvent',
-      'name': '触发场景自定义事件',
-    }]
   }
 })
 const parallelValue = ref(props.parallel);

+ 8 - 33
src/views/iot/scene/manage/component/actionSerialItem.vue

@@ -11,9 +11,9 @@
       <div class="product flex flex-warp">
         <el-form-item label="动作类型:" prop="actionType">
           <el-select v-model="item.actionType" filterable clearable placeholder="请选择动作类型" @change="saveData">
-            <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: right; font-size: 13px">{{ it.key }}</span>
+            <el-option v-for="it in sence_action_type" :key="it.value" :label="it.label" :value="it.value">
+              <span style="float: left">{{ it.label }}</span>
+              <span style="float: right; font-size: 13px">{{ it.value }}</span>
             </el-option>
           </el-select>
         </el-form-item>
@@ -35,7 +35,7 @@
 </template>
 
 <script lang="ts" setup>
-import { PropType, ref,watch  } from 'vue'
+import { PropType, ref, watch, getCurrentInstance  } from 'vue'
 import { DocumentAdd, CircleClose } from '@element-plus/icons-vue';
 import DeviceOut from './actionType/deviceOut.vue';
 import SendNotice from './actionType/sendNotice.vue';
@@ -43,8 +43,10 @@ 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','delData','saveData']);
+const emit = defineEmits(['addScenesDetail', 'delData', 'saveData']);
+
+const { proxy } = getCurrentInstance() as any;
+const { sence_action_type } = proxy.useDict('sence_action_type');
 
 interface IValueType {
   actionType?:string;
@@ -68,28 +70,6 @@ const props = defineProps({
   index: {
     type: Number ,
     default: () => []
-  },
-  sourceActionTypeData: {
-    type: Array as PropType<testIValueType[]>,
-    default: () => [{
-      'key': 'deviceOutput',
-      'name': '设备输出',
-    }, {
-      'key': 'sendNotice',
-      'name': '发送通知',
-    }, {
-      'key': 'callWebService',
-      'name': '调用WEB服务',
-    }, {
-      'key': "triggerAlarm",
-      'name': '触发告警',
-    }, {
-      'key': 'delayExecution',
-      'name': '延迟执行',
-    }, {
-      'key': 'triggerCustomEvent',
-      'name': '触发场景自定义事件',
-    }]
   }
 })
 const serialValue = ref(props.serial);
@@ -105,9 +85,6 @@ watch(() => props.serial, (newSerial) => {
   serialValue.value = newSerial;
 });
 
-
-
-
 const SetSaveData = (data:any) => {
   serialValue.value[data.index] = data.data;
   let newData={
@@ -130,8 +107,6 @@ const delScene = (index: number) => {
   emit('saveData',newData);
 }
 
-
-
 </script>
 <style scoped lang="scss">
 .type-item {

+ 6 - 33
src/views/iot/scene/manage/component/sceneItem.vue

@@ -28,9 +28,9 @@
         </el-form-item>
         <el-form-item label="触发类型:" prop="triggerType">
           <el-select v-model="item.triggerType" clearable filterable placeholder="请选择触发类型" @change="getSelectcolumns(index, item.triggerType!)">
-            <el-option v-for="it in sourceTypeData" :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 v-for="it in sence_source_type" :key="it.value" :label="it.label" :value="it.value">
+              <span style="float: left">{{ it.label }}</span>
+              <span style="float: right; font-size: 13px">{{ it.value }}</span>
             </el-option>
           </el-select>
         </el-form-item>
@@ -71,6 +71,9 @@ import datahub from '/@/api/datahub';
 import Condition from './condition.vue';
 const { proxy } = getCurrentInstance() as any;
 const scene_type = proxy.useDict('scene_type');
+
+const { sence_source_type } = proxy.useDict('sence_source_type');
+
 const emit = defineEmits(['addScenesDetail', 'delScenesDetail', 'editScenesDetail']);
 const dialogVisible = ref();
 const deviceListData = ref<testIValueType[]>([]);
@@ -109,36 +112,6 @@ const props = defineProps({
     type: Array as PropType<testIValueType[]>,
     default: () => []
   },
-  sourceTypeData: {
-    type: Array as PropType<testIValueType[]>,
-    default: () => [{
-      'key': 'onLine',
-      'name': '设备上线',
-    }, {
-      'key': 'offLine',
-      'name': '设备离线',
-    },
-
-    {
-      'key': 'readAttribute',
-      'name': '读取属性',
-    }, {
-      'key': 'modifyAttribute',
-      'name': '修改属性',
-    },
-    {
-      'key': 'reportAttribute',
-      'name': '属性上报',
-    }, {
-      'key': 'reportEvent',
-      'name': '事件上报',
-    },
-    {
-      'key': 'functionCall',
-      'name': '功能调用',
-    }
-    ]
-  }
 })
 
 const seletChange = (index: number, val: string) => {