【愚公系列】2022年09月 微信小程序-小程序登录面板功能实现
2023-06-13 09:13:35 时间
文章目录
前言
一、小程序登录面板功能实现
1.主页面
<button bindtap="showLoginPanel2" type="primary">手动打开登录面板</button>
<LoginPanel2 show="{{showLoginPanel2}}"></LoginPanel2>
showLoginPanel2(e) {
this.setData({
showLoginPanel2: true
})
},
2.登录组件
// components/login2/index.js
Component({
/**
* 组件的属性列表
*/
properties: {
show: {
type: Boolean,
value: false
}
},
observers: {
'show': function (value) {
this.setData({
visible: value
})
}
},
/**
* 组件的初始数据
*/
data: {
visible: false
},
/**
* 组件的方法列表
*/
methods: {
close(e){
this.setData({
visible: false
})
},
async login(e){
let {
userInfo,
encryptedData,
iv
} = e.detail
let token = null
let tokenIsValid = false
try {
await getApp().wxp.checkSession()
token = wx.getStorageSync('token')
if (token) {
tokenIsValid = true
}
} catch (error) {}
if (!tokenIsValid) {
let res1 = await getApp().wxp.login()
let code = res1.code
let res = await getApp().wxp.request({
url: 'http://localhost:3000/user/wexin-login2',
method: 'POST',
header: {
'content-type': 'application/json'
},
data: {
code,
userInfo,
encryptedData,
iv
}
})
console.log('登录接口请求成功', res.data)
token = res.data.data.authorizationToken
wx.setStorageSync('token', token)
console.log('authorization', token)
}
getApp().globalData.token = token
wx.showToast({
title: '登陆成功了',
})
this.close()
this.triggerEvent('loginSuccess')
getApp().globalEvent.emit('loginSuccess')
},
}
})
{
"component": true,
"usingComponents": {
"pop-up":"../pop-up2"
}
}
<pop-up visible="{{visible}}">
<view slot="content">
<view class="picker-view">
<view class="picker-view__pane">
<text bindtap="close">取消</text>
</view>
<text>引导用户单击按钮登录:</text>
<button bindgetuserinfo="login" open-type="getUserInfo" type="primary">登陆</button>
</view>
</view>
</pop-up>
/* components/login2/index.wxss */
.picker-view {
width: 100%;
display: flex;
background-color: #fff;
flex-direction: column;
justify-content: center;
align-items: center;
bottom: 0rpx;
left: 0rpx;
}
.picker-item {
line-height: 70rpx;
margin-left: 5rpx;
margin-right: 5rpx;
text-align: center;
}
.picker-view__pane {
height: 100rpx;
width: 100%;
padding: 20rpx 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
}
.picker-view__pane text{
color: #00cc88;
font-size: 30rpx;
}
.pick-view__group {
width: 96%;
height: 450rpx;
}
3.pop-up面板组件
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
/**
* 组件的属性列表
*/
properties: {
visible: {
type: Boolean,
value: false
}
},
/**
* 组件的初始数据
*/
data: {},
ready(){
this.triggerEvent('ready')
},
/**
* 组件的方法列表
*/
methods: {
popPreventTouchmove() { },
popPreventTouchmove2() { },
popPreventTouchmove3() { },
cityChange() { },
close() {
this.triggerEvent('close')
},
handleClickMask(e) {
// console.log(e)
if (e.target.dataset.type !== 'unclose') this.close()
}
}
})
<view catchtouchmove="popPreventTouchmove">
<view class="q-pp-mask {{ visible ? 'q-pp-mask-show' : '' }} ptp_exposure" bindtap="handleClickMask" catchtouchmove="popPreventTouchmove">
<view class=" q-pp {{ visible ? 'q-pp-show' : '' }}" catchtouchmove="popPreventTouchmove">
<slot name="content" data-type="unclose"></slot>
</view>
</view>
</view>
.q-pp {
position: fixed;
width: 100%;
box-sizing: border-box;
left: 0;
right: 0;
bottom: 0;
background: #f7f7f7;
transform: translate3d(0, 100%, 0);
transform-origin: center;
transition: all 0.2s ease-in-out;
z-index: 900;
visibility: hidden;
}
.q-pp-show {
transform: translate3d(0, 0, 0);
visibility: visible;
}
.q-pp-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
z-index: 900;
transition: all 0.2s ease-in-out;
opacity: 0;
visibility: hidden;
}
.q-pp-mask-show {
opacity: 1;
visibility: visible;
}
4.效果
相关文章
- 微信小程序调用摄像头实现拍照功能
- 【愚公系列】2022年08月 微信小程序-view冒泡事件详解
- 【愚公系列】2022年08月 微信小程序-纵向和横向选项卡功能实现
- 微信小程序+PHP 实现授权登录
- 微信小程序组件如何让向外部传值
- 【说站】多功能起名查重工具微信小程序源码
- 【说站】掌上题库微信小程序源码 下载全开源版本
- 【说站】紫色UI趣味测试微信小程序源码下载包含多种评测
- 【愚公系列】2022年08月 微信小程序-自定义导航栏功能的实现
- 【愚公系列】2022年09月 微信小程序-three.js加载3D模型
- 【愚公系列】2022年10月 微信小程序-电商项目-小微商户支付后端功能实现(node版)
- 【愚公系列】2022年10月 微信小程序-优购电商项目-自定义组件
- 微信小程序轮播图demo
- 微信小程序cover-view、view标签内文字无法自动换行的解决办法
- 使用Xposed进行微信小程序API的hook
- 开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门
- Android实现微信自动抢红包的程序详解手机开发
- 新型微信小程序借助Redis缓存实现极致性能(微信小程序redis缓存)