* оптимизировал запросы выдачи пациентов, сохранения снапшотов
* доработал страницу отчета дежурного * переделал "действия" над пациентом * подключил виджеты на странице отчета дежурного
This commit is contained in:
40
resources/js/Composables/useDropdownActions.js
Normal file
40
resources/js/Composables/useDropdownActions.js
Normal file
@@ -0,0 +1,40 @@
|
||||
// composables/useDropdownActions.js
|
||||
import { computed } from 'vue'
|
||||
import { h } from 'vue'
|
||||
import { NIcon } from 'naive-ui'
|
||||
|
||||
export function useDropdownActions(groups, renderIcon) {
|
||||
return computed(() => {
|
||||
const result = []
|
||||
const visibleGroups = groups.filter(group => group.items?.some(item => item.if !== false))
|
||||
|
||||
visibleGroups.forEach((group, groupIndex) => {
|
||||
// Фильтруем видимые пункты внутри группы
|
||||
const visibleItems = group.items.filter(item => item.if !== false)
|
||||
|
||||
if (visibleItems.length === 0) return
|
||||
|
||||
// Добавляем пункты группы
|
||||
visibleItems.forEach(item => {
|
||||
const option = { ...item }
|
||||
// Убираем служебное поле if
|
||||
delete option.if
|
||||
// Добавляем иконку через renderIcon если есть
|
||||
if (item.icon && renderIcon) {
|
||||
option.icon = renderIcon(item.icon)
|
||||
}
|
||||
result.push(option)
|
||||
})
|
||||
|
||||
// Добавляем divider после группы, если это не последняя группа
|
||||
if (groupIndex < visibleGroups.length - 1) {
|
||||
result.push({
|
||||
type: 'divider',
|
||||
key: `divider-${group.key || groupIndex}`
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
return result
|
||||
})
|
||||
}
|
||||
200
resources/js/Composables/usePatientColumns.js
Normal file
200
resources/js/Composables/usePatientColumns.js
Normal file
@@ -0,0 +1,200 @@
|
||||
import {format, formatDistanceStrict} from "date-fns";
|
||||
import {ru} from "date-fns/locale";
|
||||
import {h} from "vue";
|
||||
import TooltipColumn from "../Pages/Report/Components/DataTableColumns/TooltipColumn.vue";
|
||||
import OperationsColumn from "../Pages/Report/Components/DataTableColumns/OperationsColumn.vue";
|
||||
import ActionsColumn from "../Pages/Report/Components/DataTableColumns/ActionsColumn.vue";
|
||||
|
||||
export const usePatientColumns = (actionHandlers = {}) => {
|
||||
const { onMisClick, onAddObservable, onAddObservableComment, onRemoveObservable, onShowOperationModal } = actionHandlers
|
||||
|
||||
const defaultColumns = [
|
||||
{
|
||||
title: 'ФИО',
|
||||
key: 'full_name',
|
||||
width: 280
|
||||
},
|
||||
{
|
||||
title: 'Возраст',
|
||||
key: 'birth_date',
|
||||
render: (row) => formatDistanceStrict(new Date(row.birth_date), new Date(), { locale: ru }),
|
||||
width: 75,
|
||||
},
|
||||
{
|
||||
title: 'Д/р',
|
||||
key: 'birth_date',
|
||||
minWidth: 94,
|
||||
maxWidth: 100,
|
||||
width: 94,
|
||||
resizable: false,
|
||||
render: (row) => format(new Date(row.birth_date), 'dd.MM.yyyy')
|
||||
},
|
||||
{
|
||||
title: 'Д/п',
|
||||
key: 'latest_migration.ingoing_date',
|
||||
minWidth: 134,
|
||||
maxWidth: 144,
|
||||
width: 134,
|
||||
resizable: false,
|
||||
render: (row) => format(new Date(row.latest_migration.ingoing_date), 'dd.MM.yyyy HH:mm')
|
||||
},
|
||||
{
|
||||
title: 'Диагноз',
|
||||
key: 'latest_migration.diagnosis_code',
|
||||
width: 75,
|
||||
resizable: false,
|
||||
render: (row) => h(TooltipColumn, { triggerText: row.latest_migration.diagnosis_code, contentText: row.latest_migration.diagnosis_name })
|
||||
},
|
||||
{
|
||||
title: 'Операции',
|
||||
key: 'latest_migration.operations',
|
||||
width: 140,
|
||||
className: 'relative',
|
||||
render: (row) => h(OperationsColumn, { operations: row.latest_migration.operations, onClick: (operations) => onShowOperationModal(operations) })
|
||||
},
|
||||
]
|
||||
|
||||
const planOrEmergencyColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
isAddObservable: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const observableColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
isAddObservableComment: true,
|
||||
isRemoveObservable: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const reanimationColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const deceasedColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const dischargedColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const transferredColumns = [
|
||||
...defaultColumns,
|
||||
{
|
||||
title: '',
|
||||
key: 'actions',
|
||||
align: 'end',
|
||||
render: (row) => {
|
||||
return h(
|
||||
ActionsColumn,
|
||||
{
|
||||
row: row,
|
||||
isMis: true,
|
||||
onMisClick,
|
||||
onAddObservable,
|
||||
onAddObservableComment,
|
||||
onRemoveObservable,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
return {
|
||||
planOrEmergencyColumns,
|
||||
observableColumns,
|
||||
reanimationColumns,
|
||||
dischargedColumns,
|
||||
deceasedColumns,
|
||||
transferredColumns
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user