<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 {mapMutations, mapState} from "vuex";
|
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)
|
console.log(this.idData)
|
getTreeList({'conditionMap[id]':this.idData }).then(res=>{
|
this.Treedata=res.data
|
this.ModifyProperties(this.Treedata, 'text', 'label');
|
this.codeClassifyOid=res.data[0].oid;
|
this.coderuleoid=res.data[0].attributes.coderuleoid;
|
this.$emit("coderuleoid", this.coderuleoid )
|
}).catch(res=>{
|
console.log(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)
|
console.log('table',this.tableDataArray)
|
})
|
},
|
//表格头部
|
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;
|
let List = res.data.tableDefineVO.cols[0];
|
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>
|