diff --git a/src/pages/schedule/TheSchedule.vue b/src/pages/schedule/TheSchedule.vue index 8a607f8..ded7da4 100644 --- a/src/pages/schedule/TheSchedule.vue +++ b/src/pages/schedule/TheSchedule.vue @@ -16,14 +16,15 @@ :start-month="startMonth", :clear-employee="clearEmployee", @new-schedule-employee="createNewScheduleEmployee", - @schedule-employee="createScheduleEmployee" + @schedule-employee="createScheduleEmployee", + @schedules="distributeRequest" ) schedule-bar( :data-schedule="dataSchedule", :buttons="buttons", :clear-employee="clearEmployee", :times="times", - :create-schedule="postCreateSchedule" + :create-schedules="postCreateSchedules" ) @@ -59,7 +60,7 @@ export default { text: "'Р'", }, { - class: "button-status", + class: "button-vacation", name: "Отпуск/больничный", work: "VACATION", active: false, @@ -140,6 +141,7 @@ export default { } }); this.serialized = serialized; + this.filterEmployee(); }, filterEmployee() { @@ -148,39 +150,52 @@ export default { this.serialized.every((item2) => item2.id !== item.id) ); }, - postCreateSchedule() { + distributeRequest(inside, outside) { + this.insideSchedules = inside; + this.outsideSchedules = outside; + }, + postCreateSchedules() { let newSchedule = null; if (this.clearEmployee.find((e) => e.schedules)) newSchedule = this.clearEmployee.find((e) => e.schedules); else newSchedule = this.serialized.find((e) => e.schedule); - - fetchWrapper - .post("accounts/schedules/create/", { - employee: newSchedule.id, - active_flg: true, + let data = { + employee: newSchedule.id, + active_flg: true, + start_time: this.times.start_time, + end_time: this.times.end_time, + status: this.buttons.find((e) => e.active).work, + }; + if (this.insideSchedules.length > 0) { + this.postUpdateSchedule(); + this.outsideSchedules.forEach((el) => { + fetchWrapper.post("accounts/schedules/create/", { + ...data, + start_date: el.start_date, + end_date: el.end_date, + }); + }); + } else { + fetchWrapper.post("accounts/schedules/create/", { + ...data, start_date: newSchedule.schedules.start_date || newSchedule.schedule.start_date, end_date: newSchedule.schedules.end_date || newSchedule.schedule.end_date, - start_time: this.times.start_time, - end_time: this.times.end_time, - status: this.buttons.find((e) => e.active).work, - }) - .then(() => this.fetchSchedules()); + }); + } }, - postUpdateSchedule(id) { - let currentEmployee = this.clearEmployee.find((e) => e.schedules); - fetchWrapper - .post(`accounts/schedules/${id}/update/`, { - employee: currentEmployee.id, - active_flg: true, - start_date: currentEmployee.schedules.start_date, - end_date: currentEmployee.schedules.end_date, - start_time: this.times.start_time, - end_time: this.times.end_time, - status: this.buttons.find((e) => e.active).work, - }) - .then(() => this.fetchSchedules()); + postUpdateSchedule() { + let ids = ""; + this.insideSchedules.forEach((e) => (ids += e.id + ",")); + ids = ids.slice(0, -1); + fetchWrapper.post(`accounts/schedules/${ids}/update/`, { + employee: this.insideSchedules[0].employeeId, + active_flg: true, + start_time: this.insideSchedules[0].start_time, + end_time: this.insideSchedules[0].end_time, + status: this.buttons.find((e) => e.active).work, + }); }, createNewScheduleEmployee(e) { let schedules = { @@ -222,5 +237,4 @@ export default { .schedule-wrapper background-color: var(--default-white) - height: calc(100vh - 64px) diff --git a/src/pages/schedule/components/FormChangeShift.vue b/src/pages/schedule/components/FormChangeShift.vue index 9142f44..322bc1f 100644 --- a/src/pages/schedule/components/FormChangeShift.vue +++ b/src/pages/schedule/components/FormChangeShift.vue @@ -9,7 +9,7 @@ .flex.flex-col.gap-y-6 .flex.flex-col.gap-y-2 span.text-smm.font-semibold Дата - base-input-date.input-date + base-input-date .flex.flex-col(class="gap-y-1.5") span.text-smm.font-semibold Текущий сотрудник base-custom-select.h-10(v-model="currentEmployee") @@ -58,7 +58,4 @@ export default { height: 40px border: 1.5px solid var(--border-light-grey-color) border-radius: 4px - -.input-date - border: 1.5px solid var(--border-light-grey-color) diff --git a/src/pages/schedule/components/ScheduleBar.vue b/src/pages/schedule/components/ScheduleBar.vue index ec9d554..50424a2 100644 --- a/src/pages/schedule/components/ScheduleBar.vue +++ b/src/pages/schedule/components/ScheduleBar.vue @@ -27,7 +27,7 @@ placeholder="Шаблоны графиков" ) .flex.justify-center - base-button.font-semibold(:size="40", @click="createSchedule") Сохранить + base-button.font-semibold(:size="40", @click="createSchedules") Сохранить