1.了解分享,砍一刀結構流程
(1).分享
創建點擊事件觸發分享事件》創建需要分享的頁面》使用官方的頁面生命周期函數onShareAppMessage》監聽分享事件構建后續業務邏輯
(2).砍一刀
接收分享的頁面》驗證登錄情況》點擊砍價事件》判斷是否已經砍過》砍價成功后與分享前頁面的交互
2.分享邏輯代碼
(1).創建分享事件 使用button標簽類型為share
<button class="btn" open-type="share">
<text>邀請好友砍價</text>
</button>
(2).分享邏輯
// 頁面生命周期函數,自定義此頁面的轉發給好友(已經有全局的分享方法,此處會覆蓋全局)
onShareAppMessage(res) {
return {
//分享預覽頁的標題
title: '朋友邀請您來砍價哦!',
//需要分享的頁面路徑和需要傳遞的參數,例如:當前需要分享的頁面路徑是/pagesA/share/share
path:
'/pagesA/share/share?orderId=' + orderId + '&userIds=' + userIds
//分享預覽頁的圖片
imageUrl: ' '
};
},
3.砍一刀邏輯代碼
(1).調用后端接口,判斷已砍和未砍
getmyFriendBargainInfo() {
//具體請求參數和后端協商 例如:bargainOrDoughId:傳過來的訂單id,friendUserId:幫助砍價人的賬號id,driverUserId:發起砍價人的賬號id
this.api.myFriendBargainInfo({ bargainOrDoughId: this.options.orderId, friendUserId: uni.getStorageSync('userId'), driverUserId: this.options.userIds }).then(res => {
console.log(res);
this.message = res.data.data;
});
},
(2).砍一刀邏輯
bargainHelp() {
//判斷是否已經砍過了
if (this.message.myFriendBargainIdStatus == 0) {
this.api
.UserBargaining({ bargainId: this.options.id, driverUserId:uni.getStorageSync('userId') })
.then(red => {
console.log(red);
this.getmyFriendBargainInfo();
//砍價成功后向外發出一個事件,為了與分享前的頁面做交互,分享前的頁面接受參數后,會更新砍價進度,重新刷新數據渲染頁面
uni.$emit('bargainOrderUpdate', { msg: '砍價頁面更新' });
uni.showToast({
title: '砍價成功',
duration: 2000
});
})
.catch(() => {
this.tui.toast('砍價失敗');
});
} else if (this.message.myFriendBargainIdStatus == 1) {
this.tui.toast('您已經砍過了');
}
},
4.交互
//接受砍價頁發送出來的事件
uni.$on("bargainUpdate",data => {
//幫助砍價成功后執行的后續邏輯,比如頁面砍價進度的刷新...
})