2025-02-11 10:17:22 +00:00
|
|
|
|
<template>
|
2025-02-12 14:14:07 +00:00
|
|
|
|
<HadithLayout :menu="sidbarMenu">
|
2025-02-16 12:51:52 +00:00
|
|
|
|
<section class="section-one flex flex-col justify-center">
|
2025-02-17 13:03:06 +00:00
|
|
|
|
<div class="bg-container h-full" :style="backgroundImageStyle">
|
2025-02-16 12:51:52 +00:00
|
|
|
|
<navigation-menu></navigation-menu>
|
|
|
|
|
|
|
|
|
|
<div class="text-logo flex justify-center flex-col items-center">
|
2025-02-17 13:03:06 +00:00
|
|
|
|
<NuxtImg fit="auto" quality="80" placeholder src="/img/logo.png" />
|
2025-02-16 12:51:52 +00:00
|
|
|
|
<div class="title">
|
|
|
|
|
کاوش با
|
|
|
|
|
<span class="badge-style"> هوش مصنوعی </span>
|
|
|
|
|
در احادیث اسلامی
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="search-box-container flex justify-center">
|
|
|
|
|
<auto-complation></auto-complation>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section class="section-two">
|
2025-02-17 13:03:06 +00:00
|
|
|
|
<div class="flex flex-col items-center py-6">
|
|
|
|
|
<div>قابلیت ها</div>
|
|
|
|
|
<div>
|
|
|
|
|
<NuxtImg
|
|
|
|
|
width="32"
|
|
|
|
|
height="32"
|
|
|
|
|
fit="auto"
|
|
|
|
|
quality="80"
|
|
|
|
|
placeholder
|
|
|
|
|
src="/img/chevron-down.svg"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="flex flex-col lg:flex-row">
|
|
|
|
|
<div class="my-card card-one basis-full flex justify-center items-center">
|
|
|
|
|
<div class="inner-container">
|
|
|
|
|
<div>
|
|
|
|
|
<p class="title">جستجوی معنایی</p>
|
|
|
|
|
<p class="description">ارائه نتایج دقیق و معنادار از میان</p>
|
|
|
|
|
<p class="description">حجم انبوه متون حدیثی</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<NuxtImg
|
|
|
|
|
fit="auto"
|
|
|
|
|
quality="80"
|
|
|
|
|
placeholder
|
|
|
|
|
src="/img/card-one.png"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="my-card card-two basis-full flex justify-center items-center">
|
|
|
|
|
<div class="inner-container">
|
|
|
|
|
<div class="">
|
|
|
|
|
<p class="title">جستجوی مترادفها</p>
|
|
|
|
|
<p class="description">یافتن سریع واژگان مرتبط برای</p>
|
|
|
|
|
<p class="description">درک بهتر مفاهیم حدیثی</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<NuxtImg
|
|
|
|
|
fit="auto"
|
|
|
|
|
quality="80"
|
|
|
|
|
placeholder
|
|
|
|
|
src="/img/card-two.png"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="my-card card-three basis-full flex flex-col justify-center items-center"
|
|
|
|
|
>
|
|
|
|
|
<div class="inner-container">
|
|
|
|
|
<div>
|
|
|
|
|
<p class="title">مشابهتیابی حدیث</p>
|
|
|
|
|
<p class="description">امکان یافتن احادیث یا مفاهیمی</p>
|
|
|
|
|
<p class="description">با معنای مشابه یک حدیث</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
2025-02-16 12:51:52 +00:00
|
|
|
|
<NuxtImg
|
|
|
|
|
fit="auto"
|
|
|
|
|
quality="80"
|
|
|
|
|
placeholder
|
2025-02-17 13:03:06 +00:00
|
|
|
|
src="/img/card-three.png"
|
2025-02-16 12:51:52 +00:00
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
2025-02-12 14:14:07 +00:00
|
|
|
|
</HadithLayout>
|
2025-02-11 10:17:22 +00:00
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import { useStorage } from "@vueuse/core";
|
|
|
|
|
import { mapActions, mapState } from "pinia";
|
|
|
|
|
|
2025-02-11 12:49:27 +00:00
|
|
|
|
import { useHadithStore } from "@hadith/stores/hadithStore";
|
2025-02-11 10:17:22 +00:00
|
|
|
|
import { useCommonStore } from "~/stores/commonStore";
|
2025-02-11 12:49:27 +00:00
|
|
|
|
import hadithApi from "@hadith/apis/hadithApi.js";
|
|
|
|
|
import navbarMenu from "@hadith/json/hadith/menu.json";
|
2025-02-11 10:17:22 +00:00
|
|
|
|
|
|
|
|
|
export default {
|
2025-02-11 12:49:27 +00:00
|
|
|
|
name: "hadith",
|
2025-02-11 10:17:22 +00:00
|
|
|
|
setup() {
|
|
|
|
|
useHead({
|
2025-02-11 12:49:27 +00:00
|
|
|
|
title: import.meta.env.VITE_HADITH_PAGE_TITLE,
|
|
|
|
|
meta: [
|
|
|
|
|
{ name: "description", content: "کاوش با هوش مصنوعی در احادیث اسلامی" },
|
|
|
|
|
],
|
2025-02-11 10:17:22 +00:00
|
|
|
|
bodyAttrs: {
|
2025-02-11 12:49:27 +00:00
|
|
|
|
class: import.meta.env.VITE_HADITH_SYSTEM,
|
2025-02-11 10:17:22 +00:00
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
definePageMeta({
|
|
|
|
|
layout: false,
|
2025-02-11 12:49:27 +00:00
|
|
|
|
name: "hadith",
|
2025-02-11 10:17:22 +00:00
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
created() {
|
|
|
|
|
this.httpService = useNuxtApp()["$http"];
|
|
|
|
|
},
|
2025-02-11 12:49:27 +00:00
|
|
|
|
|
2025-02-11 10:17:22 +00:00
|
|
|
|
async mounted() {
|
|
|
|
|
let schemaExist = this.searchActiveTabGetter && this.searchSchemaGetter;
|
|
|
|
|
|
|
|
|
|
if (!schemaExist) this.getSchemas();
|
|
|
|
|
else this.setSearchDomain(this.searchActiveTabGetter);
|
|
|
|
|
|
|
|
|
|
if (window.outerWidth < 992) {
|
|
|
|
|
this.$store.commit("TOGGLE_SIDEBAR_MENU");
|
|
|
|
|
this.showMobileFilterList = true;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
httpService: {},
|
|
|
|
|
logo: "",
|
2025-02-11 12:49:27 +00:00
|
|
|
|
sidbarMenuDefault: navbarMenu,
|
2025-02-11 10:17:22 +00:00
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
computed: {
|
2025-02-11 12:49:27 +00:00
|
|
|
|
// ...mapState(useHadithStore, [
|
|
|
|
|
// "domainActiveGetter",
|
|
|
|
|
// "searchActiveTabGetter",
|
|
|
|
|
// "searchSchemaGetter",
|
|
|
|
|
// "searchSynonymTitleGetter",
|
|
|
|
|
// ]),
|
2025-02-11 10:17:22 +00:00
|
|
|
|
...mapState(useCommonStore, [
|
|
|
|
|
"currentUser",
|
|
|
|
|
"organNameGetter",
|
|
|
|
|
"isSidebarCollapsed",
|
|
|
|
|
"userPermisionGetter",
|
|
|
|
|
]),
|
|
|
|
|
|
|
|
|
|
sidbarMenu() {
|
2025-02-11 12:49:27 +00:00
|
|
|
|
return this.sidbarMenuDefault;
|
2025-02-11 10:17:22 +00:00
|
|
|
|
},
|
2025-02-17 13:03:06 +00:00
|
|
|
|
|
|
|
|
|
backgroundImageStyle() {
|
|
|
|
|
// Use $img to generate an optimized image URL
|
|
|
|
|
const optimizedImageUrl = this.$img("/img/background.png", {
|
|
|
|
|
quality: 80,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
backgroundImage: `url(${optimizedImageUrl}), linear-gradient(199.05deg, #ffffff 9.99%, #e4fff7 42.07%, #ffffff 97.12%)`,
|
|
|
|
|
};
|
|
|
|
|
},
|
2025-02-11 10:17:22 +00:00
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
...mapActions(useCommonStore, [
|
|
|
|
|
"TOGGLE_SIDEBAR_MENU",
|
|
|
|
|
"sidebarCollapsedSetter",
|
|
|
|
|
]),
|
|
|
|
|
|
2025-02-11 12:49:27 +00:00
|
|
|
|
// ...mapActions(useHadithStore, [
|
|
|
|
|
// "searchActiveTabSetter",
|
|
|
|
|
// "searchSchemaSetter",
|
|
|
|
|
// "domainActiveSetter",
|
|
|
|
|
// "searchSynonymTitleSetter",
|
|
|
|
|
// ]),
|
2025-02-11 10:17:22 +00:00
|
|
|
|
|
|
|
|
|
async getSchemas() {
|
|
|
|
|
let localStoageSearchSchema = useStorage("searchSchema", undefined).value;
|
|
|
|
|
|
|
|
|
|
if (localStoageSearchSchema) {
|
|
|
|
|
let searchSchema = JSON.parse(localStoageSearchSchema);
|
|
|
|
|
this.searchSchemaSetter(searchSchema);
|
|
|
|
|
this.searchActiveTabSetter(searchSchema[0]);
|
|
|
|
|
} else {
|
|
|
|
|
const payload = {
|
|
|
|
|
organ: this.organNameGetter,
|
|
|
|
|
system: "search",
|
|
|
|
|
build_state: buildState(),
|
|
|
|
|
};
|
2025-02-11 12:49:27 +00:00
|
|
|
|
const url = repoUrl() + hadithApi.schema.list;
|
2025-02-11 10:17:22 +00:00
|
|
|
|
|
|
|
|
|
this.httpService
|
|
|
|
|
.postRequest(url, payload)
|
|
|
|
|
.then((res) => {
|
|
|
|
|
this.searchSchemaSetter(res.data.search);
|
|
|
|
|
this.searchActiveTabSetter(res.data.search[0]);
|
|
|
|
|
this.fetchingData = false;
|
2025-02-11 12:49:27 +00:00
|
|
|
|
|
|
|
|
|
const toast = useToast();
|
|
|
|
|
toast.add({
|
|
|
|
|
title: "Success",
|
|
|
|
|
description: "Your action was completed successfully.",
|
|
|
|
|
color: "success",
|
|
|
|
|
});
|
2025-02-11 10:17:22 +00:00
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
this.fetchingData = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
components: {
|
2025-02-16 12:51:52 +00:00
|
|
|
|
AutoComplation: defineAsyncComponent(() =>
|
|
|
|
|
import("@hadith/components/hadith/AutoComplation.vue")
|
|
|
|
|
),
|
|
|
|
|
NavigationMenu: defineAsyncComponent(() =>
|
|
|
|
|
import("@hadith/components/hadith/NavigationMenu.vue")
|
|
|
|
|
),
|
2025-02-11 10:17:22 +00:00
|
|
|
|
AutoComplation: defineAsyncComponent(() =>
|
2025-02-11 12:49:27 +00:00
|
|
|
|
import("@hadith/components/hadith/AutoComplation.vue")
|
2025-02-11 10:17:22 +00:00
|
|
|
|
),
|
2025-02-11 12:49:27 +00:00
|
|
|
|
HadithLayout: defineAsyncComponent(() =>
|
|
|
|
|
import("@hadith/layouts/HadithLayout.vue")
|
2025-02-11 10:17:22 +00:00
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
2025-02-16 12:51:52 +00:00
|
|
|
|
<style scoped>
|
|
|
|
|
.section-one {
|
|
|
|
|
.bg-container {
|
|
|
|
|
height: 521px;
|
|
|
|
|
background-size: 100% auto;
|
|
|
|
|
background-repeat: no-repeat;
|
2025-02-17 13:03:06 +00:00
|
|
|
|
/* background-attachment: fixed; */
|
|
|
|
|
/* background-image: url("/img/background.svg"),
|
|
|
|
|
linear-gradient(199.05deg, #ffffff 9.99%, #e4fff7 42.07%, #ffffff 97.12%); */
|
2025-02-16 12:51:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.text-logo {
|
|
|
|
|
padding-top: 10em;
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
|
|
.title {
|
|
|
|
|
margin-top: 3.5em;
|
|
|
|
|
font-family: IRANSansX;
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
line-height: 21px;
|
|
|
|
|
letter-spacing: 0%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #1b2132;
|
|
|
|
|
}
|
|
|
|
|
.badge-style {
|
|
|
|
|
width: 100;
|
|
|
|
|
height: 23;
|
|
|
|
|
border-radius: 40px;
|
|
|
|
|
padding-right: 8px;
|
|
|
|
|
padding-bottom: 2px;
|
|
|
|
|
padding-left: 8px;
|
|
|
|
|
gap: 10px;
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
|
|
|
|
background: linear-gradient(270.29deg, #d284ff 8.12%, #4d00ff 109.58%);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-box-container {
|
|
|
|
|
padding-top: 1em;
|
|
|
|
|
padding-bottom: 4em; /*64px */
|
2025-02-17 13:03:06 +00:00
|
|
|
|
}
|
2025-02-16 12:51:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.section-two {
|
|
|
|
|
font-weight: 200;
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
line-height: 30px;
|
|
|
|
|
letter-spacing: 0%;
|
|
|
|
|
text-align: center;
|
2025-02-17 13:03:06 +00:00
|
|
|
|
|
|
|
|
|
.my-card {
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: auto;
|
|
|
|
|
height: 660px;
|
|
|
|
|
|
|
|
|
|
.inner-container {
|
|
|
|
|
max-width: 21.25em;
|
|
|
|
|
margin: auto;
|
|
|
|
|
}
|
|
|
|
|
.title {
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 24px;
|
|
|
|
|
line-height: 36px;
|
|
|
|
|
letter-spacing: 0%;
|
|
|
|
|
color: #1b2132;
|
|
|
|
|
text-align: right;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.description {
|
|
|
|
|
font-weight: 300;
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
line-height: 30px;
|
|
|
|
|
letter-spacing: 0%;
|
|
|
|
|
text-align: right;
|
|
|
|
|
color: #626b84;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&.card-one {
|
|
|
|
|
background-image: url("/img/card-one-bgi.png"),
|
|
|
|
|
linear-gradient(134.17deg, #ffffff -9.81%, #e5e0ff 87.62%);
|
|
|
|
|
}
|
|
|
|
|
&.card-two {
|
|
|
|
|
background-image: url("/img/card-two-bgi.png"),
|
|
|
|
|
linear-gradient(329.16deg, #b9fde0 13.45%, #eefff8 63.57%);
|
|
|
|
|
}
|
|
|
|
|
&.card-three {
|
|
|
|
|
background-image: url("/img/card-three-bgi.png"),
|
|
|
|
|
linear-gradient(134.17deg, #ffffff -9.81%, #e5e0ff 87.62%);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-02-16 12:51:52 +00:00
|
|
|
|
}
|
|
|
|
|
</style>
|