2020-09-18 14:22:31 +08:00

570 lines
14 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>
<!-- login页面 -->
<view>
<view class="login" @touchmove.stop.prevent="moveHandle">
<!-- <image class="images" :src="url"></image> -->
<view class="backes"></view>
<view class="title_top">德铭阳光在线-商家端</view>
<view class="content">
<view class="title">
<view v-bind:class="[state==0 ? 'show' : '']" @click="changetab(0)">
商家登录
</view>
<view v-bind:class="[state==1 ? 'show' : '']" @click="changetab(1)">
商家达人
</view>
<view v-bind:class="[state==2 ? 'show' : '']" @click="changetab(2)">
平台达人
</view>
</view>
<view class="" v-if="state==0">
<view class="labales">
<image src="../../static/image/login/login(3).png"></image>
<input v-model="zhanghao" type="text" @blur="getBlurVal" placeholder="请输入账号" />
</view>
<view class="labales">
<image src="../../static/image/login/login(1).png"></image>
<input v-model="mima" type="password" placeholder="请输入密码" />
</view>
</view>
<view class="" v-else-if="state==1">
<view class="labales">
<image src="../../static/image/login/login(3).png"></image>
<input v-model="zhanghaoA" type="text" @blur="getBlurVal1" placeholder="请输入账号" />
</view>
<view class="labales">
<image src="../../static/image/login/login(1).png"></image>
<input v-model="mimaA" type="password" placeholder="请输入密码" />
</view>
</view>
<view v-else>
<view class="labales">
<image src="../../static/image/login/login(3).png"></image>
<input v-model="phone" type="number" maxlength="11" placeholder="请输入手机号" />
</view>
<view class="labales">
<image src="../../static/image/login/safe.png"></image>
<input v-model="code" type="number" placeholder="请输入验证码" />
<u-button class="get-code" :class=" is_sendcode ? 'stopClick' : '' " :disabled="is_sendcode" @click="getCode">
{{ is_sendcode ? time_count + "后可以重新发送" : "发送验证码" }}
</u-button>
</view>
</view>
</view>
<!-- denglu QQ weixin -->
<button @click="logins">{{ login }}</button>
<!-- <u-button :custom-style="customStyle" ></u-button> -->
<u-toast ref="uToast" />
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [
{
checked: false,
disabled: false
}
],
value: '',
login: '登录',
show: false,
zhanghao: '',
mima: '',
zhanghaoA: '',
mimaA: '',
url: '',
phone: "",
code: "",
state:0,
clickstate:false,
// 时间
timer: null,
is_sendcode: false, // 60s
time_count: 60,
};
},
methods: {
// 改变登陆类型
changetab(num){
this.state = num
},
// 选中某个复选框时由checkbox时触发
checkboxChange(e) {
//console.log(e);
},
// 选中任一checkbox时由checkbox-group触发
checkboxGroupChange(e) {
// console.log(e);
},
mask_u() {
this.show = !this.show;
},
// 获取验证码倒计时
getCode() {
if (!this.$u.test.mobile(this.phone)) {
this.$refs.uToast.show({
title: '手机号码有误!',
})
return;
}
this.$u.api.getCode({
member_mobile: this.phone,
}).then(res => {
console.log(res);
if (res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
})
this.getSendCode();
} else {
this.$refs.uToast.show({
title: res.message,
type: "warning"
})
}
})
},
// 失去焦点获取数据
getBlurVal(e) {
// console.log(e.detail.value);
this.zhanghao = this.$u.trim(e.detail.value,"all");
},
getBlurVal1(e) {
this.zhanghaoA = this.$u.trim(e.detail.value,"all");
// console.log(this.$u.trim(this.zhanghaoA));
},
logins() {
// 判断是否可以点击
// console.log(this.zhanghao);
if(this.clickstate==false){
this.clickstate=true
}else{
this.$refs.uToast.show({
title: "不能重复提交",
type: 'error'
});
return
}
// 清除本地存储才可以正常登陆(具体原因没有仔细检查)
// uni.clearStorage();
// 账号登录1达人0商家
if(this.state==1){
this.$u.api.login({ member_name: this.zhanghaoA, member_password: this.mimaA }).then(res => {
console.log(JSON.stringify(res))
if (res.errCode != 0) {
// 恢复按钮可点击状态
this.clickstate=false
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
uni.setStorageSync('token', res.data.token);
uni.setStorageSync('userinfo', res.data);
uni.setStorageSync('rongyun', res.data.rongcloud_token);
this.$u.route({
url: '/pages/user/myinfo',
type:"redirect"
});
}
});
}else if (this.state == 2) {
if (!this.$u.test.mobile(this.phone)) {
this.$refs.uToast.show({
title: '手机号码有误!',
})
return;
}
if (this.code.length < 4) {}
this.$u.api.starLogin({
member_mobile: this.phone,
sms_code: this.code,
}).then(res => {
if (res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
})
uni.setStorageSync('token', res.data.token);
uni.setStorageSync('userinfo', res.data);
uni.setStorageSync('rongyun', res.data.rongcloud_token);
this.$u.route({
url: '/pages/user/myinfo',
type:"redirect"
});
} else {
this.$refs.uToast.show({
title: res.message,
type: "warning"
})
}
})
} else{
this.$u.api.shoplogin({ member_name: this.zhanghao, member_password: this.mima }).then(res => {
console.log(JSON.stringify(res))
if (res.errCode != 0) {
// 恢复按钮可点击状态
this.clickstate=false
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
uni.setStorageSync('token', res.data.token);
uni.setStorageSync('userinfo', res.data);
uni.setStorageSync('rongyun', res.data.rongcloud_token);
this.$u.route({
url: '/pages/index/index',
type: 'switchTab'
});
}
});
}
},
// 60s
getSendCode() {
const TIME_COUNT = 60;
if (!this.timer) {
this.time_count = TIME_COUNT;
this.is_sendcode = true;
this.timer = setInterval(() => {
if (this.time_count > 0 && this.time_count <= TIME_COUNT) {
this.time_count--;
} else {
this.is_sendcode = false;
clearInterval(this.timer);
this.timer = null;
}
}, 1000);
}
},
moveHandle(){
return;
}
},
onLoad() {
let token = uni.getStorageSync('token');
let user = uni.getStorageSync('userinfo');
console.log( user.role == 2 ? '/pages/index/index' : '/pages/user/myinfo')
if (token != undefined && token) {
this.$u.route({
url: user.role == 2 ? '/pages/index/index' : '/pages/user/myinfo',
type: user.role == 2 ? 'tab' : 'to'
});
}
}
};
</script>
<style lang="scss" scoped>
.login:before{
background: url(../../static/bg.png) no-repeat;
background-size: cover;
width: 750rpx;
height: 100vh;
content: "";
position: absolute;
top: 0;
left: 0;
z-index: -1;/*-1 可以当背景*/
transform: scale(1.1);
-webkit-filter: blur(3px);
filter: blur(3px);
}
.login {
.images {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: -1;
}
.backes {
background: rgba(0, 0, 0, 0.4);
position: fixed;
width: 100%;
height: 100%;
z-index: -1;
}
text {
z-index: 9;
color: #fff;
}
.more_Login {
overflow: hidden;
zoom: 1;
width: 630rpx;
margin: 0 auto;
}
.more_Login text {
display: inline-block;
width: 50%;
float: left;
font-size: 30rpx;
color: rgba(255, 255, 255, 1);
line-height: 36px;
margin: 97rpx 0;
}
.more_Login .other {
text-align: right;
}
}
.title {
font-size: 36rpx;
font-weight: bold;
margin-bottom: 150rpx;
color: #fff;
display: flex;
justify-content: flex-start;
}
.title view{
height: 100rpx;
line-height: 100rpx;
font-size: 24rpx;
padding: 0 20rpx;
}
.title .show{
font-size: 34rpx;
font-weight: bold;
}
.content {
width: 630rpx;
z-index: 99999;
margin: 0 auto;
padding-top: 300rpx;
.labales text {
font-size: 30rpx;
}
.get-code {
width: auto !important;
height: 60rpx !important;
padding: 0 30rpx !important;
font-size: 24rpx !important;
line-height: 60rpx !important;
color: #fff !important;
border: none !important;
border-radius: 10rpx !important;
&::after {
border: none !important;
}
}
.labales {
display: flex;
align-items: center;
height: 90rpx;
margin-bottom: 160rpx;
line-height: 90rpx;
border-bottom: 1px #fff solid;
input {
width: 80%;
margin-left: 30rpx;
color: #fff;
letter-spacing: 2rpx;
background-color: none;
}
}
.labales image {
flex-shrink: 0;
width: 38rpx;
height: 40rpx;
}
.labales:nth-child(3) {
position: relative;
margin-bottom: 60rpx;
}
.identifying {
position: absolute;
right: 0;
top: 0;
bottom: 0;
margin: auto;
font-size: 30rpx;
font-weight: 500;
color: rgba(255, 120, 15, 1);
line-height: 20px;
}
}
.uni-input-input,
.uni-input-placeholder {
color: #fff !important;
letter-spacing: 2rpx;
}
.pact text {
font-size: 22rpx;
font-weight: 400;
color: rgba(255, 255, 255, 1);
line-height: 36px;
}
.pact_text {
font-size: 22px;
font-weight: 400;
color: rgba(129, 188, 253, 1) !important;
line-height: 36px;
}
//单选框的样式
.pact {
position: relative;
padding-left: 40rpx;
overflow: hidden; //超出的文本隐藏
text-overflow: ellipsis; //溢出用省略号显示
white-space: nowrap; //溢出不换行
}
.u-checkbox-group {
position: absolute;
left: 0;
top: 0;
bottom: 0;
margin: auto;
}
.u-checkbox__icon--square {
border-radius: 50rpx !important;
width: 22rpx;
height: 22rpx;
}
.u-btn {
width: 628rpx;
height: 98rpx;
background: rgba(255, 120, 15, 1) !important;
border-radius: 49rpx;
margin: 0 auto;
font-size: 36rpx;
color: rgba(255, 255, 255, 1) !important;
line-height: 36px;
border: 1px #ff780f solid;
outline: none;
border-color: rgba(255, 120, 15, 1) !important;
}
.warp {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.rect {
width: 558rpx;
height: 300rpx;
background-color: #fff;
border-radius: 20rpx;
overflow: hidden;
zoom: 1;
position: relative;
display: flex;
flex-wrap: wrap;
display: -webkit-flex; /* Safari */
.rect_view {
width: 100rpx;
height: 100rpx;
.image {
width: 45rpx;
height: 53rpx;
display: inline-block;
}
flex: 1;
margin-top: 77rpx;
}
.rect_view:nth-child(2) image {
width: 57rpx;
height: 45rpx;
}
.rect_butoon {
width: 100%;
position: absolute;
bottom: 0;
height: 85rpx;
text-align: center;
line-height: 85rpx;
border-top: 1px #999999 solid;
}
view {
color: #666;
font-size: 24rpx;
margin-top: 30rpx;
}
}
.rect_view:nth-child(1) image,
.rect_view:nth-child(1) view {
float: right;
}
.rect_view:nth-child(1) image {
margin-right: 20rpx;
}
.rect_view:nth-child(1) {
position: relative;
margin-right: 79rpx;
}
.rect_view:nth-child(1) view {
position: absolute;
bottom: 0;
right: 0;
}
.rect_view:nth-child(2) image,
.rect_view:nth-child(2) view {
float: left;
}
.rect_view:nth-child(2) image {
margin-left: 20rpx;
}
.rect_view:nth-child(2) {
position: relative;
}
.rect_view:nth-child(2) view {
position: absolute;
bottom: 0;
left: 0;
}
.title_top {
position: fixed;
top: calc(var(--status-bar-height) + 18px);
left: 0;
right: 0;
margin: auto;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
width: 100%;
/* 如果您想让slot内容占满整个导航栏的宽度 */
/* flex: 1; */
/* 如果您想让slot内容与导航栏左右有空隙 */
/* padding: 0 30rpx; */
background: none;
letter-spacing: 4rpx;
}
button{
width: 670rpx;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 50rpx;
height: 100rpx;
padding: 0 40rpx;
background-color: #ff780f;
color: #FFFFFF;
}
</style>