Ucloud.vue 6.3 KB

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