diff --git a/app/Admin/Controllers/System/KeywordController.php b/app/Admin/Controllers/System/KeywordController.php index 2bc26a6..76dabb9 100644 --- a/app/Admin/Controllers/System/KeywordController.php +++ b/app/Admin/Controllers/System/KeywordController.php @@ -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')) diff --git a/app/Admin/Controllers/System/WorkflowController.php b/app/Admin/Controllers/System/WorkflowController.php index ff194bf..e2cb4f6 100644 --- a/app/Admin/Controllers/System/WorkflowController.php +++ b/app/Admin/Controllers/System/WorkflowController.php @@ -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; - } } diff --git a/app/Admin/Filters/KeywordFilter.php b/app/Admin/Filters/KeywordFilter.php index f424d6d..0e91ab1 100644 --- a/app/Admin/Filters/KeywordFilter.php +++ b/app/Admin/Filters/KeywordFilter.php @@ -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) diff --git a/app/Admin/Services/WorkFlowService.php b/app/Admin/Services/WorkFlowService.php index c2eda16..33be5cd 100644 --- a/app/Admin/Services/WorkFlowService.php +++ b/app/Admin/Services/WorkFlowService.php @@ -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(), diff --git a/app/Models/Keyword.php b/app/Models/Keyword.php index b867206..8383f43 100644 --- a/app/Models/Keyword.php +++ b/app/Models/Keyword.php @@ -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; diff --git a/database/seeders/EmployeeSeeder.php b/database/seeders/EmployeeSeeder.php index 143d864..2a28260 100644 --- a/database/seeders/EmployeeSeeder.php +++ b/database/seeders/EmployeeSeeder.php @@ -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(); diff --git a/lang/zh_CN/workflow.php b/lang/zh_CN/workflow.php index c0822a5..e60ae40 100644 --- a/lang/zh_CN/workflow.php +++ b/lang/zh_CN/workflow.php @@ -9,4 +9,6 @@ return [ 'config' => '流程配置', 'type' => '审核类型', 'value' => '审核人', + 'job' => '职位', + 'user' => '员工', ];