Commit 7a0d3b26 authored by 陈鑫's avatar 陈鑫
Browse files

增加路由备注

parent 6e137f66
Pipeline #21 failed with stages
in 0 seconds
...@@ -2,34 +2,19 @@ ...@@ -2,34 +2,19 @@
<div class="app-container"> <div class="app-container">
<p>管理动态路由</p> <p>管理动态路由</p>
<el-button type="primary" @click="addFirst">添加第一级路由</el-button> <el-button type="primary" @click="addFirst">添加第一级路由</el-button>
<el-tree <el-tree :data="data" node-key="id" default-expand-all :props="defaultProps" :expand-on-click-node="false">
:data="data"
node-key="id"
default-expand-all
:props="defaultProps"
:expand-on-click-node="false">
<span class="custom-tree-node" slot-scope="{ node, data }"> <span class="custom-tree-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span> <span>{{ node.label }}</span>
<span> <span>
<svg-icon v-if="!convertToBool(data.hidden)" icon-class="eye-open" /> <svg-icon v-if="!convertToBool(data.hidden)" icon-class="eye-open" />
<svg-icon v-else icon-class="eye" /> <svg-icon v-else icon-class="eye" />
<el-button <el-button type="text" size="mini" @click="() => append(data)" v-if="!data.parentId || data.parentId == 0">
type="text"
size="mini"
@click="() => append(data)"
v-if="!data.parentId || data.parentId == 0">
添加子路由 添加子路由
</el-button> </el-button>
<el-button <el-button type="text" size="mini" @click="() => edit(data)">
type="text"
size="mini"
@click="() => edit(data)">
修改路由 修改路由
</el-button> </el-button>
<el-button <el-button type="text" size="mini" @click="() => remove(data)">
type="text"
size="mini"
@click="() => remove(data)">
删除路由 删除路由
</el-button> </el-button>
</span> </span>
...@@ -44,16 +29,19 @@ ...@@ -44,16 +29,19 @@
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="permission.name" placeholder="路由名称" /> <el-input v-model="permission.name" placeholder="路由名称" />
</el-form-item> </el-form-item>
<el-form-item label="路由备注">
<el-input v-model="permission.menuExplain" placeholder="路由备注" />
</el-form-item>
<el-form-item label="组件名称" prop="component"> <el-form-item label="组件名称" prop="component">
<el-input v-model="permission.component" placeholder="组件名称" /> <el-input v-model="permission.component" placeholder="组件名称" />
</el-form-item> </el-form-item>
<el-form-item label="重定向路径" > <el-form-item label="重定向路径">
<el-input v-model="permission.redirect" placeholder="重定向路径" /> <el-input v-model="permission.redirect" placeholder="重定向路径" />
</el-form-item> </el-form-item>
<el-form-item label="主题" prop="meta.title"> <el-form-item label="主题" prop="meta.title">
<el-input v-model="permission.meta.title" placeholder="路由主题" /> <el-input v-model="permission.meta.title" placeholder="路由主题" />
</el-form-item> </el-form-item>
<el-form-item label="图标" > <el-form-item label="图标">
<el-input v-model="permission.meta.icon" placeholder="路由图标" /> <el-input v-model="permission.meta.icon" placeholder="路由图标" />
</el-form-item> </el-form-item>
<el-form-item label="高亮菜单"> <el-form-item label="高亮菜单">
...@@ -67,9 +55,9 @@ ...@@ -67,9 +55,9 @@
<el-checkbox v-model="permission.meta.breadcrumb" label="面包屑"></el-checkbox> <el-checkbox v-model="permission.meta.breadcrumb" label="面包屑"></el-checkbox>
</el-form> </el-form>
<br/> <br />
<div style="text-align:right;"> <div style="text-align:right;">
<el-button type="danger" @click="dialogVisible=false" >取消</el-button> <el-button type="danger" @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="comfirmMenu">提交</el-button> <el-button type="primary" @click="comfirmMenu">提交</el-button>
</div> </div>
</el-dialog> </el-dialog>
...@@ -115,19 +103,19 @@ export default { ...@@ -115,19 +103,19 @@ export default {
children: 'children', children: 'children',
label: 'title' label: 'title'
}, },
rules:{ rules: {
path:[{ path: [{
required: true, validator:pathValid, trigger: "blur" required: true, validator: pathValid, trigger: "blur"
}], }],
name:[{ required: true, message: "请输入名称", trigger: "blur" }], name: [{ required: true, message: "请输入名称", trigger: "blur" }],
component:[{ required: true, message: "请输入组件名称", trigger: "blur" }], component: [{ required: true, message: "请输入组件名称", trigger: "blur" }],
'meta.title':[{required: true, message: "请输入主题", trigger: "blur"}] 'meta.title': [{ required: true, message: "请输入主题", trigger: "blur" }]
} }
} }
}, },
created(){ created() {
this.getMenuData() this.getMenuData()
}, },
...@@ -147,14 +135,14 @@ export default { ...@@ -147,14 +135,14 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteMenu(data.id).then(res=>{ deleteMenu(data.id).then(res => {
if(res.status == 'success'){ if (res.status == 'success') {
this.getMenuData() this.getMenuData()
this.$message({ this.$message({
type: 'success', type: 'success',
message: '删除成功!' message: '删除成功!'
}) })
}else{ } else {
this.$message.error(res.data) this.$message.error(res.data)
} }
}) })
...@@ -171,17 +159,17 @@ export default { ...@@ -171,17 +159,17 @@ export default {
this.dialogVisible = true this.dialogVisible = true
}, },
addFirst(){ addFirst() {
this.permission = deepClone(defaultPermisson) this.permission = deepClone(defaultPermisson)
this.dialogType = 'new' this.dialogType = 'new'
this.dialogVisible = true this.dialogVisible = true
this.dialogTitle = '新增一级菜单' this.dialogTitle = '新增一级菜单'
}, },
async comfirmMenu(){ async comfirmMenu() {
this.$refs.form.validate((valid)=>{ this.$refs.form.validate((valid) => {
if(valid){ if (valid) {
if ( this.dialogType === 'edit') { if (this.dialogType === 'edit') {
// 修改菜单信息 // 修改菜单信息
// 整理boolean属性 // 整理boolean属性
let submitMenu = deepClone(this.permission) let submitMenu = deepClone(this.permission)
...@@ -193,26 +181,29 @@ export default { ...@@ -193,26 +181,29 @@ export default {
submitMenu.meta.affix = this.convertToNumber(submitMenu.meta.affix) submitMenu.meta.affix = this.convertToNumber(submitMenu.meta.affix)
submitMenu.meta.breadcrumb = this.convertToNumber(submitMenu.meta.breadcrumb) submitMenu.meta.breadcrumb = this.convertToNumber(submitMenu.meta.breadcrumb)
editMenu(submitMenu).then((res)=>{ editMenu(submitMenu).then((res) => {
if(res.status=="success"){ if (res.status == "success") {
this.getMenuData()
this.$message({ this.$message({
type: 'success', type: 'success',
message: '修改成功!' message: '修改成功!'
}) })
}else{ } else {
this.$message({ this.$message({
type: 'error', type: 'error',
message: res.data message: res.data
}) })
} }
}).catch(err=>{ }).catch(err => {
this.$message({ this.$message({
type: 'error', type: 'error',
message: '修改失败!' message: '修改失败!'
}) })
}) })
this.dialogVisible = false this.dialogVisible = false
this.getMenuData() // setTimeout(() => {
// this.getMenuData()
// }, 500);
this.permission = defaultPermisson this.permission = defaultPermisson
} else { } else {
// 添加菜单信息 // 添加菜单信息
...@@ -225,21 +216,21 @@ export default { ...@@ -225,21 +216,21 @@ export default {
submitMenu.meta.affix = this.convertToNumber(submitMenu.meta.affix) submitMenu.meta.affix = this.convertToNumber(submitMenu.meta.affix)
submitMenu.meta.breadcrumb = this.convertToNumber(submitMenu.meta.breadcrumb) submitMenu.meta.breadcrumb = this.convertToNumber(submitMenu.meta.breadcrumb)
addMenu(submitMenu).then((res)=>{ addMenu(submitMenu).then((res) => {
if(res.status == "success"){ if (res.status == "success") {
this.$message({ this.$message({
type: 'success', type: 'success',
message: '添加成功!' message: '添加成功!'
}) })
this.getMenuData() this.getMenuData()
}else{ } else {
this.$message({ this.$message({
type: 'error', type: 'error',
message: res.data message: res.data
}) })
} }
}).catch(err=>{ }).catch(err => {
this.$message({ this.$message({
type: 'error', type: 'error',
message: '添加失败!' message: '添加失败!'
...@@ -253,7 +244,7 @@ export default { ...@@ -253,7 +244,7 @@ export default {
}) })
}, },
async getMenuData(){ async getMenuData() {
// 请求后端,获取动态路由tree // 请求后端,获取动态路由tree
let res = await getMenuTree() let res = await getMenuTree()
// 按el-tree组件的要求,整理数据结构 // 按el-tree组件的要求,整理数据结构
...@@ -266,7 +257,7 @@ export default { ...@@ -266,7 +257,7 @@ export default {
for (let route of routes) { for (let route of routes) {
const data = route const data = route
// 将路由里面的title元数据,赋给data的title属性 // 将路由里面的title元数据,赋给data的title属性
data.title = route.meta && route.meta.title data.title = route.meta && route.meta.title,//route.meta && route.meta.title
// 将路由里面的相关属性的值,改成boolean类型 // 将路由里面的相关属性的值,改成boolean类型
data.hidden = this.convertToBool(data.hidden) data.hidden = this.convertToBool(data.hidden)
...@@ -283,11 +274,11 @@ export default { ...@@ -283,11 +274,11 @@ export default {
} }
return res return res
}, },
convertToBool(v){ convertToBool(v) {
return v==0?false:true return v == 0 ? false : true
}, },
convertToNumber(v){ convertToNumber(v) {
return v?1:0 return v ? 1 : 0
} }
} }
}; };
...@@ -298,10 +289,12 @@ export default { ...@@ -298,10 +289,12 @@ export default {
.roles-table { .roles-table {
margin-top: 30px; margin-top: 30px;
} }
.permission-tree { .permission-tree {
margin-bottom: 30px; margin-bottom: 30px;
} }
} }
.custom-tree-node { .custom-tree-node {
flex: 1; flex: 1;
display: flex; display: flex;
......
...@@ -159,7 +159,7 @@ export default { ...@@ -159,7 +159,7 @@ export default {
if(route.id != 1){ if(route.id != 1){
const data = { const data = {
path: path.resolve(basePath, route.path), path: path.resolve(basePath, route.path),
title: route.meta && route.meta.title, title: route.meta && (route.menuExplain ? `${route.meta.title}${route.menuExplain})`: route.meta.title),
id: route.id id: route.id
} }
if (route.children.length>0) { if (route.children.length>0) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment