main
panliang 2024-04-28 20:07:46 +08:00
parent dfb2b08cfa
commit 308eab0e60
7 changed files with 76 additions and 38 deletions

View File

@ -33,7 +33,7 @@ class KeywordController extends AdminController
])
->bulkActions([])
->filter($this->baseFilter()->body([
amis()->TextControl('name', __('admin.keyword'))
amis()->TextControl('search', __('admin.keyword'))
->size('md')
->placeholder(__('admin.keywords.search_name')),
amis()->TextControl('parent_name', __('admin.keywords.parent_keyword'))

View File

@ -95,20 +95,64 @@ class WorkflowController extends AdminController
public function form($edit): Form
{
return $this->baseForm()->title('')->body([
return $this->baseForm()->title('')->className('h-screen')->body([
amisMake()->TextControl()->name('key')->label(__('workflow.key'))->required(),
amisMake()->TextControl()->name('name')->label(__('workflow.name'))->required(),
amisMake()->TableControl()->name('config')->label(__('workflow.config'))->showIndex()->addable()->removable()->needConfirm(false)->draggable()->columns([
amisMake()->TableControl()->name('config')->label(__('workflow.config'))->showIndex()->addable()->removable()->needConfirm(false)->columns([
amisMake()->SelectControl()->options(CheckType::options())->name('type')->label(__('workflow.type')),
// amisMake()->PickerControl()
// ->source(admin_url('api/keywords/tree-list?parent_key=job'))
// ->valueField('key')
// ->labelField('name')
// ->multiple(false)
// ->size('lg')
// ->pickerSchema(
// amis()->CRUDTable()->mode('table')->loadDataOnce(true)->syncLocation(false)->draggable(false)->columns([
// amis()->TableColumn()->name('key')->label(__('keyword.key')),
// amis()->TableColumn()->name('name')->label(__('keyword.name')),
// ])
// )
// ->name('job')
// ->label(__('workflow.job')),
// amis()->PickerControl()
// ->source(admin_url('api/employees?enable=1'))
// ->valueField('id')
// ->labelField('name')
// ->multiple(false)
// ->size('lg')
// ->pickerSchema(
// amis()->CRUDTable()->mode('table')->syncLocation(false)->draggable(false)
// ->filter($this->baseFilter()->body([
// amisMake()->TextControl()->name('name')->label(__('employee.name'))->size('md')->clearable(),
// amisMake()->TextControl()->name('phone')->label(__('employee.phone'))->size('md')->clearable(),
// ]))
// ->columns([
// amis()->TableColumn()->name('id')->label(__('employee.id')),
// amis()->TableColumn()->name('name')->label(__('employee.name')),
// amis()->TableColumn()->name('phone')->label(__('employee.phone')),
// ])
// )
// ->name('user')
// ->label(__('workflow.user')),
// amis()->PickerControl()
// ->source(admin_url('api/workflow/value-options?type=${type}'))
// ->multiple(false)
// ->pickerSchema(amisMake()->ListRenderer()->set('mode', 'list')->listItem(amisMake()->ListItem()->title('${label}')->body('${phone}')))
// ->pickerSchema(amisMake()->CRUD2Table()->mode('list')->listItem(amisMake()->ListItem()->title('${label}')->body('${phone}')))
// ->size('lg')
// ->pickerSchema(
// amis()->CRUD2Table()->mode('table')->syncLocation(false)->draggable(false)
// ->filter($this->baseFilter()->body([
// amisMake()->TextControl()->name('search')->label('关键字')->size('md')->clearable(),
// ]))
// ->columns([
// amis()->TableColumn()->name('value'),
// amis()->TableColumn()->name('label'),
// ])
// )
// ->name('value')
// ->label(__('workflow.value')),
amisMake()->SelectControl()
->source(admin_url('api/workflow/value-options?type=${type}'))
->searchable()
->name('value')
->label(__('workflow.value')),
]),
@ -129,11 +173,14 @@ class WorkflowController extends AdminController
public function getValueOptions(Request $request)
{
$type = $request->input('type');
$options = match($type) {
CheckType::Job->value => $this->getJobOptions(),
CheckType::User->value => $this->getEmployeeOptions(),
default => []
};
$options = [];
if ($type == CheckType::Job->value) {
$options = Keyword::where('parent_key', 'job')->select(['key as value', 'name as label'])->get();
}
if ($type == CheckType::User->value) {
$options = Employee::enable()->select(['id as value', 'name as label'])->get();
}
return $this->response()->success($options);
}
@ -255,22 +302,4 @@ class WorkflowController extends AdminController
return $this->response()->success($list);
}
public function getJobOptions()
{
if (! $this->jobOptions) {
$this->jobOptions = Keyword::where('parent_key', 'job')->sort()->select(['key as value', 'name as label'])->get();
}
return $this->jobOptions;
}
public function getEmployeeOptions()
{
if (! $this->employeeOptions) {
$this->employeeOptions = Employee::enable()->select(['id as value', 'name as label', 'phone'])->get();
}
return $this->employeeOptions;
}
}

View File

@ -7,13 +7,14 @@ use EloquentFilter\ModelFilter;
class KeywordFilter extends ModelFilter
{
/**
* 关键字
*/
public function search($name)
{
return $this->where('name', 'like', '%'.$name.'%')->orWhere('key', 'like', '%'.$name.'%');
}
public function name($name)
{
return $this->where('name', 'like', '%'.$name.'%')
->orWhere('key', 'like', '%'.$name.'%');
return $this->where('name', 'like', '%'.$name.'%');
}
public function parentName($parent_name)

View File

@ -278,7 +278,7 @@ class WorkFlowService extends BaseService
/**
* 是否有权限审核
* 1. 申请人 == 审核人
* 2. 申请人的职位 高于 审核人职位
* 2. 申请人的 门店+职位 = 审核 门店+职位
*/
public function authCheck(Employee $user, WorkflowLog $log)
{
@ -303,6 +303,12 @@ class WorkFlowService extends BaseService
$data['config'] = null;
break;
}
if (!isset($item['value'])) {
$item['value'] = match($item['type']) {
CheckType::Job->value => $item['job'],
CheckType::User->value => $item['user'],
};
}
$item['title'] = match ($item['type']) {
CheckType::Job->value => CheckType::Job->text(),
CheckType::User->value => CheckType::User->text(),

View File

@ -3,7 +3,7 @@
namespace App\Models;
use App\Admin\Components;
use App\Filters\KeywordFilter;
use App\Admin\Filters\KeywordFilter;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;

View File

@ -18,9 +18,9 @@ class EmployeeSeeder extends Seeder
*/
public function run(): void
{
// DB::table('employee_jobs')->truncate();
// Employee::where('admin_user_id', '!=', 1)->delete();
// (new EmployeeFactory)->count(100)->create();
DB::table('employee_jobs')->truncate();
Employee::where('admin_user_id', '!=', 1)->delete();
(new EmployeeFactory)->count(100)->create();
// Store::truncate();
// Store::factory()->count(10)->create();

View File

@ -9,4 +9,6 @@ return [
'config' => '流程配置',
'type' => '审核类型',
'value' => '审核人',
'job' => '职位',
'user' => '员工',
];