Merge pull request #168 from dderbentsov/UC-90
[WIP] Добавил аватары на страницу календаря...
This commit is contained in:
@@ -12,7 +12,8 @@
|
|||||||
:open-form="openForm",
|
:open-form="openForm",
|
||||||
:is-open-form="isOpenForm",
|
:is-open-form="isOpenForm",
|
||||||
:updated-clients="updatedClients",
|
:updated-clients="updatedClients",
|
||||||
@reset-updated-clients="resetUpdatedClients"
|
@reset-updated-clients="resetUpdatedClients",
|
||||||
|
:url="url"
|
||||||
)
|
)
|
||||||
the-notification-provider
|
the-notification-provider
|
||||||
</template>
|
</template>
|
||||||
@@ -29,6 +30,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
isOpenForm: false,
|
isOpenForm: false,
|
||||||
updatedClients: false,
|
updatedClients: false,
|
||||||
|
url: "http://45.84.227.122:8080",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
)
|
)
|
||||||
.icon-download.text-xl(v-if="img === defaultIcon")
|
.icon-download.text-xl(v-if="img === defaultIcon")
|
||||||
.wrapper-img.flex.w-10.h-10(v-else)
|
.wrapper-img.flex.w-10.h-10(v-else)
|
||||||
img.current-avatar(:src="img")
|
img.current-avatar.object-cover(:src="img")
|
||||||
base-popup.right-5.top-7(v-if="showPopup", :width="230")
|
base-popup.right-5.top-7(v-if="showPopup", v-click-outside="closePopup", :width="230")
|
||||||
.flex.items-center.gap-x-2
|
.flex.items-center.gap-x-2
|
||||||
img(src="@/assets/icons/computer.svg")
|
img(src="@/assets/icons/computer.svg")
|
||||||
span.text-smm(@click="changeOpenModal") Загрузить с компьютера
|
span.text-smm(@click="changeOpenModal") Загрузить с компьютера
|
||||||
@@ -33,8 +33,8 @@
|
|||||||
@change="(e) => previewImages(e)"
|
@change="(e) => previewImages(e)"
|
||||||
)
|
)
|
||||||
.avatar.flex.absolute.items-center.gap-x-6(v-for="img in image")
|
.avatar.flex.absolute.items-center.gap-x-6(v-for="img in image")
|
||||||
img.avatar(for="image-upload", :src="img", v-if="img")
|
img.avatar.object-cover(for="image-upload", :src="img", v-if="img")
|
||||||
base-button(:rounded="true", :size="48", @click="closeModal")
|
base-button(:rounded="true", :size="48", @click="closeAddImage")
|
||||||
.icon-ok
|
.icon-ok
|
||||||
base-input.w-full(v-model:value="infoClient.basic.full_name" placeholder="ФИО*")
|
base-input.w-full(v-model:value="infoClient.basic.full_name" placeholder="ФИО*")
|
||||||
.flex.flex-col.flex-auto.l.gap-y-8
|
.flex.flex-col.flex-auto.l.gap-y-8
|
||||||
@@ -222,10 +222,6 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
closeModal() {
|
|
||||||
this.showModal = false;
|
|
||||||
this.showPopup = false;
|
|
||||||
},
|
|
||||||
previewImages(event) {
|
previewImages(event) {
|
||||||
this.image = [];
|
this.image = [];
|
||||||
var pictures = event.target.files;
|
var pictures = event.target.files;
|
||||||
@@ -238,6 +234,13 @@ export default {
|
|||||||
}
|
}
|
||||||
this.imageData = [...this.imageData, ...event.target.files];
|
this.imageData = [...this.imageData, ...event.target.files];
|
||||||
},
|
},
|
||||||
|
closeAddImage() {
|
||||||
|
this.showModal = false;
|
||||||
|
this.showPopup = false;
|
||||||
|
},
|
||||||
|
closePopup() {
|
||||||
|
this.showPopup = false;
|
||||||
|
},
|
||||||
createIdentityDocument(id) {
|
createIdentityDocument(id) {
|
||||||
Object.keys(
|
Object.keys(
|
||||||
this.filterDataEmptyProperty(this.infoClient.identity_document.pass)
|
this.filterDataEmptyProperty(this.infoClient.identity_document.pass)
|
||||||
@@ -258,6 +261,26 @@ export default {
|
|||||||
person_id: id,
|
person_id: id,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
createContacts(id) {
|
||||||
|
if (this.infoClient.phone.username)
|
||||||
|
fetchWrapper.post("general/contact/create/", {
|
||||||
|
...this.filterDataEmptyProperty(this.infoClient.phone),
|
||||||
|
person_id: id,
|
||||||
|
});
|
||||||
|
if (this.infoClient.email.username)
|
||||||
|
fetchWrapper.post("general/contact/create/", {
|
||||||
|
...this.filterDataEmptyProperty(this.infoClient.email),
|
||||||
|
person_id: id,
|
||||||
|
});
|
||||||
|
this.infoClient.basic.contacts.forEach((el) => {
|
||||||
|
if (el.username)
|
||||||
|
fetchWrapper.post("general/contact/create/", {
|
||||||
|
kind: el.kind,
|
||||||
|
username: el.username,
|
||||||
|
person_id: id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
postNewClient() {
|
postNewClient() {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("full_name", this.infoClient.basic.full_name);
|
formData.append("full_name", this.infoClient.basic.full_name);
|
||||||
@@ -269,12 +292,14 @@ export default {
|
|||||||
let foundElement = this.prioritySettings.settings.find(
|
let foundElement = this.prioritySettings.settings.find(
|
||||||
(el) => el.priority === this.infoClient.basic.priority.id
|
(el) => el.priority === this.infoClient.basic.priority.id
|
||||||
);
|
);
|
||||||
if (foundElement) formData.append("priority", foundElement.priority);
|
if (foundElement.priority)
|
||||||
|
formData.append("priority", foundElement.priority);
|
||||||
fetchWrapper
|
fetchWrapper
|
||||||
.post("general/person/create/", formData, "formData")
|
.post("general/person/create/", formData, "formData")
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
this.createIdentityDocument(result.id);
|
this.createIdentityDocument(result.id);
|
||||||
this.createAddress(result.id);
|
this.createAddress(result.id);
|
||||||
|
this.createContacts(result.id);
|
||||||
this.addSuccessNotification();
|
this.addSuccessNotification();
|
||||||
});
|
});
|
||||||
this.$emit("update-client");
|
this.$emit("update-client");
|
||||||
@@ -385,7 +410,7 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
showModal: function () {
|
showModal: function () {
|
||||||
if (this.showModal === false) {
|
if (this.showModal === false) {
|
||||||
this.closeModal();
|
this.closeAddImage();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.calendar-container.flex
|
.calendar-container.flex
|
||||||
calendar-sidebar(
|
calendar-sidebar(
|
||||||
@width="changeWidth",
|
:url="url",
|
||||||
:team-data="employeesData",
|
:team-data="employeesData",
|
||||||
:open-form-create="openFormCreateEvent",
|
:open-form-create="openFormCreateEvent",
|
||||||
:event-types="eventTypes"
|
:event-types="eventTypes",
|
||||||
|
@width="changeWidth",
|
||||||
)
|
)
|
||||||
calendar-schedule(
|
calendar-schedule(
|
||||||
|
:url="url",
|
||||||
:owners-data="employeesData",
|
:owners-data="employeesData",
|
||||||
:current-date="currentDate",
|
:current-date="currentDate",
|
||||||
:time-information="timeInformation",
|
:time-information="timeInformation",
|
||||||
@@ -60,6 +62,9 @@ export default {
|
|||||||
BaseModal,
|
BaseModal,
|
||||||
CalendarDeleteModal,
|
CalendarDeleteModal,
|
||||||
},
|
},
|
||||||
|
props: {
|
||||||
|
url: String,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
sidebarWidth: "72px",
|
sidebarWidth: "72px",
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
.header.flex.items-center.justify-between.py-2.px-6.top-0
|
.header.flex.items-center.justify-between.py-2.px-6.top-0
|
||||||
.flex.items-center
|
.flex.items-center
|
||||||
base-avatar.mr-2(:size="32", :color="ownerData.color")
|
base-avatar.mr-2(:size="32", :color="ownerData.color")
|
||||||
img(
|
img.h-full.object-cover(
|
||||||
:src="ownerData.avatar",
|
:src="url + ownerData.avatar",
|
||||||
alt="Team member",
|
alt="Team member",
|
||||||
v-if="ownerData.avatar"
|
v-if="ownerData.avatar"
|
||||||
)
|
)
|
||||||
@@ -47,6 +47,7 @@ export default {
|
|||||||
eventTypes: Array,
|
eventTypes: Array,
|
||||||
changeFormWasClosed: Boolean,
|
changeFormWasClosed: Boolean,
|
||||||
scheduleBodyRef: Node,
|
scheduleBodyRef: Node,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
v-for="(owner, index) in filteredOwners",
|
v-for="(owner, index) in filteredOwners",
|
||||||
:key="owner.id",
|
:key="owner.id",
|
||||||
:owner-data="owner",
|
:owner-data="owner",
|
||||||
|
:url="url",
|
||||||
:day-events="filterEventsByOwner(owner)",
|
:day-events="filterEventsByOwner(owner)",
|
||||||
:day-start-time="validateStartTime",
|
:day-start-time="validateStartTime",
|
||||||
:day-end-time="validateEndTime",
|
:day-end-time="validateEndTime",
|
||||||
@@ -69,6 +70,7 @@ export default {
|
|||||||
CalendarColumn,
|
CalendarColumn,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
url: String,
|
||||||
changeFormWasClosed: Boolean,
|
changeFormWasClosed: Boolean,
|
||||||
currentDate: {
|
currentDate: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -170,6 +172,7 @@ export default {
|
|||||||
first_name: elem.first_name,
|
first_name: elem.first_name,
|
||||||
patronymic: elem.patronymic,
|
patronymic: elem.patronymic,
|
||||||
color: elem.color,
|
color: elem.color,
|
||||||
|
avatar: elem.photo,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return filteredArray;
|
return filteredArray;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
v-else
|
v-else
|
||||||
) Создать событие
|
) Создать событие
|
||||||
calendar-sidebar-event(:is-open="isOpen", :event-type="eventTypes")
|
calendar-sidebar-event(:is-open="isOpen", :event-type="eventTypes")
|
||||||
calendar-sidebar-teammate(:team-data="teamData", :is-open="isOpen")
|
calendar-sidebar-teammate(:team-data="teamData", :is-open="isOpen", :url="url")
|
||||||
//- .button-wrapper.flex.justify-center.mb-23px
|
//- .button-wrapper.flex.justify-center.mb-23px
|
||||||
base-button(
|
base-button(
|
||||||
left-icon="icon-long-arrow",
|
left-icon="icon-long-arrow",
|
||||||
@@ -48,6 +48,7 @@ export default {
|
|||||||
teamData: Array,
|
teamData: Array,
|
||||||
openFormCreate: Function,
|
openFormCreate: Function,
|
||||||
eventTypes: Array,
|
eventTypes: Array,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -3,21 +3,21 @@
|
|||||||
base-button.mb-2(left-icon="icon-plus", rounded, :size="24", :icon-left-size="10", secondary)
|
base-button.mb-2(left-icon="icon-plus", rounded, :size="24", :icon-left-size="10", secondary)
|
||||||
.team-card(v-for="teammate in teamData" :key="teammate.id")
|
.team-card(v-for="teammate in teamData" :key="teammate.id")
|
||||||
base-avatar(:size="32", :color="teammate.color")
|
base-avatar(:size="32", :color="teammate.color")
|
||||||
img(:src="teammate.avatar" alt="Team member" v-if="teammate.avatar")
|
img.h-full.object-cover(:src="url + teammate.photo", alt="Team member", v-if="teammate.photo")
|
||||||
span(v-if="!teammate.avatar") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
|
span(v-if="!teammate.photo") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
|
||||||
.flex.flex-col.gap-y-4.w-full(v-else, :style="{ color: 'var(--font-dark-blue-color)' }")
|
.flex.flex-col.gap-y-4.w-full(v-else, :style="{ color: 'var(--font-dark-blue-color)' }")
|
||||||
.flex.items-center.justify-between
|
.flex.items-center.justify-between
|
||||||
.flex.text-base.font-bold Команды
|
.flex.text-base.font-bold Команды
|
||||||
base-button(left-icon="icon-plus", rounded, :size="24", :icon-left-size="10", secondary)
|
base-button(left-icon="icon-plus", rounded, :size="24", :icon-left-size="10", secondary)
|
||||||
.box-team.flex.flex-col.gap-y-2
|
.box-team.flex.flex-col.gap-y-2
|
||||||
.team-card.flex.items-center.justify-between.cursor-pointer(
|
.team-card.flex.items-center.justify-between.cursor-pointer(
|
||||||
v-for="teammate in teamData"
|
v-for="teammate in teamData",
|
||||||
:key="teammate.id"
|
:key="teammate.id"
|
||||||
)
|
)
|
||||||
.flex.items-center
|
.flex.items-center
|
||||||
base-avatar(:size="32" :color="teammate.color")
|
base-avatar(:size="32", :color="teammate.color")
|
||||||
img(:src="teammate.avatar" alt="Team member" v-if="teammate.avatar")
|
img.h-full.object-cover(:src="url + teammate.photo", alt="Team member", v-if="teammate.photo")
|
||||||
span(v-if="!teammate.avatar") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
|
span(v-if="!teammate.photo") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
|
||||||
.flex.ml-2.not-italic.font-medium.text-xxs {{ changeName(teammate.last_name, teammate.first_name, teammate.patronymic) }}
|
.flex.ml-2.not-italic.font-medium.text-xxs {{ changeName(teammate.last_name, teammate.first_name, teammate.patronymic) }}
|
||||||
span.icon-change-place.cursor-pointer.w-5.flex.items-center.justify-center.w-6.h-6
|
span.icon-change-place.cursor-pointer.w-5.flex.items-center.justify-center.w-6.h-6
|
||||||
</template>
|
</template>
|
||||||
@@ -30,6 +30,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
teamData: Array,
|
teamData: Array,
|
||||||
isOpen: Boolean,
|
isOpen: Boolean,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
BaseButton,
|
BaseButton,
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
:open-form="openForm",
|
:open-form="openForm",
|
||||||
:is-open-form="isOpenForm",
|
:is-open-form="isOpenForm",
|
||||||
:updated-clients="updatedClients",
|
:updated-clients="updatedClients",
|
||||||
@reset-updated-clients="transmitReset"
|
@reset-updated-clients="transmitReset",
|
||||||
|
:url="url"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -16,6 +17,7 @@ export default {
|
|||||||
openForm: Function,
|
openForm: Function,
|
||||||
isOpenForm: Boolean,
|
isOpenForm: Boolean,
|
||||||
updatedClients: Boolean,
|
updatedClients: Boolean,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
transmitReset() {
|
transmitReset() {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
v-for="client in dataClients",
|
v-for="client in dataClients",
|
||||||
:key="client.id",
|
:key="client.id",
|
||||||
:id="client.id",
|
:id="client.id",
|
||||||
|
:url="url",
|
||||||
:is-check="marked.includes(client.id)",
|
:is-check="marked.includes(client.id)",
|
||||||
:check="selectedCheck",
|
:check="selectedCheck",
|
||||||
:client="client",
|
:client="client",
|
||||||
@@ -64,6 +65,7 @@ export default {
|
|||||||
openForm: Function,
|
openForm: Function,
|
||||||
isOpenForm: Boolean,
|
isOpenForm: Boolean,
|
||||||
updatedClients: Boolean,
|
updatedClients: Boolean,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
.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}"
|
:class="{'row-overlay-color': rowOverlay}",
|
||||||
ref="rowBody"
|
ref="rowBody"
|
||||||
)
|
)
|
||||||
.check-box.flex.justify-center.items-center(
|
.check-box.flex.justify-center.items-center(
|
||||||
@@ -26,7 +26,8 @@
|
|||||||
:value="dataClient",
|
:value="dataClient",
|
||||||
:avatar="dataClient.avatar",
|
:avatar="dataClient.avatar",
|
||||||
:avatar-color="dataClient.color",
|
:avatar-color="dataClient.color",
|
||||||
:photo="dataClient.photo"
|
:photo="dataClient.photo",
|
||||||
|
:url="url",
|
||||||
:is-open-change="isOpenChange",
|
:is-open-change="isOpenChange",
|
||||||
:width="columnBody.find(el => el.name === 'fullName').width"
|
:width="columnBody.find(el => el.name === 'fullName').width"
|
||||||
)
|
)
|
||||||
@@ -81,7 +82,7 @@
|
|||||||
)
|
)
|
||||||
clients-action-popup(
|
clients-action-popup(
|
||||||
v-if="isOpenPopup",
|
v-if="isOpenPopup",
|
||||||
:open-change-data="openChangeData"
|
:open-change-data="openChangeData",
|
||||||
@delete-client="transmitDeleteClient"
|
@delete-client="transmitDeleteClient"
|
||||||
)
|
)
|
||||||
client-detail-info-wrapper(
|
client-detail-info-wrapper(
|
||||||
@@ -172,6 +173,7 @@ export default {
|
|||||||
isCheck: Boolean,
|
isCheck: Boolean,
|
||||||
client: Object,
|
client: Object,
|
||||||
rowOverlay: Boolean,
|
rowOverlay: Boolean,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
rowSize() {
|
rowSize() {
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
:open-form="openForm",
|
:open-form="openForm",
|
||||||
:is-open-form="isOpenForm",
|
:is-open-form="isOpenForm",
|
||||||
:updated-clients="updatedClients",
|
:updated-clients="updatedClients",
|
||||||
@reset-updated-clients="transmitReset"
|
@reset-updated-clients="transmitReset",
|
||||||
|
:url="url"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ export default {
|
|||||||
openForm: Function,
|
openForm: Function,
|
||||||
isOpenForm: Boolean,
|
isOpenForm: Boolean,
|
||||||
updatedClients: Boolean,
|
updatedClients: Boolean,
|
||||||
|
url: String,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
transmitReset() {
|
transmitReset() {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
:width-input="277"
|
:width-input="277"
|
||||||
)
|
)
|
||||||
.flex.flex-col(class="gap-y-1.5")
|
.flex.flex-col(class="gap-y-1.5")
|
||||||
span.text-sm Кем и когда выдан
|
span.text-sm Кем выдан
|
||||||
base-input.input-info(
|
base-input.input-info(
|
||||||
v-model:value="identityDocument.pass.issued_by_org",
|
v-model:value="identityDocument.pass.issued_by_org",
|
||||||
placeholder="Точно как в паспорте",
|
placeholder="Точно как в паспорте",
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
.flex.flex-col(class="gap-y-1.5")
|
.flex.flex-col(class="gap-y-1.5")
|
||||||
span.text-sm Номер ИНН
|
span.text-sm Номер ИНН
|
||||||
base-input.input-info(
|
base-input.input-info(
|
||||||
v-mask="'##########'",
|
v-mask="'############'",
|
||||||
v-model:value="identityDocument.inn.numba",
|
v-model:value="identityDocument.inn.numba",
|
||||||
placeholder="000000000000",
|
placeholder="000000000000",
|
||||||
:width-input="277"
|
:width-input="277"
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
.flex.box-border.px-4.items-center.gap-x-3.w-full.text-sm(:style="{ minWidth : width + 'px' }")
|
.flex.box-border.px-4.items-center.gap-x-3.w-full.text-sm(:style="{ minWidth : width + 'px' }")
|
||||||
base-avatar(:size="36", :color="avatarColor", v-if="!photo") {{avatar}}
|
base-avatar(:size="36", :color="avatarColor", v-if="!photo") {{avatar}}
|
||||||
base-avatar(:size="36", v-else)
|
base-avatar(:size="36", v-else)
|
||||||
img.h-full(:src="url + photo")
|
img.h-full.object-cover(:src="url + photo")
|
||||||
span.font-semibold(v-if="!isOpenChange") {{value.fullName}}
|
span.font-semibold(v-if="!isOpenChange") {{value.fullName}}
|
||||||
base-input(v-if="isOpenChange" type="text" v-model:value="value.fullName" :width-input="300")
|
base-input(v-if="isOpenChange", type="text", v-model:value="value.fullName", :width-input="300")
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -18,14 +18,9 @@ export default {
|
|||||||
avatar: String,
|
avatar: String,
|
||||||
photo: String,
|
photo: String,
|
||||||
width: Number,
|
width: Number,
|
||||||
imgUrl: String,
|
|
||||||
isOpenChange: Boolean,
|
isOpenChange: Boolean,
|
||||||
avatarColor: String,
|
avatarColor: String,
|
||||||
},
|
url: String,
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
url: "http://45.84.227.122:8080",
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user