AwsHuawei.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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 v-if="provider !== 'Huawei' && provider !== 'Ctyun'" :label="$t('cloudenv.environment')">
  11. <base-select
  12. :options="environments"
  13. v-decorator="decorators.environment"
  14. :selectProps="{ placeholder: $t('cloudenv.environment_check') }" />
  15. </a-form-item>
  16. <a-form-item :label="keySecretField.label.k">
  17. <a-input v-decorator="decorators.username" :placeholder="keySecretField.placeholder.k" />
  18. <div slot="extra" v-if="showDocsLink()">
  19. {{$t('cloudenv.text_236', [keySecretField.text, keySecretField.label.k])}}
  20. <help-link :href="docs[provider.toLowerCase()]">{{$t('cloudenv.text_237')}}</help-link>
  21. </div>
  22. </a-form-item>
  23. <a-form-item :label="keySecretField.label.s">
  24. <a-input-password v-decorator="decorators.password" :placeholder="keySecretField.placeholder.s" />
  25. </a-form-item>
  26. <domain-project :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  27. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  28. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" />
  29. <a-form-item :label="$t('cloudaccount.create_form.saml_user_label')" v-show="!isNotSupportSaml">
  30. <a-switch :checkedChildren="$t('cloudenv.text_84')" :unCheckedChildren="$t('cloudenv.text_85')" v-decorator="decorators.saml_auth" />
  31. <div slot="extra">
  32. <i18n path="cloudaccount.create_form.saml_user_extra" v-if="showDocsLink()">
  33. <template #link>
  34. <help-link :href="smaluserDoc">{{$t('cloudaccount.create_form.saml_user_link')}}</help-link>
  35. </template>
  36. </i18n>
  37. <i18n v-else path="cloudaccount.create_form.saml_user_extra_1" />
  38. </div>
  39. </a-form-item>
  40. <auto-sync :fc="form.fc" :form-layout="formLayout" />
  41. <read-only :cloneData="cloneData" />
  42. <share-mode :fd="form.fd" :cloneData="cloneData" />
  43. </a-form>
  44. </div>
  45. </template>
  46. <script>
  47. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  48. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  49. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  50. import ReadOnly from '@Cloudenv/views/cloudaccount/components/ReadOnly'
  51. import { keySecretFields, ACCESS_URL } from '@Cloudenv/views/cloudaccount/constants'
  52. import { isRequired } from '@/utils/validate'
  53. import { PROVIDER_MAP } from '@/constants'
  54. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  55. import createMixin from './createMixin'
  56. import DomainProject from '../../../components/DomainProject'
  57. export default {
  58. name: 'AwsHuawei',
  59. components: {
  60. AutoSync,
  61. DomainProject,
  62. ProxySetting,
  63. ShareMode,
  64. ReadOnly,
  65. },
  66. mixins: [createMixin],
  67. data () {
  68. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  69. const environments = Object.entries(ACCESS_URL[this.provider.toLowerCase()]).map(keyValueArr => ({ key: keyValueArr[0], label: keyValueArr[1] }))
  70. return {
  71. showDocsLink,
  72. docs: DOCS_MAP.cloudaccount(),
  73. smaluserDoc: DOCS_MAP.samlUser(),
  74. decorators: this.getDecorators(keySecretField, environments),
  75. environments,
  76. }
  77. },
  78. computed: {
  79. isNotSupportSaml () {
  80. const providers = [PROVIDER_MAP.Ctyun.key]
  81. return providers.includes(this.provider)
  82. },
  83. },
  84. deactivated () {
  85. this.form.fc.resetFields()
  86. },
  87. methods: {
  88. getDecorators (initKeySecretFields, environments) {
  89. const keySecretField = this.keySecretField || initKeySecretFields
  90. let initEnvironment
  91. let initDomain = {
  92. key: this.$store.getters.userInfo.projectDomainId,
  93. label: this.$store.getters.userInfo.projectDomain,
  94. }
  95. let initSamlAuth = false
  96. let initAutoCreateProject = false
  97. if (this.cloneData) {
  98. const { access_url, domain_id, project_domain, saml_auth = false, auto_create_project = false } = this.cloneData
  99. const tEnv = environments.filter(item => item.key === access_url)
  100. if (tEnv.length > 0) {
  101. initEnvironment = tEnv[0].key
  102. }
  103. if (domain_id && project_domain) {
  104. initDomain = {
  105. key: domain_id,
  106. label: project_domain,
  107. }
  108. }
  109. initSamlAuth = saml_auth
  110. initAutoCreateProject = auto_create_project
  111. }
  112. const decorators = {
  113. name: [
  114. 'name',
  115. {
  116. validateFirst: true,
  117. rules: [
  118. { required: true, message: this.$t('cloudenv.text_190') },
  119. // { validator: this.$validate('resourceName') },
  120. ],
  121. },
  122. ],
  123. description: ['description'],
  124. environment: [
  125. 'environment',
  126. {
  127. initialValue: initEnvironment,
  128. rules: [
  129. { required: true, message: this.$t('cloudenv.environment_check'), trigger: 'change' },
  130. ],
  131. },
  132. ],
  133. username: [
  134. keySecretField.k,
  135. {
  136. rules: [
  137. { required: true, message: keySecretField.placeholder.k },
  138. ],
  139. },
  140. ],
  141. password: [
  142. keySecretField.s,
  143. {
  144. rules: [
  145. { required: true, message: keySecretField.placeholder.s },
  146. ],
  147. },
  148. ],
  149. domain: [
  150. 'domain',
  151. {
  152. initialValue: initDomain,
  153. rules: [
  154. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  155. ],
  156. },
  157. ],
  158. auto_create_project: [
  159. 'auto_create_project',
  160. {
  161. initialValue: initAutoCreateProject,
  162. valuePropName: 'checked',
  163. },
  164. ],
  165. saml_auth: [
  166. 'saml_auth',
  167. {
  168. initialValue: initSamlAuth,
  169. valuePropName: 'checked',
  170. },
  171. ],
  172. }
  173. return decorators
  174. },
  175. },
  176. }
  177. </script>