过去我们使用过一些周报工具来完成项目组或部门的周报填写与考核工作,但多少有些不理想,要么功能太过简单,要么功能特别繁杂,不接地气,使用不便。

后来我们就考虑自己开发一个简单的,实用的,易用的,接地气的周报填报考核系统。

一开始预想比较简单,就是些简单的增删改查,但是做下来会发现,把一件产品做好,不管他是简单是复杂,想要做好,都是需要投入巨大的时间和精力的。

技术选型:

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)根据指定的时间段,对指定组织机构中的人员经过考核的周报进行汇总,并将考核得分累计排名,人员的工作绩效情况一目了然。

四:其它

  完整的组织机构管理,人员管理,角色权限管理功能,可在此基础上继续开发。

地址:http://e.zkebao.com

截图:

填写周报:

注意,填写周报前,需要到“设置”下的“周报”中,添加工作类型,工作任务等基础数据。

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

按组织机构查询:

按个人查询:

考核:

支持考核与撤销考核,考核之后该周报不再允许修改,撤销考核后填写人可以再次修改周报。

注意:图中的“完成质量”、“完成情况”、“工作状态”、“加班”这些考核项目,是在“设置”下的“周报”中自行定义的。

统计:

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

设置工作类型/任务

设置考核项目

设置考核关系

分配角色与权限

地址:http://e.zkebao.com

ASP.NET MVC (Razor)开发<<周报与绩效考核系统>>,并免费提供园友们使用~~~的更多相关文章

  1. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理

    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染   对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...

  2. Asp.net Mvc模块化开发之分区扩展框架

    对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...

  3. Asp.net Mvc模块化开发系列(目录)

    模块化开发是非常重要的,模块化开发是个系统性问题,为此我觉得有必须要写一个系列的文章才能基本说的清楚 那又为什么要写一个目录呢? 其一.是对我昨天承诺写一个系列新的文章的回应 其二.是先写出一个大纲, ...

  4. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  5. ASP.NET MVC Razor语法

    ASP.NET MVC Razor语法 (一) 关于_ViewStart.cshtml文件     使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件.事实上,_View ...

  6. ASP.NET MVC框架开发系列课程 (webcast视频下载)

    课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名“老赵”.英文名“Jeffrey Zhao”,技术博客为http://jeffreyzhao.cnblogs.com),微软最有价值专家(ASP.NET ...

  7. 像asp.net Mvc一样开发nodejs+express Mvc站点

    像asp.net Mvc一样开发nodejs+express Mvc站点 首先,我是个c#码农.从事Mvc开发已然4个年头了,这两年前端MVC的兴起,我也跟风学了一些,对前端的框架也了解一些,angu ...

  8. ASP.NET MVC企业开发的基本环境

    ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ...

  9. Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门

    Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 第一节: 前言(技术简介) EasyUI 是一套 js的前端框架 利用它可以快速的开发出好看的 前端系统 web ...

随机推荐

  1. XMLFeedSpider例子

    from scrapy import log from scrapy.contrib.spiders import XMLFeedSpider from myproject.items import ...

  2. [UWP]UWP App Data存储和获取

    这篇博客介绍如何在UWP开发时,如何存储App Data和获取. App Data是指用户的一些设定,偏好等.例如,App的主题,是否接收推送,离线接收消息等.需要区分下App Data和User D ...

  3. (转载)Win8.1的版本

    Win8.1版本到底有哪些? Windows 8.1的各版本有什么不同.差别和区别? Win8.1旗舰版有木有? Win8.1最好的版本是哪个? 我应该用哪个版本的Windows 8.1? 之前软媒曾 ...

  4. EF for MySql 开发配置手册

    执行MySQL安装程序,安装MySQL For Visual Studio和Connector/NET 执行命令: Install-Package EntityFramework Install-Pa ...

  5. 我的 vim 基本配置

    " required 使用 vundle 需要先设置这两项 set nocompatible filetype off " 设置 vundle 插件 使用帮助:https://gi ...

  6. JS应用,表单上的一些东西

    例: <body> <form>我的生日是哪一年? <input type="text" value="" id="t1 ...

  7. DNS枚举工具DNSenum

    DNS枚举工具DNSenum   DNSenum是一款非常强大的域名信息收集工具.它能够通过谷歌或者字典文件猜测可能存在的域名,并对一个网段进行反向查询.它不仅可以查询网站的主机地址信息.域名服务器. ...

  8. 通用js函数集锦<来源于网络> 【二】

    通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...

  9. Proxy setting

    1. git git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080 2. gradleScena ...

  10. bzoj 4330: JSOI2012 爱之项链

    听说这题不公开.. 那就不贴题意了 首先要用burnside引理求出戒指的种数,那么对于一个顺时针旋转$k$个位置的置换就相当于连上一条$(i,(i+k)%R)$的边,每个环颜色必须相同 环的个数为$ ...