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.

310 lines
7.6 KiB

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 class="normal-login-container">
<view class="view-title">
<text class="title">你好欢迎登录</text>
</view>
<view class="logo-content align-center justify-center flex">
<image
style="width: 100rpx; height: 100rpx"
src="/static/images/umale/logo2.png"
mode="widthFix"
>
</image>
<text class="sutitle">城市精细化治理系统</text>
</view>
<view class="login-form-content">
<view class="input-item flex align-center">
<view class="iconfont icon-users icon"></view>
<input
v-model="loginForm.username"
class="input"
type="text"
placeholder="请输入账号"
maxlength="30"
placeholder-class="input-placeholder"
/>
</view>
<view class="input-item flex align-center">
<view class="iconfont icon-passwords icon"></view>
<input
v-model="loginForm.password"
type="password"
class="input"
placeholder="请输入密码"
maxlength="20"
placeholder-class="input-placeholder"
/>
</view>
<view
class="input-item flex align-center"
style="width: 60%; margin: 0px"
v-if="captchaEnabled"
>
<view class="iconfont icon-code icon"></view>
<input
v-model="loginForm.code"
type="number"
class="input"
placeholder="请输入验证码"
maxlength="4"
/>
<view class="login-code">
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
</view>
</view>
<view class="action-btn">
<button
@click="handleLogin"
class="login-btn cu-btn block bg-blue lg round"
>
登录
</button>
</view>
</view>
</view> -->
<web-view :src="urlParams" ></web-view>
</template>
<script>
import { getCodeImg } from "@/api/login";
export default {
data() {
return {
codeUrl: "",
captchaEnabled: true,
// 用户注册开关
register: false,
globalConfig: getApp().globalData.config,
loginForm: {
username: "admin",
password: "admin123",
code: "",
uuid: "",
},
urlParams: null,
};
},
created() {
// this.getCode();
},
methods: {
// 获取参数
getRequestParams() {
let url = location.href;
let requestParams = {};
if (url.indexOf("?") !== -1) {
let str = url.substr(url.indexOf("?") + 1); //截取?后面的内容作为字符串
// console.log(str, '?后面的内容');
let strs = str.split("&"); //将字符串内容以&分隔为一个数组
// console.log(strs, '以&切割的数组');
for (let i = 0; i < strs.length; i++) {
requestParams[strs[i].split("=")[0]] = decodeURI(
strs[i].split("=")[1]
);
// 将数组元素中'='左边的内容作为对象的属性名,'='右边的内容作为对象对应属性的属性值
}
}
// console.log(requestParams, '处理后的对象');
return requestParams;
},
// 用户注册
handleUserRegister() {
this.$tab.redirectTo(`/pages/register`);
},
// 隐私协议
handlePrivacy() {
let site = this.globalConfig.appInfo.agreements[0];
this.$tab.navigateTo(
`/pages/common/webview/index?title=${site.title}&url=${site.url}`
);
},
// 用户协议
handleUserAgrement() {
let site = this.globalConfig.appInfo.agreements[1];
this.$tab.navigateTo(
`/pages/common/webview/index?title=${site.title}&url=${site.url}`
);
},
// 获取图形验证码
getCode() {
getCodeImg().then((res) => {
this.captchaEnabled =
res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
}
});
},
// 登录方法
async handleLogin() {
if (this.loginForm.username === "") {
this.$modal.msgError("请输入您的账号");
} else if (this.loginForm.password === "") {
this.$modal.msgError("请输入您的密码");
} else if (this.loginForm.code === "" && this.captchaEnabled) {
this.$modal.msgError("请输入验证码");
} else {
this.$modal.loading("登录中,请耐心等待...");
this.pwdLogin();
}
},
// 密码登录
async pwdLogin() {
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$modal.closeLoading();
this.loginSuccess();
})
.catch(() => {
if (this.captchaEnabled) {
this.getCode();
}
});
},
// 登录成功后,处理函数
loginSuccess(result) {
// 设置用户信息
this.$store.dispatch("GetInfo").then((res) => {
this.$tab.reLaunch("/pages/index");
});
},
},
};
</script>
<style lang="scss">
page {
background-color: #ffffff;
}
.normal-login-container {
width: 100vw;
height: 100vh;
background-image: url("@/static/images/umale/login_bg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-position-x: 0rpx;
background-position-y: 0rpx;
padding-top: 256rpx;
.view-title {
margin-left: 45rpx;
.title {
font-size: 56rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #2e2f31;
letter-spacing: 4rpx;
}
}
.logo-content {
width: 100%;
font-size: 21px;
text-align: center;
padding-top: 15%;
image {
border-radius: 4px;
}
.sutitle {
margin-left: 10px;
font-size: 40rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #367bef;
letter-spacing: 4rpx;
}
}
.login-form-content {
text-align: center;
margin: 20px auto;
margin-top: 15%;
width: 80%;
.input-item {
margin: 20px auto;
height: 98rpx;
background: #ffffff;
border: 2rpx solid #dce3ec;
box-shadow: 0rpx 0rpx 20rpx rgba(57, 118, 241, 0.06);
opacity: 1;
border-radius: 49rpx;
.icon {
font-size: 38rpx;
margin-left: 36rpx;
color: #999;
}
.icon-users {
width: 36rpx;
height: 36rpx;
background-image: url("@/static/images/umale/user.png");
background-size: cover;
background-repeat: no-repeat;
}
.icon-passwords {
width: 36rpx;
height: 36rpx;
background-image: url("@/static/images/umale/pwd.png");
background-size: cover;
background-repeat: no-repeat;
}
.input {
width: 100%;
font-size: 36rpx;
line-height: 20px;
font-family: PingFang SC;
font-weight: 400;
letter-spacing: 4rpx;
text-align: left;
padding-left: 15px;
}
.input-placeholder {
color: #bcbcbc;
}
}
.login-btn {
margin-top: 40px;
height: 98rpx;
background: linear-gradient(180deg, #4787f3 0%, #1868ef 100%);
box-shadow: 0 14rpx 25rpx -10rpx rgba(57, 118, 241, 1);
border-radius: 49rpx;
}
.reg {
margin-top: 15px;
}
.xieyi {
color: #333;
margin-top: 20px;
}
.login-code {
height: 38px;
float: right;
.login-code-img {
height: 38px;
position: absolute;
margin-left: 10px;
width: 200rpx;
}
}
}
}
</style>