<template> 
 | 
    <div class="tag"> 
 | 
        <div 
 | 
            v-for="item in TagList" 
 | 
            :key="item.id" 
 | 
            :class="{'tag_item': true, 'tagActive': item.id === activeId}" 
 | 
            @click="change(item.id)"> 
 | 
            <span>{{item.name}}</span> 
 | 
            <span v-if="isShow && item.num">({{item.num}})</span> 
 | 
        </div> 
 | 
    </div> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
    import { defineProps, defineEmits, ref, watch } from 'vue' 
 | 
  
 | 
    const props = defineProps({ 
 | 
        TagList: { 
 | 
            type: Array, 
 | 
            required: true 
 | 
        }, 
 | 
        isShow: { 
 | 
            type: Boolean, 
 | 
            required: false, 
 | 
            default: false 
 | 
        } 
 | 
    }) 
 | 
  
 | 
    const activeId = ref<string | number>('') 
 | 
  
 | 
    const emit = defineEmits(['change']) 
 | 
  
 | 
    const change = (id: string) => { 
 | 
        if (activeId.value !== id) { 
 | 
            activeId.value = id 
 | 
            emit('change', id) 
 | 
        } 
 | 
    } 
 | 
  
 | 
    watch(() => props.TagList, (data) => { 
 | 
        let list: any[] = data 
 | 
        if (list && list.length !== 0) { 
 | 
            activeId.value = list[0].id 
 | 
        } 
 | 
    }, { immediate: true }) 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.tag::-webkit-scrollbar { 
 | 
    width: 0 !important; 
 | 
} 
 | 
.tag::-webkit-scrollbar { 
 | 
    width: 0 !important; 
 | 
    height: 0; 
 | 
} 
 | 
.tag { 
 | 
    overflow-x: scroll; 
 | 
    display: flex; 
 | 
    align-items: center; 
 | 
    flex-wrap: nowrap; 
 | 
    padding: 5px 0; 
 | 
    .tagActive { 
 | 
        background: $nav-color !important; 
 | 
        span { 
 | 
            color: #FFFFFF !important; 
 | 
        } 
 | 
    } 
 | 
    .tag_item { 
 | 
        padding: 14px 24px; 
 | 
        border-radius: 26px; 
 | 
        flex-shrink: 0; 
 | 
        margin-right: 20px; 
 | 
        border: 1PX solid #CCCCCC; 
 | 
        span { 
 | 
            font-size: 26px; 
 | 
            font-weight: 400; 
 | 
            color: #555555; 
 | 
        } 
 | 
    } 
 | 
} 
 | 
</style> 
 |