eightynine/filament-approvals

管理您的filament应用中的审批流程

3.1.3 2024-05-16 05:26 UTC

This package is auto-updated.

Last update: 2024-09-21 17:09:11 UTC


README

Latest Version on Packagist Total Downloads

本包允许您在Laravel Filament应用中实现审批流程。

本包将ringlesoft/laravel-process-approval)的功能引入filament。您可以在Laravel项目中使用ringlesoft/laravel-process-approval的所有功能。它还使用了spatie/laravel-permissions包,因此您可以使用其所有功能。

🛠️ 加入我们的旅程

嗨,我是Eighty Nine。我创建了审批插件来解决我作为开发者遇到的真实问题。您的赞助将使我能够投入更多时间来改进这些工具并帮助更多人。 成为赞助者 并加入我,为开发者社区做出积极贡献。

快速了解包

您的应用程序中的一些流程需要在完成之前由多个人审批。例如,员工提交考勤表,然后主管审批,然后经理审批,最后HR审批,考勤表记录完成。本包是此类流程的解决方案。

审批流程

这是特定流程的事件链。例如,考勤表提交、费用申请、请假申请。这些流程需要多个人检查和审批或拒绝,直到流程完成。

审批流程基于模型,例如ExpenseRequest、LeaveRequest、TimesheetLogSubmission等。

审批步骤

这是流程中的步骤。每个步骤都与一个包含需要审批的用户的角色相关联。当角色中的任何用户审批后,流程将进入下一个步骤。

本包基于角色,这些角色由spatie/laravel-permission包提供。

安装

您可以通过Composer安装此包

composer require eightynine/filament-approvals

用法

  1. 使用以下命令运行迁移
php artisan migrate
  1. 将插件添加到您的面板服务提供者中,如下所示
    ->plugins([
        \EightyNine\Approvals\ApprovalPlugin::make()
    ])
  1. 使您的模型扩展ApprovableModel
namespace App\Models;

use EightyNine\Approvals\Models\ApprovableModel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class LeaveRequest extends ApprovableModel
{
    use HasFactory;

    protected $fillable = ["name"];
}
  1. 创建审批流程
  • 在您的仪表板中,将出现“审批流程菜单”。点击它并开始创建审批流程。名称是您在流程中使用模型的名称。

  • 创建第一个审批后,创建步骤。步骤需要您已在管理员面板中使用spatie/laravel-permission包创建角色。

  • 您可以进入下一步了。

  1. 添加可审批的操作
  • 在您的资源表中添加可审批的操作
$table
    ->actions(
        ...\EightyNine\Approvals\Tables\Actions\ApprovalActions::make(
            // define your action here that will appear once approval is completed
            Action::make("Done"),
            [
                Tables\Actions\EditAction::make(),
                Tables\Actions\ViewAction::make()
            ]
        ),
    )
  • 在您的视图页面或编辑页面中,您可以使用HasApprovalHeaderActions特性包含审批操作,并定义getOnCompletionAction()方法,该方法将返回在完成时显示的操作。如果未实现此方法且使用特性,则将抛出错误。
namespace App\Filament\Resources\LeaveRequestResource\Pages;

use App\Filament\Resources\LeaveRequestResource;
use Filament\Actions;
use Filament\Actions\Action;
use Filament\Resources\Pages\ViewRecord;

class ViewLeaveRequest extends ViewRecord
{
    use  \EightyNine\Approvals\Traits\HasApprovalHeaderActions;

    protected static string $resource = LeaveRequestResource::class;


    /**
     * Get the completion action.
     *
     * @return Filament\Actions\Action
     * @throws Exception
     */
    protected function getOnCompletionAction(): Action
    {
        return Action::make("Done")
            ->color("success")
            // Do not use the visible method, since it is being used internally to show this action if the approval flow has been completed.
            // Using the hidden method add your condition to prevent the action from being performed more than once
            ->hidden(fn(ApprovableModel $record)=> $record->shouldBeHidden())
    }
}
  1. 将ApprovalStatusColumn添加到您的表中以查看审批流程的状态
    return $table
        ->columns([
            TextColumn::make("name"),
            \EightyNine\Approvals\Tables\Columns\ApprovalStatusColumn::make("approvalStatus.status"),
        ])
    ...

就这样,您就可以开始了,赚点钱🤑

要添加更多审批流程(模型),重复步骤3-6

变更日志

请参阅变更日志了解最近更改的更多信息。

贡献

请参阅CONTRIBUTING获取详细信息。

安全漏洞

请查阅我们的安全策略了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。