| | |
| | | <template> |
| | | <div style="overflow: auto; height: calc(100vh - 150px);"> |
| | | <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false" :option="Treeoption" @node-click="nodeClick" style="width: fit-content;"> |
| | | <div class="app" style="position: relative;"> |
| | | <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false" |
| | | :option="Treeoption" style="width: fit-content;" @node-click="nodeClick"> |
| | | <template slot-scope="{ node }"> |
| | | <span style="display: inline-block;">{{ node.label }}</span> |
| | | <el-tooltip :content="$createElement('div', { domProps: { innerHTML: node.label } })" class="item" effect="dark" |
| | | open-delay="350" placement="right-start"> |
| | | <span id="labelSize" v-html="node.label"></span> |
| | | </el-tooltip> |
| | | </template> |
| | | </avue-tree> |
| | | <div style="position: absolute; right: 3px; top: -1px;"> |
| | | <el-link class="refresh-icon" icon="el-icon-refresh" @click="getTreeLists"></el-link> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | TreeValue:'', |
| | | TreeValue: '', |
| | | idData: '', |
| | | referTreeId: '', |
| | | masterVrBtnList: [], |
| | | tableHeadFindData: [], |
| | | tableHeadDataFateher: [], |
| | |
| | | defaultExpandAll: false, |
| | | menu: false, |
| | | lazy: true, |
| | | // treeLoad:function (node,resolve){ |
| | | // console.log(node) |
| | | // console.log(resolve) |
| | | // } |
| | | treeLoad: function (node, resolve) { |
| | | treeLoad: (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 => { |
| | | const parentBtmName = node.data.attributes.btmname; |
| | | getTreeList({ |
| | | parentOid: parentId, |
| | | parentBtmName: parentBtmName, |
| | | 'conditionMap[btmTypeId]': this.referTreeId |
| | | }).then(res => { |
| | | resolve(res.data.map(item => { |
| | | return { |
| | | ...item, |
| | | label: item.text |
| | | label: `<span style="color:#409EFF">${item.count}</span> ${item.text}`, |
| | | count: item.count |
| | | } |
| | | })) |
| | | }) |
| | |
| | | created() { |
| | | this.getTreeLists() |
| | | }, |
| | | computed: {}, |
| | | mounted() { |
| | | |
| | | }, |
| | | computed: { |
| | | formatCount() { |
| | | return (label) => { |
| | | const countIndex = label.indexOf('</span>') + '</span>'.length; |
| | | const count = label.slice(countIndex); |
| | | const coloredCount = `<span class="count">${count}</span>`; |
| | | return `${label.slice(0, countIndex)}${coloredCount}`; |
| | | }; |
| | | }, |
| | | }, |
| | | 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.idData = result; |
| | | this.removeList(); |
| | | let conditionMaps = {}; |
| | | conditionMaps["conditionMap[id]"] = this.idData; |
| | | conditionMaps["conditionMap[authType]"] = "data_auth"; |
| | | // 数据授权中是否具备查看权限 |
| | | conditionMaps["conditionMap[menuCode]"] = "data_view"; |
| | | getTreeList(conditionMaps).then(res => { |
| | | if (res) { |
| | | if (res.data.length === 0) { |
| | | this.$message.error("主数据分类查询为空!"); |
| | | }else{ |
| | | } else { |
| | | this.Treedata = res.data; |
| | | const [firstProperty] = res.data; |
| | | this.ModifyProperties(this.Treedata, 'text', 'label'); |
| | | this.referTreeId = firstProperty.attributes.btmTypeId; |
| | | // console.log(this.referTreeId) |
| | | this.codeClassifyOid = firstProperty.oid; |
| | | this.coderuleoid = firstProperty.attributes.coderuleoid; |
| | | this.$emit("coderuleoid", this.coderuleoid) |
| | | this.$emit('Treedata', this.Treedata) |
| | | this.Treedata.forEach((item, index) => { |
| | | item.label = `<span style="color:#409EFF">${item.count}</span> ${item.label}`; |
| | | }); |
| | | this.$emit("coderuleoid", this.coderuleoid) |
| | | this.$emit('Treedata', this.Treedata) |
| | | } |
| | | } |
| | | }).catch(res => { |
| | | // console.log(res) |
| | | this.$message.error(res) |
| | | }); |
| | | }, |
| | | |
| | | removeList() { |
| | | this.$emit('tableHeadDataFateher', []); |
| | | this.$emit('tableHeadFindData', []); |
| | | this.$emit('tableHeadBttoms', []); |
| | | this.$emit('tableDataArray', []) |
| | | this.$emit('total', null) |
| | | }, |
| | | //定义一个修改数据属性名的方法 |
| | | ModifyProperties(obj, oldName, newName) { |
| | | for (let key in obj) { |
| | |
| | | }, |
| | | //表格刷新 |
| | | TableRend() { |
| | | this.loading = true; |
| | | this.$emit('loading', this.loading) |
| | | TableData({ |
| | | templateOid: this.templateOids, |
| | | codeClassifyOid: this.nodeClickList.oid, |
| | | page: this.currentPage, |
| | | limit: this.pageSize, |
| | | }).then(res => { |
| | | // console.log('tab',res) |
| | | this.loading = false; |
| | | this.$emit('loading', this.loading) |
| | | 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); |
| | | // console.log(this.$route) |
| | | return new Promise((resolve, reject) => { |
| | | MasterTable({ |
| | | codeClassifyOid: this.nodeClickList.oid, |
| | |
| | | List.forEach(item => { |
| | | let columnItem = { |
| | | label: item.title, |
| | | prop: item.queryField, |
| | | prop: item.field, |
| | | // type: this.columnType[item.type], |
| | | sortable: item.sort, |
| | | width: item.minWidth |
| | | width: item.minWidth, |
| | | query: item.queryField |
| | | }; |
| | | this.tableHeadFindData.push(Object.assign(item, columnItem)) |
| | | }) |
| | |
| | | async nodeClick(data) { |
| | | try { |
| | | // console.log(data) |
| | | this.TreeValue=data.label.split(" ")[0].trim(); |
| | | console.log('TreeValue',this.TreeValue) |
| | | this.$emit('TreeValue',this.TreeValue) |
| | | this.TreeValue = data.label.split("</span>")[1].trim(); |
| | | // console.log('TreeValue',this.TreeValue) |
| | | this.$emit('TreeValue', this.TreeValue) |
| | | this.nodeClickList = data; |
| | | this.tableHeadDataFateher = [] |
| | | this.tableHeadFindData = [] |
| | | await this.TableHeadRend(); // 先执行 TableHeadRend() |
| | | this.TableRend(); // TableHeadRend() 方法完成后再执行 TableRend() |
| | | this.$emit('nodeClick', this.templateOids) |
| | | this.$emit('nodeClickTemplateOids', this.templateOids) |
| | | this.$emit("codeClassifyOid", this.nodeClickList.oid) |
| | | this.$emit("nodeClickList", this.nodeClickList) |
| | | } catch (error) { |
| | | // 处理错误 |
| | | this.$message.error(error) |
| | | } |
| | | } |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | <style lang="scss" scoped> |
| | | .app { |
| | | overflow: auto; |
| | | height: calc(100vh - 145px); |
| | | } |
| | | |
| | | .app::-webkit-scrollbar { |
| | | height: 15px; // 纵向滚动条 必写 |
| | | background: white; |
| | | border: white; |
| | | width: 10px; |
| | | |
| | | } |
| | | |
| | | // 滚动条的滑块 |
| | | .app::-webkit-scrollbar-thumb { |
| | | background-color: #ececec; |
| | | border-radius: 20px; |
| | | border: #ececec; |
| | | } |
| | | |
| | | .refresh-icon { |
| | | color: #409EFF; |
| | | margin-top: 8px; |
| | | margin-left: 6px; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | #labelSize { |
| | | font-size: 14px !important; |
| | | } |
| | | </style> |