From 2987d9c3149be6fdd5fd189ea08c57c6b34f4aad Mon Sep 17 00:00:00 2001 From: sa0ChunLuyu Date: Tue, 4 Aug 2026 15:06:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=91=E5=AE=A4=E5=8F=AF=E4=BB=A5=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E6=8E=A7=E5=88=B6=E5=85=B3=E8=81=94=E8=AF=8A=E5=AE=A4?= =?UTF-8?q?=E7=9A=84=20=E9=A2=84=E7=BA=A6=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/YeWu/SubDepartmentController.php | 31 +++++++ .../Admin/YeWu/SubDepartmentService.php | 79 ++++++++++++++++ Laravel/routes/api.php | 2 + YiJi-admin/src/api/api.js | 8 ++ YiJi-admin/src/router/index.js | 7 ++ .../src/views/YeWu/SubDepartmentConfig.vue | 91 +++++++++++++++++++ 6 files changed, 218 insertions(+) create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/SubDepartmentController.php create mode 100644 Laravel/app/Services/Admin/YeWu/SubDepartmentService.php create mode 100644 YiJi-admin/src/views/YeWu/SubDepartmentConfig.vue 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 @@ + + + + +