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.
apply-assistant-v3/root/person/loginIndex.vue

387 lines
12 KiB
Vue

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="p-login-index">
<!-- 15936360682 -->
<view class="g_h_70"></view>
<view class="g_flex_row_center g_mb_10">
<img :src="v3BaseImg + 'bmzz.svg'" alt class="g_w_56 g_h_56 g_radius_8" />
</view>
<view style="font-size: 18px; font-weight: 400; color: #919191; line-height: 25px; margin-bottom: 60px; text-align: center">劳务上下游收发单工具</view>
<view class="m-form g_mb_50 g_pl_40 g_pr_40">
<view class="g_bg_f_5 g_radius_6 g_pl_16 g_pr_16 g_flex_column_center g_pt_10 g_pb_10 g_mb_20">
<u-input maxlength="11" v-model="form.tel" type="number" class="g_fs_16" placeholder="请输入手机号" placeholder-style="color:#999999;font-size:32rpx;line-height:1" />
</view>
<view class="g_bg_f_5 g_radius_6 g_pl_16 g_flex_column_center g_position_rela" v-if="isLoginCode">
<view class="g_flex_row_between">
<view class="g_flex_1 g_mr_20 g_pt_10 g_pb_10">
<u-input maxlength="4" v-model="msgCode.code" @input="hideKeyboard" type="number" class="g_fs_16" placeholder="请输入验证码" placeholder-style="color:#999999;font-size:32rpx;line-height:1" />
</view>
<view class="btn-text g_flex_column_center g_bg_f_5 g_radius_6 g_flex_none g_pt_8 g_pb_8" @click="handleSendMsg">
<button :class="form.tel.length == 11 ? (msgCode.countdown > 0 ? 'g_c_9' : 'g_c_main') : 'g_c_9'" class="btn-con g_w_126 g_flex_row_center" style="font-size: 32rpx">{{ msgCode.btnText }}</button>
</view>
</view>
</view>
<view v-if="!isLoginCode" class="g_bg_f_5 g_radius_6 g_pl_16 g_pr_16 g_flex_column_center g_pt_10 g_pb_10">
<u-input v-model="form.pwd" type="password" class="g_fs_16" placeholder="请输入密码" placeholder-style="color:#999999;font-size:32rpx;line-height:1" />
</view>
<view class="g_fs_14 g_pl_16 g_mt_8" style="color: #576b95" @click="isLoginCode = !isLoginCode">{{ isLoginCode ? "密码登录" : "验证码登录" }}</view>
</view>
<view>
<view class="g_flex_row_center">
<g-button btnText="登录/注册" type="primary" @clickBtn="goHome" width="260" height="48" />
</view>
<!-- #ifdef MP-WEIXIN -->
<view class="g_flex_row_center g_mt_24 g_mb_24">
<view class="g_flex_column_center">
<view class="bor g_w_90 g_h_1 g_border_e_b"></view>
</view>
<view class="g_flex_column_center g_fs_15 g_c_9 g_ml_9 g_mr_9">或</view>
<view class="g_flex_column_center">
<view class="bor g_w_90 g_h_1 g_border_e_b"></view>
</view>
</view>
<view class="g_mt_24 g_flex_row_center">
<g-button width="260" height="48" btnText="一键免密登录" type="default" openType="getPhoneNumber" @clickTel="getphonenumber" />
</view>
<!-- #endif -->
</view>
</view>
</template>
<script>
export default {
onShareAppMessage() {
return this.G.shareFun()
},
data() {
return {
localBaseImg: this.G.store().localBaseImg,
v3BaseImg: this.G.store().v3BaseImg,
isLoginCode: true,
form: {
tel: '',
pwd: '',
},
path: '',
level: '',
msgCode: {
// 短信倒计时
code: '',
btnText: '获取验证码', // 6s
countdown: 0,
timer: null,
},
fromPageType: '',
currentId: null,
}
},
onLoad(options) {
console.log('登录页:', options)
this.path = options.path ? options.path : ''
this.level = options.level ? options.level : ''
if (options.type) {
this.setOptions(options)
}
console.log('123')
this.getCode((res) => {
uni.setStorageSync('apply-code', res)
})
},
onShow() {
this.G.clearLocalStorage()
},
onHide() {
if (this.msgCode.timer) {
clearInterval(this.msgCode.timer)
}
},
methods: {
hideKeyboard(e) {
console.log(e)
if (e.length >= 4) {
console.log('123123123')
uni.hideKeyboard()
}
},
setOptions(options) {
console.log('options', options)
this.fromPageType = options.type
if (options.type == 'detail') {
this.currentId = options.id
}
},
goHome() {
let that = this,
url = '',
params = {}
if (that.form.tel == '') {
uni.showToast({
title: '请输入手机号',
icon: 'none',
})
return false
}
if (!/^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(that.form.tel)) {
uni.showToast({
title: '请输入正确的手机号',
icon: 'none',
})
return false
}
if (that.isLoginCode) {
// 验证码登录
if (that.msgCode.code == '') {
uni.showToast({
title: '请输入验证码',
icon: 'none',
})
return false
}
url = that.api.login_code
params = {
tel: that.form.tel,
code: that.msgCode.code,
loginType: 'login',
wxCode: '',
}
} else {
// 密码登录
if (that.form.pwd == '') {
uni.showToast({
title: '请输入密码',
icon: 'none',
})
return false
}
url = that.api.login_user
params = {
tel: that.form.tel,
password: that.form.pwd,
loginType: 'password',
wxCode: '',
}
}
uni.showLoading({
title: '登录中...',
mask: true,
})
// #ifdef MP-WEIXIN
uni.checkSession({
success() {
//session_key 未过期,并且在本生命周期一直有效
that.loginAccount(url, params)
},
fail() {
// session_key 已经失效,需要重新执行登录流程
that.getCode((res) => {
uni.setStorageSync('apply-code', res)
setTimeout(() => {
that.loginAccount(url, params)
}, 300)
})
},
})
// #endif
// #ifdef H5 || APP-PLUS || MP-TOUTIAO || MP-KUAISHOU
that.loginAccount(url, params)
// #endif
},
loginAccount(url, params) {
let that = this,
_params = {}
params.wxCode = uni.getStorageSync('apply-code')
_params = Object.assign(params, {
path: that.path,
})
console.log('登录参数:', _params, ' 获取分享参数:', uni.getStorageSync('apply-jobdetail-id'))
that.G.Get(url, _params, (res) => {
console.log('登录成功:', res)
that.setToken(res)
})
},
getCode(callback = () => {}) {
uni.login({
success(wxRes) {
callback(wxRes.code)
},
fail(res) {
console.log(res)
},
})
},
getphonenumber(e) {
let that = this
if (e.detail.code) {
// 允许授权。拿button返回信息换取token
uni.checkSession({
success() {
//session_key 未过期,并且在本生命周期一直有效
that.loginWX(e)
},
fail() {
// session_key 已经失效,需要重新执行登录流程
that.getCode((res) => {
uni.setStorageSync('apply-code', res)
setTimeout(() => {
that.loginWX(e)
}, 300)
})
},
})
} else {
// 拒绝授权。
}
},
loginWX(e) {
let that = this
that.G.Get(
that.api.login_getWxInfo,
{
code: uni.getStorageSync('apply-code'),
btnCode: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
(wxRes) => {
that.G.Get(
that.api.login_wechat,
{
openId: wxRes.openId,
tel: wxRes.phoneNumber,
unionid: wxRes.unionid,
},
(res) => {
that.setToken(res)
}
)
}
)
},
// 处理存储token
setToken($data) {
let that = this
console.log('获取登录用户信息:', $data)
uni.hideLoading()
uni.setStorageSync('apply-userinfo', $data) // 获取用户信息, 参与实际逻辑
uni.setStorageSync('apply-userinfo-copy', JSON.stringify($data)) // 仅用于查看数据,不参与实际逻辑
uni.setStorageSync('apply-avatar', $data.imgSrc) // 单独存储 -- 头像,方便修改
uni.setStorageSync('apply-username', $data.userName) // 单独存储 -- 用户名,方便修改
uni.setStorageSync('apply-tel', $data.tel) // 单独存储 -- 手机号,方便修改
uni.setStorageSync('apply-token', $data.token) // 单独存储 -- token方便获取
uni.setStorageSync('apply-agencyId', $data.user.agencyId) // 单独存储 -- 代理id方便获取
uni.setStorageSync('apply-uid', $data.user.id) // 单独存储 -- 用户名,方便修改
uni.setStorageSync('apply-supplierAccount', $data.supplierAccount) // 单独存储 -- 是否是发单号,方便获取 0.不是发单号 1.是发单号
uni.$emit('isGlogin', {
uid: $data.user.id,
})
if (!that.path) {
uni.switchTab({
url: '/pages/home/index',
})
} else if (that.fromPageType == 'detail') {
uni.reLaunch({
url: `${that.path}?id=${that.currentId}`,
})
uni.navigateBack({
delta: 1,
})
return
} else {
// 固定跳首页
uni.reLaunch({
url: that.path,
})
}
// if ($data.agencyStatus == 1) {
that.G.Get(that.api.login_agencyInfo, {}, (aRes) => {
console.log('获取团队信息:', aRes)
uni.setStorageSync('agencyInfo', aRes.agency) // 1是创建者 2是普通成员
uni.setStorageSync('IS_CREATOR', aRes.agency.userId == $data.user.id || $data.admin == true ? 1 : 2) // 1是创建者 2是普通成员
// 登录跳转到首页的判断
uni.setStorageSync('SHOW_INVITE', 1)
})
// }
},
// 发送验证码
handleSendMsg() {
let that = this
if (this.msgCode.countdown > 0) {
return false
}
if (that.form.tel == '') {
uni.showToast({
title: '请输入手机号后再获取',
icon: 'none',
})
return false
}
if (!/^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(that.form.tel)) {
uni.showToast({
title: '请输入正确的手机号',
icon: 'none',
})
return false
}
that.G.Get(
that.api.login_sendMsg,
{
tel: that.form.tel,
},
(res) => {
that.msgCode.countdown = 60
that.msgCode.btnText = that.msgCode.countdown + 's'
clearInterval(that.msgCode.timer)
that.msgCode.timer = setInterval(() => {
if (that.msgCode.countdown > 0) {
that.msgCode.countdown--
that.msgCode.btnText = that.msgCode.countdown + 's'
} else {
clearInterval(that.msgCode.timer)
that.msgCode.timer = null
that.msgCode.btnText = '获取验证码'
}
}, 1000)
}
)
},
},
}
</script>
<style lang="scss">
.p-login-index {
/* #ifdef MP-TOUTIAO || MP-KUAISHOU */
min-height: 100%;
background-color: #fff;
/* #endif */
.btn-text {
.btn-con {
border-left: 2rpx solid #e5e5e5;
padding: 0 32rpx;
background-color: transparent;
border-radius: 0;
height: 40rpx;
line-height: 40rpx;
}
}
.tel-btn {
width: 500rpx;
height: 84rpx;
border: 2rpx solid #00b666;
left: 50%;
transform: translateX(-50%);
top: 0;
border-radius: 48rpx;
opacity: 0;
}
}
</style>