5636b7b0 by 杨威

封装请求字典数据方法

1 parent 92b7581b
......@@ -5,31 +5,14 @@
</template>
<script>
import { getDdicByMC } from "../src/api/common";
export default {
mounted() {
this.getDic();
window.addEventListener("unload", this.saveState);
},
methods: {
saveState() {
sessionStorage.setItem("state", JSON.stringify(this.$store.state));
},
//请求字典数据
getDic() {
let s = this.$store.state;
s.zjzlList = s.zjzlList.length == 0 ? this.getDicData("证件种类") : s.zjzlList;
s.gjList = s.gjList.length == 0 ? this.getDicData("国家和地区") : s.gjList;
s.ssList = s.ssList.length == 0 ? this.getDicData("省市") : s.ssList;
s.qlrlxList = s.qlrlxList.length == 0 ? this.getDicData("权利人类型") : s.qlrlxList;
s.xbList = s.xbList.length == 0 ? this.getDicData("性别") : s.xbList;
s.sshyList = s.sshyList.length == 0 ? this.getDicData("国民经济行业分类代码") : s.sshyList;
},
getDicData(name) {
getDdicByMC(name).then((res) => {
return res.result;
});
},
},
};
</script>
......
......@@ -10,15 +10,15 @@ Vue.use(Vuex)
const store = new Vuex.Store({
state: sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem('state')) : {
zdbsm: '',
xzqList: [],
djqList: [],
djzqList: [],
zjzlList:[],
gjList:[],
ssList:[],
qlrlxList:[],
xbList:[],
sshyList:[],
xzqList: [],
djqList: [],
djzqList: [],
//创建自然幢时需要用到的临时存储信息
zrzbsm: '',
xmmc: '',
......
<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>
<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"
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 } from "../api/common";
export default {
components: {
Navigation,
LineTree,
Create,
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;
}
});
if (newPath == "/zd") {
this.getRightTree(this.$store.state.zdbsm);
}
},
"$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);
// }
this.getDic();
},
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;
},
async getDicData(name) {
return await getDdicByMC(name).then((res)=> {
return res.result
});
},
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;
}
});
if(newPath == '/zd'){
this.getRightTree(this.$store.state.zdbsm)
}
},
"$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 => {
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;
}
},
};
getRightTree(bsm) {
getTree(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;
},
},
};
</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;
}
.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;
}
}
.el-main {
background-color: #f1f4fc;
color: #333;
// text-align: center;
// line-height: 160px;
padding: 0;
}
}
</style>
......