index.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <a-form-item :extra="extra">
  3. <a-radio-group v-decorator="decorator" :disabled="disabled">
  4. <a-radio-button v-show="showUnlimited" :key="0" :value="0">{{ $t('compute.unlimited') }}</a-radio-button>
  5. <a-radio-button v-for="item in options" :value="item" :key="item" :disabled="disableOptionHandle(item)">{{ item | format }}</a-radio-button>
  6. </a-radio-group>
  7. </a-form-item>
  8. </template>
  9. <script>
  10. import { sizestrWithUnit } from '@/utils/utils'
  11. export default {
  12. name: 'MemRadio',
  13. filters: {
  14. format (val) {
  15. return sizestrWithUnit(val, 'M', 1024)
  16. },
  17. },
  18. props: {
  19. decorator: {
  20. type: Array,
  21. required: true,
  22. },
  23. options: {
  24. type: Array,
  25. required: true,
  26. },
  27. disableOptions: {
  28. type: Array,
  29. default: () => [],
  30. },
  31. disabled: {
  32. type: Boolean,
  33. default: false,
  34. },
  35. extra: {
  36. type: String,
  37. default: '',
  38. },
  39. showUnlimited: {
  40. type: Boolean,
  41. default: false,
  42. },
  43. },
  44. methods: {
  45. disableOptionHandle (item) {
  46. return this.disableOptions.includes(item)
  47. },
  48. },
  49. }
  50. </script>