[ '' => 0, '宝时处理' => 1, '货主处理' => 2, '承运商处理' => 3, '宝时终审' => 4, '完成' => 5, '待货主完结' => 6, ], 'last_status' => [ '' => 0, '宝时处理' => 1, '货主处理' => 2, '承运商处理' => 3, '宝时终审' => 4, '完成' => 5, '待货主完结' => 6, ], 'tag' => [ '创建' => 0, '完成' => 1, '标记' => 2, ], 'last_handler' => [ '' => 0, '商家' => 1, '承运商' => 2, '宝时' => 3, ], 'logistic_handle_tag' => [ '' => 0, '承运商处理中' => 1, '取消标记' => 2 ], ]; function __construct(array $attributes = []) { foreach (self::$enums as &$enum) { $enum = $enum + array_flip($enum); } parent::__construct($attributes); } public function getLogisticHandleTagAttribute($value) { if (!$value) return ''; return self::$enums['logistic_handle_tag'][$value]; } public function setLogisticHandleTagAttribute($value) { if (!$value) return; if (is_numeric($value)) { $this->attributes['logistic_handle_tag'] = $value; } else { $this->attributes['logistic_handle_tag'] = self::$enums['logistic_handle_tag'][$value]; } } public function getStatusAttribute($value) { if (!$value) return ''; return self::$enums['status'][$value]; } public function setStatusAttribute($value) { if (!$value) return; if (is_numeric($value)) { $this->attributes['status'] = $value; } else { $this->attributes['status'] = self::$enums['status'][$value]; } } public function getTagAttribute($value) { if (is_numeric($value)) return self::$enums['tag'][$value]; if (!$value) return ''; return self::$enums['tag'][$value]; } public function setTagAttribute($value) { if (!$value) return; if (is_numeric($value)) { $this->attributes['tag'] = $value; } else { $this->attributes['tag'] = self::$enums['tag'][$value]; } } public function getLastStatusAttribute($value) { if (!$value) return ''; return self::$enums['last_status'][$value]; } public function setLastStatusAttribute($value) { if (!$value) return; if (is_numeric($value)) { $this->attributes['last_status'] = $value; } else { $this->attributes['last_status'] = self::$enums['last_status'][$value]; } } public function workOrder(): BelongsTo { return $this->belongsTo(WorkOrder::class); } public function issueType(): BelongsTo { return $this->belongsTo(OrderIssueType::class, 'order_issue_type_id'); } // 图片 public function images(): HasMany { return $this->hasMany(WorkOrderImage::class); } public function getPackageImagesAttribute() { return $this->images->where('type', 1); } public function getCommodityImagesAttribute() { return $this->images->where('type', 2); } public function getDealImagesAttribute() { return $this->images->where('type', 3); } public function getRefundImagesAttribute() { return $this->images->where('type', 4); } public function logs(): HasMany { return $this->hasMany(WorkOrderLog::class); } public function commodities(): HasMany { return $this->hasMany(WorkOrderCommodities::class); } public function processLogs(): HasMany { return $this->hasMany(WorkOrderProcessLog::class,'work_order_detail_id','id'); } public function userOwnerGroup(): BelongsTo { return $this->belongsTo(UserOwnerGroup::class); } public function userWorkgroups(): BelongsToMany { return $this->belongsToMany(UserWorkgroup::class); } // 未完成历史标记 public function undoneTag() { if ($this->tag != '完成') { $this->update(['tag' => 2]); } } // 完成标记 public function end() { $this->status = 5; $this->tag = 1; $this->update(); } public function changeStatus($status) { $this->status = $status; $this->update(); } public function changeProcessProgress($process_progress) { $this->update(['process_progress' => $process_progress]); } /** * 工单状态 and 处理状态 * @param $status * @param $process_progress * @param $last_status */ public function change($status, $process_progress, $last_status) { $user = Auth::user(); $this->status = $status; $this->last_status = $last_status; $this->process_progress = $process_progress; $this->last_handler_id = $user['id'] ?? ''; $this->update(); } public function logisticTagHandle() { $this->update(['logistic_handle_tag' => 1]); } public function cancelLogisticTagHandle() { $this->logistic_handle_tag = '取消标记'; $this->update(); } }