From 7c1a352402a09eb2e9b7594c35a59dd2bbc2a2b2 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期三, 08 十二月 2021 09:43:30 +0800
Subject: [PATCH] 登录页
---
public/images/login/OS.png | 0
public/images/login/LOGO.png | 0
public/images/login/背景图.png | 0
src/pages/index/App.vue | 532 ++++++++++++++++++++++++++++++++++++++++++----------------
4 files changed, 386 insertions(+), 146 deletions(-)
diff --git a/public/images/login/LOGO.png b/public/images/login/LOGO.png
new file mode 100644
index 0000000..5f3d0cb
--- /dev/null
+++ b/public/images/login/LOGO.png
Binary files differ
diff --git a/public/images/login/OS.png b/public/images/login/OS.png
new file mode 100644
index 0000000..b97e7e5
--- /dev/null
+++ b/public/images/login/OS.png
Binary files differ
diff --git "a/public/images/login/\350\203\214\346\231\257\345\233\276.png" "b/public/images/login/\350\203\214\346\231\257\345\233\276.png"
new file mode 100644
index 0000000..1e00181
--- /dev/null
+++ "b/public/images/login/\350\203\214\346\231\257\345\233\276.png"
Binary files differ
diff --git a/src/pages/index/App.vue b/src/pages/index/App.vue
index 2a3a431..6754bff 100644
--- a/src/pages/index/App.vue
+++ b/src/pages/index/App.vue
@@ -1,10 +1,9 @@
<template>
- <div class v-loading="vLoading" :style="`width: ${currentWidth}px;height:${currentHeight}px`">
+ <!-- <div class v-loading="vLoading" :style="`width: ${currentWidth}px;height:${currentHeight}px`">
<div class="web-site">
<a href="http://www.smartai.com" target="_blank">www.smartai.com</a>
</div>
- <!-- 鎺堟潈淇℃伅 -->
<lang-select class="lang-select"/>
<licence />
<div class="right-bg" style>
@@ -48,7 +47,6 @@
</el-form-item>
</el-form>
</div>
- <!-- <p class="gradient-text gradient-text-one">鈥斺�斺�� {{serverTitle || 'SmartAI 鈥� ReID'}} 鈥斺�斺��</p> -->
<p class="gradient-text gradient-text-one">
鈥斺��
<b>SmartAI</b> {{ $t('login.aios') }} 鈥斺��
@@ -58,51 +56,130 @@
style="letter-spacing: 1.8px;font-size:15px;"
>V1.0.0</p>
</div>
+ </div> -->
+ <div class="login">
+ <div class="title">
+ <div class="en">Smart AI</div>
+ <div class="ch">浜哄伐鏅鸿兘鎿嶄綔绯荤粺</div>
+ </div>
+
+ <div class="left_footer">
+ <img class="logo" src="/images/login/LOGO.png" alt="" />
+ <div class="web">www.smartai.com</div>
+ </div>
+
+ <div
+ class="login-form"
+ :style="{ background: backgroundColor }"
+ :class="{ empty: !user.loginName && !user.password }"
+ >
+ <img class="logo" src="/images/login/OS.png" alt="" />
+
+ <el-form
+ :model="user"
+ status-icon
+ :rules="nullRule"
+ :validate-on-rule-change="false"
+ ref="ruleForm"
+ class="demo-ruleForm"
+ >
+ <el-form-item prop="loginName">
+ <el-input
+ v-model="user.loginName"
+ :placeholder="$t('placeholder.enterUsername')"
+ >
+ <i slot="prefix" class="iconfont icon"></i>
+ </el-input>
+ </el-form-item>
+ <el-form-item prop="password">
+ <el-input
+ show-password
+ @keyup.enter.native="systemLogin()"
+ v-model="user.password"
+ autocomplete="off"
+ :placeholder="$t('placeholder.enterPassword')"
+ >
+ <i slot="prefix" class="iconfont icon"></i>
+ </el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button ref="submit" type="warning" @click="systemLogin()">{{
+ $t("button.login")
+ }}</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
</div>
</template>
<script>
-import { tologin, getLoginUserData, getServerName } from './api.ts';
-import ParticleNetwork from './ParticleNetwork'
-import Licence from '@/components/licence'
-import LangSelect from '@/components/langSelect'
+import { tologin, getLoginUserData, getServerName } from "./api.ts";
+import ParticleNetwork from "./ParticleNetwork";
+import Licence from "@/components/licence";
+import LangSelect from "@/components/langSelect";
import { getMenuListData } from "@/api/utils";
export default {
- name: 'login-pgae',
+ name: "login-pgae",
metaInfo: {
- title: '鐧诲綍椤�'
+ title: "鐧诲綍椤�",
},
components: {
- ParticleNetwork,
- Licence,
- LangSelect
+ // ParticleNetwork,
+ // Licence,
+ // LangSelect
},
computed: {
rules() {
return {
- loginName: [{ required: true, message: this.$t('placeholder.enterUsername'), trigger: 'change' } ],
- password: [{ required: true, message: this.$t('placeholder.enterPassword'), trigger: 'change' }]
- }
+ loginName: [
+ {
+ required: true,
+ message: this.$t("placeholder.enterUsername"),
+ trigger: "change",
+ },
+ ],
+ password: [
+ {
+ required: true,
+ message: this.$t("placeholder.enterPassword"),
+ trigger: "change",
+ },
+ ],
+ };
},
},
data: () => ({
serverTitle: "",
user: {
- loginName: '',
- password: '',
- rememberMe: false
+ loginName: "",
+ password: "",
+ rememberMe: false,
},
nullRule: {},
- loading: '',
+ loading: "",
vLoading: false,
currentHeight: 1057,
- currentWidth: 1920
+ currentWidth: 1920,
+ backgroundColor: "",
+ backgroundList: [
+ "#2A2344",
+ "#342344",
+ "#000000",
+ "#233044",
+ "#0B252E",
+ "#150051",
+ "#110040",
+ ],
}),
created() {
- this.getServerName()
- this.getScreenHeight()
+ this.getServerName();
+ this.getScreenHeight();
+ this.backgroundColor =
+ this.backgroundList[
+ Math.floor(Math.random() * this.backgroundList.length)
+ ];
},
mounted() {
// 鑷姩鐧诲綍鎺ュ彛
@@ -110,7 +187,7 @@
},
watch: {},
beforeDestroy() {
- window.onresize = null
+ window.onresize = null;
},
methods: {
loginRobot() {
@@ -118,7 +195,10 @@
let user = this.getQueryVariable("username");
let passwd = this.getQueryVariable("password");
if (user.length && passwd.length) {
- sessionStorage.setItem("autoLogin", JSON.stringify({ username: user, passwd: passwd }));
+ sessionStorage.setItem(
+ "autoLogin",
+ JSON.stringify({ username: user, passwd: passwd })
+ );
this.user.loginName = user;
this.user.password = passwd;
@@ -127,7 +207,7 @@
}
// 鐧婚檰瓒呮椂鍚庣殑閲嶆柊鐧婚檰
- let sessionInfo = sessionStorage.getItem('autoLogin');
+ let sessionInfo = sessionStorage.getItem("autoLogin");
if (sessionInfo) {
let authority = JSON.parse(sessionInfo);
this.user.loginName = authority.username;
@@ -136,78 +216,78 @@
}
},
systemLogin() {
- this.nullRule = this.rules
+ this.nullRule = this.rules;
this.$nextTick(() => {
- this.$refs['ruleForm'].validate(valid => {
+ this.$refs["ruleForm"].validate((valid) => {
if (valid) {
this.loading = this.$loading({
lock: true,
- text: 'Loading',
- spinner: 'el-icon-loading',
- background: 'rgba(0, 0, 0, 0.7)'
- })
- this.testLogin()
+ text: "Loading",
+ spinner: "el-icon-loading",
+ background: "rgba(0, 0, 0, 0.7)",
+ });
+ this.testLogin();
} else {
- this.nullRule = {}
+ this.nullRule = {};
}
- })
- this.nullRule = {}
- })
+ });
+ this.nullRule = {};
+ });
},
async testLogin() {
// location.assign("/view/desktop/")
tologin({ username: this.user.loginName, password: this.user.password })
- .then(json => {
+ .then((json) => {
const loginedInfo = {
- access_token: json.token_type + ' ' + json.access_token,
- refresh_token: json.refresh_token
- }
- sessionStorage.setItem('expires_in', json.expires_in)
- sessionStorage.setItem('loginedInfo', JSON.stringify(loginedInfo))
- this.loading.close()
- this.getLoginUserData()
+ access_token: json.token_type + " " + json.access_token,
+ refresh_token: json.refresh_token,
+ };
+ sessionStorage.setItem("expires_in", json.expires_in);
+ sessionStorage.setItem("loginedInfo", JSON.stringify(loginedInfo));
+ this.loading.close();
+ this.getLoginUserData();
})
- .catch(err => {
- this.loading.close()
+ .catch((err) => {
+ this.loading.close();
this.$notify({
- title: '鎻愮ず',
- type: 'error',
- message: err.msg
- })
- this.$refs.pwd.focus()
- })
+ title: "鎻愮ず",
+ type: "error",
+ message: err.msg,
+ });
+ this.$refs.pwd.focus();
+ });
},
async getLoginUserData() {
- let res = await getLoginUserData()
+ let res = await getLoginUserData();
if (res.success) {
- sessionStorage.setItem('userInfo', JSON.stringify(res.data))
- this.$notify.success("鐧诲綍鎴愬姛锛�")
+ sessionStorage.setItem("userInfo", JSON.stringify(res.data));
+ this.$notify.success("鐧诲綍鎴愬姛锛�");
// 鑾峰彇鏉冮檺
- await this.getMenuList()
- location.assign("/view/desktop/")
- return res.data
+ await this.getMenuList();
+ location.assign("/view/desktop/");
+ return res.data;
} else {
- this.$notify.error("鐧诲綍澶辫触锛�")
+ this.$notify.error("鐧诲綍澶辫触锛�");
}
},
getScreenHeight() {
- this.currentHeight = document.documentElement.clientHeight
- this.currentWidth = document.documentElement.clientWidth
+ this.currentHeight = document.documentElement.clientHeight;
+ this.currentWidth = document.documentElement.clientWidth;
window.onresize = () => {
- this.currentHeight = document.documentElement.clientHeight
- this.currentWidth = document.documentElement.clientWidth
- this.$forceUpdate()
- }
+ this.currentHeight = document.documentElement.clientHeight;
+ this.currentWidth = document.documentElement.clientWidth;
+ this.$forceUpdate();
+ };
},
async getServerName() {
- let res = await getServerName()
+ let res = await getServerName();
if (res && res.success) {
- this.serverTitle = res.data.serverName
+ this.serverTitle = res.data.serverName;
window.document.title = res.data.serverName
? res.data.serverName
- : 'SmartAI'
- sessionStorage.setItem('title', res.data.serverName)
+ : "SmartAI";
+ sessionStorage.setItem("title", res.data.serverName);
}
},
async getMenuList() {
@@ -218,12 +298,15 @@
if (results && results.length && this.$route.query.is_login) {
this.$router.replace(results[0].url);
}
- sessionStorage.setItem("buttonAuthoritys", "," + buttonAuthoritys + ",");
+ sessionStorage.setItem(
+ "buttonAuthoritys",
+ "," + buttonAuthoritys + ","
+ );
sessionStorage.setItem("menuInfo", JSON.stringify(results));
} else {
this.$toast({
type: "error",
- message: "鑿滃崟鑾峰彇澶辫触"
+ message: "鑿滃崟鑾峰彇澶辫触",
});
}
},
@@ -232,93 +315,250 @@
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
- if (pair[0] == variable) { return pair[1]; }
+ if (pair[0] == variable) {
+ return pair[1];
+ }
}
- return (false);
- }
+ return false;
+ },
},
-}
+};
</script>
<style lang="scss">
-.right-bg {
- position: fixed;
- top: 0;
- left: 0;
- background-image: url("/images/login-net.png");
-
- width: 100%;
+.login {
height: 100%;
- min-width: 1000px;
- z-index: -10;
- zoom: 1;
- background-color: #fff;
- background-repeat: no-repeat;
- background-size: cover;
- -webkit-background-size: cover;
- -o-background-size: cover;
- background-position: center 0;
-}
-.web-site {
- position: absolute;
- top: 55px;
- left: 41px;
- font-family: PingFangSC-Medium;
- font-size: 20px;
- color: #6170e1;
- letter-spacing: 6.15px;
-}
-.lang-select {
- float: right;
- color: white !important;
- font-size: 14px;
- margin: 13px;
- cursor: pointer;
-}
-.left-bg {
- position: absolute;
- top: 29%;
- right: 18%;
- width: 390px;
- height: 426px;
- background: rgba(146, 208, 255, 0.23);
- border-radius: 4px;
- text-align: center;
- .login-logo {
- margin-top: -53px;
- }
+ position: relative;
+ background-image: url("/images/login/鑳屾櫙鍥�.png");
- .login-com {
- font-family: PingFangSC-Medium;
- font-size: 22px;
- color: #ffffff;
- letter-spacing: 0.44px;
- margin: 15px;
- }
- .login-form {
- margin: 40px 10px;
- }
- .gradient-text {
- line-height: 36px;
- font-size: 17px;
- font-family: -webkit-pictograph;
- font-weight: bolder;
- position: relative;
- b {
- font-size: 20px;
+ .title {
+ position: absolute;
+ top: 345px;
+ left: 301px;
+ color: #fff;
+ text-align: center;
+
+ .en {
+ font-size: 120px;
+ }
+
+ .ch {
+ font-size: 48px;
+ letter-spacing: 9px;
}
}
- .gradient-text-one {
- background-image: linear-gradient(to right, #51feff 5%, #ff8725 100%);
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
+
+ .left_footer {
+ position: absolute;
+ display: flex;
+ justify-content: start;
+ align-items: center;
+ left: 358px;
+ bottom: 40px;
+
+ .logo {
+ width: 136px;
+ margin-right: 30px;
+ }
+
+ .web {
+ font-size: 24px;
+ font-weight: 700;
+ color: rgba(255, 255, 255, 0.7);
+ }
}
- .el-input__prefix {
- left: 8px;
+ .login-form {
+ position: absolute;
+ width: 780px;
+ height: 1000px;
+ right: 40px;
+ top: 40px;
+ padding: 0 90px;
+ box-sizing: border-box;
+
+ background: #2a2344;
+ opacity: 0.95;
+ box-shadow: -4px 0px 10px rgba(0, 0, 0, 0.25);
+ border-radius: 56px;
+
+ .logo {
+ margin-top: 100px;
+ margin-bottom: 16px;
+ }
+
+ .el-form-item {
+ background: rgba(0, 0, 0, 0);
+ }
+
+ .el-form-item:nth-child(2) {
+ margin-top: 60px;
+ margin-bottom: 80px;
+ }
+
+ .el-button {
+ width: 600px;
+ height: 60px;
+ background: #4e94ff;
+ border-radius: 30px;
+ border: none;
+ }
+
+ .el-input {
+ width: 100%;
+ background: rgba(0, 0, 0, 0);
+ }
+
+ input {
+ width: 100%;
+ height: 56px;
+ background: rgba(255, 255, 255, 0.1) !important;
+ border: 1px solid #4e94ff;
+ box-sizing: border-box;
+ border-radius: 28px;
+ color: #fff;
+ caret-color: #fff; //鍏夋爣棰滆壊
+ padding-left: 100px;
+ padding-right: 50px;
+ font-weight: 700;
+ }
+
+ input:-webkit-autofill,
+ textarea:-webkit-autofill,
+ select:-webkit-autofill {
+ -webkit-text-fill-color: #ededed !important;
+ -webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
+ background-color: transparent;
+ background-image: none;
+ transition: background-color 50000s ease-in-out 0s; //鑳屾櫙鑹查�忔槑 鐢熸晥鏃堕暱 杩囨浮鏁堟灉 鍚敤鏃跺欢杩熺殑鏃堕棿
+ }
+
+ .el-form-item__error {
+ top: 110%;
+ left: 80px;
+ }
+
+ .icon {
+ font-size: 32px;
+ color: rgb(80, 151, 255);
+ }
+
+ .el-input__prefix {
+ padding: 0 20px;
+ height: 40px;
+ left: 5px;
+ top: 8px;
+ border-right: 1px solid #4e94ff;
+ }
+
+ .el-input__suffix {
+ right: 20px;
+ }
+
+ .el-icon-circle-close {
+ display: none;
+ }
}
- .el-form-item__error {
- left: 54px;
+ .login-form.empty {
+ input {
+ border-color: #999;
+ color: #bbb;
+ }
+
+ .el-button {
+ background-color: #999;
+ color: #fff;
+ }
+
+ .icon {
+ color: #fff;
+ }
+
+ .el-input__prefix {
+ border-color: #d4d6d9;
+ }
}
}
+
+// .right-bg {
+// position: fixed;
+// top: 0;
+// left: 0;
+// background-image: url("/images/login-net.png");
+
+// width: 100%;
+// height: 100%;
+// min-width: 1000px;
+// z-index: -10;
+// zoom: 1;
+// background-color: #fff;
+// background-repeat: no-repeat;
+// background-size: cover;
+// -webkit-background-size: cover;
+// -o-background-size: cover;
+// background-position: center 0;
+// }
+// .web-site {
+// position: absolute;
+// top: 55px;
+// left: 41px;
+// font-family: PingFangSC-Medium;
+// font-size: 20px;
+// color: #6170e1;
+// letter-spacing: 6.15px;
+// }
+// .lang-select {
+// float: right;
+// color: white !important;
+// font-size: 14px;
+// margin: 13px;
+// cursor: pointer;
+// }
+// .left-bg {
+// position: absolute;
+// top: 29%;
+// right: 18%;
+// width: 390px;
+// height: 426px;
+// background: rgba(146, 208, 255, 0.23);
+// border-radius: 4px;
+// text-align: center;
+// .login-logo {
+// margin-top: -53px;
+// }
+
+// .login-com {
+// font-family: PingFangSC-Medium;
+// font-size: 22px;
+// color: #ffffff;
+// letter-spacing: 0.44px;
+// margin: 15px;
+// }
+// .login-form {
+// margin: 40px 10px;
+// }
+// .gradient-text {
+// line-height: 36px;
+// font-size: 17px;
+// font-family: -webkit-pictograph;
+// font-weight: bolder;
+// position: relative;
+// b {
+// font-size: 20px;
+// }
+// }
+// .gradient-text-one {
+// background-image: linear-gradient(to right, #51feff 5%, #ff8725 100%);
+// -webkit-background-clip: text;
+// -webkit-text-fill-color: transparent;
+// }
+
+// .el-input__prefix {
+// left: 8px;
+// }
+
+// .el-form-item__error {
+// left: 54px;
+// }
+// }
</style>
--
Gitblit v1.8.0