From 99d349889a704692e5ef81ca8e077a33121eaece Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期二, 05 七月 2022 10:30:13 +0800
Subject: [PATCH] '更新'
---
src/views/loginPage/loginPage.vue | 237 +++++++-------
src/assets/loginPage/login-bg.jpg | 0
src/assets/menu/bg_home1.jpg | 0
src/views/loginPage/component/accountLogin.vue | 320 ++++++++++----------
src/views/homeMenu/homeMenu.vue | 396 ++++++++++++------------
src/assets/loginPage/login-bg.png | 0
6 files changed, 477 insertions(+), 476 deletions(-)
diff --git a/src/assets/loginPage/login-bg.jpg b/src/assets/loginPage/login-bg.jpg
new file mode 100644
index 0000000..6427cb6
--- /dev/null
+++ b/src/assets/loginPage/login-bg.jpg
Binary files differ
diff --git a/src/assets/loginPage/login-bg.png b/src/assets/loginPage/login-bg.png
new file mode 100644
index 0000000..71fd539
--- /dev/null
+++ b/src/assets/loginPage/login-bg.png
Binary files differ
diff --git a/src/assets/menu/bg_home1.jpg b/src/assets/menu/bg_home1.jpg
new file mode 100644
index 0000000..b4389fb
--- /dev/null
+++ b/src/assets/menu/bg_home1.jpg
Binary files differ
diff --git a/src/views/homeMenu/homeMenu.vue b/src/views/homeMenu/homeMenu.vue
index 79c6862..2dea8a3 100644
--- a/src/views/homeMenu/homeMenu.vue
+++ b/src/views/homeMenu/homeMenu.vue
@@ -3,9 +3,9 @@
<div class="topPanel">
<div class="topPanelCont">
<div class="topTit">
- <div>新疆国泰新华安</div>
+ <div>新疆国泰新华</div>
<span></span>
- <div>全风险预警监测系统</div>
+ <div>安全风险预警监测系统</div>
</div>
<div class="userInfo">
<div class="avator">
@@ -20,7 +20,7 @@
<div class="menuGrid">
<div class="gridCont">
- <el-row :gutter="16">
+ <el-row :gutter="20">
<el-col :span="6"><div class="grid-content" @click="renderMenu('2')"><div class="itemTit">双重预防系统</div><img class="iconImg" src="../../assets/menu/icon4.png"><img class="bgImg" src="../../assets/menu/card4.png"></div></el-col>
<el-col :span="6"><div class="grid-content" @click="renderMenu('3')"><div class="itemTit">特殊作业系统</div><img class="iconImg" src="../../assets/menu/icon7.png"><img class="bgImg" src="../../assets/menu/card7.png"></div></el-col>
<el-col :span="6"><div class="grid-content" @click="renderMenu('4')"><div class="itemTit">智能巡检系统</div><img class="iconImg" src="../../assets/menu/icon8.png"><img class="bgImg" src="../../assets/menu/card8.png"></div></el-col>
@@ -34,13 +34,13 @@
</div>
</el-col>
</el-row>
- <el-row :gutter="16">
+ <el-row :gutter="20">
<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('6')"><div class="itemTit">应急管理系统</div><img class="iconImg" src="../../assets/menu/icon5.png"><img class="bgImg" src="../../assets/menu/card5.png"></div></el-col>
<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('7')"><div class="itemTit">目标责任管理系统</div><img class="iconImg" src="../../assets/menu/icon2.png"><img class="bgImg" src="../../assets/menu/card2.png"></div></el-col>
<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('8')"><div class="itemTit">事故管理系统</div><img class="iconImg" src="../../assets/menu/icon6.png"><img class="bgImg" src="../../assets/menu/card6.png"></div></el-col>
<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('9')"><div class="itemTit">设备综合管控系统</div><img class="iconImg" src="../../assets/menu/icon9.png"><img class="bgImg" src="../../assets/menu/card9.png"></div></el-col>
</el-row>
- <el-row :gutter="16">
+ <el-row :gutter="20">
<el-col :span="6"><div class="grid-content grid-content-3" @click="renderMenu('10')"><div class="itemTit">安全知识图谱系统</div><img class="iconImg" src="../../assets/menu/icon3.png"><img class="bgImg" src="../../assets/menu/card3.png"></div></el-col>
<el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('11')"><div class="itemTit">危险化学品全生命周期安全<br>管理系统</div><img class="iconImg" src="../../assets/menu/icon10.png"><img class="bgImg" src="../../assets/menu/card10.png"></div></el-col>
<el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('1')"><div class="itemTit">基础数据权限管理系统</div><img class="iconImg" src="../../assets/menu/icon11.png"><img class="bgImg" src="../../assets/menu/card11.png"></div></el-col>
@@ -51,227 +51,227 @@
</template>
<script lang="ts">
-import { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';
-import { storeToRefs } from 'pinia';
-import { useThemeConfig } from '/@/stores/themeConfig';
-import logoMini from '/@/assets/logo-mini.svg';
-import loginIconTwo from '/@/assets/login-icon-two.svg';
-import { NextLoading } from '/@/utils/loading';
-import {Session} from "/@/utils/storage";
-import {useRoute, useRouter} from "vue-router";
-import {initBackEndControlRoutes} from "/@/router/backEnd";
-import {useUserInfo} from "/@/stores/userInfo";
+ import { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';
+ import { storeToRefs } from 'pinia';
+ import { useThemeConfig } from '/@/stores/themeConfig';
+ import logoMini from '/@/assets/logo-mini.svg';
+ import loginIconTwo from '/@/assets/login-icon-two.svg';
+ import { NextLoading } from '/@/utils/loading';
+ import {Session} from "/@/utils/storage";
+ import {useRoute, useRouter} from "vue-router";
+ import {initBackEndControlRoutes} from "/@/router/backEnd";
+ import {useUserInfo} from "/@/stores/userInfo";
-// 定义接口来定义对象的类型
-interface LoginState {
- tabsActiveName: string;
- isScan: boolean;
-}
+ // 定义接口来定义对象的类型
+ interface LoginState {
+ tabsActiveName: string;
+ isScan: boolean;
+ }
-export default defineComponent({
- name: 'loginIndex',
- components: {},
- setup() {
- const route = useRoute();
- const router = useRouter();
- const userInfo = useUserInfo()
- const { userInfos } = storeToRefs(userInfo);
- const storesThemeConfig = useThemeConfig();
- const { themeConfig } = storeToRefs(storesThemeConfig);
- const state = reactive<LoginState>({
- tabsActiveName: 'account',
- isScan: false,
- });
- // 获取布局配置信息
- const getThemeConfig = computed(() => {
- return themeConfig.value;
- });
- // 下拉菜单点击时
- const onLoginOut = () => {
- console.log('退出登录')
- };
- const renderMenu = async (value: string) => {
- Session.set('projectId',value)
- userInfos.value.projectId = value
- await initBackEndControlRoutes();
- router.push('./')
- };
- //点击进入特殊作业
- const toSpecialWorkSys = () => {
- router.push('/workReservation');
- };
- // 页面加载时
- onMounted(() => {
- NextLoading.done();
- // loginBg();
- // loginApp()
- });
- return {
- logoMini,
- loginIconTwo,
- getThemeConfig,
- renderMenu,
- toSpecialWorkSys,
- ...toRefs(state),
- };
- },
-});
+ export default defineComponent({
+ name: 'loginIndex',
+ components: {},
+ setup() {
+ const route = useRoute();
+ const router = useRouter();
+ const userInfo = useUserInfo()
+ const { userInfos } = storeToRefs(userInfo);
+ const storesThemeConfig = useThemeConfig();
+ const { themeConfig } = storeToRefs(storesThemeConfig);
+ const state = reactive<LoginState>({
+ tabsActiveName: 'account',
+ isScan: false,
+ });
+ // 获取布局配置信息
+ const getThemeConfig = computed(() => {
+ return themeConfig.value;
+ });
+ // 下拉菜单点击时
+ const onLoginOut = () => {
+ console.log('退出登录')
+ };
+ const renderMenu = async (value: string) => {
+ Session.set('projectId',value)
+ userInfos.value.projectId = value
+ await initBackEndControlRoutes();
+ router.push('/home')
+ };
+ //点击进入特殊作业
+ const toSpecialWorkSys = () => {
+ router.push('/layoutPage');
+ };
+ // 页面加载时
+ onMounted(() => {
+ NextLoading.done();
+ // loginBg();
+ // loginApp()
+ });
+ return {
+ logoMini,
+ loginIconTwo,
+ getThemeConfig,
+ renderMenu,
+ toSpecialWorkSys,
+ ...toRefs(state),
+ };
+ },
+ });
</script>
<style scoped lang="scss">
-.login-container {
- width: 100%;
- height: 100%;
- position: relative;
- background: url("../../assets/menu/bg_home.jpg") no-repeat center;
- .topPanel{
- position: absolute;
+ .login-container {
width: 100%;
- top: -100px;
- left: 0;
- height:100px;
- background: #fff;
- display: flex;
- justify-content: center;
- box-shadow: 0 8px 32px rgba(0,0,0,.1);
- animation: showDown .6s 1 ease forwards;
-
- @keyframes showDown {
- 100%{
- position: absolute;
- top: 0;
- }
- }
- .topPanelCont{
- width: 1200px;
- height: 100%;
+ height: 100%;
+ position: relative;
+ background: url("../../assets/menu/bg_home1.jpg") no-repeat center;
+ .topPanel{
+ position: absolute;
+ width: 100%;
+ top: -100px;
+ left: 0;
+ height:100px;
+ background: #fff;
display: flex;
- align-items: center;
- justify-content: space-between;
+ justify-content: center;
+ box-shadow: 0 8px 32px rgba(0,0,0,.1);
+ animation: showDown .6s 1 ease forwards;
- .topTit{
- font-size: 24px;
- font-weight: bold;
- display: flex;
- align-items: center;
- color: #333;
- line-height: 28px;
-
- &>div:last-of-type{
- color: #006DF5;
- }
-
- span{
- width: 1px;
- height: 28px;
- background: #999;
- margin: 0 15px;
+ @keyframes showDown {
+ 100%{
+ position: absolute;
+ top: 0;
}
}
-
- .userInfo{
+ .topPanelCont{
+ width: 1200px;
+ height: 100%;
display: flex;
align-items: center;
+ justify-content: space-between;
- .avator{
+ .topTit{
+ font-size: 24px;
+ font-weight: bold;
display: flex;
- justify-content: right;
-
- img{
- width: 20px;
- height: 20px;
- border-radius: 10px;
- }
- div{
- font-size: 15px;
- color: #333333;
- line-height: 20px;
- margin-left: 6px;
- }
- }
- span{
- width: 1px;
- height: 20px;
- background: #999;
- margin: 0 15px;
- }
- .loginOut{
- font-size: 15px;
+ align-items: center;
color: #333;
- line-height: 20px;
- cursor: pointer;
+ line-height: 28px;
- &:hover{
+ &>div:last-of-type{
color: #006DF5;
}
+
+ span{
+ width: 1px;
+ height: 28px;
+ background: #999;
+ margin: 0 15px;
+ }
+ }
+
+ .userInfo{
+ display: flex;
+ align-items: center;
+
+ .avator{
+ display: flex;
+ justify-content: right;
+
+ img{
+ width: 20px;
+ height: 20px;
+ border-radius: 10px;
+ }
+ div{
+ font-size: 15px;
+ color: #333333;
+ line-height: 20px;
+ margin-left: 6px;
+ }
+ }
+ span{
+ width: 1px;
+ height: 20px;
+ background: #999;
+ margin: 0 15px;
+ }
+ .loginOut{
+ font-size: 15px;
+ color: #333;
+ line-height: 20px;
+ cursor: pointer;
+
+ &:hover{
+ color: #006DF5;
+ }
+ }
}
}
}
- }
- .menuGrid{
- width: 100%;
- position: absolute;
- top: 150px;
- display: flex;
- justify-content: center;
- .gridCont{
- width: 1200px;
- .el-row {
- margin-bottom: 16px;
- }
- .el-row:last-child {
- margin-bottom: 0;
- }
- .el-col {
- border-radius: 8px;
- }
-
- .grid-content {
- border-radius: 8px;
- height: 234px;
- padding: 32px;
- position: relative;
- background-image: linear-gradient(135deg,#00C0F5,#147AEA);
- overflow: hidden;
- cursor: pointer;
- transition: .3s;
- border: none;
-
- &:hover{
- box-shadow: 0 8px 32px rgba(20,97,234,.4);
+ .menuGrid{
+ width: 100%;
+ position: absolute;
+ top: 150px;
+ display: flex;
+ justify-content: center;
+ .gridCont{
+ width: 1200px;
+ .el-row {
+ margin-bottom: 20px;
+ }
+ .el-row:last-child {
+ margin-bottom: 0;
+ }
+ .el-col {
+ border-radius: 8px;
}
- .itemTit{
- font-size: 24px;
- line-height: 36px;
- height: 40%;
- font-family: "PingFang SC";
- font-weight: lighter;
- color: #fff;
- margin-bottom: 25px;
- }
- .iconImg{
- width: 80px;
- height: 80px;
+ .grid-content {
+ border-radius: 10px;
+ height: 234px;
+ padding: 32px;
+ position: relative;
+ background-image: linear-gradient(135deg,#00C0F5,#44b1ff);
+ overflow: hidden;
+ cursor: pointer;
+ transition: .3s;
+ border: none;
+
+ &:hover{
+ box-shadow: 0 8px 32px rgba(20,97,234,.4);
+ }
+
+ .itemTit{
+ font-size: 24px;
+ line-height: 36px;
+ height: 40%;
+ font-family: "PingFang SC";
+ font-weight: lighter;
+ color: #fff;
+ margin-bottom: 25px;
+ }
+ .iconImg{
+ width: 80px;
+ height: 80px;
+ }
+
+ .bgImg{
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
}
- .bgImg{
- position: absolute;
- right: 0;
- bottom: 0;
- }
+ /*.grid-content-2{*/
+ /* background-image: linear-gradient(135deg,#0098F5,#1461EA);*/
+ /*}*/
+
+ /*.grid-content-3{*/
+ /* background-image: linear-gradient(135deg,#006DF5,#1450EA);*/
+ /*}*/
}
- .grid-content-2{
- background-image: linear-gradient(135deg,#0098F5,#1461EA);
- }
-
- .grid-content-3{
- background-image: linear-gradient(135deg,#006DF5,#1450EA);
- }
}
-
}
-}
</style>
diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index d477fa1..c8a4242 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -9,20 +9,20 @@
</el-form-item>
<el-form-item class="login-animation2">
<el-input
- :type="isShowPassword ? 'text' : 'password'"
- :placeholder="$t('message.account.accountPlaceholder2')"
- v-model="ruleForm.password"
- autocomplete="off"
- size="large"
+ :type="isShowPassword ? 'text' : 'password'"
+ :placeholder="$t('message.account.accountPlaceholder2')"
+ v-model="ruleForm.password"
+ autocomplete="off"
+ size="large"
>
<template #prefix>
<el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_password.png" style="width: 24px;height: 24px"></el-icon>
</template>
<template #suffix>
<i
- class="iconfont el-input__icon login-content-password"
- :class="isShowPassword ? 'icon-yincangmima' : 'icon-xianshimima'"
- @click="isShowPassword = !isShowPassword"
+ class="iconfont el-input__icon login-content-password"
+ :class="isShowPassword ? 'icon-yincangmima' : 'icon-xianshimima'"
+ @click="isShowPassword = !isShowPassword"
>
</i>
</template>
@@ -41,167 +41,167 @@
</template>
<script lang="ts">
-import { toRefs, reactive, defineComponent, computed } from 'vue';
-import { useRoute, useRouter } from 'vue-router';
-import { ElMessage } from 'element-plus';
-import { useI18n } from 'vue-i18n';
-import Cookies from 'js-cookie';
-import { storeToRefs } from 'pinia';
-import { useThemeConfig } from '/@/stores/themeConfig';
-import { initFrontEndControlRoutes } from '/@/router/frontEnd';
-import { initBackEndControlRoutes } from '/@/router/backEnd';
-import { Session } from '/@/utils/storage';
-import { formatAxis } from '/@/utils/formatTime';
-import { NextLoading } from '/@/utils/loading';
-import { useLoginApi } from '/@/api/login';
-import {useUserInfo} from "/@/stores/userInfo";
+ import { toRefs, reactive, defineComponent, computed } from 'vue';
+ import { useRoute, useRouter } from 'vue-router';
+ import { ElMessage } from 'element-plus';
+ import { useI18n } from 'vue-i18n';
+ import Cookies from 'js-cookie';
+ import { storeToRefs } from 'pinia';
+ import { useThemeConfig } from '/@/stores/themeConfig';
+ import { initFrontEndControlRoutes } from '/@/router/frontEnd';
+ import { initBackEndControlRoutes } from '/@/router/backEnd';
+ import { Session } from '/@/utils/storage';
+ import { formatAxis } from '/@/utils/formatTime';
+ import { NextLoading } from '/@/utils/loading';
+ import { useLoginApi } from '/@/api/login';
+ import {useUserInfo} from "/@/stores/userInfo";
-export default defineComponent({
- name: 'accountLogin',
- setup() {
- const { t } = useI18n();
- const userInfo = useUserInfo()
- const route = useRoute();
- const router = useRouter();
- const state = reactive({
- isShowPassword: false,
- ruleForm: {
- username: 'admin',
- password: '123456',
- },
- loading: {
- signIn: false,
- },
- });
- // 时间获取
- const currentTime = computed(() => {
- return formatAxis(new Date());
- });
- // 登录
- const onSignIn = async () => {
- state.loading.signIn = true;
- // 存储 token 到浏览器缓存
- let res = await useLoginApi().signIn(state.ruleForm)
- if(res.data.code === '200'){
- userInfo.setUserInfos(res.data.data)
- Session.set('token', res.data.data.accessToken);
- Session.set('projectId','');
- Session.set('uid',res.data.data.uid);
- signInSuccess();
- }else{
- state.loading.signIn = false
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- // Session.set('token', Math.random().toString(36).substr(0));
- // // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
- // Cookies.set('userName', state.ruleForm.username);
- // if (!themeConfig.value.isRequestRoutes) {
- // // 前端控制路由,2、请注意执行顺序
- // await initFrontEndControlRoutes();
- // signInSuccess();
- // } else {
- // // 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
- // // 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path "/"
- // await initBackEndControlRoutes();
- // // 执行完 initBackEndControlRoutes,再执行 signInSuccess
- // signInSuccess();
- // }
- };
- // 登录成功后的跳转
- const signInSuccess = async () => {
- // 初始化登录成功时间问候语
- let currentTimeInfo = currentTime.value;
- // 登录成功,跳到转首页
- // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
- if (route.query?.redirect) {
- router.push('/homeMenu');
- // router.push({
- // path: <string>route.query?.redirect,
- // query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
- // });
- } else {
- router.push('/loginPage');
- }
- state.loading.signIn = true;
- const signInText = t('message.signInText');
- ElMessage.success(`${currentTimeInfo},${signInText}`);
- // 登录成功提示
- // 关闭 loading
- // 添加 loading,防止第一次进入界面时出现短暂空白
- // NextLoading.start();
- };
- return {
- onSignIn,
- ...toRefs(state),
- };
- },
-});
+ export default defineComponent({
+ name: 'accountLogin',
+ setup() {
+ const { t } = useI18n();
+ const userInfo = useUserInfo()
+ const route = useRoute();
+ const router = useRouter();
+ const state = reactive({
+ isShowPassword: false,
+ ruleForm: {
+ username: 'admin',
+ password: '123456',
+ },
+ loading: {
+ signIn: false,
+ },
+ });
+ // 时间获取
+ const currentTime = computed(() => {
+ return formatAxis(new Date());
+ });
+ // 登录
+ const onSignIn = async () => {
+ state.loading.signIn = true;
+ // 存储 token 到浏览器缓存
+ let res = await useLoginApi().signIn(state.ruleForm)
+ if(res.data.code === '200'){
+ userInfo.setUserInfos(res.data.data)
+ Session.set('token', res.data.data.accessToken);
+ Session.set('projectId','');
+ Session.set('uid',res.data.data.uid);
+ signInSuccess();
+ }else{
+ state.loading.signIn = false
+ ElMessage({
+ type:'warning',
+ message:res.data.msg
+ })
+ }
+ // Session.set('token', Math.random().toString(36).substr(0));
+ // // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
+ // Cookies.set('userName', state.ruleForm.username);
+ // if (!themeConfig.value.isRequestRoutes) {
+ // // 前端控制路由,2、请注意执行顺序
+ // await initFrontEndControlRoutes();
+ // signInSuccess();
+ // } else {
+ // // 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
+ // // 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path "/"
+ // await initBackEndControlRoutes();
+ // // 执行完 initBackEndControlRoutes,再执行 signInSuccess
+ // signInSuccess();
+ // }
+ };
+ // 登录成功后的跳转
+ const signInSuccess = async () => {
+ // 初始化登录成功时间问候语
+ let currentTimeInfo = currentTime.value;
+ // 登录成功,跳到转首页
+ // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
+ if (route.query?.redirect) {
+ router.push('/homeMenu');
+ // router.push({
+ // path: <string>route.query?.redirect,
+ // query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
+ // });
+ } else {
+ router.push('/loginPage');
+ }
+ state.loading.signIn = true;
+ const signInText = t('message.signInText');
+ ElMessage.success(`${currentTimeInfo},${signInText}`);
+ // 登录成功提示
+ // 关闭 loading
+ // 添加 loading,防止第一次进入界面时出现短暂空白
+ // NextLoading.start();
+ };
+ return {
+ onSignIn,
+ ...toRefs(state),
+ };
+ },
+ });
</script>
<style scoped lang="scss">
-.login-content-form {
- margin-top: 40px;
- width: 420px;
+ .login-content-form {
+ margin-top: 40px;
+ width: 420px;
- .el-input::v-deep .el-input__wrapper{
- height: 56px;
- border-radius: 28px;
- padding: 0 30px;
- background: #F2F2F2;
- &:focus-within{
- border: 1px solid #2053D7;
+ .el-input::v-deep .el-input__wrapper{
+ height: 56px;
+ border-radius: 28px;
+ padding: 0 30px;
+ background: #F2F2F2;
+ &:focus-within{
+ border: 1px solid #2053D7;
+ }
}
- }
- @for $i from 1 through 4 {
- .login-animation#{$i} {
- opacity: 0;
- animation-name: error-num;
- animation-duration: 0.5s;
- animation-fill-mode: forwards;
- animation-delay: calc($i/10) + s;
+ @for $i from 1 through 4 {
+ .login-animation#{$i} {
+ opacity: 0;
+ animation-name: error-num;
+ animation-duration: 0.5s;
+ animation-fill-mode: forwards;
+ animation-delay: calc($i/10) + s;
+ }
}
- }
- .codeDeal::v-deep .el-form-item__content{
- display: flex;
- justify-content: space-between;
+ .codeDeal::v-deep .el-form-item__content{
+ display: flex;
+ justify-content: space-between;
- .forgetCode{
- color: #2053D7;
+ .forgetCode{
+ color: #2053D7;
+ cursor: pointer;
+ }
+ }
+ .login-content-password {
+ width: 100%;
+ display: inline-block;
+ width: 20px;
cursor: pointer;
+ &:hover {
+ color: #909399;
+ }
+ }
+ .login-content-code {
+ width: 100%;
+ padding: 0;
+ font-weight: bold;
+ letter-spacing: 5px;
+ }
+ .login-content-submit {
+ width: 100%;
+ height: 56px;
+ font-size: 16px;
+ border-radius: 28px;
+ letter-spacing: 4px;
+ font-weight: 300;
+ margin-top: 15px;
+ background: #2053D7;
+ transition: .3s;
+ &:hover{
+ letter-spacing: 6px;
+ background: #4E7AEC;
+ }
}
}
- .login-content-password {
- width: 100%;
- display: inline-block;
- width: 20px;
- cursor: pointer;
- &:hover {
- color: #909399;
- }
- }
- .login-content-code {
- width: 100%;
- padding: 0;
- font-weight: bold;
- letter-spacing: 5px;
- }
- .login-content-submit {
- width: 100%;
- height: 56px;
- font-size: 16px;
- border-radius: 28px;
- letter-spacing: 4px;
- font-weight: 300;
- margin-top: 15px;
- background: #2053D7;
- transition: .3s;
- &:hover{
- letter-spacing: 6px;
- background: #4E7AEC;
- }
- }
-}
</style>
diff --git a/src/views/loginPage/loginPage.vue b/src/views/loginPage/loginPage.vue
index 66c68bc..a2e26c0 100644
--- a/src/views/loginPage/loginPage.vue
+++ b/src/views/loginPage/loginPage.vue
@@ -12,9 +12,9 @@
<div class="loginPanel">
<div class="welc">WELCOME!</div>
<div class="welcc">欢迎登录</div>
-<!-- <div class="loginInfo">-->
-<!-- <el-input v-model="input" placeholder="Please input" />-->
-<!-- </div>-->
+ <!-- <div class="loginInfo">-->
+ <!-- <el-input v-model="input" placeholder="Please input" />-->
+ <!-- </div>-->
<div>
<el-tabs v-model="tabsActiveName">
<AccountLogin />
@@ -27,134 +27,135 @@
</template>
<script lang="ts">
-import { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';
-import { storeToRefs } from 'pinia';
-import { useThemeConfig } from '/@/stores/themeConfig';
-import logoMini from '/@/assets/logo-mini.svg';
-import loginIconTwo from '/@/assets/login-icon-two.svg';
-import { NextLoading } from '/@/utils/loading';
-import AccountLogin from '/@/views/loginPage/component/accountLogin.vue';
-import { loginBg } from '../../../static/loginPage.js/login.js'
-import { loginApp } from '../../../static/loginPage.js/loginApp.js'
+ import { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';
+ import { storeToRefs } from 'pinia';
+ import { useThemeConfig } from '/@/stores/themeConfig';
+ import logoMini from '/@/assets/logo-mini.svg';
+ import loginIconTwo from '/@/assets/login-icon-two.svg';
+ import { NextLoading } from '/@/utils/loading';
+ import AccountLogin from '/@/views/loginPage/component/accountLogin.vue';
+ import { loginBg } from '../../../static/loginPage.js/login.js'
+ import { loginApp } from '../../../static/loginPage.js/loginApp.js'
-// 定义接口来定义对象的类型
-interface LoginState {
- tabsActiveName: string;
- isScan: boolean;
-}
+ // 定义接口来定义对象的类型
+ interface LoginState {
+ tabsActiveName: string;
+ isScan: boolean;
+ }
-export default defineComponent({
- name: 'loginIndex',
- components: { AccountLogin },
- setup() {
- const storesThemeConfig = useThemeConfig();
- const { themeConfig } = storeToRefs(storesThemeConfig);
- const state = reactive<LoginState>({
- tabsActiveName: 'account',
- isScan: false,
- });
- // 获取布局配置信息
- const getThemeConfig = computed(() => {
- return themeConfig.value;
- });
- // 页面加载时
- onMounted(() => {
- NextLoading.done();
- loginBg();
- loginApp()
- });
- return {
- logoMini,
- loginIconTwo,
- getThemeConfig,
- ...toRefs(state),
- };
- },
-});
+ export default defineComponent({
+ name: 'loginIndex',
+ components: { AccountLogin },
+ setup() {
+ const storesThemeConfig = useThemeConfig();
+ const { themeConfig } = storeToRefs(storesThemeConfig);
+ const state = reactive<LoginState>({
+ tabsActiveName: 'account',
+ isScan: false,
+ });
+ // 获取布局配置信息
+ const getThemeConfig = computed(() => {
+ return themeConfig.value;
+ });
+ // 页面加载时
+ onMounted(() => {
+ NextLoading.done();
+ loginBg();
+ loginApp()
+ });
+ return {
+ logoMini,
+ loginIconTwo,
+ getThemeConfig,
+ ...toRefs(state),
+ };
+ },
+ });
</script>
<style scoped lang="scss">
-.login-container {
- width: 100%;
- height: 100%;
- position: relative;
- z-index: 999;
- display: flex;
- align-items: center;
- justify-content: center;
- background-image: radial-gradient(at center, #0075c3, #000b61);
-
- canvas {
- display: block;
- vertical-align: bottom;
- }
-
- #particles-js {
+ .login-container {
width: 100%;
height: 100%;
-
- background-size: cover;
- background-position: 50% 50%;
- background-repeat: no-repeat;
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- }
-
- .loginContent{
- width: 100%;
- padding: 0 300px;
+ position: relative;
+ z-index: 999;
display: flex;
- align-items: flex-start;
- justify-content: space-between;
+ align-items: center;
+ justify-content: center;
+ background: url("../../assets/loginPage/login-bg.jpg") no-repeat center;
+ /*background-image: radial-gradient(at center, #0075c3, #000b61);*/
- .loginContL{
- font-size: 48px;
- font-weight: bold;
- padding-top: 20px;
- margin-right: 30px;
-
- .apTitleT{
- color: #fff;
- margin-bottom: 20px;
- letter-spacing: 4px;
- }
- .apTitleB{
- color: #01d0ff;
- margin-bottom: 40px;
- letter-spacing: 4px;
- }
- &>span{
- display: block;
- width: 120px;
- height: 8px;
- background: #01d0ff;
- }
+ canvas {
+ display: block;
+ vertical-align: bottom;
}
- .loginPanel{
- padding: 85px 70px;
- background: #fff;
- border-radius: 15px;
- box-shadow: 0 8px 40px rgba(0,0,0,.15);
- .welc{
- font-size: 36px;
- font-family: "PingFang SC";
- font-weight: normal;
- color: #999999;
- letter-spacing: 2px;
- margin-bottom: 15px;
+ #particles-js {
+ width: 100%;
+ height: 100%;
+
+ background-size: cover;
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+
+ .loginContent{
+ width: 100%;
+ padding: 0 300px;
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+
+ .loginContL{
+ font-size: 48px;
+ font-weight: bold;
+ padding-top: 80px;
+ margin-right: 30px;
+
+ .apTitleT{
+ color: #fff;
+ margin-bottom: 20px;
+ letter-spacing: 4px;
+ }
+ .apTitleB{
+ color: #01d0ff;
+ margin-bottom: 40px;
+ letter-spacing: 4px;
+ }
+ &>span{
+ display: block;
+ width: 120px;
+ height: 8px;
+ background: #01d0ff;
+ }
}
- .welcc{
- font-size: 32px;
- font-family: "PingFang SC";
- font-weight: lighter;
- color: #333;
- letter-spacing: 2px;
+ .loginPanel{
+ padding: 85px 70px;
+ background: #fff;
+ border-radius: 15px;
+ box-shadow: 0 8px 40px rgba(0,0,0,.15);
+
+ .welc{
+ font-size: 36px;
+ font-family: "PingFang SC";
+ font-weight: normal;
+ color: #999999;
+ letter-spacing: 2px;
+ margin-bottom: 15px;
+ }
+ .welcc{
+ font-size: 32px;
+ font-family: "PingFang SC";
+ font-weight: lighter;
+ color: #333;
+ letter-spacing: 2px;
+ }
}
}
}
-}
</style>
--
Gitblit v1.9.2