diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php
index 1578f9e..248c835 100644
--- a/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php
+++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php
@@ -191,4 +191,12 @@ public function SaveRules()
$s = new CheckItemService;
return $s->SaveRules($item_id, $rules);
}
+
+ public function GetItemRelatedResources()
+ {
+ $item_id = request('item_id');
+ if (!$item_id) return \Yz::echoError1('item_id不能为空');
+ $s = new CheckItemService;
+ return $s->GetItemRelatedResources($item_id);
+ }
}
diff --git a/Laravel/app/Services/Admin/YeWu/CheckItemService.php b/Laravel/app/Services/Admin/YeWu/CheckItemService.php
index a09d6e0..5422bde 100644
--- a/Laravel/app/Services/Admin/YeWu/CheckItemService.php
+++ b/Laravel/app/Services/Admin/YeWu/CheckItemService.php
@@ -301,4 +301,26 @@ public function SaveRules($item_id, $rules)
return \Yz::Return(false, '保存失败:' . $e->getMessage());
}
}
-}
+
+ //获取检查项目关联的排班资源列表
+ public function GetItemRelatedResources($item_id)
+ {
+ $resources = DB::table('s_check_item_device')
+ ->join('s_devices', 's_check_item_device.device_id', '=', 's_devices.id')
+ ->join('s_department_resources_device', 's_devices.id', '=', 's_department_resources_device.device_id')
+ ->join('s_department_resources', 's_department_resources_device.rsourece_id', '=', 's_department_resources.id')
+ ->leftJoin('s_department', 's_department_resources.department_id', '=', 's_department.id')
+ ->select(
+ 's_department_resources.id',
+ 's_department_resources.department_resources_name',
+ 's_department.department_name'
+ )
+ ->where('s_check_item_device.item_id', $item_id)
+ ->where('s_department_resources.is_del', 0)
+ ->where('s_department_resources.department_resources_status', 1)
+ ->distinct()
+ ->get();
+
+ return \Yz::Return(true, '查询成功', $resources);
+ }
+}
\ No newline at end of file
diff --git a/Laravel/app/Services/Admin/YeWu/PlanListService.php b/Laravel/app/Services/Admin/YeWu/PlanListService.php
index a0bb3d3..aa1506f 100644
--- a/Laravel/app/Services/Admin/YeWu/PlanListService.php
+++ b/Laravel/app/Services/Admin/YeWu/PlanListService.php
@@ -960,27 +960,47 @@ public function YuYue($planid, $appointment_type, $mainlistids, $do_type,$is_eme
if ($itemRules->isNotEmpty()) {
$planWeekName = $planInfo->weekname;
$planBeginTime = $planInfo->begin_time;
- $rulePass = false;
+ $planResourcesId = $planInfo->resources_id;
+
+ // 筛选出适用于当前排班资源的规则
+ $applicableRules = [];
foreach ($itemRules as $rule) {
$rv = json_decode($rule->rule_value, true);
- $days = $rv['days'] ?? [];
- $startTime = $rv['start_time'] ?? null;
- $endTime = $rv['end_time'] ?? null;
+ $resourcesId = $rv['resources_id'] ?? null;
+ if (empty($resourcesId)) {
+ // resources_id 为空,规则跳过
+ continue;
+ }
+ if ($resourcesId != $planResourcesId) {
+ // 指定了其他排班资源,跳过
+ continue;
+ }
+ $applicableRules[] = $rv;
+ }
+
+ // 无适用规则 → 不受限 → 通过
+ if (!empty($applicableRules)) {
+ $rulePass = false;
+ foreach ($applicableRules as $rv) {
+ $days = $rv['days'] ?? [];
+ $startTime = $rv['start_time'] ?? null;
+ $endTime = $rv['end_time'] ?? null;
- if (!in_array($planWeekName, $days)) continue;
+ if (!in_array($planWeekName, $days)) continue;
- if ($startTime && $endTime && $planBeginTime) {
- if ($planBeginTime >= $startTime && $planBeginTime < $endTime) {
+ if ($startTime && $endTime && $planBeginTime) {
+ if ($planBeginTime >= $startTime && $planBeginTime < $endTime) {
+ $rulePass = true;
+ break;
+ }
+ } else {
$rulePass = true;
break;
}
- } else {
- $rulePass = true;
- break;
}
- }
- if (!$rulePass) {
- return \Yz::echoError1($item->item_name . ' 当前时段不在可预约时间范围内');
+ if (!$rulePass) {
+ return \Yz::echoError1($item->item_name . ' 当前时段不在可预约时间范围内');
+ }
}
}
@@ -1706,10 +1726,32 @@ private function checkPlanAgainstRules($plan, $allItemRules)
{
$planWeekName = $plan->weekname;
$planBeginTime = $plan->begin_time;
+ $planResourcesId = $plan->resources_id;
foreach ($allItemRules as $itemId => $rules) {
- $itemPass = false;
+ // 筛选出适用于当前号源排班资源的规则
+ $applicableRules = [];
foreach ($rules as $rule) {
+ $resourcesId = $rule['resources_id'] ?? null;
+ if (empty($resourcesId)) {
+ // resources_id 为空,规则跳过,不生效
+ continue;
+ }
+ if ($resourcesId != $planResourcesId) {
+ // 指定了其他排班资源,跳过
+ continue;
+ }
+ $applicableRules[] = $rule;
+ }
+
+ // 无适用规则 → 该排班资源不受限 → 直接通过
+ if (empty($applicableRules)) {
+ continue;
+ }
+
+ // 有适用规则 → 按原逻辑匹配
+ $itemPass = false;
+ foreach ($applicableRules as $rule) {
$days = $rule['days'] ?? [];
$startTime = $rule['start_time'] ?? null;
$endTime = $rule['end_time'] ?? null;
diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php
index 48e5627..0349b91 100644
--- a/Laravel/routes/api.php
+++ b/Laravel/routes/api.php
@@ -132,6 +132,7 @@
Route::post('admin/GetHuChiList','App\Http\Controllers\API\Admin\YeWu\CheckItemController@GetHuChiList');//获取某个项目已经设置的互斥列表
Route::post('admin/GetCheckItemRules','App\Http\Controllers\API\Admin\YeWu\CheckItemController@GetRules');//获取检查项目规则
Route::post('admin/SaveCheckItemRules','App\Http\Controllers\API\Admin\YeWu\CheckItemController@SaveRules');//保存检查项目规则
+ Route::post('admin/GetItemRelatedResources','App\Http\Controllers\API\Admin\YeWu\CheckItemController@GetItemRelatedResources');//获取检查项目关联的排班资源
Route::post('admin/InpatientWardGetList','App\Http\Controllers\API\Admin\YeWu\InpatientWardController@GetList');//获取病区列表
Route::post('admin/InpatientWardSave','App\Http\Controllers\API\Admin\YeWu\InpatientWardController@Save');//保存病区
Route::post('admin/InpatientWardDel','App\Http\Controllers\API\Admin\YeWu\InpatientWardController@Del');//删除病区
diff --git a/YiJi-admin/src/api/api.js b/YiJi-admin/src/api/api.js
index 3b386e0..84e4718 100644
--- a/YiJi-admin/src/api/api.js
+++ b/YiJi-admin/src/api/api.js
@@ -406,6 +406,9 @@ export const GetCheckItemRules = (data = {}) => {
export const SaveCheckItemRules = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SaveCheckItemRules', data: data })
}
+export const GetItemRelatedResources = (data = {}) => {
+ return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetItemRelatedResources', data: data })
+}
//重置密码
export const resetPwd = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/resetPwd', data: data })
diff --git a/YiJi-admin/src/views/YeWu/CheckItemConfig.vue b/YiJi-admin/src/views/YeWu/CheckItemConfig.vue
index 0377708..05611dc 100644
--- a/YiJi-admin/src/views/YeWu/CheckItemConfig.vue
+++ b/YiJi-admin/src/views/YeWu/CheckItemConfig.vue
@@ -269,6 +269,13 @@