emis-frontend/src/views/emis/EmisBaseTools/EmisSiteLeftTreePicker.vue

116 lines
2.9 KiB
Vue
Raw Normal View History

2024-05-07 04:53:57 +00:00
<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 { listEmisSite,listSimpleEmisSite } from "@/api/emis/emisSite";
export default {
name: "EmisSiteTreePicker",
props: {
value: {
type: [String],
required: false
},
placeholder:{
type: [String],
required: false
}
},
data() {
return {
loading:false,
optionItems: [],
svalue: this.value,
filterName:"",
dataTree:[],
defaultProps: {
children: "children",
label: "siteName"
},
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;
// let queryParams = {
// orderByColumn:'orderNum',
// isAsc:'descending',
// status:1,
// }
let queryParams = {pageNumber:1,pageSize:5000,siteType:this.siteType,status:1};
listSimpleEmisSite(queryParams).then(response => {
this.loading = false;
console.log(response.rows)
this.dataTree = this.handleTree(response.rows,'siteCode','parentSiteCode');
console.log(this.dataTree)
// 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>