From a20bf2d11fc13067dc20c4b8fb41ea699ef16736 Mon Sep 17 00:00:00 2001 From: megavrilinvv Date: Wed, 14 Dec 2022 18:00:57 +0300 Subject: [PATCH] =?UTF-8?q?[WIP]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=BD=D0=B0=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D1=83=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BC=D0=B5=D0=B4=20=D0=BA=D0=B0=D1=80=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B8=20=D1=83=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D1=8B=D0=B9=20=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TheHeader.vue | 7 +- src/components/base/BasePopup.vue | 3 +- .../clients/components/ClientsTableRow.vue | 24 ++++++ .../components/FormCreateMedicalCard.vue | 83 ++++++------------- .../components/MedicalBaseData.vue | 22 ++++- .../components/MedicalIdentityDocuments.vue | 48 +++++++++++ .../components/MedicalPolicyDocuments.vue | 51 ++++++++++++ 7 files changed, 177 insertions(+), 61 deletions(-) create mode 100644 src/pages/medicalCard/components/MedicalIdentityDocuments.vue create mode 100644 src/pages/medicalCard/components/MedicalPolicyDocuments.vue 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 @@ @@ -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 @@ + + + + + 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 @@ + + + + +