Настроила сохранение ФИО исполнителя в форме

This commit is contained in:
Daria Golova
2022-10-31 23:13:06 +03:00
parent 174745b182
commit f5c045998c
5 changed files with 89 additions and 60 deletions

View File

@@ -494,7 +494,7 @@ export function clientsServer() {
id: "db831a14-e836-481f-a653-6325de7c311e", id: "db831a14-e836-481f-a653-6325de7c311e",
last_name: "Жмыхов", last_name: "Жмыхов",
first_name: "Егор", first_name: "Егор",
patronymic: "Сергеевич", patronymic: "Александрович",
}, },
role: null, role: null,
}, },
@@ -537,7 +537,7 @@ export function clientsServer() {
id: "db831a14-e836-481f-a653-6325de7c311e", id: "db831a14-e836-481f-a653-6325de7c311e",
last_name: "Жмыхов", last_name: "Жмыхов",
first_name: "Егор", first_name: "Егор",
patronymic: "Сергеевич", patronymic: "Александрович",
}, },
role: "owner", role: "owner",
}, },

View File

@@ -15,21 +15,21 @@
:id="id" :id="id"
) )
.option.px-4.py-1( .option.px-4.py-1(
v-for="responsible in listData" v-for="data in listData"
@click="(e) => chooseOption(e)" @click="(e) => chooseOption(e)"
:key="responsible" :key="data.id || data"
:id="responsible" :id="data.id || data"
) {{responsible}} ) {{data.name || data}}
.flex.select.cursor-pointer.w-full.text-xl.items-center.networks(v-if="forNetworks" :class="optionData, 'px-2.5'") .flex.select.cursor-pointer.w-full.text-xl.items-center.networks(v-if="forNetworks" :class="optionData, 'px-2.5'")
.absolute.options.top-11.left-0( .absolute.options.top-11.left-0(
v-show="isSelectOpen" v-show="isSelectOpen"
:id="id") :id="id")
.flex.option.justify-center.py-1.text-xl( .flex.option.justify-center.py-1.text-xl(
v-for="responsible in listData" v-for="data in listData"
@click="(e) => chooseOption(e)" @click="(e) => chooseOption(e)"
:key="responsible.network" :key="data.network"
:id="responsible.network" :id="data.network"
:class="responsible.icon" :class="data.icon"
) )
.select-form-separator.cursor-pointer.mr-6px(v-if="separator") .select-form-separator.cursor-pointer.mr-6px(v-if="separator")
.text-xsm.ml-2.pt-1.icon-down-arrow.icon.text-center(v-if="!forNetworks" :class="{ open: isSelectOpen}") .text-xsm.ml-2.pt-1.icon-down-arrow.icon.text-center(v-if="!forNetworks" :class="{ open: isSelectOpen}")

View File

