<template>
|
<avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
|
:option="Treeoption"
|
style="height: calc(100vh - 150px);"
|
@node-click=" nodeClick"
|
></avue-tree>
|
</template>
|
|
<script>
|
import {getTreeList} from "@/api/MasterData/master";
|
import {TableData, MasterTable} from "@/api/GetItem";
|
|
export default {
|
name: "MasterTree",
|
props: {
|
pageSize: {
|
type: String,
|
default: "10"
|
},
|
currentPage: {
|
type: String,
|
default: "1"
|
},
|
templateOid: {
|
type: String,
|
default: ''
|
},
|
},
|
data() {
|
return {
|
idData: '',
|
masterVrBtnList: [],
|
tableHeadFindData: [],
|
tableHeadDataFateher: [],
|
templateOids: "",
|
tableDataArray: [],
|
codeClassifyOid: "",
|
coderuleoid: "",
|
CloneTreeAvueform: {},
|
loading: false,
|
Treedata: [],
|
nodeClickList: "",
|
Treeoption: {
|
addBtn: false,
|
editBtn: false,
|
delBtn: false,
|
defaultExpandAll: false,
|
menu: false,
|
lazy: true,
|
// treeLoad:function (node,resolve){
|
// console.log(node)
|
// console.log(resolve)
|
// }
|
treeLoad: function (node, resolve) {
|
if (node.data != false) {
|
const parentId = (node.level === 0) ? 0 : node.data.oid;
|
const parentBtmName = node.data.attributes.btmname
|
getTreeList({parentOid: parentId, parentBtmName: parentBtmName}).then(res => {
|
resolve(res.data.map(item => {
|
return {
|
...item,
|
label: item.text
|
}
|
}))
|
})
|
}
|
},
|
},
|
}
|
},
|
created() {
|
this.getTreeLists()
|
},
|
computed: {},
|
methods: {
|
//获取数据
|
getTreeLists() {
|
const index = this.$route.query.id.indexOf('@');
|
const result = this.$route.query.id.substring(0, index);
|
this.idData = result
|
// console.log(this.$route)
|
getTreeList({'conditionMap[id]': this.idData}).then(res => {
|
if(res){
|
if(res.data.length === 0){
|
this.$message.error("左侧菜单查询为空");
|
}else{
|
this.Treedata = res.data;
|
const [firstProperty] = res.data;
|
this.ModifyProperties(this.Treedata, 'text', 'label');
|
this.codeClassifyOid = firstProperty.oid;
|
this.coderuleoid = firstProperty.attributes.coderuleoid;
|
this.$emit("coderuleoid", this.coderuleoid)
|
this.$emit('Treedata', this.Treedata)
|
}
|
}
|
}).catch(res => {
|
console.log(res)
|
this.$message.error(res)
|
});
|
},
|
|
//定义一个修改数据属性名的方法
|
ModifyProperties(obj, oldName, newName) {
|
for (let key in obj) {
|
if (key === oldName) {
|
obj[newName] = obj[key];
|
delete obj[key];
|
}
|
if (typeof obj[key] === 'object') {
|
this.ModifyProperties(obj[key], oldName, newName);
|
}
|
}
|
},
|
//表格刷新
|
TableRend() {
|
TableData({
|
templateOid: this.templateOids,
|
codeClassifyOid: this.nodeClickList.oid,
|
page: this.currentPage,
|
limit: this.pageSize,
|
}).then(res => {
|
this.tableDataArray = res.data.data;
|
this.$emit('tableDataArray', this.tableDataArray)
|
this.$emit('total', res.data.total)
|
})
|
},
|
//表格头部
|
TableHeadRend() {
|
const index = this.$route.query.id.indexOf('@');
|
const result = this.$route.query.id.substring(0, index);
|
return new Promise((resolve, reject) => {
|
MasterTable({
|
codeClassifyOid: this.nodeClickList.oid,
|
functionId: result,
|
}).then(res => {
|
const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEEXPORT", "CODEQUERY", "batchApplyCode"];
|
//不同节点显示不同按钮
|
if (!res.data.leaf) {
|
this.masterVrBtnList = res.data.buttons.filter(obj => flagsToDeleteBtn.includes(obj.uniqueFlag));
|
} else {
|
this.masterVrBtnList = res.data.buttons
|
}
|
this.tableHeadDataFateher = res.data;
|
this.templateOids = res.data.tableDefineVO.oid;
|
const [List] = res.data.tableDefineVO.cols;
|
List.forEach(item => {
|
let columnItem = {
|
label: item.title,
|
prop: item.field,
|
// type: this.columnType[item.type],
|
sortable: item.sort,
|
width: item.minWidth
|
};
|
this.tableHeadFindData.push(Object.assign(item, columnItem))
|
})
|
this.$emit('tableHeadDataFateher', this.tableHeadDataFateher);
|
this.$emit('tableHeadFindData', this.tableHeadFindData);
|
this.$emit('tableHeadBttoms', this.masterVrBtnList);
|
resolve();
|
}).catch(err => {
|
reject(err)
|
})
|
})
|
},
|
//树点击事件
|
async nodeClick(data) {
|
try {
|
this.nodeClickList = data;
|
this.tableHeadDataFateher = []
|
this.tableHeadFindData = []
|
await this.TableHeadRend(); // 先执行 TableHeadRend()
|
this.TableRend(); // TableHeadRend() 方法完成后再执行 TableRend()
|
this.$emit('nodeClick', this.templateOids)
|
this.$emit("codeClassifyOid", this.nodeClickList.oid)
|
} catch (error) {
|
// 处理错误
|
this.$message.error(error)
|
}
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|