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 9f5d07d..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 {
@@ -415,7 +417,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;
}
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..4dc7774 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: {
@@ -120,8 +125,15 @@ export default {
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) {
@@ -134,6 +146,7 @@ export default {
if (!this.filteredClientsCoun) this.filteredClientsCount = data.count;
},
filterDataClients(text) {
+ this.clearCreatedClientName();
if (text) {
this.textSearch = text;
this.filteredClientsCount = 0;
@@ -171,6 +184,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 +251,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..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,
@@ -188,6 +189,8 @@ export default {
url: String,
fetchDataClients: Function,
createMedicalCard: Function,
+ fetchCreatedClientData: Function,
+ createdClientName: String,
},
computed: {
rowOverlay() {
@@ -260,7 +263,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];
@@ -334,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
@@ -343,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);
@@ -698,4 +711,6 @@ export default {
overflow: hidden
.closed-detail .detail
max-height: 0
+.dots-wrapper
+ width: 36px
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() {
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 @@
- .flex.box-border.px-4.items-center.gap-x-3.w-full.text-sm(
+ .flex.box-border.px-8.pr-4.items-center.gap-x-3.w-full.text-sm(
:style="{ minWidth : width + 'px', maxWidth : width + 'px' }",
- :class="{'open-change': isOpenChange}"
)
base-avatar(:size="36", :color="avatarColor", v-if="!photo") {{avatar}}
base-avatar(:size="36", v-else)
@@ -42,6 +41,4 @@ export default {
border-radius: 50%
background-color: var(--font-grey-color)
color: var(--font-dark-blue-color)
-.open-change
- padding-left: 36px