ApproveEvection.php 2.2 KB

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