ASP.NET MVC (Razor)开发<<周报与绩效考核系统>>,并免费提供园友们使用~~~
过去我们使用过一些周报工具来完成项目组或部门的周报填写与考核工作,但多少有些不理想,要么功能太过简单,要么功能特别繁杂,不接地气,使用不便。
后来我们就考虑自己开发一个简单的,实用的,易用的,接地气的周报填报考核系统。
一开始预想比较简单,就是些简单的增删改查,但是做下来会发现,把一件产品做好,不管他是简单是复杂,想要做好,都是需要投入巨大的时间和精力的。
技术选型:
ASP.NET MVC + Razor 视图引擎,jQuery,数据库 SQL Server 2008 R2
微软企业库
数据访问层使用了自有ORM解决方案
表结构设计:
除了基本的组织机构,角色,人员,权限这些表以外,周报的表使用了一对多的两张关进行关联,一张主表用于存储周报主要信息,子表用于存储周报的内容条目,也就是说一个周报,是多条数据组织汇总起来的。
为了方便对数据的统计分析和查询,周报表中对周次,日期,年月等做了冗余。

使用 ASP.NET MVC Razor 来开发 WEB 画面,非常的简单高效,只要在视图顶部声明视图所使用的模型类,就可以在此视图中直接访问模型类实例中的数据。

在 JavaScript 脚本中访问模型中的数据:

使用 Razor 语法输出HTML

使用 Razor 视图引擎开发WEB应用的生产性非常的高,代码可读性好,结构工整。
此外,周报系统一个通用的底层功能就是对周次的计算,直接贴出代码如下:
/// <summary>
/// 获取指定日期,在为一年中为第几周
/// </summary>
/// <param name="dt">指定时间</param>
/// <reutrn>返回第几周</reutrn>
public static int GetWeekOfYear(DateTime dt)
{
GregorianCalendar gc = new GregorianCalendar();
int weekOfYear = gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
return weekOfYear;
} /// <summary>
/// 获取指定日期为当月的第几周
/// </summary>
/// <param name="dt"></param>
/// <param name="weekStart"></param>
/// <returns></returns>
public static int GetWeekOfMonth(DateTime dt)
{
int weekStart = ; //WeekStart
//1表示 周一至周日 为一周
//2表示 周日至周六 为一周
DateTime FirstofMonth;
FirstofMonth = Convert.ToDateTime(dt.Date.Year + "-" + dt.Date.Month + "-" + ); int i = (int)FirstofMonth.Date.DayOfWeek;
if (i == )
{
i = ;
} if (weekStart == )
{
return (dt.Date.Day + i - ) / + ;
}
if (weekStart == )
{
return (dt.Date.Day + i - ) / ; }
return ;
//错误返回值0
} /// <summary>
/// 计算本周起始日期(礼拜一的日期)
/// </summary>
/// <param name="someDate">该周中任意一天</param>
/// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>
public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
{
int i = someDate.DayOfWeek - DayOfWeek.Monday;
if (i == -) i = ;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
TimeSpan ts = new TimeSpan(i, , , );
return someDate.Subtract(ts);
} /// <summary>
/// 计算本周结束日期(礼拜日的日期)
/// </summary>
/// <param name="someDate">该周中任意一天</param>
/// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>
public static DateTime CalculateLastDateOfWeek(DateTime someDate)
{
int i = someDate.DayOfWeek - DayOfWeek.Sunday;
if (i != ) i = - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。
TimeSpan ts = new TimeSpan(i, , , );
return someDate.Add(ts);
}
最终完成功能与效果:
一:周报的填写;
1)周报中的“工作类型”、“工作任务”、“完成情况”作为基础数据自由配置;
2)“工作类型”、“工作任务”只需简单设置名称即可,无需繁杂的参与人负责人进度时间等数据,术业有专攻,这部分工作交给项目管理软件处理,此外,周报与绩效考核的使用场景不单单是项目研发,行管团队或传统企业一般不需要有“项目”的概念,只需一个工作分类即可。
3)可按组织机构或按个人对周报进行查询;
二:考核功能
1)可自由设置人员之间的考核关系,不和组织机构绑定,因为多数时候项目领导或部门领导都不会直接考核每一个人,另外也存在人员临时借调的情况,与组织机构并不一定完全一致;
2)考核项可自由配置,可根据自身需求自行添加要考核的项,如工作完成情况,工作质量,是否加班等,考核结果可设置分值,用于绩效统计;
三:统计
1)根据指定的时间段,对指定组织机构中的人员经过考核的周报进行汇总,并将考核得分累计排名,人员的工作绩效情况一目了然。
四:其它
完整的组织机构管理,人员管理,角色权限管理功能,可在此基础上继续开发。
截图:
填写周报:
注意,填写周报前,需要到“设置”下的“周报”中,添加工作类型,工作任务等基础数据。

