|
@@ -4,13 +4,31 @@
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<!-- 表单查询 -->
|
|
|
- <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
|
|
|
+ <el-form
|
|
|
+ ref="queryForm"
|
|
|
+ :model="queryParams"
|
|
|
+ :inline="true"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
<el-form-item label="菜单名称" prop="menuName">
|
|
|
- <el-input v-model="queryParams.menuName" placeholder="请输入菜单名称" clear />
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.menuName"
|
|
|
+ placeholder="请输入菜单名称"
|
|
|
+ clear
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" icon="el-icon-search" size="mini" @click="handelSearch">搜索</el-button>
|
|
|
- <el-button icon="el-icon-refresh" size="mini" @click="handelReset">重置</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ size="mini"
|
|
|
+ @click="handelSearch"
|
|
|
+ >搜索</el-button>
|
|
|
+ <el-button
|
|
|
+ icon="el-icon-refresh"
|
|
|
+ size="mini"
|
|
|
+ @click="handelReset"
|
|
|
+ >重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
@@ -19,7 +37,7 @@
|
|
|
icon="el-icon-plus"
|
|
|
type="primary"
|
|
|
plain
|
|
|
- style="margin-bottom:20px"
|
|
|
+ style="margin-bottom: 20px"
|
|
|
@click="handelAdd"
|
|
|
>新增</el-button>
|
|
|
|
|
@@ -33,13 +51,43 @@
|
|
|
stripe
|
|
|
header-row-class-name="headBackground"
|
|
|
>
|
|
|
- <el-table-column key="menuName" label="菜单名称" header-align="center" prop="menuName" show-overflow-tooltip />
|
|
|
- <el-table-column key="menuIcon" label="菜单图标" prop="menuIcon" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column key="menuUrl" label="路由地址" prop="menuUrl" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column key="sortNum" label="排序号" prop="sortNum" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column key="hidden" label="显示状态" prop="hidden" align="center" show-overflow-tooltip>
|
|
|
+ <el-table-column
|
|
|
+ key="menuName"
|
|
|
+ label="菜单名称"
|
|
|
+ header-align="center"
|
|
|
+ prop="menuName"
|
|
|
+ show-overflow-tooltip
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ key="menuIcon"
|
|
|
+ label="菜单图标"
|
|
|
+ prop="menuIcon"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ key="menuUrl"
|
|
|
+ label="路由地址"
|
|
|
+ prop="menuUrl"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ key="sortNum"
|
|
|
+ label="排序号"
|
|
|
+ prop="sortNum"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ key="hidden"
|
|
|
+ label="显示状态"
|
|
|
+ prop="hidden"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ >
|
|
|
<template slot-scope="scope">
|
|
|
- {{ scope.row.hidden === 0 ? '显示' : '隐藏' }}
|
|
|
+ {{ scope.row.hidden === 0 ? "显示" : "隐藏" }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<!-- <el-table-column key="menuStatus" label="菜单状态" prop="menuStatus" align="center" show-overflow-tooltip>
|
|
@@ -64,16 +112,40 @@
|
|
|
show-overflow-tooltip
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
- {{ scope.row.updateTime === null ? scope.row.createTime : scope.row.updateTime }}
|
|
|
+ {{
|
|
|
+ scope.row.updateTime === null
|
|
|
+ ? (scope.row.updateTime = "暂未更新")
|
|
|
+ : scope.row.updateTime
|
|
|
+ }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width">
|
|
|
+ <el-table-column
|
|
|
+ label="操作"
|
|
|
+ align="center"
|
|
|
+ width="250"
|
|
|
+ class-name="small-padding fixed-width"
|
|
|
+ >
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button size="mini" type="text" icon="el-icon-edit" @click="handelEdit(scope.row.id)">修改
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-edit"
|
|
|
+ @click="handelEdit(scope.row.id)"
|
|
|
+ >修改
|
|
|
</el-button>
|
|
|
- <el-button size="mini" type="text" icon="el-icon-delete" @click="handelDel(scope.row.id)">删除
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ @click="handelDel(scope.row.id)"
|
|
|
+ >删除
|
|
|
</el-button>
|
|
|
- <el-button size="mini" type="text" icon="el-icon-zoom-in" @click="handelAuth(scope.row.id)">分配权限
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-zoom-in"
|
|
|
+ @click="handelAuth(scope.row.id)"
|
|
|
+ >分配权限
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -92,36 +164,61 @@
|
|
|
</el-row>
|
|
|
|
|
|
<!-- 弹出框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="dialogVisible" width="800px" :close-on-click-modal="false">
|
|
|
+ <el-dialog
|
|
|
+ :title="title"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="800px"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ >
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="上级菜单" prop="parentId">
|
|
|
- <selectTree v-model="form.parentId" :options="options" placeholder="请选择上级菜单" key-name="menuName" />
|
|
|
+ <selectTree
|
|
|
+ :key="key"
|
|
|
+ v-model="form.parentId"
|
|
|
+ :options="options"
|
|
|
+ placeholder="请选择上级菜单"
|
|
|
+ key-name="menuName"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="菜单图标" prop="menuIcon">
|
|
|
- <el-input v-model.trim="form.menuIcon" placeholder="请输入菜单图标" />
|
|
|
+ <el-input
|
|
|
+ v-model.trim="form.menuIcon"
|
|
|
+ placeholder="请输入菜单图标"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="菜单名称" prop="menuName">
|
|
|
- <el-input v-model.trim="form.menuName" placeholder="请输入菜单名称" />
|
|
|
+ <el-input
|
|
|
+ v-model.trim="form.menuName"
|
|
|
+ placeholder="请输入菜单名称"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="路由地址" prop="menuUrl">
|
|
|
- <el-input v-model.trim="form.menuUrl" placeholder="请输入路由地址" />
|
|
|
+ <el-input
|
|
|
+ v-model.trim="form.menuUrl"
|
|
|
+ placeholder="请输入路由地址"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="排序号" prop="sortNum">
|
|
|
- <el-input v-model.trim="form.sortNum" placeholder="请输入排序号" :minlength="1" :maxlength="5" />
|
|
|
+ <el-input
|
|
|
+ v-model.trim="form.sortNum"
|
|
|
+ placeholder="请输入排序号"
|
|
|
+ :minlength="1"
|
|
|
+ :maxlength="5"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -141,7 +238,11 @@
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" size="mini" @click="handelSubmit('form')">确定</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ @click="handelSubmit('form')"
|
|
|
+ >确定</el-button>
|
|
|
<el-button size="mini" @click="handelCancel('form')">取消</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
@@ -151,7 +252,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { getMenuList, addtMenuList, detailtMenuList, delMenuList, editMenuList, getAllMenuList } from '@/api/system/menu.js'
|
|
|
+import {
|
|
|
+ getMenuList,
|
|
|
+ addtMenuList,
|
|
|
+ detailtMenuList,
|
|
|
+ delMenuList,
|
|
|
+ editMenuList,
|
|
|
+ getAllMenuList
|
|
|
+} from '@/api/system/menu.js'
|
|
|
import selectTree from '@/components/SelectTree'
|
|
|
export default {
|
|
|
components: {
|
|
@@ -163,7 +271,7 @@ export default {
|
|
|
if (!value) {
|
|
|
callback(new Error('排序号不能为空'))
|
|
|
}
|
|
|
- if (!(reg.test(value))) {
|
|
|
+ if (!reg.test(value)) {
|
|
|
callback(new Error('只能输入正整数'))
|
|
|
}
|
|
|
callback()
|
|
@@ -173,7 +281,7 @@ export default {
|
|
|
if (!value) {
|
|
|
callback(new Error('路由地址不能为空'))
|
|
|
}
|
|
|
- if (!(reg.test(value))) {
|
|
|
+ if (!reg.test(value)) {
|
|
|
callback(new Error('只能输入斜杠 横杠和英文'))
|
|
|
}
|
|
|
callback()
|
|
@@ -210,20 +318,28 @@ export default {
|
|
|
// 表单验证
|
|
|
rules: {
|
|
|
menuName: [
|
|
|
- { required: true, message: '菜单名称不能为空', pattern: '[^ \x22]+', trigger: 'blur' }
|
|
|
- ],
|
|
|
- sortNum: [
|
|
|
- { required: true, validator: sortNumRule, trigger: 'blur' }
|
|
|
- ],
|
|
|
- menuUrl: [
|
|
|
- { required: true, validator: valitatorUrl, trigger: 'blur' }
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '菜单名称不能为空',
|
|
|
+ pattern: '[^ \x22]+',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
],
|
|
|
+ sortNum: [{ required: true, validator: sortNumRule, trigger: 'blur' }],
|
|
|
+ menuUrl: [{ required: true, validator: valitatorUrl, trigger: 'blur' }],
|
|
|
menuIcon: [
|
|
|
- { required: true, message: '菜单图标不能为空', pattern: '[^ \x22]+', trigger: 'blur' }
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '菜单图标不能为空',
|
|
|
+ pattern: '[^ \x22]+',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
]
|
|
|
},
|
|
|
// 修改菜单id
|
|
|
- id: null
|
|
|
+ id: null,
|
|
|
+ // 更新下拉树
|
|
|
+ key: 0
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -234,7 +350,7 @@ export default {
|
|
|
methods: {
|
|
|
/** 获取表格数据 */
|
|
|
getMenuList() {
|
|
|
- getMenuList(this.queryParams).then(response => {
|
|
|
+ getMenuList(this.queryParams).then((response) => {
|
|
|
const data = response.data
|
|
|
this.menuList = data.menuList
|
|
|
this.loading = false
|
|
@@ -244,7 +360,7 @@ export default {
|
|
|
},
|
|
|
/** 默认收起所有行 */
|
|
|
defaultExpande(data) {
|
|
|
- data.forEach(item => {
|
|
|
+ data.forEach((item) => {
|
|
|
this.$refs.table && this.$refs.table.toggleRowExpansion(item, false)
|
|
|
if (item.children && item.children.length) {
|
|
|
this.defaultExpande(item.children)
|
|
@@ -253,7 +369,7 @@ export default {
|
|
|
},
|
|
|
/** 获取上级菜单 */
|
|
|
getOptionsList() {
|
|
|
- getAllMenuList().then(res => {
|
|
|
+ getAllMenuList().then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
const data = res.data
|
|
|
this.options = data
|
|
@@ -275,6 +391,7 @@ export default {
|
|
|
handelAdd() {
|
|
|
this.dialogVisible = true
|
|
|
this.title = '添加菜单'
|
|
|
+ this.key++
|
|
|
this.reset()
|
|
|
this.getOptionsList()
|
|
|
},
|
|
@@ -282,7 +399,7 @@ export default {
|
|
|
handelEdit(id) {
|
|
|
this.id = id
|
|
|
this.dialogVisible = true
|
|
|
- detailtMenuList({ id }).then(res => {
|
|
|
+ detailtMenuList({ id }).then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
this.form = res.data
|
|
|
this.getOptionsList()
|
|
@@ -298,22 +415,24 @@ export default {
|
|
|
cancelButtonClass: 'btn_custom_cancel',
|
|
|
closeOnClickModal: false,
|
|
|
type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- delMenuList({ id }).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.$message({
|
|
|
- type: 'success',
|
|
|
- message: res.data
|
|
|
- })
|
|
|
- this.getMenuList()
|
|
|
- }
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ delMenuList({ id }).then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data
|
|
|
+ })
|
|
|
+ this.getMenuList()
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: '已取消删除'
|
|
|
+ .catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消删除'
|
|
|
+ })
|
|
|
})
|
|
|
- })
|
|
|
},
|
|
|
/** 表单提交 */
|
|
|
handelSubmit(formName) {
|
|
@@ -321,7 +440,7 @@ export default {
|
|
|
if (valid) {
|
|
|
if (this.title === '添加菜单') {
|
|
|
this.form.parentId = this.form.parentId || 0
|
|
|
- addtMenuList(this.form).then(res => {
|
|
|
+ addtMenuList(this.form).then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
this.$message({
|
|
|
message: res.data,
|
|
@@ -340,7 +459,7 @@ export default {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- editMenuList(this.form).then(res => {
|
|
|
+ editMenuList(this.form).then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
this.$message({
|
|
|
message: res.data,
|
|
@@ -379,5 +498,4 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" rel="stylesheet/scss" scoped>
|
|
|
-
|
|
|
</style>
|