|
@@ -1,6 +1,7 @@
|
|
|
<!--登录界面-->
|
|
|
<template>
|
|
|
- <div class="login" ref="login" :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BrackgroupStr.slice(3) : ''}`}">
|
|
|
+ <div class="login" ref="login"
|
|
|
+ :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BrackgroupStr.slice(3) : ''}`}">
|
|
|
<section class="login-content" :style="{
|
|
|
width: loginJson[0] ? loginJson[0].Width + 'px' : '',
|
|
|
height: loginJson[0] ? loginJson[0].Height + 'px' : '',
|
|
@@ -13,24 +14,35 @@
|
|
|
<h2>用户登录</h2>
|
|
|
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="55px" class="login-form">
|
|
|
<el-form-item label="账号" prop="username">
|
|
|
- <el-input v-model="ruleForm.username" prefix-icon="el-icon-user"></el-input>
|
|
|
+ <el-input v-model="ruleForm.username" prefix-icon="el-icon-user" autofocus @keyup.enter.native="submitForm('ruleForm')"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="密码" prop="password">
|
|
|
- <el-input type="password" v-model="ruleForm.password" autocomplete="off" prefix-icon="el-icon-lock"></el-input>
|
|
|
+ <el-input type="password" v-model="ruleForm.password" autocomplete="off"
|
|
|
+ prefix-icon="el-icon-lock" @keyup.20.native="testCapsLock" @keyup.enter.native="submitForm('ruleForm')" show-password></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-checkbox v-model="checked" :checked="checked" class="checkedBox">记住用户名和密码</el-checkbox>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BTNForegroundStr.slice(3) : ''}`}" @click="submitForm('ruleForm')">提交</el-button>
|
|
|
- <el-button type="primary" :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BTNForegroundStr.slice(3) : ''}`}" @click="resetForm('ruleForm')">重置</el-button>
|
|
|
+ <el-button type="primary"
|
|
|
+ :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BTNForegroundStr.slice(3) : ''}`}"
|
|
|
+ @click="submitForm('ruleForm')">提交
|
|
|
+ </el-button>
|
|
|
+ <el-button type="primary"
|
|
|
+ :style="{backgroundColor: `#${loginJson[0] ? loginJson[0].BTNForegroundStr.slice(3) : ''}`}"
|
|
|
+ @click="resetForm('ruleForm')">重置
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</section>
|
|
|
+ <!--最小化和关闭按钮-->
|
|
|
+ <div class="mini" @click="miniWindow">-</div>
|
|
|
+ <div class="close" @click="closeWindow">×</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import {reqLogin} from "../api"
|
|
|
- import storageUtils from "../../utils/storageUtils"
|
|
|
import {getStaticFile} from "../../utils/tools"
|
|
|
+ import storageUtils from "../../utils/storageUtils"
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
@@ -51,14 +63,17 @@
|
|
|
},
|
|
|
rules: {
|
|
|
username: [
|
|
|
- { validator: checkUsername, trigger: 'blur' }
|
|
|
+ {validator: checkUsername, trigger: 'blur'}
|
|
|
],
|
|
|
password: [
|
|
|
- { validator: validatePasswrod, trigger: 'blur' }
|
|
|
+ {validator: validatePasswrod, trigger: 'blur'}
|
|
|
]
|
|
|
},
|
|
|
- loginJson:[],
|
|
|
- staticUrl:this.$store.state.staticUrl
|
|
|
+ loginJson: [],
|
|
|
+ staticUrl: this.$store.state.staticUrl,
|
|
|
+ flag:false, // 大写开启状态
|
|
|
+ checked:false, // 记住用户名和密码的状态
|
|
|
+ user:storageUtils.getUser(), // 本地存储的用户数据
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -66,69 +81,139 @@
|
|
|
this.loginJson = await getStaticFile('EnityLogin.Data')
|
|
|
},
|
|
|
|
|
|
+ mounted() {
|
|
|
+ // 如果status为true,对表单进行赋值
|
|
|
+ if(this.checked){
|
|
|
+ this.ruleForm.username = this.user.name
|
|
|
+ this.ruleForm.password = this.user.password
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
updated() {
|
|
|
// 添加背景图片
|
|
|
const backIcon = this.loginJson[0] ? this.loginJson[0].BackIcon : ''
|
|
|
- this.$refs.login.style.backgroundImage = backIcon ? 'url('+`${this.staticUrl}/Data/${backIcon}`+')' : null
|
|
|
+ this.$refs.login.style.backgroundImage = backIcon ? 'url(' + `${this.staticUrl}/Data/${backIcon}` + ')' : null
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
+ // 提交表单,登录
|
|
|
async submitForm() {
|
|
|
- const {username,password} = this.ruleForm
|
|
|
- if(username === '' || password === ''){
|
|
|
+ const {username, password} = this.ruleForm
|
|
|
+ if (username === '' || password === '') {
|
|
|
this.$message.warning('请输入用户名和密码!')
|
|
|
return
|
|
|
}
|
|
|
- const userInfo = {name:username,password}
|
|
|
-
|
|
|
+ const userInfo = {name: username, password}
|
|
|
// 请求登录
|
|
|
- const res = await reqLogin(userInfo,'login')
|
|
|
- if(res.token){
|
|
|
+ const res = await reqLogin(userInfo, 'login')
|
|
|
+ if (res.token) {
|
|
|
// 将user保存到vuex的state,同时保存到本地
|
|
|
this.$store.dispatch('saveUser', userInfo)
|
|
|
+ // 保存记住用户名和密码的状态
|
|
|
+ storageUtils.saveStatus(this.check)
|
|
|
// 将token保存到会议存储
|
|
|
storageUtils.saveToken(res.token)
|
|
|
// 跳转到管理界面
|
|
|
this.$router.replace('/admin')
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
this.$message.error('用户名或密码错误!')
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 重置表单
|
|
|
resetForm(formName) {
|
|
|
this.$refs[formName].resetFields()
|
|
|
- }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 监视开启和关闭大写
|
|
|
+ testCapsLock() {
|
|
|
+ this.flag = !this.flag
|
|
|
+ if(this.flag){
|
|
|
+ this.$message({
|
|
|
+ message: '大写开启',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ }else {
|
|
|
+ this.$message('大写关闭')
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 最小化窗口
|
|
|
+ miniWindow() {
|
|
|
+ require('electron').ipcRenderer.send('window-min')
|
|
|
+ },
|
|
|
+
|
|
|
+ // 关闭窗口
|
|
|
+ closeWindow() {
|
|
|
+ require('electron').ipcRenderer.send('window-close')
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
|
- html,body {
|
|
|
- margin:0;
|
|
|
- padding:0;
|
|
|
+ html, body {
|
|
|
+ margin: 0;
|
|
|
+ padding: 0;
|
|
|
|
|
|
.login {
|
|
|
- width:100vw;
|
|
|
+ width: 100vw;
|
|
|
height: 100vh;
|
|
|
background-size: 100% 100%;
|
|
|
position: relative;
|
|
|
|
|
|
.login-content {
|
|
|
position: absolute;
|
|
|
+
|
|
|
h2 {
|
|
|
text-align: center;
|
|
|
- font-weight:bold;
|
|
|
+ font-weight: bold;
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
+
|
|
|
.el-input {
|
|
|
- width:90%;
|
|
|
+ width: 90%;
|
|
|
}
|
|
|
+
|
|
|
.login-form {
|
|
|
.login-form-button {
|
|
|
width: 100%;
|
|
|
}
|
|
|
+
|
|
|
+ .checkedBox {
|
|
|
+ margin:0 0 10px 55px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 最小化和关闭按钮
|
|
|
+ .mini {
|
|
|
+ .miniclose(30px,20px);
|
|
|
+ &:hover {
|
|
|
+ background-color: #ccc;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .close {
|
|
|
+ .miniclose(0,28px);
|
|
|
+ &:hover {
|
|
|
+ background-color: #ccc;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 带参数的混合
|
|
|
+ .miniclose(@right,@fontSize) {
|
|
|
+ position: absolute;
|
|
|
+ width: 30px;
|
|
|
+ height: 30px;
|
|
|
+ top: 0;
|
|
|
+ right:@right;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 30px;
|
|
|
+ font-size:@fontSize;
|
|
|
+ cursor:default;
|
|
|
+ font-weight: 600;
|
|
|
+ color: #000;
|
|
|
}
|
|
|
}
|
|
|
</style>
|