From 8db7f19ddadd4b738a0fbb1372ca32eecf31ba9f Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Wed, 8 Jul 2026 15:09:01 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=81=D1=87=D0=B5=D1=82=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BB=D0=B3=D0=B0=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D1=8C=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=B4=D0=B0=D1=82=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B8=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=3D=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D1=83=20?= =?UTF-8?q?=D0=B3=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/MetricCalculators/PlanCalculator.php | 4 ++++ .../js/Pages/Statistic/Components/OutcomeColumn.vue | 9 +++++++-- resources/js/Utils/numbers.js | 1 - 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Services/MetricCalculators/PlanCalculator.php b/app/Services/MetricCalculators/PlanCalculator.php index d108b73..f0bf6dc 100644 --- a/app/Services/MetricCalculators/PlanCalculator.php +++ b/app/Services/MetricCalculators/PlanCalculator.php @@ -92,6 +92,9 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf // чтобы % выполнения учитывал непогашенный долг, а не только текущий период $debtAtPeriodStart = max(0, $cumulativePlanAtStart - $actualToRangeStart); + // Индикатор вывода плана с учетом долга (только если дата начала = началу года) + $isCalculateDebt = $startDate->equalTo($startYear); + // Процент выполнения плана с начала года на дату конца периода $cumulativePercent = $cumulativePlan > 0 ? round($actualYearToDate * 100 / $cumulativePlan) @@ -106,6 +109,7 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf 'debt_from_year' => $debtFromYearStart, 'actual_year_to_date' => $actualYearToDate, 'cumulative_percent' => $cumulativePercent, + 'is_calculate_debt' => $isCalculateDebt, ]; } diff --git a/resources/js/Pages/Statistic/Components/OutcomeColumn.vue b/resources/js/Pages/Statistic/Components/OutcomeColumn.vue index 743bb38..f9bdb67 100644 --- a/resources/js/Pages/Statistic/Components/OutcomeColumn.vue +++ b/resources/js/Pages/Statistic/Components/OutcomeColumn.vue @@ -23,18 +23,23 @@ const props = defineProps({ debt_from_year: 0, actual_year_to_date: 0, cumulative_percent: 0, + is_calculate_debt: false, }) } }) // План за период + непогашенный долг, накопленный до начала периода const planWithDebt = computed(() => { - return Number(props.plan?.period_plan ?? 0) + Number(props.plan?.debt_at_period_start ?? 0) + const periodPlan = Number(props.plan?.period_plan ?? 0) + const periodDebt = Number(props.plan?.debt_from_year ?? 0) + + return props.plan?.is_calculate_debt ? periodPlan + periodDebt : periodPlan }) -// % выполнения плана за период с учётом долга (иначе долг никак не влияет на оценку) +// % выполнения плана за период с учётом долга const periodPercent = computed(() => { if (!planWithDebt.value) return 0 + return Math.round((Number(props.value) * 100) / planWithDebt.value) }) diff --git a/resources/js/Utils/numbers.js b/resources/js/Utils/numbers.js index daf7728..59e40a1 100644 --- a/resources/js/Utils/numbers.js +++ b/resources/js/Utils/numbers.js @@ -6,7 +6,6 @@ export const percentColor = (number) => { } export const percentType = (number) => { - if (!Number(number)) return if (number >= 90) return 'success' // Хорошо if (number >= 80) return 'warning' // Плохо return 'error' // Ужасно