|
|
|
@ -26,16 +26,16 @@
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<el-button
|
|
|
|
|
type="primary"
|
|
|
|
|
plain
|
|
|
|
|
icon="el-icon-plus"
|
|
|
|
|
size="mini"
|
|
|
|
|
@click="handleAdd"
|
|
|
|
|
v-hasPermi="['system:menu:add']"
|
|
|
|
|
>新增</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<!-- <el-col :span="1.5">-->
|
|
|
|
|
<!-- <el-button-->
|
|
|
|
|
<!-- type="primary"-->
|
|
|
|
|
<!-- plain-->
|
|
|
|
|
<!-- icon="el-icon-plus"-->
|
|
|
|
|
<!-- size="mini"-->
|
|
|
|
|
<!-- @click="handleAdd"-->
|
|
|
|
|
<!-- v-hasPermi="['system:menu:add']"-->
|
|
|
|
|
<!-- >新增</el-button>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<el-button
|
|
|
|
|
type="info"
|
|
|
|
@ -63,18 +63,18 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<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="status" label="状态" width="80">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="创建时间" align="center" prop="createTime">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</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="status" label="状态" width="80">-->
|
|
|
|
|
<!-- <template slot-scope="scope">-->
|
|
|
|
|
<!-- <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<!-- <el-table-column label="创建时间" align="center" prop="createTime">-->
|
|
|
|
|
<!-- <template slot-scope="scope">-->
|
|
|
|
|
<!-- <span>{{ parseTime(scope.row.createTime) }}</span>-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<el-table-column label="操作" width="200px" align="center" class-name="small-padding fixed-width">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-button
|
|
|
|
@ -84,20 +84,20 @@
|
|
|
|
|
@click="handleUpdate(scope.row)"
|
|
|
|
|
v-hasPermi="['system:menu:edit']"
|
|
|
|
|
>修改</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
size="mini"
|
|
|
|
|
type="text"
|
|
|
|
|
icon="el-icon-plus"
|
|
|
|
|
@click="handleAdd(scope.row)"
|
|
|
|
|
v-hasPermi="['system:menu:add']"
|
|
|
|
|
>新增</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
size="mini"
|
|
|
|
|
type="text"
|
|
|
|
|
icon="el-icon-delete"
|
|
|
|
|
@click="handleDelete(scope.row)"
|
|
|
|
|
v-hasPermi="['system:menu:remove']"
|
|
|
|
|
>删除</el-button>
|
|
|
|
|
<!-- <el-button-->
|
|
|
|
|
<!-- size="mini"-->
|
|
|
|
|
<!-- type="text"-->
|
|
|
|
|
<!-- icon="el-icon-plus"-->
|
|
|
|
|
<!-- @click="handleAdd(scope.row)"-->
|
|
|
|
|
<!-- v-hasPermi="['system:menu:add']"-->
|
|
|
|
|
<!-- >新增</el-button>-->
|
|
|
|
|
<!-- <el-button-->
|
|
|
|
|
<!-- size="mini"-->
|
|
|
|
|
<!-- type="text"-->
|
|
|
|
|
<!-- icon="el-icon-delete"-->
|
|
|
|
|
<!-- @click="handleDelete(scope.row)"-->
|
|
|
|
|
<!-- v-hasPermi="['system:menu:remove']"-->
|
|
|
|
|
<!-- >删除</el-button>-->
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
@ -107,26 +107,6 @@
|
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="上级菜单" prop="parentId">
|
|
|
|
|
<treeselect
|
|
|
|
|
v-model="form.parentId"
|
|
|
|
|
:options="menuOptions"
|
|
|
|
|
:normalizer="normalizer"
|
|
|
|
|
:show-count="true"
|
|
|
|
|
placeholder="选择上级菜单"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="菜单类型" prop="menuType">
|
|
|
|
|
<el-radio-group v-model="form.menuType">
|
|
|
|
|
<el-radio label="M">目录</el-radio>
|
|
|
|
|
<el-radio label="C">菜单</el-radio>
|
|
|
|
|
<el-radio label="F">按钮</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24" v-if="form.menuType != 'F'">
|
|
|
|
|
<el-form-item label="菜单图标" prop="icon">
|
|
|
|
|
<el-popover
|
|
|
|
|
placement="bottom-start"
|
|
|
|
@ -157,112 +137,6 @@
|
|
|
|
|
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType != 'F'">
|
|
|
|
|
<el-form-item prop="isFrame">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="选择是外链则路由地址需要以`http(s)://`开头" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
是否外链
|
|
|
|
|
</span>
|
|
|
|
|
<el-radio-group v-model="form.isFrame">
|
|
|
|
|
<el-radio label="0">是</el-radio>
|
|
|
|
|
<el-radio label="1">否</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType != 'F'">
|
|
|
|
|
<el-form-item prop="path">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
路由地址
|
|
|
|
|
</span>
|
|
|
|
|
<el-input v-model="form.path" placeholder="请输入路由地址" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType == 'C'">
|
|
|
|
|
<el-form-item prop="component">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="访问的组件路径,如:`system/user/index`,默认在`views`目录下" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
组件路径
|
|
|
|
|
</span>
|
|
|
|
|
<el-input v-model="form.component" placeholder="请输入组件路径" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType != 'M'">
|
|
|
|
|
<el-form-item prop="perms">
|
|
|
|
|
<el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
权限字符
|
|
|
|
|
</span>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType == 'C'">
|
|
|
|
|
<el-form-item prop="query">
|
|
|
|
|
<el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" />
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
路由参数
|
|
|
|
|
</span>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType == 'C'">
|
|
|
|
|
<el-form-item prop="isCache">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
是否缓存
|
|
|
|
|
</span>
|
|
|
|
|
<el-radio-group v-model="form.isCache">
|
|
|
|
|
<el-radio label="0">缓存</el-radio>
|
|
|
|
|
<el-radio label="1">不缓存</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="form.menuType != 'F'">
|
|
|
|
|
<el-form-item prop="visible">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
显示状态
|
|
|
|
|
</span>
|
|
|
|
|
<el-radio-group v-model="form.visible">
|
|
|
|
|
<el-radio
|
|
|
|
|
v-for="dict in dict.type.sys_show_hide"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.value"
|
|
|
|
|
>{{dict.label}}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item prop="status">
|
|
|
|
|
<span slot="label">
|
|
|
|
|
<el-tooltip content="选择停用则路由将不会出现在侧边栏,也不能被访问" placement="top">
|
|
|
|
|
<i class="el-icon-question"></i>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
菜单状态
|
|
|
|
|
</span>
|
|
|
|
|
<el-radio-group v-model="form.status">
|
|
|
|
|
<el-radio
|
|
|
|
|
v-for="dict in dict.type.sys_normal_disable"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.value"
|
|
|
|
|
>{{dict.label}}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form>
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
@ -301,6 +175,8 @@ export default {
|
|
|
|
|
isExpandAll: false,
|
|
|
|
|
// 重新渲染表格状态
|
|
|
|
|
refreshTable: true,
|
|
|
|
|
// 是否为修改
|
|
|
|
|
isEdit: false,
|
|
|
|
|
// 查询参数
|
|
|
|
|
queryParams: {
|
|
|
|
|
menuName: undefined,
|
|
|
|
@ -378,6 +254,7 @@ export default {
|
|
|
|
|
status: "0"
|
|
|
|
|
};
|
|
|
|
|
this.resetForm("form");
|
|
|
|
|
this.isEdit = false;
|
|
|
|
|
},
|
|
|
|
|
/** 搜索按钮操作 */
|
|
|
|
|
handleQuery() {
|
|
|
|
@ -399,6 +276,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
this.open = true;
|
|
|
|
|
this.title = "添加菜单";
|
|
|
|
|
this.isEdit = false;
|
|
|
|
|
},
|
|
|
|
|
/** 展开/折叠操作 */
|
|
|
|
|
toggleExpandAll() {
|
|
|
|
@ -416,6 +294,7 @@ export default {
|
|
|
|
|
this.form = response.data;
|
|
|
|
|
this.open = true;
|
|
|
|
|
this.title = "修改菜单";
|
|
|
|
|
this.isEdit = true;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/** 提交按钮 */
|
|
|
|
|