WorkflowSettings.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <div class="workflow-settings">
  3. <div class="mb-4 flex">
  4. <div class="flex-1">
  5. <p class="mb-1 capitalize">
  6. {{ t('workflow.settings.onError.title') }}
  7. </p>
  8. <ui-select v-model="settings.onError" class="w-full max-w-sm">
  9. <option v-for="item in onError" :key="item.id" :value="item.id">
  10. {{ t(`workflow.settings.onError.items.${item.name}`) }}
  11. </option>
  12. </ui-select>
  13. </div>
  14. <label v-if="settings.onError === 'restart-workflow'" class="ml-2">
  15. <p class="mb-1 capitalize">
  16. {{ t('workflow.settings.restartWorkflow.for') }}
  17. </p>
  18. <div class="flex items-center bg-input transition-colors rounded-lg">
  19. <input
  20. v-model.number="settings.restartTimes"
  21. type="number"
  22. class="py-2 px-4 w-32 rounded-lg bg-transparent"
  23. />
  24. <span class="px-2">
  25. {{ t('workflow.settings.restartWorkflow.times') }}
  26. </span>
  27. </div>
  28. </label>
  29. </div>
  30. <div>
  31. <p class="mb-1 capitalize">
  32. {{ t('workflow.settings.blockDelay.title') }}
  33. <span :title="t('workflow.settings.blockDelay.description')">
  34. &#128712;
  35. </span>
  36. </p>
  37. <ui-input
  38. v-model.number="settings.blockDelay"
  39. type="number"
  40. class="w-full max-w-sm"
  41. />
  42. </div>
  43. <div class="flex mt-6">
  44. <ui-switch v-model="settings.debugMode" class="mr-4" />
  45. <p class="capitalize">{{ t('workflow.settings.debugMode') }}</p>
  46. </div>
  47. <div class="flex mt-6">
  48. <ui-switch v-model="settings.saveLog" class="mr-4" />
  49. <p class="capitalize">{{ t('workflow.settings.saveLog') }}</p>
  50. </div>
  51. <div class="flex mt-6">
  52. <ui-switch v-model="settings.executedBlockOnWeb" class="mr-4" />
  53. <p class="capitalize">{{ t('workflow.settings.executedBlockOnWeb') }}</p>
  54. </div>
  55. </div>
  56. </template>
  57. <script setup>
  58. import { onMounted, reactive, watch } from 'vue';
  59. import { useI18n } from 'vue-i18n';
  60. import { debounce } from '@/utils/helper';
  61. const props = defineProps({
  62. workflow: {
  63. type: Object,
  64. default: () => ({}),
  65. },
  66. });
  67. const emit = defineEmits(['update']);
  68. const { t } = useI18n();
  69. const onError = [
  70. {
  71. id: 'keep-running',
  72. name: 'keepRunning',
  73. },
  74. {
  75. id: 'stop-workflow',
  76. name: 'stopWorkflow',
  77. },
  78. {
  79. id: 'restart-workflow',
  80. name: 'restartWorkflow',
  81. },
  82. ];
  83. const settings = reactive({
  84. restartTimes: 3,
  85. });
  86. watch(
  87. settings,
  88. debounce((newSettings) => {
  89. emit('update', {
  90. settings: newSettings,
  91. });
  92. }, 500),
  93. { deep: true }
  94. );
  95. onMounted(() => {
  96. Object.assign(settings, props.workflow.settings);
  97. });
  98. </script>