diff --git a/resources/js/Pages/Statistic/Components/ModalDeathPatients.vue b/resources/js/Pages/Statistic/Components/ModalDeathPatients.vue index ed1bb1b..a4a69c5 100644 --- a/resources/js/Pages/Statistic/Components/ModalDeathPatients.vue +++ b/resources/js/Pages/Statistic/Components/ModalDeathPatients.vue @@ -7,11 +7,7 @@ import { format, formatDistanceStrict } from 'date-fns' import { ru } from 'date-fns/locale' import { computed, h, ref, watch } from 'vue' import TooltipColumn from '../../Report/Components/DataTableColumns/TooltipColumn.vue' - -const props = defineProps({ - startAt: { required: true }, - endAt: { required: true }, -}) +import {usePage} from "@inertiajs/vue3"; const open = defineModel('open') const loading = ref(true) @@ -19,6 +15,16 @@ const deadPatients = ref([]) const currentPatient = ref(null) const showDrawer = ref(false) +const startAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('startAt') +}) + +const endAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('endAt') +}) + // Получаем уникальные отделения для фильтра const departmentOptions = computed(() => { const departments = new Set() @@ -31,6 +37,7 @@ const departmentOptions = computed(() => { label: dept, value: dept })) + .sort((a, b) => a.label.localeCompare(b.label)) }) // Состояние для выбранных фильтров @@ -92,10 +99,10 @@ const columns = computed(() => [ }, ]) -const fetch = () => { +const fetch = (startAt, endAt) => { loading.value = true axios.get('/api/statistics/reports/dead-patients', { - params: { startAt: props.startAt, endAt: props.endAt } + params: { startAt, endAt } }).then((res) => { deadPatients.value = res.data ?? [] @@ -106,9 +113,9 @@ const fetch = () => { }) } -watch(open, (isOpen) => { - if (isOpen && props.endAt && props.startAt) { - fetch() +watch(open, (open) => { + if (open) { + fetch(startAt.value, endAt.value) } }) diff --git a/resources/js/Pages/Statistic/Components/ModalObservablePatients.vue b/resources/js/Pages/Statistic/Components/ModalObservablePatients.vue index d74fa30..9e8c99d 100644 --- a/resources/js/Pages/Statistic/Components/ModalObservablePatients.vue +++ b/resources/js/Pages/Statistic/Components/ModalObservablePatients.vue @@ -10,8 +10,6 @@ import TooltipColumn from '../../Report/Components/DataTableColumns/TooltipColum const props = defineProps({ departmentId: { required: true }, - startAt: { required: true }, - endAt: { required: true }, }) const open = defineModel('open') @@ -84,10 +82,20 @@ const columns = [ }, ] -const fetch = () => { +const startAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('startAt') +}) + +const endAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('endAt') +}) + +const fetch = (startAt, endAt) => { loading.value = true axios.get('/api/statistics/reports/observable-patients', { - params: { startAt: props.startAt, endAt: props.endAt, departmentId: props.departmentId } + params: { startAt, endAt, departmentId: props.departmentId } }).then((res) => { observablePatients.value = res.data ?? [] }).finally(() => { @@ -95,8 +103,8 @@ const fetch = () => { }) } -watch(() => [props.departmentId, props.endAt, props.startAt], () => { - if (props.departmentId && props.endAt && props.startAt) fetch() +watch([open, () => props.departmentId], ([open, departmentId]) => { + if (open && departmentId) fetch(startAt.value, endAt.value) }, { immediate: true, deep: true }) diff --git a/resources/js/Pages/Statistic/Components/ModalUnwantedEvents.vue b/resources/js/Pages/Statistic/Components/ModalUnwantedEvents.vue index 7aaeb9c..cf4f016 100644 --- a/resources/js/Pages/Statistic/Components/ModalUnwantedEvents.vue +++ b/resources/js/Pages/Statistic/Components/ModalUnwantedEvents.vue @@ -5,31 +5,36 @@ import { } from 'naive-ui' import {useReportStore} from "../../../Stores/report.js"; import { TbAlertCircle, TbPencil, TbTrashX } from 'vue-icons-plus/tb' -import {ref, watch} from "vue"; +import {computed, ref, watch} from "vue"; const props = defineProps({ departmentId: { required: true }, - startAt: { - required: true - }, - endAt: { - required: true - } }) const open = defineModel('open') const loading = ref(true) const unwantedEvents = ref([]) -const fetchUnwantedEvents = () => { + +const startAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('startAt') +}) + +const endAt = computed(() => { + const urlParams = new URLSearchParams(window.location.search) + return urlParams.get('endAt') +}) + +const fetchUnwantedEvents = (startAt, endAt) => { loading.value = true axios.get('/api/statistics/reports/unwanted-events', { params: { departmentId: props.departmentId, - startAt: props.startAt, - endAt: props.endAt + startAt, + endAt } }) .then(res => { @@ -40,9 +45,9 @@ const fetchUnwantedEvents = () => { }) } -watch(() => [props.departmentId, props.endAt, props.startAt], () => { - if (props.departmentId && props.endAt && props.startAt) { - fetchUnwantedEvents() +watch([open, () => props.departmentId], ([open, departmentId]) => { + if (open && departmentId) { + fetchUnwantedEvents(startAt.value, endAt.value) } }, { immediate: true, diff --git a/resources/js/Pages/Statistic/Index.vue b/resources/js/Pages/Statistic/Index.vue index ae0a072..8eae28f 100644 --- a/resources/js/Pages/Statistic/Index.vue +++ b/resources/js/Pages/Statistic/Index.vue @@ -388,9 +388,9 @@ const buildReportHref = (departmentId, startAt, endAt) => { > - - - + + +