企業彙報系統基礎功能實現:
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學習