diff --git a/app/Http/Controllers/Api/DepartmentController.php b/app/Http/Controllers/Api/DepartmentController.php
index 7674319..5d52c0d 100644
--- a/app/Http/Controllers/Api/DepartmentController.php
+++ b/app/Http/Controllers/Api/DepartmentController.php
@@ -4,7 +4,9 @@ namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Department;
+use App\Models\MisLpuDoctor;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
class DepartmentController extends Controller
{
@@ -17,4 +19,35 @@ class DepartmentController extends Controller
return response()->json($departments);
}
+
+ public function getDepartmentUsers(Department $department, Request $request)
+ {
+ $onlyUserDepartment = filter_var($request->query('onlyUserDepartment', false), FILTER_VALIDATE_BOOLEAN);
+ $type = $request->query('type', 'duty');
+
+ if ($onlyUserDepartment) {
+ $departmentId = $department->rf_mis_department_id;
+ } else {
+ $user = Auth::user();
+ $departmentId = $user->department->rf_mis_department_id;
+ }
+
+
+ $users = MisLpuDoctor::select(['LPUDoctorID', 'FAM_V', 'IM_V', 'OT_V'])
+ ->whereHas('prvds', function ($query) use ($departmentId, $type) {
+ $query->when($type === 'nurse', function ($query) {
+ $query->whereIn('rf_PRVDID', [1567, 1629]);
+ })
+ ->where('rf_DepartmentID', $departmentId)
+ ->whereDate('D_END', '2222-01-01 00:00:00.000000');
+ })
+ ->active()
+ ->whereNotIn('LPUDoctorID', [0, 1])
+ ->orderBy('FAM_V')
+ ->get();
+
+ return response()->json([
+ ...$users,
+ ])->setStatusCode(200);
+ }
}
diff --git a/app/Http/Controllers/Api/ReportController.php b/app/Http/Controllers/Api/ReportController.php
index f162cce..930ea96 100644
--- a/app/Http/Controllers/Api/ReportController.php
+++ b/app/Http/Controllers/Api/ReportController.php
@@ -482,27 +482,6 @@ class ReportController extends Controller
return response()->json()->setStatusCode(200);
}
- public function getDepartmentUsers(Request $request)
- {
- $user = Auth::user();
-
- $departmentId = $user->department->rf_mis_department_id;
-
- $users = MisLpuDoctor::select(['LPUDoctorID', 'FAM_V', 'IM_V', 'OT_V'])
- ->whereHas('prvds', function ($query) use ($departmentId) {
- $query->where('rf_DepartmentID', $departmentId)
- ->whereDate('D_END', '2222-01-01 00:00:00.000000');
- })
- ->active()
- ->whereNotIn('LPUDoctorID', [0, 1])
- ->orderBy('FAM_V')
- ->get();
-
- return response()->json([
- ...$users,
- ])->setStatusCode(200);
- }
-
/**
* Получить все отчеты в промежутке дат (для агрегации данных)
*/
diff --git a/resources/js/Pages/Index.vue b/resources/js/Pages/Index.vue
index 86aa4a2..bd13ed9 100644
--- a/resources/js/Pages/Index.vue
+++ b/resources/js/Pages/Index.vue
@@ -70,11 +70,12 @@ const openReport = (path) => {
}
const openNurseReport = () => {
- if (authStore.isSeniorStaff) {
- showSelectNurseUserModal.value = true
- } else {
- router.visit('/nurse/report')
- }
+ // if (authStore.isSeniorStaff) {
+ // showSelectNurseUserModal.value = true
+ // } else {
+ // router.visit('/nurse/report')
+ // }
+ showSelectNurseUserModal.value = true
}
const cardColor = computed(() => themeVars.value.cardColor)
@@ -174,7 +175,7 @@ const dividerColor = computed(() => themeVars.value.dividerColor)
-
+
rawUsers.value.map(itm => ({
label: `${itm.FAM_V} ${itm.IM_V} ${itm.OT_V}`,
@@ -41,22 +47,29 @@ const departments = computed(() => rawDepartments.value.map(itm => ({
value: itm.department_id
})))
-const fetchUsers = () => {
- if (usersLoaded.value) return
- axios.get('/api/mis/department-users')
+const fetchUsers = (departmentId) => {
+ usersLoaded.value = []
+ loadingUserFetch.value = true
+ const type = props.onlyUserDepartment ? 'nurse' : 'duty'
+ axios.get(`/api/app/departments/${departmentId}/users?onlyUserDepartment=${props.onlyUserDepartment}&type=${type}`)
.then((res) => {
rawUsers.value = res.data
usersLoaded.value = true
- })
+ }).finally((e) => {
+ loadingUserFetch.value = false
+ })
}
const fetchDepartments = () => {
if (departmentsLoaded.value) return
+ loadingDepartmentFetch.value = true
axios.get('/api/app/departments')
.then((res) => {
rawDepartments.value = res.data
departmentsLoaded.value = true
- })
+ }).finally((e) => {
+ loadingDepartmentFetch.value = false
+ })
}
const checkReportExists = async (userId, departmentId) => {
@@ -130,7 +143,7 @@ watch(() => show.value, (opened) => {
reportStore.reportInfo.userId = null
reportStore.reportInfo.departmentId = null
- fetchUsers()
+ // fetchUsers()
fetchDepartments()
}, {immediate: false})
@@ -158,6 +171,11 @@ const onAfterLeave = () => {
reportExists.value = false
existingReportId.value = null
}
+
+const onChangeDepartment = (departmentId) => {
+ usersLoaded.value = false
+ fetchUsers(departmentId)
+}
@@ -168,15 +186,19 @@ const onAfterLeave = () => {
@before-leave="onAfterLeave"
>
-
-
+
-
-
+
diff --git a/routes/api.php b/routes/api.php
index 0a01210..cd9a913 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -47,7 +47,6 @@ Route::middleware(['auth:sanctum'])->group(function () {
Route::get('/patients/search', [ReportController::class, 'searchMisPatients']);
Route::get('/mkb/search', [ReportController::class, 'searchMkb']);
Route::get('/services/search', [ReportController::class, 'searchMedicalServices']);
- Route::get('/department-users', [ReportController::class, 'getDepartmentUsers']);
Route::prefix('operations')->group(function () {
Route::get('/', [\App\Http\Controllers\Api\OperationController::class, 'operations']);
@@ -91,6 +90,9 @@ Route::middleware(['auth:sanctum'])->group(function () {
});
Route::prefix('departments')->group(function () {
Route::get('/', [DepartmentController::class, 'index']);
+ Route::prefix('{department}')->group(function () {
+ Route::get('/users', [DepartmentController::class, 'getDepartmentUsers']);
+ });
});
});