WorkOrder.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace App;
  3. use App\Traits\ModelTimeFormat;
  4. use Illuminate\Database\Eloquent\Model;
  5. use App\Traits\ModelLogChanging;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. use Illuminate\Database\Eloquent\SoftDeletes;
  8. class WorkOrder extends Model
  9. {
  10. use ModelLogChanging;
  11. use ModelTimeFormat;
  12. use SoftDeletes;
  13. // 工单 信息
  14. protected $fillable = [
  15. 'status', // 状态
  16. 'creator_id', // 创建人
  17. 'reviewer_id', // 审核人
  18. 'order_issue_type_id', // 问题件类型
  19. 'work_order_type_id', // 工单类型
  20. 'grad', // 紧急等级
  21. 'remark', // 工单信息描述
  22. 'outer_table_name', // 链接表名
  23. 'review_at', // 审核时间
  24. 'order_id', // 订单id
  25. 'uniquely_tag', // 唯一标识
  26. ];
  27. static public $enums = [
  28. 'status' => [
  29. '' => 0,
  30. '待审核' => 1,
  31. '已处理' => 2,
  32. ],
  33. 'grad' => [
  34. '' => 0,
  35. '一般' => 1,
  36. '重要' => 2,
  37. '紧急' => 3,
  38. '重要且紧急' => 4,
  39. ],
  40. ];
  41. function __construct(array $attributes = [])
  42. {
  43. foreach (self::$enums as &$enum) {
  44. $enum = $enum + array_flip($enum);
  45. }
  46. parent::__construct($attributes);
  47. }
  48. public function getStatusAttribute($value)
  49. {
  50. if (!$value) return '';
  51. return self::$enums['status'][$value];
  52. }
  53. public function setStatusAttribute($value)
  54. {
  55. if (!$value) return 0;
  56. if (is_numeric($value)) {
  57. $this->attributes['status'] = $value;
  58. } else {
  59. $this->attributes['status'] = self::$enums['status'][$value];
  60. }
  61. }
  62. public function getGradAttribute($value)
  63. {
  64. if (!$value) return '';
  65. return self::$enums['grad'][$value];
  66. }
  67. public function setGradAttribute($value)
  68. {
  69. if (!$value) return 0;
  70. if (is_numeric($value)) {
  71. $this->attributes['grad'] = $value;
  72. } else {
  73. $this->attributes['grad'] = self::$enums['grad'][$value];
  74. }
  75. }
  76. // 创建人
  77. public function creator(): BelongsTo
  78. {
  79. return $this->belongsTo(User::class, 'creator_id');
  80. }
  81. // 审核人
  82. public function reviewer(): BelongsTo
  83. {
  84. return $this->belongsTo(User::class, 'reviewer_id');
  85. }
  86. // 关联订单
  87. public function order(): BelongsTo
  88. {
  89. return $this->belongsTo(Order::class);
  90. }
  91. // 工单类型
  92. public function type(): BelongsTo
  93. {
  94. return $this->BelongsTo(WorkOrderType::class,'work_order_type_id');
  95. }
  96. // 生成问题件类型
  97. public function issueType():BelongsTo
  98. {
  99. return $this->belongsTo(OrderIssueType::class,'order_issue_type_id');
  100. }
  101. public function scopeFilter($query, $filters)
  102. {
  103. return $filters->apply($query);
  104. }
  105. }