<template> <view> <view class="action arrow" @tap="showModal" data-target="bottomModal"> <view class="uni-input upicker ellipsis-description" >{{labels?labels:'请选择'}}</view> </view> <view class="cu-modal bottom-modal" style="min-height: 200upx;" :class="modalName=='bottomModal'?'show':''"> <view class="cu-dialog"> <view class="cu-bar bg-white"> <view class="action text-blue" @tap="hideModal">取消</view> <view class="action text-green" @tap="selectArea">确定</view> </view> <view> <ly-tree :tree-data="data" :props="props" node-key="id" :checkOnClickNode ="true" :showRadio="showRadio" :show-checkbox ="showCheckBox" :checkOnlyLeaf = "checkOnlyLeaf" ref="userTree" /> </view> </view> </view> </view> </template> <script> import areaService from "@/api/sys/areaService" export default { data() { return { data: [], modalName: null, labels: null, treeList: [] }; }, props: { limit: Number, value: String, size: String, readonly: { type: Boolean, default: () => { return false } }, checkOnlyLeaf: { type: Boolean, default: () => { return false } }, showRadio: { type: Boolean, default: () => { return true } }, showCheckBox: { type: Boolean, default: () => { return false } }, disabled: { type: Boolean, default: () => { return false } }, props: { type: Object, default: () => { return { children: 'children', label: 'name' } } } }, mounted() { areaService.treeData().then(({data})=>{ this.data = data this.setTreeList(this.data) let labelArra = [] if(this.value){ this.treeList.forEach((area) => { if (this.value === area.id) { labelArra.push(area.name) } }) this.labels = labelArra.join(',') } }).catch((e)=>{ throw e }) }, methods:{ setTreeList (datas) { // 遍历树 获取id数组 for (var i in datas) { this.treeList.push(datas[i]) if (datas[i].children) { this.setTreeList(datas[i].children) } } }, selectArea () { let ids = this.$refs.userTree.getCheckedNodes().map((item)=>{ return item.id }).join(","); let names = this.$refs.userTree.getCheckedNodes().map((item)=>{ return item.name }).join(","); this.labels = names this.$emit('input', ids) this.hideModal() }, showModal(e) { if(this.disabled){ return } this.modalName = e.currentTarget.dataset.target }, hideModal(e) { this.modalName = null } } } </script>