diff --git a/src/components/base/BaseCustomSelect.vue b/src/components/base/BaseCustomSelect.vue
index 6fc85ba..1074b18 100644
--- a/src/components/base/BaseCustomSelect.vue
+++ b/src/components/base/BaseCustomSelect.vue
@@ -18,7 +18,8 @@
)
.item.py-2.px-4.cursor-pointer(
v-for="item in items",
- :key="item.id"
+ :key="item.id",
+ :class="{'center': center}",
@click="clickItem(item.id, item.label)"
) {{ item.label }}
@@ -38,6 +39,7 @@ export default {
borderNone: Boolean,
separator: Boolean,
placeholderOpacity: Boolean,
+ center: Boolean,
},
emits: ["update:modelValue"],
data() {
@@ -117,4 +119,7 @@ export default {
height: 24px
width: 1px
border-radius: 1px
+.center
+ display: flex
+ justify-content: center
diff --git a/src/pages/schedule/TheSchedule.vue b/src/pages/schedule/TheSchedule.vue
index 4da978c..cada80e 100644
--- a/src/pages/schedule/TheSchedule.vue
+++ b/src/pages/schedule/TheSchedule.vue
@@ -1,48 +1,33 @@
.wrapper.flex.w-full.relative.mx-2
- .schedule-wrapper.relative.flex.flex-col.px-6.py-6.h-full.w-full
- .schedule.flex-col
- .schedule-header.flex.w-full
- .flex.items-center(:style="{padding: '16px 102px'}")
- .text.font-bold Сотрудник
- .column-wrapper.flex
- .schedule-column.flex.flex-col.items-center.justify-center.px-2(
- v-for="day in result",
- :style="{backgroundColor: day.format('ddd') === 'сб' || day.format('ddd') === 'вс' ? 'var(--bg-white-color-1)' : ''}"
- )
- .day.flex {{day.format("D")}}
- .week.flex {{day.format("ddd")}}
- .schedule-body.flex.w-full
- .edit.flex.items-center.justify-center.h-9.w-9
- .flex.icon-edit
- .name.flex
+ .schedule-wrapper.relative.flex.flex-col.px-6.py-6.h-full.w-full.gap-y-5
+ schedule-header
+ schedule-body(:employee-list="employeeList")
+ schedule-bar
@@ -56,31 +41,4 @@ export default {
.schedule-wrapper
background-color: var(--default-white)
height: calc(100vh - 64px)
-
-.schedule
- border: 1.5px solid var(--border-light-grey-color-1)
- border-radius: 4px
- min-height: 87px
-
-.schedule-header
- height: 50px
- background-color: #D7D9FF
- border-bottom: 1.5px solid var(--border-light-grey-color-1)
- border-top-left-radius: 2px
- border-top-right-radius: 2px
-
-.column-wrapper
- max-width: 1080px
- overflow: auto
-
-.text
- color: var(--btn-blue-color)
-
-.name
- min-width: 255px
- max-width: 255px
- border-right: 1.5px solid var(--border-light-grey-color-1)
-
-.edit
- border-right: 1.5px solid var(--border-light-grey-color-1)
diff --git a/src/pages/schedule/components/FormChangeShift.vue b/src/pages/schedule/components/FormChangeShift.vue
new file mode 100644
index 0000000..d997a00
--- /dev/null
+++ b/src/pages/schedule/components/FormChangeShift.vue
@@ -0,0 +1,64 @@
+
+ .flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.fixed.right-6.bottom-6(
+ v-click-outside="closeForm"
+ )
+ .flex.justify-between
+ span.title.text-xl.font-bold Замена смен
+ .flex.pt-2
+ .icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="closeForm")
+ .flex.flex-col.gap-y-6
+ .flex.flex-col.gap-y-2
+ span.text-smm.font-semibold Дата
+ base-input-date.input-date
+ .flex.flex-col(class="gap-y-1.5")
+ span.text-smm.font-semibold Текущий сотрудник
+ base-custom-select.h-10(v-model="currentEmployee")
+ .flex.flex-col(class="gap-y-1.5")
+ span.text-smm.font-semibold Замена сотрдника
+ base-custom-select.h-10(v-model="currentEmployee")
+ .time-wrapper.flex.justify-center
+ .flex.flex-col.py-14px.px-4.gap-y-14px.items-center
+ .text-xxs.opacity-40.font-bold Начало
+ base-input-time.item-input.text-base.select(:width-input="40")
+ .flex.flex-col.py-14px.px-4.gap-y-14px.items-center
+ .text-xxs.opacity-40.font-bold Конец
+ base-input-time.item-input.text-base.select(:width-input="40")
+ .flex.justify-center
+ base-button.font-semibold(:size="40") Сохранить
+
+
+
+
+
diff --git a/src/pages/schedule/components/ScheduleBar.vue b/src/pages/schedule/components/ScheduleBar.vue
new file mode 100644
index 0000000..89e06a3
--- /dev/null
+++ b/src/pages/schedule/components/ScheduleBar.vue
@@ -0,0 +1,131 @@
+
+ .wrapper-bar.flex.flex-col.gap-y-4
+ .flex.px-5.py-5.w-full.justify-around
+ .time-wrapper.flex.justify-between
+ .flex.flex-col.py-14px.px-4.gap-y-14px
+ .text.text-smm Начало рабочего дня
+ base-input-time.item-input.text-base.select(:width-input="40")
+ .flex.flex-col.py-14px.px-4.gap-y-14px
+ .text.span.text-smm Конец рабочего дня
+ base-input-time.item-input.text-base.select(:width-input="40")
+ .status-wrapper.flex.flex-col
+ .flex.justify-center.items-center.h-10
+ span.font-semibold Статусы
+ .flex.justify-around(class="py-2.5")
+ base-button.button-work.font-semibold(
+ :style="{minWidth: '190px', minHeight: '43px'}"
+ ) Работает
+ base-button.button-status.font-semibold(
+ :style="{minWidth: '190px', minHeight: '43px'}"
+ ) Отпуск/больничный
+ base-button.button-free.font-semibold(
+ :style="{minWidth: '190px', minHeight: '43px'}"
+ ) Выходной
+ .graph-template.flex
+ base-custom-select(
+ :items="scheduleList",
+ center,
+ v-model="schedule",
+ placeholder="Шаблоны графиков"
+ )
+ .flex.justify-center
+ base-button.font-semibold(:size="40") Сохранить
+
+
+
+
+
diff --git a/src/pages/schedule/components/ScheduleBody.vue b/src/pages/schedule/components/ScheduleBody.vue
new file mode 100644
index 0000000..97c758a
--- /dev/null
+++ b/src/pages/schedule/components/ScheduleBody.vue
@@ -0,0 +1,143 @@
+
+ .schedule.flex-col
+ .table-header.flex.w-full
+ .flex.items-center(:style="{padding: '16px 102px'}")
+ .text.font-bold Сотрудник
+ .column-wrapper.flex
+ .schedule-column.flex.flex-col.items-center.justify-center.px-2(
+ v-for="day in result",
+ :style="{backgroundColor: day.format('ddd') === 'сб' || day.format('ddd') === 'вс' ? 'var(--bg-white-color-1)' : ''}"
+ )
+ .text.flex.font-bold(
+ :style="{opacity: day.format('ddd') === 'сб' || day.format('ddd') === 'вс' ? '0.6' : '1'}"
+ ) {{day.format("D")}}
+ .text.flex.font-bold(
+ :style="{opacity: day.format('ddd') === 'сб' || day.format('ddd') === 'вс' ? '0.6' : '1'}"
+ ) {{day.format("ddd")}}
+ .schedule-body.flex.w-full
+ .edit.flex.items-center.justify-center.h-9.w-9
+ .flex.icon-edit
+ .name.flex.justify-center.items-center.cursor-pointer(v-if="schedule.employee.label", @click="openSelect")
+ span {{schedule.employee.label}}
+ .name.flex(v-if="!schedule.employee.label")
+ base-custom-select(
+ :items="ownersList",
+ v-model="schedule.employee",
+ placeholder="Добавить сотрудника",
+ :style="{border: 'none'}"
+ )
+
+
+
+
+
diff --git a/src/pages/schedule/components/ScheduleHeader.vue b/src/pages/schedule/components/ScheduleHeader.vue
new file mode 100644
index 0000000..95cb6bd
--- /dev/null
+++ b/src/pages/schedule/components/ScheduleHeader.vue
@@ -0,0 +1,70 @@
+
+ .flex.flex-col.gap-y-5
+ .flex.justify-center.pl-8.pr-20.font-bold.text-xl Индивидуальный график
+ form-change-shift(v-if="showForm", :close-form="closeForm")
+ .flex
+ .calendar-header-wrapper.flex.items-center.justify-between.py-3.pl-5.pr-6
+ .flex
+ base-button.left-arrow.mr-4(
+ left-icon="icon-down-arrow",
+ rounded,
+ secondary,
+ :iconLeftSize="16",
+ :size="32"
+ )
+ base-button.right-arrow.mr-6(
+ left-icon="icon-down-arrow",
+ rounded,
+ secondary,
+ :iconLeftSize="16",
+ :size="32"
+ )
+ .text.flex.items-center
+ .flex.text-xl Жмых Олег Анатольевич
+ base-button.font-semibold(:size="40", @click="openForm") Замена смен
+
+
+
+
+