Skip to content

menu 菜单开发

框架标准菜单定义

平台管理端菜单项文件位置: niucloud-core/src/main/resources/core/loader/menu/admin.json

店铺管理端菜单项文件位置: niucloud-core/src/main/resources/core/loader/menu/site.json

如下图所示

框架首次安装系统时,会自动加载上面的两个菜单到数据表 sys_menu 表中

插件菜单定义

插件中也可以自定义菜单项,框架对于插件的约束是宽容的,插件可以对整个系统的菜单项进行操作。甚至可以操作标准菜单定义。插件中菜单项的定义位置与标准菜单项的定义方式几乎相同

目录结构

以 cs_mall 插件为例:

平台管理端端菜单项在 niucloud-addon/cs_mall/src/main/resources/cs_mall/loader/menu/admin.json

店铺管理端菜单项在 niucloud-addon/cs_mall/src/main/resources/cs_mall/loader/menu/site.json

插件安装时,这两个地方定义的菜单项的结构,框架会自动装载到菜单数据表 sys_menu 中

插件中菜单定义示例

cs_mall 插件配置菜单如下

json
/***************************admin.json菜单*****/
{
  "menu": [
  ],
  "delete": [
  ]
}

/**************************site.json菜单配置***/
{
  "menu": [
    {
      "menu_name": "测试商城插件",
      "menu_short_name": "",
      "menu_key": "cs_mall",
      "parent_key": "",
      "menu_type": 0,
      "icon": "",
      "api_url": "",
      "router_path": "",
      "view_path": "",
      "methods": "",
      "sort": 100,
      "status": 1,
      "is_show": 1,
      "children": [
        {
          "menu_name": "测试商城插件",
          "menu_short_name": "",
          "menu_key": "cs_mall_hello_world",
          "parent_key": "",
          "menu_type": 1,
          "icon": "",
          "api_url": "cs_mall/hello_world",
          "router_path": "cs_mall/hello_world",
          "view_path": "hello_world/index",
          "methods": "get",
          "sort": 100,
          "status": 1,
          "is_show": 1
        }
      ]
    }
  ],
  "delete": [
  ]
}

插件中菜单定义字段说明

字段名说明
menu_name菜单标题,出现在菜单项上的文字(建议四个字)
menu_key菜单的关键字,这个必须唯一,添加父子菜单,删除等操作键时使用,预定插件菜单关键字用插件名称做前缀
menu_short_name菜单的简称,菜单简写名称(建议2个字说明,特殊情况3个字,例如:微官网)
parent_key父级菜单标识 key,根菜单为空
menu_type菜单类型,0表示目录 1表示菜单 2表示功能按钮
icon菜单的图标
api_url菜单对应的后台 api 接口地址,作用是控制 api 接口权限与菜单权限控制一致,并非实际调用URL
router_path路由地址,表示实际的菜单调用网址 URL,菜单调用路由的开发,请参考相关开发说明
view_path前端代码文件路径
methods请求方法,与 api_url 对应,包括 GET, POST, PUT, DELETE 等
sort排序号,排序号越大,越靠前
status状态,1表示启用,0表示禁用
is_show菜单是否可见 1表示可见 0表示隐藏
children子菜单数组

菜单类型详细说明

menu_type = 0 ,表示为目录菜单,不需要设置浏览器访问地址、也没有前端页面

menu_type = 1,表示为菜单页面,可以在浏览器中打开。必须设置 router_path、view_path。 api_url 建议填写,用于权限控制

menu_type = 2,表示定义功能操作菜单。router_path、view_path 可以为空,api_url 建议填写,用于权限控制。通常用于定义增删改查等操作按钮,没有固定页面,在体现形式上为弹框、功能操作。例如:添加品牌弹框、删除品牌操作等

刷新菜单(必要)

每次修改菜单文件后,必须需要刷新菜单才能使更改生效。才能更新到数据表 sys_menu 中。刷新菜单的方式为:

1.登录平台端

2.点击【开发】->【平台菜单或店铺菜单】->【重置菜单】 3.刷新浏览器即可看到效果

根据后端定义的菜单路径找到前端页面开发

菜单定义中的 view_path 字段对应前端页面文件的路径。以下是查找对应文件的规则:

店铺端菜单的前端文件通常位于以下路径:

text
admin/src/addon/cs_mall/views/[view_path].vue

例如,view_path 为 hello_world/index,对应的文件路径为:

text
admin/src/addon/cs_mall/views/hello_world/index.vue

根据 router_path 定义的地址,即可看到页面功能

菜单权限设置

平台端,在管理员角色功能中,可以添加/编辑菜单来控制操作权限 店铺端,在权限管理—>角色管理中,可以添加/编辑菜单来控制操作权限

菜单注意事项

插件安装时,框架会自动装载到菜单数据表 sys_menu 中

每次修改编辑了菜单文件,必须要重启,再点击重置菜单才有效!!!

插件安装、卸载时,系统会自动装载、删除菜单,不需要开发者在插件的安装、卸载脚本中对于菜单做相关处理

插件开发时,有针对于菜单的处理,安装插件后一定要首先在店铺套餐中勾选,界面才会生效。常常,我们开发了菜单功能,发现界面没有按照预定的想法变化,就是忽略了上面的步骤

基于 MIT 协议发布