uniapp【优化】: 用户登录的状态根据后台开关是否开启,通过分享进去设置上下级

This commit is contained in:
15093570141
2024-10-31 10:40:38 +08:00
committed by Bobo
parent ef8c7e685a
commit 59c193c84d
6 changed files with 142 additions and 114 deletions

View File

@@ -2,7 +2,7 @@
<view class="fix-bottom-btn"> <view class="fix-bottom-btn">
<!-- #ifdef MP-ALIPAY --> <!-- #ifdef MP-ALIPAY -->
<view class="btn"> <view class="btn">
<coreshop-button class="btn" v-bind="$attrs" @onClick="onClick()"></coreshop-button> <coreshop-button v-bind="$attrs" @onClick="onClick()"></coreshop-button>
</view> </view>
<!-- #endif --> <!-- #endif -->

View File

@@ -210,6 +210,7 @@
uni.setStorageSync(UserToken, phoneNumber.data.token); uni.setStorageSync(UserToken, phoneNumber.data.token);
if (phoneNumber.otherData) { if (phoneNumber.otherData) {
userInfoStore.setUserInfo(phoneNumber.otherData); userInfoStore.setUserInfo(phoneNumber.otherData);
uni.removeStorageSync(Invitecode);
handleShowToast('登录成功', 'success'); handleShowToast('登录成功', 'success');
emits('getUserInfo') emits('getUserInfo')
} }

View File

@@ -163,3 +163,9 @@ export enum ShowMenuEnum {
show = 1, show = 1,
hidden = 2 hidden = 2
} }
/** 是否开启二次扫码实现与上级绑定 */
export enum AllowUserSecondBindEnum {
yes = 1,
no = 2,
}

View File

