|
@@ -1,27 +1,35 @@
|
|
|
<template>
|
|
|
- <div class="login">
|
|
|
- <div class="login-l">
|
|
|
- <div><span>德迈仕</span>数字化平台</div>
|
|
|
- </div>
|
|
|
- <div class="login-r">
|
|
|
- <img class="logo" referrerpolicy="no-referrer" src="@/assets/logo/logo.png" />
|
|
|
- <span class="title">欢迎使用德迈仕数字化平台</span>
|
|
|
- <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
|
|
|
- <el-form-item prop="username">
|
|
|
- <el-input v-model.trim="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号">
|
|
|
- <template #prefix>
|
|
|
- <svg-icon icon-class="user" class="el-input__icon input-icon" />
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="password">
|
|
|
- <el-input v-model.trim="loginForm.password" type="password" size="large" auto-complete="off" placeholder="密码" show-password @keyup.enter="handleLogin">
|
|
|
- <template #prefix>
|
|
|
- <svg-icon icon-class="password" class="el-input__icon input-icon" />
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <!-- <el-form-item prop="code" v-if="captchaEnabled">
|
|
|
+ <div class="login">
|
|
|
+ <div class="login-l">
|
|
|
+ <div><span>德迈仕</span>数字化平台</div>
|
|
|
+ </div>
|
|
|
+ <div class="login-r">
|
|
|
+ <img class="logo" referrerpolicy="no-referrer" src="@/assets/logo/logo.png" />
|
|
|
+ <span class="title">欢迎使用德迈仕数字化平台</span>
|
|
|
+ <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
|
|
|
+ <el-form-item prop="username">
|
|
|
+ <el-input v-model.trim="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号">
|
|
|
+ <template #prefix>
|
|
|
+ <svg-icon icon-class="user" class="el-input__icon input-icon" />
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="password">
|
|
|
+ <el-input
|
|
|
+ v-model.trim="loginForm.password"
|
|
|
+ type="password"
|
|
|
+ size="large"
|
|
|
+ auto-complete="off"
|
|
|
+ placeholder="密码"
|
|
|
+ show-password
|
|
|
+ @keyup.enter="handleLogin"
|
|
|
+ >
|
|
|
+ <template #prefix>
|
|
|
+ <svg-icon icon-class="password" class="el-input__icon input-icon" />
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item prop="code" v-if="captchaEnabled">
|
|
|
<el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter="handleLogin">
|
|
|
<template #prefix>
|
|
|
<svg-icon icon-class="validCode" class="el-input__icon input-icon" />
|
|
@@ -31,28 +39,31 @@
|
|
|
<img :src="codeUrl" @click="getCode" class="login-code-img" />
|
|
|
</div>
|
|
|
</el-form-item> -->
|
|
|
- <div class="tool">
|
|
|
- <el-checkbox v-model="loginForm.rememberMe">5天自动登录</el-checkbox>
|
|
|
- <span style="font-size: 14px">忘记密码</span>
|
|
|
- </div>
|
|
|
- <el-form-item style="width: 100%">
|
|
|
- <el-button :loading="loading" size="large" type="primary" style="width: 100%" @click.prevent="handleLogin">
|
|
|
- <span v-if="!loading">立即登录</span>
|
|
|
- <span v-else>登 录 中...</span>
|
|
|
- </el-button>
|
|
|
- <!--
|
|
|
+ <div class="tool">
|
|
|
+ <el-checkbox v-model="loginForm.rememberMe">5天自动登录</el-checkbox>
|
|
|
+ <span style="font-size: 14px">忘记密码</span>
|
|
|
+ </div>
|
|
|
+ <el-form-item style="width: 100%">
|
|
|
+ <el-button :loading="loading" size="large" type="primary" style="width: 100%" @click.prevent="handleLogin">
|
|
|
+ <span v-if="!loading">立即登录</span>
|
|
|
+ <span v-else>登 录 中...</span>
|
|
|
+ </el-button>
|
|
|
+ <!--
|
|
|
<div style="float: right;" v-if="register">
|
|
|
<router-link class="link-type" :to="'/register'">立即注册</router-link>
|
|
|
</div>
|
|
|
-->
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <!-- 底部 -->
|
|
|
- <div class="login-footer">
|
|
|
- <span>Copyright © 2023-2033 <a href="http://www.cdms-china.com/" target="_blank">www.cdms-china.com</a> All Rights Reserved.</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <!-- 底部 -->
|
|
|
+ <div class="login-footer">
|
|
|
+ <span
|
|
|
+ >Copyright © 2023-2033 <a href="http://www.cdms-china.com/" target="_blank">www.cdms-china.com</a> All Rights
|
|
|
+ Reserved.</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
@@ -66,17 +77,17 @@ const router = useRouter()
|
|
|
const { proxy } = getCurrentInstance()
|
|
|
|
|
|
const loginForm = ref({
|
|
|
- username: '',
|
|
|
- password: '',
|
|
|
- rememberMe: false,
|
|
|
- code: '',
|
|
|
- uuid: ''
|
|
|
+ username: '',
|
|
|
+ password: '',
|
|
|
+ rememberMe: false,
|
|
|
+ code: '',
|
|
|
+ uuid: ''
|
|
|
})
|
|
|
|
|
|
const loginRules = {
|
|
|
- username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
|
|
|
- password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
|
|
|
- code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
|
|
|
+ username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
|
|
|
+ password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
|
|
|
+ code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
|
|
|
}
|
|
|
|
|
|
const loading = ref(false)
|
|
@@ -88,39 +99,39 @@ const loading = ref(false)
|
|
|
const redirect = ref(undefined)
|
|
|
|
|
|
function handleLogin() {
|
|
|
- proxy.$refs.loginRef.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- loading.value = true
|
|
|
- // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
|
|
|
- if (loginForm.value.rememberMe) {
|
|
|
- Cookies.set('username', loginForm.value.username, { expires: 30 })
|
|
|
- Cookies.set('password', encrypt(loginForm.value.password), { expires: 30 })
|
|
|
- Cookies.set('rememberMe', loginForm.value.rememberMe, { expires: 30 })
|
|
|
- } else {
|
|
|
- // 否则移除
|
|
|
- Cookies.remove('username')
|
|
|
- Cookies.remove('password')
|
|
|
- Cookies.remove('rememberMe')
|
|
|
- }
|
|
|
- // listEmployee({ userName: loginForm.value.username }).then(res =>{})
|
|
|
- // 调用action的登录方法
|
|
|
-
|
|
|
- userStore
|
|
|
- .login(loginForm.value)
|
|
|
- .then(() => {
|
|
|
- router.push({ path: redirect.value || '/' })
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- loading.value = false
|
|
|
- /*
|
|
|
+ proxy.$refs.loginRef.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ loading.value = true
|
|
|
+ // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
|
|
|
+ if (loginForm.value.rememberMe) {
|
|
|
+ Cookies.set('username', loginForm.value.username, { expires: 30 })
|
|
|
+ Cookies.set('password', encrypt(loginForm.value.password), { expires: 30 })
|
|
|
+ Cookies.set('rememberMe', loginForm.value.rememberMe, { expires: 30 })
|
|
|
+ } else {
|
|
|
+ // 否则移除
|
|
|
+ Cookies.remove('username')
|
|
|
+ Cookies.remove('password')
|
|
|
+ Cookies.remove('rememberMe')
|
|
|
+ }
|
|
|
+ // listEmployee({ userName: loginForm.value.username }).then(res =>{})
|
|
|
+ // 调用action的登录方法
|
|
|
+
|
|
|
+ userStore
|
|
|
+ .login(loginForm.value)
|
|
|
+ .then(() => {
|
|
|
+ router.push({ path: redirect.value || '/' })
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ loading.value = false
|
|
|
+ /*
|
|
|
// 重新获取验证码
|
|
|
if (captchaEnabled.value) {
|
|
|
getCode()
|
|
|
}
|
|
|
*/
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -136,14 +147,14 @@ function getCode() {
|
|
|
*/
|
|
|
|
|
|
function getCookie() {
|
|
|
- const username = Cookies.get('username')
|
|
|
- const password = Cookies.get('password')
|
|
|
- const rememberMe = Cookies.get('rememberMe')
|
|
|
- loginForm.value = {
|
|
|
- username: username === undefined ? loginForm.value.username : username,
|
|
|
- password: password === undefined ? loginForm.value.password : decrypt(password),
|
|
|
- rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
|
|
|
- }
|
|
|
+ const username = Cookies.get('username')
|
|
|
+ const password = Cookies.get('password')
|
|
|
+ const rememberMe = Cookies.get('rememberMe')
|
|
|
+ loginForm.value = {
|
|
|
+ username: username === undefined ? loginForm.value.username : username,
|
|
|
+ password: password === undefined ? loginForm.value.password : decrypt(password),
|
|
|
+ rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// getCode()
|
|
@@ -152,101 +163,101 @@ getCookie()
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.login {
|
|
|
- position: relative;
|
|
|
- display: flex;
|
|
|
- height: 100%;
|
|
|
- background-size: cover;
|
|
|
-
|
|
|
- .login-l {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- flex: 3;
|
|
|
- background: url('../assets/images/login-bg.jpg') no-repeat center center/cover #efefef;
|
|
|
- align-items: center;
|
|
|
-
|
|
|
- div {
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
- div:first-child {
|
|
|
- padding-top: 120px;
|
|
|
- font-size: 48px;
|
|
|
- font-weight: bold;
|
|
|
- letter-spacing: 4px;
|
|
|
-
|
|
|
- span {
|
|
|
- color: #00fff6;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .login-r {
|
|
|
- position: relative;
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- flex: 2;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
-
|
|
|
- .logo {
|
|
|
- width: 120px;
|
|
|
- }
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ height: 100%;
|
|
|
+ background-size: cover;
|
|
|
|
|
|
- .title {
|
|
|
- color: #333;
|
|
|
- font-size: 20px;
|
|
|
- font-family: 微软雅黑;
|
|
|
- text-align: center;
|
|
|
- margin-top: 16px;
|
|
|
- letter-spacing: 2px;
|
|
|
- }
|
|
|
+ .login-l {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ flex: 3;
|
|
|
+ background: url('../assets/images/login-bg.jpg') no-repeat center center/cover #efefef;
|
|
|
+ align-items: center;
|
|
|
|
|
|
- .login-form {
|
|
|
- width: 400px;
|
|
|
- padding-top: 40px;
|
|
|
- .el-input {
|
|
|
- height: 48px;
|
|
|
- input {
|
|
|
- height: 40px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ div {
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ div:first-child {
|
|
|
+ padding-top: 120px;
|
|
|
+ font-size: 48px;
|
|
|
+ font-weight: bold;
|
|
|
+ letter-spacing: 4px;
|
|
|
|
|
|
- .tool {
|
|
|
- display: flex;
|
|
|
- margin-bottom: 25px;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
+ span {
|
|
|
+ color: #00fff6;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .login-r {
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ flex: 2;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
|
|
|
- span {
|
|
|
- color: #409eff;
|
|
|
- cursor: pointer;
|
|
|
- }
|
|
|
- }
|
|
|
+ .logo {
|
|
|
+ width: 120px;
|
|
|
+ }
|
|
|
|
|
|
- button {
|
|
|
- height: 48px;
|
|
|
- letter-spacing: 2px;
|
|
|
- }
|
|
|
+ .title {
|
|
|
+ color: #333;
|
|
|
+ font-size: 20px;
|
|
|
+ font-family: 微软雅黑;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 16px;
|
|
|
+ letter-spacing: 2px;
|
|
|
+ }
|
|
|
|
|
|
- .warning-text {
|
|
|
- font-size: 14px;
|
|
|
- text-align: center;
|
|
|
- color: #333;
|
|
|
+ .login-form {
|
|
|
+ width: 400px;
|
|
|
+ padding-top: 40px;
|
|
|
+ .el-input {
|
|
|
+ height: 48px;
|
|
|
+ input {
|
|
|
+ height: 40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- a {
|
|
|
- color: #409eff;
|
|
|
- text-decoration: none;
|
|
|
- }
|
|
|
- }
|
|
|
- .login-footer {
|
|
|
- position: fixed;
|
|
|
- bottom: 0;
|
|
|
- width: 100%;
|
|
|
- text-align: center;
|
|
|
- color: #333;
|
|
|
- font-family: Arial;
|
|
|
- font-size: 12px;
|
|
|
- letter-spacing: 1px;
|
|
|
- }
|
|
|
- }
|
|
|
+ .tool {
|
|
|
+ display: flex;
|
|
|
+ margin-bottom: 25px;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ span {
|
|
|
+ color: #409eff;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ button {
|
|
|
+ height: 48px;
|
|
|
+ letter-spacing: 2px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .warning-text {
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: center;
|
|
|
+ color: #333;
|
|
|
+
|
|
|
+ a {
|
|
|
+ color: #409eff;
|
|
|
+ text-decoration: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .login-footer {
|
|
|
+ position: fixed;
|
|
|
+ bottom: 0;
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ color: #333;
|
|
|
+ font-family: Arial;
|
|
|
+ font-size: 12px;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|