index.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div>
  3. <a-form-item :label="$t('dashboard.text_96')" v-if="decorators.all_usage_key">
  4. <usage-select
  5. class="w-100"
  6. v-decorator="decorators.all_usage_key"
  7. :usages="usages"
  8. @change="allUsageChange" />
  9. <div slot="extra" v-if="showDocsLink()">
  10. <i18n path="metricConfig.create_form.all_usage_extra">
  11. <template #link>
  12. <help-link :href="metricDoc">{{$t('metricConfig.create_form.all_usage_link')}}</help-link>
  13. </template>
  14. </i18n>
  15. </div>
  16. </a-form-item>
  17. <a-form-item :label="usageLabel || $t('dashboard.text_97')" v-if="decorators.usage_key">
  18. <usage-select
  19. class="w-100"
  20. v-decorator="decorators.usage_key"
  21. :usages="usages"
  22. @change="usageChange" />
  23. <div slot="extra">
  24. <i18n :path="usageLabel?'metricConfig.create_form.metric_extra':'metricConfig.create_form.usage_extra'">
  25. <template #link>
  26. <help-link :href="quotaDoc">{{$t('metricConfig.create_form.usage_link')}}</help-link>
  27. </template>
  28. </i18n>
  29. </div>
  30. </a-form-item>
  31. </div>
  32. </template>
  33. <script>
  34. import { mapGetters } from 'vuex'
  35. import { PROJECT_QUOTA_CONFIG, getMetricDocs } from '@Dashboard/constants'
  36. import UsageSelect from '@Dashboard/sections/QuotaConfig/UsageSelect'
  37. import { showDocsLink } from '@/constants/docs'
  38. export default {
  39. name: 'ProjectQuotaConfig',
  40. components: {
  41. UsageSelect,
  42. },
  43. props: {
  44. decorators: {
  45. type: Object,
  46. required: true,
  47. },
  48. fc: {
  49. type: Object,
  50. required: true,
  51. },
  52. usageLabel: String,
  53. type: {
  54. type: String,
  55. required: true,
  56. },
  57. },
  58. data () {
  59. return {
  60. showDocsLink,
  61. translateUsage: this.$t('project_quota_usage'),
  62. metricDoc: getMetricDocs(this.$store.getters.scope),
  63. }
  64. },
  65. computed: {
  66. ...mapGetters(['scope']),
  67. projectQuotaConfig () {
  68. return PROJECT_QUOTA_CONFIG[this.type]
  69. },
  70. usages () {
  71. const ret = []
  72. for (const key in this.projectQuotaConfig) {
  73. ret.push({
  74. key,
  75. label: this.translateUsage[key] ? this.translateUsage[key] : key,
  76. })
  77. }
  78. return ret
  79. },
  80. },
  81. methods: {
  82. allUsageChange (allUsage) {
  83. this.$emit('update:all_usage_key', allUsage)
  84. },
  85. usageChange (usage) {
  86. this.$emit('update:usage_key', usage)
  87. },
  88. },
  89. }
  90. </script>