From f5c045998cf9325590dc371e58eef3b7c0c0a58f Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Mon, 31 Oct 2022 23:13:06 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=A4=D0=98=D0=9E=20=D0=B8=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8F=20=D0=B2=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.js | 4 +- src/components/base/BaseSelect.vue | 16 ++--- src/pages/calendar/TheCalendar.vue | 23 ++++--- .../components/CalendarFormAddEvent.vue | 65 +++++++++++++++---- .../calendar/components/CalendarSchedule.vue | 41 ++++-------- 5 files changed, 89 insertions(+), 60 deletions(-) diff --git a/server.js b/server.js index 84d67da..e9284ac 100644 --- a/server.js +++ b/server.js @@ -494,7 +494,7 @@ export function clientsServer() { id: "db831a14-e836-481f-a653-6325de7c311e", last_name: "Жмыхов", first_name: "Егор", - patronymic: "Сергеевич", + patronymic: "Александрович", }, role: null, }, @@ -537,7 +537,7 @@ export function clientsServer() { id: "db831a14-e836-481f-a653-6325de7c311e", last_name: "Жмыхов", first_name: "Егор", - patronymic: "Сергеевич", + patronymic: "Александрович", }, role: "owner", }, diff --git a/src/components/base/BaseSelect.vue b/src/components/base/BaseSelect.vue index f03dc5b..674afaa 100644 --- a/src/components/base/BaseSelect.vue +++ b/src/components/base/BaseSelect.vue @@ -15,21 +15,21 @@ :id="id" ) .option.px-4.py-1( - v-for="responsible in listData" + v-for="data in listData" @click="(e) => chooseOption(e)" - :key="responsible" - :id="responsible" - ) {{responsible}} + :key="data.id || data" + :id="data.id || data" + ) {{data.name || data}} .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( v-show="isSelectOpen" :id="id") .flex.option.justify-center.py-1.text-xl( - v-for="responsible in listData" + v-for="data in listData" @click="(e) => chooseOption(e)" - :key="responsible.network" - :id="responsible.network" - :class="responsible.icon" + :key="data.network" + :id="data.network" + :class="data.icon" ) .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}") diff --git a/src/pages/calendar/TheCalendar.vue b/src/pages/calendar/TheCalendar.vue index f54cb7e..a6d1ad0 100644 --- a/src/pages/calendar/TheCalendar.vue +++ b/src/pages/calendar/TheCalendar.vue @@ -1,9 +1,10 @@ diff --git a/src/pages/calendar/components/CalendarSchedule.vue b/src/pages/calendar/components/CalendarSchedule.vue index b07280d..4388c02 100644 --- a/src/pages/calendar/components/CalendarSchedule.vue +++ b/src/pages/calendar/components/CalendarSchedule.vue @@ -77,6 +77,12 @@ export default { }, }, sidebarWidth: String, + ownersData: { + type: Array, + default() { + return []; + }, + }, }, data() { return { @@ -138,34 +144,15 @@ export default { }, filteredOwners() { let filteredArray = []; - let ownerAbsence = { - id: null, - last_name: null, - first_name: null, - patronymic: null, - }; - 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); - } - } + this.ownersData.forEach((elem) => { + filteredArray.push({ + id: elem.id, + last_name: elem.last_name, + first_name: elem.first_name, + patronymic: elem.patronymic, + }); }); - return filteredArray.sort( - (previous, subsequent) => Boolean(subsequent.id) - Boolean(previous.id) - ); + return filteredArray; }, ownersCount() { return this.filteredOwners.length; From 19e71181b30287f30102c2e390d1f011ca8c7a80 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Tue, 1 Nov 2022 12:54:46 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=83=D1=87=D0=B0=D1=81=D1=82=D0=BD=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D0=BC=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/calendar/TheCalendar.vue | 8 ++ .../components/CalendarFormAddEvent.vue | 94 ++++++++++++++++--- 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/src/pages/calendar/TheCalendar.vue b/src/pages/calendar/TheCalendar.vue index a6d1ad0..71673c0 100644 --- a/src/pages/calendar/TheCalendar.vue +++ b/src/pages/calendar/TheCalendar.vue @@ -17,6 +17,7 @@ v-if="isOpenForm" :close-form="closeFormCreateEvent" :owners-data="employeesData" + :members-data="membersData" ) @@ -44,6 +45,7 @@ export default { eventsData: [], employeesData: [], isOpenForm: false, + membersData: [], }; }, methods: { @@ -62,6 +64,9 @@ export default { saveEmployeesData(res) { this.employeesData = res.results; }, + saveMembersData(res) { + this.membersData = res.results; + }, fetchEventsData() { fetch("http://45.84.227.122:8080/registry/event/") .then((res) => res.json()) @@ -69,6 +74,9 @@ export default { fetch("http://45.84.227.122:8080/general/employee/") .then((res) => res.json()) .then((res) => this.saveEmployeesData(res)); + fetch("http://45.84.227.122:8080/general/person/") + .then((res) => res.json()) + .then((res) => this.saveMembersData(res)); }, changeWidth(value) { this.sidebarWidth = value; diff --git a/src/pages/calendar/components/CalendarFormAddEvent.vue b/src/pages/calendar/components/CalendarFormAddEvent.vue index 9fe4810..ef19055 100644 --- a/src/pages/calendar/components/CalendarFormAddEvent.vue +++ b/src/pages/calendar/components/CalendarFormAddEvent.vue @@ -5,9 +5,9 @@ span.text-xs.opacity-40.font-bold.leading-3 Ответственный .icon-cancel.close-icon.text-xs.cursor-pointer(@click="closeForm") base-select( - :size-input="responsibleInputSize" + :size-input="ownerSelectSize" :option-data="ownerName" - :list-data="filteredOwners" + :list-data="ownersList" :choose-option="chooseOptionOwner" placeholder="Выберите ответственного" separator @@ -30,12 +30,18 @@ ) .flex.gap-x-4.items-center .icon-person.text-xl.icon - .form-item.cursor-pointer.flex.gap-x-2.px-4.py-2.items-center - input.item-input.cursor-text.text-base(v-model="eventData.eventClient" type="text" placeholder="ФИО клиента") + base-select( + :size-input="memberSelectSize" + :list-data="membersList" + :option-data="memberName" + :choose-option="chooseOptionMember" + placeholder="Выберите участника" + separator + ) .flex.flex-col.gap-y-2 span.text-xs.opacity-40.font-bold.leading-3 Вид события base-select( - :size-input="kindEventSize" + :size-input="kindEventSelectSize" :option-data="eventData.kindEvent" :list-data="kindEvents" :choose-option="chooseOptionTypeEvent" @@ -63,6 +69,7 @@ diff --git a/src/pages/calendar/components/CalendarFormAddEvent.vue b/src/pages/calendar/components/CalendarFormAddEvent.vue index ef19055..c422da0 100644 --- a/src/pages/calendar/components/CalendarFormAddEvent.vue +++ b/src/pages/calendar/components/CalendarFormAddEvent.vue @@ -1,16 +1,18 @@ @@ -97,31 +104,19 @@ export default { kindEventSelectSize: 10, memberSelectSize: 29, kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"], - eventData: { - start: "", - end: "", - kind: "", - members: [ - { - person: null, - role: null, - }, - ], - employees: [ - { - employee: null, - role: "owner", - }, - ], - contacts: [], - responsible: "", - eventClient: "", - timeEvent: { - firstTime: "", - secondTime: "", - }, - kindEvent: "", + eventData: {}, + members: { + member: null, + role: null, }, + contacts: [], + start: "", + end: "", + employees: { + employee: null, + role: "owner", + }, + kind: "", }; }, computed: { @@ -131,7 +126,7 @@ export default { this.ownersData.forEach((elem) => { filteredArray.push({ id: elem.id, - name: this.trimName(elem), + name: this.trimOwnerName(elem), }); }); return filteredArray; @@ -144,7 +139,8 @@ export default { this.membersData.forEach((elem) => { filteredArray.push({ id: elem.id, - name: `${elem.last_name} ${elem.first_name} ${elem.patronymic}`, + name: this.trimMemberName(elem), + contacts: elem.contacts, }); }); return filteredArray; @@ -152,53 +148,64 @@ export default { return []; }, ownerName() { - if (this.eventData.employees[0].employee) { - return this.trimName(this.eventData.employees[0].employee); + if (this.employees.employee) { + return this.trimOwnerName(this.employees.employee); } return ""; }, memberName() { - let data = this.eventData.members[0].person; - if (data) { - return `${data.last_name} ${data.first_name} ${data.patronymic}`; + if (this.members.member) { + return this.trimMemberName(this.members.member); } return ""; }, eventStartTime() { - if (this.eventData.start) { - console.log( - `${moment().format("YYYY-MM-DD")}T${this.eventData.start}:00Z` - ); - return `${moment().format("YYYY-MM-DD")}T${this.eventData.start}:00Z`; + if (this.start) { + return `${moment().format("YYYY-MM-DD")}T${this.start}:00Z`; } return ""; }, + eventEndTime() { + if (this.end) { + return `${moment().format("YYYY-MM-DD")}T${this.end}:00Z`; + } + return ""; + }, + disabledButton() { + if ( + this.eventStartTime && + this.eventEndTime && + this.employees.employee && + this.members.member && + this.kind + ) { + return false; + } + return true; + }, }, methods: { chooseOptionOwner(e) { let foundEmployee = this.ownersData.find( (elem) => elem.id === e.target.id ); - this.eventData.employees[0].employee = { + this.employees.employee = { id: foundEmployee.id, last_name: foundEmployee.last_name, first_name: foundEmployee.first_name, patronymic: foundEmployee.patronymic, }; - console.log(this.eventData.employees[0].employee); this.ownerSelectSize = this.ownerName.split(" ").join("").length; }, chooseOptionTypeEvent(e) { - this.eventData.kindEvent = e.target.id; - this.kindEventSelectSize = this.eventData.kindEvent - .split(" ") - .join("").length; + this.kind = e.target.id; + this.kindEventSelectSize = this.kind.split(" ").join("").length; }, chooseOptionMember(e) { let foundMember = this.membersData.find( (elem) => elem.id === e.target.id ); - this.eventData.members[0].person = { + this.members.member = { id: foundMember.id, last_name: foundMember.last_name, first_name: foundMember.first_name, @@ -212,9 +219,33 @@ export default { ); } }, - trimName(obj) { + trimOwnerName(obj) { return `${obj.last_name} ${obj.first_name[0]}.${obj.patronymic[0]}.`; }, + trimMemberName(obj) { + return `${obj.last_name} ${obj.first_name} ${obj.patronymic}`; + }, + addMember(memberName) { + let memberData = memberName.split(" "); + if (memberData.length === 3) { + this.members.member = { + id: null, + last_name: memberData[0], + first_name: memberData[1], + patronymic: memberData[2], + }; + } + }, + sendEventData() { + this.eventData = { + start: this.eventStartTime, + end: this.eventEndTime, + kind: this.kind, + employees: [this.employees], + members: [this.members], + }; + this.closeForm(); + }, }, };