Skip to content
广告位招租

优质广告位诚邀合作

本广告位曝光量正火速攀升,用户触达规模呈爆发式增长!现向品牌开放合作,趁曝光增长红利期,抓紧机会拿下,让您的品牌借势破圈!

--总浏览量(次)
--总计访客(人)

快速开始

阅读此处时,默认您已经完全熟悉字典包的相关配置,如还未完全了解,请阅读使用须知

下列一堆文字,您懒得阅读的话,您可以阅读SKILL技能包方式快速完成Ant Design Vue字典包初始化

安装

Ant Design Vue的使用请阅读Ant Design Vue的官方文档,此处不再赘述。

shell
npm i vue3-antdv4-dict -S

新建一个src/assets/data/dict.js文件

此文件为存储本地字典数据,文件位置您可以自定义,只要在配置项引入时路径正确即可,建议路径为 src/assets/data/dict.js

示例本地字典数据如下:

js
export default {
  // 性别
  SEX_DEMO: [
    { label: "男", value: 1, color: "blue", type: "primary" },
    { label: "女", value: 2, color: "pink", type: "primary", danger: true }
  ],
  // 状态
  STATUS_DEMO: [
    { label: "启用", value: "1" },
    { label: "禁用", value: "0" }
  ]
}

新建一个src/api/modules/common-api.js文件

暴露获取字典的接口,供配置时使用。文件位置一样的,您可以自行选择路径,但请确保路径正确。建议路径为 src/api/modules/common-api.js

此处使用promise模拟一个字典接口示例,使用时自行替换为您自己的接口,您的字典接口请求数据格式、接口返回数据格式与字典包要求不一致时,可详细阅读配置说明, 通通都能转化成可以使用的字典数据。

js
//模拟的获取字典数据接口 有接口时 请使用接口替代
export function getDictCodeApi(options) {
  var promise = new Promise(function (resolve) {
    const dictCodeList = {
      FRUITS_DEMO: [
        {
          value: "1",
          label: "苹果"
        },
        {
          value: "2",
          label: "草莓"
        }
      ],
      VEGETABLES_DEMO: [
        {
          value: "1",
          label: "西红柿"
        },
        {
          value: "2",
          label: "西蓝花"
        }
      ],
      AREA_DEMO: [
        {
          id: "35060000", // 树形数据 的id 字段 可配置 treeSetting.idField 字段修改  此字段用于 将一维数组转化为树形结构的依据
          parentId: "0", // 树形数据的 父级id 字段 可配置 treeSetting.parentIdField 字段修改 此字段用于 将一维数组转化为树形结构的依据
          value: "1", // 树形数据 的value 字段 可配置 format.value 字段修改 如果与 一维数组的value字段不一致时,那可以配置 treeSetting.valueField 字段修改
          label: "漳州市" // 树形数据 的label 字段 可配置 format.label 字段修改 如果与 一维数组的label字段不一致时,那可以配置 treeSetting.labelField 字段修改
        },
        {
          id: "35062400",
          parentId: "35060000",
          value: "2",
          label: "诏安县"
        },
        {
          id: "35062401",
          parentId: "35062400",
          value: "3",
          label: "太平镇",
          disabled: true
        },
        {
          id: "35062402",
          parentId: "35062400",
          value: "4",
          label: "金星乡"
        },
        {
          id: "35062403",
          parentId: "35062400",
          value: "5",
          label: "南诏镇"
        },
        {
          id: "35062404",
          parentId: "35062400",
          value: "6",
          label: "霞葛镇"
        },
        {
          id: "35062300",
          parentId: "35060000",
          value: "7",
          label: "云霄县"
        },
        {
          id: "35062301",
          parentId: "35062300",
          value: "8",
          label: "列屿镇"
        },
        {
          id: "35062302",
          parentId: "35062300",
          value: "9",
          label: "陈岱镇"
        },
        {
          id: "35062303",
          parentId: "35062300",
          value: "10",
          label: "云陵镇"
        },
        {
          id: "35062304",
          parentId: "35062300",
          value: "11",
          label: "火田镇"
        }
      ]
    }

    let codeData = {}
    if (options && options.dictType) {
      const typeList = options.dictType.split(",")
      for (let i = 0; i < typeList.length; i++) {
        const dictType = typeList[i]
        codeData[dictType] = dictCodeList[dictType]
      }
    } else {
      codeData = dictCodeList
    }
    const data = {
      dictData: codeData,
      version: "5.2.0"
    }
    setTimeout(() => {
      resolve(data)
    }, 1000)
  })
  return promise
}

//获取全局配置  包含版本号
export function getGlobalConfigApi() {
  return new Promise((resolve, reject) => {
    resolve({ version: "5.2.0" })
  })
}

新建一个src/dict-config.js文件

此文件为字典包的配置文件,此处列举一下必填项配置

js
import { getDictCodeApi } from "../theme/api/modules/common-api.js"
import localDictCodes from "../theme/assets/data/dict.js"
export default {
  getDictCodeApi, //必传 获取字典数据接口
  localDictCodes //选填 项目写死的字典数据
}

main.js中使用

js
import { createApp } from "vue"
import App from "./App.vue"

import Antd from "ant-design-vue"
import "ant-design-vue/dist/reset.css"

// 引入字典包配置
import vue3AntDict from "vue3-antdv4-dict"
import "vue3-antdv4-dict/lib/style.css"
import dictConfig from "@/dict-config.js"
import { getGlobalConfigApi } from "@/api/modules/common-api.js"

const app = createApp()

app.use(Antd)
const initDict = async () => {
  const data = await getGlobalConfigApi()
  const resultConfig = { ...dictConfig, version: data.version }
  app.use(vue3AntDict, resultConfig)
}
await initDict()

app.mount("#app")

使用

在页面中使用

vue
<dict-input label="姓名" maskType="name" allowClear placeholder="请输入姓名" v-model="name"></dict-input>

当聚焦的时候可以输入,输入姓名后失去焦点时会脱敏展示,说明组件引入成功了。

验证字典组件配置是否成功就可尝试如下代码, dictType 传入接口存在的字典类型

vue
<dict-select label="喜欢的水果" dictType="FRUITS_DEMO" placeholder="请选择" v-model="sport" allowClear></dict-select>

验证失败

非常遗憾,验证失败了,请再次阅读配置说明并理解配置项的含义及作用。

验证成功

恭喜您,验证成功啦,可以继续阅读下列具体文档来使用啦。

微信公众号【爆米花小布】

0%

置顶

置顶