exam_user add status: avoid

This commit is contained in:
xiaomlove
2021-06-10 02:16:08 +08:00
parent f3417e9653
commit a0b56222b2
7 changed files with 38 additions and 1 deletions
+3
View File
@@ -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);
}, },
+16
View File
@@ -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!');
}
} }
+2
View File
@@ -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;
+8
View File
@@ -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);
+1 -1
View File
@@ -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'];
+1
View File
@@ -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']);