封装自定义树a-tree-select

<template>

  <a-input-group compact v-if="isTrue">
    <a-input v-model:value="inputValue" placeholder="请输入其他" style="width: 110px"/><a-button type="primary" @click="otherTrue">确定</a-button>
  </a-input-group>

  <a-tree-select
      v-if="!isTrue"
      :value="value"
      @change="selectTreeValue"
      show-search
      style="width: 200px"
      :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
      placeholder="请选择"
      tree-default-expand-all
      :tree-data="treeData"
      :field-names="fieldName"
      tree-node-filter-prop="name"
  >
<!--    :field-names="{
      children: 'children',
      label: 'name',
      value: 'value',
    }"-->
  </a-tree-select>

</template>
<script setup>
const { emit } = getCurrentInstance();
import {defineComponent, getCurrentInstance, ref, watch} from 'vue';
    const props = defineProps({
      treeData: {
        type: Array,
        required: true
      },
      value: {
        type: [Array, String],
        required: false,
        default: () => []
      },
      fieldName: {
        type: Object,
        required: false,
      }
    })

    const inputValue = ref('');
    const otherTrue = () =>{
      console.log(inputValue.value)
      isTrue.value = false;
      emit('update:value', inputValue.value)
    }
    const selectTreeValue = (value) =>{
      emit('update:value', value)
      if(value === '其他'){
        isTrue.value = true;
      }
    }
    const isTrue = ref(false);

</script>

其他页面使用:

 <SelectPublic 
             :field-name="{ label: 'name', value: 'name', children: 'child' }"
             v-model:value=""
             :treeData="treeData"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值