最近闲来无事,自己尝试通过thinkphp3.1.3框架开发一套自己的OA系统,目前已完成了人力资源管理部分的内容,遇到并解决了几个问题。

1.由于刚开始不太熟悉thinkphp的框架,花费了一些功夫去了解。重点阅读了开发手册:http://doc.thinkphp.cn/manual/preface.html

2.问题:HTML 布局  规划布局为 header(头部)+side(左侧导航)+content(内容)的布局。

  学习点:div 布局

      1)position:absolute :

      2)top:30px;left:30px; :相对于整个页面距离顶部和左边的距离

      3)height:150px;width:1900px;:div 的高度和宽度

  1. #header{position:absolute;height:150px;width:1900px;color:#fff;background:#666;line-height:50px;z-index:;top:0px;left:0px}
  2. #content{position:absolute;width:1895px;color:#fff;float:right;margin-left:-170px;margin-top:0px;z-index:;top:145px;left:175px}
  3. #content_inner{position:absolute;width:1725px;height:665px;background:#333300;top:15px;left:170px}
  4. #side{position:absolute;width:265px;height:760px;color:#fff;background:#FFFFFF;float:left;margin-top:0px;z-index:;;top:160px;left:0px}
  5. #side_inner{position:absolute;width:;heigth:550px;top:0px}
  6. #footer{position:absolute;height:50px;color:#fff;background:#666;margin-top:10px;z-index:}

  thinkphp模板包含整合:<include file="./Tpl/Home/index/index_layout.html"/>  注:有使用分组Home,Admin

    问题:模板包含导致读取的CSS,JS无效的问题:<script src="/app/public/js/jquery-1.11.2.min.js" type="text/javascript"></script>    使用这样的地址方式才有效

3.问题:模板读取信息ajax至指定控制器方法并返回json数据集,并对json数据集进行遍历输出。期间遇到编码的问题,显示中文为乱码,需要调整全部的编码方式为UTF-8,首先调整编辑器的编码方式,然后是thinkphp的编码方式,以及数据库的编码方式。

  PersonnelmattersAction.class.php  的 handlename()

  1.      //getmember ajax name
  2. public function handlename()
  3. {
  4. if( IS_POST )
  5. {
  6. $Data = M('Personnelmatters');
  7. $cate = $_POST['name'];
  8. //$cate = iconv("UTF-8","GB2312//TRANSLIT",$cate);
  9. $field ="id,aid,department,station,entry_time,name,privatephone,companyphone,idnumber,education,maritalstatus,drivinglicense,email,job";
  10. $result = $Data->field($field)->where(array('name'=> $cate))->select();
  11. //$this->ajaxReturn($result,"OK",1);
  12. echo json_encode($result,true);
  13. }else
  14. {
  15. echo json_encode("",true);
  16. }
  17. }

  PersonnelmattersModel.class.php

  1. <?php
  2.  
  3. class PersonnelmattersModel extends Model{
  4. //指定数据库
  5. protected $dbName = 'yloa';
  6.  
  7. //定义模型字段
  8. protected $fields = array(
  9. 'id',
  10. 'aid',
  11. 'department',
  12. 'station',
  13. 'entry_time',
  14. 'name',
  15. 'privatephone',
  16. 'companyphone',
  17. 'idnumber',
  18. 'education',
  19. 'maritalstatus',
  20. 'drivinglicense',
  21. 'email',
  22. 'job',
  23. '_pk' => 'id',
  24. '_autoinc' => true
  25. );
  26.  
  27. // 定义自动验证
  28. protected $_validate = array(
  29. array('aid','require','工号必须'),
  30. array('department','require','部门必须'),
  31. array('station','require','岗位必须'),
  32. array('entry_time','require','入职时间必须'),
  33. array('name','require','工号必须'),
  34. array('privatephone','require','个人电话必须'),
  35. array('idnumber','require','身份证必须'),
  36. array('education','require','学历必须'),
  37. array('maritalstatus','require','婚否必须'),
  38. array('drivinglicense','require','是否有驾照必须'),
  39. array('email','require','邮箱必须'),
  40. array('job','require','是否在职必须'),
  41. );
  42.  
  43. }

  getmember.html

  1. <select id="name" style="height:30px;width:75px">
  2. <volist name="search" id="vo">
  3. <option value="{$vo.name}">{$vo.name}</option>
  4. </volist>
  5. </select>
  1. $(function(){
  2. var ajaxUrl = "/app/index.php/Personnelmatters/handlename";
  3. $("#name").change(function(){
  4. var name = $("#name").val();
  5. $.post(ajaxUrl,{"name":name},function(json){
  6. printPersonnelmatters(json);
  7. },'json');
  8. });
  9. })
  1.   //员工资料展示
  2. function printPersonnelmatters(json)
  3. {
  4. if(json == null || json == undefined || json == '')
  5. {
  6. $("#result").html("返回值为空!");
  7. }
  8. else
  9. {
  10. var len = json.length;
  11. var tableStr ="<table class='imagetable'>";
  12. tableStr = tableStr + "<tr><th>序号</th><th>工号</th><th>部门</th><th>职务</th><th>入职时间</th><th>姓名</th><th>私人电话</th><th>公司电话</th><th>身份证</th><th>学历</th><th>婚否</th><th>是否有驾照</th><th>邮箱</th><th>是否在职</th><th>操作</th></tr>";
  13. for(var i=0;i<len;i++)
  14. {
  15. tableStr = tableStr + "<tr><td id='myid'>"+ json[i].id +"</td>"
  16. +"<td>"+ json[i].aid + "</td>"
  17. +"<td>"+ json[i].department + "</td>"
  18. +"<td>"+ json[i].station + "</td>"
  19. +"<td>"+ json[i].entry_time + "</td>"
  20. +"<td>"+ json[i].name + "</td>"
  21. +"<td>"+ json[i].privatephone + "</td>"
  22. +"<td>"+ json[i].companyphone + "</td>"
  23. +"<td>"+ json[i].idnumber + "</td>"
  24. +"<td>"+ json[i].education + "</td>"
  25. +"<td>"+ json[i].maritalstatus + "</td>"
  26. +"<td>"+ json[i].drivinglicense + "</td>"
  27. +"<td>"+ json[i].email + "</td>"
  28. +"<td>"+ json[i].job + "</td>"
  29. +"<td>"+ "<nobr><input type='button' id='edit' value='编辑' onclick='javascript:edit_id("+json[i].id+");' /><input type='button' id='delete' value='删除' onclick='javascript:delete_id("+json[i].id+");' /></nobr>"+ "</td></tr>";
  30. }
  31. tableStr = tableStr + "</table>";
  32. $("#result").html(tableStr);
  33. }
  34. }

  问题:获取指定行id。直接在展示方法中传值

