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([
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()
->addable()
->editable()
->removable()
->draggable()
->showIndex()
->columnsTogglable(false)
->needConfirm(false)
->columns([
amisMake()->SelectControl()
->options(Question::get())
->labelField('title')
->valueField('id')
->searchable()
->name('question_id')
->label(__('train_examination.question_id'))
->required(),
amisMake()->TableColumn()->name('title')->label(__('train_question.title'))->type('static'),
// amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('select')->options(QuestionCate::options())->static(true),
// amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('mapping')->map(QuestionCate::options()),
amisMake()->TableColumn()->name('cate')->label(__('train_question.cate'))->type('static')->value('${cate == '.QuestionCate::Radio->value.' ? "'.QuestionCate::Radio->text().'" : "'.QuestionCate::Checkbox->text().'"}'),
amisMake()->NumberControl()->min(0)->step(1)->precision(0)->name('score')->label(__('train_examination.score'))->required(),
])
->name('questions')
@ -125,7 +142,8 @@ class ExaminationController extends AdminController
['label' => __('train_examination.min_mark'), 'content' => '${min_mark}'],
['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('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([

View File

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

View File

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

View File

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