diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
index 9ccc7c9..21f1977 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
@@ -23,4 +23,12 @@
     TRole findByRoleCodeAndRoleIdNot(String roleCode, String roleId);
 
     TRole findByRoleName(String roleName);
+
+    Page<TRole> findAllByGradeNotAndRoleNameContaining(int grade,String roleName,Pageable pageable);
+
+    Page<TRole> findAllByGradeAndRoleNameContaining(int grade,String roleName,Pageable pageable);
+
+    Page<TRole> findAllByGradeNot(int grade,Pageable pageable);
+
+    Page<TRole> findAllByGrade(int grade,Pageable pageable);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
index d1f2d37..d4abd47 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java
@@ -18,12 +18,21 @@
 
     List<TRoleFunction> findByRoleId(String roleId);
 
-    @Query(value = " select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked,case when f.parentid=-1 then 1 else 0 end as open from tb_function f " +
+    @Query(value = "select tt.id,tt.pid,tt.name,tt.checked,tt.open from ( " +
+            "select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked,case when f.parentid=-1 then 1 else 0 end as open,f.ordernum as ordernum  from tb_function f " +
             " left join tb_role_function rf on rf.functionid = f.id and rf.roleid=?1  " +
             " union all " +
-            " select r.id||'_res' as id,r.function_id||'' as pid,r.name,case when p.id is null then 0 else 1 end as checked,0 as open from tb_resource  r " +
-            " left join tb_permission p on p.resid = r.id and p.roleid=?1 " , nativeQuery = true)
+            " select r.id||'_res' as id,r.function_id||'' as pid,r.name,case when p.id is null then 0 else 1 end as checked,0 as open,999 as ordernum from tb_resource  r " +
+            " left join tb_permission p on p.resid = r.id and p.roleid=?1 ) tt order by ordernum " , nativeQuery = true)
     List<NodeData> findByRoleIdNative(String roleId);
 
+    @Query(value = "select tt.id,tt.pid,tt.name,tt.checked,tt.open from ( " +
+            " select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked,case when f.parentid=-1 then 1 else 0 end as open,f.ordernum as ordernum  from tb_function f " +
+            " left join tb_role_function rf on rf.functionid = f.id and rf.roleid=?1 where f.grade>?2 " +
+            " union all " +
+            " select r.id||'_res' as id,r.function_id||'' as pid,r.name,case when p.id is null then 0 else 1 end as checked,0 as open,999 as ordernum from tb_resource  r " +
+            " left join tb_permission p on p.resid = r.id and p.roleid=?1 ) tt order by ordernum " , nativeQuery = true)
+    List<NodeData> findByRoleIdAndGradeNative(String roleId,int grade);
+
     void deleteByRoleId(String roleId);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
index 2f3b83c..fcbcf38 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
@@ -35,6 +35,9 @@
   @Column(name="LASTSAVED", length = 14)
   private String lastsaved;
 
+  @Column(name = "GRADE",length = 3)
+  private Integer grade;
+
   public Integer getId() {
     return id;
   }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
index a936e97..a81fe29 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
@@ -774,7 +774,7 @@
         return null;
     }
 
