element级联下拉框已选数据手动反显

需求

查看详情页面级联下拉框已选数据进行反显,并且不使用级联下拉框

需求效果

在这里插入图片描述

基础数据展示

// 已选中级联下拉框数据列表 二维数组
const valueList = [[1,2,3],[1,2,4],[1,2,5],[1,7,8],[1,7,9],[1,7,10],[1,12,13],[1,12,14],[1,12,15]]
// 级联下拉框数据
const list = [{
 value: 1,
 label: '东南',
 children: [{
   value: 2,
   label: '上海',
   children: [
     { value: 3, label: '普陀' },
     { value: 4, label: '黄埔' },
     { value: 5, label: '徐汇' }
   ]
 }, {
   value: 7,
   label: '江苏',
   children: [
     { value: 8, label: '南京' },
     { value: 9, label: '苏州' },
     { value: 10, label: '无锡' }
   ]
 }, {
   value: 12,
   label: '浙江',
   children: [
     { value: 13, label: '杭州' },
     { value: 14, label: '宁波' },
     { value: 15, label: '嘉兴' }
   ]
 }]
}, {
 value: 17,
 label: '西北',
 children: [{
   value: 18,
   label: '陕西',
   children: [
     { value: 19, label: '西安' },
     { value: 20, label: '延安' }
   ]
 }, {
   value: 21,
   label: '新疆维吾尔族自治区',
   children: [
     { value: 22, label: '乌鲁木齐' },
     { value: 23, label: '克拉玛依' }
   ]
 }]
}]  

方法

// 将级联下拉框数据扁平化
flattenArray(arr) {
  let result = [];
  arr.forEach(item => {
    result.push({
      value: item.value,
      label: item.label
    });
    if (item.children) {
      result = result.concat(flattenArray(item.children));
    }
  });
  return result;
}
// 根据已选数组查找对应数据
cascaderValue(list, valueList) {
  const array = []
  valueList.forEach(arrItem => {
    const valueList = []
    arrItem.forEach(valueItem => {
      list.some(item => {
        if(item.value === valueItem) {
          // 这里根据需要将已选数据push进去,我这里只需要label
          valueList.push(item.label)
        }
        return item.value === valueItem
      })
    })
    array.push(valueList)
  })
  return array
}

实际使用

cascaderValue(flattenArray(list), valueList)
输出:
[ [ "东南", "上海", "普陀" ], [ "东南", "上海", "黄埔" ], [ "东南", "上海", "徐汇" ], [ "东南", "江苏", "南京" ], [ "东南", "江苏", "苏州" ], [ "东南", "江苏", "无锡" ], [ "东南", "浙江", "杭州" ], [ "东南", "浙江", "宁波" ], [ "东南", "浙江", "嘉兴" ] ]

html

// 页面代码
<el-tag style="margin-right: 5px;" type="info" size="small" v-for="(item, index) in formatSalesTeam" :key="index">
  {{ item.join('/') }}
</el-tag>

该文章为个人记录方便再次使用,各位有需要随取随用 希望对各位有帮助

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值