Merge pull request #195 from dderbentsov/UC-161
[WIP] Добавил примерную форму мед карты
This commit is contained in:
@@ -106,7 +106,7 @@
|
|||||||
:style="{fontWeight:key === 'numba'&&600}",
|
:style="{fontWeight:key === 'numba'&&600}",
|
||||||
v-model:value="sectionInfo[key]",
|
v-model:value="sectionInfo[key]",
|
||||||
:rows="section ==='pass' ? 2 : 1",
|
:rows="section ==='pass' ? 2 : 1",
|
||||||
:placeholder="settings[section].placeholder[key]"
|
:placeholder="settings[section].placeholder[key] || settings[section].placeholder"
|
||||||
:sharp="settings[section].sharps[key] && section === 'pass' ? settings[section].sharps[key] : ''"
|
:sharp="settings[section].sharps[key] && section === 'pass' ? settings[section].sharps[key] : ''"
|
||||||
)
|
)
|
||||||
base-input-date.input.text-sm(
|
base-input-date.input.text-sm(
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
.button.keep-redaction.flex.gap-x-3
|
.button.keep-redaction.flex.gap-x-3
|
||||||
.icon-star-off.icon
|
.icon-star-off.icon
|
||||||
span На ведение
|
span На ведение
|
||||||
|
.button.keep-redaction.flex.gap-x-3(@click="createMedicalCard")
|
||||||
|
.icon-star-off.icon
|
||||||
|
span Мед. карта
|
||||||
.button.delete.flex.gap-x-3(
|
.button.delete.flex.gap-x-3(
|
||||||
@click="transmitDeleteClient",
|
@click="transmitDeleteClient",
|
||||||
:style="{'opacity': disabledDelete && '0.7'}"
|
:style="{'opacity': disabledDelete && '0.7'}"
|
||||||
@@ -25,6 +28,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
openChangeData: Function,
|
openChangeData: Function,
|
||||||
disabledDelete: Boolean,
|
disabledDelete: Boolean,
|
||||||
|
createMedicalCard: Function,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
transmitDeleteClient() {
|
transmitDeleteClient() {
|
||||||
@@ -47,7 +51,7 @@ export default {
|
|||||||
<style lang="sass" scoped>
|
<style lang="sass" scoped>
|
||||||
.popup-wrapper
|
.popup-wrapper
|
||||||
width: 180px
|
width: 180px
|
||||||
height: 128px
|
height: 164px
|
||||||
border-radius: 4px 0 4px 4px
|
border-radius: 4px 0 4px 4px
|
||||||
background-color: var(--default-white)
|
background-color: var(--default-white)
|
||||||
box-shadow: var(--default-shadow)
|
box-shadow: var(--default-shadow)
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
@search="filterDataClients",
|
@search="filterDataClients",
|
||||||
)
|
)
|
||||||
.flex.flex-col.h-full.table-container.w-full.mt-8.mb-3
|
.flex.flex-col.h-full.table-container.w-full.mt-8.mb-3
|
||||||
|
base-modal(v-model="showMedicalCard")
|
||||||
|
form-create-medical-card
|
||||||
clients-table-header(:check="selectedCheck" :is-check="selectAll")
|
clients-table-header(:check="selectedCheck" :is-check="selectAll")
|
||||||
.flex.flex-col
|
.flex.flex-col
|
||||||
clients-table-row(
|
clients-table-row(
|
||||||
@@ -59,6 +61,7 @@ import BaseClientFormCreate from "@/components/base/BaseClientFormCreate";
|
|||||||
import ClientTablePagination from "./ClientTablePagination.vue";
|
import ClientTablePagination from "./ClientTablePagination.vue";
|
||||||
import BaseModal from "@/components/base/BaseModal.vue";
|
import BaseModal from "@/components/base/BaseModal.vue";
|
||||||
import ClientTableDeleteModal from "./ClientTableDeleteModal.vue";
|
import ClientTableDeleteModal from "./ClientTableDeleteModal.vue";
|
||||||
|
import FormCreateMedicalCard from "@/pages/clients/components/FormCreateMedicalCard";
|
||||||
import BaseLoader from "@/components/Loader/BaseLoader.vue";
|
import BaseLoader from "@/components/Loader/BaseLoader.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "ClientsTable",
|
name: "ClientsTable",
|
||||||
@@ -71,6 +74,7 @@ export default {
|
|||||||
ClientTablePagination,
|
ClientTablePagination,
|
||||||
BaseModal,
|
BaseModal,
|
||||||
ClientTableDeleteModal,
|
ClientTableDeleteModal,
|
||||||
|
FormCreateMedicalCard,
|
||||||
BaseLoader,
|
BaseLoader,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@@ -102,6 +106,7 @@ export default {
|
|||||||
deletedClientId: "",
|
deletedClientId: "",
|
||||||
deletedRowId: "",
|
deletedRowId: "",
|
||||||
clearingTextSearch: false,
|
clearingTextSearch: false,
|
||||||
|
showMedicalCard: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -202,6 +207,9 @@ export default {
|
|||||||
openModal() {
|
openModal() {
|
||||||
this.showModal = true;
|
this.showModal = true;
|
||||||
},
|
},
|
||||||
|
createMedicalCard() {
|
||||||
|
this.showMedicalCard = true;
|
||||||
|
},
|
||||||
deleteClientHandler(id) {
|
deleteClientHandler(id) {
|
||||||
this.deletedClientId = id;
|
this.deletedClientId = id;
|
||||||
this.openModal();
|
this.openModal();
|
||||||
|
|||||||
@@ -22,7 +22,8 @@
|
|||||||
v-if="isOpenPopup",
|
v-if="isOpenPopup",
|
||||||
:open-change-data="openChangeData",
|
:open-change-data="openChangeData",
|
||||||
:disabled-delete="!!deletedClientId && !rowOverlay",
|
:disabled-delete="!!deletedClientId && !rowOverlay",
|
||||||
@delete-client="transmitDeleteClient"
|
@delete-client="transmitDeleteClient",
|
||||||
|
:create-medical-card="createMedicalCard"
|
||||||
)
|
)
|
||||||
.dots.flex.justify-center.items-center(v-if="!rowOverlay")
|
.dots.flex.justify-center.items-center(v-if="!rowOverlay")
|
||||||
.flex.z-10(v-if="isOpenChange", class="pl-[10px]")
|
.flex.z-10(v-if="isOpenChange", class="pl-[10px]")
|
||||||
@@ -119,6 +120,7 @@ import ClientsActionPopup from "@/pages/clients/components/ClientsActionPopup";
|
|||||||
import ClientsTableCheckbox from "@/pages/clients/components/ClientsTableCheckbox";
|
import ClientsTableCheckbox from "@/pages/clients/components/ClientsTableCheckbox";
|
||||||
import ClientDetailInfoWrapper from "@/pages/clients/components/ClientDetailInfoWrapper";
|
import ClientDetailInfoWrapper from "@/pages/clients/components/ClientDetailInfoWrapper";
|
||||||
import BaseButton from "@/components/base/BaseButton";
|
import BaseButton from "@/components/base/BaseButton";
|
||||||
|
import BaseModal from "@/components/base/BaseModal";
|
||||||
import { fetchWrapper } from "@/shared/fetchWrapper";
|
import { fetchWrapper } from "@/shared/fetchWrapper";
|
||||||
import { column } from "@/pages/clients/utils/tableConfig";
|
import { column } from "@/pages/clients/utils/tableConfig";
|
||||||
import TheNotificationProvider from "@/components/Notifications/TheNotificationProvider";
|
import TheNotificationProvider from "@/components/Notifications/TheNotificationProvider";
|
||||||
@@ -129,6 +131,7 @@ export default {
|
|||||||
name: "ClientsTableRow",
|
name: "ClientsTableRow",
|
||||||
components: {
|
components: {
|
||||||
BaseButton,
|
BaseButton,
|
||||||
|
BaseModal,
|
||||||
ClientsTableCheckbox,
|
ClientsTableCheckbox,
|
||||||
ClientsActionPopup,
|
ClientsActionPopup,
|
||||||
TableCellBodyName,
|
TableCellBodyName,
|
||||||
@@ -184,6 +187,7 @@ export default {
|
|||||||
updateDataClient: Function,
|
updateDataClient: Function,
|
||||||
url: String,
|
url: String,
|
||||||
fetchDataClients: Function,
|
fetchDataClients: Function,
|
||||||
|
createMedicalCard: Function,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
rowOverlay() {
|
rowOverlay() {
|
||||||
|
|||||||
139
src/pages/clients/components/FormCreateMedicalCard.vue
Normal file
139
src/pages/clients/components/FormCreateMedicalCard.vue
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
.wrap.flex.flex-col.gap-y-6
|
||||||
|
.flex.flex.flex-col.gap-y-9
|
||||||
|
span.text-center.font-bold.text-xl Создание медицинской карты стоматологического пациента
|
||||||
|
.flex.justify-center.items-center.gap-x-2
|
||||||
|
base-button.button(:size="32", :rounded="true")
|
||||||
|
span(v-if="!isServices") 1
|
||||||
|
.icon-ok.text-xs(v-else)
|
||||||
|
span(:style="{color: 'var(--btn-blue-color)'}") Основное
|
||||||
|
.line.flex.mx-2
|
||||||
|
base-button.button(:class="{'active-button': !isServices}", :size="32", :rounded="true") 2
|
||||||
|
span(:style="{color: isServices ? 'var(--btn-blue-color)' : 'var(--font-dark-blue-color)' }") Услуги
|
||||||
|
medical-base-data(v-if="!isServices")
|
||||||
|
.services.flex.flex-col.gap-y-6(v-else)
|
||||||
|
.flex.flex-col.gap-y-6
|
||||||
|
.flex.flex-col.gap-y-2
|
||||||
|
.font-bold Услуги
|
||||||
|
.counter.text-smm Выберите подходищие из списка
|
||||||
|
.services-wrapper.flex.flex-col.pt-4.px-4
|
||||||
|
.flex.gap-x-2
|
||||||
|
base-input(
|
||||||
|
:with-icon="true",
|
||||||
|
icon-position="left",
|
||||||
|
:width-input="310",
|
||||||
|
placeholder="Поиск"
|
||||||
|
)
|
||||||
|
.counter.icon-search
|
||||||
|
base-select.h-10(placeholder="Вид услуги")
|
||||||
|
.flex.items-center.px-11px.py-9px(
|
||||||
|
:style="{borderBottom: '1px solid var(--btn-grey-color)'}"
|
||||||
|
)
|
||||||
|
.flex.items-center.gap-x-3
|
||||||
|
input.counter.w-4.h-4.checkbox.cursor-pointer(
|
||||||
|
type="checkbox",
|
||||||
|
@click="selectAll",
|
||||||
|
v-model="isAllServices"
|
||||||
|
)
|
||||||
|
.counter.flex.p-2(:style="{width: '358px'}") Название услуги
|
||||||
|
.counter Вид услуги
|
||||||
|
.list-services.flex.flex-col.px-11px.py-9px
|
||||||
|
.flex.items-center(v-for="service in services", :key="service.id")
|
||||||
|
.flex.items-center.gap-x-3
|
||||||
|
input.w-4.h-4.checkbox.cursor-pointer(
|
||||||
|
type="checkbox",
|
||||||
|
v-model="userIds",
|
||||||
|
:value="service.id"
|
||||||
|
)
|
||||||
|
.flex.p-2(:style="{width: '358px'}") {{service.name}}
|
||||||
|
.counter {{service.type}}
|
||||||
|
base-button.custom-button(
|
||||||
|
v-if="!isServices",
|
||||||
|
:size="40",
|
||||||
|
@click="changeServices"
|
||||||
|
)
|
||||||
|
span.font-semibold Далее
|
||||||
|
base-button.custom-button(:size="40", v-else)
|
||||||
|
span.font-semibold Создать медицинскую карту
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BaseInput from "@/components/base/BaseInput";
|
||||||
|
import BaseButton from "@/components/base/BaseButton";
|
||||||
|
import BaseInputDate from "@/components/base/BaseInputDate";
|
||||||
|
import BaseSelect from "@/components/base/BaseSelect";
|
||||||
|
import MedicalBaseData from "@/pages/medicalCard/components/MedicalBaseData";
|
||||||
|
export default {
|
||||||
|
name: "FormCreateMedicalCard",
|
||||||
|
components: {
|
||||||
|
BaseInput,
|
||||||
|
BaseButton,
|
||||||
|
BaseInputDate,
|
||||||
|
BaseSelect,
|
||||||
|
MedicalBaseData,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isServices: false,
|
||||||
|
isAllServices: false,
|
||||||
|
userIds: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeServices() {
|
||||||
|
this.isServices = !this.isServices;
|
||||||
|
},
|
||||||
|
selectAll() {
|
||||||
|
this.userIds = [];
|
||||||
|
if (!this.isAllServices) {
|
||||||
|
this.services.forEach((el) => this.userIds.push(el.id));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped>
|
||||||
|
.wrap
|
||||||
|
width: 570px
|
||||||
|
height: fit-content
|
||||||
|
min-height: 640px
|
||||||
|
|
||||||
|
.services-wrapper
|
||||||
|
border: 1px solid var(--btn-grey-color)
|
||||||
|
border-radius: 8px
|
||||||
|
|
||||||
|
.list-services
|
||||||
|
overflow-y: auto
|
||||||
|
max-height: 280px
|
||||||
|
|
||||||
|
.input-date
|
||||||
|
border: 1.5px solid var(--border-light-grey-color)
|
||||||
|
border-radius: 4px
|
||||||
|
|
||||||
|
.button
|
||||||
|
&:hover
|
||||||
|
background-color: var(--btn-blue-color)
|
||||||
|
border: none
|
||||||
|
|
||||||
|
.active-button
|
||||||
|
background: var(--btn-grey-color)
|
||||||
|
color: var(--font-dark-blue-color)
|
||||||
|
border-color: var(--btn-grey-color)
|
||||||
|
&:hover
|
||||||
|
background-color: var(--btn-grey-color)
|
||||||
|
border: none
|
||||||
|
|
||||||
|
.line
|
||||||
|
width: 78px
|
||||||
|
border: 1.5px solid var(--btn-grey-color)
|
||||||
|
|
||||||
|
.place
|
||||||
|
width: 100%
|
||||||
|
border: 2px dashed var(--font-grey-color)
|
||||||
|
border-radius: 4px
|
||||||
|
color: var(--font-grey-color)
|
||||||
|
|
||||||
|
.counter
|
||||||
|
color: var(--font-grey-color)
|
||||||
|
</style>
|
||||||
@@ -159,9 +159,7 @@ export const detail = {
|
|||||||
join_adress: "Полный адрес",
|
join_adress: "Полный адрес",
|
||||||
},
|
},
|
||||||
sharps: { join_adress: "" },
|
sharps: { join_adress: "" },
|
||||||
placeholder: {
|
placeholder: "Введите адрес целиком",
|
||||||
join_adress: "Введите адрес целиком",
|
|
||||||
},
|
|
||||||
width: 292,
|
width: 292,
|
||||||
voidHeight: 86,
|
voidHeight: 86,
|
||||||
},
|
},
|
||||||
|
|||||||
13
src/pages/medicalCard/TheMedicalCard.vue
Normal file
13
src/pages/medicalCard/TheMedicalCard.vue
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
medical-card-wrapper
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import MedicalCardWrapper from "@/pages/medicalCard/components/MedicalCardWrapper";
|
||||||
|
export default {
|
||||||
|
name: "TheMedicalCard",
|
||||||
|
components: { MedicalCardWrapper },
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped></style>
|
||||||
40
src/pages/medicalCard/components/MedicalBaseData.vue
Normal file
40
src/pages/medicalCard/components/MedicalBaseData.vue
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
.base.flex.flex-col.gap-y-6
|
||||||
|
.flex.flex-col.gap-y-6
|
||||||
|
span.font-bold Основное
|
||||||
|
.flex.flex-col.gap-y-4
|
||||||
|
base-input.w-full(placeholder="ФИО*")
|
||||||
|
.flex.gap-x-4
|
||||||
|
.flex.flex-col.gap-y-2
|
||||||
|
.counter.font-semibold.text-smm Дата рождения
|
||||||
|
base-input-date.input-date.h-10(:width-input="277")
|
||||||
|
.flex.flex-col.gap-y-2
|
||||||
|
.counter.font-semibold.text-smm СНИЛС
|
||||||
|
base-input(:width-input="277", placeholder="000–000–000 00")
|
||||||
|
.flex.flex-col.gap-y-4
|
||||||
|
.flex.flex-col.gap-y-2
|
||||||
|
.counter.font-semibold.text-smm Адрес регистрации
|
||||||
|
base-input(:width-input="277", placeholder="Введите полный адрес")
|
||||||
|
.flex.flex-col.gap-y-2
|
||||||
|
.counter.font-semibold.text-smm Фактический адрес места жительства
|
||||||
|
base-input(:width-input="277", placeholder="Введите полный адрес")
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BaseInput from "@/components/base/BaseInput";
|
||||||
|
import BaseInputDate from "@/components/base/BaseInputDate";
|
||||||
|
import BaseSelect from "@/components/base/BaseSelect";
|
||||||
|
export default {
|
||||||
|
name: "MedicalBaseData",
|
||||||
|
components: { BaseInput, BaseInputDate, BaseSelect },
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped>
|
||||||
|
.input-date
|
||||||
|
border: 1.5px solid var(--border-light-grey-color)
|
||||||
|
border-radius: 4px
|
||||||
|
|
||||||
|
.counter
|
||||||
|
color: var(--font-grey-color)
|
||||||
|
</style>
|
||||||
17
src/pages/medicalCard/components/MedicalCardWrapper.vue
Normal file
17
src/pages/medicalCard/components/MedicalCardWrapper.vue
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
.wrapper.flex.w-full.relative.mx-2
|
||||||
|
.wrapper-medical.relative.flex.flex-col.px-6.py-6.h-full.w-full
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default { name: "MedicalCardWrapper" };
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped>
|
||||||
|
.wrapper
|
||||||
|
overflow: auto
|
||||||
|
border-top-left-radius: 4px
|
||||||
|
.wrapper-medical
|
||||||
|
background-color: var(--default-white)
|
||||||
|
height: calc(100vh - 64px)
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user