ApproveEvection.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace app\common\validate;
  3. use think\Validate;
  4. /**
  5. * 出差信息验证
  6. */
  7. class ApproveEvection extends Validate
  8. {
  9. /**
  10. * 验证规则
  11. */
  12. protected $rule = [
  13. 'apply_user_id' => 'require',
  14. 'reason' => 'require',
  15. 'start_time' => 'require',
  16. 'end_time' => 'require|check_end_time',
  17. 'type' => 'require|gt:0',
  18. 'is_who' => 'requireIf:type,1',
  19. 'remark' => 'requireIf:is_who,1',
  20. 'approve_user' => 'require',
  21. ];
  22. /**
  23. * 提示消息
  24. */
  25. protected $message = [
  26. ];
  27. /**
  28. * 验证场景
  29. */
  30. protected $scene = [
  31. 'create' => ['apply_user_id','reason', 'start_time', 'end_time', 'type', 'is_who', 'remark', 'approve_user'],
  32. 'update' => ['apply_user_id','reason', 'start_time', 'end_time', 'type', 'is_who', 'remark', 'approve_user'],
  33. 'edit' => ['reason', 'start_time', 'end_time', 'type', 'is_who', 'remark'],
  34. ];
  35. /**
  36. * 构造函数
  37. * @access public
  38. * @param array $rules 验证规则
  39. * @param array $message 验证提示信息
  40. * @param array $field 验证字段描述信息
  41. */
  42. public function __construct(array $rules = [], $message = [], $field = [])
  43. {
  44. $this->field = [
  45. 'apply_user_id' => '申请人',
  46. 'reason' => '事由',
  47. 'start_time' => '出差开始时间',
  48. 'end_time' => '出差结束时间',
  49. 'type' => '出差类型',
  50. 'is_who' => '是否跨关内关外',
  51. 'remark' => '备注',
  52. 'approve_user' => '审批人',
  53. ];
  54. $this->message = array_merge($this->message, [
  55. 'apply_user_id.require' => '请选择申请人',
  56. 'start_time.check_start_time' => '出差开始时间必须大于当前时间',
  57. 'end_time.check_end_time' => '出差结束时间必须大于开始时间',
  58. 'type.gt' => '请选择正确的出差类型',
  59. ]);
  60. parent::__construct($rules, $message, $field);
  61. }
  62. protected function check_start_time($value, $rule, $data)
  63. {
  64. if ($value <= date('Y-m-d H:i')) {
  65. return false;
  66. }
  67. return true;
  68. }
  69. protected function check_end_time($value, $rule, $data)
  70. {
  71. if ($value > $data['start_time']) {
  72. return true;
  73. }
  74. return false;
  75. }
  76. }