Обновлен стартовый экран

Переписаны запросы для статистики, отчетов
Добавлена интеграция отчета сестры
This commit is contained in:
brusnitsyn
2026-05-28 22:10:00 +09:00
parent 90e0d04dfd
commit 739168d427
96 changed files with 6663 additions and 1465 deletions

View File

@@ -1,45 +1,59 @@
<script setup>
import { NFlex, NSpace, NDivider, NButton } from 'naive-ui'
import ReportSelectDate from "../../Components/ReportSelectDate.vue";
import AppUserButton from "./AppUserButton.vue";
import {Link} from "@inertiajs/vue3";
import AppHeaderRole from "./AppHeaderRole.vue";
import {computed, useSlots} from "vue";
import { NFlex, NEl, NIcon, NText, NDivider } from 'naive-ui'
import { TbHeartRateMonitor } from 'vue-icons-plus/tb'
import AppUserButton from "./AppUserButton.vue"
import { Link } from "@inertiajs/vue3"
import { computed, useSlots } from "vue"
import { useThemeVars } from "naive-ui"
const slots = useSlots()
const themeVars = useThemeVars()
const slots = useSlots()
const hasHeaderExtra = computed(() => {
if (!slots.headerExtra) return false
const slotContent = slots.headerExtra()
return slotContent && slotContent.length > 0 && slotContent[0].children.length > 0
})
const hasHeaderSuffix = computed(() => {
if (!slots.headerExtra) return false
const slotContent = slots.headerExtra()
return slotContent && slotContent.length > 0 && slotContent[0].children.length > 0
const content = slots.headerExtra()
return content?.length > 0 && content[0].children?.length > 0
})
</script>
<template>
<div class="grid grid-cols-[auto_1fr_auto] px-4 w-full h-full">
<NSpace align="center">
<NButton :tag="Link" text href="/">
Метрика
</NButton>
<NDivider v-if="hasHeaderExtra" vertical />
<slot name="headerExtra" />
</NSpace>
<div class="grid grid-cols-[auto_1fr_auto] items-center px-4 w-full h-full">
<!-- Лого -->
<NFlex align="center" :size="10" :wrap="false">
<component
:is="Link"
href="/"
style="text-decoration: none; display: flex; align-items: center; gap: 8px;"
>
<NEl
style="
width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0;
display: flex; align-items: center; justify-content: center;
background: color-mix(in srgb, var(--primary-color) 20%, transparent);
"
>
<NIcon size="16" style="color: var(--primary-color);"><TbHeartRateMonitor /></NIcon>
</NEl>
<NText style="font-size: 14px;">
Метрика
</NText>
</component>
<template v-if="hasHeaderExtra">
<NDivider vertical style="height: 18px;" />
<slot name="headerExtra" />
</template>
</NFlex>
<!-- Центр (пусто или слот) -->
<div></div>
<NFlex align="center" justify="end">
<!-- Пользователь -->
<NFlex align="center" justify="end" :wrap="false">
<slot name="headerSuffix" />
<NDivider v-if="hasHeaderSuffix" vertical />
<AppUserButton />
</NFlex>
</div>
</template>
<style scoped>
</style>