fix():saas修改

saas
王鑫 2024-09-23 23:36:56 +08:00
parent c3899c4f3c
commit 7fc7299450
4 changed files with 95 additions and 44 deletions

View File

@ -2,7 +2,7 @@ import request from '@/utils/request'
// 登录方法 // 登录方法
export function login(username, password, code, uuid) { export function login(username, password, code, uuid, saas) {
return request({ return request({
url: '/auth/login', url: '/auth/login',
headers: { headers: {
@ -10,7 +10,7 @@ export function login(username, password, code, uuid) {
repeatSubmit: false repeatSubmit: false
}, },
method: 'post', method: 'post',
data: {username, password, code, uuid} data: {username, password, code, uuid, saas}
}) })
} }

View File

@ -50,3 +50,19 @@ export function delDept(deptId) {
method: 'delete' method: 'delete'
}) })
} }
// 公司下拉框
export function selFirmList() {
return request({
url: '/system/dept/selectFirmDatabaseNameList',
method: 'get'
})
}
// 公司下拉框
export function selSonList(id) {
return request({
url: '/system/dept/sonList/' + id,
method: 'get'
})
}

View File

@ -42,8 +42,9 @@ const user = {
const password = userInfo.password const password = userInfo.password
const code = userInfo.code const code = userInfo.code
const uuid = userInfo.uuid const uuid = userInfo.uuid
const saas = userInfo.saas
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid, saas).then(res => {
let data = res.data let data = res.data
setToken(data.access_token) setToken(data.access_token)
commit('SET_TOKEN', data.access_token) commit('SET_TOKEN', data.access_token)

View File

@ -2,6 +2,16 @@
<div class="login"> <div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">若依后台管理系统</h3> <h3 class="title">若依后台管理系统</h3>
<el-form-item prop="saas.deptId">
<el-select v-model="saas.deptId" clearable placeholder="请选择公司" style="width: 350px;">
<el-option
v-for="item in firmList"
:key="item.deptId"
:label="item.deptName"
:value="item.deptId">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"
@ -62,98 +72,122 @@
</template> </template>
<script> <script>
import {getCodeImg} from "@/api/login"; import { getCodeImg } from '@/api/login'
import Cookies from "js-cookie"; import Cookies from 'js-cookie'
import { decrypt, encrypt } from '@/utils/jsencrypt' import { decrypt, encrypt } from '@/utils/jsencrypt'
import { selSonList } from '@/api/system/dept'
export default { export default {
name: "Login", name: 'Login',
data() { data() {
return { return {
codeUrl: "", codeUrl: '',
firmList: [],
loginForm: { loginForm: {
username: "admin", username: 'admin',
password: "admin123", password: 'admin123',
rememberMe: false, rememberMe: false,
code: "", code: '',
uuid: "" uuid: '',
saas: null
},
saas: {
deptId: 101,
deptName: '',
saasKey: ''
}, },
loginRules: { loginRules: {
saas: {
},
username: [ username: [
{required: true, trigger: "blur", message: "请输入您的账号"} { required: true, trigger: 'blur', message: '请输入您的账号' }
], ],
password: [ password: [
{required: true, trigger: "blur", message: "请输入您的密码"} { required: true, trigger: 'blur', message: '请输入您的密码' }
], ],
code: [{required: true, trigger: "change", message: "请输入验证码"}] code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
}, },
loading: false, loading: false,
// //
captchaEnabled: false, captchaEnabled: false,
// //
register: false, register: true,
redirect: undefined redirect: undefined
}; }
}, },
watch: { watch: {
$route: { $route: {
handler: function(route) { handler: function(route) {
this.redirect = route.query && route.query.redirect; this.redirect = route.query && route.query.redirect
}, },
immediate: true immediate: true
} }
}, },
created() { created() {
this.getCode(); this.getCode()
this.getCookie(); this.selFirmList()
this.getCookie()
}, },
methods: { methods: {
selFirmList() {
selSonList(100).then(res => {
this.firmList = res.data
})
},
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then(res => {
this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled; this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled
if (this.captchaEnabled) { if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.data.img; this.codeUrl = 'data:image/gif;base64,' + res.data.img
this.loginForm.uuid = res.data.uuid; this.loginForm.uuid = res.data.uuid
} }
}); })
}, },
getCookie() { getCookie() {
const username = Cookies.get("username"); const username = Cookies.get('username')
const password = Cookies.get("password"); const password = Cookies.get('password')
const rememberMe = Cookies.get('rememberMe') const rememberMe = Cookies.get('rememberMe')
this.loginForm = { this.loginForm = {
username: username === undefined ? this.loginForm.username : username, username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password), password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
}; }
}, },
handleLogin() { handleLogin() {
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate(valid => {
if (valid) { if (valid) {
this.loading = true; this.loading = true
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, {expires: 30}); Cookies.set('username', this.loginForm.username, { expires: 30 })
Cookies.set("password", encrypt(this.loginForm.password), {expires: 30}); Cookies.set('password', encrypt(this.loginForm.password), { expires: 30 })
Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30}); Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
} else { } else {
Cookies.remove("username"); Cookies.remove('username')
Cookies.remove("password"); Cookies.remove('password')
Cookies.remove('rememberMe'); Cookies.remove('rememberMe')
} }
this.$store.dispatch("Login", this.loginForm).then(() => { let loginForm = this.loginForm
this.$router.push({path: this.redirect || "/"}).catch(() => { const { databaseName, deptName, deptId } = this.firmList.find(dept => dept.deptId === this.saas.deptId)
}); loginForm.saas = {
saasKey: databaseName,
deptName: deptName,
deptId: deptId
}
this.$store.dispatch('Login', loginForm).then(() => {
this.$router.push({ path: this.redirect || '/' }).catch(() => {
})
}).catch(() => { }).catch(() => {
this.loading = false; this.loading = false
if (this.captchaEnabled) { if (this.captchaEnabled) {
this.getCode(); this.getCode()
} }
}); })
}
})
} }
});
} }
} }
};
</script> </script>
<style lang="scss" rel="stylesheet/scss"> <style lang="scss" rel="stylesheet/scss">