yitisheng-mini-app/pages/zyb/login.vue

500 lines
13 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.

<!--登录页面-->
<script>
import ApiConstant from "@/common/ApiConstant";
import Request from '@/common/request'
import StaticConstant from "@/common/StaticConstant";
import commonTool from "../../common/js/commonTool";
import {stringIsNotEmpty} from "../../common/util";
let request = new Request()
export default {
name: "home",
components: {},
computed: {
StaticConstant() {
return StaticConstant
}
},
data() {
return {
systemName:'',
checkFlag: false,
showType: 1,
formData: {
userName: '',
password: '',
password2:''
},
isTick: true,
showFlag:false
}
},
onReady() {
},
onShow(){
// #ifdef MP-TOUTIAO
this.dyLogin()
// #endif
// #ifdef MP-WEIXIN
this.showFlag =true
// #endif
},
methods: {
//其他设备下线提示
otherSystemMessage(r){
if (r.result.loginState && r.result.loginState === 'more') {
uni.showToast({
title: '其他设备已下线,请稍等',
icon: 'none'
})
}
},
//刷新到首页
reloadHome(){
setTimeout(function () {
wx.reLaunch({
url: '/pages/zyb/home',
})
}, 500)
},
//抖音登录
dyLogin(){
//今日头条用户信息授权
let that = this
uni.login({
provider: 'toutiao',
success: function(loginRes) {
console.log(loginRes);
request.post(ApiConstant.User.dyLogin, {
code: loginRes.code,
anonymousCode: loginRes.anonymousCode,
}).then(r => {
console.log('请求登录', r)
if (r.success) {
console.log(r)
that.otherSystemMessage(r)
//token
uni.setStorageSync('token', r.result.token)
//用户信息
if (r.result.userInfo) {
uni.setStorageSync('userInfo', r.result.userInfo)
}
//vip信息
commonTool.checkVipInfo(r.result.vipInfo)
//重新打开首页
that.reloadHome()
} else {
uni.showToast({
title: r.message,
icon: 'none'
})
}
}).catch(err => {
}).finally(() => {
});
}
});
},
getPhoneNumber(e) {
console.log(e.detail.errMsg);
console.log(e.detail.iv);
console.log(e.detail.encryptedData);
if (!this.checkFlag) {
uni.showToast({
title: '请阅读后同意《'+this.systemName+'用户协议》',
icon: 'none'
})
return
}
var sessionKey = ''
if (e && e.detail && e.detail.code) {
//选择授权
uni.login({
success: (res) => {
console.log('获取code', res)
if (res.code) {
let code = res.code
request.post(ApiConstant.User.wxLogin, {
code: code,
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
}).then(r => {
console.log('请求登录', r)
if (r.success) {
console.log(r)
this.otherSystemMessage(r)
//token
uni.setStorageSync('token', r.result.token)
//用户信息
if (r.result.userInfo) {
uni.setStorageSync('userInfo', r.result.userInfo)
}
//vip信息
commonTool.checkVipInfo(r.result.vipInfo)
//重新打开首页
this.reloadHome()
} else {
uni.showToast({
title: '微信授权登录失败',
icon: 'none'
})
}
}).catch(err => {
}).finally(() => {
});
} else {
uni.showModal({
title: '未获取到code'
})
}
}
});
} else {
uni.showToast({
title: '授权失败,请同意授权',
icon: 'none'
})
return
}
console.log(e)
},
//密码登录
pwdLogin() {
if (!stringIsNotEmpty(this.formData.userName)) {
uni.showToast({
title: '请输入用户名',
icon: 'none'
})
return
}
if (!stringIsNotEmpty(this.formData.password)) {
uni.showToast({
title: '请输入密码',
icon: 'none'
})
return
}
request.post(ApiConstant.User.login, {
username: this.formData.userName,
password: this.formData.password
}).then(r => {
if (r.success) {
console.log(r)
this.otherSystemMessage(r)
//token
uni.setStorageSync('token', r.result.token)
//用户信息
if (r.result.userInfo) {
uni.setStorageSync('userInfo', r.result.userInfo)
}
//vip信息
commonTool.checkVipInfo(r.result.vipInfo)
//重新打开首页
this.reloadHome()
} else {
uni.showToast({
title: r.message,
icon: 'none'
})
}
}).catch(err => {
}).finally(() => {
});
},
register(){
if (!stringIsNotEmpty(this.formData.userName)) {
uni.showToast({
title: '请输入手机号码',
icon: 'none'
})
return
}
let phoneNumberPattern = /^1[3-9]\d{9}$/;
let isValidPhoneNumber = phoneNumberPattern.test(this.formData.userName);
if (!isValidPhoneNumber) {
uni.showToast({
title: '手机号码格式不正确',
icon: 'none'
})
return
}
if (!stringIsNotEmpty(this.formData.password)) {
uni.showToast({
title: '请输入密码',
icon: 'none'
})
return
}
if (this.formData.password!==this.formData.password2) {
uni.showToast({
title: '两次密码不一致',
icon: 'none'
})
return
}
request.post(ApiConstant.User.register, {
username: this.formData.userName,
password: this.formData.password
}).then(r => {
if (r.success) {
console.log(r)
setTimeout(function () {
uni.showToast({
title: '注册成功',
icon: 'none'
})
}, 100)
//token
uni.setStorageSync('token', r.result.token)
//用户信息
if (r.result.userInfo) {
uni.setStorageSync('userInfo', r.result.userInfo)
}
//vip信息
commonTool.checkVipInfo(r.result.vipInfo)
//重新打开首页
this.reloadHome()
} else {
uni.showToast({
title: r.message,
icon: 'none'
})
}
}).catch(err => {
}).finally(() => {
});
},
//显示密码输入框
showPwdInput() {
},
gotoMianze() {
uni.navigateTo({
url: '/pages/zyb/other/disclaimer'
})
},
gotoXieyi() {
uni.navigateTo({
url: '/pages/zyb/other/userAgreement'
})
},
checkboxChange(r) {
console.log(r)
if (r.detail.value && r.detail.value.length > 0) {
this.checkFlag = true
} else {
this.checkFlag = false
}
}
},
onload() {
this.systemName = commonTool.getSystemName()
}
}
</script>
<template>
<view class="header" style="border-top:3rpx solid #f6f6f6"></view>
<view class="content" v-if="showFlag">
<view class="textcenter">
<view class="flex">
<view class="title">
{{ StaticConstant.systemName }}
</view>
</view>
</view>
<view class="textcenter">
<text class="low-title">
<!-- 全国<text style="font-size: 35rpx">600</text>+考生的选择-->
艺术生 更轻松的报志愿
</text>
</view>
<view style="margin-top: 200rpx" v-if="showType===1">
<button class='login-but' v-if="!checkFlag" @click="getPhoneNumber">
/*#ifdef MP-TOUTIAO*/
抖音一键登录
/*#endif*/
/*#ifdef MP-WEIXIN*/
手机号快捷登录
/*#endif*/
</button>
/*#ifdef MP-TOUTIAO*/
<button class='login-but' v-if="checkFlag" @click="dyLogin">
抖音一键登录
</button>
/*#endif*/
/*#ifdef MP-WEIXIN*/
<button class='login-but' v-if="checkFlag" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
手机号快捷登录
</button>
/*#endif*/
<button class='login-pwd-but margin-top-20' @click="showType=2">
账号密码登录
</button>
</view>
<view style="margin-top: 180rpx" class="uni-padding-wrap border-top" v-if="showType===2">
<view class="forms">
<view class="form-item">
<view class="form-item-view form-input">
<input class="uni-input" type="text"
v-model="formData.userName"
name="contactPersonPhone"
:placeholder="'请输入用户名或手机号'"/>
</view>
</view>
<view class="form-item">
<view class="form-item-view form-input">
<input class="uni-input" type="password" password="true"
v-model="formData.password"
name="password"
:placeholder="'请输入密码'"/>
</view>
</view>
<view class="form-item">
<button class='login-but margin-top-20' :disabled="!checkFlag" :class="checkFlag?'':'login-but-disabled'"
@click="pwdLogin">
登录
</button>
</view>
</view>
<view>
<text @click="showType=1" class="redOrange">快捷登录</text>
</view>
</view>
<!--注册-->
<view style="margin-top: 180rpx" class="uni-padding-wrap border-top" v-if="showType===3">
<view class="forms">
<view class="form-item">
<view class="form-item-view form-input">
<input class="uni-input" type="text"
v-model="formData.userName"
name="contactPersonPhone"
:placeholder="'请输入手机号'"/>
</view>
</view>
<view class="form-item">
<view class="form-item-view form-input">
<input class="uni-input" type="password" password="true"
v-model="formData.password"
name="password"
:placeholder="'请输入密码'"/>
</view>
</view>
<view class="form-item">
<view class="form-item-view form-input">
<input class="uni-input" type="password" password="true"
v-model="formData.password2"
name="password2"
:placeholder="'请再次输入密码'"/>
</view>
</view>
</view>
<view>
<text @click="showType=1" class="redOrange">快捷登录</text>
</view>
</view>
<view class="uni-flex flex" style="margin-top: 100rpx">
<checkbox-group @change="checkboxChange">
<label>
<checkbox value="cb"/>
登录代表{{ systemName }}
<text style="color: #4975fd" @click="gotoXieyi">{{systemName}}用户协议、</text>
<text style="color: #4975fd" @click="gotoMianze">免责声明、</text>
并授权使用您的{{ systemName }}账号信息(如昵称、头像)以便您统一管理
</label>
</checkbox-group>
</view>
</view>
</template>
<style scoped lang="scss">
.content {
margin-top: 200rpx;
padding: 30rpx;
}
.container {
height: 100%;
}
.uni-form-item .title {
padding: 20rpx 0;
}
/*表单 start*/
.form-item {
display: flex;
align-items: center;
margin: 30rpx 0;
}
.form-item-label {
width: 20%;
}
.form-item-view {
width: 100%;
min-height: 80rpx;
}
.form-input {
border: 1rpx solid #e6e6e6;
}
.uni-input {
border: none;
}
.textcenter {
text-align: center;
margin: 30rpx 0;
}
/*标题*/
.title {
font-family: "Bookshelf Symbol 7";
margin: 0 auto;
//color:white;
font-size: 90rpx;
font-weight: 600;
}
/*小标题*/
.low-title {
font-size: 40rpx;
}
.login-pwd-but {
color: #222222;
width: 500rpx;
background: #eeeeee;
//background-color: ;
border-radius: 10rpx;
font-weight: 550;
}
///登录按钮
.login-but {
color: white;
width: 500rpx;
//background: linear-gradient(rgba(52, 145, 212, 0.83), #3658d0);
background: linear-gradient(#f96543, #f96543);
//background-color: ;
border-radius: 10rpx;
font-weight: 550;
}
.login-but-disabled {
background: #eeeeee;
}
</style>