[vue 进阶] 关于dicts字典的用法

21 篇文章 0 订阅
本文记录了在若依框架下如何自定义字典获取功能,通过创建混入、组件和公共方法,简化了字典数据的调用。首先介绍了字典接口的定义,然后展示了如何在组件库中添加字典组件,并在main.js中全局挂载。最后,讨论了字典在实际使用中的应用,并提出了对字典前缀的疑问,为后续研究留下话题。
摘要由CSDN通过智能技术生成

前言

在使用若依框架开发小项目的时候,发现在项目中频繁使用到字典,原本代码中的dicts没有深入研究,故自己写了一个混入来实现想要的字典获取功能。但是觉得每次切换页面都需要调用一下,而且每个系统都有一个mixins混入文件,感觉维护起来稍显繁琐。继而研究了一下dicts的用法,记录一下使用过程。

1.首先确定字典的接口,在若依框架中如下,具体可根据自己后端提供的字典接口进行修改

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

此段代码在公共的api目录下

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

目录在 /src/utils/dict/DictData.js

/**
 * @classdesc 字典数据
 * @property {String} label 标签
 * @property {*} value 标签
 * @property {Object} raw 原始数据
 */
export default class DictData {
  constructor(label, value, raw) {
    this.label = label
    this.value = value
    this.raw = raw
  }
}

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

目录/src/components/DictData/index.js

import Vue from 'vue'
import DataDict from '@/utils/dict'
import { getDicts as getDicts } from '@/api/system/dict/data'

function install() {
  Vue.use(DataDict, {
    metas: {
      '*': {
        labelField: 'dictLabel',
        valueField: 'dictValue',
        request(dictMeta) {
          return getDicts(dictMeta.type).then(res => res.data)
        },
      },
    },
  })
}

export default {
  install,
}

4.挂载

在main.js中

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

5.使用

export default {
  name: "xxx",
  dicts: ['dict_xxx'],
 }

该字典在使用中作为select下拉内容,则使用dict.type.dict_xxx 作为调用。具体为嘛加上这个前缀还未弄清楚,待研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值