WIP Сделала фильтрацию
This commit is contained in:
@@ -1,17 +1,37 @@
|
||||
<template lang="pug">
|
||||
.header-wrapper.flex.w-full.justify-between.p-4
|
||||
.flex.items-center.justify-center.gap-x-2
|
||||
base-input.search(
|
||||
:width="438",
|
||||
base-select.search(
|
||||
width="438px",
|
||||
size="M",
|
||||
placeholder="Найти медкарту",
|
||||
iconLeft
|
||||
icon-left,
|
||||
hide-dropdown-icon,
|
||||
use-input
|
||||
:items="filteringMedcardsList",
|
||||
custom-option,
|
||||
:filter-fn="filterFn",
|
||||
:popup-content-style="{height: filteringMedcardsList?.length > 3 ? '216px' : ''}"
|
||||
)
|
||||
template(v-slot:iconLeft)
|
||||
q-icon.search-icon(name="app:search", size="20px")
|
||||
template(v-slot:customOption="slotProps")
|
||||
.w-full.item.px-4.py-2.flex.gap-x-3.cursor-pointer(
|
||||
v-bind="slotProps.props"
|
||||
)
|
||||
q-avatar(size="40px")
|
||||
img(:src="slotProps.avatar")
|
||||
.flex.flex-col.gap-y-1
|
||||
.text-dark.text-sm.font-medium {{ slotProps.label }}
|
||||
.text-xsx.grey-color Медкарта {{ `#${slotProps.medcard?.split(" ")?.join("")}` }}
|
||||
template(v-slot:beforeOptions)
|
||||
.h-10.w-full.px-4.pt-3.pb-2.flex.items-center
|
||||
span.text-sm.grey-color {{ filteringMedcardsList.length }} результатов
|
||||
template(v-slot:noOption)
|
||||
.w-full.px-4.py-3.flex.items-center.text-sm.grey-color.font-medium Результатов по запросу не найдено
|
||||
base-select(
|
||||
width="280px",
|
||||
:items="items",
|
||||
:items="sortingOptions",
|
||||
size="M",
|
||||
placeholder="Сортировать по ...",
|
||||
v-model="sortingType"
|
||||
@@ -25,40 +45,48 @@
|
||||
import BaseInput from "@/components/base/BaseInput.vue";
|
||||
import BaseSelect from "@/components/base/BaseSelect.vue";
|
||||
import BaseButton from "@/components/base/BaseButton.vue";
|
||||
import {
|
||||
medcardsList,
|
||||
sortingOptions,
|
||||
} from "@/pages/medcards/utils/medcardsConfig.js";
|
||||
export default {
|
||||
name: "MedicalCardSearchHeader",
|
||||
components: { BaseInput, BaseSelect, BaseButton },
|
||||
data() {
|
||||
return {
|
||||
items: [
|
||||
{
|
||||
label: "ФИО",
|
||||
id: "name",
|
||||
},
|
||||
{
|
||||
label: "приоритету",
|
||||
id: "priority",
|
||||
},
|
||||
{
|
||||
label: "дате рождения",
|
||||
id: "birthDate",
|
||||
},
|
||||
{
|
||||
label: "номеру медкарты",
|
||||
id: "medcardNumber",
|
||||
},
|
||||
{
|
||||
label: "проценту заполнения",
|
||||
id: "percent",
|
||||
},
|
||||
{
|
||||
label: "дате создания медкарты",
|
||||
id: "creationDate",
|
||||
},
|
||||
],
|
||||
filteringMedcardsList: null,
|
||||
sortingOptions: sortingOptions,
|
||||
sortingType: null,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
serializedMedcardsList() {
|
||||
return medcardsList.map((elem) => ({
|
||||
label: `${elem?.last_name} ${elem?.first_name} ${elem?.patronymic}`,
|
||||
id: elem?.id,
|
||||
avatar: elem?.avatar,
|
||||
medcard: elem?.medcard,
|
||||
}));
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
filterFn(val, update) {
|
||||
update(() => {
|
||||
this.filteringMedcardsList = this.serializedMedcardsList?.filter(
|
||||
(elem) => {
|
||||
let reg = new RegExp(`^${val}`, "ig");
|
||||
if (reg.test(elem.label)) return elem;
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
initializeMedcardsList() {
|
||||
this.filteringMedcardsList = this.serializedMedcardsList;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.initializeMedcardsList();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -75,4 +103,17 @@ export default {
|
||||
|
||||
.plus :deep(path)
|
||||
fill: var(--default-white)
|
||||
|
||||
.grey-color
|
||||
color: var(--font-grey-color)
|
||||
|
||||
.item
|
||||
border-bottom: 1px solid var(--gray-secondary)
|
||||
&:last-child
|
||||
border-bottom: none
|
||||
&:hover
|
||||
background-color: var(--gray-thirdly)
|
||||
|
||||
span
|
||||
cursor: default
|
||||
</style>
|
||||
|
||||
@@ -18,138 +18,19 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { searchListConfig } from "@/pages/medcards/utils/medcardsConfig.js";
|
||||
import {
|
||||
searchListConfig,
|
||||
medcardsList,
|
||||
} from "@/pages/medcards/utils/medcardsConfig.js";
|
||||
import Row from "@/pages/medcards/components/MedicalCardSearchRow.vue";
|
||||
import avatar from "@/assets/images/person.png";
|
||||
|
||||
export default {
|
||||
name: "MedicalCardSearchList",
|
||||
components: { Row },
|
||||
data() {
|
||||
return {
|
||||
headerConfig: searchListConfig,
|
||||
//TODO Взять из конфига
|
||||
medcardsInfo: [
|
||||
{
|
||||
id: 1,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 15,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 40,
|
||||
priority: 2,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 70,
|
||||
priority: 3,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 5,
|
||||
priority: null,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
],
|
||||
medcardsInfo: medcardsList,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import avatar from "@/assets/images/person.png";
|
||||
export const searchListConfig = [
|
||||
{
|
||||
title: "ФИО",
|
||||
@@ -67,3 +68,153 @@ export const priorityList = [
|
||||
color: "#9294A7",
|
||||
},
|
||||
];
|
||||
|
||||
export const medcardsList = [
|
||||
{
|
||||
id: 1,
|
||||
first_name: "Тимофей",
|
||||
last_name: "Сидоров",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "01.07.1988",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 15,
|
||||
priority: 1,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
first_name: "Шамиль",
|
||||
last_name: "Рокотов",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "02.03.1999",
|
||||
avatar: avatar,
|
||||
creation_date: "01.07.2023",
|
||||
filling_percentage: 40,
|
||||
priority: 2,
|
||||
medcard: "6112 813812",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
first_name: "Светлана",
|
||||
last_name: "Васильева",
|
||||
patronymic: "Витальевна",
|
||||
birthday: "12.09.1959",
|
||||
avatar: avatar,
|
||||
creation_date: "15.07.2023",
|
||||
filling_percentage: 70,
|
||||
priority: 3,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 5,
|
||||
priority: null,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
first_name: "Арнольд",
|
||||
last_name: "Першин",
|
||||
patronymic: "Витальевич",
|
||||
birthday: "12.12.1986",
|
||||
avatar: avatar,
|
||||
creation_date: "30.07.2023",
|
||||
filling_percentage: 56,
|
||||
priority: 1,
|
||||
medcard: "6112 8138",
|
||||
},
|
||||
];
|
||||
|
||||
export const sortingOptions = [
|
||||
{
|
||||
label: "ФИО",
|
||||
id: "name",
|
||||
},
|
||||
{
|
||||
label: "приоритету",
|
||||
id: "priority",
|
||||
},
|
||||
{
|
||||
label: "дате рождения",
|
||||
id: "birthDate",
|
||||
},
|
||||
{
|
||||
label: "номеру медкарты",
|
||||
id: "medcardNumber",
|
||||
},
|
||||
{
|
||||
label: "проценту заполнения",
|
||||
id: "percent",
|
||||
},
|
||||
{
|
||||
label: "дате создания медкарты",
|
||||
id: "creationDate",
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user