index.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div>
  3. <page-header :title="$t('k8s.text_367')" />
  4. <a-form
  5. class="mt-3"
  6. :form="form.fc">
  7. <a-form-item
  8. :label="$t('k8s.text_41')"
  9. v-bind="formItemLayout">
  10. <a-input v-decorator="decorators.name" :placeholder="$t('k8s.text_60')" />
  11. </a-form-item>
  12. </a-form>
  13. <page-footer>
  14. <div slot="right">
  15. <a-button class="mr-2" type="primary" @click="handleConfirm" :loading="loading">{{$t('common.create')}}</a-button>
  16. <a-button @click="cancel">{{ $t('dialog.cancel') }}</a-button>
  17. </div>
  18. </page-footer>
  19. </div>
  20. </template>
  21. <script>
  22. import k8sCreateMixin from '@K8S/mixins/create'
  23. export default {
  24. name: 'FederatednamespaceCreate',
  25. mixins: [k8sCreateMixin],
  26. data () {
  27. return {
  28. loading: false,
  29. form: {
  30. fc: this.$form.createForm(this),
  31. },
  32. decorators: {
  33. name: [
  34. 'name',
  35. {
  36. validateTrigger: 'blur',
  37. validateFirst: true,
  38. rules: [
  39. { required: true, message: this.$t('k8s.text_60') },
  40. { min: 2, max: 24, message: this.$t('k8s.text_132') },
  41. { validator: this.$validate('k8sName') },
  42. ],
  43. },
  44. ],
  45. cluster: [
  46. 'cluster',
  47. {
  48. rules: [
  49. { required: true, message: this.$t('k8s.text_30') },
  50. ],
  51. },
  52. ],
  53. },
  54. formItemLayout: {
  55. wrapperCol: { span: 20 },
  56. labelCol: { span: 3 },
  57. },
  58. }
  59. },
  60. created () {
  61. this.resourceM = new this.$Manager('federatednamespaces', 'v1')
  62. },
  63. destroyed () {
  64. this.resourceM = null
  65. },
  66. methods: {
  67. doCreate (data) {
  68. return this.resourceM.create({ data })
  69. },
  70. async handleConfirm () {
  71. this.loading = true
  72. try {
  73. const values = await this.form.fc.validateFields()
  74. const data = {
  75. ...values,
  76. spec: {
  77. template: {
  78. spec: {},
  79. },
  80. },
  81. }
  82. await this.doCreate(data)
  83. this.loading = false
  84. this.$message.success(this.$t('k8s.text_184'))
  85. this.cancel()
  86. } catch (error) {
  87. this.loading = false
  88. throw error
  89. }
  90. },
  91. cancel () {
  92. this.$router.push('/k8s-federatednamespace')
  93. },
  94. },
  95. }
  96. </script>