refactor: 统一替换小程序事件绑定为@tap并优化跳转逻辑
1. 全局替换@click为@tap以适配uni-app事件规范 2. 优化toLogin方法的路由获取逻辑,增加空值判断 3. 重构redirectTo跳转逻辑,统一tab页跳转使用reLaunch确保页面栈正确
This commit is contained in:
@@ -477,8 +477,13 @@ export default {
|
|||||||
for (let i = 0; i < systemTabBarList.length; i++) {
|
for (let i = 0; i < systemTabBarList.length; i++) {
|
||||||
const tabBarUrl = systemTabBarList[i];
|
const tabBarUrl = systemTabBarList[i];
|
||||||
if (url.indexOf(tabBarUrl) == 0) {
|
if (url.indexOf(tabBarUrl) == 0) {
|
||||||
// 首页特殊处理,采用switchTab, 其他页面采用redirectTo, 不能返回,不能退回
|
// 首页使用switchTab(pages.json中注册的tabBar页面),其他tab页面使用reLaunch
|
||||||
(tabBarUrl == INDEX_PAGE_URL ? uni.switchTab : uni.redirectTo)({ url });
|
// reLaunch关闭所有页面再打开目标页,确保页面栈与浏览器历史一致,避免返回按钮异常
|
||||||
|
if (tabBarUrl == INDEX_PAGE_URL) {
|
||||||
|
uni.switchTab({ url });
|
||||||
|
} else {
|
||||||
|
uni.reLaunch({ url });
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -499,7 +504,8 @@ export default {
|
|||||||
if (isDiyTabRoot) {
|
if (isDiyTabRoot) {
|
||||||
const adaptedUrl = adaptSubpackageUrl(cleanUrl);
|
const adaptedUrl = adaptSubpackageUrl(cleanUrl);
|
||||||
const inSystemTabBar = systemTabBarList.some(sysUrl => adaptedUrl === sysUrl || cleanUrl === sysUrl);
|
const inSystemTabBar = systemTabBarList.some(sysUrl => adaptedUrl === sysUrl || cleanUrl === sysUrl);
|
||||||
const navApi = inSystemTabBar ? uni.switchTab : uni.redirectTo;
|
// 首页用switchTab,其他DIY tab根页用reLaunch确保页面栈干净
|
||||||
|
const navApi = inSystemTabBar ? (adaptedUrl === INDEX_PAGE_URL ? uni.switchTab : uni.reLaunch) : uni.reLaunch;
|
||||||
navApi({
|
navApi({
|
||||||
url,
|
url,
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<view class="head">
|
<view class="head">
|
||||||
<text class="title">{{ $lang('components.ns-login.bindMobileTitle') }}</text>
|
<text class="title">{{ $lang('components.ns-login.bindMobileTitle') }}</text>
|
||||||
<text class="color-tip tips">{{ $lang('components.ns-login.bindMobileTip') }}</text>
|
<text class="color-tip tips">{{ $lang('components.ns-login.bindMobileTip') }}</text>
|
||||||
<text class="iconfont icon-close color-tip" @click="cancelCompleteInfo"></text>
|
<text class="iconfont icon-close color-tip" @tap="cancelCompleteInfo"></text>
|
||||||
</view>
|
</view>
|
||||||
<view class="item-wrap">
|
<view class="item-wrap">
|
||||||
<text class="label">{{ $lang('components.ns-login.mobileLabel') }}</text>
|
<text class="label">{{ $lang('components.ns-login.mobileLabel') }}</text>
|
||||||
@@ -18,16 +18,16 @@
|
|||||||
<view class="item-wrap" v-if="isOpenCaptcha">
|
<view class="item-wrap" v-if="isOpenCaptcha">
|
||||||
<text class="label">{{ $lang('components.ns-login.captchaLabel') }}</text>
|
<text class="label">{{ $lang('components.ns-login.captchaLabel') }}</text>
|
||||||
<input type="number" :placeholder="$lang('components.ns-login.captchaPlaceholder')" v-model="formData.vercode" maxlength="4" />
|
<input type="number" :placeholder="$lang('components.ns-login.captchaPlaceholder')" v-model="formData.vercode" maxlength="4" />
|
||||||
<image :src="captcha.img" class="captcha" @click="getCaptcha" show-menu-by-longpress></image>
|
<image :src="captcha.img" class="captcha" @tap="getCaptcha" show-menu-by-longpress></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="item-wrap">
|
<view class="item-wrap">
|
||||||
<text class="label">{{ $lang('components.ns-login.dynacodeLabel') }}</text>
|
<text class="label">{{ $lang('components.ns-login.dynacodeLabel') }}</text>
|
||||||
<input type="number" :placeholder="$lang('components.ns-login.dynacodePlaceholder')" v-model="formData.dynacode" maxlength="4" />
|
<input type="number" :placeholder="$lang('components.ns-login.dynacodePlaceholder')" v-model="formData.dynacode" maxlength="4" />
|
||||||
<view class="send color-base-text" @click="sendMobileCode">{{ dynacodeData.codeText }}
|
<view class="send color-base-text" @tap="sendMobileCode">{{ dynacodeData.codeText }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<button type="default" class="save-btn" @click="saveH5" :disabled="isDisabled">{{ $lang('components.ns-login.save') }}</button>
|
<button type="default" class="save-btn" @tap="saveH5" :disabled="isDisabled">{{ $lang('components.ns-login.save') }}</button>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
|
|
||||||
<!-- #ifdef MP -->
|
<!-- #ifdef MP -->
|
||||||
@@ -37,21 +37,21 @@
|
|||||||
<template>{{ forceBindingMobileControl ? $lang('components.ns-login.loginWithMobile') : $lang('components.ns-login.registerLogin') }}</template>
|
<template>{{ forceBindingMobileControl ? $lang('components.ns-login.loginWithMobile') : $lang('components.ns-login.registerLogin') }}</template>
|
||||||
{{ $lang('components.ns-login.getServicesTip') }}
|
{{ $lang('components.ns-login.getServicesTip') }}
|
||||||
</text>
|
</text>
|
||||||
<text class="iconfont icon-close color-tip" @click="cancelCompleteInfo"></text>
|
<text class="iconfont icon-close color-tip" @tap="cancelCompleteInfo"></text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 协议勾选 -->
|
<!-- 协议勾选 -->
|
||||||
<view style="display: flex;">
|
<view style="display: flex;">
|
||||||
<view class="iconfont"
|
<view class="iconfont"
|
||||||
:class="isAgree ? 'icon-fuxuankuang1 color-base-text' : 'icon-fuxuankuang2'"
|
:class="isAgree ? 'icon-fuxuankuang1 color-base-text' : 'icon-fuxuankuang2'"
|
||||||
@click="isAgree = !isAgree"></view>
|
@tap="isAgree = !isAgree"></view>
|
||||||
<view style="text-align: left; margin-left: 10rpx; padding-top: 2rpx; font-size: 28rpx;">
|
<view style="text-align: left; margin-left: 10rpx; padding-top: 2rpx; font-size: 28rpx;">
|
||||||
{{ $lang('components.ns-login.agree') }}
|
{{ $lang('components.ns-login.agree') }}
|
||||||
<text style="color: #4395ff;"
|
<text style="color: #4395ff;"
|
||||||
@click="tourl('/pages_tool/agreement/contenr?type=0')">{{ $lang('components.ns-login.privacyPolicy') }}</text>
|
@tap="tourl('/pages_tool/agreement/contenr?type=0')">{{ $lang('components.ns-login.privacyPolicy') }}</text>
|
||||||
<text style="color: #4395ff;"
|
<text style="color: #4395ff;"
|
||||||
@click="tourl('/pages_tool/agreement/contenr?type=1')">{{ $lang('components.ns-login.userServiceAgreement') }}</text>
|
@tap="tourl('/pages_tool/agreement/contenr?type=1')">{{ $lang('components.ns-login.userServiceAgreement') }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 手机号授权按钮 -->
|
<!-- 手机号授权按钮 -->
|
||||||
@@ -62,12 +62,12 @@
|
|||||||
</button>
|
</button>
|
||||||
</block>
|
</block>
|
||||||
<block v-else>
|
<block v-else>
|
||||||
<button class="auth-login save-btn border-0" style="border: none;" @click="authno">
|
<button class="auth-login save-btn border-0" style="border: none;" @tap="authno">
|
||||||
<text style="color: #fff; font-size: 30rpx;">{{ $lang('components.ns-login.authorizeMobile') }}</text>
|
<text style="color: #fff; font-size: 30rpx;">{{ $lang('components.ns-login.authorizeMobile') }}</text>
|
||||||
</button>
|
</button>
|
||||||
</block>
|
</block>
|
||||||
|
|
||||||
<view @click="closeLogin"
|
<view @tap="closeLogin"
|
||||||
style="font-size: 30rpx; color: #888; text-align: center; padding-top: 10rpx;">
|
style="font-size: 30rpx; color: #888; text-align: center; padding-top: 10rpx;">
|
||||||
{{ $lang('components.ns-login.notNow') }}
|
{{ $lang('components.ns-login.notNow') }}
|
||||||
</view>
|
</view>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
<text class="color-base-text" v-else>{{ $lang('components.ns-login.getMobile') }}</text>
|
<text class="color-base-text" v-else>{{ $lang('components.ns-login.getMobile') }}</text>
|
||||||
</button>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
<button type="default" class="save-btn" @click="saveMp" :disabled="isDisabled">{{ $lang('components.ns-login.save') }}</button>
|
<button type="default" class="save-btn" @tap="saveMp" :disabled="isDisabled">{{ $lang('components.ns-login.save') }}</button>
|
||||||
</template>
|
</template>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -52,12 +52,12 @@
|
|||||||
<swiper autoplay="true" :circular="true" indicator-active-color="#fff"
|
<swiper autoplay="true" :circular="true" indicator-active-color="#fff"
|
||||||
indicator-color="rgba(255,255,255,0.6)" :indicator-dots="true" interval="3000">
|
indicator-color="rgba(255,255,255,0.6)" :indicator-dots="true" interval="3000">
|
||||||
<swiper-item v-for="(item, index) in adv.list" :key="index">
|
<swiper-item v-for="(item, index) in adv.list" :key="index">
|
||||||
<image class="slide-image" @click="$util.diyRedirectTo(item.link)" height="100%"
|
<image class="slide-image" @tap="$util.diyRedirectTo(item.link)" height="100%"
|
||||||
:src="$util.img(item.imageUrl)" width="100%" show-menu-by-longpress></image>
|
:src="$util.img(item.imageUrl)" width="100%" show-menu-by-longpress></image>
|
||||||
<!-- <image bindtap="adverclose" class="slide-image" height="100%" src="{{item.imgurl}}" width="100%" wx:if="{{item.click==1}}" show-menu-by-longpress></image> -->
|
<!-- <image bindtap="adverclose" class="slide-image" height="100%" src="{{item.imgurl}}" width="100%" wx:if="{{item.click==1}}" show-menu-by-longpress></image> -->
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
<view bindtap="adverclose" class="small-bot-close" @click="closePopupWindow">
|
<view class="small-bot-close" @tap="closePopupWindow">
|
||||||
<i class="iconfont icon-round-close" style="color:#fff"></i>
|
<i class="iconfont icon-round-close" style="color:#fff"></i>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
'height': menuButtonBounding.height + 'px'
|
'height': menuButtonBounding.height + 'px'
|
||||||
}">
|
}">
|
||||||
<view class="navbar-wrap">
|
<view class="navbar-wrap">
|
||||||
<text class="iconfont icon-back_light back" @click="$util.redirectTo($util.MEMBER_PAGE_URL)"></text>
|
<text class="iconfont icon-back_light back" @tap="$util.redirectTo($util.MEMBER_PAGE_URL)"></text>
|
||||||
<view class="navbar-title">
|
<view class="navbar-title">
|
||||||
{{ $lang('member.balance.navbarTitle') }}
|
{{ $lang('member.balance.navbarTitle') }}
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -20,18 +20,18 @@
|
|||||||
<ns-copyright v-show="isShowCopyRight" />
|
<ns-copyright v-show="isShowCopyRight" />
|
||||||
|
|
||||||
<view class="foot">
|
<view class="foot">
|
||||||
<view class="item" @click="tourl('/pages_tool/agreement/contenr?type=0')">{{
|
<view class="item" @tap="tourl('/pages_tool/agreement/contenr?type=0')">{{
|
||||||
$lang('privacyPolicy') }}</view>
|
$lang('privacyPolicy') }}</view>
|
||||||
<view class="item" @click="tourl('/pages_tool/agreement/contenr?type=1')">{{
|
<view class="item" @tap="tourl('/pages_tool/agreement/contenr?type=1')">{{
|
||||||
$lang('registrationAgreement') }}</view>
|
$lang('registrationAgreement') }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 退出登录和账号注销按钮 -->
|
<!-- 退出登录和账号注销按钮 -->
|
||||||
<view class="action-buttons" v-if="storeToken">
|
<view class="action-buttons" v-if="storeToken">
|
||||||
<view class="action-btn cancel-btn" v-if="isShowCancelButton"
|
<view class="action-btn cancel-btn" v-if="isShowCancelButton"
|
||||||
@click="cancellation">{{ $lang('cancellation') }}</view>
|
@tap="cancellation">{{ $lang('cancellation') }}</view>
|
||||||
<view class="action-btn logout-btn" v-if="isShowLogoutButton"
|
<view class="action-btn logout-btn" v-if="isShowLogoutButton"
|
||||||
@click="logout">{{ $lang('logout') }}</view>
|
@tap="logout">{{ $lang('logout') }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -41,9 +41,9 @@
|
|||||||
<uni-popup ref="uniPopupWindow" type="center" class="wap-floating" :maskClick="false">
|
<uni-popup ref="uniPopupWindow" type="center" class="wap-floating" :maskClick="false">
|
||||||
<view class="image-wrap">
|
<view class="image-wrap">
|
||||||
<image :src="$util.img(diyData.global.popWindow.imageUrl)" :style="popWindowStyle"
|
<image :src="$util.img(diyData.global.popWindow.imageUrl)" :style="popWindowStyle"
|
||||||
@click="uniPopupWindowFn()" mode="aspectFit" show-menu-by-longpress/>
|
@tap="uniPopupWindowFn()" mode="aspectFit" show-menu-by-longpress/>
|
||||||
</view>
|
</view>
|
||||||
<text class="iconfont icon-round-close" @click="closePopupWindow"></text>
|
<text class="iconfont icon-round-close" @tap="closePopupWindow"></text>
|
||||||
</uni-popup>
|
</uni-popup>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<view v-if="showTip" class="collectPopupWindow"
|
<view v-if="showTip" class="collectPopupWindow"
|
||||||
:style="{ marginTop: (collectTop + statusBarHeight) * 2 + 'rpx' }">
|
:style="{ marginTop: (collectTop + statusBarHeight) * 2 + 'rpx' }">
|
||||||
<image :src="$util.img('public/uniapp/index/collect2.png')" mode="aspectFit" show-menu-by-longpress/>
|
<image :src="$util.img('public/uniapp/index/collect2.png')" mode="aspectFit" show-menu-by-longpress/>
|
||||||
<text @click="closeCollectPopupWindow">我知道了</text>
|
<text @tap="closeCollectPopupWindow">我知道了</text>
|
||||||
</view>
|
</view>
|
||||||
</uni-popup>
|
</uni-popup>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<view class="navbar-wrap">
|
<view class="navbar-wrap">
|
||||||
<text class="iconfont icon-back_light back" @click="$util.redirectTo($util.MEMBER_PAGE_URL)"></text>
|
<text class="iconfont icon-back_light back" @tap="$util.redirectTo($util.MEMBER_PAGE_URL)"></text>
|
||||||
<view class="navbar-title">
|
<view class="navbar-title">
|
||||||
{{ $lang('member.point.title') }}
|
{{ $lang('member.point.title') }}
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
// 跳转至登录页
|
// 跳转至登录页
|
||||||
toLogin(url) {
|
toLogin(url) {
|
||||||
this.$refs.login.open(url ?? this.$util.getCurrentRoute());
|
const currentRoute = this.$util.getCurrentRoute();
|
||||||
|
const backUrl = url ?? (currentRoute && currentRoute.path ? currentRoute.path : '');
|
||||||
|
this.$refs.login.open(backUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user