瀏覽代碼

组织、角色、分组管理功能添加组织树

git-svn-id: https://192.168.57.71/svn/jsgkj@1019 931142cf-59ea-a443-aa0e-51397b428577
ld_zhouk 8 年之前
父節點
當前提交
65a12de143
共有 21 個文件被更改,包括 1264 次插入552 次删除
  1. 59 23
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/DictCtl.java
  2. 72 27
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/GroupCtl.java
  3. 2 7
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/MenuButtonCtl.java
  4. 31 6
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/MenuCtl.java
  5. 53 16
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/OrgCtl.java
  6. 28 2
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/ParamCtl.java
  7. 75 28
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/RoleCtl.java
  8. 37 7
      gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/XzqhCtl.java
  9. 24 21
      gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/dict.jsp
  10. 26 25
      gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/group.jsp
  11. 49 27
      gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/menu.jsp
  12. 23 20
      gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/org.jsp
  13. 17 16
      gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/role.jsp
  14. 143 22
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/dict.js
  15. 0 188
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/dict.js.bak
  16. 181 31
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/group.js
  17. 139 11
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/menu.js
  18. 153 22
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/org.js
  19. 1 1
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/param.js
  20. 146 46
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/role.js
  21. 5 6
      gkaqv2/trunk/modules/web/src/main/webapp/static/js/user/index.js

+ 59 - 23
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/DictCtl.java

@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.alibaba.fastjson.JSONArray;
-import com.sun.tools.internal.ws.processor.model.Request;
 import com.xt.js.gkaq.common.BaseCtl;
 import com.xt.js.gkaq.frame.model.CodeModel;
 import com.xt.js.gkaq.frame.model.CodeModelDto;
@@ -25,24 +24,50 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 字典管理控制
+ */
 @Controller
 @RequestMapping(value = "/dict", produces = "application/json; charset=utf-8")
 public class DictCtl extends BaseCtl {
     @Autowired
     private CodeService codeService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/dict";
     }
 
     /**
-     * 锟斤拷始锟斤拷页锟斤拷锟斤拷锟斤拷锟斤拷
+     * 初始化页面加载树
+     * 
+     * @return
+     */
+    @RequestMapping("tree")
+    @ResponseBody
+    public String initDictTree() {
+
+        List<CodeModel> list = codeService.initDictTree();
+        return JSONArray.toJSONString(list);
+    }
+
+    /**
+     * 初始化页面加载数据
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
     public PageInfo<CodeModelDto> getPageInfo(DictVo vo) throws UnsupportedEncodingException {
-        // 锟斤拷始锟斤拷锟斤拷锟斤拷
+        // 初始化参数
         if (null == vo.getPage() || vo.getPage() < 1) {
             vo.setPage(1);
         }
@@ -50,21 +75,28 @@ public class DictCtl extends BaseCtl {
             vo.setRows(1);
         }
         PageHelper.startPage(vo.getPage(), vo.getRows());
+
         CodeModelDto model = new CodeModelDto();
-        BeanUtils.copyProperties(vo, model);
         if (StringUtils.isNotEmpty(vo.getText())) {
             model.setText("%" + URLDecoder.decode(vo.getText(), "UTF-8") + "%");
         }
+        if (StringUtils.isNotEmpty(vo.getCode())) {
+            model.setCode("%" + vo.getCode() + "%");
+        }
+        if (StringUtils.isNotEmpty(vo.getPid())) {
+            model.setPid(vo.getPid());
+        }
         List<CodeModelDto> list = codeService.findAllByCond(model);
         PageInfo<CodeModelDto> pageResult = new PageInfo<>(list);
         return pageResult;
     }
-//    public String selectList() {
-//
-//        List<CodeModel> list = codeService.initDict();
-//        return JSONArray.toJSONString(list);
-//    }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
     public CodeModel getRecord(String id) {
@@ -73,6 +105,12 @@ public class DictCtl extends BaseCtl {
         return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -83,14 +121,6 @@ public class DictCtl extends BaseCtl {
             String[] idArr = ids.split(",");
             for (String id : idArr) {
                 if (StringUtils.isNotEmpty(id)) {
-                    // 删锟斤拷锟侥╋拷锟斤拷锟斤拷锟斤拷锟斤拷蛹锟�
-                    cnt += codeService.deleteByPid(id);
-                    // 删锟斤拷
-                    cnt += codeService.deleteByID(id);
-//                    // 删锟斤拷锟侥╋拷锟斤拷锟斤拷锟斤拷锟斤拷蛹锟�
-//                    cnt += codeService.deleteByPid(id);
-//                    // 删锟斤拷
-//                    cnt += codeService.deleteByID(id);
                     delByPid(id);
                 }
             }
@@ -99,8 +129,8 @@ public class DictCtl extends BaseCtl {
     }
 
     /**
-     * 锟斤拷锟斤拷
-     * 锟捷癸拷删锟斤拷
+     * 递归删除
+     * 
      * @param id
      */
     private void delByPid(String id) {
@@ -117,11 +147,11 @@ public class DictCtl extends BaseCtl {
                 delByPid(data.getId());
             }
         }
