Skip to content

Commit

Permalink
修复route.js,新增deepclone方法
Browse files Browse the repository at this point in the history
  • Loading branch information
BoBoooooo committed Jan 30, 2019
1 parent cddaad7 commit 21a6f71
Show file tree
Hide file tree
Showing 6 changed files with 310 additions and 5 deletions.
54 changes: 54 additions & 0 deletions src/api/system/dict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import fetch from '@/utils/fetch'

export function DictList(params) {
return fetch({
url: '/dict/list',
method: 'post',
params,
})
}

export function DeleteDict(id) {
return fetch({
url: '/dict/delete',
method: 'post',
params: { id },
})
}

export function GetDictDetail(id) {
return fetch({
url: '/dict/detail',
method: 'post',
params: { id },
})
}

export function AddDict(data) {
return fetch({
url: '/dict/add',
method: 'post',
data,
})
}

export function UpdateDict(data) {
return fetch({
url: '/dict/update',
method: 'post',
data,
})
}

export function GetDictTree() {
return fetch({
url: '/dict/treelist',
method: 'post',
})
}
export function getObj() {
return fetch({
url: '/dict/getObj',
method: 'post',
})
}
54 changes: 54 additions & 0 deletions src/api/system/dicttype.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import fetch from '@/utils/fetch'

export function DictTypeList(params) {
return fetch({
url: '/dicttype/list',
method: 'post',
params,
})
}

export function DeleteDictType(id) {
return fetch({
url: '/dicttype/delete',
method: 'post',
params: { id },
})
}

export function GetDictTypeDetail(id) {
return fetch({
url: '/dicttype/detail',
method: 'post',
params: { id },
})
}

export function AddDictType(data) {
return fetch({
url: '/dicttype/add',
method: 'post',
data,
})
}

export function UpdateDictType(data) {
return fetch({
url: '/dicttype/update',
method: 'post',
data,
})
}

export function GetDictTypeTree() {
return fetch({
url: '/dicttype/treelist',
method: 'post',
})
}
export function getObj() {
return fetch({
url: '/dicttype/getObj',
method: 'post',
})
}
11 changes: 8 additions & 3 deletions src/router/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,14 @@ export const asyncRouterMap = [{
title: '表单设计',
},
},
{
path: 'dict',
name: 'Dict',
component: () => import('@/views/system/dict'),
meta: {
title: '数据字典',
},
},

],
},
Expand All @@ -191,6 +199,3 @@ export const asyncRouterMap = [{
hidden: true,
},
]


console.log(asyncRouterMap)
6 changes: 4 additions & 2 deletions src/store/modules/permission.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
asyncRouterMap,
constantRouterMap,
} from '@/router/index'

import { deepClone } from '@/utils/index'
/**
* 判断是否有路由权限
* @param roles
Expand Down Expand Up @@ -57,8 +57,10 @@ const permission = {
const {
roleauthname,
} = data
const routermap = deepClone(asyncRouterMap)

const accessedRouters = filterAsyncRouter(asyncRouterMap, roleauthname)
console.log(routermap);
const accessedRouters = filterAsyncRouter(routermap, roleauthname)

commit('SET_ROUTERS', accessedRouters)
resolve()
Expand Down
15 changes: 15 additions & 0 deletions src/utils/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,18 @@ export function newGuid() {
}
return guid;
}

export function deepClone(obj) {
const result = Array.isArray(obj) ? [] : {};
for (const key in obj) {
// eslint-disable-next-line no-prototype-builtins
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object') {
result[key] = deepClone(obj[key]); // 递归复制
} else {
result[key] = obj[key];
}
}
}
return result;
}
175 changes: 175 additions & 0 deletions src/views/system/dict.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
<template>
<div
id="dicttype"
class="widget-box">


<el-row>
<el-col :span="8">
<el-tree
ref="dicttypetree"
:data="dicttypeList"
:props="defaultProps"
node-key="id"
highlight-current
:default-expanded-keys="['00000000-0000-0000-0000-000000000000']"
@node-click="dicttypeTreeClick"
/>
</el-col>
<el-col :span="16">
<el-form
:model="temp"
class="small-space"
label-position="left"
label-width="70px">
<el-form-item label="名称">
<el-input
v-model="temp.name"
class="filter-item"
placeholder="请输入名称"/>
</el-form-item>
<el-form-item label="上级">
<el-select
v-model="temp.parentid"
placeholder="请选择"
filterable>
<el-option
v-for="item in dicttypeoptions"
:key="item.id"

:label="item.name"
:value="item.id"/>
</el-select>

</el-form-item>

<el-form-item label="排序码">
<el-input
v-model="temp.rank"
class="filter-item"
placeholder="请输入排序码"/>
</el-form-item>


</el-form>
<div
class="dialog-footer">
<el-button
type="success"
@click="clearObj">新 增</el-button>
<el-button
type="primary"
@click="save">保 存</el-button>
<el-button v-if="status==='update'" type="danger" @click="Delete">删 除</el-button>

</div>
</el-col>

</el-row>

</div>
</template>

<script>
import {
GetDictTypeTree,
DeleteDictType,
DictTypeList,
GetDictTypeDetail,
AddDictType,
UpdateDictType,
} from '@/api/system/dicttype';
import {
GetDictTree,
DeleteDict,
DictList,
GetDictDetail,
AddDict,
UpdateDict,
getObj,
} from '@/api/system/dict';
export default {
name: 'Dict',
data() {
return {
dicttypeoptions: [],
status: 'create',
dicttypeList: null,
temp: null,
defaultProps: {
children: 'children',
label: 'nodeName',
},
}
},
created() {
getObj().then((res) => {
this.temp = res.data
})
DictTypeList().then((res) => {
this.dicttypeoptions = res.data.list;
})
this.fetchDictType()
},
methods: {
clearObj() {
Object.keys(this.temp).forEach((key) => {
this.temp[key] = ''
})
this.status = 'create'
},
fetchDictType() {
GetDictTypeTree().then((response) => {
this.dicttypeList = response.data;
});
},
dicttypeTreeClick(obj) {
this.status = 'update'
this.Edit(obj.id)
},
Delete() {
this.$confirm('确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
DeleteDictType(this.temp.id).then(() => {
this.fetchDictType()
})
})
},
Edit(id) {
GetDictTypeDetail(id).then((response) => {
this.temp = response.data;
});
},
save() {
if (this.status === 'create') {
AddDictType(this.temp).then(() => {
this.fetchDictType();
})
} else {
UpdateDictType(this.temp).then(() => {
this.fetchDictType();
})
}
},
},
};
</script>

<style scope>
.tree{
max-height:400px;
overflow: auto;
}
.dialog-footer{
text-align: center;
}
</style>

0 comments on commit 21a6f71

Please sign in to comment.