Fluentbit.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <a-form-model :model="formData" size="small" ref="formRef" class="w-75" :rules="rules" v-bind="formItemLayout">
  3. <a-form-model-item :label="$t('k8s.text_250')">
  4. <a-switch v-model="formData.es.enabled" />
  5. </a-form-model-item>
  6. <template v-if="formData.es.enabled">
  7. <a-form-model-item :label="$t('k8s.text_251')" prop="es.index">
  8. <a-input v-model="formData.es.index" :placeholder="$t('k8s.text_252')" />
  9. </a-form-model-item>
  10. <a-form-model-item :label="$t('k8s.text_253')" prop="es.host">
  11. <a-input v-model="formData.es.host" :placeholder="$t('k8s.text_254')" />
  12. </a-form-model-item>
  13. <a-form-model-item :label="$t('k8s.text_255')" prop="es.port">
  14. <a-input v-model="formData.es.port" />
  15. </a-form-model-item>
  16. <a-form-model-item :label="$t('k8s.text_34')" prop="es.type">
  17. <a-input v-model="formData.es.type" />
  18. </a-form-model-item>
  19. </template>
  20. <a-divider />
  21. <a-form-model-item :label="$t('k8s.text_256')">
  22. <a-switch v-model="formData.kafka.enabled" />
  23. </a-form-model-item>
  24. <template v-if="formData.kafka.enabled">
  25. <a-form-model-item :label="$t('k8s.text_257')">
  26. <a-form-model-item
  27. v-for="(val, i) in formData.kafka.brokers"
  28. :key="val.key"
  29. :prop="'kafka.brokers.' + i + '.value'"
  30. :rules="[
  31. { required: true, message: $t('k8s.text_258'), trigger: 'blur' },
  32. ]">
  33. <div class="d-flex align-items-center">
  34. <a-input v-model="val.value" :placeholder="$t('k8s.text_258')" />
  35. <a-icon type="minus-circle" style="color: #F56C6C;" class="a-icon-remove-outline cursor-pointer ml-2" v-if="formData.kafka.brokers.length > 1" @click="decreaseBroker(val)" />
  36. </div>
  37. </a-form-model-item>
  38. <a-button type="link" size="small" @click="addBroker">{{$t('k8s.text_249')}}</a-button>
  39. </a-form-model-item>
  40. <a-form-model-item label="topics">
  41. <a-form-model-item
  42. v-for="(val, i) in formData.kafka.topics"
  43. :key="val.key"
  44. :prop="'kafka.topics.' + i + '.value'"
  45. :rules="[
  46. { required: true, message: $t('k8s.text_259'), trigger: 'blur' },
  47. ]">
  48. <div class="d-flex align-items-center">
  49. <a-input v-model="val.value" :placeholder="$t('k8s.text_259')" />
  50. <a-icon type="minus-circle" style="color: #F56C6C;" class="a-icon-remove-outline cursor-pointer ml-2" v-if="formData.kafka.topics.length > 1" @click="decreaseTopic(val)" />
  51. </div>
  52. </a-form-model-item>
  53. <a-button type="link" size="small" @click="addTopic">{{$t('k8s.text_249')}}</a-button>
  54. </a-form-model-item>
  55. </template>
  56. <a-form-model-item v-bind="offsetFormItemLayout">
  57. <a-button class="mr-2" type="primary" @click="submitForm('formRef')">{{$t('k8s.text_260')}}</a-button>
  58. <a-button @click="cancel">{{$t('k8s.text_162')}}</a-button>
  59. </a-form-model-item>
  60. </a-form-model>
  61. </template>
  62. <script>
  63. import mixin from '../mixins'
  64. export default {
  65. name: 'KubeComponentFluentbit',
  66. mixins: [mixin],
  67. data () {
  68. let formData = {
  69. es: {
  70. enabled: false,
  71. host: '',
  72. index: 'fluentbit',
  73. port: 9200,
  74. type: 'flb_type',
  75. },
  76. kafka: {
  77. enabled: false,
  78. brokers: [
  79. { key: +new Date(), value: '' },
  80. ],
  81. topics: [
  82. { key: +new Date(), value: '' },
  83. ],
  84. },
  85. }
  86. if (this.isUpdate) {
  87. formData = this.updateData.backend
  88. formData.kafka.brokers = formData.kafka.brokers.map((v, i) => ({ key: +new Date() + i, value: v }))
  89. formData.kafka.topics = formData.kafka.topics.map((v, i) => ({ key: +new Date() + i, value: v }))
  90. }
  91. return {
  92. rules: {
  93. 'es.index': [
  94. { required: true, message: this.$t('k8s.text_252'), trigger: 'blur' },
  95. ],
  96. 'es.host': [
  97. { required: true, message: this.$t('k8s.text_261'), trigger: 'blur' },
  98. ],
  99. 'es.port': [
  100. { required: true, message: this.$t('k8s.text_262'), trigger: 'blur' },
  101. ],
  102. 'es.type': [
  103. { required: true, message: this.$t('k8s.text_263'), trigger: 'blur' },
  104. ],
  105. },
  106. formData,
  107. formItemLayout: {
  108. wrapperCol: {
  109. md: { span: 14 },
  110. xl: { span: 16 },
  111. xxl: { span: 18 },
  112. },
  113. labelCol: {
  114. md: { span: 10 },
  115. xl: { span: 8 },
  116. xxl: { span: 6 },
  117. },
  118. },
  119. offsetFormItemLayout: {
  120. wrapperCol: {
  121. md: { span: 14, offset: 10 },
  122. xl: { span: 16, offset: 8 },
  123. xxl: { span: 18, offset: 6 },
  124. },
  125. },
  126. }
  127. },
  128. methods: {
  129. addBroker () {
  130. this.formData.kafka.brokers.push({ key: +new Date(), value: '' })
  131. },
  132. decreaseBroker (val) {
  133. const index = this.formData.kafka.brokers.findIndex(item => item.key === val.key)
  134. this.formData.kafka.brokers.splice(index, 1)
  135. },
  136. decreaseTopic (val) {
  137. const index = this.formData.kafka.topics.findIndex(item => item.key === val.key)
  138. this.formData.kafka.topics.splice(index, 1)
  139. },
  140. addTopic () {
  141. this.formData.kafka.topics.push({ key: +new Date(), value: '' })
  142. },
  143. submitForm (formName) {
  144. if (!this.formData.es.enabled && !this.formData.kafka.enabled) {
  145. this.$message.warning(this.$t('k8s.text_264'))
  146. return
  147. }
  148. this.$refs[formName].validate((valid) => {
  149. if (valid) {
  150. const brokers = this.formData.kafka.brokers.map(val => val.value)
  151. const topics = this.formData.kafka.topics.map(val => val.value)
  152. const data = {
  153. backend: {
  154. es: this.formData.es,
  155. kafka: {
  156. ...this.formData.kafka,
  157. topics,
  158. brokers,
  159. },
  160. },
  161. }
  162. this.$emit('submit', data)
  163. }
  164. })
  165. },
  166. cancel () {
  167. this.$router.push('/k8s-kubecomponent')
  168. },
  169. },
  170. }
  171. </script>