Merge pull request #168 from dderbentsov/UC-90

[WIP] Добавил аватары на страницу календаря...
This commit is contained in:
frontgavrilin
2022-12-01 18:19:34 +03:00
committed by GitHub
13 changed files with 79 additions and 38 deletions

View File

@@ -12,7 +12,8 @@
:open-form="openForm",
:is-open-form="isOpenForm",
:updated-clients="updatedClients",
@reset-updated-clients="resetUpdatedClients"
@reset-updated-clients="resetUpdatedClients",
:url="url"
)
the-notification-provider
</template>
@@ -29,6 +30,7 @@ export default {
return {
isOpenForm: false,
updatedClients: false,
url: "http://45.84.227.122:8080",
};
},
methods: {

View File

@@ -13,8 +13,8 @@
)
.icon-download.text-xl(v-if="img === defaultIcon")
.wrapper-img.flex.w-10.h-10(v-else)
img.current-avatar(:src="img")
base-popup.right-5.top-7(v-if="showPopup", :width="230")
img.current-avatar.object-cover(:src="img")
base-popup.right-5.top-7(v-if="showPopup", v-click-outside="closePopup", :width="230")
.flex.items-center.gap-x-2
img(src="@/assets/icons/computer.svg")
span.text-smm(@click="changeOpenModal") Загрузить с компьютера
@@ -33,8 +33,8 @@
@change="(e) => previewImages(e)"
)
.avatar.flex.absolute.items-center.gap-x-6(v-for="img in image")
img.avatar(for="image-upload", :src="img", v-if="img")
base-button(:rounded="true", :size="48", @click="closeModal")
img.avatar.object-cover(for="image-upload", :src="img", v-if="img")
base-button(:rounded="true", :size="48", @click="closeAddImage")
.icon-ok
base-input.w-full(v-model:value="infoClient.basic.full_name" placeholder="ФИО*")
.flex.flex-col.flex-auto.l.gap-y-8
@@ -222,10 +222,6 @@ export default {
},
},
methods: {
closeModal() {
this.showModal = false;
this.showPopup = false;
},
previewImages(event) {
this.image = [];
var pictures = event.target.files;
@@ -238,6 +234,13 @@ export default {
}
this.imageData = [...this.imageData, ...event.target.files];
},
closeAddImage() {
this.showModal = false;
this.showPopup = false;
},
closePopup() {
this.showPopup = false;
},
createIdentityDocument(id) {
Object.keys(
this.filterDataEmptyProperty(this.infoClient.identity_document.pass)
@@ -258,6 +261,26 @@ export default {
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() {
const formData = new FormData();
formData.append("full_name", this.infoClient.basic.full_name);
@@ -269,12 +292,14 @@ export default {
let foundElement = this.prioritySettings.settings.find(
(el) => el.priority === this.infoClient.basic.priority.id
);
if (foundElement) formData.append("priority", foundElement.priority);
if (foundElement.priority)
formData.append("priority", foundElement.priority);
fetchWrapper
.post("general/person/create/", formData, "formData")
.then((result) => {
this.createIdentityDocument(result.id);
this.createAddress(result.id);
this.createContacts(result.id);
this.addSuccessNotification();
});
this.$emit("update-client");
@@ -385,7 +410,7 @@ export default {
watch: {
showModal: function () {
if (this.showModal === false) {
this.closeModal();
this.closeAddImage();
}
},
},

View File

@@ -1,12 +1,14 @@
<template lang="pug">
.calendar-container.flex
calendar-sidebar(
@width="changeWidth",
:url="url",
:team-data="employeesData",
:open-form-create="openFormCreateEvent",
:event-types="eventTypes"
:event-types="eventTypes",
@width="changeWidth",
)
calendar-schedule(
:url="url",
:owners-data="employeesData",
:current-date="currentDate",
:time-information="timeInformation",
@@ -60,6 +62,9 @@ export default {
BaseModal,
CalendarDeleteModal,
},
props: {
url: String,
},
data() {
return {
sidebarWidth: "72px",

View File

@@ -3,8 +3,8 @@
.header.flex.items-center.justify-between.py-2.px-6.top-0
.flex.items-center
base-avatar.mr-2(:size="32", :color="ownerData.color")
img(
:src="ownerData.avatar",
img.h-full.object-cover(
:src="url + ownerData.avatar",
alt="Team member",
v-if="ownerData.avatar"
)
@@ -47,6 +47,7 @@ export default {
eventTypes: Array,
changeFormWasClosed: Boolean,
scheduleBodyRef: Node,
url: String,
},
data() {
return {

View File

@@ -20,6 +20,7 @@
v-for="(owner, index) in filteredOwners",
:key="owner.id",
:owner-data="owner",
:url="url",
:day-events="filterEventsByOwner(owner)",
:day-start-time="validateStartTime",
:day-end-time="validateEndTime",
@@ -69,6 +70,7 @@ export default {
CalendarColumn,
},
props: {
url: String,
changeFormWasClosed: Boolean,
currentDate: {
type: Object,
@@ -170,6 +172,7 @@ export default {
first_name: elem.first_name,
patronymic: elem.patronymic,
color: elem.color,
avatar: elem.photo,
});
});
return filteredArray;

View File

@@ -20,7 +20,7 @@
v-else
) Создать событие
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
base-button(
left-icon="icon-long-arrow",
@@ -48,6 +48,7 @@ export default {
teamData: Array,
openFormCreate: Function,
eventTypes: Array,
url: String,
},
data() {
return {

View File

@@ -3,21 +3,21 @@
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")
base-avatar(:size="32", :color="teammate.color")
img(:src="teammate.avatar" alt="Team member" v-if="teammate.avatar")
span(v-if="!teammate.avatar") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
img.h-full.object-cover(:src="url + teammate.photo", alt="Team member", v-if="teammate.photo")
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.items-center.justify-between
.flex.text-base.font-bold Команды
base-button(left-icon="icon-plus", rounded, :size="24", :icon-left-size="10", secondary)
.box-team.flex.flex-col.gap-y-2
.team-card.flex.items-center.justify-between.cursor-pointer(
v-for="teammate in teamData"
v-for="teammate in teamData",
:key="teammate.id"
)
.flex.items-center
base-avatar(:size="32" :color="teammate.color")
img(:src="teammate.avatar" alt="Team member" v-if="teammate.avatar")
span(v-if="!teammate.avatar") {{`${teammate.last_name[0]}${teammate.first_name[0]}`}}
base-avatar(:size="32", :color="teammate.color")
img.h-full.object-cover(:src="url + teammate.photo", alt="Team member", v-if="teammate.photo")
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) }}
span.icon-change-place.cursor-pointer.w-5.flex.items-center.justify-center.w-6.h-6
</template>
@@ -30,6 +30,7 @@ export default {
props: {
teamData: Array,
isOpen: Boolean,
url: String,
},
components: {
BaseButton,

View File

@@ -3,7 +3,8 @@
:open-form="openForm",
:is-open-form="isOpenForm",
:updated-clients="updatedClients",
@reset-updated-clients="transmitReset"
@reset-updated-clients="transmitReset",
:url="url"
)
</template>
@@ -16,6 +17,7 @@ export default {
openForm: Function,
isOpenForm: Boolean,
updatedClients: Boolean,
url: String,
},
methods: {
transmitReset() {

View File

@@ -12,6 +12,7 @@
v-for="client in dataClients",
:key="client.id",
:id="client.id",
:url="url",
:is-check="marked.includes(client.id)",
:check="selectedCheck",
:client="client",
@@ -64,6 +65,7 @@ export default {
openForm: Function,
isOpenForm: Boolean,
updatedClients: Boolean,
url: String,
},
data() {

View File

@@ -10,7 +10,7 @@
.row-body.flex.w-full.cursor-pointer(
:id="id",
@click="(e) => openDetailInfo(e)",
:class="{'row-overlay-color': rowOverlay}"
:class="{'row-overlay-color': rowOverlay}",
ref="rowBody"
)
.check-box.flex.justify-center.items-center(
@@ -26,7 +26,8 @@
:value="dataClient",
:avatar="dataClient.avatar",
:avatar-color="dataClient.color",
:photo="dataClient.photo"
:photo="dataClient.photo",
:url="url",
:is-open-change="isOpenChange",
:width="columnBody.find(el => el.name === 'fullName').width"
)
@@ -81,7 +82,7 @@
)
clients-action-popup(
v-if="isOpenPopup",
:open-change-data="openChangeData"
:open-change-data="openChangeData",
@delete-client="transmitDeleteClient"
)
client-detail-info-wrapper(
@@ -172,6 +173,7 @@ export default {
isCheck: Boolean,
client: Object,
rowOverlay: Boolean,
url: String,
},
computed: {
rowSize() {

View File

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

View File

@@ -12,7 +12,7 @@
:width-input="277"
)
.flex.flex-col(class="gap-y-1.5")
span.text-sm Кем и когда выдан
span.text-sm Кем выдан
base-input.input-info(
v-model:value="identityDocument.pass.issued_by_org",
placeholder="Точно как в паспорте",
@@ -47,7 +47,7 @@
.flex.flex-col(class="gap-y-1.5")
span.text-sm Номер ИНН
base-input.input-info(
v-mask="'##########'",
v-mask="'############'",
v-model:value="identityDocument.inn.numba",
placeholder="000000000000",
:width-input="277"

View File

@@ -2,9 +2,9 @@
.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", v-else)
img.h-full(:src="url + photo")
img.h-full.object-cover(:src="url + photo")
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>
<script>
@@ -18,14 +18,9 @@ export default {
avatar: String,
photo: String,
width: Number,
imgUrl: String,
isOpenChange: Boolean,
avatarColor: String,
},
data() {
return {
url: "http://45.84.227.122:8080",
};
url: String,
},
};
</script>