From 441da7ecd798f8b51cdefc7d0f5cde54399a4ca3 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期三, 01 四月 2020 12:21:48 +0800 Subject: [PATCH] 添加handle控制允许拖动的元素 --- ruoyi-ui/src/views/system/menu/index.vue | 55 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 35 insertions(+), 20 deletions(-) diff --git a/ruoyi-ui/src/views/system/menu/index.vue b/ruoyi-ui/src/views/system/menu/index.vue index 0cf7d60..5fac75f 100644 --- a/ruoyi-ui/src/views/system/menu/index.vue +++ b/ruoyi-ui/src/views/system/menu/index.vue @@ -32,22 +32,22 @@ row-key="menuId" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" > - <el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="130px"></el-table-column> - <el-table-column prop="icon" label="图标" align="center" width="100px"> + <el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column> + <el-table-column prop="icon" label="图标" align="center" width="100"> <template slot-scope="scope"> <svg-icon :icon-class="scope.row.icon" /> </template> </el-table-column> - <el-table-column prop="orderNum" label="排序" width="60px"></el-table-column> - <el-table-column prop="perms" label="权限标识" width="130px" :show-overflow-tooltip="true"></el-table-column> - <el-table-column prop="component" label="组件路径" width="180px" :show-overflow-tooltip="true"></el-table-column> - <el-table-column prop="visible" label=" 可见" :formatter="visibleFormat" width="80px"></el-table-column> - <el-table-column label="创建时间" align="center" prop="createTime" width="180"> + <el-table-column prop="orderNum" label="排序" width="60"></el-table-column> + <el-table-column prop="perms" label="权限标识" :show-overflow-tooltip="true"></el-table-column> + <el-table-column prop="component" label="组件路径" :show-overflow-tooltip="true"></el-table-column> + <el-table-column prop="visible" label="可见" :formatter="visibleFormat" width="80"></el-table-column> + <el-table-column label="创建时间" align="center" prop="createTime"> <template slot-scope="scope"> - <span>{{ dateFormat(scope.row.createTime) }}</span> + <span>{{ parseTime(scope.row.createTime) }}</span> </template> </el-table-column> - <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width"> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" @@ -63,7 +63,6 @@ v-hasPermi="['system:menu:add']" >新增</el-button> <el-button - v-if="scope.row.parentId != 0" size="mini" type="text" icon="el-icon-delete" @@ -78,11 +77,12 @@ <el-dialog :title="title" :visible.sync="open" width="600px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-row> - <el-col :span="24" v-if="form.parentId !== 0"> - <el-form-item label="上级菜单" prop="parentId"> + <el-col :span="24"> + <el-form-item label="上级菜单"> <treeselect v-model="form.parentId" :options="menuOptions" + :normalizer="normalizer" :show-count="true" placeholder="选择上级菜单" /> @@ -174,12 +174,13 @@ </template> <script> -import { listMenu, getMenu, treeselect, delMenu, addMenu, updateMenu } from "@/api/system/menu"; +import { listMenu, getMenu, delMenu, addMenu, updateMenu } from "@/api/system/menu"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import IconSelect from "@/components/IconSelect"; export default { + name: "Menu", components: { Treeselect, IconSelect }, data() { return { @@ -188,7 +189,7 @@ // 菜单表格树数据 menuList: [], // 菜单树选项 - menuOptions: undefined, + menuOptions: [], // 弹出层标题 title: "", // 是否显示弹出层 @@ -204,14 +205,14 @@ form: {}, // 表单校验 rules: { - parentId: [ - { required: true, message: "上级菜单不能为空", trigger: "blur" } - ], menuName: [ { required: true, message: "菜单名称不能为空", trigger: "blur" } ], orderNum: [ { required: true, message: "菜单顺序不能为空", trigger: "blur" } + ], + path: [ + { required: true, message: "路由地址不能为空", trigger: "blur" } ] } }; @@ -231,14 +232,28 @@ getList() { this.loading = true; listMenu(this.queryParams).then(response => { - this.menuList = response.data; + this.menuList = this.handleTree(response.data, "menuId"); this.loading = false; }); }, + /** 转换菜单数据结构 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.menuId, + label: node.menuName, + children: node.children + }; + }, /** 查询菜单下拉树结构 */ getTreeselect() { - treeselect().then(response => { - this.menuOptions = response.data; + listMenu().then(response => { + this.menuOptions = []; + const menu = { menuId: 0, menuName: '主类目', children: [] }; + menu.children = this.handleTree(response.data, "menuId"); + this.menuOptions.push(menu); }); }, // 菜单显示状态字典翻译 -- Gitblit v1.9.2