实例介绍
本项目主要分为六大块:人事管理,日程管理,文档管理,消息传递,系统统管理,考勤管理
人事管理:主要实现对机构部门员工增删改查,打印员工信息等操作.
日程管理:实现了公司部门及个人日程的管理.运用一个简单的日历显示日程,让人一目了然,有阳历转换阴历,
适合大众使用。在以前这种技术会在闰年可能会出现错误,现在已经解决了,需要的朋友们可以学习学习。
文档管理:实现了对公司文档增删改查,及上传下载文件等操作.这里运用了,近似于window系统的一种操作,有些不完善,等待下次上传吧。
希望有兴趣的,可以改进,上传到51aspx共享
消息传递:实现了公司内部人员相互通信,及即使通报工作会议等操作.有即时消息通知。
系统管理:该功能主要用于管理者本身,可以对员工身份权限管理,操日志等。能更好的管理。
考勤管理:主要用于考察员工出勤情况,并统计
【实例截图】
【核心代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using MyOffice.BLL; using MyOffice.Models; using System.Collections.Generic; public partial class SysManage_MenuAdjust : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { if (Session[ "user" ] != null ) { DisplayUserMenu(); } } } public void DisplayUserMenu() { //得到用户信息 UserInfo user = (UserInfo)Session[ "user" ]; this .TVSysFunUpdate.Nodes.Clear(); //得到系统菜单表中所有的第一级菜单 IList<SysFun> parentSysFun = SysFunManager.GetAllParentNodeInfoByUserId(user); foreach (SysFun sfParent in parentSysFun) { //得到第一层节点的Id string nodeId = sfParent.NodeId.ToString(); //得到第一层节点的显示名称 string displayName = sfParent.DisplayName; //根据节点信息创建一层节点 TreeNode fatherNode = CreateTreeNode(displayName, nodeId, "~/images/menuclose.gif" ); CreateChildTree(nodeId, user, fatherNode); this .TVSysFunUpdate.Nodes.Add(fatherNode); //展开上次选择的节点 } //选中的子菜单其父节点打开 if (hidNodeId.Value.ToString() != "" && hidNodeId.Value.ToString().Length>3) { foreach (TreeNode treeNode in this .TVSysFunUpdate.Nodes) { if (hidNodeId.Value.ToString().IndexOf(treeNode.Value.ToString())==0) { treeNode.Expand(); } } } } private TreeNode CreateTreeNode( string strText, string strId, string strImage) { TreeNode newNode = new TreeNode(); newNode.Text = strText; newNode.Value = strId; newNode.ImageUrl = strImage; return newNode; } //创建第二级节点 public void CreateChildTree( string nodeId, UserInfo user, TreeNode fatherNode) { //在三层下实现获得父级节点为nodeId的所有子节点 IList<SysFun> childSysFun = SysFunManager.GetSysFunByParentNodeIdAndUserId(user, int .Parse(nodeId)); foreach (SysFun sfChild in childSysFun) { //得到第二层节点Id string childNodeId = sfChild.NodeId.ToString(); //得到第二层节点的显示名称 string childDisplayName = sfChild.DisplayName; //根据节点信息,创建第二层节点 TreeNode childNode = CreateTreeNode(childDisplayName, childNodeId, "~/images/CloseTree.gif" ); //将子节点加入到父节点中 AddTree(fatherNode, childNode); } } //将子节点加入到父节点中 private void AddTree(TreeNode fatherNode, TreeNode childNode) { fatherNode.ChildNodes.Add(childNode); } // 上移 protected void BtnUp_Click( object sender, EventArgs e) { //得到当前选中的节点 int nodeId = int .Parse(hidNodeId.Value.ToString()); SysFun node = SysFunManager.GetSysFunById(nodeId); //得到当前选中节点的前一个节点 SysFun upNode = SysFunManager.GetUpNodeByCurrentNodeId(node.DisplayOrder, node.ParentNodeId); //验证:如果已经是最上面的一个节点,则不能进行上移操作 if (upNode == null ) { this .LblMessage.Text = "操作菜单项已经置顶" ; this .LblMessage.Visible = true ; return ; } this .LblMessage.Visible = false ; //执行移动操作:修改displayOrder,交换选中节点和该节点的上一个节点的DisplayOrder bool b=SysFunManager.ModifySysFunOrderByNodeId(node.NodeId, upNode.DisplayOrder); bool b1=SysFunManager.ModifySysFunOrderByNodeId(upNode.NodeId, node.DisplayOrder); if (b && b1) { //重新绑定树 DisplayUserMenu(); ///////////////添加操作日志 UserInfo user = (UserInfo)Session[ "user" ]; OperateLog log = new OperateLog(); log.User = user; log.OperateName = "上调整" ; log.OperateDesc = "菜单排序" ; bool b2 = OperateLogManager.AddOperateLog(log); } } //下移 protected void BtnDown_Click( object sender, EventArgs e) { //得到当前选中的节点 int nodeId = int .Parse(hidNodeId.Value.ToString()); SysFun node = SysFunManager.GetSysFunById(nodeId); //得到当前选中节点的下一个节点 SysFun downNode = SysFunManager.GetDownNodeByCurrentNodeId(node.DisplayOrder, node.ParentNodeId); //验证:如果已经是最下面的一个节点,则不能进行下移操作 if (downNode == null ) { this .LblMessage.Text = "操作菜单项已经置底" ; this .LblMessage.Visible = true ; return ; } this .LblMessage.Visible = false ; //执行移动操作:修改displayOrder,交换选中节点和该节点的下一个节点的DisplayOrder bool b=SysFunManager.ModifySysFunOrderByNodeId(node.NodeId, downNode.DisplayOrder); bool b1=SysFunManager.ModifySysFunOrderByNodeId(downNode.NodeId, node.DisplayOrder); if (b && b1) { //重新绑定树 DisplayUserMenu(); ///////////////添加操作日志 UserInfo user = (UserInfo)Session[ "user" ]; OperateLog log = new OperateLog(); log.User = user; log.OperateName = "下调整" ; log.OperateDesc = "菜单排序" ; bool b2 = OperateLogManager.AddOperateLog(log); } } protected void TVSysFunUpdate_SelectedNodeChanged( object sender, EventArgs e) { //得到当前选中的节点ID int nodeId = int .Parse(TVSysFunUpdate.SelectedNode.Value); //赋值到隐藏域中 hidNodeId.Value = nodeId.ToString(); } } |
标签: 办公OA系统
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)