<template> <div class="home-box"> <el-container> <el-aside :class="{ 'aside-show': isActive }"> <div class="logo-box" :class="{ 'logo-box-show': isActive }"> <img class="logo-img" src="@/assets/images/logo-realestate.png" alt="" /> <span class="logo-text" v-show="!textLogo">不动产权籍调查系统</span> </div> <div class="treeModule"> <LineTree :pd="pd" @itemClick="itemClick"></LineTree> </div> </el-aside> <el-container> <el-header height="100px"> <div class="header-top"> <div class="top-items" @click="toggleClick"> <i class="fa fa-outdent hamburger" v-show="!isActive"></i> <i class="fa fa-indent hamburger" v-show="isActive"></i> </div> <div class="top-items" v-for="(item, index) in headTop" :key="index + '1'" :class="{ 'is-active': item.select }" @click="selectTopItems(index)" > <i :class="item.icon"></i> <span>{{ item.name }}</span> </div> </div> <div class="header-bottom"> <Navigation ref="navigation"></Navigation> </div> <el-dialog title="新建" :visible.sync="dialogVisible" width="40%" > <Create @closeDialog="closeDialog"></Create> </el-dialog> </el-header> <el-main> <router-view/> </el-main> </el-container> </el-container> </div> </template> <script> import util from "@/libs/util.js"; import Navigation from "../components/IvyElement/navigation"; import Create from "./panel/create/index"; import LineTree from "../components/lineTree/lineTree"; import {setTimeout} from "timers"; import {getTree} from "../api/common" export default { components: { Navigation, LineTree, Create, }, data() { return { navigationList: [], isActive: false, textLogo: false, activePath: "", defaultActive: "", headTop: [ { path: "/create", select: false, }, { path: "/add", select: false, }, { path: "/modify", select: false, }, { path: "/change", select: false, }, { path: "/search", select: false, }, ], tempTab: [ { path: "/zrz", name: "自然幢", }, { path: "/dz", name: "多幢", }, { path: "/h", name: "户", }, { path: "/zd", name: "宗地", }, ], // 上导航选中id indId: undefined, menuList: [], pathAndCodeObj: { "/article-draft": "PSH004", "/article-publish": "PSH005", "/article-recycle": "PSH006", "/notice-draft": "PSH007", "/notice-publish": "PSH008", "/notice-recycle": "PSH009", "/column_management": "PSH018", "/announcement_template": "PSH019", "/business_management": "PSH020", }, pd: [ { mc: "行政区(1)", children: [], }, { mc: "行政区(2)", children: [ { mc: "地籍区1", children: [], }, { mc: "地籍区2", children: [ { mc: "国有", children: [ { mc: "宗地代码1933", isZD: true, }, { mc: "自然幢2100", isZD: false, }, ], }, ], }, { label: "地籍区3", children: [], }, { label: "地籍区4", children: [], }, ], }, { mc: "行政区(3)", children: [], }, { mc: "行政区(4)", children: [], }, { mc: "行政区(5)", children: [], }, ], dialogVisible: false, }; }, computed: { permission_routes() { return this.$store.state.permission_routes.navigation; }, }, watch: { "$route.path": function (newPath) { //监测路由变化,高亮顶部导航 this.headTop.forEach((item, index) => { item.select = false; if (item.path == newPath) { item.select = true; } }); }, "$store.state.zdbsm": function (bsm) { this.getRightTree(bsm) } }, created() { if (this.$route.meta) { this.defaultActive = this.$route.meta.code; } if (this.permission_routes.length !== 0) { this.navigationList = this.permission_routes; } else { // let list = JSON.parse(util.cookies.get('navigation-1')).concat(JSON.parse(util.cookies.get('navigation'))) //mock数据 let list = [ { name: "新建", icon: "fa fa-address-card-o", path: "/create", }, { name: "添加", icon: "fa fa-address-card-o", path: "/add", }, {name: "更正", icon: "fa fa-address-card-o", path: "/modify"}, { name: "变更", icon: "fa fa-address-card-o", path: "/change", }, { name: "综合查询", icon: "fa fa-address-card-o", path: "/search", }, ]; this.navigationList = list; } this.sortNavigation(this.navigationList, 0); // if (util.cookies.get("indId")) { // let indId = util.cookies.get("indId") - 0; // this.navSelect(indId); // this.sortNavigation(this.navigationList, indId); // } }, methods: { getRightTree(bsm) { getTree(bsm).then(res => { console.log("=========================================") console.log(res) if (res.success) { this.pd=res.result } }) }, sortNavigation(data, selectId) { let headTop = this.headTop; data.forEach((item, index) => { headTop[index].name = item.name; headTop[index].icon = item.icon; }); }, // menuSelect(data, selectId) { // this.menuList = data[selectId].children; // }, handleOpen(key, keyPath) { console.log(key, keyPath); }, handleClose(key, keyPath) { console.log(key, keyPath); }, toggleClick() { this.isActive = !this.isActive; if (!this.isActive) { setTimeout(() => { this.textLogo = this.isActive; }, 200); } else { this.textLogo = this.isActive; } }, selectTopItems(ind) { if (ind == 0) { //点击新建,弹框 this.dialogVisible = true; } else { this.dialogVisible = false; this.indId = ind; // this.menuSelect(this.navigationList, ind); // this.$store.dispatch("setTabs/init_tabs"); // this.$store.dispatch("setTabs/set_active_index", "/panel"); this.$router.push(this.headTop[ind].path); this.navSelect(ind); // util.cookies.set("indId", ind); } }, // 上导航选中id navSelect(id) { this.headTop.forEach((item, index) => { item.select = false; if (index == id) { item.select = true; } }); }, //树控件点击事件 itemClick(data) { console.log(data); }, //关闭新建子组件弹框 closeDialog() { this.dialogVisible = false; } }, }; </script> <style lang="less" scoped> .home-box { width: 100%; height: 100vh; .el-container { height: 100%; } .el-header { background-color: #fff; padding: 0 !important; .header-top { height: 60px; border-bottom: 1px solid rgba(242, 242, 242, 1); box-sizing: border-box; .top-items { cursor: pointer; height: 60px; padding: 0 30px; font-size: 16px; line-height: 60px; float: left; position: relative; color: #4a4a4a; i { margin-right: 6px; } .hamburger { font-size: 16px; line-height: 60px; color: #000; } } .top-items:not(:last-child)::after { content: ""; width: 1px; height: 14px; background: #eaeaea; position: absolute; right: -1px; top: 24px; } .top-items.is-active { color: #006cff; } } .header-bottom { height: 50px; box-shadow: 0px 2px 4px 0px rgba(222, 222, 222, 0.7); border-bottom: 1px solid rgba(234, 234, 234, 1); box-sizing: border-box; } } .el-aside { width: 290px !important; background-color: #1d50dd; color: #333; // text-align: center; overflow: hidden; transition: width 0.3s; .logo-box { width: 100%; height: 120px; border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding: 30px 0 28px 0; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between; align-items: center; transition: width 0.3s; .logo-img { width: 38px; height: 38px; } .logo-text { font-size: 14px; color: rgba(255, 255, 255, 1); line-height: 14px; } } .treeModule { box-sizing: border-box; padding: 20px 20px; } .logo-box-show { width: 64px; } .el-menu { border-right: 0; } .el-submenu .el-menu-item { text-align: left; text-indent: 15px; } } .aside-show { width: 64px !important; } .el-main { background-color: #f1f4fc; color: #333; // text-align: center; // line-height: 160px; padding: 0; } } </style>