From 1666e7f806da14dc8358c4faa68c5dfcbe4404b5 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Wed, 14 Dec 2022 14:39:18 +0300 Subject: [PATCH 1/3] =?UTF-8?q?WIP=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=B0=D1=82=D1=8B=20=D1=80=D0=BE=D0=B6=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D1=84=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/base/BaseClientFormCreate.vue | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/base/BaseClientFormCreate.vue b/src/components/base/BaseClientFormCreate.vue index 9f5d07d..b3fc7f7 100644 --- a/src/components/base/BaseClientFormCreate.vue +++ b/src/components/base/BaseClientFormCreate.vue @@ -415,7 +415,27 @@ export default { if (!this.infoClient.basic.full_name) { this.addErrorNotification( "Не заполнено ФИО клиента", - "Пожалуйста, заполните ФИО клиента" + "Заполните ФИО клиента" + ); + return false; + } else if ( + this.infoClient.basic.birth_date && + moment(this.infoClient.basic.birth_date).isAfter( + moment().format("YYYY-MM-DD") + ) + ) { + this.addErrorNotification( + "Некорректная дата рождения", + "Дата рождения позже текущего дня" + ); + return false; + } else if ( + this.infoClient.phone.username && + this.infoClient.phone.username.length < 18 + ) { + this.addErrorNotification( + "Неккоретный номер телефона", + "Введите мобильный номер, состоящий из 11 цифр" ); return false; } From 86d64bc77150a3dc04b5793d95be186aac24a25f Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Wed, 14 Dec 2022 17:46:24 +0300 Subject: [PATCH 2/3] =?UTF-8?q?WIP=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/LoggedInLayout.vue | 9 +++++- src/components/TheHeader.vue | 2 ++ src/components/base/BaseClientFormCreate.vue | 2 ++ src/pages/clients/TheClients.vue | 4 ++- src/pages/clients/components/ClientsTable.vue | 30 +++++++++++++++---- .../clients/components/ClientsTableHat.vue | 9 ++++-- .../clients/components/ClientsTableRow.vue | 9 ++++-- .../clients/components/ClientsWrapper.vue | 4 ++- 8 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/components/LoggedInLayout.vue b/src/components/LoggedInLayout.vue index 6d6bed7..2db4834 100644 --- a/src/components/LoggedInLayout.vue +++ b/src/components/LoggedInLayout.vue @@ -6,6 +6,7 @@ :close-form="closeForm", :open-form="openForm", :set-updated-clients="setUpdatedClients", + :write-created-client-id="writeCreatedClientId" ) .flex.flex-auto the-sidebar @@ -14,7 +15,8 @@ :is-open-form="isOpenForm", :updated-clients="updatedClients", @reset-updated-clients="resetUpdatedClients", - :url="url" + :url="url", + :created-client-id="createdClientId" ) the-notification-provider @@ -32,6 +34,7 @@ export default { isOpenForm: false, updatedClients: false, url: "http://45.84.227.122:8080", + createdClientId: "", }; }, methods: { @@ -46,6 +49,10 @@ export default { }, resetUpdatedClients() { this.updatedClients = false; + this.createdClientId = ""; + }, + writeCreatedClientId(id) { + this.createdClientId = id; }, }, }; diff --git a/src/components/TheHeader.vue b/src/components/TheHeader.vue index 96f134b..35926a9 100644 --- a/src/components/TheHeader.vue +++ b/src/components/TheHeader.vue @@ -5,6 +5,7 @@ v-if="isOpenForm", :close-form="closeForm", :set-updated-clients="setUpdatedClients", + :write-created-client-id="writeCreatedClientId", ) .flex.items-center.box-border.cursor-pointer.mr-auto img.logo-img.mr-29_25px(src="@/assets/images/logo.svg", alt="Logo") @@ -60,6 +61,7 @@ export default { closeForm: Function, isOpenForm: Boolean, setUpdatedClients: Function, + writeCreatedClientId: Function, }, data() { return { diff --git a/src/components/base/BaseClientFormCreate.vue b/src/components/base/BaseClientFormCreate.vue index b3fc7f7..5595f5d 100644 --- a/src/components/base/BaseClientFormCreate.vue +++ b/src/components/base/BaseClientFormCreate.vue @@ -111,6 +111,7 @@ export default { props: { closeForm: Function, setUpdatedClients: Function, + writeCreatedClientId: Function, }, data() { return { @@ -325,6 +326,7 @@ export default { this.createIdentityDocument(result.id); this.createAddress(result.id); this.createContacts(result.id); + this.writeCreatedClientId(result.id); this.setUpdatedClients(); this.addSuccessNotification(); } else { diff --git a/src/pages/clients/TheClients.vue b/src/pages/clients/TheClients.vue index 273ad2a..62b363a 100644 --- a/src/pages/clients/TheClients.vue +++ b/src/pages/clients/TheClients.vue @@ -4,7 +4,8 @@ :is-open-form="isOpenForm", :updated-clients="updatedClients", @reset-updated-clients="transmitReset", - :url="url" + :url="url", + :created-client-id="createdClientId" ) @@ -18,6 +19,7 @@ export default { isOpenForm: Boolean, updatedClients: Boolean, url: String, + createdClientId: String, }, methods: { transmitReset() { diff --git a/src/pages/clients/components/ClientsTable.vue b/src/pages/clients/components/ClientsTable.vue index 14e40ce..e352a98 100644 --- a/src/pages/clients/components/ClientsTable.vue +++ b/src/pages/clients/components/ClientsTable.vue @@ -13,6 +13,7 @@ :clearing-text-search="clearingTextSearch", :change-clearing-text-search="changeClearingTextSearch", @search="filterDataClients", + :created-client-name="createdClientName", ) .flex.flex-col.h-full.table-container.w-full.mt-8.mb-3 base-modal(v-model="showMedicalCard") @@ -30,7 +31,9 @@ :deleted-client-id="deletedRowId", :update-data-client="updateDataClient", :fetch-data-clients="fetchDataClients", + :fetch-created-client-data="fetchCreatedClientData", :create-medical-card="createMedicalCard", + :created-client-name="createdClientName", @delete-client="deleteClientHandler", @recover-client="clearDeletedRowId", ) @@ -83,6 +86,7 @@ export default { isOpenForm: Boolean, updatedClients: Boolean, url: String, + createdClientId: String, }, data() { @@ -108,6 +112,7 @@ export default { deletedRowId: "", clearingTextSearch: false, showMedicalCard: false, + createdClientName: "", }; }, computed: { @@ -117,6 +122,7 @@ export default { }, methods: { updateDataClient() { + this.clearCreatedClientName(); if (this.textSearch) this.filteredClientsCount -= 1; else this.clientsCount -= 1; if (this.dataClients.find(({ id }) => id === this.deletedRowId)) { @@ -134,6 +140,7 @@ export default { if (!this.filteredClientsCoun) this.filteredClientsCount = data.count; }, filterDataClients(text) { + this.clearCreatedClientName(); if (text) { this.textSearch = text; this.filteredClientsCount = 0; @@ -171,6 +178,18 @@ export default { }; } }, + async fetchCreatedClientData() { + fetchWrapper + .get(`general/person/${this.createdClientId}/detail/`) + .then((response) => { + this.dataClients = [response]; + this.createdClientName = `${response.last_name} ${response.first_name} ${response.patronymic}`; + this.paginationInfo = { + currentPage: 0, + length: 0, + }; + }); + }, calculatePageCount(count) { return Math.ceil(count / this.limit); }, @@ -226,19 +245,18 @@ export default { }, changeClearingTextSearch() { this.clearingTextSearch = false; + this.clearCreatedClientName(); + }, + clearCreatedClientName() { + this.createdClientName = ""; }, }, watch: { updatedClients() { if (this.updatedClients === true) { this.textSearch = ""; - this.clearingTextSearch = true; this.clientsCount += 1; - if ( - this.currentTablePage !== this.calculatePageCount(this.clientsCount) - ) - this.currentTablePage = this.calculatePageCount(this.clientsCount); - else this.fetchDataClients(); + this.fetchCreatedClientData(); this.$emit("reset-updated-clients"); } }, diff --git a/src/pages/clients/components/ClientsTableHat.vue b/src/pages/clients/components/ClientsTableHat.vue index e9c4884..9a522a7 100644 --- a/src/pages/clients/components/ClientsTableHat.vue +++ b/src/pages/clients/components/ClientsTableHat.vue @@ -11,6 +11,7 @@ ) .icon-search base-button.font-semibold( + v-if="createdClientName === ''", @click="searchLastName", :size=40 ) Поиск @@ -43,6 +44,7 @@ export default { isOpenActions: Number, clearingTextSearch: Boolean, changeClearingTextSearch: Function, + createdClientName: String, }, data() { return { @@ -51,7 +53,7 @@ export default { }, methods: { searchLastName() { - if (this.searchClient.length >= 3) + if (this.searchClient.length >= 3 && !this.createdClientName) this.$emit("search", this.searchClient); }, resetLastName() { @@ -59,6 +61,9 @@ export default { }, }, watch: { + createdClientName() { + if (this.createdClientName) this.searchClient = this.createdClientName; + }, searchClient() { if (!this.searchClient && !this.clearingTextSearch) { this.$emit("search"); @@ -76,5 +81,5 @@ export default { diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue index 48a58dc..391a9ee 100644 --- a/src/pages/clients/components/ClientsTableRow.vue +++ b/src/pages/clients/components/ClientsTableRow.vue @@ -188,6 +188,8 @@ export default { url: String, fetchDataClients: Function, createMedicalCard: Function, + fetchCreatedClientData: Function, + createdClientName: String, }, computed: { rowOverlay() { @@ -207,7 +209,7 @@ export default { this.timer = null; }, startTimer() { - this.countdown = 30; + this.countdown = 600; this.timer = setInterval(() => { this.changeCountdown(); }, 1000); @@ -260,7 +262,10 @@ export default { .post(`general/person/${this.client.id}/update/`, { ...data, }) - .then(() => this.fetchDataClients()); + .then(() => { + if (this.createdClientName) this.fetchCreatedClientData; + else this.fetchDataClients(); + }); }, postContactsClient() { let contacts = [...this.dataClient.contacts]; diff --git a/src/pages/clients/components/ClientsWrapper.vue b/src/pages/clients/components/ClientsWrapper.vue index b146d32..37c20fe 100644 --- a/src/pages/clients/components/ClientsWrapper.vue +++ b/src/pages/clients/components/ClientsWrapper.vue @@ -5,7 +5,8 @@ :is-open-form="isOpenForm", :updated-clients="updatedClients", @reset-updated-clients="transmitReset", - :url="url" + :url="url", + :created-client-id="createdClientId" ) @@ -19,6 +20,7 @@ export default { isOpenForm: Boolean, updatedClients: Boolean, url: String, + createdClientId: String, }, methods: { transmitReset() { From e09e707ec9e88dbc769ab7860223d92f3ec16068 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Wed, 14 Dec 2022 18:47:14 +0300 Subject: [PATCH 3/3] =?UTF-8?q?WIP=20=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/clients/components/ClientsTable.vue | 12 ++++-- .../clients/components/ClientsTableRow.vue | 40 ++++++++++++------- .../components/cells/TableCellBodyName.vue | 5 +-- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/pages/clients/components/ClientsTable.vue b/src/pages/clients/components/ClientsTable.vue index e352a98..4dc7774 100644 --- a/src/pages/clients/components/ClientsTable.vue +++ b/src/pages/clients/components/ClientsTable.vue @@ -122,12 +122,18 @@ export default { }, methods: { updateDataClient() { - this.clearCreatedClientName(); if (this.textSearch) this.filteredClientsCount -= 1; else this.clientsCount -= 1; if (this.dataClients.find(({ id }) => id === this.deletedRowId)) { - if (this.dataClients.length === 1) this.currentTablePage -= 1; - else this.fetchDataClients(); + if (this.createdClientName) { + this.clearingTextSearch = true; + this.currentTablePage === 1 + ? this.fetchDataClients() + : (this.currentTablePage = 1); + } else { + if (this.dataClients.length === 1) this.currentTablePage -= 1; + else this.fetchDataClients(); + } } }, saveDataClients(data) { diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue index 391a9ee..7f372c1 100644 --- a/src/pages/clients/components/ClientsTableRow.vue +++ b/src/pages/clients/components/ClientsTableRow.vue @@ -11,13 +11,13 @@ @click="(e) => openDetailInfo(e)", :class="{'row-overlay-color': rowOverlay}" ) - .flex.items-center.px-2( - v-show="!isOpenChange", - :tabindex="1", - @click="(e) => openPopup(e)", - @blur="handleUnFocusPopup" - ) - .relative.dots-button.icon-dots.cursor-pointer.leading-6.text-center + .dots-wrapper.flex.items-center.px-2 + .relative.dots-button.icon-dots.cursor-pointer.leading-6.text-center( + v-show="!isOpenChange && !rowOverlay", + :tabindex="1", + @click="(e) => openPopup(e)", + @blur="handleUnFocusPopup" + ) clients-action-popup( v-if="isOpenPopup", :open-change-data="openChangeData", @@ -25,8 +25,9 @@ @delete-client="transmitDeleteClient", :create-medical-card="createMedicalCard" ) - .dots.flex.justify-center.items-center(v-if="!rowOverlay") - .flex.z-10(v-if="isOpenChange", class="pl-[10px]") + .flex.z-10( + v-if="isOpenChange && !rowOverlay", + ) base-button( @click="closeChangeData", confirm, @@ -209,7 +210,7 @@ export default { this.timer = null; }, startTimer() { - this.countdown = 600; + this.countdown = 30; this.timer = setInterval(() => { this.changeCountdown(); }, 1000); @@ -339,7 +340,10 @@ export default { username: contact.username, person_id: this.client.id, }) - .then(() => this.fetchDataClients()); + .then(() => { + if (this.createdClientName) this.fetchCreatedClientData; + else this.fetchDataClients(); + }); }, postUpdateContact(contact) { fetchWrapper @@ -348,12 +352,16 @@ export default { username: contact.username, person_id: this.client.id, }) - .then(() => this.fetchDataClients()); + .then(() => { + if (this.createdClientName) this.fetchCreatedClientData; + else this.fetchDataClients(); + }); }, postDeleteContact(contact) { - fetchWrapper - .del(`general/contact/${contact.id}/delete/`) - .then(() => this.fetchDataClients()); + fetchWrapper.del(`general/contact/${contact.id}/delete/`).then(() => { + if (this.createdClientName) this.fetchCreatedClientData; + else this.fetchDataClients(); + }); }, addNetwork(network) { this.dataClient.contacts.push(network); @@ -703,4 +711,6 @@ export default { overflow: hidden .closed-detail .detail max-height: 0 +.dots-wrapper + width: 36px diff --git a/src/pages/clients/components/cells/TableCellBodyName.vue b/src/pages/clients/components/cells/TableCellBodyName.vue index a5935b8..b9cbd46 100644 --- a/src/pages/clients/components/cells/TableCellBodyName.vue +++ b/src/pages/clients/components/cells/TableCellBodyName.vue @@ -1,7 +1,6 @@