|
|
|
<template>
|
|
|
|
<div class="login-container">
|
|
|
|
<!-- <div class="header">
|
|
|
|
<h3 class="title-cn">工业互联网公共服务平台</h3>
|
|
|
|
<h4 class="title-en">Industrial Internet Public Service Platform</h4>
|
|
|
|
</div> -->
|
|
|
|
<el-form
|
|
|
|
ref="loginForm"
|
|
|
|
:model="loginForm"
|
|
|
|
:rules="loginRules"
|
|
|
|
class="login-form"
|
|
|
|
auto-complete="on"
|
|
|
|
label-position="left"
|
|
|
|
>
|
|
|
|
<div class="title-form">
|
|
|
|
用户登录
|
|
|
|
<div class="title-regiter">
|
|
|
|
还没账户?去
|
|
|
|
<router-link :to="{name:'register'}">
|
|
|
|
<a class="click_link">注册</a>
|
|
|
|
</router-link>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-form-item prop="username">
|
|
|
|
<span class="svg-container">
|
|
|
|
<img class="user-img" :src="_getImage('login','user.png')"/>
|
|
|
|
</span>
|
|
|
|
<el-input
|
|
|
|
v-model="loginForm.username"
|
|
|
|
name="username"
|
|
|
|
type="text"
|
|
|
|
auto-complete="off"
|
|
|
|
placeholder="请输入用户名"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item prop="password">
|
|
|
|
<span class="svg-container">
|
|
|
|
<img class="user-img" :src="_getImage('login','pass.png')"/>
|
|
|
|
</span>
|
|
|
|
<el-input
|
|
|
|
:type="pwdType"
|
|
|
|
v-model="loginForm.password"
|
|
|
|
name="password"
|
|
|
|
auto-complete="off"
|
|
|
|
placeholder="请输入用户密码"
|
|
|
|
@keyup.enter.native="handleLogin"
|
|
|
|
/>
|
|
|
|
<span class="show-pwd" @click="showPwd">
|
|
|
|
<div :class="pwdType === 'password' ? 'eye' : 'eye-open'"></div>
|
|
|
|
</span>
|
|
|
|
</el-form-item>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="14">
|
|
|
|
<el-form-item prop="vercode">
|
|
|
|
<span class="svg-container">
|
|
|
|
<!-- 获取图片的方法在main.ts中 -->
|
|
|
|
<img class="user-img" :src="_getImage('login','code.png')"/>
|
|
|
|
</span>
|
|
|
|
<el-input
|
|
|
|
v-model="loginForm.vercode"
|
|
|
|
name="vercode"
|
|
|
|
type="text"
|
|
|
|
auto-complete="off"
|
|
|
|
placeholder="请输入验证码"
|
|
|
|
@keyup.enter.native="handleLogin"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/>
|
|
|
|
<img
|
|
|
|
:src="_getImage('login','refresh.png')"
|
|
|
|
alt="点击刷新"
|
|
|
|
class="code-refresh"
|
|
|
|
@click="refreshCode"
|
|
|
|
/>
|
|
|
|
</el-row>
|
|
|
|
<div class="remember-block">
|
|
|
|
<el-checkbox v-model="remember">记住密码</el-checkbox>
|
|
|
|
<router-link :to="{name:'retrievePassword'}">
|
|
|
|
<a class="click_link float-right">忘记密码?</a>
|
|
|
|
</router-link>
|
|
|
|
</div>
|
|
|
|
<el-button
|
|
|
|
:loading="loading"
|
|
|
|
type="primary"
|
|
|
|
style="width:100%;"
|
|
|
|
@click.native.prevent="handleLogin"
|
|
|
|
>登录
|
|
|
|
</el-button>
|
|
|
|
</el-form>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import {JSEncrypt} from "jsencrypt"; //加密组件,前台存公钥,后台存密钥
|
|
|
|
export default {
|
|
|
|
name: "Login",
|
|
|
|
data() {
|
|
|
|
//用户名校验
|
|
|
|
const validateUsername = (rule, value, callback) => {
|
|
|
|
if (!value) {
|
|
|
|
callback(new Error("请输入用户名"));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
//密码校验
|
|
|
|
const validatePass = (rule, value, callback) => {
|
|
|
|
if (value.length < 6) {
|
|
|
|
callback(new Error("密码不能小于6位"));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return {
|
|
|
|
APP_URL: config.API_URL,
|
|
|
|
//加密公钥
|
|
|
|
PUBLIC_KEY:
|
|
|
|
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsD1gI70BxYujhNw8NpaVKRXkcRofoeUbN9Dj5m3i3h9XAIS6LkjI01L4ieRpTHnMEzoXUY8a2/svDf//xuHuDJlZBNtCXK4DPx5x4zHdUWDjFGpWlMQzhsqQlfs0tkN5gP095g27L0ki/NrRuBpgxP1q2dHKpL37sBF8XNRpedwIDAQAB",
|
|
|
|
loginForm: {
|
|
|
|
//form表单数据
|
|
|
|
username: "",
|
|
|
|
password: "",
|
|
|
|
vercode: ""
|
|
|
|
},
|
|
|
|
loginRules: {
|
|
|
|
//form表单校验规则
|
|
|
|
username: [
|
|
|
|
{required: true, trigger: "blur", validator: validateUsername}
|
|
|
|
],
|
|
|
|
password: [
|
|
|
|
{required: true, trigger: "blur", validator: validatePass}
|
|
|
|
],
|
|
|
|
vercode: [{required: true, trigger: "blur", message: "请填写验证码"}]
|
|
|
|
},
|
|
|
|
loading: false, //登录按钮的loading状态
|
|
|
|
pwdType: "password", //密码明文密文类型
|
|
|
|
codeSrc: "",
|
|
|
|
remember: false //记住密码
|
|
|
|
};
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
this._getCss("login", "login");
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
this.codeSrc =
|
|
|
|
this.APP_URL + "/api-login/common/verifycode?" + Math.random();
|
|
|
|
this.getKeysList();
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
//明文密文密码显示
|
|
|
|
showPwd() {
|
|
|
|
if (this.pwdType === "password") {
|
|
|
|
this.pwdType = "";
|
|
|
|
} else {
|
|
|
|
this.pwdType = "password";
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//密码加密
|
|
|
|
passwordEncryption(password) {
|
|
|
|
const encryptor = new JSEncrypt();
|
|
|
|
encryptor.setPublicKey(this.PUBLIC_KEY);
|
|
|
|
const passwordEncryp = encryptor.encrypt(password);
|
|
|
|
return passwordEncryp;
|
|
|
|
},
|
|
|
|
//登录按钮
|
|
|
|
handleLogin() {
|
|
|
|
this.$refs.loginForm.validate(valid => {
|
|
|
|
if (valid) {
|
|
|
|
this.loading = true;
|
|
|
|
const params = {
|
|
|
|
username:this.loginForm.username,
|
|
|
|
password:this.$md5(this.loginForm.password),
|
|
|
|
vercode:this.loginForm.vercode
|
|
|
|
}
|
|
|
|
// this.$store
|
|
|
|
// .dispatch("Login", params)
|
|
|
|
// .then(data => {
|
|
|
|
// this.loading = false;
|
|
|
|
// this.$router.push({path: "/"});
|
|
|
|
// })
|
|
|
|
// .catch(() => {
|
|
|
|
// this.loading = false;
|
|
|
|
// this.refreshCode();
|
|
|
|
// });
|
|
|
|
} else {
|
|
|
|
console.log("error submit!!");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
getKeysList() {
|
|
|
|
// this.$store
|
|
|
|
// .dispatch("keyWords")
|
|
|
|
// .then(data => {
|
|
|
|
// })
|
|
|
|
// .catch(() => {
|
|
|
|
// });
|
|
|
|
},
|
|
|
|
//刷新验证码
|
|
|
|
refreshCode: function () {
|
|
|
|
document
|
|
|
|
.getElementById("codePic")
|
|
|
|
.setAttribute(
|
|
|
|
"src",
|
|
|
|
this.APP_URL + "/api-login/common/verifycode?" + Math.random()
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style>
|
|
|
|
.login-container .login-btn {
|
|
|
|
background: #ff6c58;
|
|
|
|
}
|
|
|
|
</style>
|