Files
onboard/resources/js/Pages/Report/Index.vue
brusnitsyn 10fb138c30 * работа над функционалом автоматического заполнения
* исправил фантомный сдвиг даты
* переделал получение ФИО врачей из отделений
* добавил возможность поиска врача
* переписал сохранение отчета
2026-02-05 17:11:43 +09:00

117 lines
3.2 KiB
Vue

<script setup>
import AppLayout from "../../Layouts/AppLayout.vue";
import ReportForm from "./Components/ReportForm.vue";
import {useReportStore} from "../../Stores/report.js";
import {computed, onMounted, watch} from "vue";
import {useAuthStore} from "../../Stores/auth.js";
const props = defineProps({
department: {
type: Object,
default: {}
},
report: {
type: Object,
default: {}
},
metrikaItems: {
type: Array,
default: []
},
dates: {
type: Object,
default: {}
}
})
const reportStore = useReportStore()
const authStore = useAuthStore()
onMounted(() => {
const queryString = window.location.search
const params = new URLSearchParams(queryString)
const userId = params.get('userId')
reportStore.reportInfo.userId = userId
reportStore.reportInfo = {
...reportStore.reportInfo,
...props
}
reportStore.reportForm.metrika_item_3 = props.department.recipientCount
reportStore.reportForm.metrika_item_7 = props.department.extractCount
reportStore.reportForm.metrika_item_8 = props.department.currentCount
reportStore.reportForm.metrika_item_9 = props.department.deadCount
reportStore.reportForm.metrika_item_10 = props.department.surgicalCount[1]
reportStore.reportForm.metrika_item_11 = props.department.surgicalCount[0]
reportStore.unwantedEvents = props.report.unwantedEvents
if (props.report.isHeadOrAdmin) {
reportStore.timestampCurrentRange = [
props.dates.startAt,
props.dates.endAt,
]
} else {
reportStore.timestampCurrentRange = [
props.dates.endAt,
props.dates.endAt
]
}
// reportStore.getReportInfo()
})
// reportStore.getReportInfo()
const mode = computed(() => {
if (authStore.isHeadOfDepartment)
return 'readonly'
return 'fillable'
})
watch(() => props, (newProps) => {
reportStore.reportInfo = {
...reportStore.reportInfo,
...newProps
}
if (newProps.report.isHeadOrAdmin) {
reportStore.reportInfo.userId = newProps.report.userId
}
reportStore.reportForm.metrika_item_3 = newProps.department.recipientCount
reportStore.reportForm.metrika_item_7 = newProps.department.extractCount
reportStore.reportForm.metrika_item_8 = newProps.department.currentCount
reportStore.reportForm.metrika_item_9 = newProps.department.deadCount
reportStore.reportForm.metrika_item_10 = newProps.department.surgicalCount[1]
reportStore.reportForm.metrika_item_11 = newProps.department.surgicalCount[0]
reportStore.unwantedEvents = newProps.report.unwantedEvents
if (props.report.isHeadOrAdmin) {
reportStore.timestampCurrentRange = [
props.dates.startAt,
props.dates.endAt,
]
} else {
reportStore.timestampCurrentRange = [
props.dates.endAt,
props.dates.endAt
]
}
}, {
deep: true, // важно для глубокого отслеживания
immediate: true // выполнить сразу при создании
})
</script>
<template>
<AppLayout>
<ReportForm :mode />
</AppLayout>
</template>