generated from liutk/owl-admin-base
admin 添加和修改 改为 drawer
parent
5359f742e4
commit
418f8489d5
|
|
@ -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` 需要写入权限
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
]),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -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'))
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
]),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
]),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
]),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
]),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
// 门店分类
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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' => '休息管理',
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue