mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-30 17:17:22 +08:00
exam_user add status: avoid
This commit is contained in:
Vendored
+3
@@ -81,6 +81,9 @@ const api = {
|
|||||||
deleteExamUser: (id) => {
|
deleteExamUser: (id) => {
|
||||||
return axios.delete('exam-users/' + id);
|
return axios.delete('exam-users/' + id);
|
||||||
},
|
},
|
||||||
|
avoidExamUser: (id) => {
|
||||||
|
return axios.put('exam-users-avoid', {id});
|
||||||
|
},
|
||||||
storeExamUser: (params) => {
|
storeExamUser: (params) => {
|
||||||
return axios.post('exam-users', params);
|
return axios.post('exam-users', params);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -116,6 +116,15 @@
|
|||||||
<el-button type="danger" size="small">Remove</el-button>
|
<el-button type="danger" size="small">Remove</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
|
<el-popconfirm
|
||||||
|
v-if="examInfo.status === 0"
|
||||||
|
title="Confirm Avoid ?"
|
||||||
|
@confirm="handleAvoidExam(examInfo.id)"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<el-button type="info" size="small">Avoid</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -190,6 +199,12 @@ export default {
|
|||||||
await fetchPageData()
|
await fetchPageData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleAvoidExam = async (id) => {
|
||||||
|
let res = await api.avoidExamUser(id)
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
await fetchPageData()
|
||||||
|
}
|
||||||
|
|
||||||
const handleAssignExam = async () => {
|
const handleAssignExam = async () => {
|
||||||
assignExam.value.open(id)
|
assignExam.value.open(id)
|
||||||
}
|
}
|
||||||
@@ -213,6 +228,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
handleRemoveExam,
|
handleRemoveExam,
|
||||||
|
handleAvoidExam,
|
||||||
handleAssignExam,
|
handleAssignExam,
|
||||||
handleEnableUser,
|
handleEnableUser,
|
||||||
handleViewInviteInfo,
|
handleViewInviteInfo,
|
||||||
|
|||||||
@@ -92,4 +92,11 @@ class ExamUserController extends Controller
|
|||||||
return $this->success($result, 'Remove user exam success!');
|
return $this->success($result, 'Remove user exam success!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function avoid(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate(['id' => 'required']);
|
||||||
|
$result = $this->repository->avoidExamUser($request->id);
|
||||||
|
return $this->success($result, 'Avoid user exam success!');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,12 @@ class ExamUser extends NexusModel
|
|||||||
|
|
||||||
const STATUS_NORMAL = 0;
|
const STATUS_NORMAL = 0;
|
||||||
const STATUS_FINISHED = 1;
|
const STATUS_FINISHED = 1;
|
||||||
|
const STATUS_AVOIDED = -1;
|
||||||
|
|
||||||
public static $status = [
|
public static $status = [
|
||||||
self::STATUS_NORMAL => ['text' => 'Normal'],
|
self::STATUS_NORMAL => ['text' => 'Normal'],
|
||||||
self::STATUS_FINISHED => ['text' => 'Finished'],
|
self::STATUS_FINISHED => ['text' => 'Finished'],
|
||||||
|
self::STATUS_AVOIDED => ['text' => 'Avoided'],
|
||||||
];
|
];
|
||||||
|
|
||||||
const IS_DONE_YES = 1;
|
const IS_DONE_YES = 1;
|
||||||
|
|||||||
@@ -355,6 +355,7 @@ class ExamRepository extends BaseRepository
|
|||||||
}
|
}
|
||||||
$examUsers = $query->get();
|
$examUsers = $query->get();
|
||||||
if ($examUsers->isEmpty()) {
|
if ($examUsers->isEmpty()) {
|
||||||
|
do_log("$logPrefix, no examUser, query: " . last_query());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if ($examUsers->count() > 1) {
|
if ($examUsers->count() > 1) {
|
||||||
@@ -454,6 +455,13 @@ class ExamRepository extends BaseRepository
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function avoidExamUser(int $examUserId)
|
||||||
|
{
|
||||||
|
$examUser = ExamUser::query()->findOrFail($examUserId);
|
||||||
|
$result = $examUser->update(['status' => ExamUser::STATUS_AVOIDED]);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
public function cronjonAssign()
|
public function cronjonAssign()
|
||||||
{
|
{
|
||||||
$exams = $this->listValid(null, Exam::DISCOVERED_YES);
|
$exams = $this->listValid(null, Exam::DISCOVERED_YES);
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class UserRepository extends BaseRepository
|
|||||||
$baseInfo = $userResource->response()->getData(true)['data'];
|
$baseInfo = $userResource->response()->getData(true)['data'];
|
||||||
|
|
||||||
$examRep = new ExamRepository();
|
$examRep = new ExamRepository();
|
||||||
$examProgress = $examRep->getUserExamProgress($id, ExamUser::STATUS_NORMAL, ['exam']);
|
$examProgress = $examRep->getUserExamProgress($id, null, ['exam']);
|
||||||
if ($examProgress) {
|
if ($examProgress) {
|
||||||
$examResource = new ExamUserResource($examProgress);
|
$examResource = new ExamUserResource($examProgress);
|
||||||
$examInfo = $examResource->response()->getData(true)['data'];
|
$examInfo = $examResource->response()->getData(true)['data'];
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ Route::group(['middleware' => ['auth:sanctum', 'permission', 'locale']], functio
|
|||||||
Route::get('exam-indexes', [\App\Http\Controllers\ExamController::class, 'indexes']);
|
Route::get('exam-indexes', [\App\Http\Controllers\ExamController::class, 'indexes']);
|
||||||
|
|
||||||
Route::resource('exam-users', \App\Http\Controllers\ExamUserController::class);
|
Route::resource('exam-users', \App\Http\Controllers\ExamUserController::class);
|
||||||
|
Route::put('exam-users-avoid', [\App\Http\Controllers\ExamUserController::class, 'avoid']);
|
||||||
|
|
||||||
Route::get('dashboard/system-info', [\App\Http\Controllers\DashboardController::class, 'systemInfo']);
|
Route::get('dashboard/system-info', [\App\Http\Controllers\DashboardController::class, 'systemInfo']);
|
||||||
Route::get('dashboard/stat-data', [\App\Http\Controllers\DashboardController::class, 'statData']);
|
Route::get('dashboard/stat-data', [\App\Http\Controllers\DashboardController::class, 'statData']);
|
||||||
|
|||||||
Reference in New Issue
Block a user