admin 添加和修改 改为 drawer

main
panliang 2024-03-28 16:38:58 +08:00
parent 5359f742e4
commit 418f8489d5
14 changed files with 81 additions and 48 deletions

View File

@ -16,11 +16,12 @@
- `php artisan storage:link`
- `vim .env`
```
APP_URL=http://local.lottery.host
APP_URL=http://store-manage.hmily.club
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lottery
DB_USERNAME=root
DB_PASSWORD=123456
```
- `php artisan migrate --seed`
- `php artisan migrate --seed`
- 目录 `./bootstrap/cache``./storage` 需要写入权限

View File

@ -8,12 +8,14 @@ use Illuminate\Validation\ValidationException;
use Slowlyo\OwlAdmin\Controllers\AdminController as Controller;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Throwable;
use App\Traits\CustomActionTrait;
/**
* @property \App\Admin\Services\BaseService $service
*/
abstract class AdminController extends Controller
{
use CustomActionTrait;
public function update(Request $request)
{
$input = $request->all();

View File

@ -16,8 +16,8 @@ class BaseKeywordController extends AdminController
->loadDataOnce(true)
->footerToolbar([])
->headerToolbar([
$this->createButton(true),
...$this->baseHeaderToolBar(),
$this->createTypeButton('drawer', 'xl'),
amis('reload')->align('right'),
])
->columns([
amisMake()->TableColumn()->name('id')->label(__('keyword.id')),
@ -26,7 +26,7 @@ class BaseKeywordController extends AdminController
amisMake()->TableColumn()->name('value')->label(__('keyword.value')),
amisMake()->TableColumn()->name('sort')->label(__('keyword.sort')),
amisMake()->Operation()->label(__('admin.actions'))->buttons([
$this->rowEditButton(true),
$this->rowEditTypeButton('drawer', 'xl'),
$this->rowDeleteButton(),
]),
]);

View File

@ -20,7 +20,7 @@ class EmployeeController extends AdminController
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createButton(true)->visible(Admin::user()->can('admin.hr.employees.create')),
$this->createTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.hr.employees.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
@ -41,7 +41,7 @@ class EmployeeController extends AdminController
amisMake()->TableColumn()->name('remarks')->label(__('employee.remarks')),
$this->rowActions([
$this->rowShowButton()->visible(Admin::user()->can('admin.hr.employees.view')),
$this->rowEditButton(true)->visible(Admin::user()->can('admin.hr.employees.update')),
$this->rowEditTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.hr.employees.update')),
$this->rowDeleteButton()->visible(Admin::user()->can('admin.hr.employees.delete')),
amisMake()->AjaxAction()
->label(__('employee.leave'))

View File

@ -7,6 +7,7 @@ use App\Admin\Services\EmployeeRestService;
use App\Enums\EmployeeStatus;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
/**
* 休息管理
@ -20,7 +21,7 @@ class RestController extends AdminController
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createButton(true, 'lg'),
$this->createTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.hr.rests.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
@ -35,7 +36,7 @@ class RestController extends AdminController
// amisMake()->TableColumn()->name('employee.phone')->label(__('employee.phone')),
amisMake()->TableColumn()->name('date')->label(__('employee_sign.date')),
$this->rowActions([
$this->rowDeleteButton(),
$this->rowDeleteButton()->visible(Admin::user()->can('admin.hr.rests.delete')),
]),
]);

View File

@ -7,6 +7,7 @@ use App\Admin\Services\EmployeeSignService;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
use App\Enums\{SignType, SignStatus};
use Slowlyo\OwlAdmin\Admin;
/**
* 考勤打卡
@ -17,7 +18,6 @@ class SignController extends AdminController
public function list(): Page
{
// $this->service->signResult();
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
@ -48,7 +48,7 @@ class SignController extends AdminController
->source(SignStatus::source()),
amisMake()->TableColumn()->name('remarks')->label(__('employee_sign.remarks')),
$this->rowActions([
$this->rowShowButton(),
$this->rowShowButton()->visible(Admin::user()->can('admin.hr.signs.view')),
]),
]);

View File

@ -20,7 +20,7 @@ class DeviceController extends AdminController
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createButton(true)->visible(Admin::user()->can('admin.store.devices.create')),
$this->createTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.store.devices.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
@ -43,7 +43,7 @@ class DeviceController extends AdminController
amisMake()->TableColumn()->name('remarks')->label(__('store_device.remarks')),
amisMake()->TableColumn()->name('created_at')->label(__('store_device.created_at')),
$this->rowActions([
$this->rowEditButton(true)->visible(Admin::user()->can('admin.store.devices.update')),
$this->rowEditTypeButton('drawer', 'xl')->visible(Admin::user()->can('admin.store.devices.update')),
$this->rowDeleteButton()->visible(Admin::user()->can('admin.store.devices.delete')),
]),
]);

View File

@ -17,10 +17,11 @@ class EmployeeController extends AdminController
public function list(): Page
{
$user = Admin::user();
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createButton(true)->visible(Admin::user()->can('admin.store.employees.create')),
$this->createTypeButton('drawer', 'xl')->visible($user->can('admin.store.employees.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
@ -39,10 +40,10 @@ class EmployeeController extends AdminController
amisMake()->TableColumn()->name('id')->label(__('employee.id')),
amisMake()->TableColumn()->name('store.title')->label(__('employee.store_id')),
amisMake()->TableColumn()->name('name')->label(__('employee.name')),
amisMake()->TableColumn()->name('store.master_id')->label(__('store.master_id'))->set('type', 'tpl')->tpl('${store.master_id == id ? "店长" : "--"}'),
// amisMake()->TableColumn()->name('store.master_id')->label(__('store.master_id'))->set('type', 'tpl')->tpl('${store.master_id == id ? "店长" : "--"}'),
amisMake()->TableColumn()->name('phone')->label(__('employee.phone')),
$this->rowActions([
$this->rowDeleteButton()->visible(Admin::user()->can('admin.store.employees.delete')),
$this->rowDeleteButton()->visible($user->can('admin.store.employees.delete')),
]),
]);

View File

@ -20,10 +20,11 @@ class StoreController extends AdminController
public function list(): Page
{
$user = Admin::user();
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createButton()->visible(Admin::user()->can('admin.store.stores.create')),
$this->createTypeButton('drawer', 'xl')->visible($user->can('admin.store.stores.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
@ -66,9 +67,9 @@ class StoreController extends AdminController
amisMake()->TableColumn()->name('business_status')->label(__('store.business_status'))->type('switch')->trueValue(BusinessStatus::Open)->falseValue(BusinessStatus::Close),
amisMake()->TableColumn()->name('created_at')->label(__('store.created_at')),
$this->rowActions([
$this->rowShowButton()->visible(Admin::user()->can('admin.store.stores.view')),
$this->rowEditButton()->visible(Admin::user()->can('admin.store.stores.update')),
$this->rowDeleteButton()->visible(Admin::user()->can('admin.store.stores.delete')),
$this->rowShowButton()->visible($user->can('admin.store.stores.view')),
$this->rowEditTypeButton('drawer', 'xl')->visible($user->can('admin.store.stores.update')),
$this->rowDeleteButton()->visible($user->can('admin.store.stores.delete')),
]),
]);
@ -80,7 +81,7 @@ class StoreController extends AdminController
return $this->baseForm()->title('')->body([
amisMake()->TextControl()->name('title')->label(__('store.title'))->required(),
amisMake()->SelectControl()->name('master_id')->label(__('store.master_id'))
->source(admin_url('api/employees?_all=1&employee_status='.EmployeeStatus::Online->value))
->source($edit ? admin_url('api/employees?_all=1&employee_status='.EmployeeStatus::Online->value) : admin_url('api/employees?_all=1&store_id=0&employee_status='.EmployeeStatus::Online->value))
->labelField('name')
->valueField('id')
->searchable()

View File

@ -17,6 +17,44 @@ class StoreService extends BaseService
protected string $modelFilterName = StoreFilter::class;
public function store($data): bool
{
$data = $this->resloveData($data);
$validate = $this->validate($data);
if ($validate !== true) {
$this->setError($validate);
return false;
}
$model = $this->modelName::create($data);
// 绑定店长
// Employee::where('id', $data['master_id'])->update(['store_id' => $model->id]);
return true;
}
public function update($primaryKey, $data): bool
{
$model = $this->query()->whereKey($primaryKey)->firstOrFail();
$data = $this->resloveData($data, $model);
$validate = $this->validate($data, $model);
if ($validate !== true) {
$this->setError($validate);
return false;
}
// 还原以前的店长
// if (isset($data['master_id']) && $model->master_id != $data['master_id']) {
// Employee::where('id', $model->master_id)->update(['store_id' => 0]);
// }
return $model->update($data);
}
public function resloveData($data, $model = null)
{
if (isset($data['location'])) {
@ -25,17 +63,6 @@ class StoreService extends BaseService
$data['address'] = data_get($data['location'], 'address');
}
// 绑定店长
if (isset($data['master_id'])) {
// 还原以前的店长
if ($model && $model->master_id != $data['master_id']) {
Employee::where('id', $model->master_id)->update(['store_id' => 0]);
}
if ($model->master_id != $data['master_id']) {
Employee::where('id', $data['master_id'])->update(['store_id' => $model->id]);
}
}
return $data;
}

View File

@ -39,7 +39,7 @@ Route::group([
// 门店管理
$router->resource('stores', StoreController::class);
// 店员管理
$router->resource('employees', StoreEmployeeController::class);
$router->resource('employees', StoreEmployeeController::class)->only(['index', 'store', 'destroy']);
// 彩票机管理
$router->resource('devices', DeviceController::class);
// 门店分类

View File

@ -39,7 +39,7 @@ class StoreFactory extends Factory
{
return $this->afterMaking(function (Store $model) {
})->afterCreating(function (Store $model) {
Employee::where('id', $model->master_id)->update(['store_id' => $model->id]);
// Employee::where('id', $model->master_id)->update(['store_id' => $model->id]);
});
}
}

View File

@ -50,25 +50,25 @@ class AdminPermissionSeeder extends Seeder
'name' => '店员管理',
'icon' => '',
'uri' => '/store/employees',
'resource' => true,
'resource' => ['list', 'create', 'delete'],
],
'categories' => [
'name' => '门店分类',
'icon' => '',
'uri' => '/store/categories?parent_key=store_category',
'resource' => false,
'resource' => true,
],
'levels' => [
'name' => '门店等级',
'icon' => '',
'uri' => '/store/levels?parent_key=store_levels',
'resource' => false,
'resource' => true,
],
'business' => [
'name' => '经营类别',
'icon' => '',
'uri' => '/store/business?parent_key=store_business',
'resource' => false,
'resource' => true,
],
'devices' => [
'name' => '彩票机管理',
@ -80,7 +80,7 @@ class AdminPermissionSeeder extends Seeder
'name' => '彩种类型',
'icon' => '',
'uri' => '/store/lottery-types?parent_key=lottery_type',
'resource' => false,
'resource' => true,
],
],
],
@ -108,7 +108,7 @@ class AdminPermissionSeeder extends Seeder
'name' => '职位管理',
'icon' => '',
'uri' => '/hr/jobs?parent_key=job',
'resource' => false,
'resource' => true,
],
'rests' => [
'name' => '休息管理',

View File

@ -16,15 +16,15 @@ class EmployeeSeeder extends Seeder
*/
public function run(): void
{
// DB::table('employee_jobs')->truncate();
// Employee::truncate();
// (new EmployeeFactory)->count(100)->create(['admin_user_id' => 1]);
DB::table('employee_jobs')->truncate();
Employee::truncate();
(new EmployeeFactory)->count(100)->create(['admin_user_id' => 1]);
// Store::truncate();
// Store::factory()->count(10)->create();
Store::truncate();
Store::factory()->count(10)->create();
EmployeeSign::truncate();
EmployeeSignLog::truncate();
EmployeeSignLog::factory()->count(100)->create();
// EmployeeSign::truncate();
// EmployeeSignLog::truncate();
// EmployeeSignLog::factory()->count(100)->create();
}
}