CNware.vue 5.1 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_253')">
  11. <a-input v-decorator="decorators.auth_url" />
  12. <span slot="extra">
  13. {{$t('common_570')}}
  14. </span>
  15. </a-form-item>
  16. <a-form-item :label="keySecretField.label.k">
  17. <a-input v-decorator="decorators.username" :placeholder="keySecretField.placeholder.k" />
  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. <domain-project :provider="provider" :fc="form.fc" :form-layout="formLayout" :decorators="{ project: decorators.project, domain: decorators.domain, auto_create_project: decorators.auto_create_project }" :cloneData="cloneData" />
  23. <blocked-resources :decorators="{ isOpenBlockedResources: decorators.isOpenBlockedResources, blockedResources: decorators.blockedResources }" :cloneData="cloneData" />
  24. <proxy-setting :fc="form.fc" :fd="form.fd" ref="proxySetting" :cloneData="cloneData" />
  25. <auto-sync :fc="form.fc" :form-layout="formLayout" :cloneData="cloneData" />
  26. <read-only :cloneData="cloneData" />
  27. <share-mode :fd="form.fd" :cloneData="cloneData" />
  28. </a-form>
  29. </div>
  30. </template>
  31. <script>
  32. import AutoSync from '@Cloudenv/views/cloudaccount/components/AutoSync'
  33. import ProxySetting from '@Cloudenv/views/cloudaccount/components/ProxySetting'
  34. import ShareMode from '@Cloudenv/views/cloudaccount/components/ShareMode'
  35. import ReadOnly from '@Cloudenv/views/cloudaccount/components/ReadOnly'
  36. import { keySecretFields } from '@Cloudenv/views/cloudaccount/constants'
  37. import { isRequired } from '@/utils/validate'
  38. import { DOCS_MAP, showDocsLink } from '@/constants/docs'
  39. import createMixin from './createMixin'
  40. import DomainProject from '../../../components/DomainProject'
  41. export default {
  42. name: 'CNware',
  43. components: {
  44. AutoSync,
  45. DomainProject,
  46. ProxySetting,
  47. ShareMode,
  48. ReadOnly,
  49. },
  50. mixins: [createMixin],
  51. data () {
  52. const keySecretField = keySecretFields[this.provider.toLowerCase()]
  53. return {
  54. docs: DOCS_MAP.cloudaccount(),
  55. showDocsLink,
  56. decorators: this.getDecorators(keySecretField),
  57. }
  58. },
  59. computed: {
  60. urlPlaceholder () {
  61. return this.$t('cloudenv.text_257')
  62. },
  63. },
  64. deactivated () {
  65. this.form.fc.resetFields()
  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. const {
  75. domain_id,
  76. project_domain,
  77. auto_create_project: initAutoCreateProject = false,
  78. access_url: initAuthUrl = '',
  79. } = this.cloneData
  80. if (domain_id && project_domain) {
  81. initDomain = {
  82. key: domain_id,
  83. label: project_domain,
  84. }
  85. }
  86. const decorators = {
  87. name: [
  88. 'name',
  89. {
  90. validateFirst: true,
  91. rules: [
  92. { required: true, message: this.$t('cloudenv.text_190') },
  93. // { validator: this.$validate('resourceName') },
  94. ],
  95. },
  96. ],
  97. description: ['description'],
  98. auth_url: [
  99. 'auth_url',
  100. {
  101. validateFirst: true,
  102. initialValue: initAuthUrl,
  103. rules: [
  104. { required: true, message: this.$t('cloudenv.text_258') },
  105. { validator: this.$validate('url') },
  106. ],
  107. },
  108. ],
  109. username: [
  110. keySecretField.k,
  111. {
  112. rules: [
  113. { required: true, message: keySecretField.placeholder.k },
  114. ],
  115. },
  116. ],
  117. password: [
  118. keySecretField.s,
  119. {
  120. rules: [
  121. { required: true, message: keySecretField.placeholder.s },
  122. ],
  123. },
  124. ],
  125. project_name: [
  126. 'project_name',
  127. {
  128. rules: [
  129. { required: true, message: this.$t('cloudenv.text_259') },
  130. ],
  131. },
  132. ],
  133. domain_name: [
  134. 'domain_name',
  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 || this.provider.toLowerCase() === 'openstack',
  149. valuePropName: 'checked',
  150. },
  151. ],
  152. }
  153. return decorators
  154. },
  155. },
  156. }
  157. </script>