WIP Сделано модальное окно, начат overlay

This commit is contained in:
Daria Golova
2022-11-30 16:01:04 +03:00
parent 5ed39c0038
commit 8dbfff1a10
6 changed files with 162 additions and 100 deletions

View File

@@ -18,6 +18,7 @@
--bg-btn-icons-color: rgba(215, 217, 255, 0.6) --bg-btn-icons-color: rgba(215, 217, 255, 0.6)
--font-grey-color: #9294a7 --font-grey-color: #9294a7
--border-light-grey-color: #d3d4dc --border-light-grey-color: #d3d4dc
--row-overlay-color: #f5f6ff
--default-shadow: 4px 4px 8px rgba(9, 10, 21, 0.1), -4px -4px 8px rgba(9, 10, 21, 0.1) --default-shadow: 4px 4px 8px rgba(9, 10, 21, 0.1), -4px -4px 8px rgba(9, 10, 21, 0.1)
--bg-hover-row-table: rgba(215, 217, 255, 0.25) --bg-hover-row-table: rgba(215, 217, 255, 0.25)
--default-white: #fff --default-white: #fff

View File

@@ -1,6 +1,6 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.mb-1.mt-4 .flex.flex-col.mb-1.mt-4
span.font-medium.text-base.modal-text.mb-3 Вы действительно хотите удалить клиента? span.font-medium.text-base.modal-text Вы действительно хотите удалить клиента?
.flex.gap-x-3.mt-6.font-semibold .flex.gap-x-3.mt-6.font-semibold
base-button( base-button(
outlined, outlined,
@@ -10,7 +10,7 @@
base-button( base-button(
outlined-red, outlined-red,
:size=40, :size=40,
@click="deleteEvent" @click=""
) Удалить ) Удалить
</template> </template>
@@ -32,8 +32,8 @@ export default {
color: var(--font-grey-color) color: var(--font-grey-color)
.card-container .card-container
width: 374px width: 420px
height: 82px height: 194px
border-radius: 4px border-radius: 4px
border: 1px solid var(--border-light-grey-color-1) border: 1px solid var(--border-light-grey-color-1)
</style> </style>

View File

@@ -8,7 +8,7 @@
.button.keep-redaction.flex.gap-x-3 .button.keep-redaction.flex.gap-x-3
.icon-star-off.icon .icon-star-off.icon
span На ведение span На ведение
.button.delete.flex.gap-x-3(@click="deleteClient") .button.delete.flex.gap-x-3(@click="transmitDeleteClient")
.icon-basket.icon-delete .icon-basket.icon-delete
span Удалить span Удалить
</template> </template>
@@ -18,7 +18,11 @@ export default {
name: "ClientsActionPopup", name: "ClientsActionPopup",
props: { props: {
openChangeData: Function, openChangeData: Function,
deleteClient: Function, },
methods: {
transmitDeleteClient() {
this.$emit("delete-client");
},
}, },
}; };
</script> </script>

View File

@@ -15,8 +15,9 @@
:is-check="marked.includes(client.id)", :is-check="marked.includes(client.id)",
:check="selectedCheck", :check="selectedCheck",
:client="client", :client="client",
:fetch-data-clients="fetchDataClients", :current-year="currentYear",
@update-clients="updateDataClient" :row-overlay="deletedClientId === client.id",
@delete-client="deleteClientHandler",
) )
client-table-pagination( client-table-pagination(
v-if="paginationInfo.length > 1" v-if="paginationInfo.length > 1"
@@ -29,6 +30,9 @@
v-model="showModal", v-model="showModal",
title="Удалить клиента" title="Удалить клиента"
) )
client-table-delete-modal(
:close-modal="changeShowModal"
)
</template> </template>
<script> <script>
@@ -40,6 +44,7 @@ import ClientsTableCheckbox from "@/pages/clients/components/ClientsTableCheckbo
import BaseClientFormCreate from "@/components/base/BaseClientFormCreate"; import BaseClientFormCreate from "@/components/base/BaseClientFormCreate";
import ClientTablePagination from "./ClientTablePagination.vue"; import ClientTablePagination from "./ClientTablePagination.vue";
import BaseModal from "@/components/base/BaseModal.vue"; import BaseModal from "@/components/base/BaseModal.vue";
import ClientTableDeleteModal from "./ClientTableDeleteModal.vue";
export default { export default {
name: "ClientsTable", name: "ClientsTable",
components: { components: {
@@ -50,6 +55,7 @@ export default {
BaseClientFormCreate, BaseClientFormCreate,
ClientTablePagination, ClientTablePagination,
BaseModal, BaseModal,
ClientTableDeleteModal,
}, },
props: { props: {
openForm: Function, openForm: Function,
@@ -63,14 +69,15 @@ export default {
marked: [], marked: [],
dataClients: [], dataClients: [],
currentTablePage: 1, currentTablePage: 1,
limit: 4, limit: 14,
count: 0, count: 0,
textSearch: "", textSearch: "",
paginationInfo: { paginationInfo: {
currentPage: 0, currentPage: 0,
length: 0, length: 0,
}, },
showModal: true, showModal: false,
deletedClientId: "",
}; };
}, },
computed: { computed: {
@@ -144,6 +151,17 @@ export default {
changeCurrentTablePage(value) { changeCurrentTablePage(value) {
this.currentTablePage = value; this.currentTablePage = value;
}, },
changeShowModal() {
this.showModal = false;
},
openModal() {
this.showModal = true;
},
deleteClientHandler(id) {
this.deletedClientId = id;
console.log(this.deletedClientId);
this.openModal();
},
}, },
watch: { watch: {
updatedClients() { updatedClients() {
@@ -160,6 +178,9 @@ export default {
currentTablePage() { currentTablePage() {
this.fetchDataClients(); this.fetchDataClients();
}, },
/*showModal() {
if (!this.showModal) this.deletedClientId = "";
},*/
}, },
mounted() { mounted() {
this.fetchDataClients(); this.fetchDataClients();

View File

@@ -9,12 +9,11 @@
placeholder="Введите фамилию" placeholder="Введите фамилию"
) )
.icon-search .icon-search
base-button( base-button.font-semibold(
outlined,
@click="searchLastName", @click="searchLastName",
:size=40 :size=40
) Поиск ) Поиск
base-button( base-button.font-semibold(
v-if="searchClient.length > 0", v-if="searchClient.length > 0",
secondary, secondary,
@click="resetLastName", @click="resetLastName",

View File

@@ -1,16 +1,27 @@
<template lang="pug"> <template lang="pug">
.row-wrapper.flex.flex-col.w-full .wrapper.flex
.row-overlay.flex.justify-center.items-center.gap-x-2.text-base(
v-if="rowOverlay",
:style="rowSize"
)
button.recover-btn Восстановить
div 0:30
.row-wrapper.flex.flex-col.w-full(ref="rowWrapper")
.row-body.flex.w-full.cursor-pointer( .row-body.flex.w-full.cursor-pointer(
:id="id", :id="id",
@click="(e) => openDetailInfo(e)" @click="(e) => openDetailInfo(e)",
:class="{'row-overlay-color': rowOverlay}"
)
.check-box.flex.justify-center.items-center(
:style="{'opacity': rowOverlay && '0.5'}"
) )
.check-box.flex.justify-center.items-center
clients-table-checkbox( clients-table-checkbox(
:id="id", :id="id",
:check="check", :check="check",
:is-check="isCheck" :is-check="isCheck"
) )
table-cell-body-name( table-cell-body-name(
:style="{'opacity': rowOverlay && '0.5'}"
:value="dataClient", :value="dataClient",
:avatar="dataClient.avatar", :avatar="dataClient.avatar",
:avatar-color="dataClient.color", :avatar-color="dataClient.color",
@@ -19,34 +30,39 @@
:width="columnBody.find(el => el.name === 'fullName').width" :width="columnBody.find(el => el.name === 'fullName').width"
) )
table-cell-body-age( table-cell-body-age(
v-if="!rowOverlay",
:value="dataClient", :value="dataClient",
:is-open-change="isOpenChange", :is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'age').width" :width="columnBody.find(el => el.name === 'age').width"
) )
table-cell-body-priority( table-cell-body-priority(
v-if="!rowOverlay",
:value="dataClient.priority", :value="dataClient.priority",
:choose-priority="choosePriority", :choose-priority="choosePriority",
:is-open-change="isOpenChange", :is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'priority').width" :width="columnBody.find(el => el.name === 'priority').width"
) )
table-cell-body-phone( table-cell-body-phone(
v-if="!rowOverlay",
:value="dataClient", :value="dataClient",
:is-open-change="isOpenChange", :is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'phone').width" :width="columnBody.find(el => el.name === 'phone').width"
) )
table-cell-body-email( table-cell-body-email(
v-if="!rowOverlay",
:value="dataClient", :value="dataClient",
:is-open-change="isOpenChange", :is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'email').width" :width="columnBody.find(el => el.name === 'email').width"
) )
table-cell-body-networks( table-cell-body-networks(
v-if="!rowOverlay",
:delete-network="deleteNetwork", :delete-network="deleteNetwork",
:add-network="addNetwork", :add-network="addNetwork",
:networks="dataClient.contacts", :networks="dataClient.contacts",
:is-open-change="isOpenChange", :is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'networks').width" :width="columnBody.find(el => el.name === 'networks').width"
) )
.dots.flex.justify-center.items-center .dots.flex.justify-center.items-center(v-if="!rowOverlay")
base-button( base-button(
v-if="isOpenChange", v-if="isOpenChange",
@click="closeChangeData", @click="closeChangeData",
@@ -65,10 +81,10 @@
clients-action-popup( clients-action-popup(
v-if="isOpenPopup", v-if="isOpenPopup",
:open-change-data="openChangeData" :open-change-data="openChangeData"
:delete-client="deleteClient" @delete-client="transmitDeleteClient"
) )
client-detail-info-wrapper( client-detail-info-wrapper(
v-if="isOpenDetailInfo" v-if="isOpenDetailInfo && !rowOverlay",
:data-address="dataAddress" :data-address="dataAddress"
:data-detail="dataDetail" :data-detail="dataDetail"
:data-attachments="dataAttachments" :data-attachments="dataAttachments"
@@ -85,6 +101,7 @@
:create-document="postCreateIdentityDocument" :create-document="postCreateIdentityDocument"
:address-id="addressId" :address-id="addressId"
:doc-id="docId" :doc-id="docId"
:current-year="currentYear"
) )
</template> </template>
@@ -152,6 +169,8 @@ export default {
check: Function, check: Function,
isCheck: Boolean, isCheck: Boolean,
client: Object, client: Object,
currentYear: Number,
rowOverlay: Boolean,
}, },
created() { created() {
this.dataClient = { this.dataClient = {
@@ -183,6 +202,15 @@ export default {
photo: this.client.photo, photo: this.client.photo,
}; };
}, },
computed: {
rowSize() {
let size = this.$refs["rowWrapper"].getBoundingClientRect();
return {
height: `${size.height}px`,
width: `${size.width}px`,
};
},
},
methods: { methods: {
postUpdateClient() { postUpdateClient() {
fetchWrapper.post(`general/person/${this.client.id}/update/`, { fetchWrapper.post(`general/person/${this.client.id}/update/`, {
@@ -271,10 +299,11 @@ export default {
openChangeData() { openChangeData() {
this.isOpenChange = true; this.isOpenChange = true;
}, },
async deleteClient() { transmitDeleteClient() {
await fetchWrapper.del(`general/person/${this.dataClient.id}/delete/`); /* await fetchWrapper.del(`general/person/${this.dataClient.id}/delete/`);
this.handleUnFocusPopup(); this.handleUnFocusPopup();
this.$emit("update-clients"); this.$emit("update-clients");*/
this.$emit("delete-client", this.dataClient.id);
}, },
fetchClientDetail(id) { fetchClientDetail(id) {
fetchWrapper fetchWrapper
@@ -456,4 +485,12 @@ export default {
&:hover &:hover
background-color: var(--btn-blue-color) background-color: var(--btn-blue-color)
color: var(--default-white) color: var(--default-white)
.row-overlay
background: transparent
position: absolute
z-index: 100
.row-overlay-color
background: var(--row-overlay-color)
.recover-btn
color: var(--btn-blue-color)
</style> </style>