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 = 1; //WeekStart
//1表示 周一至周日 为一周
//2表示 周日至周六 为一周
DateTime FirstofMonth;
FirstofMonth = Convert.ToDateTime(dt.Date.Year + "-" + dt.Date.Month + "-" + 1); int i = (int)FirstofMonth.Date.DayOfWeek;
if (i == 0)
{
i = 7;
} if (weekStart == 1)
{
return (dt.Date.Day + i - 2) / 7 + 1;
}
if (weekStart == 2)
{
return (dt.Date.Day + i - 1) / 7; }
return 0;
//错误返回值0
} /// <summary>
/// 计算本周起始日期(礼拜一的日期)
/// </summary>
/// <param name="someDate">该周中任意一天</param>
/// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>
public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
{
int i = someDate.DayOfWeek - DayOfWeek.Monday;
if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
TimeSpan ts = new TimeSpan(i, 0, 0, 0);
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 != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。
TimeSpan ts = new TimeSpan(i, 0, 0, 0);
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 ...

  10. Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html

    Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...

随机推荐

  1. 同时显示多个 Notification

    主要出在PendingIntent.getActivity();的第二个参数,API文档里虽然说是未被使用的参数(给出的例子也直接写0的),实际上是通过该参数来区别不同的Intent的,如果id相同, ...

  2. cocos2d 创建一个黑白纹理

    @interface myGrayTexture : CCTexture2D // @param exposure 曝光 +(id) textureWithFile:(NSString*) file ...

  3. 搭建solr单机版

    solr单机版的搭建 一.solr单机版的搭建 1.运行环境 solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(ja),本教va写 ...

  4. malloc功能具体解释

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  5. Cocos2d-x项目总结中的一些遇到的问题

    这几天在用Cocos2D-X尝试着做一个小游戏,当然不是创新,仅仅是单纯的模仿,就是为了将自己这段时间学到的技术应用于实践中. 在这个过程中.遇到了一些问题,在此特做一些总结,以免以后遇到类似的问题. ...

  6. LeerCode 123 Best Time to Buy and Sell Stock III之O(n)解法

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  7. uva 1393 - Highways(容斥原理)

    题目连接:uva 1393 - Highways 题目大意:给定一个m∗n的矩阵,将矩阵上的点两两相连,问有多少条直线至少经过两点. 解题思路:头一次做这样的题目,卡了一晚上. dp[i][j]即为i ...

  8. NAT( 网络地址转换) 实现

    NAT基本介绍: 网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术.是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 ...

  9. c#中的属性

    在C#中我们可以很自由的访问共有字段,但有时我们可能需要某字段只能读或者写,或在改变字段值得时候做一些其他事情,显然这些仅仅依靠字段是无法实现的,于是便有了属性. 1.基本用法 c#中的属性由属性作用 ...

  10. chrome插件演示,经js转让chrome api清除浏览器缓存

    一个简单的chrome插件演示,主页脚本.内容脚本.背景和脚本之间的通信api呼叫.在此之上可以延长通话等chrome api. 下载链接:http://download.csdn.net/detai ...