Merge pull request #104 from dderbentsov/UC-43
WIP Вернула OldBaseSelect
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
:icon-right-size="18",
|
:icon-right-size="18",
|
||||||
@click="isOpenCreate=true"
|
@click="isOpenCreate=true"
|
||||||
)
|
)
|
||||||
button.header-buttons.flex.justify-center.items-center.mr-8.p-0
|
button.header-buttons.flex.justify-center.items-center.mr-8.p-0(@click="logout")
|
||||||
.icon-bell.text-xxl
|
.icon-bell.text-xxl
|
||||||
.flex.justify-centflexer.items-center
|
.flex.justify-centflexer.items-center
|
||||||
base-avatar.mr-2(:size="32")
|
base-avatar.mr-2(:size="32")
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
@input="$emit('update:value', $event.target.value)"
|
@input="$emit('update:value', $event.target.value)"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
:maxlength="maxLength"
|
:maxlength="maxLength"
|
||||||
|
:disabled="disabled"
|
||||||
)
|
)
|
||||||
.slot(v-if="withIcon", :class="iconPosition")
|
.slot(v-if="withIcon", :class="iconPosition")
|
||||||
slot.cursor-pointer
|
slot.cursor-pointer
|
||||||
@@ -35,6 +36,7 @@ export default {
|
|||||||
},
|
},
|
||||||
widthInput: Number,
|
widthInput: Number,
|
||||||
borderNone: Boolean,
|
borderNone: Boolean,
|
||||||
|
disabled: Boolean,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -48,11 +50,13 @@ export default {
|
|||||||
border: 2px solid var(--border-light-grey-color)
|
border: 2px solid var(--border-light-grey-color)
|
||||||
border-radius: 4px
|
border-radius: 4px
|
||||||
background-color: var(--default-white)
|
background-color: var(--default-white)
|
||||||
color: var(--font-dark-blue-color)
|
color: var(--font-black-color)
|
||||||
.date
|
.date
|
||||||
background: url("../../assets/icons/calendar-input.svg") no-repeat 100% 50%
|
background: url("../../assets/icons/calendar-input.svg") no-repeat 100% 50%
|
||||||
&::-webkit-calendar-picker-indicator
|
&::-webkit-calendar-picker-indicator
|
||||||
opacity: 0
|
opacity: 0
|
||||||
.border-none
|
.border-none
|
||||||
border: none
|
border: none
|
||||||
|
.input
|
||||||
|
background-color: inherit
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export default {
|
|||||||
.input-wrapper
|
.input-wrapper
|
||||||
border-radius: 4px
|
border-radius: 4px
|
||||||
background-color: var(--default-white)
|
background-color: var(--default-white)
|
||||||
color: var(--font-dark-blue-color)
|
color: var(--font-black-color)
|
||||||
.date
|
.date
|
||||||
background: url("../../assets/icons/calendar-input.svg") no-repeat 100% 50%
|
background: url("../../assets/icons/calendar-input.svg") no-repeat 100% 50%
|
||||||
&::-webkit-calendar-picker-indicator
|
&::-webkit-calendar-picker-indicator
|
||||||
|
|||||||
@@ -42,5 +42,5 @@ export default {
|
|||||||
.input-wrapper
|
.input-wrapper
|
||||||
border-radius: 4px
|
border-radius: 4px
|
||||||
background-color: var(--default-white)
|
background-color: var(--default-white)
|
||||||
color: var(--font-dark-blue-color)
|
color: var(--font-black-color)
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.base-select(@click="open = !open", :class="{'open': open }")
|
.base-select(@click="open = !open", :class="{'open': open, 'border-none': borderNone}")
|
||||||
.placeholder.text-base {{ value || placeholder }}
|
.placeholder.text-base(:class="{'value-color': value}") {{ value || placeholder }}
|
||||||
span.icon-down-arrow.open-icon(:class="{'open': open }")
|
.flex.items-center
|
||||||
|
.select-form-separator.cursor-pointer.mr-4(v-if="separator")
|
||||||
|
span.icon-down-arrow.open-icon(:class="{'open': open }")
|
||||||
base-menu(v-if="open")
|
base-menu(v-if="open")
|
||||||
.items-container(@click="open = false", @mouseleave="leaveSelect")
|
.items-container(@click="open = false", @mouseleave="leaveSelect")
|
||||||
.item(v-for="item in items", :key="item.id" @click="clickItem(item.label)") {{ item.label }}
|
.item(v-for="item in items", :key="item.id" @click="clickItem(item.label)") {{ item.label }}
|
||||||
@@ -19,6 +21,8 @@ export default {
|
|||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
},
|
},
|
||||||
|
borderNone: Boolean,
|
||||||
|
separator: Boolean,
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
data() {
|
data() {
|
||||||
@@ -86,4 +90,18 @@ export default {
|
|||||||
display: flex
|
display: flex
|
||||||
&.open
|
&.open
|
||||||
transform: rotate(180deg)
|
transform: rotate(180deg)
|
||||||
|
.separator
|
||||||
|
background-color: var(--btn-blue-color-3)
|
||||||
|
height: 24px
|
||||||
|
width: 1px
|
||||||
|
border-radius: 1px
|
||||||
|
.border-none
|
||||||
|
border: none
|
||||||
|
.value-color
|
||||||
|
opacity: 1
|
||||||
|
.select-form-separator
|
||||||
|
background-color: var(--btn-blue-color-3)
|
||||||
|
height: 24px
|
||||||
|
width: 1px
|
||||||
|
border-radius: 1px
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "BaseSelect",
|
name: "OldBaseSelect",
|
||||||
props: {
|
props: {
|
||||||
id: String,
|
id: String,
|
||||||
styleBorder: {
|
styleBorder: {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
@next-date="switchNextDate"
|
@next-date="switchNextDate"
|
||||||
@selected-layout="changeCalendarLayout"
|
@selected-layout="changeCalendarLayout"
|
||||||
@open-change-form="openFormCreateEvent"
|
@open-change-form="openFormCreateEvent"
|
||||||
|
@update-events="fetchEventsData"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -68,10 +69,7 @@ export default {
|
|||||||
saveMembersData(res) {
|
saveMembersData(res) {
|
||||||
this.membersData = res.results;
|
this.membersData = res.results;
|
||||||
},
|
},
|
||||||
fetchEventsData() {
|
fetchPersonsData() {
|
||||||
fetchWrapper
|
|
||||||
.get("registry/event/")
|
|
||||||
.then((res) => this.saveEventsData(res));
|
|
||||||
fetchWrapper
|
fetchWrapper
|
||||||
.get("general/employee/")
|
.get("general/employee/")
|
||||||
.then((res) => this.saveEmployeesData(res));
|
.then((res) => this.saveEmployeesData(res));
|
||||||
@@ -79,6 +77,11 @@ export default {
|
|||||||
.get("general/person/")
|
.get("general/person/")
|
||||||
.then((res) => this.saveMembersData(res));
|
.then((res) => this.saveMembersData(res));
|
||||||
},
|
},
|
||||||
|
fetchEventsData() {
|
||||||
|
fetchWrapper
|
||||||
|
.get("registry/event/")
|
||||||
|
.then((res) => this.saveEventsData(res));
|
||||||
|
},
|
||||||
changeWidth(value) {
|
changeWidth(value) {
|
||||||
this.sidebarWidth = value;
|
this.sidebarWidth = value;
|
||||||
},
|
},
|
||||||
@@ -90,6 +93,7 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.fetchPersonsData();
|
||||||
this.fetchEventsData();
|
this.fetchEventsData();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,16 +3,21 @@
|
|||||||
.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="clearForm")
|
||||||
base-select(
|
base-select.select(
|
||||||
id="owners"
|
v-if="!selectedEventData.employees",
|
||||||
:size-input="ownerSelectSize"
|
:items="ownersList",
|
||||||
:option-data="ownerName"
|
v-model="employees.employee",
|
||||||
:list-data="ownersList"
|
placeholder="Выберите ответственного",
|
||||||
:choose-option="chooseOptionOwner"
|
|
||||||
placeholder="Выберите ответственного"
|
|
||||||
separator
|
separator
|
||||||
disabled
|
border-none
|
||||||
|
)
|
||||||
|
base-input(
|
||||||
|
v-else,
|
||||||
|
v-model:value="employeeName",
|
||||||
|
:width-input="72",
|
||||||
|
disabled,
|
||||||
|
border-none
|
||||||
)
|
)
|
||||||
.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 Основная информация
|
||||||
@@ -32,27 +37,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.select(
|
||||||
id="members"
|
v-if="!selectedEventData.members",
|
||||||
:size-input="memberSelectSize"
|
:items="membersList",
|
||||||
:list-data="membersList"
|
v-model="members.person",
|
||||||
:optionData="memberName"
|
placeholder="Выберите ответственного",
|
||||||
:choose-option="chooseOptionMember"
|
|
||||||
@changeInput="addMember"
|
|
||||||
placeholder="Выберите участника"
|
|
||||||
separator
|
separator
|
||||||
|
border-none
|
||||||
)
|
)
|
||||||
|
base-input(
|
||||||
|
v-else,
|
||||||
|
v-model:value="memberName",
|
||||||
|
disabled,
|
||||||
|
:width-input="346"
|
||||||
|
border-none
|
||||||
|
)
|
||||||
.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.select(
|
||||||
id="kind"
|
v-model="kind"
|
||||||
:size-input="kindEventSelectSize"
|
:items="kindEvents"
|
||||||
:option-data="kind"
|
|
||||||
:list-data="kindEvents"
|
|
||||||
:choose-option="chooseOptionTypeEvent"
|
|
||||||
placeholder="Вид события"
|
placeholder="Вид события"
|
||||||
separator
|
separator
|
||||||
disabled
|
border-none
|
||||||
|
:style="kindSelectWidth"
|
||||||
)
|
)
|
||||||
.flex.flex-col.gap-y-2
|
.flex.flex-col.gap-y-2
|
||||||
.flex.gap-x-4.items-center
|
.flex.gap-x-4.items-center
|
||||||
@@ -77,18 +85,26 @@
|
|||||||
placeholder="E-mail"
|
placeholder="E-mail"
|
||||||
:width-input="72"
|
:width-input="72"
|
||||||
)
|
)
|
||||||
base-button.styled-button.text-base.font-semibold(
|
base-button.create-button.text-base.font-semibold(
|
||||||
:size="40"
|
v-if="!selectedEventData.id",
|
||||||
:disabled="disabledButton"
|
:size="40",
|
||||||
|
:disabled="disabledCreateButton",
|
||||||
@click="sendEventData"
|
@click="sendEventData"
|
||||||
) Создать событие
|
) Создать событие
|
||||||
|
base-button.update-button.text-base.font-semibold(
|
||||||
|
v-else,
|
||||||
|
:size="40",
|
||||||
|
:disabled="disabledUpdateButton",
|
||||||
|
@click="updateEventData",
|
||||||
|
) Сохранить
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseSelect from "@/components/base/OldBaseSelect";
|
import { fetchWrapper } from "@/shared/fetchWrapper.js";
|
||||||
import BaseInputTime from "@/components/base/BaseInputTime.vue";
|
import BaseInputTime from "@/components/base/BaseInputTime.vue";
|
||||||
import BaseInput from "@/components/base/BaseInput.vue";
|
import BaseInput from "@/components/base/BaseInput.vue";
|
||||||
import BaseInputDate from "@/components/base/BaseInputDate.vue";
|
import BaseInputDate from "@/components/base/BaseInputDate.vue";
|
||||||
|
import BaseSelect from "@/components/base/BaseSelect.vue";
|
||||||
import BaseButton from "@/components/base/BaseButton";
|
import BaseButton from "@/components/base/BaseButton";
|
||||||
import * as moment from "moment/moment";
|
import * as moment from "moment/moment";
|
||||||
export default {
|
export default {
|
||||||
@@ -124,9 +140,26 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
listContacts: [1],
|
listContacts: [1],
|
||||||
memberSelectSize: 29,
|
kindEvents: [
|
||||||
kindEvents: ["Встреча", "Планерка", "Интервью", "Важная работа"],
|
{
|
||||||
|
id: 1,
|
||||||
|
label: "Встреча",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: "Планерка",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
label: "Интервью",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: "Важная работа",
|
||||||
|
},
|
||||||
|
],
|
||||||
EMPLOYEE_TYPE: "owner",
|
EMPLOYEE_TYPE: "owner",
|
||||||
|
MEMBER_TYPE: "primary",
|
||||||
eventData: {},
|
eventData: {},
|
||||||
contacts: [],
|
contacts: [],
|
||||||
startTime: "",
|
startTime: "",
|
||||||
@@ -146,7 +179,11 @@ export default {
|
|||||||
this.ownersData.forEach((elem) => {
|
this.ownersData.forEach((elem) => {
|
||||||
filteredArray.push({
|
filteredArray.push({
|
||||||
id: elem.id,
|
id: elem.id,
|
||||||
name: this.trimOwnerName(elem),
|
label: this.trimOwnerName(
|
||||||
|
elem.last_name,
|
||||||
|
elem.first_name,
|
||||||
|
elem.patronymic
|
||||||
|
),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return filteredArray;
|
return filteredArray;
|
||||||
@@ -159,7 +196,11 @@ export default {
|
|||||||
this.membersData.forEach((elem) => {
|
this.membersData.forEach((elem) => {
|
||||||
filteredArray.push({
|
filteredArray.push({
|
||||||
id: elem.id,
|
id: elem.id,
|
||||||
name: this.trimMemberName(elem),
|
label: this.trimMemberName(
|
||||||
|
elem.last_name,
|
||||||
|
elem.first_name,
|
||||||
|
elem.patronymic
|
||||||
|
),
|
||||||
contacts: elem.contacts,
|
contacts: elem.contacts,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -167,40 +208,58 @@ export default {
|
|||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
ownerName() {
|
|
||||||
if (this.employees.employee) {
|
|
||||||
return this.trimOwnerName(this.employees.employee);
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
},
|
|
||||||
memberName() {
|
memberName() {
|
||||||
if (this.members.person) {
|
if (this.selectedEventData.members) {
|
||||||
return this.trimMemberName(this.members.person);
|
let foundMember = {};
|
||||||
|
if (this.selectedEventData.members.length > 1) {
|
||||||
|
foundMember = this.selectedEventData.members.find(
|
||||||
|
({ role }) => role === this.MEMBER_TYPE
|
||||||
|
);
|
||||||
|
} else foundMember = this.selectedEventData.members[0];
|
||||||
|
let {
|
||||||
|
person: { last_name, first_name, patronymic },
|
||||||
|
} = foundMember;
|
||||||
|
return this.trimMemberName(last_name, first_name, patronymic);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
disabledButton() {
|
employeeName() {
|
||||||
|
if (this.selectedEventData.employees) {
|
||||||
|
let foundEmployee = this.selectedEventData.employees.find(
|
||||||
|
({ role }) => role === this.EMPLOYEE_TYPE
|
||||||
|
);
|
||||||
|
let {
|
||||||
|
employee: { last_name, first_name, patronymic },
|
||||||
|
} = foundEmployee;
|
||||||
|
return this.trimOwnerName(last_name, first_name, patronymic);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
},
|
||||||
|
disabledCreateButton() {
|
||||||
if (
|
if (
|
||||||
(this.eventDate,
|
this.eventDate &&
|
||||||
this.startTime,
|
this.startTime &&
|
||||||
this.endTime,
|
this.endTime &&
|
||||||
this.employees.employee && this.members.person && this.kind)
|
this.members.person &&
|
||||||
|
this.employees.employee &&
|
||||||
|
this.kind
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
ownerSelectSize() {
|
disabledUpdateButton() {
|
||||||
if (this.ownerName) {
|
let start = moment.parseZone(this.selectedEventData.start);
|
||||||
return this.ownerName.split(" ").join("").length;
|
let end = moment.parseZone(this.selectedEventData.end);
|
||||||
|
if (
|
||||||
|
this.eventDate === start.format("YYYY-MM-DD") &&
|
||||||
|
this.startTime === start.format("HH:mm") &&
|
||||||
|
this.endTime === end.format("HH:mm") &&
|
||||||
|
this.kind === this.selectedEventData.kind
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return 22;
|
return false;
|
||||||
},
|
|
||||||
kindEventSelectSize() {
|
|
||||||
if (this.kind) {
|
|
||||||
return this.kind.split(" ").join("").length;
|
|
||||||
}
|
|
||||||
return 10;
|
|
||||||
},
|
},
|
||||||
startDate() {
|
startDate() {
|
||||||
return this.selectedEventData.start
|
return this.selectedEventData.start
|
||||||
@@ -212,33 +271,36 @@ export default {
|
|||||||
? moment.parseZone(this.selectedEventData.end)
|
? moment.parseZone(this.selectedEventData.end)
|
||||||
: moment();
|
: moment();
|
||||||
},
|
},
|
||||||
|
eventEmployee() {
|
||||||
|
if (this.selectedEventData.employees) {
|
||||||
|
return this.selectedEventData.employees;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
employee: null,
|
||||||
|
role: this.EMPLOYEE_TYPE,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
eventMember() {
|
||||||
|
return this.selectedEventData.members
|
||||||
|
? this.selectedEventData.members
|
||||||
|
: {
|
||||||
|
person: null,
|
||||||
|
role: this.MEMBER_TYPE,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
eventKind() {
|
||||||
|
return this.selectedEventData.kind ? this.selectedEventData.kind : "";
|
||||||
|
},
|
||||||
|
eventId() {
|
||||||
|
return this.selectedEventData.id ? this.selectedEventData.id : "";
|
||||||
|
},
|
||||||
|
kindSelectWidth() {
|
||||||
|
return {
|
||||||
|
width: this.kind ? `${this.kind.length * 9 + 86}px` : "180px",
|
||||||
|
};
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
chooseOptionOwner(e) {
|
|
||||||
let foundEmployee = this.ownersData.find(
|
|
||||||
(elem) => elem.id === e.target.id
|
|
||||||
);
|
|
||||||
this.employees.employee = {
|
|
||||||
id: foundEmployee.id,
|
|
||||||
last_name: foundEmployee.last_name,
|
|
||||||
first_name: foundEmployee.first_name,
|
|
||||||
patronymic: foundEmployee.patronymic,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
chooseOptionTypeEvent(e) {
|
|
||||||
this.kind = e.target.id;
|
|
||||||
},
|
|
||||||
chooseOptionMember(e) {
|
|
||||||
let foundMember = this.membersData.find(
|
|
||||||
(elem) => elem.id === e.target.id
|
|
||||||
);
|
|
||||||
this.members.person = {
|
|
||||||
id: foundMember.id,
|
|
||||||
last_name: foundMember.last_name,
|
|
||||||
first_name: foundMember.first_name,
|
|
||||||
patronymic: foundMember.patronymic,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
addContact(e) {
|
addContact(e) {
|
||||||
if (e.currentTarget.id === "addContact") {
|
if (e.currentTarget.id === "addContact") {
|
||||||
this.listContacts.push(
|
this.listContacts.push(
|
||||||
@@ -246,37 +308,74 @@ export default {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trimOwnerName(obj) {
|
trimOwnerName(lastName, firsName, patronymic) {
|
||||||
return `${obj.last_name} ${obj.first_name[0]}.${obj.patronymic[0]}.`;
|
return `${lastName} ${firsName[0]}.${patronymic[0]}.`;
|
||||||
},
|
},
|
||||||
trimMemberName(obj) {
|
trimMemberName(lastName, firsName, patronymic) {
|
||||||
return `${obj.last_name} ${obj.first_name} ${obj.patronymic}`;
|
return `${lastName} ${firsName} ${patronymic}`;
|
||||||
},
|
|
||||||
addMember(memberName) {
|
|
||||||
let memberData = memberName.split(" ");
|
|
||||||
if (memberData.length === 3) {
|
|
||||||
this.members.person = {
|
|
||||||
id: null,
|
|
||||||
last_name: memberData[0],
|
|
||||||
first_name: memberData[1],
|
|
||||||
patronymic: memberData[2],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
sendEventData() {
|
sendEventData() {
|
||||||
this.eventData = {
|
this.eventData = {
|
||||||
id: this.id,
|
|
||||||
start: this.mergeDate(this.eventDate, this.startTime),
|
start: this.mergeDate(this.eventDate, this.startTime),
|
||||||
end: this.mergeDate(this.eventDate, this.endTime),
|
end: this.mergeDate(this.eventDate, this.endTime),
|
||||||
kind: this.kind,
|
kind: this.kind,
|
||||||
employees: [this.employees],
|
employees: this.findPerson(
|
||||||
members: [this.members],
|
this.ownersData,
|
||||||
|
this.ownersList,
|
||||||
|
this.employees,
|
||||||
|
"employee"
|
||||||
|
),
|
||||||
|
members: this.findPerson(
|
||||||
|
this.membersData,
|
||||||
|
this.membersList,
|
||||||
|
this.members,
|
||||||
|
"person"
|
||||||
|
),
|
||||||
};
|
};
|
||||||
this.closeForm();
|
this.postCreateEvent(this.eventData);
|
||||||
|
this.clearForm();
|
||||||
this.eventData = {};
|
this.eventData = {};
|
||||||
},
|
},
|
||||||
|
updateEventData() {
|
||||||
|
this.eventData = {
|
||||||
|
start: this.mergeDate(this.eventDate, this.startTime),
|
||||||
|
end: this.mergeDate(this.eventDate, this.endTime),
|
||||||
|
kind: this.kind,
|
||||||
|
};
|
||||||
|
this.postUpdateEvent(this.id, this.eventData);
|
||||||
|
this.clearForm();
|
||||||
|
this.eventData = {};
|
||||||
|
},
|
||||||
|
clearForm() {
|
||||||
|
this.$emit("clear-selected-event-data");
|
||||||
|
this.closeForm();
|
||||||
|
},
|
||||||
mergeDate(eventDate, time) {
|
mergeDate(eventDate, time) {
|
||||||
return moment(`${eventDate} ${time}`).format();
|
return moment(`${eventDate} ${time}`).format("YYYY-MM-DDTHH:mm:ss");
|
||||||
|
},
|
||||||
|
findPerson(requestedList, serializedList, object, field) {
|
||||||
|
let foundId = serializedList.find(
|
||||||
|
({ label }) => label === object[field]
|
||||||
|
).id;
|
||||||
|
let foundPerson = requestedList.find(({ id }) => id === foundId);
|
||||||
|
return {
|
||||||
|
[field]: {
|
||||||
|
id: foundPerson.id,
|
||||||
|
last_name: foundPerson.last_name,
|
||||||
|
first_name: foundPerson.first_name,
|
||||||
|
patronymic: foundPerson.patronymic,
|
||||||
|
color: foundPerson.color,
|
||||||
|
},
|
||||||
|
role: object.role,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
postCreateEvent(event) {
|
||||||
|
fetchWrapper.post("registry/event/create/", event);
|
||||||
|
},
|
||||||
|
postUpdateEvent(id, event) {
|
||||||
|
fetchWrapper
|
||||||
|
.post(`registry/event/${id}/update/`, event)
|
||||||
|
.then(this.$emit("update-events"));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -301,18 +400,10 @@ export default {
|
|||||||
immediate: true,
|
immediate: true,
|
||||||
handler(newDate) {
|
handler(newDate) {
|
||||||
if (newDate) {
|
if (newDate) {
|
||||||
this.id = this.selectedEventData.id || null;
|
this.id = this.eventId;
|
||||||
this.kind = this.selectedEventData.kind || "";
|
this.kind = this.eventKind;
|
||||||
this.employees = this.selectedEventData.employees[0] || {
|
this.employees = this.eventEmployee;
|
||||||
id: null,
|
this.members = this.eventMember;
|
||||||
employee: null,
|
|
||||||
role: this.EMPLOYEE_TYPE,
|
|
||||||
};
|
|
||||||
this.members = this.selectedEventData.members[0] || {
|
|
||||||
id: null,
|
|
||||||
person: null,
|
|
||||||
role: this.EMPLOYEE_TYPE,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -364,6 +455,10 @@ export default {
|
|||||||
color: var(--font-dark-blue-color)
|
color: var(--font-dark-blue-color)
|
||||||
&:hover
|
&:hover
|
||||||
color: var(--btn-blue-color)
|
color: var(--btn-blue-color)
|
||||||
.styled-button
|
.create-button
|
||||||
width: 183px
|
width: 183px
|
||||||
|
.select
|
||||||
|
height: 40px
|
||||||
|
.update-button
|
||||||
|
width: 132px
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -48,6 +48,8 @@
|
|||||||
:owners-data="ownersData"
|
:owners-data="ownersData"
|
||||||
:members-data="membersData"
|
:members-data="membersData"
|
||||||
:selected-event-data="selectedEvent"
|
:selected-event-data="selectedEvent"
|
||||||
|
@clear-selected-event-data="clearSelectedEvent"
|
||||||
|
@update-events="transmitUpdateEvents"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -112,22 +114,7 @@ export default {
|
|||||||
pixelsPerHour: 62,
|
pixelsPerHour: 62,
|
||||||
columnHeaderHeight: 48,
|
columnHeaderHeight: 48,
|
||||||
defaultColumnWidth: 470,
|
defaultColumnWidth: 470,
|
||||||
selectedEvent: {
|
selectedEvent: {},
|
||||||
id: null,
|
|
||||||
start: "",
|
|
||||||
end: "",
|
|
||||||
kind: "",
|
|
||||||
employees: {
|
|
||||||
employee: null,
|
|
||||||
role: "owner",
|
|
||||||
id: null,
|
|
||||||
},
|
|
||||||
members: {
|
|
||||||
person: null,
|
|
||||||
role: null,
|
|
||||||
id: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -322,6 +309,12 @@ export default {
|
|||||||
this.selectedEvent = eventData;
|
this.selectedEvent = eventData;
|
||||||
this.$emit("open-change-form");
|
this.$emit("open-change-form");
|
||||||
},
|
},
|
||||||
|
clearSelectedEvent() {
|
||||||
|
this.selectedEvent = {};
|
||||||
|
},
|
||||||
|
transmitUpdateEvents() {
|
||||||
|
this.$emit("update-events");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
currentTime() {
|
currentTime() {
|
||||||
|
|||||||
Reference in New Issue
Block a user