FormCreate.vue 2.4 KB

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