JoinProject.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <a-form :form="form.fc" v-bind="formItemLayout">
  3. <a-form-item :label="$t('dictionary.project')">
  4. <domain-project-select
  5. :labelInValue="false"
  6. :form="form"
  7. :decorators="decorators"
  8. :projectDomainId="domainId"
  9. @domainChange="domainChange" />
  10. </a-form-item>
  11. <a-form-item :label="`${$t('dictionary.role')}`">
  12. <base-select
  13. v-decorator="decorators.roles"
  14. version="v1"
  15. resource="roles"
  16. :params="roleParams"
  17. filterable
  18. remote
  19. :showSync="true"
  20. :select-props="{ mode: 'multiple', placeholder: $t('rules.role') }" />
  21. <div slot="extra">{{$t('system.text_441', [$t('dictionary.role')])}}<help-link :href="roleLink">{{$t('system.text_440')}}</help-link></div>
  22. </a-form-item>
  23. </a-form>
  24. </template>
  25. <script>
  26. import { mapGetters } from 'vuex'
  27. import DomainProjectSelect from '../../components/DomainProjectSelect'
  28. // const defaultDomain = { key: 'default', label: 'Default' }
  29. export default {
  30. name: 'JoinProject',
  31. components: {
  32. DomainProjectSelect,
  33. },
  34. props: {
  35. domain: {
  36. type: Object,
  37. validator: val => val.key && val.label,
  38. },
  39. },
  40. data () {
  41. const domainId = !this.domain || !this.$store.getters.l3PermissionEnable ? 'default' : this.domain.key
  42. return {
  43. form: {
  44. fc: this.$form.createForm(this),
  45. },
  46. formItemLayout: {
  47. wrapperCol: {
  48. span: 21,
  49. xxl: {
  50. span: 22,
  51. },
  52. },
  53. labelCol: {
  54. span: 3,
  55. xxl: {
  56. span: 2,
  57. },
  58. },
  59. },
  60. domainId,
  61. decorators: {
  62. domain: [
  63. 'domain',
  64. {
  65. initialValue: this.$store.getters.isAdminMode ? this.domain || { key: 'default', label: 'Default' } : domainId,
  66. },
  67. ],
  68. roles: [
  69. 'roles',
  70. {
  71. rules: [
  72. { required: true, message: this.$t('rules.role') },
  73. ],
  74. },
  75. ],
  76. projects: [
  77. 'projects',
  78. {
  79. rules: [
  80. { required: true, message: this.$t('rules.project') },
  81. ],
  82. },
  83. ],
  84. },
  85. }
  86. },
  87. computed: {
  88. ...mapGetters(['isDomainMode', 'isAdminMode', 'userInfo', 'l3PermissionEnable', 'scope']),
  89. domainOptions () {
  90. return [{
  91. label: 'Default',
  92. key: 'default',
  93. }]
  94. },
  95. domainParams () {
  96. return {
  97. scope: this.scope,
  98. }
  99. },
  100. roleParams () {
  101. const ret = {
  102. scope: this.scope,
  103. limit: 20,
  104. }
  105. return ret
  106. },
  107. roleLink () {
  108. return this.$router.resolve('/role').href
  109. },
  110. projectCreateLink () {
  111. return this.$router.resolve('/project/create').href
  112. },
  113. },
  114. methods: {
  115. validateForm () {
  116. return this.form.fc.validateFields()
  117. },
  118. domainChange (val) {
  119. this.domainId = val
  120. },
  121. },
  122. }
  123. </script>