# van-select-dict组件

快速完成移动端基于vant组件的下拉选项,可从字典出获取,也可配置data属性,自定义选项。非必选时,选项会自动注入请选择选项,必选时,不会。接收van-field与van-picker的属性及方法配置,部分组件已配置好,无需重复配置。

dictType 支持传递字符串类型,也支持传递对象类型。对象类型时可过滤部分选项数据

支持配置非字典数据选项,传递 data 属性即可

支持传递disableObj属性,配置部分选项禁用

keyValue配置为true的话 dictChange 方法返回的将是一个对象

<template>
  <div class="van-select-dict">
    <van-select-dict @dictChange="handleChange" label="性别(基础用法)" label-width="100px" input-align="right" dictType="AAC004" placeholder="请选择性别" v-model="value1" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(必选)" required label-width="100px" input-align="right" dictType="AAC004" placeholder="请选择性别" v-model="value2" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(过滤选项1)" label-width="110px" input-align="right" :dictType="{type: 'AAC004', filters: '9', reverse: true}" placeholder="请选择性别" v-model="value3" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(过滤选项2)" :filterDataFun="filterDataFun" label-width="110px" input-align="right" :dictType="'AAC004'" placeholder="请选择性别" v-model="value13" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(禁用选项1)" label-width="110px" input-align="right" :dictType="'AAC004'" :disableObj="{disableValue: '9'}" placeholder="请选择性别" v-model="value4" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(禁用选项2)" :disabledDataFun="disabledDataFun" label-width="110px" input-align="right" :dictType="'AAC004'"  placeholder="请选择性别" v-model="value14" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(禁用+过滤)" label-width="120px" input-align="right" :dictType="{type: 'AAC004', filters: '1', reverse: true}" :disableObj="{disableValue: '9'}" placeholder="请选择性别" v-model="value5" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(keyValue)" keyValue label-width="120px" input-align="right" dictType="AAC004" placeholder="请选择性别" v-model="value6" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="祝(自定义数据1)" label-width="120px" input-align="right" :data="list1" placeholder="请选择性别" v-model="value7" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="福(自定义数据2)" :format="{label: 'label2', value: 'value2'}" label-width="120px" input-align="right" :data="list2" placeholder="请选择性别" v-model="value8" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="你(自定义数据3)" label-width="120px" input-align="right" :data="list3" placeholder="请选择性别" v-model="value9" ></van-select-dict>
    <van-select-dict @dictChange="handleChange" label="性别(赋值)" label-width="100px" input-align="right" dictType="AAC004" placeholder="请选择性别" v-model="value10" ></van-select-dict>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value1: "",
      value2: "",
      value3: "",
      value4: "",
      value5: "",
      value6: "",
      value7: "",
      value8: "",
      value9: "",
      value10: "1",
      value13: "",
      value14: "",
      list1: [],
      list2: [],
      list3: ["七星高照", "八方来财", "九九同心"]
    }
  },
  created() {
    setTimeout(() => {
      this.list1 = [ 
        {
          label: "一帆风顺",
          value: "1"
        },
        {
          label: "二龙腾飞",
          value: "2"
        },
        {
          label: "三羊开泰",
          value: "3"
        }
      ]
      this.list2 = [ 
        {
          label2: "四季平安",
          value2: "4"
        },
        {
          label2: "五福临门",
          value2: "5"
        },
        {
          label2: "六六大顺",
          value2: "6"
        }
      ]
    }, 1000)
  },
  methods: {
    handleChange(val) {
      console.log(val)
    },
    filterDataFun(list) {
      return list.filter(item => ["1", "2"].includes(item.value))
    },
    disabledDataFun(list) {
      return list.map(item => {
        return {
          ...item,
          disabled: ["9"].includes(item.value)
        }
      })
    }
  }
}
</script>

<style>

</style>
显示代码

# Select Dict Attributes

参数 说明 类型 可选值 默认值
dictType 必传,传递字典的字段名,选择想要的字典数据Object类型时详看如下配置dictType配置项 [String, Object]
disableObj(0.0.7及以上版本) 选填,配置disableObj配置项 Object false
keyValue 选填,默认false false时dictChange事件只返回值,true返回value及label Boolean false
filterDataFun 组件过滤数据方法函数 接收该字典类型的数据 默认不变 能够覆盖字典包配置里的filterDataFun Function (list) => { return list }
disabledDataFun 组件禁用数据方法函数 接收该字典类型的数据 默认不变 能够覆盖字典包配置里的disabledDataFun Function (list) => { return list }
data 接收传递过来的数组,实现非字典下拉选项 Array
format 对非字典数据配置label及value字段名 Object {label: "label", value: ”value“

# Select Dict Events

参数 说明 回调参数
dictChange 选中值发生变化时触发 keyValue为false时返回值,为true时返回键值对象

# dictType配置项

参数 说明 类型 可选值 默认值
type 必传,字典类型 String
filters 必传,过滤数据(数组,或者字符串用英文逗号隔开)将选项过滤部分数据,使其不展示 [String,Array]
filterType 过滤的字段(通过这个字段筛选数据), 默认字典配置的 dict-setting中format的value配置项 String 默认字典配置的 dict-setting中format的value配置项
reverse 是否反向筛选 Boolean true false

# disableObj配置项

参数 说明 类型 可选值 默认值
disableValue 禁用数据(数组,或者字符串用英文逗号隔开) [String,Array]
disableType 过滤的字段(通过这个字段筛选数据), 默认字典配置的 dict-setting中format的value配置项 String 默认字典配置的 dict-setting中format的value配置项
reverse 是否反向筛选 Boolean true false
上次更新: February 19th 2022, 11:16:58