generated from liutk/owl-admin-base
admin examination.add
parent
33df89c6be
commit
5159d0008d
|
|
@ -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([
|
||||
|
|
|
|||
|
|
@ -84,4 +84,8 @@ class QuestionController extends AdminController
|
|||
]), 'span' => 3],
|
||||
]));
|
||||
}
|
||||
public function shareList()
|
||||
{
|
||||
return $this->response()->success($this->service->list());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
|
||||
//----------------------------------
|
||||
// 驾驶舱数据统计
|
||||
|
|
|
|||
Loading…
Reference in New Issue