Merge branch 'long-0507'
This commit is contained in:
@@ -27,6 +27,8 @@ class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchIn
|
||||
{
|
||||
use HasDataScopeFilter;
|
||||
|
||||
private const SCENE_DIAGNOSIS_EDIT = 'diagnosis_edit';
|
||||
|
||||
public function setSearch(): array
|
||||
{
|
||||
return [
|
||||
@@ -101,9 +103,11 @@ class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchIn
|
||||
$this->applyExpressCompanyFilter($query);
|
||||
$this->applyExpressKeywordFilter($query);
|
||||
$this->applySupplyModeFilter($query);
|
||||
$this->applyCreatorOrOwnPrescriptionVisibility($query);
|
||||
$this->applyDataScopeForPrescriptionOrder($query);
|
||||
// 业绩看板侧栏等:不展示履约已取消(4),与看板合计业绩 NULL 安全口径一致
|
||||
if (!$this->shouldBypassListVisibilityForDiagnosisEdit()) {
|
||||
$this->applyCreatorOrOwnPrescriptionVisibility($query);
|
||||
$this->applyDataScopeForPrescriptionOrder($query);
|
||||
}
|
||||
// 业绩看板侧栏等:不展示履约已取消(4),与 stats 业绩统计口径一致
|
||||
if ((int) ($this->params['exclude_fulfillment_cancelled'] ?? 0) === 1) {
|
||||
YejiStatsLogic::applyPrescriptionOrderNotCancelledForPerformanceQuery($query, '');
|
||||
}
|
||||
@@ -269,6 +273,29 @@ class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchIn
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 仅诊单编辑页内的患者订单查询可跳过列表页权限,但必须显式带场景且保留患者/诊单范围收敛。
|
||||
*/
|
||||
private function shouldBypassListVisibilityForDiagnosisEdit(): bool
|
||||
{
|
||||
$scene = trim((string) ($this->params['scene'] ?? ''));
|
||||
if ($scene !== self::SCENE_DIAGNOSIS_EDIT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$patientId = (int) ($this->params['patient_id'] ?? 0);
|
||||
$contextDiagnosisId = (int) ($this->params['context_diagnosis_id'] ?? 0);
|
||||
if ($patientId <= 0 || $contextDiagnosisId <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$diagnosisPatientId = (int) Diagnosis::where('id', $contextDiagnosisId)
|
||||
->whereNull('delete_time')
|
||||
->value('patient_id');
|
||||
|
||||
return $diagnosisPatientId > 0 && $diagnosisPatientId === $patientId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 医助:仅「诊单医助=本人」的订单计业绩
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user