门店管理和员工管理相关权限

main
Jing Li 2024-03-26 11:55:13 +08:00
parent 49d45db03c
commit 495824eb8d
4 changed files with 75 additions and 13 deletions

View File

@ -6,6 +6,7 @@ use App\Admin\Services\EmployeeService;
use App\Enums\EmployeeStatus; use App\Enums\EmployeeStatus;
use App\Models\Employee; use App\Models\Employee;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Controllers\AdminController;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
@ -19,9 +20,10 @@ class EmployeeController extends AdminController
$crud = $this->baseCRUD() $crud = $this->baseCRUD()
->tableLayout('fixed') ->tableLayout('fixed')
->headerToolbar([ ->headerToolbar([
$this->createButton(true), $this->createButton(true)->visible(Admin::user()->can('admin.hr.employees.create')),
...$this->baseHeaderToolBar(), ...$this->baseHeaderToolBar(),
]) ])
->bulkActions([])
->filter($this->baseFilter()->body([ ->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([ amis()->GroupControl()->mode('horizontal')->body([
amisMake()->TextControl()->name('name')->label(__('employee.name'))->columnRatio(3)->clearable(), amisMake()->TextControl()->name('name')->label(__('employee.name'))->columnRatio(3)->clearable(),
@ -36,15 +38,16 @@ class EmployeeController extends AdminController
amisMake()->TableColumn()->name('employee_status_text')->label(__('employee.employee_status'))->set('type', 'tag')->set('color', '${employee_status_color}'), amisMake()->TableColumn()->name('employee_status_text')->label(__('employee.employee_status'))->set('type', 'tag')->set('color', '${employee_status_color}'),
amisMake()->TableColumn()->name('created_at')->label(__('employee.created_at')), amisMake()->TableColumn()->name('created_at')->label(__('employee.created_at')),
$this->rowActions([ $this->rowActions([
$this->rowShowButton(), $this->rowShowButton()->visible(Admin::user()->can('admin.hr.employees.view')),
$this->rowEditButton(true), $this->rowEditButton(true)->visible(Admin::user()->can('admin.hr.employees.update')),
$this->rowDeleteButton(), $this->rowDeleteButton()->visible(Admin::user()->can('admin.hr.employees.delete')),
amisMake()->AjaxAction() amisMake()->AjaxAction()
->label(__('employee.leave')) ->label(__('employee.leave'))
->level('link') ->level('link')
->icon('fa fa-sign-out') ->icon('fa fa-sign-out')
->confirmText(__('employee.leave_confirm')) ->confirmText(__('employee.leave_confirm'))
->api('post:'.admin_url('hr/employees/${id}/leave')), ->api('post:'.admin_url('hr/employees/${id}/leave'))
->visible(Admin::user()->can('admin.hr.employees.leave')),
]), ]),
]); ]);

View File

@ -3,6 +3,7 @@
namespace App\Admin\Controllers\Store; namespace App\Admin\Controllers\Store;
use App\Admin\Services\StoreService; use App\Admin\Services\StoreService;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Controllers\AdminController;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
@ -16,9 +17,10 @@ class StoreController extends AdminController
$crud = $this->baseCRUD() $crud = $this->baseCRUD()
->tableLayout('fixed') ->tableLayout('fixed')
->headerToolbar([ ->headerToolbar([
$this->createButton(), $this->createButton()->visible(Admin::user()->can('admin.store.stores.create')),
...$this->baseHeaderToolBar(), ...$this->baseHeaderToolBar(),
]) ])
->bulkActions([])
->filter($this->baseFilter()->body([ ->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([ amis()->GroupControl()->mode('horizontal')->body([
amisMake()->TextControl()->name('title')->label(__('store.title'))->columnRatio(3)->clearable(), amisMake()->TextControl()->name('title')->label(__('store.title'))->columnRatio(3)->clearable(),
@ -57,9 +59,9 @@ class StoreController extends AdminController
amisMake()->TableColumn()->name('business_status_text')->label(__('store.business_status'))->set('type', 'tag')->set('color', '${business_status_color}'), amisMake()->TableColumn()->name('business_status_text')->label(__('store.business_status'))->set('type', 'tag')->set('color', '${business_status_color}'),
amisMake()->TableColumn()->name('created_at')->label(__('store.created_at')), amisMake()->TableColumn()->name('created_at')->label(__('store.created_at')),
$this->rowActions([ $this->rowActions([
$this->rowShowButton(), $this->rowShowButton()->visible(Admin::user()->can('admin.store.stores.view')),
$this->rowEditButton(), $this->rowEditButton()->visible(Admin::user()->can('admin.store.stores.update')),
$this->rowDeleteButton(), $this->rowDeleteButton()->visible(Admin::user()->can('admin.store.stores.delete')),
]), ]),
]); ]);

View File

@ -1,5 +1,7 @@
<?php <?php
use App\Admin\Controllers\Hr\EmployeeController;
use App\Admin\Controllers\Store\StoreController;
use App\Admin\Controllers\System\AdminMenuController; use App\Admin\Controllers\System\AdminMenuController;
use App\Admin\Controllers\System\AdminPermissionController; use App\Admin\Controllers\System\AdminPermissionController;
use App\Admin\Controllers\System\AdminRoleController; use App\Admin\Controllers\System\AdminRoleController;
@ -23,15 +25,29 @@ Route::group([
| 门店管理 | 门店管理
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
$router->resource('store/stores', \App\Admin\Controllers\Store\StoreController::class); $router->group([
'prefix' => 'store',
'as' => 'store.',
], function (Router $router) {
// 门店管理
$router->resource('stores', StoreController::class);
});
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| 人事管理 | 人事管理
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
$router->resource('hr/employees', \App\Admin\Controllers\Hr\EmployeeController::class); $router->group([
$router->post('hr/employees/{id}/leave', [\App\Admin\Controllers\Hr\EmployeeController::class, 'leave']); 'prefix' => 'hr',
'as' => 'hr.',
], function (Router $router) {
// 人事管理
$router->resource('employees', EmployeeController::class);
$router->post('employees/{id}/leave', [EmployeeController::class, 'leave'])->name('employees.leave');
});
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@ -28,6 +28,47 @@ class AdminPermissionSeeder extends Seeder
'children' => [], 'children' => [],
], ],
/*
|--------------------------------------------------------------------------
| 门店管理
|--------------------------------------------------------------------------
*/
'store' => [
'name' => '门店管理',
'icon' => 'material-symbols:store-rounded',
'uri' => '/store',
'children' => [
'stores' => [
'name' => '门店管理',
'icon' => 'material-symbols:store-rounded',
'uri' => '/store/stores',
'resource' => true,
],
],
],
/*
|--------------------------------------------------------------------------
| 人事管理
|--------------------------------------------------------------------------
*/
'hr' => [
'name' => '人事管理',
'icon' => 'flowbite:user-settings-solid',
'uri' => '/hr',
'children' => [
'employees' => [
'name' => '员工管理',
'icon' => 'mdi:user-tie',
'uri' => '/hr/employees',
'resource' => true,
'children' => [
'leave' => '离职',
],
],
],
],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| 系统管理 | 系统管理
@ -36,7 +77,7 @@ class AdminPermissionSeeder extends Seeder
'system' => [ 'system' => [
'name' => '系统管理', 'name' => '系统管理',
'icon' => 'material-symbols:settings-outline', 'icon' => 'material-symbols:settings-outline',
'uri' => '', 'uri' => '/system',
'children' => [ 'children' => [
'admin_users' => [ 'admin_users' => [
'name' => '账号管理', 'name' => '账号管理',