| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <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/chanpinZiliao/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/chanpinZiliao/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>
|