S3CephXsky.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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.text_261')" :extra="$t('common_571')">
  11. <a-input v-decorator="decorators.endpoint" />
  12. </a-form-item>
  13. <a-form-item :label="keySecretField.label.k">
  14. <a-input v-decorator="decorators.username" :placeholder="keySecretField.placeholder.k" />
  15. <div slot="extra" v-if="showDocsLink()">
  16. {{$t('cloudenv.text_236', [keySecretField.text, keySecretField.label.k])}}
  17. <help-link :href="docs[provider.toLowerCase()]">{{$t('cloudenv.text_237')}}</help-link>
  18. </div>
  19. </a-form-item>
  20. <a-form-item :label="keySecretField.label.s">
  21. <a-input-password v-decorator="decorators.password" :placeholder="keySecretField.placeholder.s" />
  22. </a-form-item>
  23. <a-form-item :label="$t('cloudenv.s3.sign_alg_version')" v-if="isS3">
  24. <a-radio-group v-decorator="decorators.options__sign_ver">
  25. <a-radio-button value="">{{ $t('common_712') }}</a-radio-button>
  26. <a-radio-button value="v2">V2</a-radio-button>
  27. <a-radio-button value="v4">V4</a-radio-button>
  28. </a-radio-group>
  29. </a-form-item>
  30. <domain-project :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  31. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  32. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" :cloneData="cloneData" />
  33. <auto-sync :fc="form.fc" :form-layout="formLayout" :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 { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  43. import { isRequired } from '@/utils/validate'
  44. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  45. import createMixin from './createMixin'
  46. import DomainProject from '../../../components/DomainProject'
  47. export default {
  48. name: 'S3CephXsky',
  49. components: {
  50. AutoSync,
  51. DomainProject,
  52. ProxySetting,
  53. ShareMode,
  54. },
  55. mixins: [createMixin],
  56. data () {
  57. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  58. return {
  59. docs: DOCS_MAP.cloudaccount(),
  60. showDocsLink,
  61. decorators: this.getDecorators(keySecretField),
  62. }
  63. },
  64. computed: {
  65. isS3 () {
  66. return this.provider.toLowerCase() === 's3'
  67. },
  68. },
  69. deactivated () {
  70. this.form.fc.resetFields()
  71. },
  72. methods: {
  73. getDecorators (initKeySecretFields) {
  74. const keySecretField = this.keySecretField || initKeySecretFields
  75. let initDomain = {
  76. key: this.$store.getters.userInfo.projectDomainId,
  77. label: this.$store.getters.userInfo.projectDomain,
  78. }
  79. const {
  80. domain_id,
  81. project_domain,
  82. auto_create_project: initAutoCreateProject = false,
  83. access_url: initEndpoint = '',
  84. } = this.cloneData
  85. if (domain_id && project_domain) {
  86. initDomain = {
  87. key: domain_id,
  88. label: project_domain,
  89. }
  90. }
  91. const decorators = {
  92. name: [
  93. 'name',
  94. {
  95. validateFirst: true,
  96. rules: [
  97. { required: true, message: this.$t('cloudenv.text_190') },
  98. // { validator: this.$validate('resourceName') },
  99. ],
  100. },
  101. ],
  102. description: ['description'],
  103. endpoint: [
  104. 'endpoint',
  105. {
  106. validateFirst: true,
  107. initialValue: initEndpoint,
  108. rules: [
  109. { required: true, message: this.$t('cloudenv.text_263') },
  110. { validator: this.$validate('url'), trigger: ['blur'] },
  111. ],
  112. },
  113. ],
  114. username: [
  115. keySecretField.k,
  116. {
  117. rules: [
  118. { required: true, message: keySecretField.placeholder.k },
  119. ],
  120. },
  121. ],
  122. password: [
  123. keySecretField.s,
  124. {
  125. rules: [
  126. { required: true, message: keySecretField.placeholder.s },
  127. ],
  128. },
  129. ],
  130. options__sign_ver: [
  131. 'options__sign_ver',
  132. {
  133. initialValue: '',
  134. },
  135. ],
  136. domain: [
  137. 'domain',
  138. {
  139. initialValue: initDomain,
  140. rules: [
  141. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  142. ],
  143. },
  144. ],
  145. auto_create_project: [
  146. 'auto_create_project',
  147. {
  148. initialValue: initAutoCreateProject,
  149. valuePropName: 'checked',
  150. },
  151. ],
  152. }
  153. return decorators
  154. },
  155. },
  156. }
  157. </script>