ApproveEvection.php 2.2 KB

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