Form.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div>
  3. <a-form-item :label="$t('k8s.text_41')">
  4. <a-input :placeholder="$t('k8s.text_60')" v-decorator="decorators.name" />
  5. </a-form-item>
  6. <a-form-item :label="$t('k8s.repo.image.source')">
  7. <a-radio-group default-value="custom" @change="handleSourceChange">
  8. <a-radio-button value="custom">{{ $t('k8s.repo.image.custom') }}</a-radio-button>
  9. <a-radio-button value="registry">{{ $t('k8s.repo.image.registry') }}</a-radio-button>
  10. </a-radio-group>
  11. </a-form-item>
  12. <a-form-item v-if="source === 'custom'" :label="$t('k8s.text_97')">
  13. <a-input :placeholder="$t('k8s.text_98')" v-decorator="decorators.image" />
  14. </a-form-item>
  15. <a-form-item v-else :label="$t('k8s.text_97')">
  16. <mirror-registry v-decorator="decorators.registryImage" />
  17. </a-form-item>
  18. <a-form-item label="CPU">
  19. <a-input :placeholder="$t('k8s.text_99')" type="number" v-decorator="decorators.cpu" :addonAfter="$t('k8s.text_100')" :min="1" @blur="e => formatInput(e, 'cpu')" />
  20. </a-form-item>
  21. <a-form-item :label="$t('k8s.text_101')">
  22. <a-input :placeholder="$t('k8s.text_102')" type="number" v-decorator="decorators.memory" addonAfter="G" :min="1" @blur="e => formatInput(e, 'memory')" />
  23. </a-form-item>
  24. <a-form-item :label="$t('k8s.text_103')">
  25. <a-input :placeholder="$t('k8s.text_104')" v-decorator="decorators.command" />
  26. </a-form-item>
  27. <a-form-item :label="$t('k8s.text_105')">
  28. <a-input :placeholder="$t('k8s.text_106')" v-decorator="decorators.arg" />
  29. </a-form-item>
  30. <a-form-item :label="$t('k8s.text_107')">
  31. <labels
  32. :decorators="decorators.volumeMount"
  33. :title="$t('k8s.text_10')"
  34. :keyLabel="$t('k8s.text_10')"
  35. :valueLabel="$t('k8s.text_108')"
  36. :keyPlaceholder="$t('k8s.text_109')"
  37. :valuePlaceholder="$t('k8s.text_110')"
  38. :keyBaseSelectProps="keyBaseSelectProps" />
  39. </a-form-item>
  40. <a-form-item :label="$t('k8s.text_111')">
  41. <labels :decorators="decorators.env" :title="$t('k8s.text_112')" :keyLabel="$t('k8s.text_112')" />
  42. </a-form-item>
  43. <a-form-item label="">
  44. <a-checkbox v-decorator="decorators.privileged">{{$t('k8s.text_113')}}</a-checkbox>
  45. </a-form-item>
  46. </div>
  47. </template>
  48. <script>
  49. import * as R from 'ramda'
  50. import Labels from '@K8S/sections/Labels'
  51. import MirrorRegistry from '@K8S/sections/MirrorRegistry'
  52. export default {
  53. name: 'K8SSpecContainerForm',
  54. components: {
  55. Labels,
  56. MirrorRegistry,
  57. },
  58. props: {
  59. decorators: {
  60. type: Object,
  61. required: true,
  62. },
  63. cluster: String,
  64. namespace: String,
  65. form: {
  66. tpye: Object,
  67. validator: val => val.fc,
  68. },
  69. },
  70. data () {
  71. return {
  72. source: 'custom', // custom or registry
  73. }
  74. },
  75. computed: {
  76. keyBaseSelectProps () {
  77. const params = {}
  78. if (this.cluster) {
  79. params.scope = this.$store.getters.scope
  80. params.unused = true
  81. params.cluster = this.cluster
  82. if (this.namespace) params.namespace = this.namespace
  83. }
  84. const props = {
  85. resource: 'persistentvolumeclaims',
  86. version: 'v1',
  87. params,
  88. needParams: true,
  89. }
  90. return props
  91. },
  92. },
  93. methods: {
  94. formatInput (e, field) {
  95. if (this.form && this.form.fc) {
  96. const val = Number(e.target.value)
  97. if (R.is(Number, val) && !Number.isNaN(val) && val >= 0) {
  98. } else {
  99. this.form.fc.setFieldsValue({
  100. [this.decorators[field][0]]: 1, // 不合法直接设置为初始值 1
  101. })
  102. }
  103. }
  104. },
  105. handleSourceChange (e) {
  106. this.source = e.target.value
  107. },
  108. },
  109. }
  110. </script>