企业汇报系统基础功能实现:
1)添加单个企业展示
2)在企业下可以添加 层级,可以无限叠加
3)每个层级下可以展示汇报文档点击单个文档标题 可以查看文档内容
1/确定数据库表,即单个企业的基本展示信息
1)company公司部门层级表,应有的属性name,pre.id等
2)doc文档信息表,应有的属性title,content,com_id等
3)user用户信息表,应有的属性name,password,type,com_id等
4)operation_log操作记录表,应有的属性有time,desc,user_id等
注意:
·命名一定要有意义,让自己一目了然;
·字段的数据类型,如publish_time为string;
·后期添加字段,$railsgmigration add_some_to_docs,rb文件add_column:docs,:p_user, :integer
·直接对数据库进行基本数据操作,如deletefrom docs; insert into docs(title) value('ss')
2/在企业下实现层级的无限叠加
1)company_controller.rb:index接收id赋值给@pre_id
2)company/index.html.erb:表格显示部门信息,有下属部门/删除/更新/新增部门基本操作
3/每个层级下可以展示汇报文档点击单个文档标题可以查看文档内容
1)doc_controller.rb:new在Doc表里查询com_id为id值参数的记录,并赋值给docs
2)doc/new.html.erb:表格显示部门文档信息,有基本操作内容,通过页面链接找到方法,再到对应页面展示
4/文档批注审核
1)doc/new.html.erb:href="/doc/toexamine?id=<%=doc.id%>"将文档的id作为参数传到方法
2)doc_controller.rb:toexamine在Doc表里查询id为”id”的数据,并赋值给@doc
3)doc/toexamine.html.erb:输入审批内容后,提交,触发动作examine
4)doc_controller.rb:examine在Doc表里查询id为”id”的数据,并赋值给@doc,在User表里查询id为”user_id”的数据,并赋值给@user,在Company表里查询id为
@doc.com_id和@user.com_id的数据,判断@doc和@user的级别,有权限则修改文档状态,将部门com_id作为参数传到方法new,展示部门文档状况,否则将文档
doc.id作为参数传到方法nopermission
5)doc_controller.rb:nopermission接收。调用nopermission.html.erb显示sorryno…
5/汇报或者用户的软删除,可以进行恢复
1)doc/new.html.erb:href="/doc/recovery?id=<%=doc.id%>",将文档的id作为参数传到方法
2)doc_controller.rb:delete3在Doc表里查询id为”id”的数据,并赋值给@doc,取出@doc的com_id并赋值给@com_id,更改文档状态为0即不可用,调用save保
存,将部门com_id作为参数传到方法new
3)文档恢复同上,更改文档状态为1即可用
6/用户的操作日志
1)user_controller.rb:index调用index.html.erb页面,登录触发login动作
2)user_controller.rb:login在User表里查询name为“name”,password为”password”的数据,并存入@user,若数据为空,则返回登录页面,否则将@user的第一条
数据的user.id存入Hash对象session,其键名为user_id
3)doc_controller.rb:定义方法savelog,保存时间,操作描述,用户id,并在每一次操作后调用该方法
4)company/index.html.erb:href="/operationlog/index"调用operationlog模型的index方法
5)operation_controller.rb:index在Operation表里查询user_id为session[:user_id]的第一条数据,并存入@oplog
6)operationlog/index.html.erb:表格显示操作日志
7/权限管理
doc_controller.rb:定义方法haspermission(com_id)
8/查看某个部门下得文档+(N多条件同时条件可选的),比如发布时间审核时间审核状态
@docs=Doc.where("p_time <=?",q_time) .where(:examine_status=>[:examine_status])
.where("examine_time<= ?",e_time)
注:不需要传递id参数
9/对一个部门或者企业下面的所有的汇报,出报表最好能出chart
1)Echarts:实例应用:a,http://echarts.baidu.com/doc/start.html b,http://echarts.baidu.com/doc/example/bar1.html
2)jquery学习