wangguoyu 1 month ago
parent
commit
7f42fc7a54
1 changed files with 168 additions and 0 deletions
  1. 168 0
      components/custom-tabbar/custom-tabbar copy.vue

+ 168 - 0
components/custom-tabbar/custom-tabbar copy.vue

@@ -0,0 +1,168 @@
+<template>
+	<view class="ezy-custom-tabbar">
+		<view class="tabbar-item-box" v-for="(item, index) in tabList" :key="index" @click="switchTab(item.path,index)">
+			<view class="tabbar-item"
+				:style="{ backgroundImage: 'url(' + (currentTab == index ? item.activePath : item.iconPath) + ')' }">
+			</view>
+		</view>
+	</view>
+	<tip-big-dialog ref="youkeDialogRef" @confirm-btn="ykConfirm" :imgShow="true"></tip-big-dialog>
+	<tishiDlVue ref="popupRef"></tishiDlVue>
+</template>
+
+<script>
+	import {
+		MESSAGE_VISITER_TO_LOGIN
+	} from "@/utils/constant.js"
+	import tipMiddleDialog from '@/components/dialog/tipMiddleDialog.vue';
+	import tipBigDialog from '@/components/dialog/tipBigDialog.vue';
+	import {
+		useTabBarHistory
+	} from '@/utils/emitEvents.js';
+	import cacheManager from "@/utils/cacheManager.js";
+	import {
+		toast,
+		getUserIdentity
+	} from "@/utils/common";
+	import {
+		nextTick,
+	} from "vue";
+	import tishiDlVue from './tishiDl.vue';
+	export default {
+		components: {
+			tipMiddleDialog,
+			tipBigDialog,
+			tishiDlVue
+		},
+		data() {
+			return {
+				tabList: [{
+						iconPath: 'static/images/tabbar/unselect/xuanke-sj.png',
+						activePath: 'static/images/tabbar/select/xuanke-sj.png',
+						path: `/pages/chanpinXuanze/index`
+					},
+					{
+						iconPath: 'static/images/tabbar/unselect/xuexi-sj.png',
+						activePath: 'static/images/tabbar/select/xuexi-sj.png',
+						path: `/pages/chanpinneirong/index`
+					},
+					{
+						iconPath: 'static/images/tabbar/unselect/faxian-sj.png',
+						activePath: 'static/images/tabbar/select/faxian-sj.png',
+						path: '/pages/game/index'
+					},
+					{
+						iconPath: 'static/images/tabbar/unselect/wode-sj.png',
+						activePath: 'static/images/tabbar/select/wode-sj.png',
+						path: `/pages/chanpinMy/my`
+					},
+				],
+				currentTab: 0,
+				isNavigating: false,
+				MESSAGE_VISITER_TO_LOGIN
+			};
+		},
+		props: {
+			levelId: {
+				type: String,
+			},
+			typeId: {
+				type: String,
+			},
+			subjectId: {
+				type: String,
+			},
+			currentTabNumber: {
+				type: Number,
+			},
+			tipFlag: {
+				type: String,
+			},
+
+		},
+		methods: {
+			// 游客弹窗---确定
+			ykConfirm() {
+				uni.redirectTo({
+					url: '/pages/login/index'
+				});
+			},
+			// 新增:判断是否是目标页面的方法
+			isTargetPage(route, tabIndex) {
+				const routeMap = {
+					0: 'pages/chanpinXuanze/index',
+					1: 'pages/chanpinneirong/index',
+					2: 'pages/game/index',
+					3: 'pages/chanpinMy/my'
+				};
+				return route === routeMap[tabIndex];
+			},
+			switchTab(path, index) {
+
+				if (index == this.currentTab) {
+					// 同页面不刷新
+					return;
+				}
+
+				if (path == '/pages/chanpinneirong/index' && !cacheManager.get('auth').chanpinId) {
+					this.$refs.popupRef.open();
+					return false
+				}
+				// 新增:检查目标页面是否已经在页面栈中
+				const pages = getCurrentPages();
+				console.log('pages1', pages);
+				let targetPage = null;
+
+				for (let i = pages.length - 1; i >= 0; i--) {
+					const page = pages[i];
+					console.log('pages2', page);
+					// 判断是否是目标页面(这里需要根据你的页面路径判断)
+					if (page.route && this.isTargetPage(page.route, index)) {
+						targetPage = page;
+						break;
+					}
+				}
+				this.currentTab = index
+				console.log('targetPage', targetPage);
+				if (targetPage) {
+					// 如果页面已经在栈中,使用 navigateBack 返回
+					const delta = pages.length - pages.indexOf(targetPage) - 1;
+					console.log('delta', delta);
+					uni.navigateBack({
+						delta: delta
+					});
+				} else {
+					console.log('11111');
+
+					this.navigateToEditPage(path);
+				}
+
+			},
+			navigateToEditPage(path) {
+				if (this.isNavigating) {
+					uni.showToast({
+						title: '正在跳转中...',
+						icon: 'none'
+					});
+					return;
+				}
+				this.isNavigating = true;
+				uni.showLoading({
+					title: '加载中'
+				}); // 显示Loading
+
+				uni.navigateTo({
+					url: path,
+					complete: () => {
+						uni.hideLoading();
+						this.isNavigating = false;
+					}
+				});
+			}
+		},
+		created() {
+
+			this.currentTab = this.currentTabNumber
+		}
+	}
+</script>