diff --git a/src/components/TheHeader.vue b/src/components/TheHeader.vue
index 983b911..96f134b 100644
--- a/src/components/TheHeader.vue
+++ b/src/components/TheHeader.vue
@@ -28,7 +28,12 @@
img.h-full.object-cover(:src="url + userData.photo", alt="Avatar")
button.header-buttons(@click="openPopup")
.icon-down-arrow.text-xxs.flex.justify-center.items-center.p-0
- base-popup.right-2.top-10(v-if="showPopup", :width="160", v-click-outside="openPopup")
+ base-popup.right-2.top-10(
+ corner,
+ v-if="showPopup",
+ :width="160",
+ v-click-outside="openPopup"
+ )
.text-popup.flex.cursor-pointer.pl-2(@click="logout") Выйти
diff --git a/src/components/base/BasePopup.vue b/src/components/base/BasePopup.vue
index 758d101..82825b4 100644
--- a/src/components/base/BasePopup.vue
+++ b/src/components/base/BasePopup.vue
@@ -1,6 +1,6 @@
.flex.flex-col.items-end.absolute
- .corner
+ .corner(v-if="!corner")
.popup-wrapper.flex.flex-col.gap-y-3.p-4.h-fit(:style="{ width : width + 'px' }")
slot
@@ -12,6 +12,7 @@ export default {
width: Number,
top: Number,
right: Number,
+ corner: Boolean,
},
};
diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue
index 8a2e57c..48a58dc 100644
--- a/src/pages/clients/components/ClientsTableRow.vue
+++ b/src/pages/clients/components/ClientsTableRow.vue
@@ -271,9 +271,22 @@ export default {
contacts.push(this.dataClient.email);
if (
this.dataClient.phone.username &&
+ this.dataClient.phone.username.length === 18 &&
!contacts.find((el) => el.kind === "PHONE")
)
contacts.push(this.dataClient.phone);
+ else if (
+ this.dataClient.phone.username &&
+ this.dataClient.phone.username.length < 18
+ ) {
+ this.dataClient.phone.username =
+ this.client.contacts.find((el) => el.kind === "PHONE")?.username ||
+ "";
+ this.addErrorNotification(
+ "Некорректный номер телефона",
+ "Введите мобильный номер состоящий из 11 цифр"
+ );
+ }
let mapCreateContacts = this.client.contacts.map((el) => el.kind);
let mapDeleteContacts = contacts.map((el) => el.kind);
let createContacts = contacts.filter((el) =>
@@ -288,9 +301,20 @@ export default {
this.client.contacts.forEach((el) => {
if (
el.kind === "PHONE" &&
+ this.dataClient.phone.username.length === 18 &&
el.username !== this.dataClient.phone.username
)
updateContacts.push(this.dataClient.phone);
+ else if (this.dataClient.phone.username.length < 18) {
+ this.dataClient.phone.username =
+ this.client.contacts.find((el) => el.kind === "PHONE")?.username ||
+ "";
+ this.addErrorNotification(
+ "Некорректный номер телефона",
+ "Введите мобильный номер состоящий из 11 цифр"
+ );
+ }
+
if (
el.kind === "EMAIL" &&
el.username !== this.dataClient.email.username
diff --git a/src/pages/clients/components/FormCreateMedicalCard.vue b/src/pages/clients/components/FormCreateMedicalCard.vue
index 3796c1e..1162e72 100644
--- a/src/pages/clients/components/FormCreateMedicalCard.vue
+++ b/src/pages/clients/components/FormCreateMedicalCard.vue
@@ -4,57 +4,20 @@
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
+ span(v-if="isBaseData") 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 Создать медицинскую карту
+ base-button.button(:class="{'active-button': !isIdentityDoc && isBaseData}", :size="32", :rounded="true")
+ span(v-if="isBaseData") 2
+ .icon-ok.text-xs(v-else)
+ span(:style="{color: !isBaseData ? 'var(--btn-blue-color)' : 'var(--font-dark-blue-color)' }") ДУЛ
+ .line.flex.mx-2
+ base-button.button(:class="{'active-button': !isPolicyDoc }", :size="32", :rounded="true") 3
+ span(:style="{color: isPolicyDoc ? 'var(--btn-blue-color)' : 'var(--font-dark-blue-color)' }") Полис
+ medical-base-data(v-if="isBaseData", :change-base-data="changeBaseData")
+ medical-identity-documents(v-if="isIdentityDoc", :change-identity-doc="changeIdentityDoc")
+ medical-policy-documents(v-if="isPolicyDoc")
diff --git a/src/pages/medicalCard/components/MedicalIdentityDocuments.vue b/src/pages/medicalCard/components/MedicalIdentityDocuments.vue
new file mode 100644
index 0000000..4b74de2
--- /dev/null
+++ b/src/pages/medicalCard/components/MedicalIdentityDocuments.vue
@@ -0,0 +1,48 @@
+
+ .base.flex.flex-col.gap-y-6
+ .flex.flex-col.gap-y-6
+ span.font-bold Паспортные данные
+ .flex.flex-col.gap-y-4
+ .flex.gap-x-4
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm Серия и номер
+ base-input(:width-input="277", placeholder="0000 000000")
+ .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-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="Введите название организации")
+ base-button(:size="40", @click="changeIdentityDoc")
+ span.font-semibold Далее
+
+
+
+
+
diff --git a/src/pages/medicalCard/components/MedicalPolicyDocuments.vue b/src/pages/medicalCard/components/MedicalPolicyDocuments.vue
new file mode 100644
index 0000000..9bd7389
--- /dev/null
+++ b/src/pages/medicalCard/components/MedicalPolicyDocuments.vue
@@ -0,0 +1,51 @@
+
+ .base.flex.flex-col.gap-y-6
+ .flex.gap-x-4
+ .flex.flex-col.gap-y-6
+ span.font-bold Полис
+ .flex.gap-x-4
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm Серия и номер полиса ОМС
+ base-input(:width-input="277", placeholder="0000 000000")
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm Серия и номер полиса ДМС
+ base-input(:width-input="277", placeholder="0000 000000")
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm Код категории льготы
+ base-input(:width-input="277", placeholder="000")
+ .flex.flex-col.gap-y-4
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm К кому обращаться в случае необходимости
+ base-input.w-full(placeholder="ФИО*")
+ .flex.flex-col.gap-y-2
+ .counter.font-semibold.text-smm Номер телефона
+ base-input(
+ :width-input="277",
+ placeholder="+7 (915) 644–92–23"
+ )
+ base-button(:size="40")
+ span.font-semibold Создать медицинскую карту
+
+
+
+
+