最近在做OA项目设置权限的时候用到JQuery的TreeView插件,现在整理下:
1、 首先准备一下Action中的setPrivilegeUI()方法
/** 设置权限页面 */
public String setPrivilegeUI() {
// 准备数据
Role role = roleService.getById(model.getId());
ActionContext.getContext().getValueStack().push(role);
List<Privilege> topPrivilegeList = privilegeService.findTopList();
ActionContext.getContext().put("topPrivilegeList", topPrivilegeList);
// 准备回显的数据
privilegeIds = new Long[role.getPrivileges().size()];
int index = 0;
for (Privilege privilege : role.getPrivileges()) {
privilegeIds[index++] = privilege.getId();
}
return "setPrivilegeUI";
}
2、在网页中准备接收数据
<!-- 用于满足JQuery的treeview()方法-->
<ul id="tree">
<!-- 遍历顶级权限-->
<s:iterator value="#topPrivilegeList">
<!-- name="privilegeIds" 用于回显 span class="folder"用于显示文件夹状 value="%{id in privilegeIds ? 'checked' : ''}" 如果id 在action准备回显的权限id中则选中-->
<li><input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? 'checked' : ''}"/> />
<label for="cb_${id}"><span class="folder">${name}</span></label>
<ul>
<s:iterator value="children">
<li><input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? 'checked' : ''}"/> />
<label for="cb_${id}"><span class="folder">${name}</span></label>
<ul>
<s:iterator value="children">
<li><input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? 'checked' : ''}"/> />
<label for="cb_${id}"><span class="folder">${name}</span></label>
</li>
</s:iterator>
</ul>
</li>
</s:iterator>
</ul>
</li>
</s:iterator>
</ul>
3、JS实现树状结构以及上下级权限的选中相关操作的代码
<script type="text/javascript">
$(function(){
// 为所有的权限复选框指定事件处理代码
$("[name=privilegeIds]").click(function(){
var checked = this.checked; // 当前触发事件的复选框的选中状态
// 同时选中或取消所有下级权限
$(this).siblings("ul").find("input").attr("checked", checked);
// 如果当前是选中,则也选中所有上级权限
if(checked){
$(this).parents("li").children("input").attr("checked", true);
}
// 如果当前是取消,并且同级中没有选中的了,则把上级权限也取消
else{
if( $(this).parent().siblings("li").children("input:checked").size() == 0 ){
$(this).parent().parent().siblings("input").attr("checked", false);
var startPoint = $(this).parent().parent();
if( startPoint.parent().siblings("li").children("input:checked").size() == 0 ){
startPoint.parent().parent().siblings("input").attr("checked", false);
}
}
}
});
$("#tree").treeview();
});
</script>
4、点击文字实现的小技巧
<!-- label标签中的for属性 要跟文字对应的id一样-->
<label for="cb_${id}">
5、实现当鼠标经过文件夹图标时 鼠标的图标显示为手型
<style type="text/css">
span.folder{
cursor: pointer;
}
</style>
这样我们权限树的操作就完成了!
分享到:
相关推荐
对于开发者来说,能够查看和分析源码,有助于深入理解OA系统中组织机构树状结构的实现方式,以及如何在实际项目中应用。常见的编程语言如Java、Python或JavaScript都可以用于构建这样的功能,具体实现可能会涉及到...
1. **树状结构**:OA系统中的树形结构通常用于组织结构、部门分类、项目层级等展示,便于用户直观理解信息的层次关系。 2. **权限管理**:权限管理是OA系统的关键部分,确保不同角色的用户只能访问和操作他们被授权...
主要功能有:权限管理、角色管理、部门管理、用户管理、公司管理、模块管理、系统设置。适用 OA、财务、人力等办公软件...对系统进行模块化 可以设定公司的树状结构。 进行增、改、删、查 这是权限设置前的基础设置。
DTree通常是一个树形控件,能够清晰地展现层级关系,用户可以通过交互式的树状结构来分配和管理权限。这种方式使得权限设置更为直观和简单,有助于管理者更好地理解并控制系统的访问权限。 聊天室功能是OA系统的一...
2. **权限分配**:角色不仅代表了模块的可见性,还反映了用户在OA软件中的管理级别。例如,不同级别的用户可以看到不同层级的日志和日程。 3. **用户分类**:拥有相同主角色或辅助角色的用户被视为同一类用户。这...
3. 菜单导航:后台模板的菜单导航通常采用多级树状结构,清晰地展示各个功能模块,帮助用户快速定位所需功能。 4. 表单设计:OA系统中常见的表单包括信息录入、申请审批等,模板应提供多种样式的表单,适应不同的...
本文主要讨论了OA(Office Automation)系统中关于职位设置的Java实现,涉及到的功能包括员工浏览、职位管理、权限管理等多个方面。以下是详细的知识点解析: 1. **职位目录树**:职位设置是基于公司组织架构构建的...
5. **组织结构管理**:支持B/S架构下的组织结构管理,不仅支持传统的树状结构,还支持多维度、多层级的组织结构管理。 #### 四、权限管理 - **精细化权限控制**:提供精细的权限控制机制,包括角色权限、用户权限...
通过ASP技术,可以构建一个直观的树状结构展示部门层级,用户可以方便地添加、修改和删除部门,同时分配员工到相应部门,并设置不同部门或员工的权限,确保信息的安全和访问的合理性。 考勤管理是该系统的核心部分...
ssh+jbpm完成的oa系统 编码:都采用utf-8编码 功能包括:用户管理,岗位管理,部门管理,权限管理,...权限管理是树状结构人性化操作, 也可以用作论坛。 安装:先运行install.java安装,管理员用户名和密码都是admin
- **项目浏览器**:显示当前项目的树状结构,便于导航至各个部分。 - **属性窗口**:展示所选对象的具体属性信息,并允许修改相应值。 - **图形编辑器**:用于绘制界面元素,如按钮、文本框等。 - **脚本编辑器**:...
Java企业办公自动化OA源码 功能包括:用户管理,岗位管理,部门管理,权限管理,网上交流,贴吧, ...权限管理是树状结构人性化操作,也可以用作论坛。 安装:先运行install.java安装,管理员用户名和密码都是admin
2. **部门管理**:通过树状结构展示公司的组织架构,包括公司、部门、小组等不同层级的信息,并支持数据权限控制。 3. **岗位管理**:为每个用户配置相应的职务,便于后续的角色权限分配。 4. **菜单管理**:用于...
"viewtree css + js"是一个专门用于UI前台展示OA权限列表的插件类,它结合了CSS和JavaScript技术,提供了一种以树状结构显示数据的解决方案。在前端开发中,这种类型的插件通常用于组织和展示层次化的信息,如菜单...
- **Dojo树:** Dojo是一种JavaScript库,用于创建高性能的富客户端Web应用程序,Dojo树则是用于展示树状数据结构的组件。 #### 二、项目概述 **项目总体目标:** - 实现企业内部信息资源的共享。 - 提高员工间的...
- **电子邮件**:支持内部和外部邮件通信,提供树状邮箱目录结构,便于管理和查找。 - **个人通讯录**:允许用户管理个人联系信息,同时提供公共通讯录访问权限。 - **个人日程安排**:用户可以轻松规划自己的日程,...
- 公共文件柜:采用树状权限结构,实现文件共享。 - 网络硬盘:在线存储和共享文件。 4. 考勤模块: - 上下班记录:自动记录员工的上下班时间。 - 请假、出差管理:处理员工的请假和出差申请。 5. 销售管理...
- 显示组织结构的树状视图。 - 支持创建、修改、删除部门及职位。 - 能够清晰定义部门职责、职位归属及员工信息。 2. **客户管理** - **概述**:维护企业与客户的联系,跟踪客户需求和服务历史。 - **功能**:...
- 系统组织机构的配置,支持树状结构展示,便于数据权限控制。 **3. 岗位管理** - 管理系统用户所担任的职务,便于职责分配。 **4. 菜单管理** - 系统菜单的配置管理,包括操作权限、按钮权限标识等。 **5. 角色...