Подтянула данные из карточки в расписание
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.header-wrapper.flex.justify-center.box-border.py-2.pl-4_75px.pr-6
|
.header-wrapper.flex.justify-center.box-border.py-2.pl-4_75px.pr-6
|
||||||
.flex.items-center.box-border.cursor-pointer.mr-auto
|
.flex.items-center.box-border.cursor-pointer.mr-auto
|
||||||
img.logo-img.mr-29_25px(src="@/assets/images/logo.svg" alt="Logo")
|
img.logo-img.mr-29_25px(src="@/assets/images/logo.svg", alt="Logo")
|
||||||
header-inputs
|
header-inputs
|
||||||
//- .charge-person-container
|
//- .charge-person-container
|
||||||
//- header-active-client-panel(:info="chargePersonInfo")
|
//- header-active-client-panel(:info="chargePersonInfo")
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
button.header-buttons.flex.justify-center.items-center.mr-8.p-0
|
button.header-buttons.flex.justify-center.items-center.mr-8.p-0
|
||||||
.icon-bell.text-xxl
|
.icon-bell.text-xxl
|
||||||
.flex.justify-centflexer.items-center
|
.flex.justify-centflexer.items-center
|
||||||
base-avatar(:size="32").mr-2
|
base-avatar.mr-2(:size="32")
|
||||||
img(:src="avatarSrc")
|
img(:src="avatarSrc", alt="Avatar")
|
||||||
button.header-buttons
|
button.header-buttons
|
||||||
.icon-down-arrow.text-xxs.flex.justify-center.items-center.p-0
|
.icon-down-arrow.text-xxs.flex.justify-center.items-center.p-0
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.calendar-container.flex
|
.calendar-container.flex
|
||||||
calendar-sidebar(@width="changeWidth"
|
calendar-sidebar(
|
||||||
:team-data="employeesData"
|
@width="changeWidth"
|
||||||
:open-form-create="openFormCreateEvent")
|
:team-data="employeesData"
|
||||||
|
:open-form-create="openFormCreateEvent"
|
||||||
|
)
|
||||||
calendar-schedule(
|
calendar-schedule(
|
||||||
:owners-data="employeesData"
|
:owners-data="employeesData"
|
||||||
:current-date="currentDate"
|
:current-date="currentDate"
|
||||||
:time-information="timeInformation"
|
:time-information="timeInformation"
|
||||||
:events-data="eventsData"
|
:events-data="eventsData"
|
||||||
:sidebar-width="sidebarWidth"
|
:sidebar-width="sidebarWidth"
|
||||||
|
:close-form-create-event="closeFormCreateEvent"
|
||||||
|
:is-open-form="isOpenForm"
|
||||||
@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"
|
|
||||||
:owners-data="employeesData"
|
|
||||||
:members-data="membersData"
|
|
||||||
)
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -82,7 +80,6 @@ export default {
|
|||||||
changeWidth(value) {
|
changeWidth(value) {
|
||||||
this.sidebarWidth = value;
|
this.sidebarWidth = value;
|
||||||
},
|
},
|
||||||
|
|
||||||
openFormCreateEvent() {
|
openFormCreateEvent() {
|
||||||
this.isOpenForm = true;
|
this.isOpenForm = true;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.flex.flex-col(
|
.flex.flex-col(
|
||||||
:style="backgroundExtendedWidth"
|
:style="backgroundExtendedWidth"
|
||||||
)
|
)
|
||||||
.flex.flex-col
|
.flex.flex-col
|
||||||
.line-wrapper
|
.line-wrapper
|
||||||
.line.flex.items-center(
|
.line.flex.items-center(
|
||||||
v-for="hour in timeCoil"
|
v-for="hour in timeCoil"
|
||||||
:key="hour"
|
:key="hour"
|
||||||
)
|
)
|
||||||
.middle-line
|
.middle-line
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
v-for="hour in timeCoil"
|
v-for="hour in timeCoil"
|
||||||
:key="hour"
|
:key="hour"
|
||||||
:class="currentHourStyle(hour)"
|
:class="currentHourStyle(hour)"
|
||||||
) {{ hour }}
|
) {{ hour }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
.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(:src="ownerData.avatar" alt="Team member" v-if="ownerData.avatar")
|
img(
|
||||||
|
:src="ownerData.avatar"
|
||||||
|
alt="Team member"
|
||||||
|
v-if="ownerData.avatar"
|
||||||
|
)
|
||||||
span(v-if="!ownerData.avatar") {{ defaultAvatar }}
|
span(v-if="!ownerData.avatar") {{ defaultAvatar }}
|
||||||
span.owner-name.font-medium.text-base.mr-6 {{ ownerName }}
|
span.owner-name.font-medium.text-base.mr-6 {{ ownerName }}
|
||||||
img.icon-wrapper.cursor-pointer(src="@/assets/icons/lock.svg")
|
img.icon-wrapper.cursor-pointer(src="@/assets/icons/lock.svg")
|
||||||
@@ -14,7 +18,8 @@
|
|||||||
:key="event.id"
|
:key="event.id"
|
||||||
:ownerEvent="event"
|
:ownerEvent="event"
|
||||||
:style="eventCardPosition(event.start, event.end)"
|
:style="eventCardPosition(event.start, event.end)"
|
||||||
)
|
@selected-event="transmitEventData"
|
||||||
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -79,6 +84,9 @@ export default {
|
|||||||
top: `${position}px`,
|
top: `${position}px`,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
transmitEventData(eventData) {
|
||||||
|
this.$emit("selected-event", eventData);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div.icon-wrap.flex.items-center.justify-center.cursor-pointer.py-1.px-2(
|
div.icon-wrap.flex.items-center.justify-center.cursor-pointer.py-1.px-2(
|
||||||
:class="{disable: !isChecked}"
|
:class="{disable: !isChecked}"
|
||||||
@click="changeState"
|
@click="changeState"
|
||||||
)
|
)
|
||||||
.icon-doc-ok.text-xxl
|
.icon-doc-ok.text-xxl
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.wrapper.flex.px-2.my-1.items-start.cursor-pointer(:style="cardHeight")
|
.wrapper.flex.px-2.my-1.items-start.cursor-pointer(:style="cardHeight", @click="transmitEventData")
|
||||||
.header.flex.justify-between.items-center
|
.header.flex.justify-between.items-center
|
||||||
.header-text
|
.header-text
|
||||||
span.inline-block.align-middle.font-bold.text-base.mr-4 {{ eventTime }}
|
span.inline-block.align-middle.font-bold.text-base.mr-4 {{ eventTime }}
|
||||||
@@ -61,6 +61,9 @@ export default {
|
|||||||
composeFullName(object) {
|
composeFullName(object) {
|
||||||
return `${object.last_name} ${object.first_name} ${object.patronymic}`;
|
return `${object.last_name} ${object.first_name} ${object.patronymic}`;
|
||||||
},
|
},
|
||||||
|
transmitEventData() {
|
||||||
|
this.$emit("selected-event", this.ownerEvent);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -21,15 +21,15 @@
|
|||||||
.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="start"
|
v-model="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="end"
|
v-model="end"
|
||||||
placeholder ="12:30"
|
placeholder ="12:30"
|
||||||
)
|
)
|
||||||
.flex.gap-x-4.items-center
|
.flex.gap-x-4.items-center
|
||||||
.icon-person.text-xl.icon
|
.icon-person.text-xl.icon
|
||||||
base-select(
|
base-select(
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
@changeInput="addMember"
|
@changeInput="addMember"
|
||||||
placeholder="Выберите участника"
|
placeholder="Выберите участника"
|
||||||
separator
|
separator
|
||||||
)
|
)
|
||||||
.flex.flex-col.gap-y-2
|
.flex.flex-col.gap-y-2
|
||||||
span.text-xs.opacity-40.font-bold.leading-3 Вид события
|
span.text-xs.opacity-40.font-bold.leading-3 Вид события
|
||||||
base-select(
|
base-select(
|
||||||
@@ -64,14 +64,21 @@
|
|||||||
:icon-left-size="10"
|
:icon-left-size="10"
|
||||||
id="addContact"
|
id="addContact"
|
||||||
@click="(e)=>addContact(e)")
|
@click="(e)=>addContact(e)")
|
||||||
.flex.gap-x-4.items-center(v-for="(contact, index) in listContacts" :key="index")
|
.flex.gap-x-4.items-center(
|
||||||
|
v-for="(contact, index) in listContacts"
|
||||||
|
:key="index"
|
||||||
|
)
|
||||||
.icon-mail.text-xl.icon
|
.icon-mail.text-xl.icon
|
||||||
.form-item.cursor-pointer.flex.gap-x-2.px-4.py-2.items-center
|
.form-item.cursor-pointer.flex.gap-x-2.px-4.py-2.items-center
|
||||||
input.item-input.cursor-text.text-base(v-model="contacts" type="text" placeholder="E-mail")
|
input.item-input.cursor-text.text-base(
|
||||||
|
v-model="contacts"
|
||||||
|
type="text"
|
||||||
|
placeholder="E-mail"
|
||||||
|
)
|
||||||
base-button.styled-button.text-base.font-semibold(
|
base-button.styled-button.text-base.font-semibold(
|
||||||
:size="40"
|
:size="40"
|
||||||
:disabled="disabledButton"
|
:disabled="disabledButton"
|
||||||
@click="sendEventData"
|
@click="sendEventData"
|
||||||
) Создать событие
|
) Создать событие
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
button#day.py-2.px-3(
|
button#day.py-2.px-3(
|
||||||
:class="dayLayoutState"
|
:class="dayLayoutState"
|
||||||
@click="changeSelectedLayout"
|
@click="changeSelectedLayout"
|
||||||
) День
|
) День
|
||||||
button#week.py-2.px-3(
|
button#week.py-2.px-3(
|
||||||
:class="weekLayoutState"
|
:class="weekLayoutState"
|
||||||
@click="changeSelectedLayout"
|
@click="changeSelectedLayout"
|
||||||
) Неделя
|
) Неделя
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.schedule.ml-2(
|
.schedule.ml-2(
|
||||||
:style="scheduleWidth"
|
:style="scheduleWidth"
|
||||||
)
|
)
|
||||||
calendar-header(
|
calendar-header(
|
||||||
:current-date="currentDate"
|
:current-date="currentDate"
|
||||||
:is-current-date="isCurrentDate"
|
:is-current-date="isCurrentDate"
|
||||||
@previous-date="previousDate"
|
@previous-date="previousDate"
|
||||||
@next-date="nextDate"
|
@next-date="nextDate"
|
||||||
@selected-layout="selectedLayout"
|
@selected-layout="selectedLayout"
|
||||||
)
|
)
|
||||||
.schedule-body
|
.schedule-body
|
||||||
.column-wrapper.flex.ml-20(:style="columnWrapperWidth")
|
.column-wrapper.flex.ml-20(:style="columnWrapperWidth")
|
||||||
calendar-column(
|
calendar-column(
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
:day-start-time="validateStartTime"
|
:day-start-time="validateStartTime"
|
||||||
:day-end-time="validateEndTime"
|
:day-end-time="validateEndTime"
|
||||||
:style="columnSize"
|
:style="columnSize"
|
||||||
|
@selected-event="writeEventData"
|
||||||
)
|
)
|
||||||
.flex.w-full.relative
|
.flex.w-full.relative
|
||||||
.time-coil-wrapper.left-0.-mt-12.pt-9
|
.time-coil-wrapper.left-0.-mt-12.pt-9
|
||||||
@@ -40,7 +41,13 @@
|
|||||||
calendar-background(
|
calendar-background(
|
||||||
:time-coil="timeCoil"
|
:time-coil="timeCoil"
|
||||||
:owners-count="ownersCount"
|
:owners-count="ownersCount"
|
||||||
)
|
)
|
||||||
|
calendar-form-add-event(
|
||||||
|
v-if="isOpenForm"
|
||||||
|
:close-form="closeFormCreateEvent"
|
||||||
|
:owners-data="ownersData"
|
||||||
|
:members-data="membersData"
|
||||||
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -49,6 +56,7 @@ import CalendarHeader from "./CalendarHeader.vue";
|
|||||||
import CalendarBackground from "./CalendarBackground.vue";
|
import CalendarBackground from "./CalendarBackground.vue";
|
||||||
import CalendarClockColumn from "./CalendarClockColumn.vue";
|
import CalendarClockColumn from "./CalendarClockColumn.vue";
|
||||||
import CalendarColumn from "./CalendarColumn.vue";
|
import CalendarColumn from "./CalendarColumn.vue";
|
||||||
|
import CalendarFormAddEvent from "./CalendarFormAddEvent.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "CalendarSchedule",
|
name: "CalendarSchedule",
|
||||||
components: {
|
components: {
|
||||||
@@ -56,6 +64,7 @@ export default {
|
|||||||
CalendarBackground,
|
CalendarBackground,
|
||||||
CalendarClockColumn,
|
CalendarClockColumn,
|
||||||
CalendarColumn,
|
CalendarColumn,
|
||||||
|
CalendarFormAddEvent,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
currentDate: {
|
currentDate: {
|
||||||
@@ -83,6 +92,14 @@ export default {
|
|||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
membersData: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
closeFormCreateEvent: Function,
|
||||||
|
isOpenForm: Boolean,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -94,6 +111,7 @@ export default {
|
|||||||
pixelsPerHour: 62,
|
pixelsPerHour: 62,
|
||||||
columnHeaderHeight: 48,
|
columnHeaderHeight: 48,
|
||||||
defaultColumnWidth: 470,
|
defaultColumnWidth: 470,
|
||||||
|
selectedEvent: {},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -284,6 +302,9 @@ export default {
|
|||||||
});
|
});
|
||||||
return filteredArray;
|
return filteredArray;
|
||||||
},
|
},
|
||||||
|
writeEventData(eventData) {
|
||||||
|
this.selectedEvent = eventData;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
currentTime() {
|
currentTime() {
|
||||||
|
|||||||
Reference in New Issue
Block a user