Nutanix.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div>
  3. <a-form :form="form.fc" v-bind="formLayout">
  4. <a-form-item :label="$t('cloudenv.text_95')">
  5. <a-input v-decorator="decorators.name" :placeholder="$t('cloudenv.text_190')" />
  6. </a-form-item>
  7. <a-form-item :label="$t('common.description')">
  8. <a-textarea :auto-size="{ minRows: 1, maxRows: 3 }" v-decorator="decorators.description" :placeholder="$t('common_367')" />
  9. </a-form-item>
  10. <a-form-item :label="$t('cloudenv.nutanix.prism')" :extra="this.$t('common_572')">
  11. <a-input v-decorator="decorators.host" />
  12. </a-form-item>
  13. <a-form-item :label="$t('cloudenv.text_266')">
  14. <a-input v-decorator="decorators.port" />
  15. </a-form-item>
  16. <a-form-item :label="keySecretField.label.k">
  17. <a-input v-decorator="decorators.username" :placeholder="keySecretField.placeholder.k" />
  18. </a-form-item>
  19. <a-form-item :label="keySecretField.label.s">
  20. <a-input-password v-decorator="decorators.password" :placeholder="keySecretField.placeholder.s" />
  21. </a-form-item>
  22. <domain-project :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  23. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  24. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" :cloneData="cloneData" />
  25. <auto-sync :fc="form.fc" :form-layout="formLayout" :cloneData="cloneData" />
  26. <share-mode :fd="form.fd" :cloneData="cloneData" />
  27. </a-form>
  28. </div>
  29. </template>
  30. <script>
  31. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  32. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  33. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  34. import { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  35. import { isRequired } from '@/utils/validate'
  36. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  37. import createMixin from './createMixin'
  38. import DomainProject from '../../../components/DomainProject'
  39. export default {
  40. name: 'NutanixCreate',
  41. components: {
  42. AutoSync,
  43. DomainProject,
  44. ProxySetting,
  45. ShareMode,
  46. },
  47. mixins: [createMixin],
  48. data () {
  49. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  50. let initDomain = {
  51. key: this.$store.getters.userInfo.projectDomainId,
  52. label: this.$store.getters.userInfo.projectDomain,
  53. }
  54. let initHost = ''
  55. let initPort = 9440
  56. const {
  57. domain_id,
  58. project_domain,
  59. auto_create_project: initAutoCreateProject = false,
  60. access_url,
  61. } = this.cloneData
  62. if (domain_id && project_domain) {
  63. initDomain = {
  64. key: domain_id,
  65. label: project_domain,
  66. }
  67. }
  68. if (access_url) {
  69. const str = access_url.replace('https://', '').replace('http://', '')
  70. const list = str.split(':')
  71. initHost = list[0]
  72. initPort = list[1] || 8006
  73. }
  74. return {
  75. docs: DOCS_MAP.cloudaccount(),
  76. showDocsLink,
  77. decorators: {
  78. name: [
  79. 'name',
  80. {
  81. validateFirst: true,
  82. rules: [
  83. { required: true, message: this.$t('cloudenv.text_190') },
  84. // { validator: this.$validate('resourceName') },
  85. ],
  86. },
  87. ],
  88. description: ['description'],
  89. host: [
  90. 'host',
  91. {
  92. validateFirst: true,
  93. initialValue: initHost,
  94. rules: [
  95. { required: true, message: this.$t('cloudenv.text_268') },
  96. { validator: this.$validate(['domain', 'IPv4'], true, 'some'), trigger: ['blur', 'change'], message: '请输入域名或者ip' },
  97. ],
  98. },
  99. ],
  100. port: [
  101. 'port',
  102. {
  103. initialValue: initPort,
  104. rules: [
  105. { type: 'number', min: 0, max: 65535, message: this.$t('cloudenv.text_270'), trigger: 'blur', transform: (v) => parseFloat(v) },
  106. ],
  107. },
  108. ],
  109. username: [
  110. keySecretField.k,
  111. {
  112. rules: [
  113. { required: true, message: keySecretField.placeholder.k },
  114. ],
  115. },
  116. ],
  117. password: [
  118. keySecretField.s,
  119. {
  120. rules: [
  121. { required: true, message: keySecretField.placeholder.s },
  122. ],
  123. },
  124. ],
  125. domain: [
  126. 'domain',
  127. {
  128. initialValue: initDomain,
  129. rules: [
  130. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  131. ],
  132. },
  133. ],
  134. auto_create_project: [
  135. 'auto_create_project',
  136. {
  137. initialValue: initAutoCreateProject,
  138. valuePropName: 'checked',
  139. },
  140. ],
  141. },
  142. keepAliveFields: true,
  143. }
  144. },
  145. }
  146. </script>