Azure.vue 7.5 KB

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