使用若依的字典(dict)

若依中的字典使用

在使用若依的前端框架时,发现很多页面中都使用了如下面一样的字典数据:


在页面中使用的效果如下:

研究了一下,接下来分享我的使用方法。


1.首先确定字典的接口,具体可根据自己后端提供的字典接口进行修改

// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
  return request({
    url: '/dictionary/contentByTypeId',
    method: 'get',
    params: { type: dictType }
  })
}

该接口接收参数是字典表中某种类型的字典,调用接口获取该种类型的所有字典的信息列表,如下:

其中,id 和 content 字段是前端界面下拉框中所需要用到的,后面会介绍应该怎么使用。

2.在公共的方法文件中提供一个方法

将 dict 文件夹复制到自己的 utils 文件中

这里文件中的代码只适合单层选择器,如果需要到级联选择器,使用以下代码:

export default class DictData {
  constructor(label, value, rawData) {
    this.label = label
    this.value = value
    // 递归处理子节点
    this.children = rawData.children ? rawData.children.map(child => {
      return new DictData(
        child.content || child.label, // 兼容不同数据源
        child.id || child.value, // 兼容不同标识
        child
      )
    }) : undefined
  }
}

注意:级联选择器需要返回数据进行嵌套,这里我使用 children 字段进行嵌套处理,可以根据需求做修改

使用级联选择器时,接口返回数据格式如下:
在这里插入图片描述



注意其中使用到 ruoyi.js 这个文件,也复制过来



3.在组件库中添加该组件

将 DictData 文件夹拷贝到项目的 components 中

若依请求回来的数据如下:

所以,若依中下拉框绑定的内容数据对应的是下拉框的 label 对应响应数据的 dictLabel,而下拉框的 value 对应的是响应数据的 dictValue,因此,后续我们可以根据实际需求更改这两个字段的值。dictType 是调用后端接口的时候传递的参数,此时响应的数据都是该类型的字典信息列表。


4.根据实际需求修改

实际接口返回数据如下:

由于前端界面的下拉框需要使用到的是字典表中的 id 和 content 字段,并且,需要下拉框的 label 对应 id 字段,下拉框的 value 对应 content 字段,所以,对于DictData.index.js 中的代码可以修改为:

// 只需要将这两行代码修改即可
labelField: 'content',
valueField: 'id',

5.挂载

在 main.js 文件中挂载字典数据组件

// 字典数据组件
import DictData from '@/components/DictData'
DictData.install()

6.使用

完成以上步骤之后就可以在组件中使用了,dicts 中的字符串('dict_applySeries')是数据库中 type 字段所存储的内容,用于前端向后端请求的参数。所以,可以用 dict.type.dict_applySeries 进行引用。
在这里插入图片描述
在这里插入图片描述



使用效果

单层选择器





级联选择器:

### 若依框架中字典表的使用方法 #### 1. 配置字典项 在若依框架中,字典项的配置可以通过数据库中的 `sys_dict_type` 和 `sys_dict_data` 表来完成。开发者可以在这些表中定义所需的字典类型及其对应的字典数据[^1]。 - **`sys_dict_type`**: 存储字典类型的名称和唯一标识符。 - **`sys_dict_data`**: 存储具体字典项的内容以及它们所属的字典类型。 通过这种方式,可以轻松实现对固定取值范围数据的集中化管理。 #### 2. 下拉框填充数据 为了在前端页面中动态加载下拉框选项,若依框架提供了便捷的方式。只需在 Vue 组件中引入并初始化字典组件即可: ```javascript export default { data() { return { dicts: ['province'], // 定义要使用字典类型 }; }, }; ``` 上述代码会自动从后端获取对应字典类型 (`province`) 的所有键值对,并将其绑定到指定的 UI 控件上[^2]。 #### 3. 值转换 (Value to Label) 除了提供基础的选择功能外,在实际应用过程中还经常遇到需要将存储于数据库中的数值型字段转化为更具可读性的描述文字的需求。此时也可以借助该机制完成这一操作: 假设存在一条记录其状态字段为“0”,而我们的目标是让最终呈现出来的效果变为“正常”。那么只需要按照如下方式设置即可达成目的: ```html <el-tag :type="row.status === '0' ? '' : 'danger'" v-text="dict.type.sys_normal_disable[row.status]"></el-tag> ``` 这里利用了已经预先加载好的字典映射关系(`dict.type.xxx`)实现了即时替换显示内容的功能。 #### 4. 后台支持 最后值得一提的是,所有的这些便利都离不开良好的后台服务支撑。当涉及到跨平台或者独立模块开发时,则可能还需要额外关注如何正确集成相关接口逻辑等问题[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值