3535 <a-icon type =" safety" />
3636 {{ $t('label.login.portal') }}
3737 </span >
38+ <a-form-item v-if =" $config.multipleServer" >
39+ <a-select
40+ size =" large"
41+ :placeholder =" $t('server')"
42+ v-decorator =" [
43+ 'server',
44+ {
45+ initialValue: (server.apiHost || '') + server.apiBase
46+ }
47+ ]"
48+ @change =" onChangeServer" >
49+ <a-select-option v-for =" item in $config.servers" :key =" (item.apiHost || '') + item.apiBase" >
50+ <a-icon slot =" prefix" type =" database" :style =" { color: 'rgba(0,0,0,.25)' }" ></a-icon >
51+ {{ item.name }}
52+ </a-select-option >
53+ </a-select >
54+ </a-form-item >
3855 <a-form-item >
3956 <a-input
4057 size =" large"
85102 <a-icon type =" audit" />
86103 {{ $t('label.login.single.signon') }}
87104 </span >
105+ <a-form-item v-if =" $config.multipleServer" >
106+ <a-select
107+ size =" large"
108+ :placeholder =" $t('server')"
109+ v-decorator =" [
110+ 'server',
111+ {
112+ initialValue: (server.apiHost || '') + server.apiBase
113+ }
114+ ]"
115+ @change =" onChangeServer" >
116+ <a-select-option v-for =" item in $config.servers" :key =" (item.apiHost || '') + item.apiBase" >
117+ <a-icon slot =" prefix" type =" database" :style =" { color: 'rgba(0,0,0,.25)' }" ></a-icon >
118+ {{ item.name }}
119+ </a-select-option >
120+ </a-select >
121+ </a-form-item >
88122 <a-form-item >
89123 <a-select v-decorator =" ['idp', { initialValue: selectedIdp } ]" >
90124 <a-select-option v-for =" (idp, idx) in idps" :key =" idx" :value =" idp.id" >
110144</template >
111145
112146<script >
147+ import Vue from ' vue'
113148import { api } from ' @/api'
149+ import store from ' @/store'
114150import { mapActions } from ' vuex'
151+ import { SERVER_MANAGER } from ' @/store/mutation-types'
115152import TranslationMenu from ' @/components/header/TranslationMenu'
116153
117154export default {
@@ -130,10 +167,15 @@ export default {
130167 time: 60 ,
131168 loginBtn: false ,
132169 loginType: 0
133- }
170+ },
171+ server: ' '
134172 }
135173 },
136174 created () {
175+ if (this .$config .multipleServer ) {
176+ this .server = Vue .ls .get (SERVER_MANAGER ) || this .$config .servers [0 ]
177+ }
178+
137179 this .fetchData ()
138180 },
139181 methods: {
@@ -176,6 +218,11 @@ export default {
176218
177219 validateFields (validateFieldsKey, { force: true }, (err , values ) => {
178220 if (! err) {
221+ if (this .$config .multipleServer ) {
222+ this .axios .defaults .baseURL = (this .server .apiHost || ' ' ) + this .server .apiBase
223+ store .dispatch (' SetServer' , this .server )
224+ }
225+
179226 if (customActiveKey === ' cs' ) {
180227 const loginParams = { ... values }
181228 delete loginParams .username
@@ -216,6 +263,11 @@ export default {
216263 } else {
217264 this .$message .error (this .$t (' message.login.failed' ))
218265 }
266+ },
267+ onChangeServer (server ) {
268+ const servers = this .$config .servers || []
269+ const serverFilter = servers .filter (ser => (ser .apiHost || ' ' ) + ser .apiBase === server)
270+ this .server = serverFilter[0 ] || {}
219271 }
220272 }
221273}
0 commit comments