2021-01-04 17:15:44 +08:00

235 lines
7.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<a-spin :spinning="spinning">
<div :style="{ background: isPhone ? 'none' : 'url(' + bgimg + ')', height:'100vh', }">
<img :src="img1" v-if="!isPhone" style="position:absolute;top:0;left:0;" />
<img :src="img2" v-if="!isPhone" style="position:absolute;bottom:0;right:0;" />
<div :id=" isPhone ? '' : 'login-contain'">
<!-- <el-row style="height:35px;" v-if="!isPhone">
<el-alert :closable="false" title="水质检测平台" type="error" effect="dark"></el-alert>
</el-row> -->
<a-row style="height:480px;background:#0E6F75;">
<a-col
:span="15"
:style="{backgroundImage:'url(' + logobg + ')', height:'480px', overflow:'hidden', textAlign:'center'}"
id="login-left"
v-if="!isPhone"
>
<img :src="logo" />
<p>
<span style="color:white;font-size: 26px;font-weight: bold;text-shadow: 0 0 10px black;">湖北富瑞尔科技有限公司水质监测平台</span>
</p>
<div style="color:white;font-size: 13px;font-weight: bold;text-shadow: 0 0 7px black;">
<p>
当前版本: 1.1.0
</p>
<p>
后台版本: 1.1.0
</p>
<p>
版本记录:
</p>
<p>
2020-11-30:
1.0.0版本上线,初步实现后台管理与信息查询功能,实现权限管理
</p>
<p>
2020-12-06
1.0.1版本修复后台管理中人员等_id为undefined等bug
</p>
<p>
2020-12-7
1.0.2版本,修复字体背景遮挡问题
</p>
<p>
2021-1-4
1.1.0版本,添加分时数据查询功能,提供表格与图表两种方式,对数据时间范围进行限制
后台进行调整,对分时数据时间范围进行限制
</p>
</div>
</a-col>
<a-col :span=" isPhone ? 24 : 9" style="height:480px;overflow:hidden;">
<a-form ref="form" :model="form" label-width="0" style="margin:50px;text-align:center;">
<a-form-item style="text-align:center;">
<img :src="avter" />
</a-form-item>
<a-form-item>
<a-input prefix-icon="el-icon-user-solid" v-model="form.utel" placeholder="请输入用户名"></a-input>
</a-form-item>
<a-form-item>
<a-input
prefix-icon="el-icon-lock"
type="password"
v-model="form.upass"
autocomplete="off"
placeholder="请输入密码"
></a-input>
</a-form-item>
<a-form-item>
<a-row>
<a-col :span="12">
<a-input
prefix-icon="el-icon-lock"
v-model="form.checkcode"
placeholder="请输入验证码"
/>
</a-col>
<a-col :span="12">
<input
type="button"
id="code"
@click="createCode"
class="verification1"
v-model="checkCode"
/>
</a-col>
</a-row>
</a-form-item>
<a-form-item>
<a-row :gutter="10">
<a-col :span="24">
<a-button style="width:100%;" type="danger" @click="login()">登录</a-button>
</a-col>
<!-- <a-col :span="24">
<a-button style="width:100%;" @click="reset()">重置</a-button>
</a-col>-->
</a-row>
<!-- <a-button @click="reset()">重置</a-button> -->
</a-form-item>
</a-form>
</a-col>
</a-row>
</div>
</div>
</a-spin>
</template>
<script>
import { getData, login, logout, URL_MAP } from "@/utils/http";
export default {
data() {
return {
msg: "",
form: {
utel: "",
upass: "",
checkcode: ""
},
loading: null,
img1: "",
img2: "",
logo: "",
bgimg: "",
avter: "",
logobg: "",
checkCode: "",
random: [],
spinning: false,
};
},
computed: {
isPhone() {
return this.$store.getters.phone
}
},
methods: {
async login() {
try {
this.spinning = true;
// dev
// if (
// this.form.checkcode.toUpperCase() !== this.checkCode.toUpperCase()
// ) {
// this.$message.error("验证码错误!");
// this.createCode();
// this.loading.close();
// return;
// }
let data = await login(this.form.utel, this.form.upass, 'tt', 'tt');
this.$store.commit("login", data);
/**
* 初始化设备数据、传感器数据
*/
let results = [
getData(URL_MAP.DEVICE_LIST),
getData(URL_MAP.SENSOR_LIST),
getData(URL_MAP.PROJECT_LIST),
getData(URL_MAP.RULES_LIST),
]
data = await Promise.all(results)
this.$store.commit('deviceList', data[0].data)
this.$store.commit('sensorList', data[1].data)
this.$store.commit('projectList', data[2].data)
this.$store.commit('ruleList', data[3].data)
let path = decodeURIComponent(this.$route.query.redirect || "/");
this.$router.push({ path: path });
} catch (e) {
this.$message.error("账号或密码错误!");
this.createCode();
} finally {
this.spinning = false
}
},
reset() {
this.form.utel = "";
this.form.upass = "";
this.form.checkcode = "";
},
createCode() {
let code = "";
var codeLength = 4; //验证码的长度
for (var i = 0; i < codeLength; i++) {
//循环操作
var index = Math.floor(Math.random() * this.random.length); //取得随机数的索引0~35
code += this.random[index]; //根据索引取得随机数加到code上
}
this.checkCode = code; //把code值赋给验证码
}
},
created() {
for (var i = 0; i < 10; i++) {
this.random.push(i);
}
for (var i = 65; i < 91; i++) {
this.random.push(String.fromCharCode(i));
}
for (var i = 97; i < 123; i++) {
this.random.push(String.fromCharCode(i));
}
},
async mounted() {
this.$store.commit('phone', document.body.clientWidth < 760)
this.img1 = require("../assets/login-img.png");
this.img2 = require("../assets/login-img3.png");
this.logo = require("../assets/login-logo.png");
this.bgimg = require("../assets/back.jpg");
this.avter = require("../assets/login-portrait.png");
this.logobg = require("../assets/back.jpg");
this.createCode();
}
};
</script>
<style>
#login-contain {
width: 852px;
height: 480px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
box-shadow: 0px 0px 32px #0c2d36;
}
#code {
font-size: 18px;
letter-spacing: 3px;
color: #031424;
background: #f2f2f5;
}
</style>