baseCRUD() ->tableLayout('fixed') ->headerToolbar([ $this->createTypeButton('drawer', 'lg')->visible($user->can('admin.store.employees.create')), ...$this->baseHeaderToolBar(), $this->exportAction(true)->visible($user->can('admin.store.employees.export')), ]) ->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('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'))->copyable(), 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'))->copyable(), $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(), ]); } protected function exportFileName() { return '店员记录'; } protected function exportMap($row) { $jobs = data_get($row, 'jobs', []); return [ __('employee.store_id') => data_get($row, 'store.title'), __('admin.username') => data_get($row, 'admin_user.username'), __('employee.name') => data_get($row, 'name'), __('employee.jobs') => implode(',', array_column($jobs, 'name')), __('employee.phone') => data_get($row, 'phone'), __('store.master_id') => data_get($row, 'store.master_id') == data_get($row, 'id') ? '是' : '否', ]; } }