* блокировка изменения отчета для врача

* вывод данных из отчетов для ролей адм и зав
* поправил ширину стобцов ввода
* добавил календарь на страницу статистики
* переделал календарь у заведующего на странице отчета
* добавил и привязал метрики в статистику
This commit is contained in:
brusnitsyn
2026-02-03 17:03:37 +09:00
parent 2805e5e4bc
commit 9ee33bc517
20 changed files with 889 additions and 159 deletions

View File

@@ -1,12 +1,22 @@
<script setup>
import {NDataTable} from 'naive-ui'
import {NDataTable, NFlex, NText, NDatePicker} from 'naive-ui'
import AppLayout from "../../Layouts/AppLayout.vue";
import {ref} from "vue";
import {h, ref} from "vue";
import DatePickerQuery from "../../Components/DatePickerQuery.vue";
const props = defineProps({
data: {
type: Object,
default: []
},
isHeadOrAdmin: {
type: Boolean
},
date: {
type: [Number, Array]
},
isOneDay: {
type: Boolean
}
})
@@ -15,7 +25,17 @@ const columns = ref([
title: 'Отделение',
key: 'department',
width: 240,
titleAlign: 'center'
titleAlign: 'center',
colSpan: (row) => row.colspan,
render(row) {
if (row.isGroupHeader) {
return h(NFlex, {
align: "center",
justify: "center"
}, h(NText, { style: 'font-weight: 600;' }, row.groupName))
}
return row.department
}
},
{
title: 'Кол-во коек',
@@ -24,42 +44,35 @@ const columns = ref([
titleAlign: 'center',
align: 'center'
},
{
title: 'Состояло',
key: '',
width: 84,
titleAlign: 'center',
align: 'center'
},
{
title: 'Поступило',
key: 'received',
key: 'recipients',
titleAlign: 'center',
children: [
{
title: 'Всего',
key: 'all',
key: 'recipients.all',
width: 60,
titleAlign: 'center',
align: 'center'
},
{
title: 'План',
key: 'plan',
key: 'recipients.plan',
width: 60,
titleAlign: 'center',
align: 'center'
},
{
title: 'Экстр',
key: 'emergency',
key: 'recipients.emergency',
width: 60,
titleAlign: 'center',
align: 'center'
},
{
title: 'Перевод',
key: '',
key: 'recipients.transferred',
width: 84,
titleAlign: 'center',
align: 'center'
@@ -68,7 +81,7 @@ const columns = ref([
},
{
title: 'Выбыло',
key: 'leave',
key: 'outcome',
width: 84,
titleAlign: 'center',
align: 'center'
@@ -89,30 +102,46 @@ const columns = ref([
},
{
title: 'Операции',
key: '',
key: 'surgical',
titleAlign: 'center',
children: [
{
title: 'Э',
key: '',
key: 'surgical.emergency',
width: 60,
titleAlign: 'center',
align: 'center'
},
{
title: 'П',
key: '',
key: 'surgical.plan',
width: 60,
titleAlign: 'center',
align: 'center'
},
]
},
{
title: 'Умерло',
key: 'deceased',
width: 84,
titleAlign: 'center',
align: 'center'
},
])
const rowProps = (row) => {
if (row.isGroupHeader) return {
style: `--n-merged-td-color: var(--n-merged-th-color)`
}
}
</script>
<template>
<AppLayout>
<template #headerExtra>
<DatePickerQuery :is-head-or-admin="isHeadOrAdmin" :date="date" :is-one-day="isOneDay" />
</template>
<NDataTable :columns="columns"
:data="data"
size="small"
@@ -120,6 +149,7 @@ const columns = ref([
striped
min-height="calc(100vh - 48px - 70px)"
max-height="calc(100vh - 48px - 70px)"
:row-props="rowProps"
>
</NDataTable>