|
|
@@ -1,27 +1,56 @@
|
|
|
<template>
|
|
|
- <div class="login-view" >
|
|
|
- <el-form :model="loginForm" status-icon :rules="rules" ref="loginForm" label-width="60px" class="web-ruleForm" @keyup.enter.native="submitForm('loginForm')">
|
|
|
- <div class="login-brand">欢迎登陆</div>
|
|
|
- <el-form-item label="终端" prop="userName" v-show="false">
|
|
|
- <el-input type="terminal" v-model="loginForm.terminal" autocomplete="off"></el-input>
|
|
|
-
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="用户名" prop="userName">
|
|
|
- <el-input type="userName" v-model="loginForm.userName" autocomplete="off"></el-input>
|
|
|
+ <div class="login-view">
|
|
|
+ <div class="login-intro">
|
|
|
+ <!--<img src="@/assets/image/login.gif"/>-->
|
|
|
+ <div class="login-title"></div>
|
|
|
+ <div>
|
|
|
+ <h3>盒子IM 2.0版本正式发布:</h3>
|
|
|
+ <ul>
|
|
|
+ <li>发布uniapp移动版本,支持移动端和web端同时在线,多端消息同步</li>
|
|
|
+ <li>目前移动端仅兼容h5和微信小程序,后续会继续兼容更多终端类型</li>
|
|
|
+ <li>页面风格优化:表情包更新、自动生成文字头像等</li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <h3>项目依旧完全开源,可内网部署。如果项目对您有帮助,请帮忙点个star:</h3>
|
|
|
+ </div>
|
|
|
+ <div class="login-icons">
|
|
|
+ <a class="login-icon">
|
|
|
+ <img src="https://img.shields.io/badge/license-MIT-red" />
|
|
|
+ </a>
|
|
|
+ <a class="login-icon" href="https://gitee.com/bluexsx/box-im" target="_blank">
|
|
|
+ <img src="https://gitee.com/bluexsx/box-im/badge/star.svg" />
|
|
|
+ </a>
|
|
|
+ <a class="login-icon" href="https://gitee.com/bluexsx/box-im" target="_blank">
|
|
|
+ <img src="https://img.shields.io/github/stars/bluexsx/box-im.svg?style=flat&logo=GitHub" />
|
|
|
+ </a>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <el-form class="login-form" :model="loginForm" status-icon :rules="rules" ref="loginForm" label-width="60px"
|
|
|
+ @keyup.enter.native="submitForm('loginForm')">
|
|
|
+ <div class="login-brand">登陆盒子IM</div>
|
|
|
+ <el-form-item label="终端" prop="userName" v-show="false">
|
|
|
+ <el-input type="terminal" v-model="loginForm.terminal" autocomplete="off"></el-input>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="用户名" prop="userName">
|
|
|
+ <el-input type="userName" v-model="loginForm.userName" autocomplete="off"></el-input>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密码" prop="password">
|
|
|
+ <el-input type="password" v-model="loginForm.password" autocomplete="off"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="submitForm('loginForm')">登陆</el-button>
|
|
|
+ <el-button @click="resetForm('loginForm')">清空</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <div class="register">
|
|
|
+ <router-link to="/register">没有账号,前往注册</router-link>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="密码" prop="password">
|
|
|
- <el-input type="password" v-model="loginForm.password" autocomplete="off"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="submitForm('loginForm')">登陆</el-button>
|
|
|
- <el-button @click="resetForm('loginForm')">清空</el-button>
|
|
|
- </el-form-item>
|
|
|
- <div class="register">
|
|
|
- <router-link to="/register">没有账号,前往注册</router-link>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
-
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -71,11 +100,11 @@
|
|
|
})
|
|
|
.then((data) => {
|
|
|
// 保存密码到cookie(不安全)
|
|
|
- this.setCookie('username',this.loginForm.userName);
|
|
|
- this.setCookie('password',this.loginForm.password);
|
|
|
+ this.setCookie('username', this.loginForm.userName);
|
|
|
+ this.setCookie('password', this.loginForm.password);
|
|
|
// 保存token
|
|
|
- sessionStorage.setItem("accessToken",data.accessToken);
|
|
|
- sessionStorage.setItem("refreshToken",data.refreshToken);
|
|
|
+ sessionStorage.setItem("accessToken", data.accessToken);
|
|
|
+ sessionStorage.setItem("refreshToken", data.refreshToken);
|
|
|
this.$message.success("登陆成功");
|
|
|
this.$router.push("/home/chat");
|
|
|
})
|
|
|
@@ -90,26 +119,27 @@
|
|
|
getCookie(name) {
|
|
|
let reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
|
|
|
let arr = document.cookie.match(reg)
|
|
|
- if (arr){
|
|
|
- return unescape(arr[2]);
|
|
|
+ if (arr) {
|
|
|
+ return unescape(arr[2]);
|
|
|
}
|
|
|
- return '';
|
|
|
- },
|
|
|
- // 设置cookie,增加到vue实例方便全局调用
|
|
|
- setCookie (name, value, expiredays) {
|
|
|
- var exdate = new Date();
|
|
|
- exdate.setDate(exdate.getDate() + expiredays);
|
|
|
- document.cookie = name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
|
|
|
- },
|
|
|
- // 删除cookie
|
|
|
- delCookie (name) {
|
|
|
- var exp = new Date();
|
|
|
- exp.setTime(exp.getTime() - 1);
|
|
|
- var cval = this.getCookie(name);
|
|
|
- if (cval != null){
|
|
|
+ return '';
|
|
|
+ },
|
|
|
+ // 设置cookie,增加到vue实例方便全局调用
|
|
|
+ setCookie(name, value, expiredays) {
|
|
|
+ var exdate = new Date();
|
|
|
+ exdate.setDate(exdate.getDate() + expiredays);
|
|
|
+ document.cookie = name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate
|
|
|
+ .toGMTString());
|
|
|
+ },
|
|
|
+ // 删除cookie
|
|
|
+ delCookie(name) {
|
|
|
+ var exp = new Date();
|
|
|
+ exp.setTime(exp.getTime() - 1);
|
|
|
+ var cval = this.getCookie(name);
|
|
|
+ if (cval != null) {
|
|
|
document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
},
|
|
|
mounted() {
|
|
|
this.loginForm.userName = this.getCookie("username");
|
|
|
@@ -124,21 +154,46 @@
|
|
|
position: relative;
|
|
|
display: flex;
|
|
|
justify-content: space-around;
|
|
|
+ align-items: center;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
- background: linear-gradient(#65807a, #182e3c);
|
|
|
+ background: rgb(232, 242, 255);
|
|
|
background-size: cover;
|
|
|
-
|
|
|
- .web-ruleForm {
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 10%;
|
|
|
+
|
|
|
+ .login-intro {
|
|
|
+ flex: 1;
|
|
|
+ height: 300px;
|
|
|
+ padding: 40px;
|
|
|
+ max-width: 600px;
|
|
|
+ .login-title {
|
|
|
+ text-align: center;
|
|
|
+ font-weight: 600;
|
|
|
+ font-size: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .login-icons {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .login-icon {
|
|
|
+ padding-left: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .login-form {
|
|
|
height: 340px;
|
|
|
- padding: 20px;
|
|
|
- margin-top: 150px ;
|
|
|
- background: rgba(255,255,255,.75);
|
|
|
- box-shadow: 0px 0px 1px #ccc;
|
|
|
- border-radius: 5px;
|
|
|
+ width: 400px;
|
|
|
+ padding: 30px;
|
|
|
+ background: white;
|
|
|
+ opacity: 0.9;
|
|
|
+ box-shadow: 0px 0px 1px #ccc;
|
|
|
+ border-radius: 3%;
|
|
|
overflow: hidden;
|
|
|
-
|
|
|
-
|
|
|
+ border: 1px solid #ccc;
|
|
|
+
|
|
|
.login-brand {
|
|
|
line-height: 50px;
|
|
|
margin: 30px 0 40px 0;
|
|
|
@@ -148,7 +203,7 @@
|
|
|
text-transform: uppercase;
|
|
|
text-align: center;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
.register {
|
|
|
display: flex;
|
|
|
flex-direction: row-reverse;
|
|
|
@@ -158,6 +213,4 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-</style>
|
|
|
+</style>
|