Compare commits

...

1 Commits
master ... saas

Author SHA1 Message Date
王鑫 7fc7299450 fix():saas修改 2024-09-23 23:36:56 +08:00
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({
url: '/auth/login',
headers: {
@ -10,7 +10,7 @@ export function login(username, password, code, uuid) {
repeatSubmit: false
},
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'
})
}
// 公司下拉框
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 code = userInfo.code
const uuid = userInfo.uuid
const saas = userInfo.saas
return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => {
login(username, password, code, uuid, saas).then(res => {
let data = res.data
setToken(data.access_token)
commit('SET_TOKEN', data.access_token)

View File

@ -2,6 +2,16 @@
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<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-input
v-model="loginForm.username"
@ -62,98 +72,122 @@
</template>
<script>
import {getCodeImg} from "@/api/login";
import Cookies from "js-cookie";
import {decrypt, encrypt} from '@/utils/jsencrypt'
import { getCodeImg } from '@/api/login'
import Cookies from 'js-cookie'
import { decrypt, encrypt } from '@/utils/jsencrypt'
import { selSonList } from '@/api/system/dept'
export default {
name: "Login",
name: 'Login',
data() {
return {
codeUrl: "",
codeUrl: '',
firmList: [],
loginForm: {
username: "admin",
password: "admin123",
username: 'admin',
password: 'admin123',
rememberMe: false,
code: "",
uuid: ""
code: '',
uuid: '',
saas: null
},
saas: {
deptId: 101,
deptName: '',
saasKey: ''
},
loginRules: {
saas: {
},
username: [
{required: true, trigger: "blur", message: "请输入您的账号"}
{ required: true, trigger: 'blur', message: '请输入您的账号' }
],
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,
//
captchaEnabled: false,
//
register: false,
register: true,
redirect: undefined
};
}
},
watch: {
$route: {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
handler: function(route) {
this.redirect = route.query && route.query.redirect
},
immediate: true
}
},
created() {
this.getCode();
this.getCookie();
this.getCode()
this.selFirmList()
this.getCookie()
},
methods: {
selFirmList() {
selSonList(100).then(res => {
this.firmList = res.data
})
},
getCode() {
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) {
this.codeUrl = "data:image/gif;base64," + res.data.img;
this.loginForm.uuid = res.data.uuid;
this.codeUrl = 'data:image/gif;base64,' + res.data.img
this.loginForm.uuid = res.data.uuid
}
});
})
},
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
const username = Cookies.get('username')
const password = Cookies.get('password')
const rememberMe = Cookies.get('rememberMe')
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
};
}
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
if (valid) {
this.loading = true;
this.loading = true
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, {expires: 30});
Cookies.set("password", encrypt(this.loginForm.password), {expires: 30});
Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30});
Cookies.set('username', this.loginForm.username, { expires: 30 })
Cookies.set('password', encrypt(this.loginForm.password), { expires: 30 })
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove('rememberMe');
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
}
this.$store.dispatch("Login", this.loginForm).then(() => {
this.$router.push({path: this.redirect || "/"}).catch(() => {
});
let loginForm = this.loginForm
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(() => {
this.loading = false;
this.loading = false
if (this.captchaEnabled) {
this.getCode();
this.getCode()
}
});
})
}
});
})
}
}
};
}
</script>
<style lang="scss" rel="stylesheet/scss">