Project

General

Profile

iMIS 左菜单重构

设计
11/07/2020

背景:目前实施过程中,客户自定义的菜单多,每次更新,会给实施带来很多部署上的问题,现需要将客户自定义菜单和标准菜单分离,部署时,只需要自定义菜单只需要更新一次即可

设计构思

数据库:
company_表中再加一个字段 custom_menu 自定义菜单,已有的 left_menu 作为标准菜单,自定义菜单中采用 nextId 作为排序所用

设计模块:
左菜单展示、自定义菜单

实施注意事项

左菜单由2部分组成,标准菜单+自定义菜单 ,其中标准菜单所有客户都一样,每次版本升级时有时会升级标准菜单,自定义菜单一般维护一次即可

自定义菜单字段 custom_menu 格式

{"id":"lm_main","txt":"imis系统主菜单","permissions":[],
"items":[
    {"id":"oa_menu","txt":"个人工作","href":"#","isBlank":false,"permissions":[],
    "items":[
        {"id":"oa_menu_test1","txt":"测试1","nextId":"oa_menu_worklog_person","href":"workSchedule.do?method=viewpersontask&userType=required&taskStatus=ongoing","isBlank":false,"click":"","permissions":[],"items":[]},
        {"id":"oa_menu_test2","txt":"测试2","href":"calendar.do?method=personalEventListByWeek","isBlank":false,"click":"","permissions":[],"items":[]}

    ]},
    {"id": "my_menu","txt": "我的菜单","nextId":"project_menu","href": "#","isBlank": false,"permissions":[],    
    "items":[
        {"id": "my_menu_test1","txt": "我的菜单1","href": "log.do?method=loginLogList","isBlank": false,"click": "","permissions": [],"items": []},
        {"id": "my_menu_test2","txt": "我的菜单2","href": "log.do?method=operationLogList","isBlank": false,"click": "","permissions": [],"items": []}
    ]}
]}

前提条件:
在资源文件中需要提前配置好菜单id,及对应的菜单名,避免出现?乱码
如:
oa_menu_test1=测试1
my_menu_test1=我的菜单1

说明:
1、自定义菜单目前支持二级菜单。
2、对于自定义的一级菜单,默认排序在标准菜单之后,如果想靠前排,则加入 nextId 属性,如上面 我的菜单想排在 项目管理 菜单前面,则加上 "nextId":"project_menu"
3、对于自定义的二级菜单,默认在排在标准一级菜单下面的二级菜单最后,如果需要向上排,同上

Files