Added changes to search by Vicon structure. Added fix for Page view for settings column.

This commit is contained in:
F4ilji
2025-04-03 15:11:04 +05:00
parent b104a04f43
commit 13c45b80d2
17 changed files with 288 additions and 76 deletions
+3 -3
View File
@@ -96,8 +96,8 @@ export default {
headerFilter: false,
underSliderHeader: true,
logos: {
default: '/logos/white_ntspi_logo.svg',
alternate: '/logos/ntspi-logo.svg',
default: '/logos/ntspi_white.svg',
alternate: '/logos/ntspi.svg',
},
}
},
@@ -113,7 +113,7 @@ export default {
}
}
this.headerFilter = this.scrollPosition > 50;
this.headerFilter = this.scrollPosition > 5;
},
},
watch: {
+3 -3
View File
@@ -6,11 +6,11 @@
<div class="relative mx-auto mb-auto mt-[67px] max-w-screen-xl w-full px-4 py-10 md:flex md:flex-row md:py-10">
<PageSubSectionLinks v-if="!settings.hide_page_sub_section_links" :sub-section-pages="subSectionPages" :current-section="page.data.section"/>
<NavigateLinks v-if="!settings.hide_page_navigate_links" :header-navs="headerNavs"/>
<PageSubSectionLinks v-if="!settings?.hide_page_sub_section_links" :sub-section-pages="subSectionPages" :current-section="page.data.section"/>
<NavigateLinks v-if="!settings?.hide_page_navigate_links" :header-navs="headerNavs"/>
<div class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
<div class="space-y-5 md:space-y-5">
<PageBreadcrumbs v-if="!settings.hide_breadcrumbs" :breadcrumbs="breadcrumbs" :page-title="page.data.title"/>
<PageBreadcrumbs v-if="!settings?.hide_breadcrumbs" :breadcrumbs="breadcrumbs" :page-title="page.data.title"/>
<BasicTitle :header="page.data.title"/>
<div id="page-area">
<Builder :blocks="page.data.content"/>
@@ -1,5 +1,5 @@
<template>
<Link v-if="item.tag === 'AdditionalEducation'" data-hs-overlay="#hs-basic-modal" :href="route('client.additionalEducation.show', item.data.id)" class="my-1 flex gap-3 px-2 py-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<Link v-if="item.tag === 'AdditionalEducation'" data-hs-overlay="#hs-basic-modal" :href="route('client.additionalEducation.show', item.data.slug)" class="my-1 flex gap-3 px-2 py-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 0 0 2.25-2.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v2.25A2.25 2.25 0 0 0 6 10.5Zm0 9.75h2.25A2.25 2.25 0 0 0 10.5 18v-2.25a2.25 2.25 0 0 0-2.25-2.25H6a2.25 2.25 0 0 0-2.25 2.25V18A2.25 2.25 0 0 0 6 20.25Zm9.75-9.75H18a2.25 2.25 0 0 0 2.25-2.25V6A2.25 2.25 0 0 0 18 3.75h-2.25A2.25 2.25 0 0 0 13.5 6v2.25a2.25 2.25 0 0 0 2.25 2.25Z" />
</svg>
@@ -7,18 +7,18 @@
<span class="text-sm">{{ item.data.title }}</span>
</Link>
<div v-if="item.matches.length !== 0" class="">
<template v-for="match in item.matches.slice(0,3)">
<div class="flex gap-3 px-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<div class="ml-[8px] flex h-12 w-full items-center gap-2 overflow-hidden border-l border-gray-200 px-4 pl-[22px] text-sm text-gray-900 md:h-10">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12H12m-8.25 5.25h16.5" />
</svg>
<p class="truncate">{{ match }}</p>
</div>
</div>
</template>
</div>
<!-- <div v-if="item.matches.length !== 0" class="">-->
<!-- <template v-for="match in item.matches.slice(0,3)">-->
<!-- <div class="flex gap-3 px-2 items-center hover:bg-[#F2F2F2] rounded-lg">-->
<!-- <div class="ml-[8px] flex h-12 w-full items-center gap-2 overflow-hidden border-l border-gray-200 px-4 pl-[22px] text-sm text-gray-900 md:h-10">-->
<!-- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">-->
<!-- <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12H12m-8.25 5.25h16.5" />-->
<!-- </svg>-->
<!-- <p class="truncate">{{ match }}</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<!-- </div>-->
</template>
@@ -4,20 +4,22 @@
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 2.994v2.25m10.5-2.25v2.25m-14.252 13.5V7.491a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v11.251m-18 0a2.25 2.25 0 0 0 2.25 2.25h13.5a2.25 2.25 0 0 0 2.25-2.25m-18 0v-7.5a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v7.5m-6.75-6h2.25m-9 2.25h4.5m.002-2.25h.005v.006H12v-.006Zm-.001 4.5h.006v.006h-.006v-.005Zm-2.25.001h.005v.006H9.75v-.006Zm-2.25 0h.005v.005h-.006v-.005Zm6.75-2.247h.005v.005h-.005v-.005Zm0 2.247h.006v.006h-.006v-.006Zm2.25-2.248h.006V15H16.5v-.005Z" />
</svg>
<span class="text-sm">{{ item.data.title }}</span>
</Link>
<div v-if="item.matches.length !== 0" class="">
<template v-for="match in item.matches.slice(0,3)">
<div class="flex gap-3 px-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<div class="ml-[8px] flex h-12 w-full items-center gap-2 overflow-hidden border-l border-gray-200 px-4 pl-[22px] text-sm text-gray-900 md:h-10">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12H12m-8.25 5.25h16.5" />
</svg>
<p class="truncate">{{ match }}</p>
</div>
</div>
</template>
</div>
<div class="flex items-center gap-x-2">
<span class="text-sm">{{ item.data.title }}</span>
<span class="text-xs text-gray-500">Начало {{ item.data.event_date_start }} в {{ item.data.event_time_start }}</span>
</div> </Link>
<!-- <div v-if="item.matches.length !== 0" class="">-->
<!-- <template v-for="match in item.matches.slice(0,3)">-->
<!-- <div class="flex gap-3 px-2 items-center hover:bg-[#F2F2F2] rounded-lg">-->
<!-- <div class="ml-[8px] flex h-12 w-full items-center gap-2 overflow-hidden border-l border-gray-200 px-4 pl-[22px] text-sm text-gray-900 md:h-10">-->
<!-- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">-->
<!-- <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12H12m-8.25 5.25h16.5" />-->
<!-- </svg>-->
<!-- <p class="truncate">{{ match }}</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<!-- </div>-->
</template>
@@ -3,7 +3,10 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z" />
</svg>
<span class="text-sm">{{ item.data.title }}</span>
<div class="flex items-center gap-x-2">
<span class="text-sm">{{ item.data.title }}</span>
<span class="text-xs text-gray-500">{{ item.data.created_post }}</span>
</div>
</a>
<!-- <div v-if="item.matches.length !== 0" class="">-->
<!-- <template v-for="match in item.matches.slice(0,3)">-->
@@ -28,7 +28,7 @@
name="hs-as-table-product-review-search"
class="py-1 placeholder-[#8F8F8F] font-light px-2 block flex-1 w-full border-none text-lg focus:z-10 border-transparent focus:border-transparent focus:ring-0"
placeholder="Поиск по сведениям об образовательной организации">
<button v-if='this.searchInput !== ""' @click="clearSearch" class="items-center flex justify-end px-2" type="button">
<button v-if='this.searchInput !== ""' @click="clearFilters" class="items-center flex justify-end px-2" type="button">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 hover:text-gray-300 text-gray-500 duration-150 font-bold">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
</svg>
@@ -37,8 +37,7 @@
</div>
<div class="overflow-y-auto flex-1">
<div v-for="item in result">
<a :href="item.file" target="_blank" data-hs-overlay="#hs-basic-modal" class="my-1 flex gap-3 px-2 py-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<a :href="GET_BASE_URL() + item.file" target="_blank" data-hs-overlay="#hs-basic-modal" class="my-1 flex gap-3 px-2 py-2 items-center hover:bg-[#F2F2F2] rounded-lg">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" />
@@ -76,8 +75,10 @@ import {debounce} from "lodash";
import {Link} from "@inertiajs/vue3";
import {ruCategories} from "@/assets/data/ruCategories.js";
import ResultList from "@/componentss/features/search/components/ResultList.vue";
import {helpers} from "@/mixins/Helpers.js";
export default {
name: "GlobalSearch",
mixins: [helpers],
name: "GlobalSearch",
data() {
return {
searchInput: "",
@@ -107,9 +108,6 @@ export default {
},
search() {
if (!this.categories) {
this.getCategories()
}
this.toggleLoadingState(true);
this.debouncedSearch(this.searchInput.toLowerCase());
},
@@ -144,9 +142,6 @@ export default {
async executeCategory(params) {
try {
if (params.category === null) {
return null;
}
const response = await axios.get(route('client.search.static'), {
params: {
search: this.searchInput.toLowerCase(),
@@ -179,17 +174,9 @@ export default {
updateResults(response) {
this.paginate = response.data.meta;
this.result = response.data.data;
// this.categories = response.data.result_type;
this.categories = response.data.categories;
},
async getCategories() {
try {
const response = await axios.get(route('client.categories.static'));
this.categories = response.data;
} catch (error) {
console.error('Ошибка при загрузке категорий:', error);
}
},
toggleLoadingState(state) {
this.loading = state
@@ -204,8 +191,9 @@ export default {
return text
},
clearSearch() {
clearFilters() {
this.searchInput = ""
this.selectedCategory = null
this.search()
}
},
+3 -1
View File
@@ -36,6 +36,8 @@ export const helpers = {
locale: 'ru'
});
},
GET_BASE_URL() {
return window.location.origin + '/';
}
},
};