@@ -15,6 +15,7 @@ export interface ShopConfigType {
indexPopupWindowHrefUrl ?: string; indexPopupWindowHrefUrl ?: string;
indexPopupWindowImageUrl ?: string; indexPopupWindowImageUrl ?: string;
invoiceSwitch ?: number; invoiceSwitch ?: number;
isAllowUserSecondBind ?: number;
/** 余额提现 */ /** 余额提现 */
isAllowWithdrawCash ?: number; isAllowWithdrawCash ?: number;

View File

@@ -133,6 +133,8 @@
/** 返回上一个页面 */ /** 返回上一个页面 */
handleShowToast(login.msg, 'success', () => { handleShowToast(login.msg, 'success', () => {
clearInterval(state.intervalTime);
uni.removeStorageSync(Invitecode);
setTimeout(() => { setTimeout(() => {
uni.navigateBack(); uni.navigateBack();
}, 1000) }, 1000)

View File

@@ -1,17 +1,26 @@
<template> <template>
<uv-loading-page :loading="loading" loading-text="加载中..." color="#d33123" loadingColor="#d33123" font-size="24rpx"
bgColor="rgba(255, 255, 255, 0.2)"></uv-loading-page>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue';
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { handleRouteSwitchTab, handleRouteRedirectTo, handleShowToast } from '@/core/utils'; import { handleRouteSwitchTab, handleRouteRedirectTo, handleShowToast } from '@/core/utils';
import { queryDeshare } from '@/core/api'; import { queryDeshare, setMyInvite } from '@/core/api';
import type { Response } from '@/core/models'; import type { Response } from '@/core/models';
import { Invitecode } from '@/core/consts'; import { Invitecode, UserToken } from '@/core/consts';
import { ShareEnum } from '@/core/enum'; import { ShareEnum, AllowUserSecondBindEnum } from '@/core/enum';
import { useShopConfigStore } from '@/core/store';
interface QueryParams { interface QueryParams {
scene : string | number; scene : string | number;
} }
/** 获取项目配置 */
const shopConfigStore = useShopConfigStore();
const loading = ref(true);
onLoad((query : QueryParams) => { onLoad((query : QueryParams) => {
if (query?.scene) { if (query?.scene) {
handleShare(query?.scene) handleShare(query?.scene)
@@ -22,121 +31,130 @@
const handleShare = async (code : string | number) => { const handleShare = async (code : string | number) => {
const shareData : Response<any> = await queryDeshare({ code, }); const shareData : Response<any> = await queryDeshare({ code, });
if (!shareData.status) {
if (shareData.status) { loading.value = false;
uni.setStorageSync(Invitecode, shareData.data?.userShareCode);
switch (Number(shareData.data?.page)) {
/** 首页*/
case ShareEnum.index:
handleRouteSwitchTab();
break;
/** 商品详情页*/
case ShareEnum.goods:
if (shareData.data?.params?.goodsId) {
handleRouteRedirectTo(`/pages/goods/detail?id=${shareData.data?.params?.goodsId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 拼团详情页*/
case ShareEnum.pinTuan:
if (shareData.data?.params?.groupId && shareData.data?.params?.teamId) {
handleRouteRedirectTo(`/pages/subpackage/activity/pinTuan/detail/detail?id=${shareData.data?.params?.groupId}&teamId=${shareData.data?.params?.teamId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 店铺邀请*/
case ShareEnum.inv:
if (shareData.data?.params?.store) {
handleRouteRedirectTo(`/pages/subpackage/distribution/store/index?store=${shareData.data?.params?.store}`)
} else {
handleRouteSwitchTab();
}
break;
/** 文章页面 */
case ShareEnum.article:
if (shareData.data?.params?.articleId) {
handleRouteRedirectTo(`/pages/subpackage/article/category/category?id=${shareData.data?.params?.articleId}&idType=${shareData.data?.params?.articleType}`)
} else {
handleRouteSwitchTab();
}
break;
/** 参团页面 */
case ShareEnum.addPinTuan:
if (shareData.data?.params?.groupId && shareData.data?.params?.teamId) {
handleRouteRedirectTo(`/pages/subpackage/activity/pinTuan/detail/detail?id=${shareData.data?.params?.groupId}&teamId=${shareData.data?.params?.teamId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 自定义页面 */
case ShareEnum.page:
if (shareData.data?.params?.pageCode) {
handleRouteRedirectTo(`/pages/subpackage/custom/custom?code=${shareData.data?.params?.pageCode}`)
} else {
handleRouteSwitchTab();
}
break;
/** 智能表单 */
case ShareEnum.form:
if (shareData.data?.params?.id) {
handleRouteRedirectTo(`/pages/subpackage/form/detail/detail?id=${shareData.data?.params?.id}`)
} else {
handleRouteSwitchTab();
}
break;
/** 团购 */
case ShareEnum.group:
if (shareData.data?.params?.groupId) {
handleRouteRedirectTo(`/pages/subpackage/activity/groupBuying/detail/detail?id=${shareData.data?.params?.groupId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 秒杀 */
case ShareEnum.seckill:
if (shareData.data?.params?.groupId) {
handleRouteRedirectTo(`/pages/subpackage/activity/seckill/detail/detail?id=${shareData.data?.params?.groupId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 代理商*/
case ShareEnum.agent:
if (shareData.data?.params?.store) {
handleRouteRedirectTo(`/pages/subpackage/agency/store/index?store=${shareData.data?.params?.store}`)
} else {
handleRouteSwitchTab();
}
break;
/** 接龙*/
case ShareEnum.solitaire:
if (shareData.data?.params?.id) {
handleRouteRedirectTo(`/pages/subpackage/activity/solitaire/detail/detail?id=${shareData.data?.params?.id}`)
} else {
handleRouteSwitchTab();
}
break;
/** 服务商品*/
case ShareEnum.serviceGoods:
if (shareData.data?.params?.serviceGoodsId) {
handleRouteRedirectTo(`/pages/subpackage/serviceGoods/detail/detail?id=${shareData.data?.params?.serviceGoodsId}`)
} else {
handleRouteSwitchTab();
}
break;
default:
handleRouteSwitchTab();
break;
}
} else {
handleShowToast('跳转失败', 'error', () => { handleShowToast('跳转失败', 'error', () => {
setTimeout(() => { setTimeout(() => {
handleRouteSwitchTab(); handleRouteSwitchTab();
}, 1000) }, 1000)
}) })
return;
} }
/** 登录状态 + 后台开启 设置上下级 */
if (uni.getStorageSync(UserToken) && shopConfigStore.config?.isAllowUserSecondBind === AllowUserSecondBindEnum.yes) {
await setMyInvite({ id: shareData.data?.userShareCode });
}else{
uni.setStorageSync(Invitecode, shareData.data?.userShareCode);
}
loading.value = false;
switch (Number(shareData.data?.page)) {
/** 首页*/
case ShareEnum.index:
handleRouteSwitchTab();
break;
/** 商品详情页*/
case ShareEnum.goods:
if (shareData.data?.params?.goodsId) {
handleRouteRedirectTo(`/pages/goods/detail?id=${shareData.data?.params?.goodsId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 拼团详情页*/
case ShareEnum.pinTuan:
if (shareData.data?.params?.groupId && shareData.data?.params?.teamId) {
handleRouteRedirectTo(`/pages/subpackage/activity/pinTuan/detail/detail?id=${shareData.data?.params?.groupId}&teamId=${shareData.data?.params?.teamId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 店铺邀请*/
case ShareEnum.inv:
if (shareData.data?.params?.store) {
handleRouteRedirectTo(`/pages/subpackage/distribution/store/index?store=${shareData.data?.params?.store}`)
} else {
handleRouteSwitchTab();
}
break;
/** 文章页面 */
case ShareEnum.article:
if (shareData.data?.params?.articleId) {
handleRouteRedirectTo(`/pages/subpackage/article/category/category?id=${shareData.data?.params?.articleId}&idType=${shareData.data?.params?.articleType}`)
} else {
handleRouteSwitchTab();
}
break;
/** 参团页面 */
case ShareEnum.addPinTuan:
if (shareData.data?.params?.groupId && shareData.data?.params?.teamId) {
handleRouteRedirectTo(`/pages/subpackage/activity/pinTuan/detail/detail?id=${shareData.data?.params?.groupId}&teamId=${shareData.data?.params?.teamId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 自定义页面 */
case ShareEnum.page:
if (shareData.data?.params?.pageCode) {
handleRouteRedirectTo(`/pages/subpackage/custom/custom?code=${shareData.data?.params?.pageCode}`)
} else {
handleRouteSwitchTab();
}
break;
/** 智能表单 */
case ShareEnum.form:
if (shareData.data?.params?.id) {
handleRouteRedirectTo(`/pages/subpackage/form/detail/detail?id=${shareData.data?.params?.id}`)
} else {
handleRouteSwitchTab();
}
break;
/** 团购 */
case ShareEnum.group:
if (shareData.data?.params?.groupId) {
handleRouteRedirectTo(`/pages/subpackage/activity/groupBuying/detail/detail?id=${shareData.data?.params?.groupId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 秒杀 */
case ShareEnum.seckill:
if (shareData.data?.params?.groupId) {
handleRouteRedirectTo(`/pages/subpackage/activity/seckill/detail/detail?id=${shareData.data?.params?.groupId}`)
} else {
handleRouteSwitchTab();
}
break;
/** 代理商*/
case ShareEnum.agent:
if (shareData.data?.params?.store) {
handleRouteRedirectTo(`/pages/subpackage/agency/store/index?store=${shareData.data?.params?.store}`)
} else {
handleRouteSwitchTab();
}
break;
/** 接龙*/
case ShareEnum.solitaire:
if (shareData.data?.params?.id) {
handleRouteRedirectTo(`/pages/subpackage/activity/solitaire/detail/detail?id=${shareData.data?.params?.id}`)
} else {
handleRouteSwitchTab();
}
break;
/** 服务商品*/
case ShareEnum.serviceGoods:
if (shareData.data?.params?.serviceGoodsId) {
handleRouteRedirectTo(`/pages/subpackage/serviceGoods/detail/detail?id=${shareData.data?.params?.serviceGoodsId}`)
} else {
handleRouteSwitchTab();
}
break;
default:
handleRouteSwitchTab();
break;
}
} }
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>