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

* добавил окно для редактирования выдачи / возврата карты
* раздробил логику хранения карты
This commit is contained in:
brusnitsyn
2025-12-05 18:04:02 +09:00
parent 2dfa45707c
commit 2e1b5a3d0e
17 changed files with 431 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
<script setup>
import { NModal, NDataTable } from 'naive-ui'
import { NModal, NDataTable, NSpace, NFlex, NButton, NForm, NFormItem, NInput, NDatePicker, NDivider, NSwitch, NTag } from 'naive-ui'
import ArchiveHistoryMoveModal from '../ArchiveHistoryMoveModal/Index.vue'
import {ref, watch} from "vue";
const open = defineModel('open')
@@ -11,6 +12,13 @@ const props = defineProps({
const loading = ref(true)
const patient = ref({})
const showArchiveHistoryModal = ref(false)
const selectedArchiveHistoryId = ref(null)
const patientData = ref({
...patient.value.info
})
const loadPatientData = async () => {
if (!props.patientId) return
@@ -19,6 +27,7 @@ const loadPatientData = async () => {
try {
axios.get(`/api/si/patients/${props.patientId}`).then(res => {
patient.value = res.data
patientData.value = res.data.info
})
} catch (error) {
// message.error('Ошибка при загрузке данных пациента')
@@ -28,28 +37,43 @@ const loadPatientData = async () => {
}
}
const onShowArchiveHistoryModal = (id) => {
selectedArchiveHistoryId.value = id
showArchiveHistoryModal.value = true
}
const columns = [
{
title: 'Выдача',
key: 'issue_at'
key: 'issue_at',
width: 100
},
{
title: 'Возврат',
key: 'return_at'
key: 'return_at',
width: 100
},
{
title: 'Организация',
key: 'org_id'
key: 'org',
width: 220
},
{
title: 'ФИО',
key: 'employee_name'
key: 'employee_name',
width: 180
},
{
title: 'Должность',
key: 'employee_post'
key: 'employee_post',
width: 120
},
]
const rowProps = (row) => ({
onDblclick: () => {
onShowArchiveHistoryModal(row.id)
}
})
// Наблюдаем за изменением patientId
watch(() => props.patientId, (newId) => {
@@ -64,8 +88,42 @@ watch(() => props.patientId, (newId) => {
<template #header>
{{ patient.info?.medcardnum }} {{ patient.info?.family }} {{ patient.info?.name }} {{ patient.info?.ot }}
</template>
<NDataTable :columns="columns" :data="patient?.journal" />
<NSpace vertical>
<NFlex inline justify="space-between" align="center" :wrap="false">
<NForm inline :show-feedback="false">
<NFormItem label="Статус карты">
<NTag type="default" :bordered="false" round>
Не определен
</NTag>
</NFormItem>
<NFormItem label="№ в архиве">
<NInput v-model:value="patientData.narhiv" />
</NFormItem>
<NFormItem label="Дата поступления карты в архив">
<NDatePicker v-model:value="patientData.datearhiv" format="dd.MM.yyyy" />
</NFormItem>
</NForm>
</NFlex>
<NButton @click="onShowArchiveHistoryModal(null)">
Добавить
</NButton>
<NDataTable :row-props="rowProps" min-height="420px" max-height="420px" :columns="columns" :data="patient?.journal" />
</NSpace>
<template #action>
<NFlex justify="end" align="center">
<NSpace align="center" :size="0">
<NButton secondary>
Закрыть без сохранения
</NButton>
<NDivider vertical />
<NButton secondary type="primary">
Сохранить
</NButton>
</NSpace>
</NFlex>
</template>
</NModal>
<ArchiveHistoryMoveModal @close-without-save="selectedArchiveHistoryId = null" v-model:open="showArchiveHistoryModal" :archive-history-id="selectedArchiveHistoryId" />
</template>
<style scoped>