Merge pull request #168 from dderbentsov/UC-90
[WIP] Добавил аватары на страницу календаря...
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user