| | |
| | | <template> |
| | | <el-form class="login-form" |
| | | status-icon |
| | | :rules="loginRules" |
| | | ref="loginForm" |
| | | <el-form ref="loginForm" |
| | | :model="loginForm" |
| | | :rules="loginRules" |
| | | class="login-form" |
| | | label-width="0" |
| | | > |
| | | status-icon |
| | | > |
| | | |
| | | <!-- <el-form-item prop="selectInput">--> |
| | | <!-- <el-select v-model="loginForm.value" placeholder="请选择组织" style="width: 326px" @change="selectchange">--> |
| | | <!-- <i slot="prefix" class="el-icon-s-operation"/>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="(item,index) in loginForm.region"--> |
| | | <!-- :key="index"--> |
| | | <!-- :label="item.TENANT_NAME"--> |
| | | <!-- :value="item.TENANT_ID">--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item prop="username"> |
| | | <el-input size="small" |
| | | @keyup.enter.native="handleLogin" |
| | | v-model="loginForm.username" |
| | | auto-complete="off" |
| | | :placeholder="$t('login.username')"> |
| | | <i slot="prefix" class="icon-yonghu" style="color: white"/> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <el-input size="small" |
| | | @keyup.enter.native="handleLogin" |
| | | :type="passwordType" |
| | | v-model="loginForm.password" |
| | | auto-complete="off" |
| | | :placeholder="$t('login.password')"> |
| | | <i class="el-icon-view el-input__icon" slot="suffix" @click="showPassword" style="color: white"/> |
| | | <i slot="prefix" class="icon-mima" style="color: white"/> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="username"> |
| | | <el-input v-model="loginForm.username" |
| | | :placeholder="$t('login.username')" |
| | | auto-complete="off" |
| | | size="small" |
| | | @keyup.enter.native="handleLogin"> |
| | | <i slot="prefix" class="icon-yonghu" style="color: white"/> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <el-input v-model="loginForm.password" |
| | | :placeholder="$t('login.password')" |
| | | :type="passwordType" |
| | | auto-complete="off" |
| | | size="small" |
| | | @keyup.enter.native="handleLogin"> |
| | | <i slot="suffix" class="el-icon-view el-input__icon" style="color: white" @click="showPassword"/> |
| | | <i slot="prefix" class="icon-mima" style="color: white"/> |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" |
| | | size="small" |
| | | @click.native.prevent="handleLogin" |
| | | class="login-submit">{{$t('login.submit')}} |
| | | </el-button> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | <el-form-item> |
| | | <el-button class="login-submit" |
| | | size="small" |
| | | type="primary" |
| | | @click.native.prevent="handleLogin">{{ $t('login.submit') }} |
| | | </el-button> |
| | | </el-form-item> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :visible.sync="passwordVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | style="margin-top: -15vh" |
| | | title="修改密码" |
| | | width="50%"> |
| | | <avue-form ref="changeForm" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> |
| | | </el-dialog> |
| | | |
| | | </el-form> |
| | | </template> |
| | | |
| | | <script> |
| | | import {mapGetters} from "vuex"; |
| | | import {info} from "@/api/system/tenant"; |
| | | import {getTopUrl} from "@/util/util"; |
| | | import {mapGetters} from "vuex"; |
| | | import {info} from "@/api/system/tenant"; |
| | | import {getTopUrl} from "@/util/util"; |
| | | import func from "@/util/func"; |
| | | import {changePassword} from "@/api/user"; |
| | | |
| | | export default { |
| | | name: "userlogin", |
| | | data() { |
| | | return { |
| | | tenantMode: this.website.tenantMode, |
| | | ButtonList:[], |
| | | loginForm: { |
| | | //租户ID |
| | | tenantId: "000000", |
| | | //部门ID |
| | | deptId: "", |
| | | //角色ID |
| | | roleId: "", |
| | | //用户名 |
| | | username: "admin", |
| | | //密码 |
| | | password: "", |
| | | selectInput:'', |
| | | //下拉input数据 |
| | | value:'管理组', |
| | | //下拉菜单 |
| | | region:[], |
| | | //账号类型 |
| | | type: "account", |
| | | //验证码的索引 |
| | | key: "", |
| | | //预加载白色背景 |
| | | image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", |
| | | |
| | | }, |
| | | value: { |
| | | selectInput: [ |
| | | {required: true, message: "请选择组织", trigger: "blur"} |
| | | ], |
| | | username: [ |
| | | {required: true, message: "请输入用户名", trigger: "blur"} |
| | | ], |
| | | password: [ |
| | | {required: true, message: "请输入密码", trigger: "blur"}, |
| | | {min: 1, message: "密码长度最少为6位", trigger: "blur"} |
| | | ] |
| | | }, |
| | | passwordType: "password", |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | // this.getTenant(); |
| | | }, |
| | | mounted() { |
| | | //在mounted获取首页下拉菜单数据 |
| | | /*this.$axios.get('/api/blade-system/tenant/tenant-map').then(res=>{ |
| | | if(res.data.code == 200){ |
| | | this.loginForm.region=res.data.data |
| | | } |
| | | })*/ |
| | | }, |
| | | 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 = ''; |
| | | } |
| | | export default { |
| | | name: "userlogin", |
| | | data() { |
| | | return { |
| | | userName: '', |
| | | passwordVisible: false, |
| | | passwordForm: {}, |
| | | passwordOption: { |
| | | submitText: '保存', |
| | | column: [ |
| | | { |
| | | label: '登陆密码', |
| | | prop: 'oldPassword', |
| | | span: 24, |
| | | labelWidth: "15%", |
| | | type: 'password', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请输入登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: '新登陆密码', |
| | | prop: 'password', |
| | | span: 24, |
| | | labelWidth: "15%", |
| | | type: 'password', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请输入新登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: '新密码登陆确认', |
| | | prop: 'confirmPassword', |
| | | span: 24, |
| | | labelWidth: "15%", |
| | | type: 'password', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请确认登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | '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 = ''; |
| | | } |
| | | tenantMode: this.website.tenantMode, |
| | | ButtonList: [], |
| | | loginForm: { |
| | | //租户ID |
| | | tenantId: "000000", |
| | | //部门ID |
| | | deptId: "", |
| | | //角色ID |
| | | roleId: "", |
| | | //用户名 |
| | | username: "admin", |
| | | //密码 |
| | | password: "", |
| | | selectInput: '', |
| | | //下拉input数据 |
| | | value: '管理组', |
| | | //下拉菜单 |
| | | region: [], |
| | | //账号类型 |
| | | type: "account", |
| | | //验证码的索引 |
| | | key: "", |
| | | //预加载白色背景 |
| | | image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", |
| | | |
| | | }, |
| | | value: { |
| | | selectInput: [ |
| | | {required: true, message: "请选择组织", trigger: "blur"} |
| | | ], |
| | | username: [ |
| | | {required: true, message: "请输入用户名", trigger: "blur"} |
| | | ], |
| | | password: [ |
| | | {required: true, message: "请输入密码", trigger: "blur"}, |
| | | {min: 1, message: "密码长度最少为6位", trigger: "blur"} |
| | | ] |
| | | }, |
| | | passwordType: "password", |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | // this.getTenant(); |
| | | }, |
| | | mounted() { |
| | | //在mounted获取首页下拉菜单数据 |
| | | /*this.$axios.get('/api/blade-system/tenant/tenant-map').then(res=>{ |
| | | if(res.data.code == 200){ |
| | | this.loginForm.region=res.data.data |
| | | } |
| | | })*/ |
| | | }, |
| | | 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 = ''; |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["tagWel", "userInfo"]) |
| | | }, |
| | | props: [], |
| | | methods: { |
| | | // 绑定下拉菜单动态ID |
| | | selectchange(value) { |
| | | this.loginForm.tenantId=value |
| | | console.log(this.loginForm.tenantId) |
| | | }, |
| | | showPassword() { |
| | | this.passwordType === "" |
| | | ? (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.$router.push({path: this.tagWel.value}); |
| | | this.$refs.loginForm.validate(valid => { |
| | | if (valid) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '登录中,请稍后。。。', |
| | | spinner: "el-icon-loading" |
| | | }); |
| | | this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { |
| | | if (this.website.switchMode) { |
| | | const deptId = this.userInfo.deptOid; |
| | | const roleId = this.userInfo.userOid; |
| | | if (deptId.includes(",") || roleId.includes(",")) { |
| | | this.loginForm.deptId = deptId; |
| | | this.loginForm.roleId = roleId; |
| | | this.userBox = true; |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | loading.close(); |
| | | }); |
| | | return false; |
| | | } |
| | | }; |
| | | this.$router.push({path: this.tagWel.value}); |
| | | loading.close(); |
| | | }).catch((err) => { |
| | | console.log('err',err) |
| | | loading.close(); |
| | | |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | getTenant() { |
| | | let domain = getTopUrl(); |
| | | // 临时指定域名,方便测试 |
| | | //domain = "https://bladex.vip"; |
| | | info(domain).then(res => { |
| | | const data = res.data; |
| | | if (data.success && data.data.tenantId) { |
| | | this.tenantMode = false; |
| | | this.loginForm.tenantId = data.data.tenantId; |
| | | this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; |
| | | } |
| | | }) |
| | | '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", "userInfo"]) |
| | | }, |
| | | props: [], |
| | | methods: { |
| | | // 绑定下拉菜单动态ID |
| | | selectchange(value) { |
| | | this.loginForm.tenantId = value |
| | | }, |
| | | showPassword() { |
| | | this.passwordType === "" |
| | | ? (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() { |
| | | if (!this.loginForm.password) { |
| | | this.$message.error('请输入密码'); |
| | | return; |
| | | } |
| | | this.$router.push({path: this.tagWel.value}); |
| | | this.$refs.loginForm.validate(valid => { |
| | | if (valid) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '登录中,请稍后。。。', |
| | | spinner: "el-icon-loading" |
| | | }); |
| | | this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => { |
| | | if (data.obj.failCode !== 'loginSuccess') { |
| | | // console.log('data', data); |
| | | this.$message.error(data.msg); |
| | | if (data.obj.mustChangePassword) { |
| | | this.passwordVisible = true; |
| | | } |
| | | } |
| | | |
| | | if (this.website.switchMode) { |
| | | const deptId = this.userInfo.deptOid; |
| | | const roleId = this.userInfo.userOid; |
| | | if (deptId.includes(",") || roleId.includes(",")) { |
| | | this.loginForm.deptId = deptId; |
| | | this.loginForm.roleId = roleId; |
| | | this.userBox = true; |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | loading.close(); |
| | | }); |
| | | return false; |
| | | } |
| | | } |
| | | ; |
| | | this.$router.push({path: this.tagWel.value}); |
| | | loading.close(); |
| | | }).catch((err) => { |
| | | loading.close(); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | getTenant() { |
| | | let domain = getTopUrl(); |
| | | // 临时指定域名,方便测试 |
| | | //domain = "https://bladex.vip"; |
| | | info(domain).then(res => { |
| | | const data = res.data; |
| | | if (data.success && data.data.tenantId) { |
| | | this.tenantMode = false; |
| | | this.loginForm.tenantId = data.data.tenantId; |
| | | this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submitSwitch(form, done) { |
| | | let userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); |
| | | |
| | | let params = { |
| | | userName: this.loginForm.username, |
| | | oldPassword: func.encryptData(form.oldPassword, 'daliantan0v0vcip'), |
| | | password: func.encryptData(form.password, 'daliantan0v0vcip'), |
| | | confirmPassword: func.encryptData(form.confirmPassword, 'daliantan0v0vcip'), |
| | | } |
| | | changePassword(params).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success('修改成功,即将跳转到首页'); |
| | | this.passwordVisible = false; |
| | | this.$refs.changeForm.resetFields(); |
| | | this.$store.dispatch("LoginByUsername", {...this.loginForm, password: form.confirmPassword}).then(data => { |
| | | if (data.obj.failCode !== 'loginSuccess') { |
| | | this.$message.error(data.msg); |
| | | } |
| | | this.$router.push({path: this.tagWel.value}); |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | console.log(err); |
| | | }) |
| | | done(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style> |