OracleCloud.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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="keySecretField.label.k">
  11. <a-input v-decorator="decorators.oracle_user_ocid" :placeholder="keySecretField.placeholder.k" />
  12. <div slot="extra" v-if="showDocsLink()">
  13. {{$t('cloudenv.text_236', [keySecretField.text, keySecretField.label.k])}}
  14. <help-link :href="docs[provider.toLowerCase()]">{{$t('cloudenv.text_237')}}</help-link>
  15. </div>
  16. </a-form-item>
  17. <a-form-item :label="keySecretField.label.s">
  18. <a-input v-decorator="decorators.oracle_tenancy_ocid" :placeholder="keySecretField.placeholder.s" />
  19. </a-form-item>
  20. <upload-pem-file :fc="form.fc" :decorators="decorators">
  21. <a-textarea
  22. v-decorator="decorators.oracle_private_key"
  23. :placeholder="$t('common.tips.input', [$t('cloudenv.private_key')])"
  24. :auto-size="{ minRows: 6, maxRows: 8 }" />
  25. </upload-pem-file>
  26. <a-form-item :label="$t('cloudenv.cloudaccount.region_id')">
  27. <a-input v-decorator="decorators.region_id" :placeholder="$t('common.tips.input', [$t('cloudenv.cloudaccount.region_id')])" />
  28. </a-form-item>
  29. <domain-project :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  30. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  31. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" :cloneData="cloneData" />
  32. <auto-sync :fc="form.fc" :form-layout="formLayout" :cloneData="cloneData" />
  33. <read-only :cloneData="cloneData" />
  34. <share-mode :fd="form.fd" :cloneData="cloneData" />
  35. </a-form>
  36. </div>
  37. </template>
  38. <script>
  39. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  40. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  41. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  42. import ReadOnly from '@Cloudenv/views/cloudaccount/components/ReadOnly'
  43. import UploadPemFile from '@Cloudenv/views/cloudaccount/components/UploadPemFile'
  44. import { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  45. import { isRequired } from '@/utils/validate'
  46. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  47. import createMixin from './createMixin'
  48. import DomainProject from '../../../components/DomainProject'
  49. export default {
  50. name: 'OracleCloudCreate',
  51. components: {
  52. AutoSync,
  53. DomainProject,
  54. UploadPemFile,
  55. ProxySetting,
  56. ShareMode,
  57. ReadOnly,
  58. },
  59. mixins: [createMixin],
  60. data () {
  61. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  62. let initDomain = {
  63. key: this.$store.getters.userInfo.projectDomainId,
  64. label: this.$store.getters.userInfo.projectDomain,
  65. }
  66. const {
  67. domain_id,
  68. project_domain,
  69. auto_create_project: initAutoCreateProject = false,
  70. oracle_private_pem: initPrivatePem = '',
  71. oracle_private_key: initPrivateKey = '',
  72. region_id: initRegionId = '',
  73. } = this.cloneData
  74. if (domain_id && project_domain) {
  75. initDomain = {
  76. key: domain_id,
  77. label: project_domain,
  78. }
  79. }
  80. return {
  81. docs: DOCS_MAP.cloudaccount(),
  82. showDocsLink,
  83. keySecretField,
  84. decorators: {
  85. name: [
  86. 'name',
  87. {
  88. validateFirst: true,
  89. rules: [
  90. { required: true, message: this.$t('cloudenv.text_190') },
  91. // { validator: this.$validate('resourceName') },
  92. ],
  93. },
  94. ],
  95. description: ['description'],
  96. user: [
  97. 'user',
  98. {
  99. rules: [
  100. { required: true, message: this.$t('cloudenv.text_260') },
  101. ],
  102. },
  103. ],
  104. oracle_user_ocid: [
  105. keySecretField.k,
  106. {
  107. rules: [
  108. { required: true, message: keySecretField.placeholder.k },
  109. ],
  110. },
  111. ],
  112. oracle_tenancy_ocid: [
  113. keySecretField.s,
  114. {
  115. rules: [
  116. { required: true, message: keySecretField.placeholder.s },
  117. ],
  118. },
  119. ],
  120. oracle_private_pem: [
  121. 'oracle_private_pem',
  122. {
  123. initialValue: initPrivatePem,
  124. rules: [
  125. { required: true, message: this.$t('cloudenv.private_pem_message') },
  126. ],
  127. },
  128. ],
  129. oracle_private_key: [
  130. 'oracle_private_key',
  131. {
  132. initialValue: initPrivateKey,
  133. rules: [
  134. { required: true, message: this.$t('common.tips.input', [this.$t('cloudenv.private_key')]) },
  135. ],
  136. },
  137. ],
  138. domain: [
  139. 'domain',
  140. {
  141. initialValue: initDomain,
  142. rules: [
  143. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  144. ],
  145. },
  146. ],
  147. region_id: [
  148. 'region_id',
  149. {
  150. initialValue: initRegionId,
  151. rules: [
  152. { required: false, message: this.$t('common.tips.input', [this.$t('cloudenv.cloudaccount.region_id')]) },
  153. ],
  154. },
  155. ],
  156. auto_create_project: [
  157. 'auto_create_project',
  158. {
  159. initialValue: initAutoCreateProject,
  160. valuePropName: 'checked',
  161. },
  162. ],
  163. },
  164. }
  165. },
  166. }
  167. </script>