|  | @@ -0,0 +1,99 @@
 | 
	
		
			
				|  |  | +<!--
 | 
	
		
			
				|  |  | + * @Author: lide1202@hotmail.com
 | 
	
		
			
				|  |  | + * @Date: 2021-5-4 11:04:24 
 | 
	
		
			
				|  |  | + * @Last Modified by:   lide1202@hotmail.com
 | 
	
		
			
				|  |  | + * @Last Modified time: 2021-5-5 11:04:24 
 | 
	
		
			
				|  |  | + !-->
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div>
 | 
	
		
			
				|  |  | +    <el-input class="filterInput" placeholder="搜索" v-model="filterText" v-if="enableFilter" />
 | 
	
		
			
				|  |  | +    <div class="title">{{ labelName }}</div>
 | 
	
		
			
				|  |  | +    <el-tree ref="table_tree" :data="treeData" node-key="id" :default-expand-all="isOpen" :expand-on-click-node="false" :filter-node-method="filterNode" @node-click="nodeClick" @check="checkedEvent" />
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import request from '@/utils/request'
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  components: {},
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    url: {
 | 
	
		
			
				|  |  | +      type: [String],
 | 
	
		
			
				|  |  | +      default: () => {
 | 
	
		
			
				|  |  | +        return ''
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    id: {
 | 
	
		
			
				|  |  | +      type: [String],
 | 
	
		
			
				|  |  | +      default: () => {
 | 
	
		
			
				|  |  | +        return 'id'
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    label: {
 | 
	
		
			
				|  |  | +      type: [String],
 | 
	
		
			
				|  |  | +      default: () => {
 | 
	
		
			
				|  |  | +        return ''
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    value: {
 | 
	
		
			
				|  |  | +      type: [String],
 | 
	
		
			
				|  |  | +      default: () => {
 | 
	
		
			
				|  |  | +        return ''
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    labelName: String,
 | 
	
		
			
				|  |  | +    enableFilter: Boolean,
 | 
	
		
			
				|  |  | +    isOpen: Boolean,
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      filterText: '',
 | 
	
		
			
				|  |  | +      treeData: [],
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  computed: {},
 | 
	
		
			
				|  |  | +  watch: {
 | 
	
		
			
				|  |  | +    filterText(val) {
 | 
	
		
			
				|  |  | +      this.$refs.table_tree.filter(val)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    this.queryData()
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    filterNode(val, data) {
 | 
	
		
			
				|  |  | +      if (!val) return true
 | 
	
		
			
				|  |  | +      return data.label.indexOf(val) !== -1
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    queryData() {
 | 
	
		
			
				|  |  | +      if (this.isBlank(this.url)) {
 | 
	
		
			
				|  |  | +        return
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      request({
 | 
	
		
			
				|  |  | +        url: this.url,
 | 
	
		
			
				|  |  | +        method: 'GET',
 | 
	
		
			
				|  |  | +      }).then((response) => {
 | 
	
		
			
				|  |  | +        if (response.code != '200') {
 | 
	
		
			
				|  |  | +          return
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.treeData = Object.prototype.toString.call(response.data) == '[object Array]' ? response.data : response.data.tree|| response.data.menuTree
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 点击tree节点时 将tree的id作为上级机构代码 查询列表
 | 
	
		
			
				|  |  | +    nodeClick(node) {
 | 
	
		
			
				|  |  | +      this.$emit('input', node['id'])
 | 
	
		
			
				|  |  | +      this.$emit('node-click', node['id'])
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    checkedEvent(item, evt) {
 | 
	
		
			
				|  |  | +      var ids = evt.checkedKeys.toString()
 | 
	
		
			
				|  |  | +      this.$emit('input', ids)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style scoped lang="scss">
 | 
	
		
			
				|  |  | +.filterInput {
 | 
	
		
			
				|  |  | +  margin-bottom: 20px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |