1859 lines
59 KiB
Vue
1859 lines
59 KiB
Vue
![]() |
<template>
|
|||
|
<NuxtLayout name="search-layout" :menu="sidbarMenu">
|
|||
|
<div class="searchNavigation">
|
|||
|
<div class="container-fluid">
|
|||
|
<div class="row main-page__content-header">
|
|||
|
<div class="col">
|
|||
|
<div class="row border-bottom">
|
|||
|
<div
|
|||
|
class="col-12 order-1 order-lg-1 col-lg-3 d-flex justify-content-start"
|
|||
|
>
|
|||
|
<div class="d-flex align-items-center mb-1">
|
|||
|
<button
|
|||
|
name="button"
|
|||
|
type="button"
|
|||
|
class="toggle-mobile-nav dropdown-hamburger d-md-none"
|
|||
|
@click.prevent="toggleSidebarMenu()"
|
|||
|
>
|
|||
|
<span class="sr-only">باز کردن منوی کنار</span>
|
|||
|
<svg class="s18" data-testid="sidebar-icon">
|
|||
|
<use href="assets/common/img/icons.svg#sidebar"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
<div
|
|||
|
v-if="!isMajlesBuild()"
|
|||
|
class="d-flex align-items-center"
|
|||
|
>
|
|||
|
<label
|
|||
|
for="repositories-desktop"
|
|||
|
class="float-labels no-wrap ms-2"
|
|||
|
>
|
|||
|
فهرستهای مرتبط با مخزن داده:
|
|||
|
</label>
|
|||
|
<USelectMenu
|
|||
|
v-model="selectedListItem"
|
|||
|
:options="searchListSchemaGetter"
|
|||
|
@update:model-value="onSelectNavigation"
|
|||
|
>
|
|||
|
</USelectMenu>
|
|||
|
|
|||
|
<!-- <multiselect
|
|||
|
v-if="searchListSchemaGetter?.length"
|
|||
|
:searchable="true"
|
|||
|
:close-on-select="true"
|
|||
|
:show-labels="false"
|
|||
|
label="label"
|
|||
|
track-by="key"
|
|||
|
placeholder="انتخاب فهرست"
|
|||
|
:value="searchListActiveSchemaGetter"
|
|||
|
:options="searchListSchemaGetter"
|
|||
|
@select="onSelectNavigation"
|
|||
|
:hide-selected="false"
|
|||
|
:max-height="250"
|
|||
|
:width="50"
|
|||
|
openDirection="rtl"
|
|||
|
id="repositories-desktop"
|
|||
|
class="multiselect"
|
|||
|
>
|
|||
|
</multiselect> -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-12 order-2 order-lg-1 col-lg-7">
|
|||
|
<div class="nav-tabs-container nav-tabs border-bottom-0">
|
|||
|
<div class="d-lg-none">
|
|||
|
<button
|
|||
|
class="btn"
|
|||
|
@click.prevent="openNavigationFilter(2)"
|
|||
|
>
|
|||
|
<svg class="icon icon-Component-356--1">
|
|||
|
<use xlink:href="#icon-Component-356--1"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
<ul class="nav">
|
|||
|
<li
|
|||
|
class="nav-item desktop"
|
|||
|
v-for="(navItem, index) in navTabs"
|
|||
|
:key="index"
|
|||
|
>
|
|||
|
<button
|
|||
|
:title="navItem.label"
|
|||
|
type="button"
|
|||
|
@click.prevent="updateCategoryList(navItem, index)"
|
|||
|
class="btn nav-link"
|
|||
|
:class="{
|
|||
|
active: searchListActiveTabGetter?.key == navItem.key,
|
|||
|
}"
|
|||
|
>
|
|||
|
{{ navItem.label }}
|
|||
|
</button>
|
|||
|
</li>
|
|||
|
<li
|
|||
|
class="nav-item mobile tabs-more-btn d-md-none"
|
|||
|
v-if="navTabs?.length > 2"
|
|||
|
>
|
|||
|
<div class="dropdown">
|
|||
|
<button
|
|||
|
class="btn"
|
|||
|
type="button"
|
|||
|
id="dropdownMenuButton"
|
|||
|
data-bs-toggle="dropdown"
|
|||
|
aria-haspopup="true"
|
|||
|
aria-expanded="false"
|
|||
|
>
|
|||
|
<svg class="icon icon-Component-81--1">
|
|||
|
<use xlink:href="#icon-Component-81--1"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
<div
|
|||
|
class="dropdown-menu"
|
|||
|
aria-labelledby="dropdownMenuButton"
|
|||
|
>
|
|||
|
<a
|
|||
|
v-if="navItem?.key !== 'custome'"
|
|||
|
class="dropdown-item"
|
|||
|
@click.prevent="updateCategoryList(navItem, index)"
|
|||
|
v-for="(navItem, index) in navTabs"
|
|||
|
:key="index"
|
|||
|
:class="{
|
|||
|
active:
|
|||
|
searchListActiveTabGetter?.key == navItem.key,
|
|||
|
}"
|
|||
|
>{{ navItem.label }}</a
|
|||
|
>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<!-- <div class="col-1 order-1 order-lg-1 col-lg-1 d-flex justify-content-end">
|
|||
|
<button
|
|||
|
class="btn"
|
|||
|
style="z-index: 9"
|
|||
|
v-if="activeTab?.key == 'custome'"
|
|||
|
@click.prevent="
|
|||
|
selectedNavigationFilter = !selectedNavigationFilter
|
|||
|
"
|
|||
|
>
|
|||
|
<svg class="icon icon-filter">
|
|||
|
<use xlink:href="#icon-filter"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
</div> -->
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- #region show only in custom tab -->
|
|||
|
<div
|
|||
|
class="d-flex pt-2 pb-2 justify-content-center custom-filter-container flex-column flex-lg-row"
|
|||
|
v-if="searchListActiveTabGetter?.key == 'custome'"
|
|||
|
>
|
|||
|
<div
|
|||
|
class="me-2 d-block align-items-center"
|
|||
|
v-if="searchListActiveSchemaGetter"
|
|||
|
>
|
|||
|
<label class="multiselect-lable ms-1" for=""
|
|||
|
>سطح اول فهرست:</label
|
|||
|
>
|
|||
|
|
|||
|
<USelectMenu
|
|||
|
:popper="{ placement: 'left-end' }"
|
|||
|
searchable
|
|||
|
searchable-placeholder="Search a person..."
|
|||
|
v-model:query="fieldOneQuery"
|
|||
|
v-if="searchListActiveSchemaGetter?.info?.items?.length"
|
|||
|
option-attribute="title"
|
|||
|
placeholder="انتخاب کنید"
|
|||
|
v-model="fieldOne"
|
|||
|
:options="searchListActiveSchemaGetter?.info?.items"
|
|||
|
@update:model-value="onComboChanged()"
|
|||
|
>
|
|||
|
</USelectMenu>
|
|||
|
</div>
|
|||
|
|
|||
|
<div
|
|||
|
class="me-3 ms-2 align-items-center d-none d-lg-block"
|
|||
|
v-if="searchListActiveSchemaGetter"
|
|||
|
>
|
|||
|
<label class="multiselect-lable ms-1" for="">سطح دوم:</label>
|
|||
|
<USelectMenu
|
|||
|
:popper="{ placement: 'left-end' }"
|
|||
|
searchable
|
|||
|
searchable-placeholder="Search a person..."
|
|||
|
v-model:query="fieldTwoQuery"
|
|||
|
v-if="searchListActiveSchemaGetter?.info?.items?.length"
|
|||
|
option-attribute="title"
|
|||
|
placeholder="انتخاب کنید"
|
|||
|
v-model="fieldTwo"
|
|||
|
:options="searchListActiveSchemaGetter?.info?.items"
|
|||
|
@update:model-value="onComboChanged()"
|
|||
|
>
|
|||
|
</USelectMenu>
|
|||
|
</div>
|
|||
|
|
|||
|
<div
|
|||
|
class="me-2 align-items-center d-none d-lg-block"
|
|||
|
v-if="searchListActiveSchemaGetter"
|
|||
|
>
|
|||
|
<label class="multiselect-lable ms-1" for="">سطح سوم:</label>
|
|||
|
<USelectMenu
|
|||
|
:popper="{ placement: 'left-end' }"
|
|||
|
searchable
|
|||
|
searchable-placeholder="Search a person..."
|
|||
|
v-model:query="fieldThreeQuery"
|
|||
|
v-if="searchListActiveSchemaGetter?.info?.items?.length"
|
|||
|
option-attribute="title"
|
|||
|
placeholder="انتخاب کنید"
|
|||
|
v-model="fieldThree"
|
|||
|
:options="searchListActiveSchemaGetter?.info?.items"
|
|||
|
@update:model-value="onComboChanged()"
|
|||
|
>
|
|||
|
</USelectMenu>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<!-- #endregion show only in custom tab -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="row">
|
|||
|
<div class="col-md-4 col-lg-3 pe-0">
|
|||
|
<div class="pages-content" ref="navigationFilter">
|
|||
|
<search-navigation-filter
|
|||
|
v-if="searchListActiveTabGetter?.key == 'custome'"
|
|||
|
:fieldThree="fieldThree"
|
|||
|
:fieldTwo="fieldTwo"
|
|||
|
:fieldOne="fieldOne"
|
|||
|
:fields="fields"
|
|||
|
:key="componentCounter"
|
|||
|
:class="{ 'show-list-panel': showListPanel }"
|
|||
|
@can-view="canView = $event"
|
|||
|
ref="panel"
|
|||
|
@statusPag="statusPag2"
|
|||
|
@isShowPag="isShowPag"
|
|||
|
@list-changed="setList"
|
|||
|
@update-meta="metaItems = $event"
|
|||
|
@list-item-changed="setListItem"
|
|||
|
@hide-panel="showToggleListPanel"
|
|||
|
></search-navigation-filter>
|
|||
|
<div v-else>
|
|||
|
<category-list
|
|||
|
v-if="dataCatched"
|
|||
|
ref="categorylist"
|
|||
|
:activeTab="searchListActiveTabGetter"
|
|||
|
:selectedNavigation="searchListActiveSchemaGetter"
|
|||
|
:lastSearchInListMode="lastSearchInListMode"
|
|||
|
:treeLists="treeLists"
|
|||
|
@filterUpdate="filterUpdate"
|
|||
|
@list-changed="listChanged"
|
|||
|
@set-selected-list="updateTitle"
|
|||
|
@show-category="showCategory"
|
|||
|
:key="componentCounter"
|
|||
|
></category-list>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-md-8 col-lg-9">
|
|||
|
<div class="tabel-main">
|
|||
|
<div class="tab-content py-2 px-3" id="myTabContent">
|
|||
|
<div class="container-fluid">
|
|||
|
<div class="row">
|
|||
|
<div class="col-12 col-md-6 d-flex align-items-center">
|
|||
|
<!-- <div class="navigation-filter dropdown-hamburger">
|
|||
|
<button
|
|||
|
class="btn"
|
|||
|
@click.prevent="openNavigationFilter(2)"
|
|||
|
style="z-index: 9"
|
|||
|
>
|
|||
|
<svg class="icon icon-Component-158--5">
|
|||
|
<use xlink:href="#icon-Component-158--5"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
</div> -->
|
|||
|
<div
|
|||
|
class="d-flex w-100 overflow-hidden text-truncate"
|
|||
|
v-if="selectionFilterItemsGetter?.length <= 0"
|
|||
|
v-html="currentPathHtml"
|
|||
|
></div>
|
|||
|
<div
|
|||
|
class="d-flex w-100"
|
|||
|
style="height: 4em"
|
|||
|
v-if="selectionFilterItemsGetter?.length"
|
|||
|
>
|
|||
|
<div
|
|||
|
class="me-1 d-flex w-100 overflow-hidden flex-column"
|
|||
|
>
|
|||
|
<a
|
|||
|
@click.prevent="emptyFilter()"
|
|||
|
class="filters__delete text__12"
|
|||
|
>حذف فیلترها
|
|||
|
</a>
|
|||
|
<search-filter
|
|||
|
:filters="selectionFilterItemsGetter"
|
|||
|
@remove-filter="delFilterItem"
|
|||
|
class="filter-items"
|
|||
|
></search-filter>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div
|
|||
|
class="col-12 col-md-6 d-flex align-items-center justify-content-end"
|
|||
|
>
|
|||
|
<sub-header
|
|||
|
:enableNewButton="false"
|
|||
|
:canCreate="'item_new'"
|
|||
|
:title="tableTitle"
|
|||
|
@view-mode-switched="switchViewMode"
|
|||
|
@filterSelect="filterSelect"
|
|||
|
class="sub-header"
|
|||
|
:key="rerenderSubheader"
|
|||
|
></sub-header>
|
|||
|
<!-- v-if="listAggregations" -->
|
|||
|
<button
|
|||
|
class="btn"
|
|||
|
@click.prevent="
|
|||
|
openModalFilter('SearchFilterModal', '')
|
|||
|
"
|
|||
|
style="z-index: 9"
|
|||
|
>
|
|||
|
<svg class="icon icon-filter-list">
|
|||
|
<use xlink:href="#icon-filter-list"></use>
|
|||
|
</svg>
|
|||
|
</button>
|
|||
|
<div class="select-export-container mt-2">
|
|||
|
<div class="dropdown">
|
|||
|
<button
|
|||
|
class="btn btn-outline-light border-0"
|
|||
|
type="button"
|
|||
|
data-bs-toggle="dropdown"
|
|||
|
aria-expanded="false"
|
|||
|
>
|
|||
|
<span
|
|||
|
class="tavasi tavasi-excel-file-2 ms-1"
|
|||
|
></span>
|
|||
|
</button>
|
|||
|
<div class="dropdown-menu">
|
|||
|
<button
|
|||
|
class="dropdown-item"
|
|||
|
type="button"
|
|||
|
:disabled="fetchingDataForExport"
|
|||
|
@click="exportJsonToExcel('current')"
|
|||
|
value="current"
|
|||
|
>
|
|||
|
جاری
|
|||
|
</button>
|
|||
|
<button
|
|||
|
class="dropdown-item"
|
|||
|
type="button"
|
|||
|
:disabled="fetchingDataForExport"
|
|||
|
@click="exportJsonToExcel('all')"
|
|||
|
value="all"
|
|||
|
>
|
|||
|
همه
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<!-- <button
|
|||
|
class="btn"
|
|||
|
style="z-index: 9"
|
|||
|
v-if="activeTab?.key == 'custome'"
|
|||
|
@click.prevent="
|
|||
|
selectedNavigationFilter = !selectedNavigationFilter
|
|||
|
"
|
|||
|
>
|
|||
|
<svg class="icon icon-filter">
|
|||
|
<use xlink:href="#icon-filter"></use>
|
|||
|
</svg>
|
|||
|
</button> -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div
|
|||
|
class="tab-pane fade show active d-flex"
|
|||
|
id="table"
|
|||
|
role="tabpanel"
|
|||
|
aria-labelledby="table-tab"
|
|||
|
>
|
|||
|
<template v-if="canView">
|
|||
|
<!-- <my-table
|
|||
|
:height="heightHandler('table')"
|
|||
|
v-if="viewMode === 'table'"
|
|||
|
:isDraggable="true"
|
|||
|
:hasSearch="false"
|
|||
|
:hasSubject="true"
|
|||
|
:hasSummary="true"
|
|||
|
:fetchingData="fetchingData"
|
|||
|
:items="listItem"
|
|||
|
:tableColumns="getTableColumns"
|
|||
|
:tableActions="tableActions"
|
|||
|
:paginationInfo="pagination"
|
|||
|
:sortingInfo="sorting"
|
|||
|
@update-order="updateOrder"
|
|||
|
@show-details="showDetails"
|
|||
|
@open-form="openForm"
|
|||
|
@show-text="showTextPage"
|
|||
|
@page-changed="pageChanged"
|
|||
|
@page-limit-changed="pageLimitChanged"
|
|||
|
@sort-changed="sortChanged"
|
|||
|
@search="searchInTable"
|
|||
|
@on-linked-title-click="onOnLinkedTitleClick"
|
|||
|
:showHeaderSortButton="false"
|
|||
|
class="my-table"
|
|||
|
>
|
|||
|
</my-table> -->
|
|||
|
<!-- :height="heightHandler('list')" -->
|
|||
|
<!-- :summeryKeys="['content', 'mindex', 'mintro']" -->
|
|||
|
<template v-if="fetchingData">
|
|||
|
<the-content-loading
|
|||
|
:loadingTitle="'در حال دریافت اطلاعات'"
|
|||
|
class="table-loading"
|
|||
|
></the-content-loading>
|
|||
|
</template>
|
|||
|
|
|||
|
<template v-else>
|
|||
|
<MyContent
|
|||
|
:key="reRender"
|
|||
|
:pagination="pagination"
|
|||
|
:viewMode="viewMode"
|
|||
|
@changeCurrent="changeCurrent"
|
|||
|
@changePage="changePaging"
|
|||
|
:schemaItems="
|
|||
|
searchListActiveSchemaGetter?.search_content
|
|||
|
"
|
|||
|
:items="listHits"
|
|||
|
:tableColumns="
|
|||
|
searchListActiveSchemaGetter?.table_columns
|
|||
|
"
|
|||
|
:tableActions="
|
|||
|
tableColumnsHandler(searchListActiveTabGetter)
|
|||
|
"
|
|||
|
class="col-12"
|
|||
|
>
|
|||
|
</MyContent>
|
|||
|
</template>
|
|||
|
|
|||
|
<!-- <component
|
|||
|
v-if="dataCatched"
|
|||
|
:showActions="false"
|
|||
|
class="flex-grow-1"
|
|||
|
:key="reRender"
|
|||
|
:is="contentComponentName"
|
|||
|
:summeryKeys="['title', 'subtitle', 'mintro']"
|
|||
|
:courseKeys="['title', 'subtitle', 'mintro']"
|
|||
|
:pagination="pagination"
|
|||
|
:displayMode="'tangihlist'"
|
|||
|
:viewMode="viewMode"
|
|||
|
:key_data="searchListActiveSchemaGetter?.key"
|
|||
|
:activeTabGetter="searchListActiveSchemaGetter"
|
|||
|
:tableColumns="getTableColumns"
|
|||
|
:listItem="listItem"
|
|||
|
@changeCurrent="changeCurrent"
|
|||
|
@changePage="changePaging"
|
|||
|
ref="content"
|
|||
|
></component> -->
|
|||
|
|
|||
|
<item-details
|
|||
|
v-if="showDetailsPanel"
|
|||
|
:key="formRerrenderer"
|
|||
|
:selectedItem="rowItem"
|
|||
|
@open-form="openForm"
|
|||
|
@close-detail-panel="showDetailsPanel = false"
|
|||
|
></item-details>
|
|||
|
</template>
|
|||
|
<no-data v-else>
|
|||
|
<p class="text-center p-3">عدم دسترسی</p>
|
|||
|
</no-data>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- <template v-if="showModal">
|
|||
|
<NewItemModal
|
|||
|
@close-modal="closeModal"
|
|||
|
@delete-item="updateList"
|
|||
|
@update-list="updateList"
|
|||
|
/>
|
|||
|
</template> -->
|
|||
|
|
|||
|
<base-modal-v2
|
|||
|
v-if="openSubjectForm"
|
|||
|
modalSize="modal-lg"
|
|||
|
:modalTitle="modalTitle"
|
|||
|
:hasFooter="false"
|
|||
|
@close="hideSubjectForm"
|
|||
|
>
|
|||
|
<SearchSubjectForm
|
|||
|
v-if="slotComponentName == 'SearchSubjectForm'"
|
|||
|
@update-list="updateList"
|
|||
|
@selectedFilterUrl="selectedFilterUrl"
|
|||
|
:listAggregations="listAggregations"
|
|||
|
:filteKey="'source_key'"
|
|||
|
:activeTabGetter="searchListActiveSchemaGetter"
|
|||
|
></SearchSubjectForm>
|
|||
|
|
|||
|
<SearchFilterModal
|
|||
|
v-if="slotComponentName == 'SearchFilterModal'"
|
|||
|
@update-list="updateList"
|
|||
|
@selectedFilterUrl="selectedFilterUrl"
|
|||
|
:listAggregations="listAggregations"
|
|||
|
:filteKey="'source_key'"
|
|||
|
:activeTabGetter="searchListActiveSchemaGetter"
|
|||
|
></SearchFilterModal>
|
|||
|
</base-modal-v2>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</NuxtLayout>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import tableActions from "~/json/search/json/listTableContextMenu";
|
|||
|
import { mapState, mapActions } from "pinia";
|
|||
|
import searchApis from "~/apis/searchApi";
|
|||
|
|
|||
|
import sidbarMenuDefault from "~/json/search/json/menu.json";
|
|||
|
import sidbarMenuMin from "~/json/search/json/sidbarMenuMin.json";
|
|||
|
// import menu from "~/json/reports/menu.json";
|
|||
|
|
|||
|
import { useSearchStore } from "~/stores/searchStore";
|
|||
|
import { useCommonStore } from "~/stores/commonStore";
|
|||
|
import { useEntityStore } from "~/stores/entityStore";
|
|||
|
import { useListStore } from "~/stores/listStore";
|
|||
|
|
|||
|
export default {
|
|||
|
name: "searchNavigation",
|
|||
|
setup() {
|
|||
|
useHead({
|
|||
|
title: import.meta.env.VITE_ENTITY_PAGE_TITLE,
|
|||
|
meta: [{ name: "description", content: "My page description" }],
|
|||
|
bodyAttrs: {
|
|||
|
class: import.meta.env.VITE_SEARCH_PAGE_TITLE,
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
definePageMeta({
|
|||
|
layout: false,
|
|||
|
name: "searchNavigation",
|
|||
|
});
|
|||
|
},
|
|||
|
watch: {
|
|||
|
getPanelStatus(status) {
|
|||
|
if (status) this.openForm();
|
|||
|
else this.closeModal();
|
|||
|
},
|
|||
|
// $route: {
|
|||
|
// handler: function () {
|
|||
|
// this.sidebarCollapsedSetter(false);
|
|||
|
// },
|
|||
|
// deep: true,
|
|||
|
// immediate: true,
|
|||
|
// },
|
|||
|
listIdGetter(newId) {
|
|||
|
this.filterBy(this.selectedFilter);
|
|||
|
},
|
|||
|
// selectedListItem({ key, label }) {
|
|||
|
// const selected = this.searchListSchemaGetter.find((i) => i.key == key);
|
|||
|
// this.onSelectNavigation(selected);
|
|||
|
// },
|
|||
|
},
|
|||
|
created() {
|
|||
|
let schemaExist =
|
|||
|
this.searchListActiveTabGetter && this.searchListSchemaGetter;
|
|||
|
|
|||
|
if (schemaExist) {
|
|||
|
this.getComboList();
|
|||
|
} else this.getSchemas();
|
|||
|
},
|
|||
|
beforeMount() {
|
|||
|
if (buildName() == "monir" || window?.innerWidth < 575) {
|
|||
|
this.viewMode = "list";
|
|||
|
} else {
|
|||
|
this.viewMode = "table";
|
|||
|
}
|
|||
|
},
|
|||
|
// mixins: [filterItemMixin],
|
|||
|
mounted() {
|
|||
|
if (window.outerWidth < 992) {
|
|||
|
this.$store.commit("TOGGLE_SIDEBAR_MENU");
|
|||
|
}
|
|||
|
this.pagination.limit = 25;
|
|||
|
|
|||
|
this.updatPathTitle();
|
|||
|
this.selected = this.people[0];
|
|||
|
|
|||
|
this.selectedListItem = this.searchListActiveSchemaGetter;
|
|||
|
},
|
|||
|
updated() {
|
|||
|
const itemActiveTabElement = this.$el.querySelector(".itemActiveTab");
|
|||
|
if (itemActiveTabElement) {
|
|||
|
itemActiveTabElement.removeEventListener(
|
|||
|
"click",
|
|||
|
this.onItemActiveTabClick
|
|||
|
);
|
|||
|
itemActiveTabElement.addEventListener("click", this.onItemActiveTabClick);
|
|||
|
}
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
selected: undefined,
|
|||
|
people: [
|
|||
|
{
|
|||
|
id: "benjamincanac",
|
|||
|
label: "benjamincanac",
|
|||
|
href: "https://github.com/benjamincanac",
|
|||
|
target: "_blank",
|
|||
|
avatar: { src: "https://avatars.githubusercontent.com/u/739984?v=4" },
|
|||
|
},
|
|||
|
{
|
|||
|
id: "Atinux",
|
|||
|
label: "Atinux",
|
|||
|
href: "https://github.com/Atinux",
|
|||
|
target: "_blank",
|
|||
|
avatar: { src: "https://avatars.githubusercontent.com/u/904724?v=4" },
|
|||
|
},
|
|||
|
{
|
|||
|
id: "smarroufin",
|
|||
|
label: "smarroufin",
|
|||
|
href: "https://github.com/smarroufin",
|
|||
|
target: "_blank",
|
|||
|
avatar: {
|
|||
|
src: "https://avatars.githubusercontent.com/u/7547335?v=4",
|
|||
|
},
|
|||
|
},
|
|||
|
{
|
|||
|
id: "nobody",
|
|||
|
label: "Nobody",
|
|||
|
icon: "i-heroicons-user-circle",
|
|||
|
},
|
|||
|
],
|
|||
|
selectedListOptions: [
|
|||
|
{
|
|||
|
key: "sanad",
|
|||
|
label: "منابع",
|
|||
|
},
|
|||
|
{
|
|||
|
key: "qanon",
|
|||
|
label: "qanon",
|
|||
|
},
|
|||
|
],
|
|||
|
selectedListItem: undefined,
|
|||
|
|
|||
|
dataCatched: false, // showing components after data cached.
|
|||
|
loading: false,
|
|||
|
rerenderSubheader: 1,
|
|||
|
tableActions: tableActions,
|
|||
|
viewMode: "",
|
|||
|
tableTitle: "",
|
|||
|
currentPageName: "list",
|
|||
|
listAggregations: undefined,
|
|||
|
treeLists: "",
|
|||
|
filterUrl: "",
|
|||
|
url_GET_item: "",
|
|||
|
filterLists: "",
|
|||
|
statusPag: "",
|
|||
|
state_list: 0,
|
|||
|
listItem: [],
|
|||
|
listHits: [],
|
|||
|
navigationOptions: [],
|
|||
|
fields: [],
|
|||
|
fieldOne: null,
|
|||
|
fieldTwo: null,
|
|||
|
fieldThree: null,
|
|||
|
fieldOneQuery: null,
|
|||
|
fieldTwoQuery: null,
|
|||
|
fieldThreeQuery: null,
|
|||
|
activeTab: null,
|
|||
|
activeListItem: undefined,
|
|||
|
// selectedNavigationIndex: undefined,
|
|||
|
// selectedNavigation: undefined,
|
|||
|
listPanelSorting: undefined,
|
|||
|
listPanelSorting: undefined,
|
|||
|
lastSearchInListMode: true,
|
|||
|
showfilterCategory: true,
|
|||
|
fetchingDataForExport: false,
|
|||
|
showListPanel: false,
|
|||
|
// selectedNavigationFilter: false,
|
|||
|
componentCounter: 1,
|
|||
|
page: 0,
|
|||
|
currentPathItem: "",
|
|||
|
currentPathHtml: "",
|
|||
|
|
|||
|
schemaFilter: null,
|
|||
|
tabIndex: 0,
|
|||
|
reRender: 1,
|
|||
|
// menu: menu,
|
|||
|
// selectedFilter: "table",
|
|||
|
|
|||
|
// sidbarMenuDefault: sidbarMenuDefault,
|
|||
|
// sidbarMenuMin: sidbarMenuMin,
|
|||
|
// showModal: false,
|
|||
|
formRerrenderer: 1,
|
|||
|
|
|||
|
sorting: {
|
|||
|
sortby: "id",
|
|||
|
sortorder: "asc", // asc | desc
|
|||
|
},
|
|||
|
componentName: "ItemList",
|
|||
|
|
|||
|
openSubjectForm: false,
|
|||
|
metaItems: [],
|
|||
|
subjectItemState: false,
|
|||
|
subjectTitle: "",
|
|||
|
|
|||
|
canView: true,
|
|||
|
currentPanelList: {},
|
|||
|
tableTitle: "",
|
|||
|
rowItem: undefined,
|
|||
|
showDetailsPanel: false,
|
|||
|
formRerrenderer: 1,
|
|||
|
exportOffset: 0,
|
|||
|
exportLimit: 500,
|
|||
|
|
|||
|
viewMode: "table",
|
|||
|
selectedFilter: "table",
|
|||
|
// menu: menu,
|
|||
|
|
|||
|
showModal: false,
|
|||
|
|
|||
|
listId: undefined,
|
|||
|
listItem: [],
|
|||
|
pagination: {
|
|||
|
pages: 0,
|
|||
|
total: 0,
|
|||
|
page: 1,
|
|||
|
offset: 0,
|
|||
|
limit: 10,
|
|||
|
},
|
|||
|
|
|||
|
fetchingData: false,
|
|||
|
|
|||
|
roles: [],
|
|||
|
selectedItemClone: {
|
|||
|
title: "",
|
|||
|
id: undefined,
|
|||
|
project_id: this.projectGetter?.id,
|
|||
|
},
|
|||
|
prevSelectedItemIndex: undefined,
|
|||
|
|
|||
|
showPanel: false,
|
|||
|
projects: [],
|
|||
|
list: [],
|
|||
|
|
|||
|
loading: false,
|
|||
|
|
|||
|
currentItem: {},
|
|||
|
listChilds: [],
|
|||
|
paragraphs: [],
|
|||
|
breadcrumb: [],
|
|||
|
selectedItem: {},
|
|||
|
paperPropertyes: {},
|
|||
|
|
|||
|
prevActivePaperIndex: 0,
|
|||
|
FILTER_BY_ENUM: {
|
|||
|
1: "دفترهای من",
|
|||
|
2: "اشتراکی",
|
|||
|
3: "همه اسناد",
|
|||
|
},
|
|||
|
selectedFilterNumber: 3,
|
|||
|
items: [],
|
|||
|
editMode: false,
|
|||
|
|
|||
|
contextMenu: [],
|
|||
|
newItemType: 0,
|
|||
|
childs: [
|
|||
|
{
|
|||
|
title: "یادداشت",
|
|||
|
users: {
|
|||
|
name: "حسن",
|
|||
|
avatar: "",
|
|||
|
},
|
|||
|
},
|
|||
|
{
|
|||
|
title: "2یادداشت",
|
|||
|
},
|
|||
|
],
|
|||
|
SearchSubjectForm: "SearchFilterModal",
|
|||
|
};
|
|||
|
},
|
|||
|
computed: {
|
|||
|
...mapState(useCommonStore, [
|
|||
|
"getPanelStatus",
|
|||
|
"isSidebarCollapsed",
|
|||
|
"getUserLastState",
|
|||
|
"organNameGetter",
|
|||
|
"schemasGetter",
|
|||
|
"activeSchemaGetter",
|
|||
|
]),
|
|||
|
...mapState(useSearchStore, [
|
|||
|
"searchListSchemaGetter",
|
|||
|
"searchListActiveSchemaGetter",
|
|||
|
"searchListActiveTabGetter",
|
|||
|
"selectionFilterItemsGetter",
|
|||
|
"searchListActiveTabGetter",
|
|||
|
]),
|
|||
|
...mapState(useListStore, [
|
|||
|
"listComponentNameGetter",
|
|||
|
"selectedProjectGetter",
|
|||
|
"listIdGetter",
|
|||
|
"selectedItemGetter",
|
|||
|
"listGetter",
|
|||
|
]),
|
|||
|
myKey() {
|
|||
|
// if (this.key_data) return this.key_data;
|
|||
|
return this.searchListActiveSchemaGetter?.key;
|
|||
|
},
|
|||
|
|
|||
|
navTabs() {
|
|||
|
if (!isMajlesBuild()) return this.searchListActiveSchemaGetter?.items;
|
|||
|
|
|||
|
if (this.searchListActiveSchemaGetter?.items) {
|
|||
|
let res = this.searchListActiveSchemaGetter?.items.filter((item) => {
|
|||
|
if (item.key == "dotic" || item.key == "organ") return false;
|
|||
|
return true;
|
|||
|
});
|
|||
|
return res;
|
|||
|
} else return [];
|
|||
|
},
|
|||
|
|
|||
|
schemasItem(item, index) {
|
|||
|
this.modetab = index;
|
|||
|
|
|||
|
let full_path = this.$route.fullPath;
|
|||
|
let newRoutePath = full_path;
|
|||
|
let prevKey = this.$route.query.key;
|
|||
|
if (prevKey)
|
|||
|
newRoutePath = full_path.replace(`key=${prevKey}`, `key=${item.key}`);
|
|||
|
else newRoutePath = full_path + `?key=${item.key}`;
|
|||
|
|
|||
|
this.$set(this.$route.query, "key", item.key);
|
|||
|
history.pushState({}, document.title, newRoutePath);
|
|||
|
|
|||
|
this.searchActiveTabSetter(item);
|
|||
|
this.searchStart(this.textSearch);
|
|||
|
// this.$emit("searchStart", this.$refs.searchline?.textSearch);
|
|||
|
},
|
|||
|
contentComponentName() {
|
|||
|
if (this.searchListActiveSchemaGetter?.searchContent)
|
|||
|
return this.searchListActiveSchemaGetter.searchContent;
|
|||
|
|
|||
|
return "SearchContent";
|
|||
|
},
|
|||
|
getTableColumns() {
|
|||
|
if (this.searchListActiveTabGetter?.table_columns)
|
|||
|
return this.searchListActiveTabGetter.table_columns;
|
|||
|
|
|||
|
if (this.searchListActiveSchemaGetter?.table_columns)
|
|||
|
return this.searchListActiveSchemaGetter.table_columns;
|
|||
|
|
|||
|
return this.selectedProjectGetter?.table_columns;
|
|||
|
},
|
|||
|
|
|||
|
sidbarMenu() {
|
|||
|
if (isMajlesBuild()) return sidbarMenuMin;
|
|||
|
else return sidbarMenuDefault;
|
|||
|
},
|
|||
|
},
|
|||
|
methods: {
|
|||
|
...mapActions(useCommonStore, [
|
|||
|
"schemasSetter",
|
|||
|
"activeSchemaSetter",
|
|||
|
"TOGGLE_PANEL",
|
|||
|
"checkPermissions",
|
|||
|
"storeState",
|
|||
|
"getState",
|
|||
|
]),
|
|||
|
...mapActions(useSearchStore, [
|
|||
|
"searchListActiveSchemaSetter",
|
|||
|
"searchListSchemaSetter",
|
|||
|
"searchListActiveTabSetter",
|
|||
|
"selectionFilterItemsSetter",
|
|||
|
]),
|
|||
|
...mapActions(useListStore, [
|
|||
|
"SET_LIST_COMPONENT_NAME",
|
|||
|
"SET_SELECTED_ITEM",
|
|||
|
"SET_SELECTED_PROJECT",
|
|||
|
"SET_LIST_ID",
|
|||
|
"SET_LIST",
|
|||
|
"SET_LIST_ID",
|
|||
|
"SET_SELECTED_PROJECT",
|
|||
|
]),
|
|||
|
|
|||
|
...mapActions(useEntityStore, ["SET_ITEM_ENTITY", "SET_LIST_ENTITY"]),
|
|||
|
tableColumnsHandler(activeTab) {
|
|||
|
if (activeTab?.actions) return activeTab?.actions;
|
|||
|
else return this.searchListActiveSchemaGetter?.actions;
|
|||
|
},
|
|||
|
getDetailUrl(item) {
|
|||
|
let key = "";
|
|||
|
key = this.myKey;
|
|||
|
if (!key) key = "qasection"; // برای شرایطی که بصورت مدال استفاده می شود گتر بالا پر نیست
|
|||
|
|
|||
|
let id = item._id;
|
|||
|
let hash = "";
|
|||
|
if (this.$route.name == "qrule") {
|
|||
|
hash = "#qmodel";
|
|||
|
key = "qsection";
|
|||
|
id = item._source?.ref_id ? item._source.ref_id : id;
|
|||
|
}
|
|||
|
if (key == "qasection") {
|
|||
|
key = "qsection";
|
|||
|
}
|
|||
|
|
|||
|
let name = "detail";
|
|||
|
const routeData = this.$router.resolve({
|
|||
|
name: name,
|
|||
|
params: {
|
|||
|
id: id,
|
|||
|
key: key,
|
|||
|
},
|
|||
|
hash: hash,
|
|||
|
query: {},
|
|||
|
});
|
|||
|
return routeData.href;
|
|||
|
},
|
|||
|
showTextPage(index) {
|
|||
|
const item = this.listHits[index];
|
|||
|
window.open(this.getDetailUrl(item), "_blank");
|
|||
|
},
|
|||
|
onOnLinkedTitleClick({ rowItem, tableColumn, index }) {
|
|||
|
const item = this.listHits[index];
|
|||
|
if (tableColumn.key == "qanon_title")
|
|||
|
this.showtext(item._source, this.listHits, index, item);
|
|||
|
else window.open(this.getDetailUrl(item), "_blank");
|
|||
|
},
|
|||
|
/**
|
|||
|
* باز کردن یک تب جدید با جزئیات مورد انتخاب شده.
|
|||
|
* @param {Object} item - مورد انتخاب شده.
|
|||
|
* @param {Array} listAnswer - لیست پاسخها.
|
|||
|
* @param {Number} i - اندیس مورد.
|
|||
|
* @param {Object} t - شیء نماینده مورد.
|
|||
|
*/
|
|||
|
showtext(_source, listAnswer, index, rowItem) {
|
|||
|
let cloneList = listAnswer;
|
|||
|
cloneList.forEach((item, index) => {
|
|||
|
cloneList[index] = { ...item, ..._source };
|
|||
|
});
|
|||
|
let qanon_id = _source.qanon_id;
|
|||
|
|
|||
|
let cloneItem = rowItem;
|
|||
|
cloneItem = { ...rowItem, _id: qanon_id };
|
|||
|
|
|||
|
this.SET_ITEM_ENTITY(cloneItem);
|
|||
|
this.SET_LIST_ENTITY(cloneList);
|
|||
|
|
|||
|
localStorage.setItem("myList", JSON.stringify(cloneList));
|
|||
|
localStorage.setItem("myItem", JSON.stringify(cloneItem));
|
|||
|
|
|||
|
window.open(this.urlResolver(qanon_id), "_blank");
|
|||
|
},
|
|||
|
/**
|
|||
|
* حل تارنمای مربوط به نمایش یک مورد خاص.
|
|||
|
* @param {String} _id - شناسه مورد.
|
|||
|
* @param {String} [key=""] - کلید مورد.
|
|||
|
* @returns {String} آدرس تارنما برای نمایش.
|
|||
|
*/
|
|||
|
urlResolver(_parent, key = "") {
|
|||
|
if (key == "") key = this.myKey;
|
|||
|
if (!key) key = "qasection"; // برای شرایطی که بصورت مدال استفاده می شود گتر بالا پر نیست
|
|||
|
|
|||
|
let path = "/search/lists";
|
|||
|
if (key == "qsection") path = "detail";
|
|||
|
|
|||
|
const routeData = this.$router.resolve({
|
|||
|
path: path,
|
|||
|
params: {
|
|||
|
id: _parent,
|
|||
|
key: key,
|
|||
|
},
|
|||
|
query: {},
|
|||
|
});
|
|||
|
return routeData.href;
|
|||
|
},
|
|||
|
changeCurrent: function (item) {
|
|||
|
// this.showSummary = false;
|
|||
|
// this.$nextTick(() => {
|
|||
|
// this.showSummary = true;
|
|||
|
// });
|
|||
|
// this.currentItem = item;
|
|||
|
// if (this.$refs.summary) this.$refs.summary.setInfo(item);
|
|||
|
},
|
|||
|
changePaging: function (item) {
|
|||
|
this.pagination = item;
|
|||
|
this.getListItemByFilter();
|
|||
|
},
|
|||
|
|
|||
|
hideSubjectForm() {
|
|||
|
this.selectedItem = {};
|
|||
|
this.openSubjectForm = false;
|
|||
|
},
|
|||
|
|
|||
|
showSubjectForm({ rowItem }) {
|
|||
|
this.selectedItem = rowItem;
|
|||
|
this.SET_SELECTED_ITEM(rowItem);
|
|||
|
this.slotComponentName = "SearchSubjectForm";
|
|||
|
this.openSubjectForm = true;
|
|||
|
this.modalTitle = "افزودن موضوع";
|
|||
|
},
|
|||
|
|
|||
|
openModalFilter(componentName, title) {
|
|||
|
this.slotComponentName = componentName;
|
|||
|
this.openSubjectForm = true;
|
|||
|
this.modalTitle = title;
|
|||
|
},
|
|||
|
|
|||
|
async getCustumListItem() {
|
|||
|
if (this.fetchingData) return;
|
|||
|
this.fetchingData = true;
|
|||
|
|
|||
|
let url = "";
|
|||
|
|
|||
|
if (this.subjectItemState)
|
|||
|
url = searchApis.navigation.reportSubjectItem.replace(
|
|||
|
"{{subject_title}}",
|
|||
|
this.subjectTitle
|
|||
|
);
|
|||
|
else url = searchApis.navigation.reportItem;
|
|||
|
|
|||
|
url += `/${this.searchListActiveSchemaGetter.key}`;
|
|||
|
|
|||
|
url += `/${this.sorting.sortby}/${this.sorting.sortorder}`;
|
|||
|
url += `/${this.pagination.offset}/${this.pagination.limit}/`;
|
|||
|
|
|||
|
if (this.listGetter && this.listGetter.length) {
|
|||
|
if (this.listGetter.length <= this.fields.length) {
|
|||
|
for (let i = 0; i < this.listGetter.length; i++) {
|
|||
|
url += `${this.fields[i].name}=${this.listGetter[i].key}`;
|
|||
|
if (i != this.listGetter.length - 1) url += "&";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (this.filterLists !== "") {
|
|||
|
url = url + this.filterLists;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(searchApis.schema.list, {
|
|||
|
method: "POST",
|
|||
|
baseURL: repoUrl(),
|
|||
|
body: {
|
|||
|
organ: this.organNameGetter,
|
|||
|
system: "search",
|
|||
|
build_state: buildState(),
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
this.listItem = [];
|
|||
|
this.listAggregations = response.aggregations;
|
|||
|
this.listHits = response.hits.hits;
|
|||
|
this.listHits.forEach((element) => {
|
|||
|
this.listItem.push(element._source);
|
|||
|
});
|
|||
|
|
|||
|
this.initNormalRespone(this.listHits, response.hits.total.value);
|
|||
|
|
|||
|
const total = response.hits.total.value;
|
|||
|
const pages = Math.ceil(total / this.pagination.limit);
|
|||
|
const pagination = {
|
|||
|
total: total,
|
|||
|
pages: pages == 0 ? 1 : pages,
|
|||
|
};
|
|||
|
|
|||
|
this.pagination = { ...this.pagination, ...pagination };
|
|||
|
} catch (err) {
|
|||
|
this.fetchingData = false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
updatPathTitle(item = "--") {
|
|||
|
let path = "";
|
|||
|
let itemDtataRepository = this.searchListActiveSchemaGetter?.label;
|
|||
|
let itemActiveTab = this.searchListActiveTabGetter?.label;
|
|||
|
|
|||
|
// path = `${itemDtataRepository}/${itemActiveTab}/${item}`;
|
|||
|
path = `<span class=" ms-2 me-1 " style="color: #00b6e3;">${itemDtataRepository}</span>/<span class="text-primary ms-2 me-1 itemActiveTab" style="color: #00b6e3; cursor:pointer">${itemActiveTab}</span>/ <span class=" ms-2 me-1" >${item}</span>`;
|
|||
|
// اضافه کردن ریشه به مسیر نهایی
|
|||
|
this.currentPathHtml = path;
|
|||
|
this.currentPathItem = `${itemDtataRepository}_${itemActiveTab}_${item}`;
|
|||
|
},
|
|||
|
onItemActiveTabClick() {
|
|||
|
this.openNavigationFilter(2);
|
|||
|
},
|
|||
|
emptyFilter() {
|
|||
|
this.selectionFilterItemsSetter([]);
|
|||
|
},
|
|||
|
delFilterItem(item) {
|
|||
|
var filterItems = this.selectionFilterItemsGetter;
|
|||
|
var index = this.selectionFilterItemsGetter?.indexOf(item);
|
|||
|
var filterSelect = [];
|
|||
|
if (index != -1) {
|
|||
|
// this.filterSelect.splice(index, 1);
|
|||
|
filterItems.splice(index, 1);
|
|||
|
} else
|
|||
|
filterItems.forEach((element) => {
|
|||
|
filterSelect.push(element.id);
|
|||
|
});
|
|||
|
// this.$emit("filterSelect", filterSelect);
|
|||
|
this.selectionFilterItemsSetter(filterItems);
|
|||
|
},
|
|||
|
showCategory() {
|
|||
|
this.$refs.navigationFilter?.classList.add("d-none");
|
|||
|
},
|
|||
|
filterSelect(itemSelect) {
|
|||
|
itemSelect.sort(function (x, y) {
|
|||
|
return y - x;
|
|||
|
});
|
|||
|
var filter = "";
|
|||
|
var prevType = "";
|
|||
|
itemSelect.forEach((item) => {
|
|||
|
var items = item.split("#");
|
|||
|
|
|||
|
if (prevType == items[0]) {
|
|||
|
filter += "$" + items[1];
|
|||
|
} else {
|
|||
|
filter += "&" + items[0] + "=" + items[1];
|
|||
|
}
|
|||
|
prevType = items[0];
|
|||
|
});
|
|||
|
this.filterLists = filter;
|
|||
|
this.getListItemByFilter();
|
|||
|
},
|
|||
|
selectedFilterUrl(url) {
|
|||
|
this.filterLists = url;
|
|||
|
this.getListItemByFilter();
|
|||
|
},
|
|||
|
heightHandler(item) {
|
|||
|
if (item == "table") {
|
|||
|
if (this.searchListActiveTabGetter?.key == "custome") {
|
|||
|
return "calc(100vh - 15em)";
|
|||
|
} else {
|
|||
|
return "calc(100vh - 12em)";
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (this.searchListActiveTabGetter?.key == "custome") {
|
|||
|
return "calc(100vh - 17em)";
|
|||
|
} else {
|
|||
|
return "calc(100vh - 14em)";
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
updateTitle(list) {
|
|||
|
this.tableTitle = list.title;
|
|||
|
},
|
|||
|
updateCategoryList(navItem, index) {
|
|||
|
this.fetchingData = false;
|
|||
|
this.searchListActiveTabSetter(navItem);
|
|||
|
// this.activeTab = navItem;
|
|||
|
this.tabIndex = index;
|
|||
|
this.updatPathTitle();
|
|||
|
this.selectionFilterItemsSetter([]);
|
|||
|
this.listItem = [];
|
|||
|
this.listAggregations = {};
|
|||
|
this.listHits = [];
|
|||
|
this.switchViewMode(this.viewMode);
|
|||
|
this.componentCounter++;
|
|||
|
this.rerenderSubheader++;
|
|||
|
},
|
|||
|
listChanged(tags = []) {
|
|||
|
let res = [];
|
|||
|
tags.split(",").forEach((e) => {
|
|||
|
let i = e.lastIndexOf("_");
|
|||
|
if (i != -1) {
|
|||
|
res.push(e.substring(0, i));
|
|||
|
}
|
|||
|
});
|
|||
|
this.setFilterNavigate(res);
|
|||
|
},
|
|||
|
setFilterNavigate(value = []) {
|
|||
|
this.filterNavigate = value;
|
|||
|
},
|
|||
|
filterUpdate(object) {
|
|||
|
this.filterUrl = object.filter;
|
|||
|
this.url_GET_item = object.url;
|
|||
|
this.state_list = object.state_list;
|
|||
|
this.page = 0;
|
|||
|
|
|||
|
this.updatPathTitle(object.title);
|
|||
|
|
|||
|
this.getListItemByFilter();
|
|||
|
// if (this.searchingState) this.getQuery(false, true);
|
|||
|
// else this.getDefaultByFilter();
|
|||
|
},
|
|||
|
getListItemByFilter(sortby = "sort_date_timestamp", sortorder = "desc") {
|
|||
|
if (this.searchListActiveTabGetter?.key == "custome") {
|
|||
|
this.getCustumListItem();
|
|||
|
} else {
|
|||
|
if (this.state_list == 1) this.getListByFilter1(sortby, sortorder);
|
|||
|
else this.getListByFilter2(sortby, sortorder);
|
|||
|
}
|
|||
|
},
|
|||
|
async getListByFilter1(sortby = "sort_date_timestamp", sortorder = "desc") {
|
|||
|
// let url = "{{buildName}}/data/{{index_key}}/{{field_collapsed}}/{{offset}}/{{limit}}/{{sortby}}/{{sortorder}}/{{filterUrl}}";
|
|||
|
let url = this.url_GET_item;
|
|||
|
|
|||
|
url = url.replace("{{buildName}}", buildName());
|
|||
|
url = url.replace(
|
|||
|
"{{index_key}}",
|
|||
|
this.searchListActiveSchemaGetter?.key
|
|||
|
);
|
|||
|
|
|||
|
url = url.replace("{{offset}}", this.pagination?.offset);
|
|||
|
url = url.replace("{{limit}}", this.pagination?.limit);
|
|||
|
|
|||
|
url = url.replace("{{sortby}}", sortby);
|
|||
|
url = url.replace("{{sortorder}}", sortorder);
|
|||
|
|
|||
|
url = url.replace(
|
|||
|
"{{field_collapsed}}",
|
|||
|
this.searchListActiveTabGetter?.field_collapsed ?? "normal"
|
|||
|
);
|
|||
|
|
|||
|
url = url.replace("{{filter}}", this.filterUrl);
|
|||
|
if (this.filterLists !== "") {
|
|||
|
url = url + this.filterLists;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(url, {
|
|||
|
baseURL: repoUrl(),
|
|||
|
});
|
|||
|
|
|||
|
this.listItem = [];
|
|||
|
this.listAggregations = response.aggregations;
|
|||
|
this.listHits = response.hits.hits;
|
|||
|
|
|||
|
this.listHits.forEach((element, index) => {
|
|||
|
this.listItem[index] = { ...element, ...element._source };
|
|||
|
});
|
|||
|
|
|||
|
// if (this.viewMode != "table") {
|
|||
|
this.initNormalRespone(this.listHits, response.hits.total.value);
|
|||
|
// }
|
|||
|
|
|||
|
const total = response.hits.total.value;
|
|||
|
const pages = Math.ceil(total / this.pagination.limit);
|
|||
|
const pagination = {
|
|||
|
total: total,
|
|||
|
pages: pages == 0 ? 1 : pages,
|
|||
|
};
|
|||
|
|
|||
|
this.pagination = { ...this.pagination, ...pagination };
|
|||
|
this.reRender++;
|
|||
|
} catch (err) {
|
|||
|
this.fetchingData = false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
async getListByFilter2(sortby = "sort_date_timestamp", sortorder = "desc") {
|
|||
|
// let url = 'navigate/report/items/{{index_key}}/{{sortby}}/{{sortorder}}/{{offset}}/{{limit}}/{{filter}}';
|
|||
|
let url = this.url_GET_item;
|
|||
|
url = url.replace(
|
|||
|
"{{index_key}}",
|
|||
|
this.searchListActiveSchemaGetter?.key
|
|||
|
);
|
|||
|
url = url.replace("{{offset}}", this.pagination?.offset);
|
|||
|
url = url.replace("{{limit}}", this.pagination?.limit);
|
|||
|
url = url.replace("{{sortby}}", sortby);
|
|||
|
url = url.replace("{{sortorder}}", sortorder);
|
|||
|
// url = url.replace("{{field_collapsed}}", this.activeTab?.field_collapsed);
|
|||
|
url = url.replace("{{filter}}", this.filterUrl);
|
|||
|
if (this.filterLists !== "") {
|
|||
|
url = url + this.filterLists;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(searchApis.schema.list, {
|
|||
|
method: "POST",
|
|||
|
baseURL: repoUrl(),
|
|||
|
body: {
|
|||
|
organ: this.organNameGetter,
|
|||
|
system: "search",
|
|||
|
build_state: buildState(),
|
|||
|
},
|
|||
|
});
|
|||
|
this.listItem = [];
|
|||
|
this.listAggregations = response.aggregations;
|
|||
|
this.listHits = response.hits.hits;
|
|||
|
this.listHits.forEach((element) => {
|
|||
|
this.listItem.push(element._source);
|
|||
|
});
|
|||
|
// if (this.viewMode != "table") {
|
|||
|
this.initNormalRespone(this.listHits, response.hits.total.value);
|
|||
|
// }
|
|||
|
|
|||
|
const total = response.hits.total.value;
|
|||
|
const pages = Math.ceil(total / this.pagination.limit);
|
|||
|
const pagination = {
|
|||
|
total: total,
|
|||
|
pages: pages == 0 ? 1 : pages,
|
|||
|
};
|
|||
|
|
|||
|
this.pagination = { ...this.pagination, ...pagination };
|
|||
|
this.reRender++;
|
|||
|
} catch (err) {
|
|||
|
this.fetchingData = false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
initNormalRespone(list, total, pageOnly = false, filteronly = false) {
|
|||
|
if (pageOnly) {
|
|||
|
this.$refs.content?.setAnswer(list, total);
|
|||
|
} else if (filteronly) {
|
|||
|
this.$refs.content?.setAnswer(list, total);
|
|||
|
} else {
|
|||
|
this.$refs.content?.setAnswer(list, total);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
async getSchemas() {
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(searchApis.schema.list, {
|
|||
|
method: "POST",
|
|||
|
baseURL: repoUrl(),
|
|||
|
body: {
|
|||
|
organ: this.organNameGetter,
|
|||
|
system: "navigateList",
|
|||
|
build_state: buildState(),
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
this.searchListSchemaSetter(response.data.navigateList);
|
|||
|
this.searchListActiveSchemaSetter(response.data.navigateList[0]);
|
|||
|
this.searchListActiveTabSetter(response.data.navigateList[0].items[0]);
|
|||
|
|
|||
|
this.getComboList();
|
|||
|
} catch (err) {}
|
|||
|
},
|
|||
|
//mehdi
|
|||
|
AddToFolder(text) {
|
|||
|
if (this.selectedProjectGetter.lists.length) {
|
|||
|
if (text == "positionOne") {
|
|||
|
let myString = this.selectedProjectGetter.lists[0].items;
|
|||
|
let myArray1 = myString.split(",");
|
|||
|
let myArray2 = this.selectedProjectGetter.items;
|
|||
|
let myArray3 = [];
|
|||
|
for (let i = 0; i < myArray1.length; i++) {
|
|||
|
for (let j = 0; j < myArray2.length; j++) {
|
|||
|
if (myArray1[i] === myArray2[j].name) {
|
|||
|
myArray3.push(myArray2[j]);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
this.fieldOne = myArray3[0];
|
|||
|
this.fieldTwo = myArray3[1];
|
|||
|
this.fieldThree = myArray3[2];
|
|||
|
setTimeout(() => {
|
|||
|
this.onComboChanged();
|
|||
|
|
|||
|
this.componentCounter++;
|
|||
|
}, 300);
|
|||
|
} else if (text == "positionTow") {
|
|||
|
let myString = this.selectedProjectGetter.lists[1].items;
|
|||
|
let myArray1 = myString.split(",");
|
|||
|
let myArray2 = this.selectedProjectGetter.items;
|
|||
|
let myArray3 = [];
|
|||
|
for (let i = 0; i < myArray1.length; i++) {
|
|||
|
for (let j = 0; j < myArray2.length; j++) {
|
|||
|
if (myArray1[i] === myArray2[j].name) {
|
|||
|
myArray3.push(myArray2[j]);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
this.fieldOne = myArray3[0];
|
|||
|
this.fieldTwo = myArray3[1];
|
|||
|
this.fieldThree = myArray3[2];
|
|||
|
setTimeout(() => {
|
|||
|
this.onComboChanged();
|
|||
|
|
|||
|
this.componentCounter++;
|
|||
|
}, 300);
|
|||
|
} else {
|
|||
|
let myString = this.selectedProjectGetter.lists[2].items;
|
|||
|
let myArray1 = myString.split(",");
|
|||
|
let myArray2 = this.selectedProjectGetter.items;
|
|||
|
let myArray3 = [];
|
|||
|
for (let i = 0; i < myArray1.length; i++) {
|
|||
|
for (let j = 0; j < myArray2.length; j++) {
|
|||
|
if (myArray1[i] === myArray2[j].name) {
|
|||
|
myArray3.push(myArray2[j]);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
this.fieldOne = myArray3[0];
|
|||
|
this.fieldTwo = myArray3[1];
|
|||
|
this.fieldThree = myArray3[2];
|
|||
|
setTimeout(() => {
|
|||
|
this.onComboChanged();
|
|||
|
|
|||
|
this.componentCounter++;
|
|||
|
}, 300);
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
openNavigationFilter(item) {
|
|||
|
// debugger
|
|||
|
// if (item == 1) {
|
|||
|
// this.$refs.pags.classList.add("position1");
|
|||
|
// this.$refs.pags.classList.remove("position2");
|
|||
|
// } else {
|
|||
|
// this.$refs.pags.classList.add("position2");
|
|||
|
// this.$refs.pags.classList.remove("position1");
|
|||
|
// }
|
|||
|
this.$refs.navigationFilter?.classList.remove("d-none");
|
|||
|
},
|
|||
|
statusPag2($event) {
|
|||
|
this.statusPag = $event;
|
|||
|
switch (this.statusPag) {
|
|||
|
case (this.statusPag = 2):
|
|||
|
this.$refs.pags?.classList.add("position1");
|
|||
|
this.$refs.pags?.classList.remove("position2");
|
|||
|
break;
|
|||
|
case (this.statusPag = 1):
|
|||
|
this.$refs.pags?.classList.add("position2");
|
|||
|
this.$refs.pags?.classList.remove("position1");
|
|||
|
break;
|
|||
|
}
|
|||
|
},
|
|||
|
isShowPag(event) {
|
|||
|
this.$refs.navigationFilter?.classList.add("d-none");
|
|||
|
},
|
|||
|
|
|||
|
//mehdi
|
|||
|
|
|||
|
exportJsonToExcel(evt) {
|
|||
|
let title = " ";
|
|||
|
if (evt === "current") {
|
|||
|
title = new Date().toJSON().slice(0, 10);
|
|||
|
if (this.currentPathItem) title = this.currentPathItem;
|
|||
|
convertJsonToExcelUsingPlugin(
|
|||
|
this.filterColumns(this.listItem, this.getTableColumns),
|
|||
|
title
|
|||
|
).finally(() => {
|
|||
|
this.fetchingDataForExport = false;
|
|||
|
});
|
|||
|
} else if (evt === "all") {
|
|||
|
//دسترسی را چک کند
|
|||
|
|
|||
|
let file_counter = 1;
|
|||
|
// let offset = 0;
|
|||
|
// while (offset < this.pagination.total) {
|
|||
|
// let limit = 500;
|
|||
|
|
|||
|
// درخواست
|
|||
|
this.getAllListItemForExport(this.exportOffset, this.exportLimit)
|
|||
|
.then((response) => {
|
|||
|
let file_name = new Date().toJSON().slice(0, 10) + file_counter;
|
|||
|
file_counter++;
|
|||
|
if (this.currentPathItem) title = this.currentPathItem;
|
|||
|
|
|||
|
convertJsonToExcelUsingPlugin(
|
|||
|
this.filterColumns(response?.hits.hits, this.getTableColumns),
|
|||
|
file_name
|
|||
|
)
|
|||
|
.then(() => {
|
|||
|
this.exportOffset += this.exportLimit;
|
|||
|
|
|||
|
if (
|
|||
|
this.exportOffset + this.exportLimit >
|
|||
|
this.pagination.total
|
|||
|
)
|
|||
|
this.exportLimit = this.pagination.total - this.exportOffset;
|
|||
|
|
|||
|
if (this.exportOffset < this.pagination.total)
|
|||
|
this.exportJsonToExcel(evt);
|
|||
|
})
|
|||
|
.finally(() => {
|
|||
|
this.fetchingDataForExport = false;
|
|||
|
});
|
|||
|
})
|
|||
|
|
|||
|
.finally(() => {
|
|||
|
this.fetchingDataForExport = false;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// }
|
|||
|
},
|
|||
|
filterColumns(listItem = [], columns = []) {
|
|||
|
let clonedItems = listItem;
|
|||
|
let clonedColumns = columns;
|
|||
|
let filteredItems = [];
|
|||
|
|
|||
|
clonedItems.forEach((item, index) => {
|
|||
|
let filterObject = {};
|
|||
|
|
|||
|
clonedColumns.forEach((j) => {
|
|||
|
filterObject[j.title] = item._source[j.key];
|
|||
|
});
|
|||
|
|
|||
|
filteredItems[index] = filterObject;
|
|||
|
});
|
|||
|
return filteredItems;
|
|||
|
},
|
|||
|
async getAllListItemForExport(offset = 0, limit = 500) {
|
|||
|
if (this.fetchingDataForExport) return;
|
|||
|
this.fetchingDataForExport = true;
|
|||
|
|
|||
|
let url =
|
|||
|
searchApis.navigation.reportItem +
|
|||
|
`/${this.searchListActiveSchemaGetter?.info?.index_name}`;
|
|||
|
|
|||
|
url += `/${this.sorting.sortby}/${this.sorting.sortorder}`;
|
|||
|
url += `/${offset}/${limit}/&`;
|
|||
|
|
|||
|
if (this.listGetter && this.listGetter.length) {
|
|||
|
if (this.listGetter.length <= this.fields.length) {
|
|||
|
for (let i = 0; i < this.listGetter.length; i++) {
|
|||
|
url += `${this.fields[i].name}=${this.listGetter[i].key}`;
|
|||
|
if (i != this.listGetter.length - 1) url += "&";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
return await $api(url, {
|
|||
|
baseURL: repoUrl(),
|
|||
|
body: {
|
|||
|
organ: this.organNameGetter,
|
|||
|
system: "search",
|
|||
|
build_state: buildState(),
|
|||
|
},
|
|||
|
});
|
|||
|
} catch (err) {}
|
|||
|
},
|
|||
|
|
|||
|
async updateOrder({ rowItem, newOrder }) {
|
|||
|
const res = rowItem.subject.filter(
|
|||
|
(item) => item.title == this.listGetter[this.listGetter.length - 1].key
|
|||
|
);
|
|||
|
|
|||
|
const payload = {
|
|||
|
id: rowItem.id_store,
|
|||
|
subject_id: res[0].id,
|
|||
|
subject_title: res[0].title,
|
|||
|
subject_order: +newOrder,
|
|||
|
};
|
|||
|
|
|||
|
const url = searchApis.subject.order;
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(url, {
|
|||
|
method: "POST",
|
|||
|
baseURL: repoUrl(),
|
|||
|
body: payload,
|
|||
|
});
|
|||
|
this.mySwalToast({
|
|||
|
title: response.message,
|
|||
|
html: "",
|
|||
|
});
|
|||
|
} catch (err) {}
|
|||
|
},
|
|||
|
async getComboList() {
|
|||
|
if (this.fetchingData) return;
|
|||
|
this.fetchingData = true;
|
|||
|
|
|||
|
let url = searchApis.navigation.list;
|
|||
|
url = url.replace("@entity", this.searchListActiveSchemaGetter?.key);
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(url, {
|
|||
|
baseURL: repoUrl(),
|
|||
|
});
|
|||
|
|
|||
|
// this.navigationOptions = response.data;
|
|||
|
|
|||
|
// this.navigationOptions[0].meta = JSON.parse(
|
|||
|
// this.navigationOptions[0].meta
|
|||
|
// );
|
|||
|
// this.navigationOptions[0].table_columns = JSON.parse(
|
|||
|
// this.navigationOptions[0].table_columns
|
|||
|
// );
|
|||
|
// this.navigationOptions[0].table_columns_subject = JSON.parse(
|
|||
|
// this.navigationOptions[0].table_columns_subject
|
|||
|
// );
|
|||
|
|
|||
|
// this.SET_SELECTED_PROJECT(this.navigationOptions[0]);
|
|||
|
this.dataCatched = true;
|
|||
|
this.fetchingData = false;
|
|||
|
} catch (err) {
|
|||
|
this.fetchingData = false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
onSelectNavigation(evt = null) {
|
|||
|
if (evt) {
|
|||
|
// this.searchListSchemaSetter();
|
|||
|
this.searchListActiveSchemaSetter(evt);
|
|||
|
this.searchListActiveTabSetter(evt);
|
|||
|
|
|||
|
this.updatPathTitle();
|
|||
|
|
|||
|
// this.fieldOne = null;
|
|||
|
// this.fieldTwo = null;
|
|||
|
// this.fieldThree = null;
|
|||
|
// this.SET_LIST([]);
|
|||
|
// this.listItem = [];
|
|||
|
// this.fields = [];
|
|||
|
// this.componentCounter++;
|
|||
|
|
|||
|
// if (typeof evt?.meta == "string") {
|
|||
|
// try {
|
|||
|
// evt.meta = JSON.parse(evt.meta);
|
|||
|
// evt.table_columns = JSON.parse(evt.table_columns);
|
|||
|
// evt.table_columns_subject = JSON.parse(evt.table_columns_subject);
|
|||
|
// } catch (e) {}
|
|||
|
// }
|
|||
|
// this.selectedNavigation = evt;
|
|||
|
// this.SET_SELECTED_PROJECT(this.selectedNavigation);
|
|||
|
// this.updatPathTitle();
|
|||
|
}
|
|||
|
},
|
|||
|
onComboChanged() {
|
|||
|
this.SET_LIST([]);
|
|||
|
this.listItem = [];
|
|||
|
const vm = this;
|
|||
|
setTimeout(() => {
|
|||
|
if (vm.fieldOne || vm.fieldTwo || vm.fieldThree)
|
|||
|
vm.fields = [vm.fieldOne, vm.fieldTwo, vm.fieldThree].filter(
|
|||
|
(item) => item != null
|
|||
|
);
|
|||
|
vm.componentCounter++;
|
|||
|
}, 300);
|
|||
|
},
|
|||
|
toggleSidebarMenu() {
|
|||
|
this.$store.commit("TOGGLE_SIDEBAR_MENU");
|
|||
|
},
|
|||
|
showToggleListPanel() {
|
|||
|
this.showListPanel = !this.showListPanel;
|
|||
|
},
|
|||
|
searchInTable() {},
|
|||
|
|
|||
|
async getListItem() {
|
|||
|
if (this.fetchingData) return;
|
|||
|
this.fetchingData = true;
|
|||
|
|
|||
|
let url = "";
|
|||
|
|
|||
|
if (this.subjectItemState)
|
|||
|
url = searchApis.navigation.reportSubjectItem.replace(
|
|||
|
"{{subject_title}}",
|
|||
|
this.subjectTitle
|
|||
|
);
|
|||
|
else url = searchApis.navigation.reportItem;
|
|||
|
|
|||
|
url += `/${this.searchListActiveSchemaGetter.key}`;
|
|||
|
|
|||
|
url += `/${this.sorting.sortby}/${this.sorting.sortorder}`;
|
|||
|
url += `/${this.pagination.offset}/${this.pagination.limit}/`;
|
|||
|
|
|||
|
if (this.listGetter && this.listGetter.length) {
|
|||
|
if (this.listGetter.length <= this.fields.length) {
|
|||
|
for (let i = 0; i < this.listGetter.length; i++) {
|
|||
|
url += `${this.fields[i].name}=${this.listGetter[i].key}`;
|
|||
|
if (i != this.listGetter.length - 1) url += "&";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
const { $api } = useNuxtApp();
|
|||
|
const response = await $api(url, {
|
|||
|
baseURL: repoUrl(),
|
|||
|
});
|
|||
|
|
|||
|
let list = response.hits.hits;
|
|||
|
|
|||
|
list.forEach((element, index) => {
|
|||
|
list[index] = { ...element, ...element._source };
|
|||
|
});
|
|||
|
|
|||
|
this.listItem = list;
|
|||
|
this.listHits = list;
|
|||
|
this.listAggregations = response.aggregations ?? {};
|
|||
|
const total = response.hits.total.value;
|
|||
|
const pages = Math.ceil(total / this.pagination.limit);
|
|||
|
const pagination = {
|
|||
|
total: total,
|
|||
|
pages: pages == 0 ? 1 : pages,
|
|||
|
};
|
|||
|
|
|||
|
this.pagination = { ...this.pagination, ...pagination };
|
|||
|
this.fetchingData = false;
|
|||
|
} catch (err) {
|
|||
|
this.fetchingData = false;
|
|||
|
}
|
|||
|
},
|
|||
|
setList() {
|
|||
|
// this.listId = listId;
|
|||
|
},
|
|||
|
setListItem(meta) {
|
|||
|
// this.listId = listId;
|
|||
|
let cc = this.getTableColumns;
|
|||
|
|
|||
|
this.meta = meta;
|
|||
|
this.resetPagination();
|
|||
|
this.checkPermisionBeforGetList();
|
|||
|
|
|||
|
// this.getListItem();
|
|||
|
},
|
|||
|
switchViewMode(mode) {
|
|||
|
this.viewMode = mode;
|
|||
|
if (this.viewMode != "table") {
|
|||
|
setTimeout(() => {
|
|||
|
this.initNormalRespone(this.listHits, this.pagination.total);
|
|||
|
}, 300);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
showTextPage(index) {
|
|||
|
let pageTitle = this.listItem[index].title ?? "بدون عنوان";
|
|||
|
|
|||
|
pageTitle = pageTitle.replaceAll(" ", "-");
|
|||
|
|
|||
|
const routeData = this.$router.resolve({
|
|||
|
name: "navigation",
|
|||
|
params: {
|
|||
|
id: this.listItem[index].id ?? this.listItem[index].id_store,
|
|||
|
key: this.searchListActiveSchemaGetter.key,
|
|||
|
},
|
|||
|
query: {
|
|||
|
searchtext: this.pageTitle ?? undefined,
|
|||
|
},
|
|||
|
});
|
|||
|
window.open(routeData.href, "_blank");
|
|||
|
},
|
|||
|
resetPagination() {
|
|||
|
this.pagination = {
|
|||
|
pages: 0,
|
|||
|
total: 0,
|
|||
|
page: 1,
|
|||
|
offset: 0,
|
|||
|
limit: 10,
|
|||
|
};
|
|||
|
},
|
|||
|
pageChanged(paging) {
|
|||
|
let page = paging.pageNumber;
|
|||
|
page -= 1;
|
|||
|
this.pagination.offset = page * paging.limit;
|
|||
|
this.pagination.limit = paging.limit;
|
|||
|
this.pagination.page = paging.pageNumber;
|
|||
|
this.getListItemByFilter();
|
|||
|
},
|
|||
|
pageLimitChanged(paging) {
|
|||
|
this.resetPagination();
|
|||
|
this.pagination.limit = paging.limit;
|
|||
|
|
|||
|
this.getListItemByFilter();
|
|||
|
},
|
|||
|
sortChanged(sorting) {
|
|||
|
// keep limit status.
|
|||
|
// reset page and offset values.
|
|||
|
this.fetchingData = false;
|
|||
|
this.pagination.page = this.pagination.offset = 0;
|
|||
|
this.sorting = sorting;
|
|||
|
|
|||
|
this.getListItemByFilter(this.sorting.sortby, this.sorting.sortorder);
|
|||
|
},
|
|||
|
checkPermisionBeforGetList() {
|
|||
|
// this.checkPermissions({ permission: "item_view", _this: this })
|
|||
|
// .then(() => {
|
|||
|
this.getListItem();
|
|||
|
// })
|
|||
|
// .catch(() => { });
|
|||
|
},
|
|||
|
showDetails(item) {
|
|||
|
const { show, rowItem } = item;
|
|||
|
|
|||
|
this.SET_SELECTED_ITEM(rowItem);
|
|||
|
|
|||
|
this.rowItem = rowItem;
|
|||
|
this.showDetailsPanel = true;
|
|||
|
this.formRerrenderer++;
|
|||
|
},
|
|||
|
updateList() {
|
|||
|
this.closeModal();
|
|||
|
this.getListItem();
|
|||
|
},
|
|||
|
openForm(data = undefined) {
|
|||
|
this.selectedItem = data;
|
|||
|
this.SET_SELECTED_ITEM(data);
|
|||
|
this.openModal();
|
|||
|
},
|
|||
|
closeModal() {
|
|||
|
$("#meta-item-modal").modal("hide");
|
|||
|
// this.TOGGLE_PANEL(false);
|
|||
|
|
|||
|
setTimeout(() => {
|
|||
|
this.showModal = false;
|
|||
|
}, 500);
|
|||
|
},
|
|||
|
openModal() {
|
|||
|
this.showModal = true;
|
|||
|
|
|||
|
setTimeout(() => {
|
|||
|
$("#meta-item-modal").modal(
|
|||
|
{ backdrop: "static", keyboard: false },
|
|||
|
"show"
|
|||
|
);
|
|||
|
}, 500);
|
|||
|
},
|
|||
|
},
|
|||
|
};
|
|||
|
</script>
|
|||
|
<style lang="scss">
|
|||
|
.custom-filter-container {
|
|||
|
@media screen and (min-width: 575px) {
|
|||
|
background-color: rgba(0, 0, 0, 0.05);
|
|||
|
}
|
|||
|
|
|||
|
.multiselect {
|
|||
|
// width: 12em;
|
|||
|
// border: 2px solid rgb(127, 170, 170) !important;
|
|||
|
border-radius: 0.5em;
|
|||
|
// .multiselect__content-wrapper {
|
|||
|
// width: 12em;
|
|||
|
// }
|
|||
|
|
|||
|
@media screen and (max-width: 575px) {
|
|||
|
.multiselect__tags {
|
|||
|
font-size: 0.8rem;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.multiselect {
|
|||
|
width: 12em;
|
|||
|
white-space: nowrap;
|
|||
|
}
|
|||
|
.table-container {
|
|||
|
padding: 0em;
|
|||
|
}
|
|||
|
|
|||
|
.float-labels {
|
|||
|
margin-bottom: 0 !important;
|
|||
|
}
|
|||
|
.main-page__content-header {
|
|||
|
background: linear-gradient(to top, #fcfcfc 0%, #eee 90%);
|
|||
|
padding-top: 1em;
|
|||
|
}
|
|||
|
.multiselect-lable {
|
|||
|
white-space: nowrap;
|
|||
|
}
|
|||
|
</style>
|