store-manage/app/Admin/Controllers/Store/EmployeeController.php

77 lines
3.2 KiB
PHP

<?php
namespace App\Admin\Controllers\Store;
use App\Admin\Controllers\AdminController;
use App\Admin\Services\StoreEmployeeService;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
/**
* 店员管理
*/
class EmployeeController extends AdminController
{
protected string $serviceName = StoreEmployeeService::class;
public function list(): Page
{
$user = Admin::user();
$crud = $this->baseCRUD()
->tableLayout('fixed')
->headerToolbar([
$this->createTypeButton('drawer', 'lg')->visible($user->can('admin.store.employees.create')),
...$this->baseHeaderToolBar(),
])
->bulkActions([])
->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([
amisMake()->SelectControl()->name('store_id')->label(__('employee.store_id'))
->source(admin_url('api/stores?_all=1'))
->labelField('title')
->valueField('id')
->columnRatio(3)
->clearable(),
amisMake()->TextControl()->name('employee_search')->label(__('store.employees'))->placeholder('姓名/电话')->columnRatio(3)->clearable(),
]),
]))
->filterDefaultVisible()
->columns([
amisMake()->TableColumn()->name('store.title')->label(__('employee.store_id')),
amisMake()->TableColumn()->name('admin_user.username')->label(__('admin.username')),
amisMake()->TableColumn()->name('name')->label(__('employee.name')),
amisMake()->TableColumn()->name('avatar')->label(__('employee.avatar'))->type('avatar')->src('${avatar}'),
amisMake()->TableColumn()->name('jobs')->label(__('employee.jobs'))->type('each')->items(amisMake()->Tag()->label('${name}')),
// 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()->hiddenOn('${store.master_id == id}')->visible($user->can('admin.store.employees.delete')),
]),
]);
return $this->baseList($crud);
}
public function form($edit): Form
{
return $this->baseForm()->title('')->body([
amisMake()->SelectControl()->name('store_id')->label(__('employee.store_id'))
->source(admin_url('api/stores?_all=1'))
->labelField('title')
->valueField('id')
->searchable()
->required(),
amisMake()->SelectControl()->name('employee_id')->label(__('store.employees'))
->source(admin_url('api/employees?_all=1&store_id=0&enable=1'))
->labelField('name')
->valueField('id')
->multiple()
->joinValues(false)
->extractValue()
->searchable()
->required(),
]);
}
}