Przeglądaj źródła

perf: 【IoT 物联网】场景联动优化定时触发配置的内容直接内联在主组件中

puhui999 9 miesięcy temu
rodzic
commit
0c952309b7

+ 0 - 39
src/views/iot/rule/scene/form/configs/TimerTriggerConfig.vue

@@ -1,39 +0,0 @@
-<template>
-  <div class="flex flex-col gap-16px">
-    <div
-      class="flex items-center gap-8px p-12px px-16px bg-[var(--el-fill-color-light)] rounded-6px border border-[var(--el-border-color-lighter)]"
-    >
-      <Icon icon="ep:timer" class="text-[var(--el-color-danger)] text-18px" />
-      <span class="text-14px font-500 text-[var(--el-text-color-primary)]">定时触发配置</span>
-    </div>
-
-    <!-- CRON 表达式配置 -->
-    <div
-      class="p-16px border border-[var(--el-border-color-lighter)] rounded-6px bg-[var(--el-fill-color-blank)]"
-    >
-      <el-form-item label="CRON表达式" required>
-        <Crontab v-model="localValue" />
-      </el-form-item>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { useVModel } from '@vueuse/core'
-import { Crontab } from '@/components/Crontab'
-
-/** 定时触发配置组件 */
-defineOptions({ name: 'TimerTriggerConfig' })
-
-const props = defineProps<{
-  modelValue?: string
-}>()
-const emit = defineEmits<{
-  (e: 'update:modelValue', value: string): void
-  (e: 'validate', result: { valid: boolean; message: string }): void
-}>()
-
-const localValue = useVModel(props, 'modelValue', emit, {
-  defaultValue: '0 0 12 * * ?'
-})
-</script>

+ 25 - 5
src/views/iot/rule/scene/form/sections/TriggerSection.vue

@@ -66,11 +66,31 @@
             />
 
             <!-- 定时触发配置 -->
-            <TimerTriggerConfig
+            <div
               v-else-if="triggerItem.type === TriggerTypeEnum.TIMER"
-              :model-value="triggerItem.cronExpression"
-              @update:model-value="(value) => updateTriggerCronConfig(index, value)"
-            />
+              class="flex flex-col gap-16px"
+            >
+              <div
+                class="flex items-center gap-8px p-12px px-16px bg-[var(--el-fill-color-light)] rounded-6px border border-[var(--el-border-color-lighter)]"
+              >
+                <Icon icon="ep:timer" class="text-[var(--el-color-danger)] text-18px" />
+                <span class="text-14px font-500 text-[var(--el-text-color-primary)]"
+                  >定时触发配置</span
+                >
+              </div>
+
+              <!-- CRON 表达式配置 -->
+              <div
+                class="p-16px border border-[var(--el-border-color-lighter)] rounded-6px bg-[var(--el-fill-color-blank)]"
+              >
+                <el-form-item label="CRON表达式" required>
+                  <Crontab
+                    :model-value="triggerItem.cronExpression || '0 0 12 * * ?'"
+                    @update:model-value="(value) => updateTriggerCronConfig(index, value)"
+                  />
+                </el-form-item>
+              </div>
+            </div>
           </div>
         </div>
       </div>
@@ -95,7 +115,7 @@
 <script setup lang="ts">
 import { useVModel } from '@vueuse/core'
 import DeviceTriggerConfig from '../configs/DeviceTriggerConfig.vue'
-import TimerTriggerConfig from '../configs/TimerTriggerConfig.vue'
+import { Crontab } from '@/components/Crontab'
 import type { Trigger } from '@/api/iot/rule/scene'
 import {
   getTriggerTypeOptions,