Leave.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace addons\qingdongams\model;
  3. use think\Exception;
  4. use think\Model;
  5. use traits\model\SoftDelete;
  6. /**
  7. * 请假表
  8. */
  9. class Leave extends Model {
  10. use SoftDelete;
  11. // 表名,不含前缀
  12. protected $name = 'qingdongams_attendance_leave';
  13. // 自动写入时间戳字段
  14. protected $autoWriteTimestamp = 'int';
  15. // 定义时间戳字段名
  16. protected $createTime = 'createtime';
  17. protected $updateTime = 'updatetime';
  18. protected $deleteTime = 'deletetime';
  19. public function getCreatetimeAttr($value) {
  20. return date('Y-m-d H:i:s', $value);
  21. }
  22. //创建人
  23. public function createStaff() {
  24. return $this->hasOne(Staff::class, 'id', 'create_staff_id')->field('id,name,img,post');
  25. }
  26. //创建请假单
  27. public static function createLeave($params) {
  28. $staff = Staff::info();
  29. if (!empty($staff)) {
  30. $params['create_staff_id'] = $staff->id;
  31. }
  32. $flow = Flow::getsteplist(Flow::LEAVE_STATUS);
  33. $params['flow_id'] = $flow['flow_id'];
  34. $params['order_id'] = $flow['order_id'];
  35. if ($flow['status'] == 0) {//发起人自选
  36. if (empty($params['flow_staff_ids'])) {
  37. throw new Exception('审批人必须选择');
  38. }
  39. $params['flow_staff_ids'] = trim($params['flow_staff_ids']);
  40. } else {
  41. $params['flow_staff_ids'] = trim($flow['flow_staff_ids']);
  42. }
  43. $Model = new self;
  44. $result = $Model->allowField(true)->save($params);
  45. $lastId=$Model->id;
  46. if ($flow['status'] == 1) {//固定审批
  47. //发送审批通知
  48. Flow::sendStepRecord($flow,Flow::LEAVE_STATUS, $lastId);
  49. } else {//发起人自选 依次审批
  50. $staff_id = explode(',', $params['flow_staff_ids'])[0];
  51. if ($staff_id) {
  52. ExamineRecord::addExaminse(ExamineRecord::LEAVE_TYPE, $lastId, $staff_id);
  53. }
  54. }
  55. return true;
  56. }
  57. /**
  58. * 获取
  59. */
  60. public function getFilesAttr($value, $data)
  61. {
  62. if (empty($data['file_ids'])) {
  63. return '';
  64. }
  65. $paths = File::where(['id' => ['in', $data['file_ids']]])->column('file_path');
  66. return implode(',', $paths);
  67. }
  68. }