`
yan_qinglong
  • 浏览: 4206 次
  • 性别: Icon_minigender_1
  • 来自: 江西
最近访客 更多访客>>
社区版块
存档分类
最新评论

OA项目中权限树状结构的实现

    博客分类:
  • J2EE
阅读更多

    最近在做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组织机构(树状结构)

    对于开发者来说,能够查看和分析源码,有助于深入理解OA系统中组织机构树状结构的实现方式,以及如何在实际项目中应用。常见的编程语言如Java、Python或JavaScript都可以用于构建这样的功能,具体实现可能会涉及到...

    基于ssh的纯OA项目

    1. **树状结构**:OA系统中的树形结构通常用于组织结构、部门分类、项目层级等展示,便于用户直观理解信息的层次关系。 2. **权限管理**:权限管理是OA系统的关键部分,确保不同角色的用户只能访问和操作他们被授权...

    c#通用版权限管理系统

    主要功能有:权限管理、角色管理、部门管理、用户管理、公司管理、模块管理、系统设置。适用 OA、财务、人力等办公软件...对系统进行模块化 可以设定公司的树状结构。 进行增、改、删、查 这是权限设置前的基础设置。

    oa办公系统(带聊天室功能)

    DTree通常是一个树形控件,能够清晰地展现层级关系,用户可以通过交互式的树状结构来分配和管理权限。这种方式使得权限设置更为直观和简单,有助于管理者更好地理解并控制系统的访问权限。 聊天室功能是OA系统的一...

    通达OA2015管理员快速设置指南

    2. **权限分配**:角色不仅代表了模块的可见性,还反映了用户在OA软件中的管理级别。例如,不同级别的用户可以看到不同层级的日志和日程。 3. **用户分类**:拥有相同主角色或辅助角色的用户被视为同一类用户。这...

    OA办公自动化系统40个后台模板仅供参考.zip

    3. 菜单导航:后台模板的菜单导航通常采用多级树状结构,清晰地展示各个功能模块,帮助用户快速定位所需功能。 4. 表单设计:OA系统中常见的表单包括信息录入、申请审批等,模板应提供多种样式的表单,适应不同的...

    试谈OA职位的java设置.doc

    本文主要讨论了OA(Office Automation)系统中关于职位设置的Java实现,涉及到的功能包括员工浏览、职位管理、权限管理等多个方面。以下是详细的知识点解析: 1. **职位目录树**:职位设置是基于公司组织架构构建的...

    深圳市天盈软件提供的协同办公OA 开发平台(有源码,可二次开发)

    5. **组织结构管理**:支持B/S架构下的组织结构管理,不仅支持传统的树状结构,还支持多维度、多层级的组织结构管理。 #### 四、权限管理 - **精细化权限控制**:提供精细的权限控制机制,包括角色权限、用户权限...

    UDS.rar_asp 项目管理_考勤

    通过ASP技术,可以构建一个直观的树状结构展示部门层级,用户可以方便地添加、修改和删除部门,同时分配员工到相应部门,并设置不同部门或员工的权限,确保信息的安全和访问的合理性。 考勤管理是该系统的核心部分...

    ssh+JBPM OA办公自动化系统

    ssh+jbpm完成的oa系统 编码:都采用utf-8编码 功能包括:用户管理,岗位管理,部门管理,权限管理,...权限管理是树状结构人性化操作, 也可以用作论坛。 安装:先运行install.java安装,管理员用户名和密码都是admin

    西门子WINCCOA组态软件中文视频培训教程全集

    - **项目浏览器**:显示当前项目的树状结构,便于导航至各个部分。 - **属性窗口**:展示所选对象的具体属性信息,并允许修改相应值。 - **图形编辑器**:用于绘制界面元素,如按钮、文本框等。 - **脚本编辑器**:...

    java企业办公自动化OA源码数据库 MySQL源码类型 WebForm

    Java企业办公自动化OA源码 功能包括:用户管理,岗位管理,部门管理,权限管理,网上交流,贴吧, ...权限管理是树状结构人性化操作,也可以用作论坛。 安装:先运行install.java安装,管理员用户名和密码都是admin

    开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单 基于RuoYi-VUE版本开发

    2. **部门管理**:通过树状结构展示公司的组织架构,包括公司、部门、小组等不同层级的信息,并支持数据权限控制。 3. **岗位管理**:为每个用户配置相应的职务,便于后续的角色权限分配。 4. **菜单管理**:用于...

    viewtree css + js

    "viewtree css + js"是一个专门用于UI前台展示OA权限列表的插件类,它结合了CSS和JavaScript技术,提供了一种以树状结构显示数据的解决方案。在前端开发中,这种类型的插件通常用于组织和展示层次化的信息,如菜单...

    Web_OA管理系统需求规格说明书.docx

    - **Dojo树:** Dojo是一种JavaScript库,用于创建高性能的富客户端Web应用程序,Dojo树则是用于展示树状数据结构的组件。 #### 二、项目概述 **项目总体目标:** - 实现企业内部信息资源的共享。 - 提高员工间的...

    OA系统的详细分析

    - **电子邮件**:支持内部和外部邮件通信,提供树状邮箱目录结构,便于管理和查找。 - **个人通讯录**:允许用户管理个人联系信息,同时提供公共通讯录访问权限。 - **个人日程安排**:用户可以轻松规划自己的日程,...

    标准软件OA办公自动化系统帮助文档

    - 公共文件柜:采用树状权限结构,实现文件共享。 - 网络硬盘:在线存储和共享文件。 4. 考勤模块: - 上下班记录:自动记录员工的上下班时间。 - 请假、出差管理:处理员工的请假和出差申请。 5. 销售管理...

    OA管理系统需求.docx

    - 显示组织结构的树状视图。 - 支持创建、修改、删除部门及职位。 - 能够清晰定义部门职责、职位归属及员工信息。 2. **客户管理** - **概述**:维护企业与客户的联系,跟踪客户需求和服务历史。 - **功能**:...

    开源OA协同办公系统 集成Flowable流程引擎 可拖拽创建个性表单

    - 系统组织机构的配置,支持树状结构展示,便于数据权限控制。 **3. 岗位管理** - 管理系统用户所担任的职务,便于职责分配。 **4. 菜单管理** - 系统菜单的配置管理,包括操作权限、按钮权限标识等。 **5. 角色...

Global site tag (gtag.js) - Google Analytics