elementUI-级联选择

 

<!-- -->
<template>
  <div class="category-cascader-container">
    <!-- <el-cascader
      ref="describe"
      v-model="_value"
      :options="options"
      :props="vProps"
      :size="size"
      :clearable="clearable"
      :on-change-select="selectObj"
      placeholder="请选择分类"
      @change="handleChange"
    /> -->
    <el-cascader
      ref="describe"
      v-model="_value"
      :options="options"
      :props="vProps"
      :show-all-levels="false"
      :on-change-select="selectObj"
      placeholder="请选择违约类别"
      clearable
      @change="handleChange"
    />
  </div>
</template>

<script>
// import { findCategoryList } from '@/api/variety-bank/classification'
import { breTypelistAll } from '@/api/breach-contract/index.js'

export default {
  name: 'VarietyCategoryCascader',
  // import引入的组件需要注入到对象中才能使用,
  components: { },
  model: {
    prop: 'value',
    event: 'modelChange'
  },
  // 父组件传入参数
  props: {
    value: {
      type: [Number, String],
      default: ''
    },
    name: {
      type: String,
      default: ''
    },
    size: {
      type: String,
      default: 'small'
    },
    clearable: {
      type: Boolean,
      default: false
    },
    disabledId: {
      type: [Number, String],
      default: ''
    }
  },
  data() {
    // 这里存放数据,
    return {
      options: [],
      vProps: {
        value: 'id',
        label: 'typeName',
        expandTrigger: 'hover',
        children: 'childList',
        checkStrictly: false,
        emitPath: false
      },
      selectObj: {
        default: false
      }
    }
  },
  // 监听属性 类似于data概念,
  computed: {
    _value: {
      get() {
        return this.value
      },
      set(val) {
        this.$emit('modelChange', val)
      }
    }
  },
  // 监控data中的数据变化,
  watch: { },
  // 生命周期 - 创建完成(可以访问当前this实例),数据模型已加载,方法已加载,html模板已加载,html模板未渲染
  created() { },
  // 生命周期 - 挂载完成(可以访问DOM元素),html模板已渲染
  mounted() {
    this.breTypelistAll()
  },
  // 方法集合,
  methods: {
    breTypelistAll() {
      breTypelistAll({}).then(res => {
        this.options = res.data
        this.options = this.disabledFn(this.options)
        // console.log(this.options)
      }).catch(err => {
        console.log(err)
      })
    },

    disabledFn(options) {
      let tempOptions = []
      options.forEach(item => {
      // debugger
      // item.disabled = item.id === this._disabledId
        if (item.childList && item.childList.length > 0) {
          this.disabledFn(item.childList)
        } else {
          item.childList = null
        }
        tempOptions.push(item)
      })

      // console.log('tempOptions: ', tempOptions)
      return tempOptions
    },

    handleChange(val) {
      // debugger
      console.log(val)
      this._value = val
      this.$emit('change', val)
      let tempLeaf = this.$refs.describe.getCheckedNodes(true)[0]
      this.$emit('update:name', tempLeaf.data.typeName)
    }
  }
}
</script>

<style rel='stylesheet/scss' lang='scss' scoped>
.category-cascader-container {
  width: 100%;

  .el-cascader {
    width: 100%;
  }
}
</style>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值