如果该周报经过审核,则不再允许修改,并显示审核结果。

按组织机构查询:

按个人查询:

考核:
支持考核与撤销考核,考核之后该周报不再允许修改,撤销考核后填写人可以再次修改周报。
注意:图中的“完成质量”、“完成情况”、“工作状态”、“加班”这些考核项目,是在“设置”下的“周报”中自行定义的。

统计:
统计中的得分项目是根据考核项生成的,而考核项允许自定义。

设置工作类型/任务

设置考核项目

设置考核关系

分配角色与权限

ASP.NET MVC (Razor)开发<<周报与绩效考核系统>>,并免费提供园友们使用~~~的更多相关文章
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
- Asp.net Mvc模块化开发之分区扩展框架
对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...
- Asp.net Mvc模块化开发系列(目录)
模块化开发是非常重要的,模块化开发是个系统性问题,为此我觉得有必须要写一个系列的文章才能基本说的清楚 那又为什么要写一个目录呢? 其一.是对我昨天承诺写一个系列新的文章的回应 其二.是先写出一个大纲, ...
- ASP.NET MVC 网站开发总结(三) ——图片截图上传
本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...
- ASP.NET MVC Razor语法
ASP.NET MVC Razor语法 (一) 关于_ViewStart.cshtml文件 使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件.事实上,_View ...
- ASP.NET MVC框架开发系列课程 (webcast视频下载)
课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名“老赵”.英文名“Jeffrey Zhao”,技术博客为http://jeffreyzhao.cnblogs.com),微软最有价值专家(ASP.NET ...
- 像asp.net Mvc一样开发nodejs+express Mvc站点
像asp.net Mvc一样开发nodejs+express Mvc站点 首先,我是个c#码农.从事Mvc开发已然4个年头了,这两年前端MVC的兴起,我也跟风学了一些,对前端的框架也了解一些,angu ...
- ASP.NET MVC企业开发的基本环境
ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang 茗洋 EasyUI1.3.4 ...
- Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门
Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 第一节: 前言(技术简介) EasyUI 是一套 js的前端框架 利用它可以快速的开发出好看的 前端系统 web ...
随机推荐
- 提取postgresql数据库中jsonb列的数据
; SELECT t.errmsg,sms_records.* FROM sms_records, jsonb_to_record(result_json) AS t(errmsg text,sid ...
- Python-面向对象
面向过程变成:函数式变成,C程序等 面向对象编程:C++,Java,Python等 类和对象: 类:是对事物的抽象,比如人类.球类 对象:是类的一个实例,比如足球.篮球 实例说明: 球类可以对 ...
- 数据分析(9):DataFrame介绍
DataFrame 表格型的数据结构 创建DataFrame 可以通过传入dict的方式,DataFrame会自动加上索引,并且列会有序排列 data = {'state':['a', 'b', 'c ...
- 【Hibernate框架】flush机制
背景: 一个偶然的机会,我做了一个例子,中间我遇到了一个有意思的问题,就是在执行commit方法之前,做了两次save操作,如下: SessionFactory sf = new Configurat ...
- linux man的使用
在Linux中无论是管理系统还是在Linux环境下编程,内嵌的手册man都是一个很好用的工具,“Linux下不懂得就找man”(man是manual的意思).本文将介绍我所知道的所有关于man的知识( ...
- python学习 2数学公式
递归 def fact(n): if n <= 1: return 1 else: return n * fact(n - 1) 斐波那契数列: 第0项是0,第1项是1,从第2项开始,每一项都等 ...
- 工作记录 java
1:tomcat有两个这个文件,是缓存文件和临时文件.可能会缓存部分的jsp文件,所以如果有时候文件重新替换不起效果的话,可以先把这两个文件夹下面的文件清空
- iOS之 利用通知(NSNotificationCenter)获取键盘的高度,以及显示和隐藏键盘时修改界面的注意事项
我们在开发中会遇到这样的情况:调用键盘时需要界面有一个调整,避免键盘遮掩输入框. 但实现时你会发现,在不同的手机上键盘的高度是不同的.这里列举一下: //获取键盘的高度 /* iphone 6: 中文 ...
- 获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息
在iOS7之前, 可以方便的使用 [[UIDevice currentDevice] uniqueIdentifier] 来获取设备的UDID,但是在iOS7之后这个方法不再适用. 你可以用[[UID ...
- POJ 1979 题解
Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 31722 Accepted: 17298 D ...