el-tabs搭配el-badge实现数量角标及可能遇到问题

 在实际项目中,table数据展示肯定是会有的,有table就有可能会有tabs的需求,有了tabs就可能会有数量角标的需求,所以就要把他们三者结合在一块,实现完美配合,更新及时。

<el-tabs v-model="activeName" @tab-click="handleTabsClick">
            <el-tab-pane v-for="item in tabsArr" :key="item.value" :name="item.value">
                <template slot="label">
                    {{ $t(item.label) }}
                    <el-badge v-if="item.count > 0" :value="item.count" size="mini"></el-badge>
                </template>
                <!-- 表格组件 -->
                <publicTable ref="childTable" :data="tableData" :columns="tableColumns" showHandle :showImage="showImage"
                    v-loading="loading" :imagePropertyName="pictureName" :imageName="imageName">
                    <template slot-scope="{ item }">
                        <el-button @click="handleDetails(item)" type="text" size="small"
                            {{ $t('returnGoods.details') }}
                        </el-button>
                    </template>
                </publicTable>
                <!-- 分页 -->
                <pagination v-show="total > 0" :total="total" :page.sync="pageParams.pageNum"
                    :limit.sync="pageParams.pageSize" @pagination="getList" />
            </el-tab-pane>
        </el-tabs>

 el-tabs组件带有一个label插槽,这样就可以把数量角标放在插槽里面和label结合,实现table+tabs+badge的效果

我是把tabs整体拿出来作为一个数组,展示用循环来进行,项目原因最开始没有把tabs和table数据放在一块,分开来的。从后端获取数据也是两个接口,table数据是一个,角标数量是一个,所以每次刷新就需要请求两个接口。大家如果是一个接口返回,则处理一下数据即可

tabsArr: [
                { label: "returnGoods.Pending", value: "0", show: true },
                { label: "changeAddress.submitted", value: "1", show: true },
                { label: "urge.supplementaryInfo", value: "2", show: true },
                { label: "operation.succeed", value: "3", show: true },
                { label: "operlog.fail", value: "4", show: true },
            ],
 请求角标数量的接口可能会遇到问题,因为每次切换都会调用,角标就会有可能数据渲染不及时,用$set来解决,具体可看下方代码
async getunHandled() {
            try {
                const data = await Apis.unHandled() // 调用未处理条数接口
                this.tabsArr.forEach((tab, index) => {
                    // 获取 obj 中与当前 tab 的 value 对应的值
                    let countValue = data.data[tab.value];
                    if (countValue === undefined) {
                        countValue = '0'
                    }
                    // 将 countValue 插入到当前 tab 中的 count 属性
                    // 扩展运算符...,复制原始选项卡对象 tab 的所有属性,并添加了一个新的属性count,
                    // 其值为 countValue。这确保了我们在更新选项卡时不会丢失原始的属性。
                    this.$set(this.tabsArr, index, { ...tab, count: countValue }); // 数据渲染不及时,$set解决
                });
            } catch (error) {
                console.log(error);
            }
        },

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
class="dialog-tabs el-tabs el-tabs--left" 是用于添加样式的类名,在element ui的el-dialog组件中使用el-tabs组件时,可以通过添加这个类名来指定对话框中的选项卡组件的样式和布局。这个类名的具体样式定义可以在引用中的common.scss文件中找到。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决 el-dialog 里嵌入 el-tabs 卡死的问题](https://blog.csdn.net/weixin_48549175/article/details/122350100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [el-dialog el-tabs结合样式改造](https://blog.csdn.net/xuxu_qkz/article/details/81114568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [解决vue中el-tab-pane切换的问题](https://download.csdn.net/download/weixin_38636577/13128606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值