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([]) ->bulkActions([])
->filter($this->baseFilter()->body([ ->filter($this->baseFilter()->body([
amis()->TextControl('name', __('admin.keyword')) amis()->TextControl('search', __('admin.keyword'))
->size('md') ->size('md')
->placeholder(__('admin.keywords.search_name')), ->placeholder(__('admin.keywords.search_name')),
amis()->TextControl('parent_name', __('admin.keywords.parent_keyword')) amis()->TextControl('parent_name', __('admin.keywords.parent_keyword'))

View File

@ -95,20 +95,64 @@ class WorkflowController extends AdminController
public function form($edit): Form 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('key')->label(__('workflow.key'))->required(),
amisMake()->TextControl()->name('name')->label(__('workflow.name'))->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()->SelectControl()->options(CheckType::options())->name('type')->label(__('workflow.type')),
// amisMake()->PickerControl() // 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}')) // ->source(admin_url('api/workflow/value-options?type=${type}'))
// ->multiple(false) // ->multiple(false)
// ->pickerSchema(amisMake()->ListRenderer()->set('mode', 'list')->listItem(amisMake()->ListItem()->title('${label}')->body('${phone}'))) // ->size('lg')
// ->pickerSchema(amisMake()->CRUD2Table()->mode('list')->listItem(amisMake()->ListItem()->title('${label}')->body('${phone}'))) // ->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') // ->name('value')
// ->label(__('workflow.value')), // ->label(__('workflow.value')),
amisMake()->SelectControl() amisMake()->SelectControl()
->source(admin_url('api/workflow/value-options?type=${type}')) ->source(admin_url('api/workflow/value-options?type=${type}'))
->searchable()
->name('value') ->name('value')
->label(__('workflow.value')), ->label(__('workflow.value')),
]), ]),
@ -129,11 +173,14 @@ class WorkflowController extends AdminController
public function getValueOptions(Request $request) public function getValueOptions(Request $request)
{ {
$type = $request->input('type'); $type = $request->input('type');
$options = match($type) { $options = [];
CheckType::Job->value => $this->getJobOptions(), if ($type == CheckType::Job->value) {
CheckType::User->value => $this->getEmployeeOptions(), $options = Keyword::where('parent_key', 'job')->select(['key as value', 'name as label'])->get();
default => [] }
}; if ($type == CheckType::User->value) {
$options = Employee::enable()->select(['id as value', 'name as label'])->get();
}
return $this->response()->success($options); return $this->response()->success($options);
} }
@ -255,22 +302,4 @@ class WorkflowController extends AdminController
return $this->response()->success($list); 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 class KeywordFilter extends ModelFilter
{ {
/** public function search($name)
* 关键字 {
*/ return $this->where('name', 'like', '%'.$name.'%')->orWhere('key', 'like', '%'.$name.'%');
}
public function name($name) public function name($name)
{ {
return $this->where('name', 'like', '%'.$name.'%') return $this->where('name', 'like', '%'.$name.'%');
->orWhere('key', 'like', '%'.$name.'%');
} }
public function parentName($parent_name) public function parentName($parent_name)

View File

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

View File

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

View File

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

View File

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