This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/src/Login.vue

171 lines
4.1 KiB
Vue
Raw Normal View History

2021-06-07 18:35:16 +08:00
<template>
2021-06-30 15:30:55 +08:00
<div class="logins">
2021-06-30 11:30:13 +08:00
<div class="inside">
<div class="title" style="margin-top:70px">
2021-06-30 15:30:55 +08:00
<img src="../public/images/cion.png" />
2021-06-30 11:30:13 +08:00
</div>
2021-06-30 17:50:19 +08:00
<el-form class="login__box">
2021-06-30 11:30:13 +08:00
<el-form-item>
<el-input
prefix-icon="el-icon-user"
class="login--input login__input"
2021-06-30 11:30:13 +08:00
v-model="username"
></el-input>
</el-form-item>
<el-form-item>
<el-input
class="login--input"
2021-06-30 11:30:13 +08:00
prefix-icon="el-icon-lock"
type="password"
@keyup.enter="login"
2021-06-30 11:30:13 +08:00
v-model="pin"
></el-input>
</el-form-item>
<el-form-item>
<el-button
2021-06-30 17:32:20 +08:00
v-loading="loading"
2021-06-30 15:30:55 +08:00
type="primary"
class="login--input login--button"
@click="login"
@keyup.enter="login"
2021-07-05 22:58:12 +08:00
style="font-size: 16px;"
>Login</el-button
2021-06-30 11:30:13 +08:00
>
</el-form-item>
</el-form>
</div>
2021-06-11 10:00:22 +08:00
</div>
2021-06-07 18:35:16 +08:00
</template>
<script>
2021-06-11 10:00:22 +08:00
import { mapActions } from 'vuex'
import { post, get } from '@/utils/http'
2021-06-07 18:35:16 +08:00
export default {
2021-06-30 17:32:20 +08:00
2021-06-11 10:00:22 +08:00
name: 'Login',
data () {
return {
2021-06-30 17:39:36 +08:00
loading: false,
2021-08-11 22:14:23 +08:00
username: '',
pin: ''
2021-06-11 10:00:22 +08:00
}
},
methods: {
...mapActions(['loginSuccess']),
login () {
2021-08-11 22:14:23 +08:00
if (!this.username || !this.pin) {
return
}
if (!this.blockOperation.query) {
this.blockOperation.query = true
} else {
return
}
this.loading = true
2021-06-30 11:30:13 +08:00
post('sys/login', { username: this.username, pin: this.pin }).then(
res => {
2021-08-26 17:14:51 +08:00
if (res.code === 200) {
if (!this.$_.isEmpty(res.data.lang)) {
localStorage.setItem('cn-language', res.data.lang)
}
if (!this.$_.isEmpty(res.data.theme)) {
localStorage.setItem('cn-theme', res.data.theme)
}
2021-07-01 15:39:48 +08:00
this.loginSuccess(res)
localStorage.setItem('cn-username', this.username)
2021-08-26 17:14:51 +08:00
} else if (res.code === 518005) {
2021-08-29 22:19:26 +08:00
this.$message.error(this.$t('Incorrect username or password'))
2021-08-27 16:45:03 +08:00
this.loading = false
this.blockOperation.query = false
} else {
2021-08-29 22:19:26 +08:00
this.$message.error('Unknown error')
2021-08-27 16:45:03 +08:00
this.loading = false
this.blockOperation.query = false
2021-07-01 15:39:48 +08:00
}
2021-06-11 10:00:22 +08:00
}
2021-08-26 18:33:49 +08:00
).catch(e => {
2021-08-26 17:14:51 +08:00
this.loading = false
this.blockOperation.query = false
2021-08-26 18:33:49 +08:00
this.$message.error(this.$t('tip.unknownError'))
2021-08-26 17:14:51 +08:00
})
},
appearance () {
get('/sys/appearance').then(res => {
if (res.code === 200) {
this.appearanceOut(res.data)
}
})
},
appearanceOut (data) {
if (this.$_.isEmpty(localStorage.getItem('cn-language'))) {
localStorage.setItem('cn-language', data.lang)
}
if (this.$_.isEmpty(localStorage.getItem('cn-sys-timezone'))) {
localStorage.setItem('cn-sys-timezone', data.timezone)
}
if (this.$_.isEmpty(localStorage.getItem('cn-theme'))) {
localStorage.setItem('cn-theme', data.theme)
}
if (this.$_.isEmpty(localStorage.getItem('cn-date-format'))) {
localStorage.setItem('cn-date-format', data.dateFormat)
}
2021-06-11 10:00:22 +08:00
}
},
mounted () {
this.appearance()
2021-06-11 10:00:22 +08:00
}
2021-06-07 18:35:16 +08:00
}
</script>
<style>
2021-06-30 15:30:55 +08:00
.logins{
2021-06-30 15:45:45 +08:00
background-color: #000C18;
2021-06-30 15:30:55 +08:00
background-size: auto;
background-repeat: round;
2021-06-30 11:30:13 +08:00
background-image: url('../public/images/bg.png');
display: flex;
2021-06-30 15:45:45 +08:00
height: 100%;
2021-06-30 11:30:13 +08:00
justify-content: center;
align-items: center;
margin: auto;
}
.inside {
opacity: 0.78;
background: #051a37;
border-radius: 6px;
width: 368px;
height: 400px;
/* margin-top:340px; */
}
.inside > div {
display: block;
}
2021-06-07 18:35:16 +08:00
2021-06-30 11:30:13 +08:00
.title {
/* margin-top: 70px; */
margin-left: 52px;
margin-right: 10px;
}
.login--input{
2021-06-30 15:30:55 +08:00
width: 300px;
height: 40px;
}
2021-06-30 17:50:19 +08:00
.login__input:first-of-type{
2021-06-30 15:30:55 +08:00
margin-top: 45.57px;
}
2021-06-30 17:50:19 +08:00
.login__box{
2021-06-30 15:30:55 +08:00
width: 300px;
height: 250px;
margin: auto;
}
.login--button {
2021-06-30 11:30:13 +08:00
background: #0091ff;
color: #fff;
border-radius: 4px;
2021-07-05 17:40:43 +08:00
border: 0;
2021-06-30 11:30:13 +08:00
font-weight: 400;
text-align: center;
}
2021-06-07 18:35:16 +08:00
</style>