4.问题:thinkphp数据分页,thinkphp有自带的数据分页类。

  PersonnelmattersAction.class.php  的 getmember()

  1. //获取职员信息
  2. public function getmember(){
  3. $Data = M('Personnelmatters');
  4. import('ORG.Util.Page');// 导入分页类
  5. $count = $Data->count();// 查询满足要求的总记录数
  6. $lastpage = floor(($count/10)+1);
  7. $Page = new Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数
  8. $show = $Page->show();// 分页显示输出
  9. // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
  10. $list = $Data->limit($Page->firstRow.','.$Page->listRows)->select();
  11. $this->assign('list',$list);// 赋值数据集
  12. $this->assign('page',$show);// 赋值分页输出
  13. $this->assign('lastpage',$lastpage);
  14. //echo $Data->getLastSql();
  15. $this->search = $Data ->select();
  16. $this->display();
  17. }

  getmember.html

  1. <div id="result">
  2. <table class='imagetable'>
  3. <tr>
  4. <th>序号</th>
  5. <th>工号</th>
  6. <th>部门</th>
  7. <th>职务</th>
  8. <th>入职时间</th>
  9. <th>姓名</th>
  10. <th>私人电话</th>
  11. <th>公司电话</th>
  12. <th>身份证</th>
  13. <th>学历</th>
  14. <th>婚否</th>
  15. <th>是否有驾照</th>
  16. <th>邮箱</th>
  17. <th>是否在职</th>
  18. <th>操作</th>
  19. </tr>
  20. <volist name="list" id="vo" key="k">
  21. <tr align="center">
  22. <td>{$vo.id}</td>
  23. <td>{$vo.aid}</td>
  24. <td>{$vo.department}</td>
  25. <td>{$vo.station}</td>
  26. <td>{$vo.entry_time}</td>
  27. <td>{$vo.name}</td>
  28. <td>{$vo.privatephone}</td>
  29. <td>{$vo.companyphone}</td>
  30. <td>{$vo.idnumber}</td>
  31. <td>{$vo.education}</td>
  32. <td>{$vo.maritalstatus}</td>
  33. <td>{$vo.drivinglicense}</td>
  34. <td>{$vo.email}</td>
  35. <td>{$vo.job}</td>
  36. <td>
  37. <nobr><input type="button" id="edit" value="编辑" onclick="javascript:edit_id({$vo.id});" /><input type="button" id="delete" value="删除" onclick="javascript:delete_id({$vo.id});" /></nobr>
  38. </td>
  39. </tr>
  40. </volist>
  41. </table>
  42. <div style="position:absolute;width:1425px;heigth:30px;top:500px;" align="center">
  43. <hr>{$page}&nbsp;<a href="/app/index.php/Personnelmatters/getmember/p/1">首页</a>&nbsp;<a href="/app/index.php/Personnelmatters/getmember/p/{$lastpage}">末页</a><hr>
  44. </div>

