index.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="k8s-deployment-create w-75">
  3. <a-form :form="form.fc" v-bind="formItemLayout">
  4. <a-form-item :label="$t('k8s.text_41')">
  5. <a-input :placeholder="$t('k8s.text_60')" v-decorator="decorators.name" />
  6. </a-form-item>
  7. <a-form-item :label="$t('k8s.text_23')">
  8. <base-select
  9. resource="federatednamespaces"
  10. version="v1"
  11. v-decorator="decorators.federatednamespace_id"
  12. :params="federatednamespaceParams" />
  13. </a-form-item>
  14. <a-form-item :label="$t('k8s.text_386')">
  15. <role-rule-form-item ref="roleRuleRef" federatedResource="federatedroles" />
  16. </a-form-item>
  17. </a-form>
  18. </div>
  19. </template>
  20. <script>
  21. import RoleRuleFormItem from '@K8S/sections/RoleRuleFormItem'
  22. import k8sCreateMixin from '@K8S/mixins/create'
  23. export default {
  24. name: 'K8sFederatedRoleFormCreate',
  25. components: {
  26. RoleRuleFormItem,
  27. },
  28. mixins: [k8sCreateMixin],
  29. data () {
  30. return {
  31. form: {
  32. fc: this.$form.createForm(this),
  33. },
  34. formItemLayout: {
  35. wrapperCol: {
  36. md: { span: 16 },
  37. xl: { span: 18 },
  38. xxl: { span: 20 },
  39. },
  40. labelCol: {
  41. md: { span: 8 },
  42. xl: { span: 6 },
  43. xxl: { span: 4 },
  44. },
  45. },
  46. decorators: {
  47. name: [
  48. 'name',
  49. {
  50. validateFirst: true,
  51. rules: [
  52. { required: true, message: this.$t('k8s.text_60') },
  53. { min: 2, max: 24, message: this.$t('k8s.text_132'), trigger: 'blur' },
  54. { validator: this.$validate('k8sName') },
  55. ],
  56. },
  57. ],
  58. federatednamespace_id: [
  59. 'federatednamespace_id',
  60. {
  61. rules: [
  62. { required: true, message: this.$t('k8s.text_61'), trigger: 'blur' },
  63. ],
  64. },
  65. ],
  66. },
  67. federatednamespaceParams: {
  68. scope: this.$store.getters.scope,
  69. limit: 0,
  70. },
  71. }
  72. },
  73. methods: {
  74. async validateForm () {
  75. try {
  76. const [roleRuleData, values] = await Promise.all([this.$refs.roleRuleRef.validateForm(), this.form.fc.validateFields()])
  77. return {
  78. spec: {
  79. template: roleRuleData,
  80. },
  81. ...values,
  82. }
  83. } catch (error) {
  84. throw error
  85. }
  86. },
  87. async doCreate () {
  88. try {
  89. const values = await this.validateForm()
  90. this.$emit('submit', values)
  91. } catch (error) {
  92. throw error
  93. }
  94. },
  95. },
  96. }
  97. </script>