【ruoyi】字典使用

  1. 获取字典数据方法 src\utils\dict.js
/**
 * 获取字典数据
 */
 // 接受`可变数量的参数`...args),...args是一个剩余参数, 将不定数量的参数表示为一个数组。这些参数代表不同的字典类型
export function useDict(...args) {
  const res = ref({});
  // 这里使用了立即执行函数表达式(IIFE)。它立即执行并返回其内部函数的执行结果
  return (() => {
  // 遍历传入useDict函数的参数,每个参数代表一个字典类型
    args.forEach((dictType, index) => {
    // 为当前的dictType类型初始化一个空数组
      res.value[dictType] = [];
      // 调用一个存储(可能是Vuex store)来获取当前dictType的字典数据
      const dicts = useDictStore().getDict(dictType);
      if (dicts) {
        res.value[dictType] = dicts;
      } else {
      // 如果没有获取到字典数据, 调用获取字典接口API
        getDicts(dictType).then(resp => {
        // 将获取到的数据转换成一个新数组,其中每个元素是一个对象,包含label, value, elTagType, 和 elTagClass属性
          res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
          // 将新获取的字典数据存储到Vuex store中,以便以后使用
          useDictStore().setDict(dictType, res.value[dictType]);
        })
      }
    })
    // 返回一个对象,其属性是res.value对象的每个属性的引用。这允许解构赋值,使得在模板或计算属性中可以直接访问字典数据
    return toRefs(res.value);
  })()
}
  1. 注册到全局main.js
// 引入
import { useDict } from '@/utils/dict'

// 全局方法挂载
app.config.globalProperties.useDict = useDict
  1. 使用的地方
// 这行代码使用了Vue 3的Composition API。getCurrentInstance是一个全局API,它返回当前组件的实例对象。从这个实例对象中解构出proxy属性,proxy是一个代理对象,它包含了组件的上下文,例如访问组件的属性、方法和数据
const {proxy} = getCurrentInstance();
const {project_status} = proxy.useDict("project_status"); //这是获取project_status这一个的

// 下面是获取多个字典的
const {land_type, type_of_usage_rights, fuel_type, project_status} = proxy.useDict('land_type', 'type_of_usage_rights', 'fuel_type', 'project_status');
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值