diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/SubDepartmentController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/SubDepartmentController.php new file mode 100644 index 0000000..b768309 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/SubDepartmentController.php @@ -0,0 +1,31 @@ +get('userid'); + $service = new SubDepartmentService(); + return $service->GetList($userid); + } + + /** + * 保存子科室配置(状态、预约属性) + */ + public function Save(Request $request) + { + $userid = $request->get('userid'); + $info = request('info'); + $service = new SubDepartmentService(); + return $service->Save($info, $userid); + } +} diff --git a/Laravel/app/Services/Admin/YeWu/SubDepartmentService.php b/Laravel/app/Services/Admin/YeWu/SubDepartmentService.php new file mode 100644 index 0000000..19342cc --- /dev/null +++ b/Laravel/app/Services/Admin/YeWu/SubDepartmentService.php @@ -0,0 +1,79 @@ +where('id', $userid)->first(); + if (!$user || !$user->department_id) { + return \Yz::Return(false, '当前用户未绑定科室', []); + } + $department_id = $user->department_id; + + $list = DB::table('s_department') + ->where('pid', $department_id) + ->where('is_del', 0) + ->select('id', 'department_name', 'department_number', 'department_status', 'appointment_enabled') + ->orderBy('id', 'asc') + ->get(); + + return \Yz::Return(true, '查询成功', ['list' => $list]); + } + + /** + * 保存子科室配置(仅状态和预约属性) + * @param array $info 包含 id, department_status, appointment_enabled + * @param int $userid 当前登录用户ID(用于越权校验) + * @return \Illuminate\Http\JsonResponse + */ + public function Save($info, $userid) + { + $id = $info['id'] ?? 0; + if (!$id) { + return \Yz::Return(false, '缺少子科室ID', []); + } + + $user = DB::table('users')->where('id', $userid)->first(); + if (!$user || !$user->department_id) { + return \Yz::Return(false, '当前用户未绑定科室', []); + } + $department_id = $user->department_id; + + // 越权校验:该子科室的 pid 必须是当前用户的科室 + $subDept = DB::table('s_department') + ->where('id', $id) + ->where('is_del', 0) + ->first(); + if (!$subDept) { + return \Yz::Return(false, '子科室不存在', []); + } + if ($subDept->pid != $department_id) { + return \Yz::Return(false, '无权修改该科室', []); + } + + $updateData = []; + if (isset($info['department_status'])) { + $updateData['department_status'] = $info['department_status']; + } + if (isset($info['appointment_enabled'])) { + $updateData['appointment_enabled'] = $info['appointment_enabled']; + } + if (empty($updateData)) { + return \Yz::Return(false, '无更新内容', []); + } + + $c = DB::table('s_department')->where('id', $id)->update($updateData); + if ($c === false) { + return \Yz::Return(false, '保存失败', []); + } + return \Yz::Return(true, '保存成功', []); + } +} diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php index 169c598..4c5cb98 100644 --- a/Laravel/routes/api.php +++ b/Laravel/routes/api.php @@ -92,6 +92,8 @@ Route::post('admin/SaveDepartmentChildren','App\Http\Controllers\API\Admin\YeWu\DepartmentController@SaveChildren');//保存科室关联诊室关系 Route::post('admin/GetHasScheduleTopDepartments','App\Http\Controllers\API\Admin\YeWu\DepartmentController@GetHasScheduleTopDepartments');//获取有排班资源的科室列表 Route::post('admin/DeptSyncDepartment','App\Http\Controllers\API\Admin\YeWu\DepartmentController@SyncDepartment');//从HIS同步科室 + Route::post('admin/GetSubDepartmentList','App\Http\Controllers\API\Admin\YeWu\SubDepartmentController@GetList');//获取当前用户科室的子科室列表 + Route::post('admin/SaveSubDepartment','App\Http\Controllers\API\Admin\YeWu\SubDepartmentController@Save');//保存子科室配置(状态、预约属性) Route::post('admin/SaveDepartmentResource','App\Http\Controllers\API\Admin\YeWu\DepartmentResourceController@Save');//保存科室资源信息 Route::post('admin/DepartmentResourceGetList','App\Http\Controllers\API\Admin\YeWu\DepartmentResourceController@GetList');//获取科室资源list Route::post('admin/DepartmentResourceGetEnableList','App\Http\Controllers\API\Admin\YeWu\DepartmentResourceController@GetEnableList');//获取可用科室资源 diff --git a/YiJi-admin/src/api/api.js b/YiJi-admin/src/api/api.js index c7ff5bf..42b2c1c 100644 --- a/YiJi-admin/src/api/api.js +++ b/YiJi-admin/src/api/api.js @@ -475,6 +475,14 @@ export const GetChildrenDepartments = (data = {}) => { export const CancelYuYue = (data = {}) => { return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CancelYuYue', data: data }) } +//获取当前用户科室的子科室列表 +export const GetSubDepartmentList = (data = {}) => { + return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetSubDepartmentList', data: data }) +} +//保存子科室配置(状态、预约属性) +export const SaveSubDepartment = (data = {}) => { + return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SaveSubDepartment', data: data }) +} //设置互斥 export const SetHuChi = (data = {}) => { diff --git a/YiJi-admin/src/router/index.js b/YiJi-admin/src/router/index.js index 236f2a8..14f022f 100644 --- a/YiJi-admin/src/router/index.js +++ b/YiJi-admin/src/router/index.js @@ -180,6 +180,13 @@ const router = createRouter({ meta: { title: '排班项目管理' } + },{ + path: '/yewu/subDepartmentConfig', + name: 'YewuSubDepartmentConfig', + component: () => import('../views/YeWu/SubDepartmentConfig.vue'), + meta: { + title: '子科室配置' + } },{ path: '/appointmentmngr/timeperiodmngr', name: 'AppointmentMngrTimePeriodMngr', diff --git a/YiJi-admin/src/views/YeWu/SubDepartmentConfig.vue b/YiJi-admin/src/views/YeWu/SubDepartmentConfig.vue new file mode 100644 index 0000000..31d0398 --- /dev/null +++ b/YiJi-admin/src/views/YeWu/SubDepartmentConfig.vue @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + +