<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> <div class="header-top"> <div class="top-items" @click="toggleClick"> <i class="fa fa-outdent" v-show="!isActive"></i> <i class="fa fa-indent" 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" :auth="false"></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,getDdicByMC,getTreeList,getTreeByZrzbsm } 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: [], 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; } }); if (newPath == "/zd") { this.getRightTree(this.$store.state.zdbsm); }else if (newPath == "/zrz") { this.getRightTreeByZrzbsm(this.$store.state.zrzbsm); }else { this.getTreeList(); } }, // "$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-plus-square", path: "/create", }, { name: "添加", icon: "fa fa-plus-circle", path: "/add", }, { name: "更正", icon: "fa fa-pencil-square", path: "/modify" }, { name: "变更", icon: "fa fa-exchange", path: "/change", }, { name: "综合查询", icon: "fa fa-search", 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); // } this.getDic(); this.getTreeList(); }, methods: { //请求字典数据 async getDic() { let s = this.$store.state; s.zjzlList = s.zjzlList.length == 0 ?await this.getDicData("证件种类") : s.zjzlList; s.gjList = s.gjList.length == 0 ?await this.getDicData("国家和地区") : s.gjList; s.ssList = s.ssList.length == 0 ?await this.getDicData("省市") : s.ssList; s.qlrlxList = s.qlrlxList.length == 0 ?await this.getDicData("权利人类型") : s.qlrlxList; s.xbList = s.xbList.length == 0 ? await this.getDicData("性别") : s.xbList; s.sshyList = s.sshyList.length == 0 ?await this.getDicData("所属行业") : s.sshyList; s.qllxList = s.qllxList.length == 0 ?await this.getDicData("权利类型") : s.qllxList; s.zdtzmList = s.zdtzmList.length == 0 ?await this.getDicData("宗地(宗海)特征码") : s.zdtzmList; s.qlsdfsList = s.qlsdfsList.length == 0 ?await this.getDicData("权利设定方式") : s.qlsdfsList; s.gyfsList = s.gyfsList.length == 0 ?await this.getDicData("共有方式") : s.gyfsList; s.qlxzList = s.qlxzList.length == 0 ?await this.getDicData("权利性质") : s.qlxzList; s.tdytList = s.tdytList.length == 0 ?await this.getDicData("土地用途") : s.tdytList; s.fwytList = s.fwytList.length == 0 ?await this.getDicData("房屋用途") : s.fwytList; s.tddjList = s.tddjList.length == 0 ?await this.getDicData("土地等级") : s.tddjList; s.fwlxList = s.fwlxList.length == 0 ?await this.getDicData("房屋类型") : s.fwlxList; s.hxList = s.hxList.length == 0 ?await this.getDicData("户型") : s.hxList; s.hxjgList = s.hxjgList.length == 0 ?await this.getDicData("户型结构") : s.hxjgList; s.fwjgList = s.fwjgList.length == 0 ?await this.getDicData("户型结构") : s.fwjgList; s.fwxzOptions = s.fwxzOptions.length == 0 ?await this.getDicData("房屋性质") : s.fwxzOptions; s.cbOptions = s.cbOptions.length == 0 ?await this.getDicData("房屋产别") : s.cbOptions; s.cqlyOptions = s.cqlyOptions.length == 0 ?await this.getDicData("产权来源") : s.cqlyOptions; s.jgOptions = s.jgOptions.length == 0 ?await this.getDicData("房屋结构") : s.jgOptions; s.gmjjhyflbsmList = s.gmjjhyflbsmList.length == 0 ?await this.getDicData("国民经济行业分类代码") : s.gmjjhyflbsmList; }, async getDicData(name) { return await getDdicByMC(name).then((res)=> { return res.result }); }, getRightTree(bsm) { getTree(bsm).then((res) => { if (res.success) { this.pd = res.result; } }); }, getRightTreeByZrzbsm(bsm) { getTreeByZrzbsm(bsm).then((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; }, getTreeList(){ getTreeList().then((res)=>{ this.pd=res.result; }) } }, }; </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#EAEAEA; 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; border-left: 1px solid #EAEAEA; border-right: 1px solid #EAEAEA; height: 59px; border-bottom: 1px solid #FFF; } } .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: #EAEDF5; color: #333; // text-align: center; // line-height: 160px; padding: 0; } } </style>