php随笔5-thinkphp OA系统 人力资源管理的更多相关文章

  1. 浅谈OA系统与Portal门户的区别

    随着社会信息化的发展与进步,OA办公自动化软件打破了传统复杂的办公方式,使各个行业实现了高效的无纸化办公.由此一来OA快速成长为继财务软件.ERP软件之后的第三大管理软件.随着企业信息化系统的不断增多 ...

  2. OA系统高性能解决方案(史上最全的通达OA系统优化方案)

    序: 这是一篇针对通达OA系统的整体优化方案,文档将硬件.网络.linux操作系统.程序本身(包括web和数据库)以及现有业务有效结合在一起,进行了系统的整合优化.该方案应用于真实生产环境,部署完成后 ...

  3. Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感

    Atitit  华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感 序 言上篇:价值创造.评价与分配第一章 全力创造价值1.1 围绕价值创造展开人力资源管理1.1.1 什 ...

  4. 评点SAP HR功能及人力资源管理软件

    评点SAP HR功能及人力资源管理软件   本文导航 第1页:my SAP 人力资源软件 第2页:my SAP HR协同功能 第3页:组织结构管理 第4页:mySAPTM HR的战略功能 第5页:集成 ...

  5. OA系统、ERP系统、CRM系统的区别和联系有哪些?企业该如何使用?

    我们经常听到很多企业会花重金购买适合企业的ERP.OA和CRM系统,使得公司的管理运营更加高效有序,节省公司运营成本,带来更大的经济效益,但实际上很多人员都不太理解他们之间的区别和联系是什么,到底该如 ...

  6. 基于SSH框架的人力资源管理系统设计与实现

    - - ->关注博主公众号[C you again],获取更多IT资源(IT技术文章,毕业设计.课程设计系统源码,经典游戏源码,HTML网页模板,PPT.简历模板,!!还可以投稿赚钱!!,点击查 ...

  7. 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观

    整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049

  8. PMP 第九章 项目人力资源管理

    1制定人力资源计划 2组建项目团队 3建设项目团队 4管理项目团队 1.规划人力资源管理的作用是什么?组织图和职位描述的表现形式有哪些?RAM和RACI的关系是什么?人力资源管理计划的内容有哪些? 人 ...

  9. Atitit.人力资源管理原理与概论

    Atitit.人力资源管理原理与概论 1. 人力资源管理 第一章 人力资源管理概述 第二章 人力资源理论基础与发展演变 第三章 人力资源规划 第四章工作分析与工作设计 第五章 员工招聘与录用 第六章 ...

随机推荐

  1. Github Blog 搭建手册

    http://www.ilehao.com/blog/2012/11/11/github-blog-config/ http://www.freebuf.com/articles/web/25613. ...

  2. Y5V贴片电容(MLCC)容量范围速查表

    Y5V贴片电容简述 Y5V贴片电容属于EIA规定的Class 2类材料的电容.它的电容量受温度.电压.时间变化影响大. Y5V贴片电容特性 具有较差的电容量稳定性,在-25℃-85℃工作温度范围内,温 ...

  3. GC(Garbagecollection)垃圾回收

    在前面向大家讲解FTL时,我们提到了GC的操作,所谓GC就是把一个闪存块里的‘有效’页数据复制到一个‘空白’块里,然后把这个块完全擦除.GC是SSD里的一个非常关键的操作,其效率对性能有决定性影响.闪 ...

  4. 工具类_java 数字转化为汉字大写

    public class Num2Rmb { private String[] hanArr = { "零", "壹", "贰", &quo ...

  5. hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]

    // Time 234 ms; Memory 244 K #include<iostream> #include<cstdio> #include<cmath> u ...

  6. struts Value Stack 值栈

    首先声明:本文是从博客园博友的文章转载过来的,感觉说的不错.在此附上地址:http://www.cnblogs.com/jerryxing/archive/2012/04/23/2467299.htm ...

  7. Swift 中类的初始化器与继承

    首先,Swift 为类定义了两种初始化器来确保类中所有的储存属性都能得到一个初始化值.这两种初始化器就是「指定初始化器」(Designated Initializer)与「便利初始化器」(Conven ...

  8. Duanxx 的 STM32 学习: 中断向量表操作

  9. 编译ycm库

    在安装完YCM之后,重新打开vim还会出现如下的报错信息:ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; ...

  10. PowerDesigner 基础使用

    建表使用基础 1.打开软件,点击create model(如下图一)or 右上角 文件→建立新模型 or 快捷键 Ctrl+N(如下图二) 2.选择要生成脚本的数据库类型(见上图二) 3.建表(图三) ...