Merge pull request #98 from dderbentsov/UC-43
WIP Поправила поля ввода даты
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,23 +1,23 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.calendar-container.flex
|
.calendar-container.flex
|
||||||
calendar-sidebar(@width="changeWidth"
|
calendar-sidebar(
|
||||||
|
@width="changeWidth"
|
||||||
:team-data="employeesData"
|
:team-data="employeesData"
|
||||||
:open-form-create="openFormCreateEvent")
|
: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"
|
||||||
|
:members-data="membersData"
|
||||||
: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"
|
||||||
)
|
@open-change-form="openFormCreateEvent"
|
||||||
calendar-form-add-event(
|
|
||||||
v-if="isOpenForm"
|
|
||||||
:close-form="closeFormCreateEvent"
|
|
||||||
:owners-data="employeesData"
|
|
||||||
:members-data="membersData"
|
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -82,7 +82,6 @@ export default {
|
|||||||
changeWidth(value) {
|
changeWidth(value) {
|
||||||
this.sidebarWidth = value;
|
this.sidebarWidth = value;
|
||||||
},
|
},
|
||||||
|
|
||||||
openFormCreateEvent() {
|
openFormCreateEvent() {
|
||||||
this.isOpenForm = true;
|
this.isOpenForm = true;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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,6 +18,7 @@
|
|||||||
: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>
|
||||||
|
|
||||||
@@ -79,6 +84,9 @@ export default {
|
|||||||
top: `${position}px`,
|
top: `${position}px`,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
transmitEventData(eventData) {
|
||||||
|
this.$emit("selected-event", eventData);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -19,17 +19,30 @@
|
|||||||
.flex.gap-x-4.items-center
|
.flex.gap-x-4.items-center
|
||||||
.icon-time.text-xl.icon
|
.icon-time.text-xl.icon
|
||||||
.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.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="startTime"
|
||||||
placeholder ="11:00"
|
placeholder ="11:00"
|
||||||
)
|
)
|
||||||
span —
|
span —
|
||||||
.time-input.flex.gap-x-2.px-4.py-2.items-center
|
.time-input.flex.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="endTime"
|
||||||
placeholder ="12:30"
|
placeholder ="12:30"
|
||||||
)
|
)
|
||||||
|
.flex.items-center.ml-10
|
||||||
|
.flex.gap-x-2.items-center
|
||||||
|
.date-input.flex.px-4.py-2.items-center
|
||||||
|
input.item-input.text-base.cursor-text(
|
||||||
|
v-model="startDate"
|
||||||
|
placeholder ="2022-10-01"
|
||||||
|
)
|
||||||
|
span —
|
||||||
|
.date-input.flex.px-4.py-2.items-center
|
||||||
|
input.item-input.text-base.cursor-text(
|
||||||
|
v-model="endDate"
|
||||||
|
placeholder ="2022-10-01"
|
||||||
|
)
|
||||||
.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(
|
||||||
@@ -64,10 +77,17 @@
|
|||||||
: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"
|
||||||
@@ -76,7 +96,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import * as moment from "moment/moment";
|
|
||||||
import BaseSelect from "@/components/base/OldBaseSelect";
|
import BaseSelect from "@/components/base/OldBaseSelect";
|
||||||
import BaseButton from "@/components/base/BaseButton";
|
import BaseButton from "@/components/base/BaseButton";
|
||||||
export default {
|
export default {
|
||||||
@@ -96,12 +115,16 @@ export default {
|
|||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
selectedEventData: {
|
||||||
|
type: Object,
|
||||||
|
default() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
listContacts: [1],
|
listContacts: [1],
|
||||||
ownerSelectSize: 22,
|
|
||||||
kindEventSelectSize: 10,
|
|
||||||
memberSelectSize: 29,
|
memberSelectSize: 29,
|
||||||
kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"],
|
kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"],
|
||||||
eventData: {},
|
eventData: {},
|
||||||
@@ -110,13 +133,16 @@ export default {
|
|||||||
role: null,
|
role: null,
|
||||||
},
|
},
|
||||||
contacts: [],
|
contacts: [],
|
||||||
start: "",
|
startTime: "",
|
||||||
end: "",
|
endTime: "",
|
||||||
employees: {
|
employees: {
|
||||||
employee: null,
|
employee: null,
|
||||||
role: "owner",
|
role: "owner",
|
||||||
},
|
},
|
||||||
|
startDate: "",
|
||||||
|
endDate: "",
|
||||||
kind: "",
|
kind: "",
|
||||||
|
id: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -160,14 +186,14 @@ export default {
|
|||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
eventStartTime() {
|
eventStartTime() {
|
||||||
if (this.start) {
|
if (this.startTime && this.startDate) {
|
||||||
return `${moment().format("YYYY-MM-DD")}T${this.start}:00Z`;
|
return this.addDate(this.startDate, this.startTime);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
eventEndTime() {
|
eventEndTime() {
|
||||||
if (this.end) {
|
if (this.endTime && this.endDate) {
|
||||||
return `${moment().format("YYYY-MM-DD")}T${this.end}:00Z`;
|
return this.addDate(this.endDate, this.endTime);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
@@ -183,6 +209,18 @@ export default {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
ownerSelectSize() {
|
||||||
|
if (this.ownerName) {
|
||||||
|
return this.ownerName.split(" ").join("").length;
|
||||||
|
}
|
||||||
|
return 22;
|
||||||
|
},
|
||||||
|
kindEventSelectSize() {
|
||||||
|
if (this.kind) {
|
||||||
|
return this.kind.split(" ").join("").length;
|
||||||
|
}
|
||||||
|
return 10;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
chooseOptionOwner(e) {
|
chooseOptionOwner(e) {
|
||||||
@@ -195,11 +233,9 @@ export default {
|
|||||||
first_name: foundEmployee.first_name,
|
first_name: foundEmployee.first_name,
|
||||||
patronymic: foundEmployee.patronymic,
|
patronymic: foundEmployee.patronymic,
|
||||||
};
|
};
|
||||||
this.ownerSelectSize = this.ownerName.split(" ").join("").length;
|
|
||||||
},
|
},
|
||||||
chooseOptionTypeEvent(e) {
|
chooseOptionTypeEvent(e) {
|
||||||
this.kind = e.target.id;
|
this.kind = e.target.id;
|
||||||
this.kindEventSelectSize = this.kind.split(" ").join("").length;
|
|
||||||
},
|
},
|
||||||
chooseOptionMember(e) {
|
chooseOptionMember(e) {
|
||||||
let foundMember = this.membersData.find(
|
let foundMember = this.membersData.find(
|
||||||
@@ -238,14 +274,40 @@ export default {
|
|||||||
},
|
},
|
||||||
sendEventData() {
|
sendEventData() {
|
||||||
this.eventData = {
|
this.eventData = {
|
||||||
start: this.eventStartTime,
|
id: this.id,
|
||||||
end: this.eventEndTime,
|
start: this.addDate(this.startTime, this.startDate),
|
||||||
|
end: this.addDate(this.endTime, this.endDate),
|
||||||
kind: this.kind,
|
kind: this.kind,
|
||||||
employees: [this.employees],
|
employees: [this.employees],
|
||||||
members: [this.members],
|
members: [this.members],
|
||||||
};
|
};
|
||||||
this.closeForm();
|
this.closeForm();
|
||||||
},
|
},
|
||||||
|
addDate(time, data) {
|
||||||
|
return `${data}T${time}:00Z`;
|
||||||
|
},
|
||||||
|
trimTime(str) {
|
||||||
|
return str.slice(11, -4);
|
||||||
|
},
|
||||||
|
trimDate(str) {
|
||||||
|
return str.slice(0, 12);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.id = this.selectedEventData.id || null;
|
||||||
|
this.startTime = this.trimTime(this.selectedEventData.start) || "";
|
||||||
|
this.endTime = this.trimTime(this.selectedEventData.end) || "";
|
||||||
|
this.kind = this.selectedEventData.kind || "";
|
||||||
|
this.employees = this.selectedEventData.employees[0] || {
|
||||||
|
employee: null,
|
||||||
|
role: "owner",
|
||||||
|
};
|
||||||
|
this.members = this.selectedEventData.members[0] || {
|
||||||
|
member: null,
|
||||||
|
role: null,
|
||||||
|
};
|
||||||
|
this.startDate = this.trimDate(this.selectedEventData.start);
|
||||||
|
this.endDate = this.trimDate(this.selectedEventData.end);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -281,6 +343,11 @@ export default {
|
|||||||
border-radius: 4px
|
border-radius: 4px
|
||||||
background-color: var(--bg-ligth-blue-color)
|
background-color: var(--bg-ligth-blue-color)
|
||||||
|
|
||||||
|
.date-input
|
||||||
|
width: 120px
|
||||||
|
border-radius: 4px
|
||||||
|
background-color: var(--bg-ligth-blue-color)
|
||||||
|
|
||||||
.icon
|
.icon
|
||||||
width: 24px
|
width: 24px
|
||||||
height: 24px
|
height: 24px
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -41,6 +42,13 @@
|
|||||||
: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"
|
||||||
|
:selected-event-data="selectedEvent"
|
||||||
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -49,6 +57,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 +65,7 @@ export default {
|
|||||||
CalendarBackground,
|
CalendarBackground,
|
||||||
CalendarClockColumn,
|
CalendarClockColumn,
|
||||||
CalendarColumn,
|
CalendarColumn,
|
||||||
|
CalendarFormAddEvent,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
currentDate: {
|
currentDate: {
|
||||||
@@ -83,6 +93,14 @@ export default {
|
|||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
membersData: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
closeFormCreateEvent: Function,
|
||||||
|
isOpenForm: Boolean,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -94,6 +112,20 @@ export default {
|
|||||||
pixelsPerHour: 62,
|
pixelsPerHour: 62,
|
||||||
columnHeaderHeight: 48,
|
columnHeaderHeight: 48,
|
||||||
defaultColumnWidth: 470,
|
defaultColumnWidth: 470,
|
||||||
|
selectedEvent: {
|
||||||
|
id: null,
|
||||||
|
start: "",
|
||||||
|
end: "",
|
||||||
|
kind: "",
|
||||||
|
employees: {
|
||||||
|
employee: null,
|
||||||
|
role: "owner",
|
||||||
|
},
|
||||||
|
members: {
|
||||||
|
member: null,
|
||||||
|
role: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -284,6 +316,10 @@ export default {
|
|||||||
});
|
});
|
||||||
return filteredArray;
|
return filteredArray;
|
||||||
},
|
},
|
||||||
|
writeEventData(eventData) {
|
||||||
|
this.selectedEvent = eventData;
|
||||||
|
this.$emit("open-change-form");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
currentTime() {
|
currentTime() {
|
||||||
|
|||||||
Reference in New Issue
Block a user