This commit is contained in:
che
2026-07-27 10:51:18 +05:00
parent 560b3fe44e
commit c1b24206b9
13 changed files with 405 additions and 226 deletions
@@ -2,6 +2,7 @@
import { computed, ref, watch } from "vue";
import { employeeApi } from "../../../generated/api";
import type { EmployeeListParams } from "../../../generated/models";
import RemoteImage from "../../../shared/components/RemoteImage.vue";
import { useModelApi } from "../../../shared/composables/useModelApi";
const PAGE_SIZE = 20;
@@ -58,39 +59,45 @@ watch(search, (value) => {
<van-button size="small" type="primary" plain @click="selectEmployee(0)">Не указан</van-button>
</div>
<van-search v-model="search" placeholder="Поиск по имени" />
<div class="employee-popup-body">
<van-search v-model="search" placeholder="Поиск по имени" />
<van-loading v-if="loading" class="employee-state" type="spinner">Загрузка...</van-loading>
<van-loading v-if="loading" class="employee-state" type="spinner">Загрузка...</van-loading>
<template v-else>
<van-cell-group inset>
<van-cell
v-for="employee in employees"
:key="employee.id"
:title="employee.name"
:label="`ID: ${employee.id}`"
clickable
center
@click="selectEmployee(employee.id)"
>
<template #icon>
<van-image class="employee-avatar" round width="36" height="36" :src="employee.avatar_small ?? ''" />
</template>
<template #right-icon>
<van-icon v-if="selectedEmployeeId === employee.id" name="success" color="#1989fa" />
</template>
</van-cell>
</van-cell-group>
<template v-else>
<van-cell-group inset>
<van-cell
v-for="employee in employees"
:key="employee.id"
:title="employee.name"
:label="`ID: ${employee.id}`"
clickable
center
@click="selectEmployee(employee.id)"
>
<template #icon>
<RemoteImage class="employee-avatar" round width="36" height="36" :src="employee.avatar_small" />
</template>
<template #right-icon>
<van-icon v-if="selectedEmployeeId === employee.id" name="success" color="#1989fa" />
</template>
</van-cell>
</van-cell-group>
<van-empty v-if="employees.length === 0" description="Сотрудники не найдены" />
</template>
<van-empty v-if="employees.length === 0" description="Сотрудники не найдены" />
</template>
</div>
</van-popup>
</template>
<style scoped>
.employee-popup {
min-height: 55vh;
padding: 18px 0 28px;
display: flex;
flex-direction: column;
height: 70vh;
max-height: 70vh;
overflow: hidden;
padding: 18px 0 16px;
}
.employee-popup-header {
@@ -116,6 +123,12 @@ watch(search, (value) => {
padding: 36px 0;
}
.employee-popup-body {
flex: 1;
min-height: 0;
overflow-y: auto;
}
.employee-select {
display: flex;
align-items: center;