eightynine / filament-approvals
管理您的filament应用中的审批流程
Requires
- php: ^8.1
- filament/filament: ^3.0
- illuminate/contracts: ^10.0|^11.0
- ringlesoft/laravel-process-approval: ^1.0
- spatie/laravel-package-tools: ^1.15.0
- spatie/laravel-permission: ^6.1
Requires (Dev)
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
This package is auto-updated.
Last update: 2024-09-21 17:09:11 UTC
README
本包允许您在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
用法
- 使用以下命令运行迁移
php artisan migrate
- 将插件添加到您的面板服务提供者中,如下所示
->plugins([ \EightyNine\Approvals\ApprovalPlugin::make() ])
- 使您的模型扩展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"]; }
- 创建审批流程
-
在您的仪表板中,将出现“审批流程菜单”。点击它并开始创建审批流程。名称是您在流程中使用模型的名称。
-
创建第一个审批后,创建步骤。步骤需要您已在管理员面板中使用spatie/laravel-permission包创建角色。
-
您可以进入下一步了。
- 添加可审批的操作
- 在您的资源表中添加可审批的操作
$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()) } }
- 将ApprovalStatusColumn添加到您的表中以查看审批流程的状态
return $table ->columns([ TextColumn::make("name"), \EightyNine\Approvals\Tables\Columns\ApprovalStatusColumn::make("approvalStatus.status"), ]) ...
就这样,您就可以开始了,赚点钱🤑
要添加更多审批流程(模型),重复步骤3-6
变更日志
请参阅变更日志了解最近更改的更多信息。
贡献
请参阅CONTRIBUTING获取详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
致谢
- Eighty Nine
- Tony Partridge
- Ringlesoft为基本审批模型逻辑提供支持
- 所有贡献者
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。