Добавил Откуда доставлен и поступил от начала заболевания (дата и время)
This commit is contained in:
41
resources/js/Components/AppSearchAddress.vue
Normal file
41
resources/js/Components/AppSearchAddress.vue
Normal file
@@ -0,0 +1,41 @@
|
||||
<script setup>
|
||||
import { useDebounceFn } from '@vueuse/core'
|
||||
import {ref, defineModel} from 'vue'
|
||||
import { NSelect } from 'naive-ui'
|
||||
|
||||
const value = defineModel('value')
|
||||
const objectId = defineModel('objectid')
|
||||
const options = ref()
|
||||
const loading = ref(false)
|
||||
|
||||
const debounceSearch = useDebounceFn((query) => {
|
||||
axios.post('/api/fias', {
|
||||
search: query
|
||||
}).then((res) => {
|
||||
options.value = res.data
|
||||
loading.value = false
|
||||
})
|
||||
}, 1000, { maxWait: 5000 })
|
||||
|
||||
const handleSearch = async (query) => {
|
||||
if (!query.length) {
|
||||
options.value = []
|
||||
return
|
||||
}
|
||||
|
||||
loading.value = true
|
||||
|
||||
await debounceSearch(query)
|
||||
}
|
||||
|
||||
const updateValue = (selectedValue) => {
|
||||
const oId = options.value.find((itm) => itm.full_name === selectedValue)
|
||||
objectId.value = oId.objectid
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NSelect v-model:value="value" @update-value="(v) => updateValue(v)" filterable placeholder="" :options="options"
|
||||
label-field="full_name" value-field="full_name" :loading="loading" clearable remote
|
||||
:clear-filter-after-select="false" @search="handleSearch" />
|
||||
</template>
|
||||
@@ -1,11 +1,12 @@
|
||||
<script setup>
|
||||
import {NModal, NSteps, NStep, NTabs, NTabPane, NFlex, NGrid, NGi, NButton, NRadioGroup, NSelect, NInput, NFormItemGi, NDatePicker} from 'naive-ui'
|
||||
import {NModal, NSteps, NStep, NTabs, NTabPane, NFlex, NGrid, NGi, NButton, NRadioGroup, NSelect, NInput, NFormItemGi, NDatePicker, NCheckbox} from 'naive-ui'
|
||||
import {computed, ref, watch} from "vue";
|
||||
import AppRadio from "../../../Components/AppRadio.vue";
|
||||
import {useDebounceFn} from "@vueuse/core";
|
||||
import {format} from "date-fns";
|
||||
import {router, usePage} from "@inertiajs/vue3";
|
||||
import AppPanel from "../../../Components/AppPanel.vue"
|
||||
import AppSearchAddress from '../../../Components/AppSearchAddress.vue';
|
||||
const show = defineModel('show', { default: false })
|
||||
|
||||
const currentStep = ref(1)
|
||||
@@ -24,6 +25,8 @@ const form = ref({
|
||||
recipient_date: format(new Date(), 'yyyy-MM-dd HH:mm:ss'),
|
||||
death_date: null,
|
||||
extract_date: null,
|
||||
deliveriFromAddress: null,
|
||||
deliveryFromObjectId: null,
|
||||
mis_id: null
|
||||
})
|
||||
|
||||
@@ -39,6 +42,8 @@ const resetForm = () => {
|
||||
recipient_date: format(new Date(), 'yyyy-MM-dd HH:mm:ss'),
|
||||
death_date: null,
|
||||
extract_date: null,
|
||||
deliveriFromAddress: null,
|
||||
deliveryFromObjectId: null,
|
||||
mis_id: null
|
||||
}
|
||||
}
|
||||
@@ -187,6 +192,21 @@ watch(() => currentStep.value, (val) => {
|
||||
if (val === 1) resetForm()
|
||||
})
|
||||
|
||||
const canShowExtractDateField = ref(false)
|
||||
const canShowDeathDateField = ref(false)
|
||||
watch(() => form.value.visit_result_id, (newVisitResultId, oldVisitResultId) => {
|
||||
if ([1, 2, 3, 4, 7, 8, 9, 10].includes(newVisitResultId)) {
|
||||
canShowDeathDateField.value = false
|
||||
canShowExtractDateField.value = true
|
||||
} else if ([5, 6].includes(newVisitResultId)) {
|
||||
canShowDeathDateField.value = true
|
||||
canShowExtractDateField.value = false
|
||||
} else {
|
||||
canShowDeathDateField.value = false
|
||||
canShowExtractDateField.value = false
|
||||
}
|
||||
})
|
||||
|
||||
const onAfterLeave = () => {
|
||||
resetForm()
|
||||
currentStep.value = 1
|
||||
@@ -249,12 +269,27 @@ const onAfterLeave = () => {
|
||||
<NFormItemGi span="1" label="Дата и время госпитализации">
|
||||
<NDatePicker v-model:formatted-value="form.recipient_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="1" label="Дата и время выписки">
|
||||
<NFormItemGi v-if="canShowExtractDateField" span="1" label="Дата и время выписки">
|
||||
<NDatePicker v-model:formatted-value="form.extract_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="1" label="Дата и время смерти">
|
||||
<NFormItemGi v-if="canShowDeathDateField" span="1" label="Дата и время смерти">
|
||||
<NDatePicker v-model:formatted-value="form.death_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="2" label="Поступил от начала заболевания">
|
||||
<NGrid cols="2" x-gap="8">
|
||||
<NGi>
|
||||
<NDatePicker v-model:formatted-value="form.death_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NGi>
|
||||
<NGi class="flex items-center">
|
||||
<NCheckbox class="text-nowrap">
|
||||
Неизвестно
|
||||
</NCheckbox>
|
||||
</NGi>
|
||||
</NGrid>
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="2" label="Откуда доставлен">
|
||||
<AppSearchAddress v-model:value="form.deliveriFromAddress" v-model:objectid="form.deliveryObjectId" />
|
||||
</NFormItemGi>
|
||||
</NGrid>
|
||||
</AppPanel>
|
||||
</NTabPane>
|
||||
|
||||
@@ -13,12 +13,14 @@ import {
|
||||
NSelect,
|
||||
NInput,
|
||||
NFormItemGi,
|
||||
NDatePicker
|
||||
NDatePicker,
|
||||
NCheckbox
|
||||
} from 'naive-ui'
|
||||
import {computed, ref, watch} from "vue";
|
||||
import AppRadio from "../../../Components/AppRadio.vue";
|
||||
import axios from "axios";
|
||||
import {router} from "@inertiajs/vue3";
|
||||
import AppSearchAddress from '../../../Components/AppSearchAddress.vue';
|
||||
const show = defineModel('show', { default: false })
|
||||
const props = defineProps({
|
||||
historyId: {
|
||||
@@ -44,7 +46,9 @@ const form = ref({
|
||||
birth_date: null,
|
||||
recipient_date: null,
|
||||
death_date: null,
|
||||
extract_date: null
|
||||
extract_date: null,
|
||||
deliveriFromAddress: null,
|
||||
deliveryFromObjectId: null
|
||||
})
|
||||
const loading = ref(true)
|
||||
const buttonLoading = ref(false)
|
||||
@@ -152,6 +156,21 @@ const fetchPatient = async (historyId) => {
|
||||
watch(() => props.historyId, async (newHistoryId, historyId) => {
|
||||
await fetchPatient(newHistoryId)
|
||||
})
|
||||
|
||||
const canShowExtractDateField = ref(false)
|
||||
const canShowDeathDateField = ref(false)
|
||||
watch(() => form.value.visit_result_id, (newVisitResultId, oldVisitResultId) => {
|
||||
if ([1, 2, 3, 4, 7, 8, 9, 10].includes(newVisitResultId)) {
|
||||
canShowDeathDateField.value = false
|
||||
canShowExtractDateField.value = true
|
||||
} else if ([5, 6].includes(newVisitResultId)) {
|
||||
canShowDeathDateField.value = true
|
||||
canShowExtractDateField.value = false
|
||||
} else {
|
||||
canShowDeathDateField.value = false
|
||||
canShowExtractDateField.value = false
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -182,12 +201,27 @@ watch(() => props.historyId, async (newHistoryId, historyId) => {
|
||||
<NFormItemGi span="1" label="Дата и время госпитализации">
|
||||
<NDatePicker v-model:formatted-value="form.recipient_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="1" label="Дата и время выписки">
|
||||
<NFormItemGi v-if="canShowExtractDateField" span="1" label="Дата и время выписки">
|
||||
<NDatePicker v-model:formatted-value="form.extract_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="1" label="Дата и время смерти">
|
||||
<NFormItemGi v-if="canShowDeathDateField" span="1" label="Дата и время смерти">
|
||||
<NDatePicker v-model:formatted-value="form.death_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="2" label="Поступил от начала заболевания">
|
||||
<NGrid cols="2" x-gap="8">
|
||||
<NGi>
|
||||
<NDatePicker v-model:formatted-value="form.death_date" type="datetime" class="w-full" format="dd.MM.yyyy HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable />
|
||||
</NGi>
|
||||
<NGi class="flex items-center">
|
||||
<NCheckbox class="text-nowrap">
|
||||
Неизвестно
|
||||
</NCheckbox>
|
||||
</NGi>
|
||||
</NGrid>
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="2" label="Откуда доставлен">
|
||||
<AppSearchAddress v-model:value="form.deliveriFromAddress" v-model:objectid="form.deliveryObjectId" />
|
||||
</NFormItemGi>
|
||||
</NGrid>
|
||||
<template v-if="!loading" #action>
|
||||
<NFlex justify="end">
|
||||
|
||||
Reference in New Issue
Block a user