-        codeService.deleteByID(id);
+        codeService.deleteLogicByID(id);
     }
 
     /**
-     * 锟斤拷锟斤拷
+     * 保存记录
      * 
      * @param vo
      * @return
@@ -131,12 +161,12 @@ public class DictCtl extends BaseCtl {
     public WebJsonResult save(DictVo dictVo) {
 
         if (StringUtils.isEmpty(dictVo.getId())) {
-            // 锟斤拷锟斤拷
+            // 新增
             CodeModel codeModel = new CodeModel();
             BeanUtils.copyProperties(dictVo, codeModel);
             codeService.add(codeModel);
         } else {
-            // 锟斤拷锟斤拷
+            // 更新
             CodeModel codeModel = codeService.findById(dictVo.getId());
             BeanUtils.copyProperties(dictVo, codeModel);
             codeService.update(codeModel);
@@ -144,6 +174,12 @@ public class DictCtl extends BaseCtl {
         return success();
     }
 
+    /**
+     * 获取字典列表
+     * 
+     * @param pcode
+     * @return
+     */
     @RequestMapping("findDicts")
     @ResponseBody
     public String getDictList(String pcode) {

+ 72 - 27
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/GroupCtl.java

@@ -27,6 +27,9 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 分组管理控制
+ */
 @Controller
 @RequestMapping(value = "/group", produces = "application/json; charset=utf-8")
 public class GroupCtl extends BaseCtl {
@@ -37,6 +40,12 @@ public class GroupCtl extends BaseCtl {
     @Autowired
     private GroupButtonService groupButtonService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/group";
@@ -44,7 +53,10 @@ public class GroupCtl extends BaseCtl {
 
     /**
      * 初始化页面加载数据
-     * @throws UnsupportedEncodingException 
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
@@ -66,33 +78,26 @@ public class GroupCtl extends BaseCtl {
         return pageResult;
     }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
-    public GroupVo getRecord(String id) {
+    public GroupModel getRecord(String id) {
 
         GroupModel model = groupService.findById(id);
-        List<GroupButtonModel> groupBtnList = groupButtonService.findByGroupId(id);
-        List<GroupMenuModel> groupMenuList = groupMenuService.findByGroupId(id);
-        String btns = "";
-        String menus = "";
-        for (GroupButtonModel groupBtn : groupBtnList) {
-            if (btns != "") {
-                btns += ",";
-            }
-            btns += groupBtn.getButtonId();
-        }
-        for (GroupMenuModel groupMenu : groupMenuList) {
-            if (menus != "") {
-                menus += ",";
-            }
-            menus += groupMenu.getMenuId();
-        }
-        GroupVo vo = new GroupVo();
-        BeanUtils.copyProperties(model, vo);
-        vo.setMenuBtnRef(menus + ";" + btns);
-        return vo;
+        return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -107,7 +112,7 @@ public class GroupCtl extends BaseCtl {
                     groupButtonService.deleteByGroupId(id);
                     groupMenuService.deleteByGroupId(id);
                     // 删除
-                    cnt += groupService.deleteByID(id);
+                    cnt += groupService.deleteLogicByID(id);
                 }
             }
         }
@@ -115,7 +120,7 @@ public class GroupCtl extends BaseCtl {
     }
 
     /**
-     * 保存
+     * 保存记录
      * 
      * @param vo
      * @return
@@ -135,12 +140,13 @@ public class GroupCtl extends BaseCtl {
             model = groupService.findById(vo.getId());
             BeanUtils.copyProperties(vo, model);
             groupService.update(model);
-            // 删除关联菜单及按钮
-            groupButtonService.deleteByGroupId(model.getId());
-            groupMenuService.deleteByGroupId(model.getId());
         }
         // 添加关联菜单及按钮
         if (StringUtils.isNotEmpty(vo.getMenuBtnRef())) {
+            // 删除关联菜单及按钮
+            groupButtonService.deleteByGroupId(model.getId());
+            groupMenuService.deleteByGroupId(model.getId());
+
             String[] menuBtnRefs = vo.getMenuBtnRef().split(";");
             String[] menus = menuBtnRefs[0].split(",");
             for (String menuId : menus) {
@@ -163,6 +169,12 @@ public class GroupCtl extends BaseCtl {
         return success();
     }
 
+    /**
+     * 获取分组列表
+     * 
+     * @param pcode
+     * @return
+     */
     @RequestMapping("getGroupList")
     @ResponseBody
     public String getGroupList() {
@@ -171,4 +183,37 @@ public class GroupCtl extends BaseCtl {
         return JSONArray.toJSONString(list);
     }
 
+    /**
+     * 获取授权记录
+     * 
+     * @param id
+     * @return
+     */
+    @RequestMapping("getAuthRecord")
+    @ResponseBody
+    public GroupVo getAuthRecord(String id) {
+
+        GroupModel model = groupService.findById(id);
+        List<GroupButtonModel> groupBtnList = groupButtonService.findByGroupId(id);
+        List<GroupMenuModel> groupMenuList = groupMenuService.findByGroupId(id);
+        String btns = "";
+        String menus = "";
+        for (GroupButtonModel groupBtn : groupBtnList) {
+            if (btns != "") {
+                btns += ",";
+            }
+            btns += groupBtn.getButtonId();
+        }
+        for (GroupMenuModel groupMenu : groupMenuList) {
+            if (menus != "") {
+                menus += ",";
+            }
+            menus += groupMenu.getMenuId();
+        }
+        GroupVo vo = new GroupVo();
+        BeanUtils.copyProperties(model, vo);
+        vo.setMenuBtnRef(menus + ";" + btns);
+        return vo;
+    }
+
 }

+ 2 - 7
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/MenuButtonCtl.java

@@ -26,15 +26,10 @@ public class MenuButtonCtl extends BaseCtl {
 
     @RequestMapping("getRecord")
     @ResponseBody
-    public ButtonVo getRecord(String id) {
+    public ButtonModel getRecord(String id) {
 
         ButtonModel btnModel = buttonService.findById(id);
-        ButtonVo btnVo = new ButtonVo();
-        btnVo.setBtnId(btnModel.getId());
-        btnVo.setBtnCode(btnModel.getCode());
-        btnVo.setBtnName(btnModel.getName());
-        btnVo.setBtnSortno(btnModel.getSortno());
-        return btnVo;
+        return btnModel;
     }
 
     /**

+ 31 - 6
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/MenuCtl.java

@@ -25,6 +25,9 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 菜单管理控制
+ */
 @Controller
 @RequestMapping(value = "/menu", produces = "application/json; charset=utf-8")
 public class MenuCtl extends BaseCtl {
@@ -33,6 +36,12 @@ public class MenuCtl extends BaseCtl {
     @Autowired
     private ButtonService buttonService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/menu";
@@ -40,6 +49,8 @@ public class MenuCtl extends BaseCtl {
 
     /**
      * 初始化页面加载树
+     * 
+     * @return
      */
     @RequestMapping("tree")
     @ResponseBody
@@ -51,6 +62,10 @@ public class MenuCtl extends BaseCtl {
 
     /**
      * 初始化页面加载数据
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
@@ -89,17 +104,26 @@ public class MenuCtl extends BaseCtl {
         return pageResult;
     }
 
-
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
-    public MenuVo getRecord(String id) {
+    public MenuModel getRecord(String id) {
 
         MenuModel menuModel = menuService.findById(id);
-        MenuVo menuVo = new MenuVo();
-        BeanUtils.copyProperties(menuModel, menuVo);
-        return menuVo;
+        return menuModel;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -119,6 +143,7 @@ public class MenuCtl extends BaseCtl {
 
     /**
      * 递归删除
+     * 
      * @param id
      */
     private void delByPid(String id) {
@@ -142,7 +167,7 @@ public class MenuCtl extends BaseCtl {
     }
 
     /**
-     * 保存
+     * 保存记录
      * 
      * @param vo
      * @return

+ 53 - 16
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/OrgCtl.java

@@ -24,20 +24,45 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 组织管理控制
+ */
 @Controller
 @RequestMapping(value = "/org", produces = "application/json; charset=utf-8")
 public class OrgCtl extends BaseCtl {
     @Autowired
     private OrgService orgService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/org";
     }
 
     /**
+     * 初始化页面加载树
+     * 
+     * @return
+     */
+    @RequestMapping("tree")
+    @ResponseBody
+    public String initOrgTree() {
+
+        List<OrgModel> list = orgService.initOrgTree();
+        return JSONArray.toJSONString(list);
+    }
+
+    /**
      * 初始化页面加载数据
-     * @throws UnsupportedEncodingException 
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
@@ -52,15 +77,26 @@ public class OrgCtl extends BaseCtl {
         PageHelper.startPage(vo.getPage(), vo.getRows());
 
         OrgModelDto model = new OrgModelDto();
-        BeanUtils.copyProperties(vo, model);
         if (StringUtils.isNotEmpty(vo.getName())) {
             model.setName("%" + URLDecoder.decode(vo.getName(), "UTF-8") + "%");
         }
+        if (StringUtils.isNotEmpty(vo.getCode())) {
+            model.setCode("%" + vo.getCode() + "%");
+        }
+        if (StringUtils.isNotEmpty(vo.getPid())) {
+            model.setPid(vo.getPid());
+        }
         List<OrgModelDto> list = orgService.findAllByCond(model);
         PageInfo<OrgModelDto> pageResult = new PageInfo<>(list);
         return pageResult;
     }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
     public OrgModelDto getRecord(String id) {
@@ -69,6 +105,12 @@ public class OrgCtl extends BaseCtl {
         return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -79,10 +121,6 @@ public class OrgCtl extends BaseCtl {
             String[] idArr = ids.split(",");
             for (String id : idArr) {
                 if (StringUtils.isNotEmpty(id)) {
-//                    // 删除非末级关联的子集
-//                    cnt += orgService.deleteByPid(id);
-//                    // 删除
-//                    cnt += orgService.deleteByID(id);
                     delByPid(id);
                 }
             }
@@ -92,6 +130,7 @@ public class OrgCtl extends BaseCtl {
 
     /**
      * 递归删除
+     * 
      * @param id
      */
     private void delByPid(String id) {
@@ -109,11 +148,11 @@ public class OrgCtl extends BaseCtl {
                 delByPid(data.getId());
             }
         }
-        orgService.deleteByID(id);
+        orgService.deleteLogicByID(id);
     }
 
     /**
-     * 保存
+     * 保存记录
      * 
      * @param vo
      * @return
@@ -136,6 +175,12 @@ public class OrgCtl extends BaseCtl {
         return success();
     }
 
+    /**
+     * 获取组织列表
+     * 
+     * @param pcode
+     * @return
+     */
     @RequestMapping("getOrgList")
     @ResponseBody
     public String getOrgList() {
@@ -144,12 +189,4 @@ public class OrgCtl extends BaseCtl {
         return JSONArray.toJSONString(list);
     }
 
-    @RequestMapping("tree")
-    @ResponseBody
-    public String initOrgTree() {
-
-        List<OrgModel> list = orgService.initOrgTree();
-        return JSONArray.toJSONString(list);
-    }
-
 }

+ 28 - 2
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/ParamCtl.java

@@ -1,5 +1,6 @@
 package com.xt.js.gkaq.web.ctl;
 
+import java.io.UnsupportedEncodingException;
 import java.util.List;
 
 import org.springframework.beans.BeanUtils;
@@ -19,12 +20,21 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 系统参数管理控制
+ */
 @Controller
 @RequestMapping(value = "/param")
 public class ParamCtl extends BaseCtl {
     @Autowired
     private ParamService paramService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/param";
@@ -32,6 +42,10 @@ public class ParamCtl extends BaseCtl {
 
     /**
      * 初始化页面加载数据
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
@@ -52,6 +66,12 @@ public class ParamCtl extends BaseCtl {
         return pageResult;
     }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
     public ParamModel getRecord(String id) {
@@ -60,6 +80,12 @@ public class ParamCtl extends BaseCtl {
         return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -70,7 +96,7 @@ public class ParamCtl extends BaseCtl {
             String[] idArr = ids.split(",");
             for (String id : idArr) {
                 if (StringUtils.isNotEmpty(id)) {
-                    cnt += paramService.deleteByID(id);
+                    cnt += paramService.deleteLogicByID(id);
                 }
             }
         }
@@ -78,7 +104,7 @@ public class ParamCtl extends BaseCtl {
     }
 
     /**
-     * 保存
+     * 保存记录
      * 
      * @param vo
      * @return

+ 75 - 28
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/RoleCtl.java

@@ -27,6 +27,9 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 角色管理控制
+ */
 @Controller
 @RequestMapping(value = "/role", produces = "application/json; charset=utf-8")
 public class RoleCtl extends BaseCtl {
@@ -37,6 +40,12 @@ public class RoleCtl extends BaseCtl {
     @Autowired
     private RoleButtonService roleButtonService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/role";
@@ -44,7 +53,10 @@ public class RoleCtl extends BaseCtl {
 
     /**
      * 初始化页面加载数据
-     * @throws UnsupportedEncodingException 
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
@@ -59,42 +71,37 @@ public class RoleCtl extends BaseCtl {
         PageHelper.startPage(vo.getPage(), vo.getRows());
 
         RoleModel model = new RoleModel();
-        BeanUtils.copyProperties(vo, model);
         if (StringUtils.isNotEmpty(vo.getName())) {
             model.setName("%" + URLDecoder.decode(vo.getName(), "UTF-8") + "%");
         }
+        if (StringUtils.isNotEmpty(vo.getCode())) {
+            model.setCode("%" + vo.getCode() + "%");
+        }
         List<RoleModel> list = roleService.findAllByCond(model);
         PageInfo<RoleModel> pageResult = new PageInfo<>(list);
         return pageResult;
     }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
-    public RoleVo getRecord(String id) {
+    public RoleModel getRecord(String id) {
 
         RoleModel model = roleService.findById(id);
-        List<RoleButtonModel> roleBtnList = roleButtonService.findByRoleId(id);
-        List<RoleMenuModel> roleMenuList = roleMenuService.findByRoleId(id);
-        String btns = "";
-        String menus = "";
-        for (RoleButtonModel roleBtn : roleBtnList) {
-            if (btns != "") {
-                btns += ",";
-            }
-            btns += roleBtn.getButtonId();
-        }
-        for (RoleMenuModel roleMenu : roleMenuList) {
-            if (menus != "") {
-                menus += ",";
-            }
-            menus += roleMenu.getMenuId();
-        }
-        RoleVo vo = new RoleVo();
-        BeanUtils.copyProperties(model, vo);
-        vo.setMenuBtnRef(menus + ";" + btns);
-        return vo;
+        return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -109,7 +116,7 @@ public class RoleCtl extends BaseCtl {
                     roleButtonService.deleteByRoleId(id);
                     roleMenuService.deleteByRoleId(id);
                     // 删除
-                    cnt += roleService.deleteByID(id);
+                    cnt += roleService.deleteLogicByID(id);
                 }
             }
         }
@@ -117,7 +124,7 @@ public class RoleCtl extends BaseCtl {
     }
 
     /**
-     * 保存
+     * 保存记录
      * 
      * @param vo
      * @return
@@ -137,12 +144,13 @@ public class RoleCtl extends BaseCtl {
             model = roleService.findById(vo.getId());
             BeanUtils.copyProperties(vo, model);
             roleService.update(model);
-            // 删除关联菜单及按钮
-            roleButtonService.deleteByRoleId(model.getId());
-            roleMenuService.deleteByRoleId(model.getId());
         }
         // 添加关联菜单及按钮
         if (StringUtils.isNotEmpty(vo.getMenuBtnRef())) {
+            // 删除关联菜单及按钮
+            roleButtonService.deleteByRoleId(model.getId());
+            roleMenuService.deleteByRoleId(model.getId());
+
             String[] menuBtnRefs = vo.getMenuBtnRef().split(";");
             String[] menus = menuBtnRefs[0].split(",");
             for (String menuId : menus) {
@@ -165,6 +173,12 @@ public class RoleCtl extends BaseCtl {
         return success();
     }
 
+    /**
+     * 获取角色列表
+     * 
+     * @param pcode
+     * @return
+     */
     @RequestMapping("getRoleList")
     @ResponseBody
     public String getRoleList() {
@@ -173,4 +187,37 @@ public class RoleCtl extends BaseCtl {
         return JSONArray.toJSONString(list);
     }
 
+    /**
+     * 获取授权记录
+     * 
+     * @param id
+     * @return
+     */
+    @RequestMapping("getAuthRecord")
+    @ResponseBody
+    public RoleVo getAuthRecord(String id) {
+
+        RoleModel model = roleService.findById(id);
+        List<RoleButtonModel> roleBtnList = roleButtonService.findByRoleId(id);
+        List<RoleMenuModel> roleMenuList = roleMenuService.findByRoleId(id);
+        String btns = "";
+        String menus = "";
+        for (RoleButtonModel roleBtn : roleBtnList) {
+            if (btns != "") {
+                btns += ",";
+            }
+            btns += roleBtn.getButtonId();
+        }
+        for (RoleMenuModel roleMenu : roleMenuList) {
+            if (menus != "") {
+                menus += ",";
+            }
+            menus += roleMenu.getMenuId();
+        }
+        RoleVo vo = new RoleVo();
+        BeanUtils.copyProperties(model, vo);
+        vo.setMenuBtnRef(menus + ";" + btns);
+        return vo;
+    }
+
 }

+ 37 - 7
gkaqv2/trunk/modules/web/src/main/java/com/xt/js/gkaq/web/ctl/XzqhCtl.java

@@ -23,25 +23,37 @@ import com.yuanxd.tools.pagehelper.PageInfo;
 import com.yuanxd.tools.utils.WebJsonResult;
 import com.yuanxd.tools.utils.string.StringUtils;
 
+/**
+ * 行政区划管理控制
+ */
 @Controller
 @RequestMapping(value = "/xzqh", produces = "application/json; charset=utf-8")
 public class XzqhCtl extends BaseCtl {
     @Autowired
     private XzqhService xzqhService;
 
+    /**
+     * 进入首页
+     * 
+     * @param model
+     * @return
+     */
     @RequestMapping("")
     public String index(Model model) {
         return "frame/xzqh";
     }
 
     /**
-     * 锟斤拷始锟斤拷页锟斤拷锟斤拷锟斤拷锟斤拷
-     * @throws UnsupportedEncodingException 
+     * 初始化页面加载数据
+     * 
+     * @param vo
+     * @return
+     * @throws UnsupportedEncodingException
      */
     @RequestMapping("list")
     @ResponseBody
     public PageInfo<XzqhModel> getPageInfo(XzqhVo vo) throws UnsupportedEncodingException {
-        // 锟斤拷始锟斤拷锟斤拷锟斤拷
+        // 初始化参数
         if (null == vo.getPage() || vo.getPage() < 1) {
             vo.setPage(1);
         }
@@ -62,6 +74,12 @@ public class XzqhCtl extends BaseCtl {
         return pageResult;
     }
 
+    /**
+     * 获取记录
+     * 
+     * @param id
+     * @return
+     */
     @RequestMapping("getRecord")
     @ResponseBody
     public XzqhModel getRecord(String id) {
@@ -70,6 +88,12 @@ public class XzqhCtl extends BaseCtl {
         return model;
     }
 
+    /**
+     * 删除记录
+     * 
+     * @param ids
+     * @return
+     */
     @RequestMapping("delRecodes")
     @ResponseBody
     @Transactional
@@ -80,7 +104,7 @@ public class XzqhCtl extends BaseCtl {
             String[] idArr = ids.split(",");
             for (String id : idArr) {
                 if (StringUtils.isNotEmpty(id)) {
-                    cnt += xzqhService.deleteByID(id);
+                    cnt += xzqhService.deleteLogicByID(id);
                 }
             }
         }
@@ -88,7 +112,7 @@ public class XzqhCtl extends BaseCtl {
     }
 
     /**
-     * 锟斤拷锟斤拷
+     * 保存记录
      * 
      * @param vo
      * @return
@@ -98,12 +122,12 @@ public class XzqhCtl extends BaseCtl {
     public WebJsonResult save(XzqhVo vo) {
 
         if (StringUtils.isEmpty(vo.getId())) {
-            // 锟斤拷锟斤拷
+            // 新增
             XzqhModel model = new XzqhModel();
             BeanUtils.copyProperties(vo, model);
             xzqhService.add(model);
         } else {
-            // 锟斤拷锟斤拷
+            // 更新
             XzqhModel model = xzqhService.findById(vo.getId());
             BeanUtils.copyProperties(vo, model);
             xzqhService.update(model);
@@ -111,6 +135,12 @@ public class XzqhCtl extends BaseCtl {
         return success();
     }
 
+    /**
+     * 获取行政区划列表
+     * 
+     * @param pcode
+     * @return
+     */
     @RequestMapping("findXzqhs")
     @ResponseBody
     public String getXzqhList() {

+ 24 - 21
gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/dict.jsp

@@ -5,9 +5,6 @@
 <title>字典管理</title>
 
 <%@ include file="../layouts/header.jsp"%>
-<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/static/js/common/bootstrap-select/css/bootstrap-select.min.css" />
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/bootstrap-select.min.js"></script>
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/i18n/defaults-zh_CN.min.js"></script>
 <script src="<%=base%>/static/js/frame/dict.js"></script>
 </head>
 <body class="p_body">
@@ -50,22 +47,28 @@
                     <div class="p_searchdiv">
                         <table class="tabsearch">
                             <tr class="trsearch">
-                                <td class="tdname">上级编码</td>
-                                <td class="tdcontent"><input type="text" id="srh_pcode" name="srh_pcode" class="p_txt"></td>
-                                <td class="tdname">编码</td>
-                                <td class="tdcontent"><input type="text" id="srh_code" name="srh_code" class="p_txt"></td>
                                 <td class="tdname">名称</td>
                                 <td class="tdcontent"><input type="text" id="srh_text" name="srh_text" class="p_txt"></td>
+                                <td class="tdname">编码</td>
+                                <td class="tdcontent"><input type="text" id="srh_code" name="srh_code" class="p_txt"></td>
                                 <td class="tdname"><img class="p_searchbtn"
                                     src="<%=base%>/static/images/list/btn_query.png" title="查询" onclick="searchRecord()" />
                                 </td>
                             </tr>
                         </table>
                     </div>
-                    <div class="page-content">
-                        <!--列表部分-->
-                        <table id="grid-table"></table>
-                        <div id="grid-pager"></div>
+                    <div class="container page-content">
+                        <div class="row clearfix">
+                            <div class="col-md-3 column page-content-tree">
+                                <!-- 字典树 -->
+                                <div id="dictTree" class="ztree"></div>
+                            </div>
+                            <div class="col-md-9 column page-content-grid">
+                               <!--  列表部分 -->
+                                <table id="grid-table"></table>
+                                <div id="grid-pager"></div>
+                            </div>
+                        </div>
                     </div>
 				</div>
 			</div>
@@ -135,18 +138,18 @@
                                         <input class="form-control" id="remark" name="remark" type="text" />
                                     </div>
                                 </div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="save()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="center-block" style="width: 160px;">
+                                    <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="save()">
+                                        <i class="glyphicon glyphicon-ok"></i> 保存
+                                    </button>
+                                    <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
+                                        <i class="glyphicon glyphicon-remove"></i> 关闭
+                                    </button>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>

+ 26 - 25
gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/group.jsp

@@ -5,11 +5,6 @@
 <title>分组管理</title>
 
 <%@ include file="../layouts/header.jsp"%>
-<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/static/js/common/zTree_v3/css/zTreeStyle/zTreeStyle.css" />
-<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/static/js/common/bootstrap-select/css/bootstrap-select.min.css" />
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/zTree_v3/js/jquery.ztree.all-3.5.min.js"></script>
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/bootstrap-select.min.js"></script>
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/i18n/defaults-zh_CN.min.js"></script>
 <script src="<%=base%>/static/js/frame/group.js"></script>
 </head>
 <body class="p_body">
@@ -45,6 +40,9 @@
 						<div class="p_buttonbg">
 							<img class="p_buttonimg" src="<%=base%>/static/images/list/edit.png" onclick="editInfo()" title="修改" />
 						</div>
+                        <div class="p_buttonbg">
+                            <img class="p_buttonimg" src="<%=base%>/static/images/list/bgzy.png" onclick="editAuthInfo()" title="授权" />
+                        </div>
 						<div class="p_buttonbg">
 							<img class="p_buttonimg" src="<%=base%>/static/images/list/search.png" onclick="showSearch()" title="查询" />
 						</div>
@@ -52,11 +50,6 @@
                     <div class="p_searchdiv">
                         <table class="tabsearch">
                             <tr class="trsearch">
-                                <td class="tdname">组织</td>
-                                <td class="tdcontent">
-                                    <select class="selectpicker form-control" id="srh_org" name="srh_org">
-                                        <option value="" selected="selected">请选择...</option>
-                                    </select></td>
                                 <td class="tdname">角色</td>
                                 <td class="tdcontent">
                                     <select class="selectpicker form-control" id="srh_role" name="srh_role">
@@ -69,9 +62,17 @@
                         </table>
                     </div>
                     <div class="page-content">
-                        <!--列表部分-->
-                        <table id="grid-table"></table>
-                        <div id="grid-pager"></div>
+                        <div class="row clearfix">
+                            <div class="col-md-3 column page-content-tree">
+                                <!-- 组织树 -->
+                                <div id="orgTree" class="ztree"></div>
+                            </div>
+                            <div class="col-md-9 column page-content-grid">
+                               <!--  列表部分 -->
+                                <table id="grid-table"></table>
+                                <div id="grid-pager"></div>
+                            </div>
+                        </div>
                     </div>
                 </div>
 			</div>
@@ -108,26 +109,26 @@
                                         <select class="selectpicker form-control" id="role" name="role" title="请选择..."></select>
 									</div>
 								</div>
-                                <div class="form-group">
-                                    <label class="col-sm-2 control-label" for="menuTree">关联菜单及按钮</label>
+                                <div class="form-group" id="menuTreeDiv">
+                                    <label class="col-sm-2 control-label" for="menuTree">关联菜单</label>
                                     <div class="col-sm-9">
                                     	<div class="form-control" style="height: 200px;  overflow-x: auto; overflow-y: scroll;">
                                             <div id="menuTree" class="ztree"></div>
                                         </div>
                                     </div>
                                 </div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="save()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="center-block" style="width: 160px;">
+                                    <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="save()">
+                                        <i class="glyphicon glyphicon-ok"></i> 保存
+                                    </button>
+                                    <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
+                                        <i class="glyphicon glyphicon-remove"></i> 关闭
+                                    </button>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>

+ 49 - 27
gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/menu.jsp

@@ -51,20 +51,16 @@
                                 <td class="tdcontent"><input type="text" id="srh_name" name="srh_name" class="p_txt" value=""></td>
                                 <td class="tdname">编码</td>
                                 <td class="tdcontent"><input type="text" id="srh_code" name="srh_code" class="p_txt" value=""></td>
-                                <td class="tdname"><img class="p_searchbtn" src="<%=base%>/static/images/list/btn_query.png" title="查询" onclick="searchRecord()" />
+                                <td class="tdname"><img class="p_searchbtn"
+                                    src="<%=base%>/static/images/list/btn_query.png" title="查询" onclick="searchRecord()" />
                                 </td>
                             </tr>
                         </table>
                     </div>
-<!-- 					<div class="page-content"
-						style="margin-left: 20px; height: 400px; width: 92%; overflow-x: auto; overflow-y: scroll;">
-						菜单树
-						<div id="menuTree" class="ztree"></div>
-					</div> -->
                     <div class="container page-content">
                         <div class="row clearfix">
                             <div class="col-md-3 column page-content-tree">
-                                <!-- 组织树 -->
+                                <!-- 菜单树 -->
                                 <div id="menuTree" class="ztree"></div>
                             </div>
                             <div class="col-md-9 column page-content-grid">
@@ -130,24 +126,36 @@
 										<input class="form-control" id="url" name="url" type="text" />
 									</div>
 								</div>
+                                <div class="form-group">
+                                    <label class="col-sm-2 control-label" for="icon">图标</label>
+                                    <div class="col-sm-9">
+                                        <input class="form-control" id="icon" name="icon" type="text" />
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="col-sm-2 control-label" for="remark">备注</label>
+                                    <div class="col-sm-9">
+                                        <input class="form-control" id="remark" name="remark" type="text" />
+                                    </div>
+                                </div>
 								<div class="form-group">
 									<label class="col-sm-2 control-label" for="sortno">序号</label>
 									<div class="col-sm-9">
 										<input class="form-control" id="sortno" name="sortno" type="text" />
 									</div>
 								</div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="save()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="center-block" style="width: 160px;">
+                                    <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="save()">
+                                        <i class="glyphicon glyphicon-ok"></i> 保存
+                                    </button>
+                                    <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
+                                        <i class="glyphicon glyphicon-remove"></i> 关闭
+                                    </button>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>
@@ -185,24 +193,38 @@
 										<input class="form-control" id="btnCode" name="btnCode" type="text" />
 									</div>
 								</div>
+                                <div class="form-group">
+                                    <label class="col-sm-2 control-label" for="btnIcon">图标</label>
+                                    <div class="col-sm-9">
+                                        <input class="form-control" id="btnIcon" name="btnIcon" type="text" />
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="col-sm-2 control-label" for="btnRemark">备注</label>
+                                    <div class="col-sm-9">
+                                        <input class="form-control" id="btnRemark" name="btnRemark" type="text" />
+                                    </div>
+                                </div>
 								<div class="form-group">
 									<label class="col-sm-2 control-label" for="btnSortno">序号</label>
 									<div class="col-sm-9">
 										<input class="form-control" id="btnSortno" name="btnSortno" type="text" />
 									</div>
 								</div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="btnSave()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeBtnWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="row">
+                                    <div class="center-block" style="width: 160px;">
+                                        <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="btnSave()">
+                                            <i class="glyphicon glyphicon-ok"></i> 保存
+                                        </button>
+                                        <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeBtnWin()">
+                                            <i class="glyphicon glyphicon-remove"></i> 关闭
+                                        </button>
+                                    </div>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>

+ 23 - 20
gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/org.jsp

@@ -5,9 +5,6 @@
 <title>组织管理</title>
 
 <%@ include file="../layouts/header.jsp"%>
-<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/static/js/common/bootstrap-select/css/bootstrap-select.min.css" />
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/bootstrap-select.min.js"></script>
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/bootstrap-select/js/i18n/defaults-zh_CN.min.js"></script>
 <script src="<%=base%>/static/js/frame/org.js"></script>
 </head>
 <body class="p_body">
@@ -50,12 +47,10 @@
                     <div class="p_searchdiv">
                         <table class="tabsearch">
                             <tr class="trsearch">
-                                <td class="tdname">上级组织编码</td>
-                                <td class="tdcontent"><input type="text" id="srh_pcode" name="srh_pcode" class="p_txt"></td>
-                                <td class="tdname">组织编码</td>
-                                <td class="tdcontent"><input type="text" id="srh_code" name="srh_code" class="p_txt"></td>
                                 <td class="tdname">组织名称</td>
                                 <td class="tdcontent"><input type="text" id="srh_name" name="srh_name" class="p_txt"></td>
+                                <td class="tdname">组织编码</td>
+                                <td class="tdcontent"><input type="text" id="srh_code" name="srh_code" class="p_txt"></td>
                                 <td class="tdname"><img class="p_searchbtn"
                                     src="<%=base%>/static/images/list/btn_query.png" title="查询" onclick="searchRecord()" />
                                 </td>
@@ -63,9 +58,17 @@
                         </table>
                     </div>
                     <div class="page-content">
-                        <!--列表部分-->
-                        <table id="grid-table"></table>
-                        <div id="grid-pager"></div>
+                        <div class="row clearfix">
+                            <div class="col-md-3 column page-content-tree">
+                                <!-- 组织树 -->
+                                <div id="orgTree" class="ztree"></div>
+                            </div>
+                            <div class="col-md-9 column page-content-grid">
+                               <!--  列表部分 -->
+                                <table id="grid-table"></table>
+                                <div id="grid-pager"></div>
+                            </div>
+                        </div>
                     </div>
                 </div>
 			</div>
@@ -151,18 +154,18 @@
                                         <input class="form-control" id="level" name="level" type="text" />
                                     </div>
                                 </div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="save()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="center-block" style="width: 160px;">
+                                    <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="save()">
+                                        <i class="glyphicon glyphicon-ok"></i> 保存
+                                    </button>
+                                    <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
+                                        <i class="glyphicon glyphicon-remove"></i> 关闭
+                                    </button>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>

+ 17 - 16
gkaqv2/trunk/modules/web/src/main/webapp/WEB-INF/view/frame/role.jsp

@@ -5,8 +5,6 @@
 <title>角色管理</title>
 
 <%@ include file="../layouts/header.jsp"%>
-<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/static/js/common/zTree_v3/css/zTreeStyle/zTreeStyle.css" />
-<script type="text/javascript" src="<%=request.getContextPath()%>/static/js/common/zTree_v3/js/jquery.ztree.all-3.5.min.js"></script>
 <script src="<%=base%>/static/js/frame/role.js"></script>
 </head>
 <body class="p_body">
@@ -42,6 +40,9 @@
 						<div class="p_buttonbg">
 							<img class="p_buttonimg" src="<%=base%>/static/images/list/edit.png" onclick="editInfo()" title="修改" />
 						</div>
+                        <div class="p_buttonbg">
+                            <img class="p_buttonimg" src="<%=base%>/static/images/list/bgzy.png" onclick="editAuthInfo()" title="授权" />
+                        </div>
 						<div class="p_buttonbg">
 							<img class="p_buttonimg" src="<%=base%>/static/images/list/search.png" onclick="showSearch()" title="查询" />
 						</div>
@@ -93,38 +94,38 @@
 										<input class="form-control" id="code" name="code" type="text" />
 									</div>
 								</div>
-								<div class="form-group">
+								<div class="form-group" id="remarkDiv">
 									<label class="col-sm-2 control-label" for="remark">备注</label>
 									<div class="col-sm-9">
 										<input class="form-control" id="remark" name="remark" type="text" />
 									</div>
 								</div>
-                                <div class="form-group">
+                                <div class="form-group" id="sortnoDiv">
                                     <label class="col-sm-2 control-label" for="sortno">序号</label>
                                     <div class="col-sm-9">
                                         <input class="form-control" id="sortno" name="sortno" type="text" />
                                     </div>
                                 </div>
-                                <div class="form-group">
-                                    <label class="col-sm-2 control-label" for="menuTree">关联菜单及按钮</label>
+                                <div class="form-group" id="menuTreeDiv">
+                                    <label class="col-sm-2 control-label" for="menuTree">关联菜单</label>
                                     <div class="col-sm-9">
                                     	<div class="form-control" style="height: 200px;  overflow-x: auto; overflow-y: scroll;">
                                             <div id="menuTree" class="ztree"></div>
                                         </div>
                                     </div>
                                 </div>
-								<div class="row">
-									<div class="center-block" style="width: 160px;">
-										<button class="btn btn-success btn-round btn-sm" onclick="save()">
-											<i class="glyphicon glyphicon-ok"></i> 保存
-										</button>
-										<button class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
-											<i class="glyphicon glyphicon-remove"></i> 关闭
-										</button>
-									</div>
-								</div>
 							</form>
 						</div>
+                        <div class="modal-footer">
+                                <div class="center-block" style="width: 160px;">
+                                    <button id="btnSave" class="btn btn-success btn-round btn-sm" onclick="save()">
+                                        <i class="glyphicon glyphicon-ok"></i> 保存
+                                    </button>
+                                    <button type="button" class="btn btn-grey btn-round btn-sm" onclick="closeWin()">
+                                        <i class="glyphicon glyphicon-remove"></i> 关闭
+                                    </button>
+                                </div>
+                        </div>
 						<!-- form 表单信息 -->
 					</div>
 				</div>

+ 143 - 22
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/dict.js

@@ -1,15 +1,120 @@
 var grid_selector = "#grid-table";
 var pager_selector = "#grid-pager";
+var dictTree;
+//zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
+var setting = {
+    view : {
+        autoCancelSelected : false,
+        selectedMulti : false
+    },
+    async : {
+        enable : true,
+        type : 'post',
+        url : basePath + "/dict/tree"
+    },
+    data : {
+        // 简单的数据源
+        simpleData : {
+            enable : true,
+            idKey : "id",
+            pIdKey : "pid",
+            rootPId : 0 // 根节点
+        },
+        key: {
+            name: "text"
+        }
+    },
+    callback : {
+        beforeClick : dictTreeBeforeClick,
+        onClick : dictTreeOnClick
+    }
+};
+
+function dictTreeBeforeClick(treeId, treeNode) {
+    var nodes = dictTree.getSelectedNodes();
+
+    if (nodes.length == 1){
+        if (nodes[0].tId == treeNode.tId) {
+            dictTree.cancelSelectedNode(treeNode);
+            searchRecord();
+            return false;
+        }
+    } else if (nodes.length > 1) {
+        dictTree.cancelSelectedNode();
+        searchRecord();
+        return false;
+    }
+    return true;
+};
+
+function dictTreeOnClick() {
+    searchRecord();
+};
 
 $(document).ready(function() {
+    // 初始化Grid
     initGrid();
+    // 初始化zTree对象
+    dictTree = $.fn.zTree.init($("#dictTree"), setting);
+
+    $("#editForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            text : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            code : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            val : {
+                validators : {
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            remark : {
+                validators : {
+                    stringLength : {
+                        max : 60
+                    }
+                }
+            },
+            sortno : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer: {}
+                }
+            }
+        }
+    });
+    $('#editWin').on('hide.bs.modal', function() {
+        $('#editForm').bootstrapValidator('resetForm', false);
+    });
 });
 
 /**
  * 初始化Grid
  */
 function initGrid() {
-    resizePageGrid(grid_selector);
+    resizeTreePageGrid(grid_selector);
     // 数据表格初始化
     $(grid_selector).jqGrid({
         url : basePath + '/dict/list',
@@ -17,7 +122,7 @@ function initGrid() {
         datatype : "json",
         height : "auto",
         colNames : [
-                '唯一标识', '编码', '名称', '编码值', '上级', '上级编码', '上级名称', '是否末级', '排序', '备注'
+                '唯一标识', '名称', '编码', '编码值', '上级', '上级编码', '上级名称', '是否末级', '备注', '排序'
         ],
         colModel : [
                 {
@@ -27,14 +132,14 @@ function initGrid() {
                     hidden : true,
                     sortable : false
                 }, {
-                    name : 'code',
-                    index : 'code',
-                    sortable : false
-                }, {
                     name : 'text',
                     index : 'text',
                     sortable : false
                 }, {
+                    name : 'code',
+                    index : 'code',
+                    sortable : false
+                }, {
                     name : 'val',
                     index : 'val',
                     sortable : false
@@ -46,23 +151,26 @@ function initGrid() {
                 }, {
                     name : 'pcode',
                     index : 'pcode',
+                    hidden : true,
                     sortable : false
                 }, {
                     name : 'ptext',
                     index : 'ptext',
+                    hidden : true,
                     sortable : false
                 }, {
                     name : 'leaf',
                     index : 'leaf',
-                    sortable : false
-                }, {
-                    name : 'sortno',
-                    index : 'sortno',
+                    hidden : true,
                     sortable : false
                 }, {
                     name : 'remark',
                     index : 'remark',
                     sortable : false
+                }, {
+                    name : 'sortno',
+                    index : 'sortno',
+                    sortable : false
                 }
         ],
         rowNum : _rowNum, // 每页显示记录数
@@ -112,19 +220,19 @@ function addInfo() {
     $('#leaf').selectpicker('refresh');
 
     //获取选择行
-    var ids = getMultiData(grid_selector);
-    if (ids.indexOf(",") != -1) {
+    var nodes = dictTree.getSelectedNodes();
+    if (nodes.length > 1) {
         layer.alert("请选择一条记录!");
         return;
-    } else if (!isNull(ids) && ids.indexOf(",") == -1) {
-        var data = $(grid_selector).jqGrid('getRowData', ids);
-        if (data.leaf == 'Y') { // 末级节点
+    } else if (nodes.length == 1) {
+        var node = nodes[0];
+        if (node.leaf == 'Y') { // 末级节点
             layer.alert("只能在非末级编码下新增!");
             return;
         }
-        $("#pid").val(data.id);
-        $("#pcode").val(data.code);
-        $("#ptext").val(data.text);
+        $("#pid").val(node.id);
+        $("#pcode").val(node.code);
+        $("#ptext").val(node.text);
     }
     // 弹出模态框
     showModelDialog("editWin", "新增");
@@ -187,6 +295,7 @@ function delInfo() {
                 url : basePath + '/dict/delRecodes',
                 success : function(data) {
                     layer.close(index);
+                    dictTree.reAsyncChildNodes(null, "refresh");
                     searchRecord();
                 },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -204,11 +313,17 @@ function delInfo() {
  * 查询
  */
 function searchRecord() {
-    var srh_pcode = $("#srh_pcode").val();
-    var srh_code = $("#srh_code").val();
     var srh_text = encodeURI(encodeURI($("#srh_text").val()));
+    var srh_code = $("#srh_code").val();
+    var srh_pid_str = "";
+
+    var nodes = dictTree.getSelectedNodes();
+    if (nodes.length == 1) {
+        srh_pid_str = "&pid=" + nodes[0].id;
+    }
+
     $(grid_selector).jqGrid('setGridParam', {
-        url : basePath + "/dict/list?pcode=" + srh_pcode + "&code=" + srh_code + "&text=" + srh_text,
+        url : basePath + "/dict/list?text=" + srh_text + "&code=" + srh_code + srh_pid_str,
         page : 1
     }).trigger("reloadGrid");
 };
@@ -217,16 +332,22 @@ function searchRecord() {
  * 保存数据
  */
 function save() {
+    var validator = $('#editForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     $.ajax({
         type : "post",
         url : basePath + '/dict/save',
         dataType : 'json',
         data : $('#editForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeWin();
+                dictTree.reAsyncChildNodes(null, "refresh");
                 searchRecord();
             } else {
                 layer.alert("数据保存失败!");

+ 0 - 188
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/dict.js.bak

@@ -1,188 +0,0 @@
-var dictTree;
-// zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
-var setting = {
-    // 复选框
-    check : {
-        enable : true,
-        chkboxType : {
-            "Y" : "",
-            "N" : ""
-        }
-    },
-    async : {
-        enable : true,
-        type : 'post',
-        url : basePath + "/dict/list"
-    },
-    data : {
-        // 简单的数据源
-        simpleData : {
-            enable : true,
-            idKey : "id",
-            pIdKey : "pid",
-            rootPId : 0
-        },
-        key: {
-            name: "text"
-        }
-    }
-};
-
-$(document).ready(function() {
-    // 初始化zTree对象
-    dictTree = $.fn.zTree.init($("#dictTree"), setting);
-});
-
-/**
- * 新增
- */
-function addInfo() {
-    // 获取勾选节点
-    var nodes = dictTree.getCheckedNodes(true);
-    if (nodes.length > 1) {
-        layer.alert("请选择一条记录!");
-        return;
-    } else if (nodes.length == 1) {
-        var node = nodes[0];
-        if (node.leaf == 'Y') { // 末级节点
-            layer.alert("只能在非末级编码下新增!");
-            return;
-        } else { // 非末级节点
-            // 清空表单信息
-            comClearFormData("#editForm");
-            $("#pid").val(node.id);
-            $("#ptext").val(node.text);
-            $("#pcode").val(node.code);
-            // 弹出模态框
-            showModelDialog("editWin", "新增");
-        }
-    } else { // 根级节点
-        // 清空表单信息
-        comClearFormData("#editForm");
-        // 弹出模态框
-        showModelDialog("editWin", "新增");
-    }
-};
-
-/**
- * 编辑
- */
-function editInfo() {
-    // 获取勾选节点
-    var nodes = dictTree.getCheckedNodes(true);
-    if (nodes.length != 1) {
-        layer.alert("请选择一条记录!");
-        return;
-    } else {
-        var node = nodes[0];
-        var pnode = node.getParentNode();
-        $.ajax({
-            type : 'POST',
-            dataType : "json",
-            data : {
-                "id" : node.id
-            },
-            url : basePath + '/dict/getRecord',
-            success : function(data) {
-                if (!isNull(pnode)) {
-                    $("#pid").val(pnode.id);
-                    $("#pcode").val(pnode.code);
-                    $("#ptext").val(pnode.text);
-                }
-                $("#id").val(data.id);
-                $("#text").val(data.text);
-                $("#code").val(data.code);
-                $("#val").val(data.val);
-                $("#leaf").val(data.leaf);
-                $("#sortno").val(data.sortno);
-                $("#remark").val(data.remark);
-                showModelDialog("editWin", "编辑");
-            },
-            error : function(XMLHttpRequest, textStatus, errorThrown) {
-                layer.alert("error:" + errorThrown);
-            }
-        });
-    }
-};
-
-/**
- * 删除
- */
-function delInfo() {
-    // 获取选择节点
-    var nodes = dictTree.getCheckedNodes(true);
-    if (nodes.length > 0) {
-        var chkIds = "";
-        var chkNames = "";
-        for (var i = 0; i < nodes.length; i++) {
-            if (i != 0) {
-                chkIds += ",";
-                chkNames += ",";
-            }
-            chkIds += nodes[i].id;
-            chkNames += nodes[i].text;
-        }
-        layer.confirm('删除所选记录及其下级记录:<br>' + chkNames, {
-            icon : 3,
-            title : '提示'
-        }, function(index) {
-            $.ajax({
-                type : 'POST',
-                dataType : "json",
-                data : {
-                    "ids" : chkIds
-                },
-                url : basePath + '/dict/delRecodes',
-                success : function(data) {
-                    layer.close(index);
-                    dictTree.reAsyncChildNodes(null, "refresh");
-                },
-                error : function(XMLHttpRequest, textStatus, errorThrown) {
-                    layer.close(index);
-                    layer.alert("error:" + errorThrown);
-                }
-            });
-        });
-    } else {
-        layer.alert("请选择记录");
-    }
-};
-
-/**
- * 刷新
- */
-function refresh() {
-    dictTree.reAsyncChildNodes(null, "refresh");
-};
-
-/**
- * 保存数据
- */
-function save() {
-    $.ajax({
-        type : "post",
-        url : basePath + '/dict/save',
-        dataType : 'json',
-        data : $('#editForm').serialize(), // 表单序列化,获取数据
-        success : function(data) {
-            // 成功删除后刷新页面
-            if (data && data.success == true) {
-                layer.alert("数据已成功保存!");
-                closeWin();
-                dictTree.reAsyncChildNodes(null, "refresh");
-            } else {
-                layer.alert("数据保存失败!");
-            }
-        }, // 操作成功后的操作!data是后台传过来的值
-        error : function(XMLHttpRequest, textStatus, errorThrown) {
-            layer.alert("error:" + errorThrown);
-        }
-    });
-}
-
-/**
- * 关闭窗口
- */
-function closeWin() {
-    hideModelDialog("editWin");
-}

+ 181 - 31
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/group.js

@@ -1,6 +1,7 @@
 var grid_selector = "#grid-table";
 var pager_selector = "#grid-pager";
 var menuTree;
+var orgTree;
 //zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
 var setting = {
  // 复选框
@@ -10,7 +11,7 @@ var setting = {
  async : {
      enable : true,
      type : 'post',
-     url : basePath + "/menu/list"
+     url : basePath + "/menu/tree"
  },
  data : {
      // 简单的数据源
@@ -23,13 +24,95 @@ var setting = {
      }
  }
 };
+//zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
+var setting2 = {
+view : {
+    autoCancelSelected : false,
+    selectedMulti : false
+},
+async : {
+    enable : true,
+    type : 'post',
+    url : basePath + "/org/tree"
+},
+data : {
+    // 简单的数据源
+    simpleData : {
+        enable : true,
+        idKey : "id",
+        pIdKey : "pid",
+        rootPId : 0 // 根节点
+    }
+},
+callback : {
+    beforeClick : orgTreeBeforeClick,
+    onClick : orgTreeOnClick
+}
+};
+
+function orgTreeBeforeClick(treeId, treeNode) {
+var nodes = orgTree.getSelectedNodes();
+
+if (nodes.length == 1){
+    if (nodes[0].tId == treeNode.tId) {
+        orgTree.cancelSelectedNode(treeNode);
+        searchRecord();
+        return false;
+    }
+} else if (nodes.length > 1) {
+    orgTree.cancelSelectedNode();
+    searchRecord();
+    return false;
+}
+return true;
+};
+
+function orgTreeOnClick() {
+searchRecord();
+};
 
 $(document).ready(function() {
-    orgSelect();
-    roleSelect();
+    // 初始化Grid
     initGrid();
     // 初始化zTree对象
     menuTree = $.fn.zTree.init($("#menuTree"), setting);
+    // 初始化zTree对象
+    orgTree = $.fn.zTree.init($("#orgTree"), setting2);
+    // 初始化下拉框
+    orgSelect();
+    roleSelect();
+
+    $("#editForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            remark : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 100
+                    }
+                }
+            },
+            org : {
+                validators : {
+                    notEmpty : {}
+                }
+            },
+            role : {
+                validators : {
+                    notEmpty : {}
+                }
+            }
+        }
+    });
+    $('#editWin').on('hide.bs.modal', function() {
+        $('#editForm').bootstrapValidator('resetForm', false);
+    });
 });
 
 /**
@@ -121,6 +204,20 @@ function addInfo() {
     comClearFormData("#editForm");
     $('#org').selectpicker('refresh');
     $('#role').selectpicker('refresh');
+
+    //获取选择行
+    var nodes = orgTree.getSelectedNodes();
+    if (nodes.length > 1) {
+        layer.alert("请选择一条记录!");
+        return;
+    } else if (nodes.length == 1) {
+        var node = nodes[0];
+        $('#org').selectpicker('val', node.id);
+    }
+    $("#remark").removeProp("readonly");
+    $("#org").removeProp("readonly");
+    $("#role").removeProp("readonly");
+    $("#menuTreeDiv").hide();
     menuTree.checkAllNodes(false);
     menuTree.expandAll(false);
     // 弹出模态框
@@ -149,31 +246,11 @@ function editInfo() {
                 $("#org").selectpicker('val', data.org);
                 $("#role").selectpicker('val', data.role);
                 $("#remark").val(data.remark);
-                $("#menuBtnRef").val(data.menuBtnRef);
-                menuTree.checkAllNodes(false);
-                menuTree.expandAll(false);
-                if (!isNull(data.menuBtnRef)) {
-                    var menuBtnRefs = data.menuBtnRef.split(";");
-                    var menuIds = menuBtnRefs[0].split(",");
-                    for (var i = 0; i < menuIds.length; i++) {
-                        var node = menuTree.getNodeByParam("id", menuIds[i], null);
-                        if (!isNull(node)) {
-                            node.checked = "true";
-                            menuTree.checkNode(node, true, true);
-                        }
-                    }
-                    if (menuBtnRefs.length > 1) {
-                        var btnIds = menuBtnRefs[1].split(",");
-                        for (var i = 0; i < btnIds.length; i++) {
-                            var node = menuTree.getNodeByParam("id", btnIds[i], null);
-                            if (!isNull(node)) {
-                                node.checked = "true";
-                                menuTree.checkNode(node, true, true);
-                            }
-                        }
-                    }
-                    
-                }
+                $("#menuBtnRef").val('');
+                $("#remark").removeProp("readonly");
+                $("#org").removeProp("readonly");
+                $("#role").removeProp("readonly");
+                $("#menuTreeDiv").hide();
                 showModelDialog("editWin", "编辑");
             },
             error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -203,6 +280,7 @@ function delInfo() {
                 url : basePath + '/group/delRecodes',
                 success : function(data) {
                     layer.close(index);
+                    orgTree.reAsyncChildNodes(null, "refresh");
                     searchRecord();
                 },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -220,10 +298,16 @@ function delInfo() {
  * 查询
  */
 function searchRecord() {
-    var srh_org = $("#srh_org").val();
     var srh_role = $("#srh_role").val();
+    var srh_org_str = "";
+
+    var nodes = orgTree.getSelectedNodes();
+    if (nodes.length == 1) {
+        srh_org_str = "&org=" + nodes[0].id;
+    }
+
     $(grid_selector).jqGrid('setGridParam', {
-        url : basePath + "/group/list?org=" + srh_org + "&role=" + srh_role,
+        url : basePath + "/group/list?role=" + srh_role + srh_org_str,
         page : 1
     }).trigger("reloadGrid");
 };
@@ -232,6 +316,11 @@ function searchRecord() {
  * 保存数据
  */
 function save() {
+    var validator = $('#editForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     var nodes = menuTree.getCheckedNodes(true);
     if (nodes.length > 0) {
         var chkMenuIds = "";
@@ -257,10 +346,11 @@ function save() {
         dataType : 'json',
         data : $('#editForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeWin();
+                orgTree.reAsyncChildNodes(null, "refresh");
                 searchRecord();
             } else {
                 layer.alert("数据保存失败!");
@@ -306,3 +396,63 @@ $.ajax({
    }
 });
 }
+
+/**
+ * 编辑授权
+ */
+function editAuthInfo() {
+    // 获取选择行
+    var ids = getMultiData(grid_selector);
+    if (isNull(ids) || ids.indexOf(",") != -1) {
+        layer.alert("请选择且只选择一条记录");
+    } else {
+        $.ajax({
+            type : 'POST',
+            dataType : "json",
+            data : {
+                "id" : ids
+            },
+            url : basePath + '/group/getAuthRecord',
+            success : function(data) {
+                var selData = $(grid_selector).jqGrid('getRowData', ids);
+                $("#id").val(data.id);
+                $("#org").selectpicker('val', data.org);
+                $("#role").selectpicker('val', data.role);
+                $("#remark").val(data.remark);
+                $("#menuBtnRef").val(data.menuBtnRef);
+                menuTree.checkAllNodes(false);
+                menuTree.expandAll(false);
+                if (!isNull(data.menuBtnRef)) {
+                    var menuBtnRefs = data.menuBtnRef.split(";");
+                    var menuIds = menuBtnRefs[0].split(",");
+                    for (var i = 0; i < menuIds.length; i++) {
+                        var node = menuTree.getNodeByParam("id", menuIds[i], null);
+                        if (!isNull(node)) {
+                            node.checked = "true";
+                            menuTree.checkNode(node, true, true);
+                        }
+                    }
+                    if (menuBtnRefs.length > 1) {
+                        var btnIds = menuBtnRefs[1].split(",");
+                        for (var i = 0; i < btnIds.length; i++) {
+                            var node = menuTree.getNodeByParam("id", btnIds[i], null);
+                            if (!isNull(node)) {
+                                node.checked = "true";
+                                menuTree.checkNode(node, true, true);
+                            }
+                        }
+                    }
+                    
+                }
+                $("#remark").prop('readonly', 'readonly');
+                $("#org").prop('readonly', 'readonly');
+                $("#role").prop('readonly', 'readonly');
+                $("#menuTreeDiv").show();
+                showModelDialog("editWin", "编辑");
+            },
+            error : function(XMLHttpRequest, textStatus, errorThrown) {
+                layer.alert("error:" + errorThrown);
+            }
+        });
+    }
+};

+ 139 - 11
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/menu.js

@@ -53,6 +53,116 @@ $(document).ready(function() {
     initGrid();
     // 初始化zTree对象
     menuTree = $.fn.zTree.init($("#menuTree"), setting);
+
+    $("#editForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            name : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            code : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 20
+                    }
+                }
+            },
+            url : {
+                validators : {
+                    stringLength : {
+                        max : 75
+                    }
+                }
+            },
+            icon : {
+                validators : {
+                    stringLength : {
+                        max : 20
+                    }
+                }
+            },
+            remark : {
+                validators : {
+                    stringLength : {
+                        max : 500
+                    }
+                }
+            },
+            sortno : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer: {}
+                }
+            }
+        }
+    });
+    $("#editBtnForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            btnName : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            btnCode : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 20
+                    }
+                }
+            },
+            btnIcon : {
+                validators : {
+                    stringLength : {
+                        max : 20
+                    }
+                }
+            },
+            btnRemark : {
+                validators : {
+                    stringLength : {
+                        max : 500
+                    }
+                }
+            },
+            btnSortno : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer : {}
+                }
+            }
+        }
+    });
+    $('#editWin').on('hide.bs.modal', function() {
+        $('#editForm').bootstrapValidator('resetForm', false);
+    });
+    $('#editBtnWin').on('hide.bs.modal', function() {
+        $('#editBtnForm').bootstrapValidator('resetForm', false);
+    });
 });
 
 /**
@@ -72,7 +182,7 @@ function initGrid() {
         sortname : "", // 默认的排序列
         sortorder : "", // 默认的排序列
         colNames : [
-                'id', 'leaf', '名称', '编码', '备注'
+                'id', 'leaf', '名称', '编码', '备注', '序号'
         ],
         colModel : [
                 {
@@ -98,6 +208,10 @@ function initGrid() {
                     name : 'remark',
                     index : 'remark',
                     sortable : false
+                }, {
+                    name : 'sortno',
+                    index : 'sortno',
+                    sortable : false
                 }
         ],
         rowNum : _rowNum, // 每页显示记录数
@@ -205,10 +319,12 @@ function editInfo() {
                 success : function(data) {
                     $("#menuId").val(pnode.id);
                     $("#menuName").val(pnode.name);
-                    $("#btnId").val(data.btnId);
-                    $("#btnName").val(data.btnName);
-                    $("#btnCode").val(data.btnCode);
-                    $("#btnSortno").val(data.btnSortno);
+                    $("#btnId").val(data.id);
+                    $("#btnName").val(data.name);
+                    $("#btnCode").val(data.code);
+                    $("#btnSortno").val(data.sortno);
+                    $("#btnIcon").val(data.icon);
+                    $("#btnRemark").val(data.remark);
                     showModelDialog("editBtnWin", "编辑");
                 },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -236,6 +352,8 @@ function editInfo() {
                     $("#leaf").selectpicker('val', data.leaf);
                     $("#url").val(data.url);
                     $("#sortno").val(data.sortno);
+                    $("#icon").val(data.icon);
+                    $("#remark").val(data.remark);
                     showModelDialog("editWin", "编辑");
                 },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -284,17 +402,17 @@ function delInfo() {
  * 查询信息
  */
 function searchRecord() {
-    var name = encodeURI(encodeURI($("#srh_name").val()));
-    var code = $("#srh_code").val();
-    var pidStr = "";
+    var srh_name = encodeURI(encodeURI($("#srh_name").val()));
+    var srh_code = $("#srh_code").val();
+    var srh_pid_str = "";
 
     var nodes = menuTree.getSelectedNodes();
     if (nodes.length == 1) {
-        pidStr = "&pid=" + nodes[0].id + "&leaf=" + nodes[0].leaf;
+        srh_pid_str = "&pid=" + nodes[0].id + "&leaf=" + nodes[0].leaf;
     }
 
     $(grid_selector).jqGrid('setGridParam', {
-        url : basePath + "/menu/list?name=" + name + "&code=" + code + pidStr,
+        url : basePath + "/menu/list?name=" + srh_name + "&code=" + srh_code + srh_pid_str,
         page : 1
     }).trigger("reloadGrid");
 };
@@ -303,6 +421,11 @@ function searchRecord() {
  * 保存数据
  */
 function save() {
+    var validator = $('#editForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     $.ajax({
         type : "post",
         url : basePath + '/menu/save',
@@ -336,13 +459,18 @@ function closeWin() {
  * 保存按钮数据
  */
 function btnSave() {
+    var validator = $('#editBtnForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     $.ajax({
         type : "post",
         url : basePath + '/btn/save',
         dataType : 'json',
         data : $('#editBtnForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeBtnWin();

+ 153 - 22
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/org.js

@@ -1,11 +1,130 @@
 var grid_selector = "#grid-table";
 var pager_selector = "#grid-pager";
+var orgTree;
+//zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
+var setting = {
+  view : {
+      autoCancelSelected : false,
+      selectedMulti : false
+  },
+  async : {
+      enable : true,
+      type : 'post',
+      url : basePath + "/org/tree"
+  },
+  data : {
+      // 简单的数据源
+      simpleData : {
+          enable : true,
+          idKey : "id",
+          pIdKey : "pid",
+          rootPId : 0 // 根节点
+      }
+  },
+  callback : {
+      beforeClick : orgTreeBeforeClick,
+      onClick : orgTreeOnClick
+  }
+};
+
+function orgTreeBeforeClick(treeId, treeNode) {
+  var nodes = orgTree.getSelectedNodes();
+
+  if (nodes.length == 1){
+      if (nodes[0].tId == treeNode.tId) {
+          orgTree.cancelSelectedNode(treeNode);
+          searchRecord();
+          return false;
+      }
+  } else if (nodes.length > 1) {
+      orgTree.cancelSelectedNode();
+      searchRecord();
+      return false;
+  }
+  return true;
+};
+
+function orgTreeOnClick() {
+  searchRecord();
+};
 
 $(document).ready(function() {
+    // 初始化Grid
     initGrid();
+    // 初始化zTree对象
+    orgTree = $.fn.zTree.init($("#orgTree"), setting);
+    // 初始化下拉框
     orgTypeSelect();
     szdSelect();
     xzqhSelect();
+
+    $("#editForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            name : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            code : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            orgType : {
+                validators : {
+                    notEmpty : {}
+                }
+            },
+            szd : {
+                validators : {
+                    notEmpty : {}
+                }
+            },
+            xzqh : {
+                validators : {
+                    notEmpty : {}
+                }
+            },
+            remark : {
+                validators : {
+                    stringLength : {
+                        max : 100
+                    }
+                }
+            },
+            sortno : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer: {}
+                }
+            },
+            level : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer: {}
+                }
+            }
+        }
+    });
+    $('#editWin').on('hide.bs.modal', function() {
+        $('#editForm').bootstrapValidator('resetForm', false);
+    });
 });
 
 /**
@@ -30,14 +149,14 @@ function initGrid() {
                     hidden : true,
                     sortable : false
                 }, {
-                    name : 'code',
-                    index : 'code',
-                    sortable : false
-                }, {
                     name : 'name',
                     index : 'name',
                     sortable : false
                 }, {
+                    name : 'code',
+                    index : 'code',
+                    sortable : false
+                }, {
                     name : 'pid',
                     index : 'pid',
                     hidden : true,
@@ -45,10 +164,12 @@ function initGrid() {
                 }, {
                     name : 'pcode',
                     index : 'pcode',
+                    hidden : true,
                     sortable : false
                 }, {
                     name : 'pname',
                     index : 'pname',
+                    hidden : true,
                     sortable : false
                 }, {
                     name : 'orgType',
@@ -71,13 +192,13 @@ function initGrid() {
                     index : 'level',
                     sortable : false
                 }, {
-                    name : 'sortno',
-                    index : 'sortno',
-                    sortable : false
-                }, {
                     name : 'remark',
                     index : 'remark',
                     sortable : false
+                }, {
+                    name : 'sortno',
+                    index : 'sortno',
+                    sortable : false
                 }
         ],
         rowNum : _rowNum, // 每页显示记录数
@@ -127,20 +248,17 @@ function addInfo() {
     $('#orgType').selectpicker('refresh');
     $('#szd').selectpicker('refresh');
     $('#xzqh').selectpicker('refresh');
-//    $('#orgType').selectpicker('val', '');
-//    $('#szd').selectpicker('val', '');
-//    $('#xzqh').selectpicker('val', '');
 
     //获取选择行
-    var ids = getMultiData(grid_selector);
-    if (ids.indexOf(",") != -1) {
+    var nodes = orgTree.getSelectedNodes();
+    if (nodes.length > 1) {
         layer.alert("请选择一条记录!");
         return;
-    } else if (!isNull(ids) && ids.indexOf(",") == -1) {
-        var data = $(grid_selector).jqGrid('getRowData', ids);
-        $("#pid").val(data.id);
-        $("#pcode").val(data.code);
-        $("#pname").val(data.name);
+    } else if (nodes.length == 1) {
+        var node = nodes[0];
+        $("#pid").val(node.id);
+        $("#pcode").val(node.code);
+        $("#pname").val(node.name);
     }
     // 弹出模态框
     showModelDialog("editWin", "新增");
@@ -206,6 +324,7 @@ function delInfo() {
                 url : basePath + '/org/delRecodes',
                 success : function(data) {
                     layer.close(index);
+                    orgTree.reAsyncChildNodes(null, "refresh");
                     searchRecord();
                 },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -223,11 +342,17 @@ function delInfo() {
  * 查询
  */
 function searchRecord() {
-    var srh_pcode = $("#srh_pcode").val();
-    var srh_code = $("#srh_code").val();
     var srh_name = encodeURI(encodeURI($("#srh_name").val()));
+    var srh_code = $("#srh_code").val();
+    var srh_pid_str = "";
+
+    var nodes = orgTree.getSelectedNodes();
+    if (nodes.length == 1) {
+        srh_pid_str = "&pid=" + nodes[0].id;
+    }
+
     $(grid_selector).jqGrid('setGridParam', {
-        url : basePath + "/org/list?pcode=" + srh_pcode + "&code=" + srh_code + "&name=" + srh_name,
+        url : basePath + "/org/list?name=" + srh_name + "&code=" + srh_code + srh_pid_str,
         page : 1
     }).trigger("reloadGrid");
 };
@@ -236,16 +361,22 @@ function searchRecord() {
  * 保存数据
  */
 function save() {
+    var validator = $('#editForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     $.ajax({
         type : "post",
         url : basePath + '/org/save',
         dataType : 'json',
         data : $('#editForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeWin();
+                orgTree.reAsyncChildNodes(null, "refresh");
                 searchRecord();
             } else {
                 layer.alert("数据保存失败!");

+ 1 - 1
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/param.js

@@ -177,7 +177,7 @@ function save() {
         dataType : 'json',
         data : $('#editForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeWin();

+ 146 - 46
gkaqv2/trunk/modules/web/src/main/webapp/static/js/frame/role.js

@@ -1,33 +1,78 @@
 var grid_selector = "#grid-table";
 var pager_selector = "#grid-pager";
 var menuTree;
-//zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
+// zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
 var setting = {
- // 复选框
- check : {
-     enable : true
- },
- async : {
-     enable : true,
-     type : 'post',
-     url : basePath + "/menu/list"
- },
- data : {
-     // 简单的数据源
-     simpleData : {
-         enable : true,
-         idKey : "id",
-         pIdKey : "pid",
-         rootPId : 0
-     // 根节点
-     }
- }
+    // 复选框
+    check : {
+        enable : true
+    },
+    async : {
+        enable : true,
+        type : 'post',
+        url : basePath + "/menu/tree"
+    },
+    data : {
+        // 简单的数据源
+        simpleData : {
+            enable : true,
+            idKey : "id",
+            pIdKey : "pid",
+            rootPId : 0 // 根节点
+        }
+    }
 };
 
 $(document).ready(function() {
+    // 初始化Grid
     initGrid();
     // 初始化zTree对象
     menuTree = $.fn.zTree.init($("#menuTree"), setting);
+
+    $("#editForm").bootstrapValidator({
+        message : 'This value is not valid',
+        feedbackIcons : {
+            valid : 'glyphicon glyphicon-ok',
+            invalid : 'glyphicon glyphicon-remove',
+            validating : 'glyphicon glyphicon-refresh'
+        },
+        fields : {
+            name : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            code : {
+                validators : {
+                    notEmpty : {},
+                    stringLength : {
+                        max : 50
+                    }
+                }
+            },
+            remark : {
+                validators : {
+                    stringLength : {
+                        max : 100
+                    }
+                }
+            },
+            sortno : {
+                validators : {
+                    stringLength : {
+                        max : 4
+                    },
+                    integer: {}
+                }
+            }
+        }
+    });
+    $('#editWin').on('hide.bs.modal', function() {
+        $('#editForm').bootstrapValidator('resetForm', false);
+    });
 });
 
 /**
@@ -94,7 +139,8 @@ function initGrid() {
             page : "page", // json中代表当前页码的数据
             total : "pages", // json中代表页码总数的数据
             records : "total", // json中代表数据行总数的数据
-            repeatitems : false // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素
+            repeatitems : false
+        // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素
         },
         gridComplete : function() {
             comGridComplete("grid-table", "editRecord");
@@ -113,6 +159,11 @@ function initGrid() {
 function addInfo() {
     // 清空表单信息
     comClearFormData("#editForm");
+    $("#code").removeProp("readonly");
+    $("#name").removeProp("readonly");
+    $("#remarkDiv").show();
+    $("#sortnoDiv").show();
+    $("#menuTreeDiv").hide();
     menuTree.checkAllNodes(false);
     menuTree.expandAll(false);
     // 弹出模态框
@@ -142,31 +193,14 @@ function editInfo() {
                 $("#name").val(data.name);
                 $("#remark").val(data.remark);
                 $("#sortno").val(data.sortno);
-                $("#menuBtnRef").val(data.menuBtnRef);
+                $("#menuBtnRef").val('');
+                $("#code").removeProp("readonly");
+                $("#name").removeProp("readonly");
+                $("#remarkDiv").show();
+                $("#sortnoDiv").show();
+                $("#menuTreeDiv").hide();
                 menuTree.checkAllNodes(false);
                 menuTree.expandAll(false);
-                if (!isNull(data.menuBtnRef)) {
-                    var menuBtnRefs = data.menuBtnRef.split(";");
-                    var menuIds = menuBtnRefs[0].split(",");
-                    for (var i = 0; i < menuIds.length; i++) {
-                        var node = menuTree.getNodeByParam("id", menuIds[i], null);
-                        if (!isNull(node)) {
-                            node.checked = "true";
-                            menuTree.checkNode(node, true, true);
-                        }
-                    }
-                    if (menuBtnRefs.length > 1) {
-                        var btnIds = menuBtnRefs[1].split(",");
-                        for (var i = 0; i < btnIds.length; i++) {
-                            var node = menuTree.getNodeByParam("id", btnIds[i], null);
-                            if (!isNull(node)) {
-                                node.checked = "true";
-                                menuTree.checkNode(node, true, true);
-                            }
-                        }
-                    }
-                    
-                }
                 showModelDialog("editWin", "编辑");
             },
             error : function(XMLHttpRequest, textStatus, errorThrown) {
@@ -183,7 +217,7 @@ function delInfo() {
     // 获取选择行
     var ids = getMultiData(grid_selector);
     if (!isNull(ids)) {
-        layer.confirm('确定删除所选记录及其下级记录吗?', {
+        layer.confirm('确定删除所选记录及其关联菜单吗?', {
             icon : 3,
             title : '提示'
         }, function(index) {
@@ -225,6 +259,11 @@ function searchRecord() {
  * 保存数据
  */
 function save() {
+    var validator = $('#editForm').data('bootstrapValidator').validate();
+    if (!validator.isValid()) {
+        return;
+    }
+
     var nodes = menuTree.getCheckedNodes(true);
     if (nodes.length > 0) {
         var chkMenuIds = "";
@@ -250,7 +289,7 @@ function save() {
         dataType : 'json',
         data : $('#editForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success == true) {
                 layer.alert("数据已成功保存!");
                 closeWin();
@@ -271,3 +310,64 @@ function save() {
 function closeWin() {
     hideModelDialog("editWin");
 }
+
+/**
+ * 编辑授权
+ */
+function editAuthInfo() {
+    // 获取选择行
+    var ids = getMultiData(grid_selector);
+    if (isNull(ids) || ids.indexOf(",") != -1) {
+        layer.alert("请选择且只选择一条记录");
+    } else {
+        $.ajax({
+            type : 'POST',
+            dataType : "json",
+            data : {
+                "id" : ids
+            },
+            url : basePath + '/role/getAuthRecord',
+            success : function(data) {
+                var selData = $(grid_selector).jqGrid('getRowData', ids);
+                $("#id").val(data.id);
+                $("#code").val(data.code);
+                $("#name").val(data.name);
+                $("#remark").val(data.remark);
+                $("#sortno").val(data.sortno);
+                $("#menuBtnRef").val(data.menuBtnRef);
+                menuTree.checkAllNodes(false);
+                menuTree.expandAll(false);
+                if (!isNull(data.menuBtnRef)) {
+                    var menuBtnRefs = data.menuBtnRef.split(";");
+                    var menuIds = menuBtnRefs[0].split(",");
+                    for (var i = 0; i < menuIds.length; i++) {
+                        var node = menuTree.getNodeByParam("id", menuIds[i], null);
+                        if (!isNull(node)) {
+                            node.checked = "true";
+                            menuTree.checkNode(node, true, true);
+                        }
+                    }
+                    if (menuBtnRefs.length > 1) {
+                        var btnIds = menuBtnRefs[1].split(",");
+                        for (var i = 0; i < btnIds.length; i++) {
+                            var node = menuTree.getNodeByParam("id", btnIds[i], null);
+                            if (!isNull(node)) {
+                                node.checked = "true";
+                                menuTree.checkNode(node, true, true);
+                            }
+                        }
+                    }
+                }
+                $("#code").prop('readonly', 'readonly');
+                $("#name").prop('readonly', 'readonly');
+                $("#remarkDiv").hide();
+                $("#sortnoDiv").hide();
+                $("#menuTreeDiv").show();
+                showModelDialog("editWin", "编辑");
+            },
+            error : function(XMLHttpRequest, textStatus, errorThrown) {
+                layer.alert("error:" + errorThrown);
+            }
+        });
+    }
+};

+ 5 - 6
gkaqv2/trunk/modules/web/src/main/webapp/static/js/user/index.js

@@ -335,18 +335,17 @@ function delInfo() {
 function searchRecord() {
     var realName = encodeURI(encodeURI($("#srh_realName").val()));
     var loginName = $("#srh_loginName").val();
-    var orgIdStr = "";
+    var srh_orgId_str = "";
 
     var nodes = orgTree.getSelectedNodes();
     if (nodes.length == 1) {
-        orgIdStr = "&orgid=" + nodes[0].id;
+        srh_orgId_str = "&orgid=" + nodes[0].id;
     }
 
     $(grid_selector).jqGrid('setGridParam', {
-        url : basePath + "/user/list?realName=" + realName + "&loginName=" + loginName + orgIdStr,
+        url : basePath + "/user/list?realName=" + realName + "&loginName=" + loginName + srh_orgId_str,
         page : 1
     }).trigger("reloadGrid");
-
 };
 
 /**
@@ -374,7 +373,7 @@ function save() {
         dataType : 'json',
         data : $('#myForm').serialize(), // 表单序列化,获取数据
         success : function(data) {
-            // 成功删除后刷新页面
+            // 成功后刷新页面
             if (data && data.success) {
                 layer.alert("数据已成功保存!");
                 closeWin();
@@ -597,4 +596,4 @@ function showLblControl(flags) {
             $(labels[i]).hide();
         }
     }
-}
+}