'array', 'form_data' => 'array', 'attachments' => 'array', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * 审批状态常量 */ const STATUS_DRAFT = 'draft'; // 草稿 const STATUS_PENDING = 'pending'; // 审批中 const STATUS_APPROVED = 'approved'; // 已通过 const STATUS_REJECTED = 'rejected'; // 已拒绝 const STATUS_CANCELLED = 'cancelled'; // 已撤销 /** * 关联流程 */ public function flow() { return $this->belongsTo(ApprovalFlow::class, 'flow_id'); } /** * 关联申请人 */ public function applicant() { return $this->belongsTo(User::class, 'applicant_id'); } /** * 关联审批记录 */ public function records() { return $this->hasMany(ApprovalRecord::class, 'order_id')->orderBy('created_at'); } /** * 判断是否可以编辑 */ public function canEdit(): bool { return $this->status === self::STATUS_DRAFT; } /** * 判断是否可以审批 */ public function canApprove(): bool { return $this->status === self::STATUS_PENDING; } /** * 判断是否已结束 */ public function isEnded(): bool { return in_array($this->status, [ self::STATUS_APPROVED, self::STATUS_REJECTED, self::STATUS_CANCELLED, ]); } }