import './index.scss'; 
 | 
  
 | 
import { SetupContext } from 'vue'; 
 | 
import { View, Text, Image } from '@tarojs/components'; 
 | 
import Taro from '@tarojs/taro'; 
 | 
import { useSystemStore } from '@/stores/modules/system'; 
 | 
import { storeToRefs } from 'pinia'; 
 | 
import { TabBarPageRouter } from '@/constants'; 
 | 
// import IconPublish from '@/assets/tabbar/icon-publish.png'; 
 | 
import { useUser, useIsLogin } from '@/hooks'; 
 | 
import { Message } from '@/utils'; 
 | 
  
 | 
type TarBarItemProps = { 
 | 
  text: string; 
 | 
  icon: string; 
 | 
  activeIcon: string; 
 | 
  pagePath: string; 
 | 
  active: boolean; 
 | 
  className: string; 
 | 
  onClick?: (url: string, index: number) => any; 
 | 
  index: number; 
 | 
  badge?: number; 
 | 
}; 
 | 
  
 | 
type TarBarItemEvents = { 
 | 
  click: (url: string, index: number) => any; 
 | 
}; 
 | 
  
 | 
const TarBarItem = function (props: TarBarItemProps, context: SetupContext<TarBarItemEvents>) { 
 | 
  const _badge = props.badge > 99 ? '99+' : props.badge; 
 | 
  return ( 
 | 
    <div 
 | 
      class={['bottom-tab-item', { active: props.active }, props.className]} 
 | 
      onClick={() => context.emit('click', props.pagePath, props.index)} 
 | 
    > 
 | 
      <div class="bottom-tab-item-icon-wrapper"> 
 | 
        {props.badge > 0 && <div class="bottom-tab-item-badge">{_badge}</div>} 
 | 
        <img class="bottom-tab-item-icon" src={props.active ? props.activeIcon : props.icon} /> 
 | 
      </div> 
 | 
      <div class="bottom-tab-item-text">{props.text}</div> 
 | 
    </div> 
 | 
  ); 
 | 
}; 
 | 
  
 | 
TarBarItem.emits = { 
 | 
  click: (url: string, index: number) => typeof url === 'string', 
 | 
}; 
 | 
  
 | 
const whitePageList = [RouterPath.home, RouterPath.mine]; 
 | 
  
 | 
export default { 
 | 
  name: 'CustomTabBar', 
 | 
  components: { 
 | 
    View, 
 | 
    Text, 
 | 
    Image, 
 | 
    TarBarItem, 
 | 
  }, 
 | 
  setup() { 
 | 
    const system = useSystemStore(); 
 | 
    const { IPhoneXPadding } = storeToRefs(system); 
 | 
  
 | 
    const router = Taro.useRouter(); 
 | 
  
 | 
    const isLogin = useIsLogin(); 
 | 
  
 | 
    const loginTipShowed = ref(false); 
 | 
  
 | 
    const switchTab = (url: string, index: number) => { 
 | 
      if (!isLogin.value && whitePageList.every((x) => x !== url)) { 
 | 
        if (!loginTipShowed.value) { 
 | 
          loginTipShowed.value = true; 
 | 
          Message.confirm({ message: '请前往登录' }) 
 | 
            .then(() => { 
 | 
              RouteHelper.navigateTo({ 
 | 
                url: `${RouterPath.loginByForm}?redirect=${url}`, 
 | 
              }); 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              loginTipShowed.value = false; 
 | 
            }); 
 | 
        } 
 | 
        return; 
 | 
      } 
 | 
      system.setTabIndex(index); 
 | 
      RouteHelper.switchTab({ url }); 
 | 
    }; 
 | 
  
 | 
    function goPublish() { 
 | 
      if (!isLogin.value) { 
 | 
        if (!loginTipShowed.value) { 
 | 
          loginTipShowed.value = true; 
 | 
          Message.confirm({ message: '请前往登录' }) 
 | 
            .then(() => { 
 | 
              RouteHelper.navigateTo({ 
 | 
                url: `${RouterPath.loginByForm}?redirect=${RouterPath.home}`, 
 | 
              }); 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              loginTipShowed.value = false; 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        return; 
 | 
      } 
 | 
      // RouteHelper.navigateTo({ 
 | 
      //   url: RouterPath.pulishCircleFriend, 
 | 
      // }); 
 | 
    } 
 | 
  
 | 
    return () => { 
 | 
      return ( 
 | 
        <View 
 | 
          class="bottom-tab" 
 | 
          style={{ 
 | 
            paddingBottom: `${IPhoneXPadding.value}px`, 
 | 
          }} 
 | 
        > 
 | 
          <TarBarItem 
 | 
            text={'首页'} 
 | 
            icon="../assets/tabbar/icon-home.png" 
 | 
            activeIcon="../assets/tabbar/icon-home-active.png" 
 | 
            pagePath={TabBarPageRouter.Home} 
 | 
            index={0} 
 | 
            active={system.activeTab === 0} 
 | 
            className="home" 
 | 
            onClick={switchTab} 
 | 
          ></TarBarItem> 
 | 
          <TarBarItem 
 | 
            text="我的" 
 | 
            icon="../assets/tabbar/icon-mine.png" 
 | 
            activeIcon="../assets/tabbar/icon-mine-active.png" 
 | 
            pagePath={TabBarPageRouter.Mine} 
 | 
            active={system.activeTab === 1} 
 | 
            className="mine" 
 | 
            onClick={switchTab} 
 | 
            index={1} 
 | 
          ></TarBarItem> 
 | 
        </View> 
 | 
      ); 
 | 
    }; 
 | 
  }, 
 | 
}; 
 |