EmployeeCard.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace app\sys\controller;
  3. use app\model\Footprints;
  4. use app\model\User;
  5. use app\model\Employee;
  6. use think\facade\View;
  7. class EmployeeCard
  8. {
  9. public function index(){
  10. $where[] = ['pipe_type', '=', 'card'];
  11. $org_ids = orgSubIds(request()->employee['root_id']);
  12. $where[] = ['org_id', 'in', $org_ids];
  13. if (!request()->isAjax()) {
  14. $employee_id = Footprints::where($where)->group('employee_id')->column('employee_id');
  15. $employee_data = Employee::where('id', 'in', $employee_id)->field('id,name')->select();
  16. View::assign('employee_data',$employee_data);
  17. return View::fetch();
  18. }
  19. $page = input('page', 1, 'intval');
  20. $limit = input('limit', 10, 'intval');
  21. $employee_id = input('employee_id');
  22. if(!empty($employee_id)){
  23. $where[] = ['employee_id','=',$employee_id];
  24. }
  25. $uid_employee = Footprints::where($where)->group('uid,employee_id')->order('uid asc')->column('uid,employee_id');
  26. $count = count($uid_employee);
  27. $list_where = array_slice($uid_employee, ($page-1) * $limit, $limit);
  28. foreach ($list_where as $k => $v) {
  29. $v['pipe_type'] = 'card';
  30. $list = Footprints::where($v)->order('addtime asc')->select()->toArray();
  31. $list_where[$k]['user_name'] = User::where('id', '=', $v['uid'])->value('nickname');
  32. $list_where[$k]['employee_name'] = Employee::where('id', '=', $v['employee_id'])->value('name');
  33. $list_where[$k]['visit_count'] = count($list);
  34. $visit_long = 0;
  35. foreach ($list as $l) {
  36. if ($l['visit_due_time']) {
  37. $visit_long += $l['visit_due_time'];
  38. }
  39. }
  40. $list_where[$k]['visit_long'] = $visit_long;
  41. $visit_latest = end($list);
  42. $list_where[$k]['visit_latest'] = !empty($visit_latest) ? $visit_latest['addtime'] : '';
  43. }
  44. return json(['code'=> 0, 'data'=> $list_where, 'count'=> $count]);
  45. }
  46. }