You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

183 lines
5.0 KiB

<template>
<div class="loginInput">
<div class="litterSemicircle"><img src="/images/logo.png"/> </div>
<div class="importInput">
<h1>南京生态环境评估决策平台</h1>
<el-input placeholder="请输入账户" type="text" class="input" v-model="inputName">
<template #prefix>
<el-icon><img src="/images/pen.png"></el-icon>
</template>
</el-input>
<el-input placeholder="请输入登录密码" type="password" v-model="inputPassword" class="input" >
<template #prefix>
<el-icon><img src="/images/lock.png"></el-icon>
</template>
</el-input>
<el-button type="primary" class="btn" @click="onLoginClick">登录</el-button>
</div>
</div>
</template>
<script lang="ts">
import {reactive, toRefs} from "vue";
import { post } from "./../uilts/axios";
import { useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { setStaff } from "../uilts/storage";
import { encrypt } from '../uilts/Coder';
export default {
name: 'Login',
setup() {
let option = reactive({
inputName: "",
inputPassword:"" ,
centerDialogVisible:false
})
const router = useRouter()
const staffValidate = ()=> {
const errors = [];
if (option.inputName == null || option.inputName.trim().length == 0)
errors.push('登录名');
if (option.inputPassword == null || option.inputPassword.trim().length == 0)
errors.push('登录密码');
return errors;
}
const guid = ()=> {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
const onLoginClick = () => {
// setStaff('login_staff', guid());
const errors = staffValidate();
if (errors.length > 0) {
ElMessage.warning({
message: '请输入' + errors.join('、'),
type: 'warning'
})
}else {
let params = {
userAccountNumber: option.inputName,
userPassword: option.inputPassword
};
post("user/userLogin",{
data: encrypt(params)
}).then((res :any)=>{
if (res.error !=0){
ElMessage.error({
message: res.message,
type: 'error'
});
}else {
setStaff('login_staff', guid())
router.push("/MicrowaveRadiation")
}
})
}
}
return {
...toRefs(option),
onLoginClick,
guid
}
}
}
</script>
<style lang="less" scoped>
.loginInput {
width: 6.1rem;
border-radius: 10px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
.litterSemicircle {
width: 2.4rem;
height: 2.4rem;
margin: 0 auto;
position: relative;
z-index: 10;
background: #FFFFFF;
border-radius: 50%;
display: flex;
justify-content: center;
}
.importInput {
margin-top: -1.2rem;
background: #FFFFFF;
border-radius: 0.10rem;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-content: flex-start;
border: 1px solid rgb(112, 112, 112);
h1 {
width: 3.93rem;
height: 0.4rem;
font-size: 0.30rem;
font-weight: bold;
line-height: 0.4rem;
color: #222222;
text-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
margin-top: 0.9rem;
margin-bottom: 0.52rem;
padding-left: 0.12rem;
z-index: 100;
}
:deep(.input) {
width: 4.96rem;
height: 0.59rem;
background: #FFFFFF;
border: 1px solid #BCBCBC;
margin-bottom: 0.6rem;
.el-input__inner{
height: 100% !important;
position: relative;
border: none;
font-size: 0.15rem;
font-weight: 400;
line-height: 0.24rem;
color: #999999;
padding-left: 0.54rem;
}
}
img {
width: 0.18rem;
height: 0.18rem;
position: absolute;
top: -0.14rem;
left: 0.18rem;
}
}
}
img {
width: 1.5733rem;
height: 1.5715rem;
margin-top: .35rem;
}
.btn{
width: 4.96rem;
height: 0.69rem;
background: #498DF0;
opacity: 1;
color: #FFFFFF;
border: none;
font-size: 0.22rem;
margin-bottom: 1.2rem;
}
</style>