Merge pull request #200 from dderbentsov/UC-165

WIP Сделан переход на клиента при создании
This commit is contained in:
Daria Golova
2022-12-14 19:04:00 +03:00
committed by GitHub
9 changed files with 109 additions and 33 deletions

View File

@@ -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
</template>
@@ -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;
},
},
};

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -4,7 +4,8 @@
:is-open-form="isOpenForm",
:updated-clients="updatedClients",
@reset-updated-clients="transmitReset",
:url="url"
:url="url",
:created-client-id="createdClientId"
)
</template>
@@ -18,6 +19,7 @@ export default {
isOpenForm: Boolean,
updatedClients: Boolean,
url: String,
createdClientId: String,
},
methods: {
transmitReset() {

View File

@@ -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");
}
},

View File

@@ -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 {
<style lang="sass" scoped>
.input
width: 280px
min-width: 280px
</style>

View File

@@ -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
</style>

View File

@@ -5,7 +5,8 @@
:is-open-form="isOpenForm",
:updated-clients="updatedClients",
@reset-updated-clients="transmitReset",
:url="url"
:url="url",
:created-client-id="createdClientId"
)
</template>
@@ -19,6 +20,7 @@ export default {
isOpenForm: Boolean,
updatedClients: Boolean,
url: String,
createdClientId: String,
},
methods: {
transmitReset() {

View File

@@ -1,7 +1,6 @@
<template lang="pug">
.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
</style>