emis-frontend/src/views/emis/EmisBaseTools/DeptmentTreePicker.vue
2024-04-22 13:35:19 +08:00

114 lines
2.8 KiB
Vue

<template>
<div>
<div class="head-container">
<el-input
v-model="filterName"
:placeholder="placeholder"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 10px"
/>
</div>
<div class="head-container" >
<el-tree
:loading="loading"
ref="tree"
class="filter-tree tree"
:data="dataTree"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
node-key="id"
highlight-current
default-expand-all
@node-click="handleNodeClick"
style="max-height:900px;overflow-y: auto"
>
</el-tree>
</div>
</div>
</template>
<script>
import { treeselect } from "@/api/system/dept";
// import Treeselect from "@riophae/vue-treeselect";
// import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "DeptmentTreePicker",
props: {
value: {
type: [String,Number],
required: false
},
placeholder:{
type: [String],
required: false
}
},
data() {
return {
optionItems: [],
svalue: this.value,
filterName:"",
dataTree:[],
defaultProps: {
children: "children",
label: "label"
},
queryParams:{
},
};
},
watch: {
value(newVal) {
this.svalue = newVal;
},
svalue(newVal, oldVal) {
this.$emit("input", this.svalue);
},
// 根据名称筛选部门树
filterName(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.initData();
},
methods: {
// 筛选节点
filterNode(value, data) {
if (!value) return true;
return data.label.toLowerCase().indexOf(value.toLowerCase()) !== -1 ;
},
// 节点单击事件
handleNodeClick(data) {
this.svalue = data.id;
this.$emit("input", this.svalue);
this.$emit("onNodeClick");
},
initData() {
this.loading = true;
treeselect().then(response => {
this.loading = false;
this.dataTree = response.data;
});
// listEmisSite(queryParams).then(response => {
// this.loading = false;
// this.dataTree = this.handleTree(response.rows,'siteCode','parentSiteCode');
// // var cTree={"id":"","label":"站点列表","children":[]};
// // response.rows.forEach(item =>{
// // var treeItem={"id":item.siteCode,"label":item.siteName+'('+item.siteNameEn+')'};
// // cTree.children.push(treeItem);
// // });
// // this.dataTree.push(cTree);
// });
},
}
};
</script>