一、需求:

后端有时候返回的是字典的键值,在前端展示时需要转成中文值
在这里插入图片描述

后端返回的是dictValue,现在要转换成这个dictLabel

在这里插入图片描述

对应的字典:

返回的是键值,我们需要转换为键值对应的中文
在这里插入图片描述

最终效果

在表格中展示需要转换为中文

在这里插入图片描述

二、问题解决

方式一:使用标签

若依中有个比较简单的实现方法,使用<dict-tag>标签(若依自带的全局组件)就能自动实现转换。
dict.type.字典名称就可以了。
使用之前需要先引用一下字典类型,然后直接在标签中使用这个字典类型就可以了:
在这里插入图片描述

      <el-table-column label="登录状态" align="center" prop="status">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
        </template>
      </el-table-column>
方式二:使用formatter的属性

使用element ui表格中自带的formatter的属性来进行实现,是专门用来格式化内容的。
elementui 官网链接
在这里插入图片描述

步骤
1、给需要转换的列绑定formatter属性

在这里插入图片描述

2、获取字典项

字典的使用可以看这篇:
若依的字典值如何使用(超详细图文教程)在这里插入图片描述

3、编写formatter属性绑定的方法

row参数是表格中当前行的内容

遍历字典项,从字典项中筛选对应的中文,然后返回对应的label值(也就是选项所展示的中文)

后端返回的表格中的值绑定在classGrade属性,这个属性在字典中对应的属性是dictValue,所以将这两个属性值进行对比,找到对应的字典项。
在这里插入图片描述

    formatterDict(row){

      //根据年级的值 从字典中查找对应的字典项
      let obj=this.classListOption.find(item=>{
        return item.dictValue==row.classGrade;
      })

      if(obj!=undefined || obj!=null){
        return obj.dictLabel;
      }

    },

表格的每一行都会自动调用这个formatter方法
这样最终就能实现转换的效果了
在这里插入图片描述

Logo

快速构建 Web 应用程序

更多推荐