3636 <a-icon type =" safety" />
3737 {{ $t('label.login.portal') }}
3838 </span >
39+ <a-form-item v-if =" $config.multipleServer" >
40+ <a-select
41+ size =" large"
42+ :placeholder =" $t('server')"
43+ v-decorator =" [
44+ 'server',
45+ {
46+ initialValue: (server.apiHost || '') + server.apiBase
47+ }
48+ ]"
49+ @change =" onChangeServer" >
50+ <a-select-option v-for =" item in $config.servers" :key =" (item.apiHost || '') + item.apiBase" >
51+ <a-icon slot =" prefix" type =" database" :style =" { color: 'rgba(0,0,0,.25)' }" ></a-icon >
52+ {{ item.name }}
53+ </a-select-option >
54+ </a-select >
55+ </a-form-item >
3956 <a-form-item >
4057 <a-input
4158 size =" large"
86103 <a-icon type =" audit" />
87104 {{ $t('label.login.single.signon') }}
88105 </span >
106+ <a-form-item v-if =" $config.multipleServer" >
107+ <a-select
108+ size =" large"
109+ :placeholder =" $t('server')"
110+ v-decorator =" [
111+ 'server',
112+ {
113+ initialValue: (server.apiHost || '') + server.apiBase
114+ }
115+ ]"
116+ @change =" onChangeServer" >
117+ <a-select-option v-for =" item in $config.servers" :key =" (item.apiHost || '') + item.apiBase" >
118+ <a-icon slot =" prefix" type =" database" :style =" { color: 'rgba(0,0,0,.25)' }" ></a-icon >
119+ {{ item.name }}
120+ </a-select-option >
121+ </a-select >
122+ </a-form-item >
89123 <a-form-item >
90124 <a-select v-decorator =" ['idp', { initialValue: selectedIdp } ]" >
91125 <a-select-option v-for =" (idp, idx) in idps" :key =" idx" :value =" idp.id" >
112146</template >
113147
114148<script >
149+ import Vue from ' vue'
115150import { api } from ' @/api'
151+ import store from ' @/store'
116152import { mapActions } from ' vuex'
153+ import { SERVER_MANAGER } from ' @/store/mutation-types'
117154import TranslationMenu from ' @/components/header/TranslationMenu'
118155
119156export default {
@@ -132,10 +169,15 @@ export default {
132169 time: 60 ,
133170 loginBtn: false ,
134171 loginType: 0
135- }
172+ },
173+ server: ' '
136174 }
137175 },
138176 created () {
177+ if (this .$config .multipleServer ) {
178+ this .server = Vue .ls .get (SERVER_MANAGER ) || this .$config .servers [0 ]
179+ }
180+
139181 this .fetchData ()
140182 },
141183 methods: {
@@ -179,6 +221,11 @@ export default {
179221
180222 validateFields (validateFieldsKey, { force: true }, (err , values ) => {
181223 if (! err) {
224+ if (this .$config .multipleServer ) {
225+ this .axios .defaults .baseURL = (this .server .apiHost || ' ' ) + this .server .apiBase
226+ store .dispatch (' SetServer' , this .server )
227+ }
228+
182229 if (customActiveKey === ' cs' ) {
183230 const loginParams = { ... values }
184231 delete loginParams .username
@@ -219,6 +266,11 @@ export default {
219266 } else {
220267 this .$message .error (this .$t (' message.login.failed' ))
221268 }
269+ },
270+ onChangeServer (server ) {
271+ const servers = this .$config .servers || []
272+ const serverFilter = servers .filter (ser => (ser .apiHost || ' ' ) + ser .apiBase === server)
273+ this .server = serverFilter[0 ] || {}
222274 }
223275 }
224276}
0 commit comments