You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
448 lines
10 KiB
Vue
448 lines
10 KiB
Vue
<template>
|
|
<view class="login">
|
|
<view class="avatorWrapper">
|
|
<view class="avator">
|
|
<image class="img" src="../../static/image/header-icon.png" mode="widthFix"></image>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="form">
|
|
<view class="" v-show="!loginShow">
|
|
<view class=" inputWrapper">
|
|
<input maxlength="11" class="input" @blur="memberOne" v-model="form.mobilePhone" type="text" value="" placeholder="请输入手机号" />
|
|
</view>
|
|
<view class=" inputWrapper">
|
|
<input placeholder="请输入验证码" v-model="form.passCode" class="inputCode" name="input"></input>
|
|
<button class='cu-btn round bg-red' @click="getCode()" style="width: 160px ;" v-show="!getCodeShow" :disabled="getCodeShow">获取验证码</button>
|
|
<button class='cu-btn round bg-red' @click="getCode()" style="width: 230px ;" v-show="getCodeShow" :disabled="getCodeShow">{{getCodeText}}</button>
|
|
</view>
|
|
<view class=" inputWrapper" style="padding: 0;">
|
|
<move-verify class="move-verify" @result='verifyResult' ref="verifyElement1"></move-verify>
|
|
</view>
|
|
</view>
|
|
<view class="" v-show="loginShow">
|
|
<view class=" inputWrapper">
|
|
<input maxlength="11" class="input" v-model="form.mobilePhone" type="text" value="" placeholder="请输入手机号" />
|
|
</view>
|
|
<view class=" inputWrapper">
|
|
<input class="input" placeholder="请输入密码" type="password" v-model="form.password" name="input"></input>
|
|
</view>
|
|
<view class=" inputWrapper" style="padding: 0;">
|
|
<move-verify class="move-verify" @result='verifyResult' ref="verifyElement2"></move-verify>
|
|
</view>
|
|
</view>
|
|
<view class="margin-top margin-left">
|
|
<checkbox-group class="block flex align-center " @change="changeBox" >
|
|
<checkbox style="transform:scale(0.8);margin-right: 5upx;" :class="checkbox.checked?'checked':''" :checked="checkbox.checked?true:false" value="A"></checkbox><text class="">记住密码</text>
|
|
</checkbox-group>
|
|
</view>
|
|
<view class="flex justify-center margin-top">
|
|
<view v-show="!loginShow" @click="(loginShow=true)">
|
|
<text class="text-red">使用账号密码登录</text>
|
|
</view>
|
|
<view class="text-red" v-show='loginShow' @click="(loginShow=false)">
|
|
<text>使用手机验证码登录</text>
|
|
</view>
|
|
</view>
|
|
|
|
<button size="default" @click="logIn" :loading="loadingShow" class=" loginBtn cu-btn bg-red margin-tb-sm lg">登录</button>
|
|
</view>
|
|
<view class=" forgotBtn cu-bar ">
|
|
<text class="forgotBtn_hr"></text>
|
|
<text>DCMY</text>
|
|
<text class="forgotBtn_hr"></text>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import moveVerify from "@/components/helang-moveVerify/helang-moveVerify.vue"
|
|
import host from '../../utils/host.js'
|
|
export default {
|
|
components: {
|
|
"move-verify": moveVerify
|
|
},
|
|
data() {
|
|
return {
|
|
userInfo: null,
|
|
loadingShow: false,
|
|
resultData: {
|
|
flag: false
|
|
},
|
|
checkbox:{
|
|
value:'A',
|
|
checked:false,
|
|
},
|
|
loginShow: true,
|
|
getCodeText: null,
|
|
memberShow: false,
|
|
getCodeShow: false,
|
|
memberStoreList: [{
|
|
storeName: "天河北路店"
|
|
}, {
|
|
storeName: "林和西店"
|
|
}],
|
|
form: {
|
|
mobilePhone: null,
|
|
password: null,
|
|
state: 1,
|
|
passCode: null
|
|
},
|
|
time: 0,
|
|
storeId:null,
|
|
}
|
|
},
|
|
onLoad() {},
|
|
methods: {
|
|
|
|
changeBox(e){
|
|
console.log(e);
|
|
this.checkbox.checked = !this.checkbox.checked
|
|
|
|
// if(this.checkbox.checked ==false){
|
|
// this.checkbox.checked = e.detail.value;
|
|
|
|
// }else{
|
|
// this.checkbox.checked = !e.detail.value;
|
|
// }
|
|
},
|
|
memberOne(e){
|
|
var that = this
|
|
if (that.loginShow==false) {
|
|
that.$api.staffLoginList({
|
|
mobilePhone: e.target.value,
|
|
state: 1
|
|
}).then(res => {
|
|
if (res.code == '000000') {
|
|
if (res.rows.length==0) {
|
|
uni.showModal({
|
|
title: '登录提示',
|
|
content: "没有查到相关员工信息 , 请确认员工手机是否正确",
|
|
showCancel: false,
|
|
})
|
|
} else{
|
|
that.storeId = res.rows[0].storeId
|
|
}
|
|
} else {
|
|
uni.showModal({
|
|
title: '登录提示',
|
|
content: "手机号查询员工列表 , " +res.message,
|
|
showCancel: false,
|
|
})
|
|
}
|
|
})
|
|
}
|
|
},
|
|
/* 校验结果回调函数 */
|
|
verifyResult(res) {
|
|
console.log(res.flag);
|
|
this.resultData = res;
|
|
if(this.resultData.flag == false){
|
|
uni.showModal({
|
|
title: '登录提示',
|
|
content: "验证失败 ! 请下拉刷新页面重试 ",
|
|
showCancel: false,
|
|
})
|
|
}
|
|
console.log(this.resultData);
|
|
},
|
|
/* 校验插件重置 */
|
|
verifyReset() {
|
|
if (this.$refs.verifyElement1) {
|
|
this.$refs.verifyElement1.reset();
|
|
this.$refs.verifyElement2.reset();
|
|
}
|
|
/* 删除当前页面的数据 */
|
|
this.resultData = {};
|
|
},
|
|
logIn() {
|
|
var that = this
|
|
that.loadingShow = true
|
|
console.log(this.checkbox.checked);
|
|
if(that.checkbox.checked==true){
|
|
uni.setStorageSync('userPassword',that.form)
|
|
}
|
|
if (that.resultData.flag == true) {
|
|
console.log(123);
|
|
if (that.form.passCode == null) {
|
|
that.$api.phonePassLogin(that.form).then(res => {
|
|
that.loadingShow = false
|
|
if (res.code == '000000') {
|
|
var user = res.data
|
|
user.mobilePhone = that.form.mobilePhone
|
|
uni.setStorageSync('userInfo', user)
|
|
|
|
|
|
setTimeout(function() {
|
|
uni.switchTab({
|
|
url: '../tabBar/mySet/mySet'
|
|
});
|
|
uni.showToast({
|
|
title: '登录成功',
|
|
icon: "success",
|
|
duration: 2000
|
|
});
|
|
}, 500)
|
|
} else {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: res.message,
|
|
showCancel: false,
|
|
success: function(res) {
|
|
that.loadingShow = false
|
|
that.getCodeShow = false
|
|
that.time = 0;
|
|
}
|
|
})
|
|
|
|
}
|
|
})
|
|
|
|
} else {
|
|
that.$api.phoneLogin(that.form).then(res => {
|
|
that.loadingShow = false
|
|
if (res.code == '000000') {
|
|
var user = res.data
|
|
user.mobilePhone = that.form.mobilePhone
|
|
uni.setStorageSync('userInfo', user)
|
|
if(that.checkbox.checked==true){
|
|
uni.setStorageSync('userPassword',that.form)
|
|
}
|
|
setTimeout(function() {
|
|
uni.switchTab({
|
|
url: '../tabBar/mySet/mySet'
|
|
});
|
|
uni.showToast({
|
|
title: '登录成功',
|
|
icon: "success",
|
|
duration: 2000
|
|
});
|
|
}, 500)
|
|
} else {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: res.message,
|
|
showCancel: false,
|
|
success: function(res) {
|
|
that.loadingShow = false
|
|
that.getCodeShow = false
|
|
that.time = 0;
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
} else {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: "请拖动滑块验证信息",
|
|
showCancel: false,
|
|
success: function(res) {
|
|
that.loadingShow = false
|
|
that.getCodeShow = false
|
|
that.time = 0;
|
|
}
|
|
})
|
|
}
|
|
|
|
},
|
|
getCode() {
|
|
let reg = 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/;
|
|
if (reg.test(this.form.mobilePhone)) {
|
|
this.$api.getSmsCode({
|
|
mobilePhone: this.form.mobilePhone,storeId:this.storeId
|
|
}).then(res => {
|
|
if (res.code == '000000') {
|
|
uni.showToast({
|
|
title: '已发送验证码',
|
|
icon: "success",
|
|
duration: 3000
|
|
});
|
|
this.getCodeShow = true
|
|
this.time = 60;
|
|
this.timer();
|
|
} else {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: res.message,
|
|
showCancel: false,
|
|
success: function(res) {
|
|
this.getCodeShow = false
|
|
this.time = 0;
|
|
}
|
|
})
|
|
}
|
|
})
|
|
} else {
|
|
this.getCodeShow = false
|
|
this.time = 0;
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '请输入正确的手机号',
|
|
showCancel: false,
|
|
success: function(res) {
|
|
this.getCodeShow = false
|
|
this.time = 0;
|
|
}
|
|
})
|
|
}
|
|
|
|
},
|
|
timer() {
|
|
if (this.time > 0) {
|
|
this.time--;
|
|
this.getCodeText = (this.time < 10 ? '0' + this.time : this.time) + "s后重新获取";
|
|
setTimeout(this.timer, 1000);
|
|
} else {
|
|
this.time = 0;
|
|
this.getCodeText = "获取验证码";
|
|
this.getCodeShow = false;
|
|
}
|
|
},
|
|
},
|
|
onShow: function() {
|
|
this.verifyReset()
|
|
let form = uni.getStorageSync('userPassword')
|
|
console.log(uni.getStorageSync('userPassword').password);
|
|
if(form.password!=undefined){
|
|
that.resultData.flag == true
|
|
this.logIn()
|
|
}
|
|
console.log(uni.getStorageSync('userPassword'));
|
|
},
|
|
onPullDownRefresh: function() {
|
|
setTimeout(function() {
|
|
uni.reLaunch({
|
|
url: './login',
|
|
});
|
|
uni.showToast({
|
|
title: '刷新成功',
|
|
icon: 'success',
|
|
duration: 2000
|
|
});
|
|
uni.stopPullDownRefresh();
|
|
}, 500);
|
|
},
|
|
}
|
|
</script>
|
|
<style>
|
|
.login {
|
|
background: #dadada;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
}
|
|
|
|
.switch_login {
|
|
text-align: center;
|
|
}
|
|
|
|
.switch_login text {
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
padding: 20upx 0;
|
|
font-size: 32upx;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.avatorWrapper {
|
|
height: 20vh;
|
|
width: 100vw;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.avator {
|
|
width: 200upx;
|
|
height: 200upx;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.avator .img {
|
|
width: 100%;
|
|
}
|
|
|
|
.form {
|
|
padding: 0 100upx;
|
|
}
|
|
|
|
.inputWrapper {
|
|
width: 100%;
|
|
height: 80upx !important;
|
|
background: white;
|
|
border-radius: 30px;
|
|
box-sizing: border-box;
|
|
padding: 0 20px;
|
|
margin-top: 25px;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
.inputWrapper .input {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.inputWrapper .inputCode {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.loginBtn {
|
|
width: 100%;
|
|
height: 80upx;
|
|
background: #77B307;
|
|
border-radius: 50upx;
|
|
margin-top: 50px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.forgotBtn {
|
|
color: #383838;
|
|
font-size: 20upx;
|
|
margin-top: 20px;
|
|
position: fixed;
|
|
bottom: 0;
|
|
width: 100%;
|
|
padding: 0 10%;
|
|
}
|
|
|
|
.forgotBtn_hr {
|
|
margin-top: 20upx;
|
|
height: 1upx;
|
|
width: 35%;
|
|
border-top: #000000 1upx solid;
|
|
}
|
|
|
|
.login uni-button[disabled]:not([type]),
|
|
uni-button[disabled][type=default] {
|
|
color: #FFFFFF;
|
|
background-color: red;
|
|
}
|
|
|
|
.login .cu-btn[disabled] {
|
|
opacity: .3;
|
|
}
|
|
|
|
.login uni-button[disabled] {
|
|
color: #FFFFFF;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.move-verify {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 50upx;
|
|
line-height: 45px;
|
|
}
|
|
|
|
.pathway uni-movable-view.active[data-v-f9d47844] {
|
|
border: #FFFFFF 1px solid;
|
|
}
|
|
</style>
|