Apsara.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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="keySecretField.label.k">
  11. <a-input v-decorator="decorators.username" :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-password v-decorator="decorators.password" :placeholder="keySecretField.placeholder.s" />
  19. </a-form-item>
  20. <a-form-item :label="$t('cloudenv.cloudaccount.region_id')">
  21. <a-input v-decorator="decorators.region_id" :placeholder="$t('common.tips.input', [$t('cloudenv.cloudaccount.region_id')])" />
  22. </a-form-item>
  23. <a-form-item :label="$t('cloudenv.cloudaccount.apsara.endpoint')">
  24. <a-input v-decorator="decorators.endpoint" :placeholder="$t('common.tips.input', [$t('cloudenv.cloudaccount.apsara.endpoint')])" />
  25. <div slot="extra">
  26. {{$t('cloudenv.text_574', [keySecretField.text])}}
  27. <help-link :href="`https://help.aliyun.com/apsara/enterprise/v_3_12_0_20200630/apsara_stack_platform/enterprise-developer-guide/obtain-the-endpoint-of-api-operations.html`">{{$t('cloudenv.text_575')}}</help-link>
  28. </div>
  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" />
  34. <read-only :cloneData="cloneData" />
  35. <share-mode :fd="form.fd" :cloneData="cloneData" />
  36. </a-form>
  37. </div>
  38. </template>
  39. <script>
  40. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  41. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  42. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  43. import ReadOnly from '@Cloudenv/views/cloudaccount/components/ReadOnly'
  44. import { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  45. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  46. import { isRequired } from '@/utils/validate'
  47. import createMixin from './createMixin'
  48. import DomainProject from '../../../components/DomainProject'
  49. export default {
  50. name: 'Apsara',
  51. components: {
  52. AutoSync,
  53. DomainProject,
  54. ProxySetting,
  55. ShareMode,
  56. ReadOnly,
  57. },
  58. mixins: [createMixin],
  59. data () {
  60. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  61. return {
  62. showDocsLink,
  63. docs: DOCS_MAP.cloudaccount(),
  64. decorators: this.getDecorators(keySecretField),
  65. }
  66. },
  67. methods: {
  68. getDecorators (initKeySecretFields) {
  69. const keySecretField = this.keySecretField || initKeySecretFields
  70. let initDomain = {
  71. key: this.$store.getters.userInfo.projectDomainId,
  72. label: this.$store.getters.userInfo.projectDomain,
  73. }
  74. let initEndpoint
  75. let initRegionId
  76. let initAutoCreateProject = false
  77. if (this.cloneData) {
  78. const { domain_id, project_domain, access_url, region_id, auto_create_project = false } = this.cloneData
  79. if (domain_id && project_domain) {
  80. initDomain = {
  81. key: domain_id,
  82. label: project_domain,
  83. }
  84. }
  85. if (access_url) {
  86. initEndpoint = access_url
  87. }
  88. if (region_id) {
  89. initRegionId = region_id
  90. }
  91. initAutoCreateProject = auto_create_project
  92. }
  93. const decorators = {
  94. name: [
  95. 'name',
  96. {
  97. validateFirst: true,
  98. rules: [
  99. { required: true, message: this.$t('cloudenv.text_190') },
  100. // { validator: this.$validate('resourceName') },
  101. ],
  102. },
  103. ],
  104. description: ['description'],
  105. username: [
  106. keySecretField.k,
  107. {
  108. rules: [
  109. { required: true, message: keySecretField.placeholder.k },
  110. ],
  111. },
  112. ],
  113. password: [
  114. keySecretField.s,
  115. {
  116. rules: [
  117. { required: true, message: keySecretField.placeholder.s },
  118. ],
  119. },
  120. ],
  121. domain: [
  122. 'domain',
  123. {
  124. initialValue: initDomain,
  125. rules: [
  126. { validator: isRequired(), message: this.$t('rules.domain'), trigger: 'change' },
  127. ],
  128. },
  129. ],
  130. auto_create_project: [
  131. 'auto_create_project',
  132. {
  133. initialValue: initAutoCreateProject,
  134. valuePropName: 'checked',
  135. },
  136. ],
  137. endpoint: [
  138. 'endpoint',
  139. {
  140. initialValue: initEndpoint,
  141. rules: [
  142. { required: true, message: this.$t('common.tips.input', [this.$t('cloudenv.cloudaccount.apsara.endpoint')]) },
  143. ],
  144. },
  145. ],
  146. region_id: [
  147. 'region_id',
  148. {
  149. initialValue: initRegionId,
  150. rules: [
  151. { required: true, message: this.$t('common.tips.input', [this.$t('cloudenv.cloudaccount.region_id')]) },
  152. ],
  153. },
  154. ],
  155. }
  156. return decorators
  157. },
  158. },
  159. }
  160. </script>