Jeecgboot中dict限制显示部分内容

本文介绍了如何在JDictSelectTag.vue文件中使用antDesign组件,并添加v-if判断和计算函数来根据传入的显示和隐藏数组动态控制下拉选项的可见性。作者还提供了组件的props和计算函数实现的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要修改的文件:src\components\Form\src\jeecg\components\JDictSelectTag.vue 

找到对应的ant Design组件位置添加v-if判断并执行计算函数

<a-select v-else :placeholder="placeholder" v-bind="attrs" v-model:value="state" :filterOption="handleFilterOption"
      :getPopupContainer="getPopupContainer" :style="style" @change="handleChange">
      <a-select-option v-if="showChooseOption" :value="null">请选择…</a-select-option>
      <template v-for="item in dictOptions" :key="`${item.value}`">
        <a-select-option :value="item.value" v-if="HideChecks(item.value, display, hide)">
          <span style="display: inline-block; width: 100%" :title="item.label">
            {{ item.label }}
          </span>
        </a-select-option>
      </template>
    </a-select>

接收属性传入值

props: {
    display: propTypes.array.def([]), // 显示数组
    hide: propTypes.array.def([]), // 隐藏数组
  },

计算函数

/**
     * 根据给定的值判断是否隐藏检查项
     * @param value 需要判断的值
     * @param display 显示数组,包含应显示的值
     * @param hide 隐藏数组,包含应隐藏的值
     * @return {Boolean} 返回判断结果,决定是否隐藏
     */
    function HideChecks(value, display, hide) {
      // 判断value是否在隐藏数组hide中
      const ishide = hide.includes("" + value)
      // 判断value是否在显示数组display中
      const isdisplay = display.includes("" + value)

      // 当display为空但hide不为空时的处理逻辑
      if (!display.length && hide.length) {
        return !ishide
      } else if (!hide.length && display.length) { // 当hide为空但display不为空时的处理逻辑
        return isdisplay
      } else {
        // 当display和hide都非空时的处理逻辑
        if (ishide && isdisplay) {
          console.error('请检查字典配置是否正确,display和hide不能重复');
          return false;
        } else if (ishide && !isdisplay) { // value在hide中但不在display中
          return false;
        } else if (!ishide && isdisplay) { // value在display中但不在hide中
          return true;
        } else if (!ishide && !isdisplay) { // value既不在display中也不在hide中
          return true
        } else {
          console.error("逻辑错误,请前往查看");
        }
      }
    }

注意:传入值一定要是字符串数组display(显示数组)和hide(隐藏数组)数组值不要重复

 <JDictSelectTag v-model:value="orderMainModel.workStartType" :display='["1", "9"]':hide="['yes', '大于', '4', '5']" :showChooseOption="false" placeholder="请选择打卡状态" dictCode="attendance" />

个人的小小优化,不完美之处还望同僚们指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值