-    @Transactional
+    @Transactional(readOnly = true)
     @Override
     public List<TDoorcardlstInfo> getOperatorCardListMap( String allocatStartDate, String allocatEndDate, String devname, String custname, String cardno, String syncflag, String operflag, String buildingid, String regionid, String operRegionid) {
         try {
@@ -926,7 +926,7 @@
         return null;
     }
 
-    @Transactional
+    @Transactional(readOnly = true)
     @Override
     public List<TDoorcardlstInfo> getBuildingOperCardListMap(String allocatStartDate, String allocatEndDate, String devname, String custname, String cardno, String syncflag, String operflag, String buildingid, String operid) {
         try {
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
index 3efac1b..fc0ee59 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.system.controller;
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.framework.domain.TOperator;
 import com.supwisdom.dlpay.framework.domain.TRole;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.WebConstant;
@@ -11,6 +12,7 @@
 import com.supwisdom.dlpay.system.service.SystemService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
@@ -35,7 +37,8 @@
     @ResponseBody
     public PageResult<TRole> getDataList(@RequestParam("page") Integer pageNo,
                                          @RequestParam("limit") Integer pageSize,
-                                         @RequestParam(value = "searchkey", required = false) String searchKey) {
+                                         @RequestParam(value = "searchkey", required = false) String searchKey,
+                                         @AuthenticationPrincipal TOperator operUser) {
         try {
             if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
             if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
@@ -43,7 +46,7 @@
             searchBean.setPageNo(pageNo);
             searchBean.setFunctioname(searchKey);
             searchBean.setPageSize(pageSize);
-            return roleService.getRolesByKey(searchBean);
+            return roleService.getRolesByKey(searchBean,operUser.getOpertype());
         } catch (Exception e) {
             e.printStackTrace();
             return new PageResult<>(99, "系统查询错误");
@@ -82,8 +85,8 @@
 
     @GetMapping("/role/func")
     @ResponseBody
-    public JsonResult func(@RequestParam String roleId) {
-        List<ZTreeNode> nodes = roleService.findByRoleIdNative(roleId);
+    public JsonResult func(@RequestParam String roleId,@AuthenticationPrincipal TOperator operUser) {
+        List<ZTreeNode> nodes = roleService.findByRoleIdNative(roleId,operUser.getOpertype());
         JsonResult result = JsonResult.ok();
         result.put("node", nodes);
         return result;
diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
index 3a40774..eeba7c6 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
@@ -200,7 +200,7 @@
     @Transactional
     @Override
     public TRole getOperRoleById(String operid) {
-        String sql = "select a.roleid,a.createtime,a.editflag,a.lastsaved,a.rolecode,a.roledesc,a.rolename " +
+        String sql = "select a.roleid,a.createtime,a.editflag,a.lastsaved,a.rolecode,a.roledesc,a.rolename,a.grade  " +
                 " from Tb_Role a left join tb_oper_role b on a.roleid = b.roleid where b.operid=?1 ";
         Query query = entityManager.createNativeQuery(sql, TRole.class);
         query.setParameter(1, operid);
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
index 6acfe7d..ef1a3d1 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
@@ -27,7 +27,7 @@
     TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, Integer functionid);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-    PageResult<TRole> getRolesByKey(FunctionSearchBean param);
+    PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     JsonResult saveRole(TRole role);
@@ -42,7 +42,7 @@
     JsonResult saveRoleFuncId(String roleId, String funcs);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-    List<ZTreeNode> findByRoleIdNative(String roleId);
+    List<ZTreeNode> findByRoleIdNative(String roleId,String operType);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     JsonResult deleteRole(String roleid);
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
index c96485c..03af7fb 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
@@ -67,13 +67,25 @@
     }
 
     @Override
-    public PageResult<TRole> getRolesByKey(FunctionSearchBean param) {
+    public PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType) {
         Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()
                 , Sort.by("createtime"));
-        if (!StringUtil.isEmpty(param.getFunctioname())) {
-            return new PageResult<>(roleDao.findAllByRoleNameContaining(param.getFunctioname(), pageable));
+        if (operType.equals("P") || operType.equals("S")) {
+            if (!StringUtil.isEmpty(param.getFunctioname())) {
+                return new PageResult<>(roleDao.findAllByRoleNameContaining(param.getFunctioname(), pageable));
+            }
+            return new PageResult<>(roleDao.findAll(pageable));
+        }else if (operType.equals("H")){
+            if (!StringUtil.isEmpty(param.getFunctioname())) {
+                return new PageResult<>(roleDao.findAllByGradeNotAndRoleNameContaining(1,param.getFunctioname(), pageable));
+            }
+            return new PageResult<>(roleDao.findAllByGradeNot(1,pageable));
+        }else {
+            if (!StringUtil.isEmpty(param.getFunctioname())) {
+                return new PageResult<>(roleDao.findAllByGradeAndRoleNameContaining(3,param.getFunctioname(), pageable));
+            }
+            return new PageResult<>(roleDao.findAllByGrade(3,pageable));
         }
-        return new PageResult<>(roleDao.findAll(pageable));
     }
 
     @Override
@@ -135,6 +147,7 @@
                 permission.setRoleId(roleId);
                 permissionDao.save(permission);
             } else {
+                if ("-1".equals(func)) continue; //全选排除
                 TRoleFunction roleFunction = new TRoleFunction();
                 roleFunction.setFunctionId(Integer.valueOf(func));
                 roleFunction.setRoleId(roleId);
@@ -145,18 +158,34 @@
     }
 
     @Override
-    public List<ZTreeNode> findByRoleIdNative(String roleId) {
-        List<NodeData> nodeData = roleFunctionDao.findByRoleIdNative(roleId);
+    public List<ZTreeNode> findByRoleIdNative(String roleId,String operType) {
+        List<NodeData> nodeData = null;
+        if (operType.equals("P") || operType.equals("S")) {
+            nodeData  = roleFunctionDao.findByRoleIdNative(roleId);
+        }else if (operType.equals("H")){
+            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 1);//区域管理员取等级大于1的
+        }else if (operType.equals("L")){
+            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 2);//楼栋管理员取等级大于2的
+        }
         List<ZTreeNode> ret = new ArrayList<>();
+        boolean allChecked = true;
         for (NodeData data : nodeData) {
             ZTreeNode zTreeNode = new ZTreeNode();
             zTreeNode.setpId(data.getPid());
             zTreeNode.setId(data.getId());
             zTreeNode.setName(data.getName());
-            zTreeNode.setChecked(data.getChecked() == 0 ? false : true);
-            zTreeNode.setOpen(data.getOpen() == 0 ? false : true);
+            zTreeNode.setChecked(data.getChecked() != 0);
+            if (allChecked && !zTreeNode.isChecked()) allChecked = false;
+            zTreeNode.setOpen(data.getOpen() != 0);
             ret.add(zTreeNode);
         }
+        ZTreeNode root = new ZTreeNode();
+        root.setId("-1");
+        root.setpId("-99");
+        root.setName("选择全部功能");
+        root.setChecked(allChecked);
+        root.setOpen(true);
+        ret.add(root);
         return ret;
     }
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 4859272..4d0024e 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -68,29 +68,33 @@
 -- ----------------------------
 -- Records of tb_function
 -- ----------------------------
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (1, NULL, 0, NULL, 'layui-icon-home', '#', '主页', 1, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (2, NULL, 1, NULL, 'layui-icon-home', '/home/console', '控制台', 2, 1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (3, NULL, 0, NULL, 'layui-icon-set', '#', '系统中心', 10, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (5, NULL, 1, NULL, 'layui-icon-set', '/role/index', '角色管理', 12, 3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (7, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devindex', '设备管理', 21, 6);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (8, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timeindex', '时间段管理', 22, 6);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (9, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timegrpindex', '时间组管理', 23, 6);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (10, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/weektimeindex', '时间周管理', 24, 6);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (11, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devweek', '设备时间周管理', 25, 6);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (12, NULL, 0, NULL, 'layui-icon-app', '#', '集控中心', 30, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (13, NULL, 1, NULL, 'layui-icon-app', '/system/dictionary', '数据字典管理', 31, 12);
-/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (14, NULL, 1, NULL, 'layui-icon-app', '/system/queue', '任务调度管理', 32, 12);*/
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (6, NULL, 0, NULL, 'layui-icon-engine', '#', '门控中心', 20, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (15, NULL, 0, NULL, 'layui-icon-username', '#', '人员中心', 40, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (18, NULL, 0, NULL, 'layui-icon-chart-screen', '#', '数据中心', 50, -1);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (20, NULL, 1, NULL, 'layui-icon-chart-screen', '/query/tdoorstream', '流水信息查询', 52, 18);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (19, NULL, 1, NULL, 'layui-icon-chart-screen', '/doorlistMgr/searchDoorlist', '设备名单查询', 51, 18);
-/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (16, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 41, 15);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (17, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 42, 15);*/
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/function/index', '功能管理', 13, 3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (22, NULL, 1, NULL, 'layui-icon-app', '/system/regionindex', '区域管理', 33, 12);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (23, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 34, 12);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (24, NULL, 1, NULL, 'layui-icon-set', '/operator/operatorindex', '操作员维护', 13, 3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (1, NULL, 0, NULL, 'layui-icon-home', '#', '主页', 1, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (2, NULL, 1, NULL, 'layui-icon-home', '/home/console', '控制台', 2, 1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (3, NULL, 0, NULL, 'layui-icon-set', '#', '系统中心', 10, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (4, NULL, 1, NULL, 'layui-icon-set', '/role/index', '角色管理', 11, 3,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (5, NULL, 1, NULL, 'layui-icon-set', '/operator/operatorindex', '操作员管理', 12, 3,2);
+/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (6, NULL, 1, NULL, 'layui-icon-username', '/function/index', '功能管理', 13, 3,1);*/
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (7, NULL, 1, NULL, 'layui-icon-app', '/system/regionindex', '区域管理', 14, 3,2);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (8, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 15, 3,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (9, NULL, 0, NULL, 'layui-icon-engine', '#', '门控中心', 20, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (10, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devindex', '设备管理', 21, 9,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (11, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timeindex', '时间段管理', 22, 9,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (12, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timegrpindex', '时间组管理', 23, 9,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (13, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/weektimeindex', '时间周管理', 24, 9,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (14, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devweek', '设备时间周管理', 25, 9,3);
+/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (15, NULL, 0, NULL, 'layui-icon-app', '#', '集控中心', 30, -1,1);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 1, NULL, 'layui-icon-app', '/system/dictionary', '数据字典管理', 31, 15,1);*/
+/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 1, NULL, 'layui-icon-app', '/system/queue', '任务调度管理', 32, 15,1);*/
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (18, NULL, 0, NULL, 'layui-icon-username', '#', '人员中心', 40, -1,3);
+/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (20, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 41, 18,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 42, 18,3);*/
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (22, NULL, 0, NULL, 'layui-icon-chart-screen', '#', '数据中心', 50, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (23, NULL, 1, NULL, 'layui-icon-chart-screen', '/doorlistMgr/searchDoorlist', '设备名单查询', 51, 22,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (24, NULL, 1, NULL, 'layui-icon-chart-screen', '/query/tdoorstream', '流水信息查询', 52, 22,3);
+
+
+
+
 
 -- ----------------------------
 -- Records of tb_operator
@@ -113,19 +117,18 @@
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23800000', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23840001', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850002', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850006', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860007', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860008', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000a', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000b', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000c', 6, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000d', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000e', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000f', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880010', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880011', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880012', 15, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880015', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890016', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890017', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850004', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
\ No newline at end of file
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850006', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860007', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+/*INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860008', 6, NULL, 'abcdefghijklmnopqrstuvwxyz012345');*/
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000a', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000b', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000c', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000d', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000e', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000f', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880010', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880011', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880012', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880015', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890016', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890017', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
\ No newline at end of file
diff --git a/src/main/resources/templates/system/role/form.html b/src/main/resources/templates/system/role/form.html
index 2595cd6..ab3466c 100755
--- a/src/main/resources/templates/system/role/form.html
+++ b/src/main/resources/templates/system/role/form.html
@@ -15,6 +15,18 @@
         </div>
     </div>
 
+    <div class="layui-form-item">
+        <label class="layui-form-label">角色等级</label>
+        <div class="layui-input-block">
+            <select name="grade" lay-verify="required|grade">
+                <option value="">请选择一个等级</option>
+                <option value="1">一级</option>
+                <option value="2">二级</option>
+                <option value="3">三级</option>
+            </select>
+        </div>
+    </div>
+
     <div class="layui-form-item model-form-footer">
         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
         <button class="layui-btn" lay-filter="form-submit" lay-submit  id="submitbtn">保存</button>
@@ -28,7 +40,9 @@
         var form = layui.form;
         var url = '[[@{/role/add}]]';
         // 回显user数据
+        form.render('select');
         var func = admin.getTempData('t_func');
+
         if (func) {
             $('input[name="roleId"]').attr('readonly', 'readonly');
             form.val('form', func);
