admin examination.add

main
panliang 2024-04-27 15:11:13 +08:00
parent 33df89c6be
commit 5159d0008d
4 changed files with 49 additions and 21 deletions

View File

@ -89,21 +89,38 @@ class ExaminationController extends AdminController
{ {
return $this->baseForm()->title('')->body([ return $this->baseForm()->title('')->body([
amisMake()->TextControl()->name('name')->label(__('train_examination.name'))->required(), amisMake()->TextControl()->name('name')->label(__('train_examination.name'))->required(),
amisMake()->PickerControl()
->source(admin_url('api/train/questions'))
->labelField('title')
->valueField('id')
->multiple(true)
->autoFill([
'questions' => '${items}'
])
->size('lg')
->pickerSchema(amisMake()->CRUDTable()->mode('table')->syncLocation()->filter($this->baseFilter()->body([
amisMake()->TextControl()->name('search')->label(__('train_question.title'))->size('md')->clearable(),
amisMake()->SelectControl()->options(QuestionCate::options())->name('cate')->label(__('train_question.cate'))->size('md')->clearable(),
]))->columns([
amisMake()->TableColumn()->name('id')->label(__('train_question.id')),
amisMake()->TableColumn()->name('title')->label(__('train_question.title')),
amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->set('type', 'mapping')->set('map', QuestionCate::options()),
amisMake()->TableColumn()->name('created_at')->label(__('train_book.created_at')),
]))
->name('question_ids')
->label(__('train_examination.question_id'))
->required(),
amisMake()->TableControl() amisMake()->TableControl()
->addable()
->editable()
->removable() ->removable()
->draggable()
->showIndex() ->showIndex()
->columnsTogglable(false)
->needConfirm(false) ->needConfirm(false)
->columns([ ->columns([
amisMake()->SelectControl() amisMake()->TableColumn()->name('title')->label(__('train_question.title'))->type('static'),
->options(Question::get()) // amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('select')->options(QuestionCate::options())->static(true),
->labelField('title') // amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('mapping')->map(QuestionCate::options()),
->valueField('id') amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('static')->value('${cate == '.QuestionCate::Radio->value.' ? "'.QuestionCate::Radio->text().'" : "'.QuestionCate::Checkbox->text().'"}'),
->searchable()
->name('question_id')
->label(__('train_examination.question_id'))
->required(),
amisMake()->NumberControl()->min(0)->step(1)->precision(0)->name('score')->label(__('train_examination.score'))->required(), amisMake()->NumberControl()->min(0)->step(1)->precision(0)->name('score')->label(__('train_examination.score'))->required(),
]) ])
->name('questions') ->name('questions')
@ -125,7 +142,8 @@ class ExaminationController extends AdminController
['label' => __('train_examination.min_mark'), 'content' => '${min_mark}'], ['label' => __('train_examination.min_mark'), 'content' => '${min_mark}'],
['label' => __('train_examination.avg_mark'), 'content' => '${avg_mark}', 'span' => 3], ['label' => __('train_examination.avg_mark'), 'content' => '${avg_mark}', 'span' => 3],
]); ]);
$question = amisMake()->Table()->source('${questions}')->showIndex()->columns([ $question = amisMake()->Table()->source('${questions}')->columns([
amisMake()->TableColumn()->name('sort')->label('序号'),
amisMake()->TableColumn()->name('title')->label(__('train_question.title')), amisMake()->TableColumn()->name('title')->label(__('train_question.title')),
amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->set('type', 'mapping')->map(QuestionCate::options()), amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->set('type', 'mapping')->map(QuestionCate::options()),
amisMake()->TableColumn()->name('options')->label(__('train_question.options'))->set('type', 'list')->source('${options}')->listItem([ amisMake()->TableColumn()->name('options')->label(__('train_question.options'))->set('type', 'list')->source('${options}')->listItem([

View File

@ -84,4 +84,8 @@ class QuestionController extends AdminController
]), 'span' => 3], ]), 'span' => 3],
])); ]));
} }
public function shareList()
{
return $this->response()->success($this->service->list());
}
} }

View File

@ -41,20 +41,25 @@ class ExaminationService extends BaseService
$totalQuestions = 0; $totalQuestions = 0;
$totalScore = 0; $totalScore = 0;
$questions = []; $questions = [];
$ids = array_column($data['questions'], 'question_id'); $ids = array_column($data['questions'], 'id');
$questionList = Question::whereIn('id', $ids)->get(); $questionList = Question::whereIn('id', $ids)->get();
foreach ($data['questions'] as $question) { foreach ($data['questions'] as $index => $question) {
$model = $questionList->firstWhere('id', $question['question_id']); $model = $questionList->firstWhere('id', $question['id']);
if ($model) { if ($model) {
// title: 题目, cate: 类型, options: 选项, score: 分值 // sort: 序号, id: Question.id, title: 题目, cate: 类型, options: 选项, score: 分值
$question['title'] = $model->title; $item = [
$question['cate'] = $model->cate; 'sort' => $index + 1,
$question['cate_name'] = $model->cate->text(); 'id' => $model->id,
$question['options'] = $model->options; 'title' => $model->title,
array_push($questions, $question); 'cate' => $model->cate,
'cate_name' => $model->cate->text(),
'options' => $model->options,
'score' => data_get($question, 'score', 1),
];
array_push($questions, $item);
$totalQuestions++; $totalQuestions++;
$totalScore+=$question['score']; $totalScore+=$item['score'];
} }
} }
$data['questions'] = $questions; $data['questions'] = $questions;

View File

@ -244,6 +244,7 @@ Route::group([
$router->get('workflow/logs', [WorkflowController::class, 'logs']); $router->get('workflow/logs', [WorkflowController::class, 'logs']);
$router->get('tasks', [TaskController::class, 'shareList']); $router->get('tasks', [TaskController::class, 'shareList']);
$router->get('train/questions', [\App\Admin\Controllers\Train\QuestionController::class, 'shareList']);
//---------------------------------- //----------------------------------
// 驾驶舱数据统计 // 驾驶舱数据统计