HCS.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div>
  3. <a-form :form="form.fc" v-if="decorators" 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. <!-- hcs 信息 -->
  11. <h2 class="mb-3">{{ $t('cloudenv.operation_info_input') }}</h2>
  12. <a-form-item :label="keySecretField.label.k">
  13. <a-input v-decorator="decorators.username" :placeholder="keySecretField.placeholder.k" />
  14. <div slot="extra" v-if="showDocsLink()">
  15. {{$t('cloudenv.text_236', [keySecretField.text, keySecretField.label.k])}}
  16. <help-link :href="docs[provider.toLowerCase()]">{{$t('cloudenv.text_237')}}</help-link>
  17. </div>
  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. <a-form-item :label="$t('cloudenv.cloudaccount.hcs.auth_url')">
  23. <a-input v-decorator="decorators.auth_url" :placeholder="$t('common.tips.input', [$t('cloudenv.cloudaccount.hcs.auth_url')])" />
  24. </a-form-item>
  25. <!-- hcsop 信息 -->
  26. <h2 class="mb-3">{{ $t('cloudenv.operation_and_maintenance_info_input') }}</h2>
  27. <a-form-item :label="$t('cloudenv.text_94')">
  28. <a-input v-decorator="decorators.options.account" :placeholder="$t('common.tips.input', [$t('cloudenv.text_94')])" />
  29. </a-form-item>
  30. <a-form-item :label="$t('cloudenv.text_147')">
  31. <a-input-password v-decorator="decorators.options.password" :placeholder="$t('common.tips.input', [$t('cloudenv.text_147')])" />
  32. </a-form-item>
  33. <domain-project :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  34. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  35. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" :cloneData="cloneData" />
  36. <auto-sync :fc="form.fc" :cloneData="cloneData" />
  37. <read-only :cloneData="cloneData" />
  38. <share-mode :fd="form.fd" :cloneData="cloneData" />
  39. </a-form>
  40. </div>
  41. </template>
  42. <script>
  43. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  44. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  45. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  46. import ReadOnly from '@Cloudenv/views/cloudaccount/components/ReadOnly'
  47. import { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  48. import { isRequired } from '@/utils/validate'
  49. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  50. import createMixin from './createMixin'
  51. import DomainProject from '../../../components/DomainProject'
  52. export default {
  53. name: 'HCS',
  54. components: {
  55. AutoSync,
  56. DomainProject,
  57. ProxySetting,
  58. ShareMode,
  59. ReadOnly,
  60. },
  61. mixins: [createMixin],
  62. data () {
  63. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  64. return {
  65. docs: DOCS_MAP.cloudaccount(),
  66. showDocsLink,
  67. decorators: this.getDecorators(keySecretField),
  68. }
  69. },
  70. methods: {
  71. getDecorators (initKeySecretFields) {
  72. const keySecretField = this.keySecretField || initKeySecretFields
  73. let initDomain = {
  74. key: this.$store.getters.userInfo.projectDomainId,
  75. label: this.$store.getters.userInfo.projectDomain,
  76. }
  77. let initAutoCreateProject = false
  78. let initAuthUrl = ''
  79. if (this.cloneData) {
  80. const { access_url, domain_id, project_domain, auto_create_project = false } = this.cloneData
  81. if (domain_id && project_domain) {
  82. initDomain = {
  83. key: domain_id,
  84. label: project_domain,
  85. }
  86. }
  87. initAutoCreateProject = auto_create_project
  88. initAuthUrl = access_url
  89. }
  90. const decorators = {
  91. name: [
  92. 'name',
  93. {
  94. validateFirst: true,
  95. rules: [
  96. { required: true, message: this.$t('cloudenv.text_190') },
  97. // { validator: this.$validate('resourceName') },
  98. ],
  99. },
  100. ],
  101. description: ['description'],
  102. username: [
  103. keySecretField.k,
  104. {
  105. rules: [
  106. { required: true, message: keySecretField.placeholder.k },
  107. ],
  108. },
  109. ],
  110. password: [
  111. keySecretField.s,
  112. {
  113. rules: [
  114. { required: true, message: keySecretField.placeholder.s },
  115. ],
  116. },
  117. ],
  118. domain: [
  119. 'domain',
  120. {
  121. initialValue: initDomain,
  122. rules: [
  123. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  124. ],
  125. },
  126. ],
  127. auto_create_project: [
  128. 'auto_create_project',
  129. {
  130. initialValue: initAutoCreateProject,
  131. valuePropName: 'checked',
  132. },
  133. ],
  134. auth_url: [
  135. 'auth_url',
  136. {
  137. initialValue: initAuthUrl,
  138. rules: [
  139. { required: true, message: this.$t('common.tips.input', [this.$t('cloudenv.cloudaccount.hcs.auth_url')]) },
  140. ],
  141. },
  142. ],
  143. options: {
  144. account: ['options.account'],
  145. password: ['options.password'],
  146. },
  147. }
  148. return decorators
  149. },
  150. },
  151. }
  152. </script>