You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
8.8 KiB

3 years ago
<template>
<div id="userLayout">
<div class="login_panle">
<div class="login_panle_form">
<div class="login_panle_form_title">
<!-- <img
class="login_panle_form_title_logo"
:src="$GIN_VUE_ADMIN.appLogo"
alt
/> -->
<p class="login_panle_form_title_p">绩效考核系统</p>
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="rules"
@keyup.native.enter="submitForm"
>
<el-form-item prop="username">
<el-input v-model="loginForm.username" placeholder="请输入工号">
<template #suffix>
<i class="el-input__icon el-icon-user" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
:type="lock === 'lock' ? 'password' : 'text'"
placeholder="请输入密码"
>
<template #suffix>
<i
:class="'el-input__icon el-icon-' + lock"
@click="changeLock"
/>
</template>
</el-input>
</el-form-item>
<el-form-item style="position: relative" prop="captcha">
<el-input
v-model="loginForm.captcha"
name="logVerify"
placeholder="请输入验证码"
style="width: 60%"
/>
<div class="vPic">
<img
v-if="picPath"
:src="picPath"
alt="请输入验证码"
@click="loginVerify()"
/>
</div>
</el-form-item>
<el-form-item>
<el-button
type="primary"
style="width: 46%; margin-left: 25%"
@click="submitForm"
> </el-button
>
</el-form-item>
</el-form>
</div>
<div class="login_panle_right" />
</div>
</div>
</template>
<script>
export default {
name: 'Login',
data() {
const checkUsername = (rule, value, callback) => {
if (value.length < 5) {
return callback(new Error('请输入正确的用户名'))
} else {
callback()
}
}
const checkPassword = (rule, value, callback) => {
if (value.length < 6) {
return callback(new Error('请输入正确的密码'))
} else {
callback()
}
}
return {
openid:'',
redirect: undefined,
curYear: 0,
lock: 'lock',
loginForm: {
username: '',
password: '',
captcha: '',
captchaId: ''
},
rules: {
username: [{ required: true, message: '请输入工号',trigger: 'blur' }],
password: [{ validator: checkPassword, trigger: 'blur' }],
captcha: [{ required: true, message: '请输入验证码', trigger: 'blur' },
{
min: 5,
max: 6,
message: '验证码格式不正确',
trigger: 'blur',
}]
},
logVerify: '',
picPath: ''
}
},
onLoad(option) {
// alert(option)
this.openid=option.openid
this.loginForm.openid=option.openid
},
created() {
this.$store.commit('SET_USER_apiPass',1)
console.log("this.$store.state.apiPass")
console.log(this.$store.state.apiPass)
this.loginVerify()
this.curYear = new Date().getFullYear()
},
watch: {
$route: {
handler: function(route) {
const query = route.query
if (query) {
this.redirect = query.redirect
this.otherQuery = this.getOtherQuery(query)
}
},
immediate: true
}
},
methods: {
async checkInit() {
const res = await checkDB()
if (res.code === 0) {
if (res.data?.needInit) {
this.$store.commit('user/NeedInit')
this.$router.push({ name: 'Init' })
} else {
this.$message({
type: 'info',
message: '已配置数据库信息,无法初始化'
})
}
}
},
// async login() {
// return await this.myLoginIn(this.loginForm)
// },
async submitForm() {
var that=this
this.$refs.loginForm.validate(async(v) => {
if (v) {
// const flag = await this.login()
this.$u.api.Duty.scancodelogin(this.loginForm).then(res => {
console.log(res.code)
if(res.code === 0){
console.log("跳转")
// this.$u.route('/pages/task/data');
// 线上
// window.location.href = 'https://www.hxgk.group/jumpapiurl/webindex?url=http://new.hxgk.group/sj/index.html&errorurl=http://new.hxgk.group/sj/index.htmlsj/index.html#/pages/login/login';
// 本地操作
console.log(res.data.key)
that.$store.commit('SET_USER_KEY',res.data.key)
that.$store.commit('SET_USER_TOKEN',res.data.token)
console.log('vm.$store.state.userKey'+that.$store.state.userKey)
3 years ago
sessionStorage.setItem('userKey',res.data.key);
sessionStorage.setItem('userToken',res.data.token);
3 years ago
// console.log()
this.$u.route({
type:"switchTab",
url: '/pages/index/index',
})
// this.$u.route('/pages/index/index');
}
})
} else {
this.$message({
type: 'error',
message: '请正确填写登录信息',
showClose: true
})
this.loginVerify()
return false
}
})
},
getOtherQuery(query) {
return Object.keys(query).reduce((acc, cur) => {
if (cur !== 'redirect') {
acc[cur] = query[cur]
}
return acc
}, {})
},
changeLock() {
this.lock = this.lock === 'lock' ? 'unlock' : 'lock'
},
loginVerify() {
this.$store.commit('SET_USER_apiPass',1)
this.$u.api.Duty.captcha().then(ele => {
this.picPath = ele.data.picPath
this.loginForm.captchaId = ele.data.captchaId
})
// captcha({}).then((ele) => {
// this.picPath = ele.data.picPath
// this.loginForm.captchaId = ele.data.captchaId
// })
}
}
}
</script>
<style lang="scss" scoped>
#userLayout {
margin: 0;
padding: 0;
//background-image: url("@/assets/login_background.jpg");
// background-image: url("../assets/login_background.jpg");
background-size: cover;
width: 100%;
height: 100%;
position: relative;
.login_panle {
position: absolute;
top: 3vh;
left: 2vw;
width: 96vw;
height: 94vh;
background-color: rgba(255, 255, 255, .8);
backdrop-filter: blur(5px);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: space-evenly;
.login_panle_right {
// background-image: url("../assets/login_left.svg");
background-size: cover;
width: 40%;
height: 60%;
float: right !important;
}
.login_panle_form {
width: 420px;
background-color: #fff;
padding: 40px 40px 40px 40px;
// border-radius: 10px;
// box-shadow: 2px 3px 7px rgba(0, 0, 0, .2);
.login_panle_form_title {
display: flex;
align-items: center;
margin: 30px 0;
.login_panle_form_title_logo {
width: 90px;
height: 72px;
}
.login_panle_form_title_p {
font-size: 30px;
padding-left: 20px;
}
}
.vPic {
width: 33%;
height: 38px;
float: right !important;
background: #ccc;
img {
width: 100%;
height: 100%;
cursor: pointer;
vertical-align: middle;
}
}
}
.login_panle_foot {
position: absolute;
bottom: 20px;
.links {
display: flex;
align-items: center;
justify-content: space-between;
.link-icon {
width: 30px;
height: 30px;
}
}
.copyright {
color: #777777;
margin-top: 5px;
}
}
}
}
//小屏幕不显示右侧,将登陆框居中
@media (max-width: 750px) {
.login_panle_right {
display: none;
}
.login_panle {
width: 100vw;
height: 100vh;
top: 0;
left: 0;
}
.login_panle_form {
width: 100%;
}
}
/*
powerBy : bypanghu@163.com
*/
</style>