@@ -1,9 +1,10 @@
<template lang="pug"> <template lang="pug">
.calendar-container.flex .calendar-container.flex
calendar-sidebar(@width="changeWidth" calendar-sidebar(@width="changeWidth"
:team-data="teamData" :team-data="employeesData"
:open-form-create="openFormCreateEvent") :open-form-create="openFormCreateEvent")
calendar-schedule( calendar-schedule(
:owners-data="employeesData"
:current-date="currentDate" :current-date="currentDate"
:time-information="timeInformation" :time-information="timeInformation"
:events-data="eventsData" :events-data="eventsData"
@@ -11,8 +12,12 @@
@previous-date="switchPreviousDate" @previous-date="switchPreviousDate"
@next-date="switchNextDate" @next-date="switchNextDate"
@selected-layout="changeCalendarLayout" @selected-layout="changeCalendarLayout"
) )
calendar-form-add-event(v-if="isOpenForm" :close-form="closeFormCreateEvent") calendar-form-add-event(
v-if="isOpenForm"
:close-form="closeFormCreateEvent"
:owners-data="employeesData"
)
</template> </template>
<script> <script>
@@ -37,13 +42,13 @@ export default {
dayEndTime: "20:00", dayEndTime: "20:00",
}, },
eventsData: [], eventsData: [],
teamData: [], employeesData: [],
isOpenForm: false, isOpenForm: false,
}; };
}, },
methods: { methods: {
switchPreviousDate() { switchPreviousDate() {
this.currentDate = this.currentDate.clone().subtract(1, "day"); this.currentDate = this.currentDate.cloddContactne().subtract(1, "day");
}, },
switchNextDate() { switchNextDate() {
this.currentDate = this.currentDate.clone().add(1, "day"); this.currentDate = this.currentDate.clone().add(1, "day");
@@ -54,16 +59,16 @@ export default {
saveEventsData(res) { saveEventsData(res) {
this.eventsData = res.results; this.eventsData = res.results;
}, },
saveTeamData(res) { saveEmployeesData(res) {
this.teamData = res.results; this.employeesData = res.results;
}, },
fetchEventsData() { fetchEventsData() {
fetch("/registry/event/") fetch("http://45.84.227.122:8080/registry/event/")
.then((res) => res.json()) .then((res) => res.json())
.then((res) => this.saveEventsData(res)); .then((res) => this.saveEventsData(res));
fetch("http://45.84.227.122:8080/general/employee/") fetch("http://45.84.227.122:8080/general/employee/")
.then((res) => res.json()) .then((res) => res.json())
.then((res) => this.saveTeamData(res)); .then((res) => this.saveEmployeesData(res));
}, },
changeWidth(value) { changeWidth(value) {
this.sidebarWidth = value; this.sidebarWidth = value;

View File

@@ -1,14 +1,14 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.absolute.right-2.bottom-14 .flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.absolute.right-2.bottom-14(@click="output")
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.flex.justify-between.pt-2 .flex.justify-between.pt-2
span.text-xs.opacity-40.font-bold.leading-3 Ответственный span.text-xs.opacity-40.font-bold.leading-3 Ответственный
.icon-cancel.close-icon.text-xs.cursor-pointer(@click="closeForm") .icon-cancel.close-icon.text-xs.cursor-pointer(@click="closeForm")
base-select( base-select(
:size-input="responsibleInputSize" :size-input="responsibleInputSize"
:option-data="eventData.responsible" :option-data="ownerName"
:list-data="listResponsible" :list-data="filteredOwners"
:choose-option="chooseOptionResponsible" :choose-option="chooseOptionOwner"
placeholder="Выберите ответственного" placeholder="Выберите ответственного"
separator separator
) )
@@ -19,13 +19,13 @@
.flex.gap-x-2.items-center .flex.gap-x-2.items-center
.time-input.flex.gap-x-2.px-4.py-2.items-center .time-input.flex.gap-x-2.px-4.py-2.items-center
input.item-input.text-base.cursor-text( input.item-input.text-base.cursor-text(
v-model="eventData.timeEvent.firstTime" v-model="eventData.start"
placeholder ="11:00" placeholder ="11:00"
) )
span span
.time-input.flex.gap-x-2.px-4.py-2.items-center .time-input.flex.gap-x-2.px-4.py-2.items-center
input.item-input.text-base.cursor-text( input.item-input.text-base.cursor-text(
v-model="eventData.timeEvent.secondTime" v-model="eventData.end"
placeholder ="12:30" placeholder ="12:30"
) )
.flex.gap-x-4.items-center .flex.gap-x-4.items-center
@@ -70,8 +70,11 @@ export default {
components: { BaseSelect, BaseButton }, components: { BaseSelect, BaseButton },
props: { props: {
closeForm: Function, closeForm: Function,
listResponsible: { ownersData: {
default: ["Захарова А.О.", "Коломойцев И.К.", "Ситников А.Г."], type: Array,
default() {
return [];
},
}, },
}, },
data() { data() {
@@ -81,6 +84,17 @@ export default {
kindEventSize: 10, kindEventSize: 10,
kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"], kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"],
eventData: { eventData: {
start: "",
end: "",
kind: "",
members: [],
employees: [
{
employee: null,
role: "owner",
},
],
contacts: [],
responsible: "", responsible: "",
eventClient: "", eventClient: "",
timeEvent: { timeEvent: {
@@ -88,16 +102,36 @@ export default {
secondTime: "", secondTime: "",
}, },
kindEvent: "", kindEvent: "",
contacts: {},
}, },
}; };
}, },
computed: {
filteredOwners() {
if (this.ownersData) {
let filteredArray = [];
this.ownersData.forEach((elem) => {
filteredArray.push({
id: elem.id,
name: this.trimName(elem),
});
});
return filteredArray;
}
return ["Захарова А.О.", "Коломойцев И.К.", "Ситников А.Г."];
},
ownerName() {
if (this.eventData.employees[0].employee) {
return this.trimName(this.eventData.employees[0].employee);
}
return "";
},
},
methods: { methods: {
chooseOptionResponsible(e) { chooseOptionOwner(e) {
this.eventData.responsible = e.target.id; let foundEmployee = this.ownersData.find(
this.responsibleInputSize = this.eventData.responsible (elem) => elem.id === e.target.id.split(" ")[0]
.split(" ") );
.join("").length; this.eventData.employees[0].employee = foundEmployee;
}, },
chooseOptionTypeEvent(e) { chooseOptionTypeEvent(e) {
this.eventData.kindEvent = e.target.id; this.eventData.kindEvent = e.target.id;
@@ -110,6 +144,9 @@ export default {
); );
} }
}, },
trimName(obj) {
return `${obj.last_name} ${obj.first_name[0]}.${obj.patronymic[0]}.`;
},
}, },
}; };
</script> </script>

View File

@@ -77,6 +77,12 @@ export default {
}, },
}, },
sidebarWidth: String, sidebarWidth: String,
ownersData: {
type: Array,
default() {
return [];
},
},
}, },
data() { data() {
return { return {
@@ -138,34 +144,15 @@ export default {
}, },
filteredOwners() { filteredOwners() {
let filteredArray = []; let filteredArray = [];
let ownerAbsence = { this.ownersData.forEach((elem) => {
id: null, filteredArray.push({
last_name: null, id: elem.id,
first_name: null, last_name: elem.last_name,
patronymic: null, first_name: elem.first_name,
}; patronymic: elem.patronymic,
this.eventsData.forEach(({ employees }) => { });
let findedElement = employees.find((elem) => elem.role === "owner");
let emptyDataPresence = this.findObjectInArray(
filteredArray,
ownerAbsence
);
if (!findedElement && !emptyDataPresence) {
filteredArray.push(ownerAbsence);
}
if (findedElement) {
let ownerPresence = this.findObjectInArray(
filteredArray,
findedElement.employee
);
if (!ownerPresence) {
filteredArray.push(findedElement.employee);
}
}
}); });
return filteredArray.sort( return filteredArray;
(previous, subsequent) => Boolean(subsequent.id) - Boolean(previous.id)
);
}, },
ownersCount() { ownersCount() {
return this.filteredOwners.length; return this.filteredOwners.length;