Vue项目中查字典匹配值

一、业务场景:
列表中状态较多,为了避免写许多switch或if判断,后台给了个字典

二、实现思路
1.封装一个获取字典类型列表的方法(调接口)
2.封装一个匹配状态的方法(根据状态显示想要的文字)

三、具体实现步骤:

先拿到字典类型的表(数组)

/**
 * 根据类型获取字典内容 返回数组
 * @param {String} dictType 字典类型
 */
export function getDictArray(dictType) {
  return new Promise((resolve, reject) => {
    const dict = store.getters.getDict(dictType)
    if (dict) {
      resolve(dict)
      return
    }
    // 获取字典类型表
    axios({
      url: api.dictData + '/type',
      method: 'get',
      params: { dictType: dictType }
    })
      .then((response) => {
        store.commit(SET_DICT, {
          type: dictType,
          data: response
        })
        resolve(response)
      })
      .catch((error) => {
        reject(error)
      })
  })
}

字典匹配的方法

export function covertDictForList(list, value, attrVal = 'dictValue', attrName = 'dictLabel') {
  const data = list.filter((obj) => {
    return obj[attrVal] === value || obj[attrVal] + '' === value + ''
  })
  if (data.length !== 0) {
    return data[0][attrName]
  }
  return ''
}

在要使用的界面引入

import { getDictArray } from '@/utils/dict'

进入页面加载一下

  async mounted() {
    this.personLvList = await getDictArray('ryxx_person_lv')
  },

在需要匹配的表格里直接调用查询方法

      <span slot="ryRyxx.level" slot-scope="text">
        <span :class="[level(text)]"> {{ text !== null ? covertDictForList(personLvList, text) : '无' }}</span>
      </span>

四、效果展示:
在这里插入图片描述

你已经成功了,撒花。
今天的分享到此结束,欢迎小伙伴们一起交流

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在3+TypeScript项目,使用Ant Design Vue框架你可以通过在`<script setup>`标签的`setup`函数调用字典接口来匹配`a-input`的code,并显示对应的value。 下面是一个示例代码: ```html <template> <div> <a-input v-model="inputValue" @change="handleInputChange" /> <p>匹配结果:{{ matchedValue }}</p> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; import { getDictionaryValue } from 'your-dictionary-api'; // 替换为实际的字典接口方法 const inputValue = ref(''); const matchedValue = ref(''); const handleInputChange = async () => { const value = inputValue.value; const dictionaryValue = await getDictionaryValue(value); // 调用字典接口并匹配code对应的value matchedValue.value = dictionaryValue; }; </script> ``` 在上述示例,我们使用`ref`来创建了两个变量`inputValue`和`matchedValue`,分别用于存储`a-input`组件的输入匹配到的字典value。 在`handleInputChange`函数,我们获取输入`inputValue.value`,然后调用字典接口的`getDictionaryValue`方法来匹配对应的value。由于字典接口可能是异步的,我们使用`await`关键字来等待接口返回结果。 一旦匹配到了字典value,我们将其赋给`matchedValue`变量。 在模板,通过插表达式`{{ matchedValue }}`来显示匹配到的字典value。 请注意,上述示例的`getDictionaryValue`方法需要替换为你实际的字典接口方法。你需要根据自己的业务逻辑来实现字典接口的调用和匹配操作。 这样,当输入发生变化时,会调用字典接口并匹配对应的value,并在页面上显示匹配结果。你可以根据实际需求对匹配到的进行进一步处理和展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值