diff --git a/src/api/user.js b/src/api/user.js index d6a803f..da3ccfd 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -1,11 +1,13 @@ import request from '@/router/axios'; import website from "@/config/website"; -export const loginByUsername = (tenantId, username, password, type, key, code) => request({ +export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key, code) => request({ url: '/api/blade-auth/oauth/token', method: 'post', headers: { 'Tenant-Id': tenantId, + 'Dept-Id': deptId, + 'Role-Id': roleId, 'Captcha-Key': key, 'Captcha-Code': code, }, diff --git a/src/page/login/userlogin.vue b/src/page/login/userlogin.vue index 0f5e55d..84e07ba 100644 --- a/src/page/login/userlogin.vue +++ b/src/page/login/userlogin.vue @@ -60,6 +60,12 @@ class="login-submit">{{$t('login.submit')}} + + + @@ -77,6 +83,10 @@ loginForm: { //租户ID tenantId: "000000", + //部门ID + deptId: "", + //角色ID + roleId: "", //用户名 username: "admin", //密码 @@ -102,7 +112,54 @@ {min: 1, message: "密码长度最少为6位", trigger: "blur"} ] }, - passwordType: "password" + passwordType: "password", + userBox: false, + userForm: { + deptId: '', + roleId: '' + }, + userOption: { + labelWidth: 70, + submitBtn: true, + emptyBtn: false, + submitText: '登录', + column: [ + { + label: '部门', + prop: 'deptId', + type: 'select', + props: { + label: 'deptName', + value: 'id' + }, + dicUrl: '/api/blade-system/dept/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "请选择部门", + trigger: "blur" + }], + }, + { + label: '角色', + prop: 'roleId', + type: 'select', + props: { + label: 'roleName', + value: 'id' + }, + dicUrl: '/api/blade-system/role/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "请选择角色", + trigger: "blur" + }], + }, + ] + } }; }, created() { @@ -111,8 +168,28 @@ }, mounted() { }, + watch: { + 'loginForm.deptId'() { + const column = this.findObject(this.userOption.column, "deptId"); + if (this.loginForm.deptId.includes(",")) { + column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}`; + column.display = true; + } else { + column.dicUrl = ''; + } + }, + 'loginForm.roleId'() { + const column = this.findObject(this.userOption.column, "roleId"); + if (this.loginForm.roleId.includes(",")) { + column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}`; + column.display = true; + } else { + column.dicUrl = ''; + } + } + }, computed: { - ...mapGetters(["tagWel"]) + ...mapGetters(["tagWel", "userInfo"]) }, props: [], methods: { @@ -130,6 +207,16 @@ ? (this.passwordType = "password") : (this.passwordType = ""); }, + submitLogin (form, done) { + if (form.deptId !== '') { + this.loginForm.deptId = form.deptId; + } + if (form.roleId !== '') { + this.loginForm.roleId = form.roleId; + } + this.handleLogin(); + done(); + }, handleLogin() { this.$refs.loginForm.validate(valid => { if (valid) { @@ -139,7 +226,15 @@ spinner: "el-icon-loading" }); this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { - this.$router.push({path: this.tagWel.value}); + const deptId = this.userInfo.dept_id; + const roleId = this.userInfo.role_id; + if (deptId.includes(",") || roleId.includes(",")) { + this.loginForm.deptId = deptId; + this.loginForm.roleId = roleId; + this.userBox = true; + } else { + this.$router.push({path: this.tagWel.value}); + } loading.close(); }).catch(() => { loading.close(); diff --git a/src/store/modules/user.js b/src/store/modules/user.js index f8fe52e..66516b6 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -48,7 +48,7 @@ const user = { //根据用户名登录 LoginByUsername({commit}, userInfo) { return new Promise((resolve, reject) => { - loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key, userInfo.code).then(res => { + loginByUsername(userInfo.tenantId, userInfo.deptId, userInfo.roleId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key, userInfo.code).then(res => { const data = res.data; if (data.error_description) { Message({