integrated_traffic_uniapp/pages/login/home.vue

474 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view
style="background: url(../../static/bg-login.png) no-repeat;background-size:100% auto;height:100vh;background-color: #058cf5; position: fixed; width: 100%;">
<!-- <view class="bottom-img">
<image src="../../static/hg-bottom.png" mode=""></image>
</view> -->
<view class="login-box">
<view class="login-title">
<view class="login-logo">
<image src="../../static/image/logo.png" mode=""></image>
</view>
<view class="login-text">
<text>欢迎使用</text>
<text>交通运输安全生产综合管理平台!</text>
</view>
</view>
<view class="login-content">
<view class="input-row">
<view class="title">
<text class="">登录帐号</text>
</view>
<view class="m-input-view">
<input v-model="userName" class="m-input" placeholder-style="color: #5caceb;font-size: 34upx;"
placeholder="请输入身份证号..." />
</view>
</view>
<view class="input-row mt30">
<view class="title">
<text class="">密码</text>
</view>
<view class="m-input-view">
<input v-model="userPwd" class="m-input" placeholder-style="color: #5caceb;font-size: 34upx;"
password type="text" placeholder="请输入密码..." />
</view>
</view>
</view>
<view class="btn-row">
<button class="cu-btn bg-login margin-tb-sm lg" @click="$noMultipleClicks(login)">登 录</button>
</view>
<view class="bar-forget">
<!-- <navigator class="title" url="/pages/login/forget/forget">
忘记密码
</navigator> -->
<navigator class="title" url="/pages/login/register/index">
从业人员注册
</navigator>
</view>
</view>
<!-- <view
style="width: 100%;color: #fff;position: absolute;left: 50%;transform: translateX(-50%);bottom: 50upx;display: flex;justify-content: center;align-items: center">
<radio-group>
<radio :checked="radio === '1'" @click="radioChange"></radio>
</radio-group>
<view style="margin-left: 20upx;display: flex">
<text>我已阅读并同意</text>
<navigator style="color: #041d8c" url="/pages/my/agreement/agreement">
《服务协议》
</navigator>
<text>和</text>
<navigator style="color: #041d8c" url="/pages/my/privacy/privacy">
</navigator>
</view>
</view>-->
</view>
</template>
<script>
import {
basePath,
setloginUserId,
setCorpinfoId,
setloginUser,
setDeptId,
setDeptLevel,
adminPath,
corpinfoId,
setBasePath,
setIsRest,
isRest,
loginUser,
setPremission,
publicKey
} from '@/common/tool.js';
import JSEncrypt from '../../static/js/jsencrypt.min'
export default {
data() {
return {
noClick: true,
userName: '',
userPwd: '',
radio: ''
}
},
async onLoad() {
this.getRemember()
this.getLoginUser()
// this.getLoginUser()
//this.getUrlVersion();
},
methods: {
getRemember() {
uni.getStorage({
key: 'remember',
success: async (res) => {
if (res.data && res.data.username) {
this.userName = res.data.username
this.userPwd = res.data.userPwd
}
}
});
},
getLoginUser() {
uni.getStorage({
key: 'USER',
success: async (res) => {
if (res.data && res.data.USER_ID) {
setloginUserId(res.data.USER_ID);
setCorpinfoId(res.data.CORPINFO_ID);
setDeptId(res.data.DEPARTMENT_ID);
setDeptLevel(res.data.DEPARTMENT_LEVEL);
setloginUser(res.data);
if (loginUser.CORPINFO_ID) {
// 查看是否离岗
this.handleLoginCheck(res.data.USER_ID).then(() => {
uni.navigateTo({
url: '/pages/index/index',
});
})
} else {
uni.navigateTo({
url: '/pages/index/index',
});
}
}
}
});
},
handleLoginCheck(USER_ID) {
return new Promise((resolve, reject) => {
uni.request({
url: basePath + '/app/offduty/isRest',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
CORPINFO_ID: corpinfoId,
USER_ID: loginUser.USER_ID,
},
success: (res1) => {
if ("success" == res1.data.result) {
if (res1.data.ISREST != null) {
setIsRest(res1.data.ISREST);
} else {
setIsRest(res.data.ISREST);
}
resolve()
} else if ("usercorperror" == res1.data.result) {
uni.showToast({
icon: 'none',
title: "您的企业已停用,请联系管理员",
duration: 2000
});
reject()
} else if ("userUSEerror" == res1.data.result) {
uni.showToast({
icon: 'none',
title: "您的企业已到使用期限,请联系管理员",
duration: 2000
});
reject()
}
},
fail: (res2) => {
uni.showToast({
icon: 'none',
title: "服务器正在升级,请稍后再试。",
duration: 2000
});
}
});
})
},
radioChange() {
if (this.radio) this.radio = ''
else this.radio = '1'
},
userNameinp(e) {
this.userName = e.detail.value
},
userPwdinp(e) {
this.userPwd = e.detail.value
},
login() {
/*if (this.radio !== '1') {
uni.showToast({
title: '请先阅读并同意《服务协议》和《隐私政策》',
icon: 'none'
})
return;
}*/
var _this = this;
var userName = _this.userName;
var userPwd = _this.userPwd;
var jsencrypt = new JSEncrypt()
jsencrypt.setPublicKey(publicKey)
const keydataVal = jsencrypt.encrypt('zcloudchina' + userName + ',zy,' + userPwd)
// var keydataVal = 'zcloudchina' + userName + ',zy,' + userPwd;
var myreg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/;
if (userName == '') {
uni.showToast({
icon: 'none',
title: '请输入用户名',
duration: 2000
});
return;
} else if (userName.length != 11 && !myreg.test(userName)) {
uni.showToast({
icon: 'none',
title: '身份证号格式不正确',
duration: 2000
});
return;
}
if (userPwd == '') {
uni.showToast({
title: '密码不能为空',
icon: 'none',
duration: 2000
});
return;
}
uni.showLoading({
mask: true,
title: '请稍候'
})
uni.request({
url: basePath + '/admin/checkPractitioner',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
KEYDATA: keydataVal,
SOURCE: '2',
tm: new Date().getTime(),
},
success: (res) => {
var result = res.data.result;
uni.showToast({
icon: 'none',
title: res.data.msg,
duration: 2000
});
if ("success" == result) {
setloginUserId(res.data.USER_ID);
setCorpinfoId(res.data.CORPINFO_ID);
setDeptId(res.data.DEPARTMENT_ID);
setDeptLevel(res.data.DEPARTMENT_LEVEL);
setIsRest(res.data.ISREST);
setloginUser(res.data);
uni.setStorage({
key: 'USER',
data: res.data
});
const remember = {}
remember.username = userName
remember.userPwd = userPwd
uni.setStorage({
key: 'remember',
data: remember
});
uni.hideLoading();
uni.showToast({
title: "登录成功",
duration: 1000
});
uni.redirectTo({
url: '/pages/index/index'
});
} else if ("usererror" == result) {
uni.showToast({
icon: 'none',
title: "用户名或密码有误",
duration: 2000
});
} else if ("error" == result) {
uni.showToast({
icon: 'none',
title: "缺少参数",
duration: 2000
});
} else if ("invalid" == result) {
uni.showToast({
icon: 'none',
title: "账号已被冻结,请联系管理员",
duration: 2000
});
} else if ("usercorperror" == result) {
uni.showToast({
icon: 'none',
title: res.data.msg,
duration: 2000
});
} else if ("userUSEerror" == result) {
uni.showToast({
icon: 'none',
title: res.data.msg,
duration: 2000
});
} else if ("maintainDeactivateError" == result) {
uni.showToast({
icon: 'none',
title: "企业处于维护停用阶段,暂时无法登录",
duration: 2000
});
} else if ("exception" == result) {
uni.showToast({
icon: 'none',
title: res.data.exception,
duration: 2000
});
}
},
fail: (res) => {
uni.showToast({
icon: 'none',
title: "服务器正在升级,请稍后再试。",
duration: 2000
});
}
});
},
getUrlVersion() {
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
var _this = this;
// 路径
uni.request({
url: basePath + '/app/versionurl/goUrlByVersion',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
VERSION: inf.version,
},
success: (res) => {
if (res.data.pd != null) {
console.info(inf.version);
setBasePath(res.data.pd.URL);
}
},
fail: (res) => {
uni.showToast({
icon: 'none',
title: "服务器正在升级,请稍后再试。",
duration: 2000
});
}
});
});
},
}
}
</script>
<style>
.bottom-img {
height: 298upx;
width: 100%;
position: fixed;
bottom: 0;
}
.bottom-img image {
width: 100%;
height: 100%;
}
.bg-login {
background-color: #72b0ed;
color: #1f63ae;
font-weight: bold;
}
.btn-row {
display: flex;
flex-direction: column;
}
.login-box {
padding: 105upx 55upx;
}
.login-img {
width: 90upx;
height: 90upx;
margin-bottom: 50upx;
}
.login-img image {
width: 100%;
height: 100%;
}
.login-title {
display: flex;
align-items: center;
padding-top: 46upx;
}
.login-logo {
margin-right: 26upx;
margin-top: 10upx;
}
.login-logo image {
width: 100upx;
height: 100upx;
}
.login-text {
color: #fff;
font-size: 44upx;
font-weight: 500;
display: flex;
flex-direction: column;
line-height: 1.6;
}
.login-content {
margin-top: 100upx;
margin-bottom: 50upx;
}
.input-row .title {
color: #8ee6ff;
margin-top: 10upx;
right: 0;
}
.bar-forget {
display: flex;
padding-top: 30upx;
justify-content: space-between;
color: #8ee6ff;
}
.m-input-view {}
.m-input-view .m-input {
height: 80upx;
line-height: 1;
color: #fff;
font-size: 40upx;
border-bottom: 1upx solid #62abf7;
}
</style>