el-cascader级联二级选择图片

示例图:demo

// vue部分
 <el-cascader
              v-model="scope.row[item.prop]"
              :options="typeOptions"
              :show-all-levels="false"
              :props="{ value: 'dictValue', label: 'dictLabel', key: 'id', emitPath: false }"
              @expand-change="cascaderFocus"
              @focus="cascaderFocus"
            >
            // 使用template自定义类型为chart的 (必须是二级中的dictType为chart 不要一级,不然一级会进入)
            // 需要获取到.cascader-hover外层的span 因为element写死了高度 在js中操作
            // 添加聚焦和父级改变事件
              <template slot-scope="{ node, data }">
                <div v-if="data.dictType === 'chart'" style="display: flex; align-items: center">
                  <img class="cascader-hover" :src="data.remark" :title="data.dictLabel" />
                  <span style="padding-left: 10px">{{ data.dictLabel }}</span>
                </div>
              </template>
 </el-cascader>

// js部分

    // 级联图表显示图片 聚焦/切换都要有
    cascaderFocus() {
      this.$nextTick(() => {
        let dom = document.getElementsByClassName('cascader-hover');
       if (dom && dom.length > 0) {
          Array.from(dom).forEach(item => {
            if (item.offsetParent) {
              item.offsetParent ? (item.offsetParent.style.height = '100%') : null;
              item.offsetParent ? (item.offsetParent.style.lineHeight = '100%') : null;
            } else {
              // 第一次选择是图表会dom存在异步问题
              setTimeout(() => {
                item.offsetParent ? (item.offsetParent.style.height = '100%') : null;
                item.offsetParent ? (item.offsetParent.style.lineHeight = '100%') : null;
              }, 100);
            }
          });
        }
      });
    },

// css部分
.cascader-hover { width: 100px; height: 100px; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>