<template> <div id="getCatalog" > <el-dialog title="选择要添加到的节点" v-if="showDialog" width="50%" :append-to-body="true" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()" center> <div> <el-tree class="el-scrollbar" ref="tree" id="catalogTree" empty-text="未知节点" node-key="id" default-expand-all :highlight-current="false" :expand-on-click-node="false" :props="props" :load="loadNode" @node-click="nodeClickHandler" lazy> <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> <el-radio v-if="node.data.type === 0 || node.data.type === -1" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio> <span v-if="node.data.type === -1 && node.level === 1" style="font-size: 12px" class="iconfont icon-ziyuan"></span> <span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span> <span v-if="node.data.type === 0 && node.level > 1" class="el-icon-folder-opened"></span> <span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span> <span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span> <span style=" padding-left: 1px">{{ node.label }}</span> <span> <i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogIdSign">默认</i> </span> </span> </el-tree> </div> <div style="float: right; height: 13rem"> <el-button type="primary" size="mini" @click="submit()" >确认</el-button> <el-button @click="close()" size="mini">取消</el-button> </div> </el-dialog> </div> </template> <script> export default { name: 'getCatalog', beforeCreate(){ }, created() { this.chooseId = this.defaultCatalogId; this.defaultCatalogIdSign = this.defaultCatalogId; this.initData(); setTimeout(()=>{ if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId); }, 100) }, props: ['platformId'], data() { return { props: { label: 'name', children: 'children', isLeaf: 'leaf' }, platformName: null, defaultCatalogId: null, catalogIdResult: null, showDialog: false, defaultCatalogIdSign: null, chooseNode: null, chooseId: "", catalogTree: null, contextmenuShow: false, }; }, methods: { openDialog(catalogIdResult) { console.log(this.chooseId) this.showDialog = true this.catalogIdResult = catalogIdResult }, initData: function () { this.getCatalog(); }, getCatalog: function(parentId, callback) { let that = this; this.$axios({ method:"get", url:`./api/platform/catalog`, params: { platformId: that.platformId, parentId: parentId } }) .then((res)=> { if (res.data.code === 0) { if (typeof(callback) === 'function') { callback(res.data.data) } } }) .catch(function (error) { console.log(error); }); }, loadNode: function(node, resolve){ if (node.level === 0) { this.$axios({ method:"get", url:`./api/platform/info/` + this.platformId, }) .then((res)=> { if (res.data.code === 0) { this.platformName = res.data.data.name; this.defaultCatalogId = res.data.data.catalogId; this.defaultCatalogIdSign = res.data.data.catalogId; this.chooseId = res.data.data.catalogId; resolve([ { name: this.platformName, id: res.data.data.deviceGBId, type: 0 } ]); } }) .catch(function (error) { console.log(error); }); } if (node.level >= 1){ this.getCatalog(node.data.id, resolve) } }, nodeClickHandler: function (data, node, tree){ this.chooseId = data.id; }, close: function() { this.chooseId = null; this.showDialog = false; }, submit: function() { console.log(this.chooseId) if (this.chooseId === null) { this.$message({ showClose: true, message: '未选择任何节点,', type: 'warning' }); return; } if (this.catalogIdResult)this.catalogIdResult(this.chooseId) this.showDialog = false; }, } }; </script> <style> #catalogTree{ display: inline-block; } </style>