chore: add shafafiat route

This commit is contained in:
mahyargdz
2024-11-18 19:35:42 +03:30
parent f75f890fa5
commit 1c89bc5f08
5 changed files with 397 additions and 215 deletions
+71 -124
View File
@@ -2,9 +2,7 @@
<div class="off-canvas"> <div class="off-canvas">
<div class="side d-none d-md-block"> <div class="side d-none d-md-block">
<div class="relativePos"> <div class="relativePos">
<div <div class="closeBtn d-none d-md-inline-block" @click="closeOffCanvas">
class="closeBtn d-none d-md-inline-block"
@click="closeOffCanvas">
<div class="x"></div> <div class="x"></div>
<span>بستن</span> <span>بستن</span>
</div> </div>
@@ -12,15 +10,12 @@
</div> </div>
<div style="overflow-y: auto; width: 100%"> <div style="overflow-y: auto; width: 100%">
<div class="main"> <div class="main">
<div <div class="closeBtnMobile d-block d-md-none" @click="closeOffCanvas">
class="closeBtnMobile d-block d-md-none"
@click="closeOffCanvas">
<div class="x"></div> <div class="x"></div>
</div> </div>
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div <div class="col-12 col-lg-4 order-0 order-lg-1 mb-5 mb-lg-0">
class="col-12 col-lg-4 order-0 order-lg-1 mb-5 mb-lg-0">
<div class="searchBox"> <div class="searchBox">
<div class="title"> <div class="title">
<p class="title-search"> <p class="title-search">
@@ -32,7 +27,8 @@
type="text" type="text"
name="search" name="search"
v-model="searchableText" v-model="searchableText"
placeholder="عبارت مدنظر خود را بنویسید" /> placeholder="عبارت مدنظر خود را بنویسید"
/>
<button type="submit"> <button type="submit">
<i class="fal fa-search"></i> <i class="fal fa-search"></i>
</button> </button>
@@ -52,11 +48,10 @@
}, },
}" }"
v-slot="{ navigate, href }" v-slot="{ navigate, href }"
custom> custom
>
<div class="mt-3" @click="navigate"> <div class="mt-3" @click="navigate">
<a <a class="btn bigBtn btn-primary" :href="href">
class="btn bigBtn btn-primary"
:href="href">
{{ {{
currentPortal === "ostandari" currentPortal === "ostandari"
? "برو به صفحه ستاد انتخابات" ? "برو به صفحه ستاد انتخابات"
@@ -77,13 +72,10 @@
params: { portal: currentPortal }, params: { portal: currentPortal },
}" }"
v-slot="{ href, navigate, isActive }" v-slot="{ href, navigate, isActive }"
custom> custom
<li >
@click="navigate" <li @click="navigate" :class="isActive ? 'active' : null">
:class="isActive ? 'active' : null"> <a class="mainLink" :href="href">صفحه اصلی</a>
<a class="mainLink" :href="href"
>صفحه اصلی</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -94,13 +86,10 @@
params: { portal: currentPortal }, params: { portal: currentPortal },
}" }"
v-slot="{ navigate, href, isActive }" v-slot="{ navigate, href, isActive }"
custom> custom
<li >
@click="navigate" <li @click="navigate" :class="isActive ? 'active' : null">
:class="isActive ? 'active' : null"> <a class="mainLink" :href="href">تماس با ما</a>
<a class="mainLink" :href="href"
>تماس با ما</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -111,13 +100,10 @@
params: { portal: currentPortal }, params: { portal: currentPortal },
}" }"
v-slot="{ navigate, href, isActive }" v-slot="{ navigate, href, isActive }"
custom> custom
<li >
@click="navigate" <li @click="navigate" :class="isActive ? 'active' : null">
:class="isActive ? 'active' : null"> <a class="mainLink" :href="href">میز خ2دمت</a>
<a class="mainLink" :href="href"
>میز خدمت</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -137,20 +123,14 @@
page: 1, page: 1,
}, },
}" }"
v-slot="{ v-slot="{ navigate, href, isActive }"
navigate, custom
href, >
isActive,
}"
custom>
<li <li
@click="navigate" @click="navigate"
:class=" :class="isActive ? 'active' : null"
isActive ? 'active' : null >
"> <a class="mainLink" :href="href">عکس</a>
<a class="mainLink" :href="href"
>عکس</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -166,20 +146,14 @@
page: 1, page: 1,
}, },
}" }"
v-slot="{ v-slot="{ navigate, href, isActive }"
navigate, custom
href, >
isActive,
}"
custom>
<li <li
@click="navigate" @click="navigate"
:class=" :class="isActive ? 'active' : null"
isActive ? 'active' : null >
"> <a class="mainLink" :href="href">فیلم</a>
<a class="mainLink" :href="href"
>فیلم</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -195,42 +169,32 @@
page: 1, page: 1,
}, },
}" }"
v-slot="{ v-slot="{ navigate, href, isActive }"
navigate, custom
href, >
isActive,
}"
custom>
<li <li
@click="navigate" @click="navigate"
:class=" :class="isActive ? 'active' : null"
isActive ? 'active' : null >
"> <a class="mainLink" :href="href">گرافیک</a>
<a class="mainLink" :href="href"
>گرافیک</a
>
</li> </li>
</nuxt-link> </nuxt-link>
<nuxt-link <nuxt-link
class="col-12 col-md-4 mb-2" class="col-12 col-md-4 mb-2"
to="/ostandari/digital-books" to="/ostandari/digital-books"
v-slot="{ v-slot="{ navigate, href, isActive }"
navigate, custom
href, >
isActive, <li
}" @click="navigate"
custom> :class="isActive ? 'active' : null"
<li
@click="navigate"
:class="
isActive ? 'active' : null
">
<a class="mainLink" :href="href"
>کتابخانه دیجیتال</a
> >
</li> <a class="mainLink" :href="href"
</nuxt-link> >کتابخانه دیجیتال</a
>
</li>
</nuxt-link>
</ul> </ul>
</div> </div>
</li> </li>
@@ -242,13 +206,10 @@
params: { portal: currentPortal }, params: { portal: currentPortal },
}" }"
v-slot="{ navigate, href, isActive }" v-slot="{ navigate, href, isActive }"
custom> custom
<li >
@click="navigate" <li @click="navigate" :class="isActive ? 'active' : null">
:class="isActive ? 'active' : null"> <a class="mainLink" :href="href">میز خدمت</a>
<a class="mainLink" :href="href"
>میز خدمت</a
>
</li> </li>
</nuxt-link> </nuxt-link>
@@ -265,12 +226,11 @@
query: categoryURLQuery(item), query: categoryURLQuery(item),
}" }"
v-slot="{ href, navigate, isActive }" v-slot="{ href, navigate, isActive }"
custom> custom
>
<a class="mainLink">{{ item.title }}</a> <a class="mainLink">{{ item.title }}</a>
<li <li @click="navigate" :class="isActive ? 'active' : null">
@click="navigate"
:class="isActive ? 'active' : null">
<div class="children"> <div class="children">
<ul> <ul>
<!-- <nuxt-link--> <!-- <nuxt-link-->
@@ -288,9 +248,9 @@
:data="item.childs" :data="item.childs"
:props="defaultProps" :props="defaultProps"
accordion accordion
ref="tree"> ref="tree"
<div >
slot-scope="{ node, data }"> <div slot-scope="{ node, data }">
<nuxt-link <nuxt-link
:to="{ :to="{
name: 'portal-category-details', name: 'portal-category-details',
@@ -298,31 +258,19 @@
portal: currentPortal, portal: currentPortal,
details: node.label, details: node.label,
}, },
query: query: categoryURLQuery(data),
categoryURLQuery(data),
}"
v-slot="{
href,
navigate,
isActive,
}" }"
v-slot="{ href, navigate, isActive }"
custom custom
:class=" :class="!data.childs.length && 'test'"
!data.childs.length && >
'test'
">
<li <li
@click="navigate" @click="navigate"
:class=" :class="isActive ? 'active' : null"
isActive >
? 'active' <a class="subLink" :href="href">{{
: null node.label
"> }}</a>
<a
class="subLink"
:href="href"
>{{ node.label }}</a
>
</li> </li>
</nuxt-link> </nuxt-link>
</div> </div>
@@ -441,8 +389,7 @@ export default {
type: item.defaultPageType, type: item.defaultPageType,
id: item._id, id: item._id,
}; };
if (item.defaultPageType === "news") if (item.defaultPageType === "news") return { ...query, page: 1 };
return { ...query, page: 1 };
if (item.defaultPageType === "gallery") if (item.defaultPageType === "gallery")
return { ...query, galleryType: "image", page: 1 }; return { ...query, galleryType: "image", page: 1 };
else return query; else return query;
+205 -91
View File
@@ -2,12 +2,20 @@
<div class="site--header"> <div class="site--header">
<div class="col-12"> <div class="col-12">
<!------------------------ countDown modal ------------------------> <!------------------------ countDown modal ------------------------>
<el-dialog v-if="counterDown" append-to-body :visible.sync="showAlert" :show-close="false" :title="'مانده تا' + ' ' + counterDown.title"> <el-dialog
v-if="counterDown"
append-to-body
:visible.sync="showAlert"
:show-close="false"
:title="'مانده تا' + ' ' + counterDown.title"
>
<div> <div>
<flip-countdown :deadline="counterDown1[0]"></flip-countdown> <flip-countdown :deadline="counterDown1[0]"></flip-countdown>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button class="btn bigBtn btn-primary" @click="showAlert = false">بستن</el-button> <el-button class="btn bigBtn btn-primary" @click="showAlert = false"
>بستن</el-button
>
</div> </div>
</el-dialog> </el-dialog>
<!------------------------ countDown modal ------------------------> <!------------------------ countDown modal ------------------------>
@@ -21,15 +29,27 @@
</span> </span>
</div> </div>
<div class="col-12 col-md-6 site-top-left"> <div class="col-12 col-md-6 site-top-left">
<el-button type="text" @click="showAlert = true" v-if="counterDown"> <el-button
<span class="timer">{{ jDate2(counterDown.expireDate) + ' مانده تا ' + counterDown.title }}</span> type="text"
@click="showAlert = true"
v-if="counterDown"
>
<span class="timer">{{
jDate2(counterDown.expireDate) +
" مانده تا " +
counterDown.title
}}</span>
</el-button> </el-button>
<div class="email-top" v-else> <div class="email-top" v-else>
<a class="email-text" :href="`mailto: ${yearBanner.email}`" target="_blank">{{ yearBanner.email }}</a> <a
class="email-text"
:href="`mailto: ${yearBanner.email}`"
target="_blank"
>{{ yearBanner.email }}</a
>
<i class="far fa-envelope"></i> <i class="far fa-envelope"></i>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@@ -37,9 +57,14 @@
</div> </div>
<div class="view-banner"> <div class="view-banner">
<img v-if="yearBanner.iranFlag" class="iran-flag" src="~/assets/img/iran.png" alt=""> <img
v-if="yearBanner.iranFlag"
class="iran-flag"
src="~/assets/img/iran.png"
alt=""
/>
<div class="banner"> <div class="banner">
<img :src="yearBanner.mainCover" alt=""> <img :src="yearBanner.mainCover" alt="" />
</div> </div>
<div class="relativePos"> <div class="relativePos">
<div class="container navigations"> <div class="container navigations">
@@ -47,18 +72,36 @@
<div class="col-12 col-lg-10 menu-desk"> <div class="col-12 col-lg-10 menu-desk">
<nav> <nav>
<ul> <ul>
<nuxt-link :to="{name: 'portal',params: {portal: currentPortal}}" v-slot="{navigate,href,isActive}" custom exact> <nuxt-link
:to="{ name: 'portal', params: { portal: currentPortal } }"
v-slot="{ navigate, href, isActive }"
custom
exact
>
<li @click="navigate" :class="isActive ? 'active' : null"> <li @click="navigate" :class="isActive ? 'active' : null">
<a :href="href">صفحه اصلی</a> <a :href="href">صفحه اصلی</a>
</li> </li>
</nuxt-link> </nuxt-link>
<nuxt-link
to="/ostandari/shafaf"
v-slot="{ navigate, href, isActive }"
custom
>
<li @click="navigate" :class="isActive ? 'active' : null">
<a :href="href">شفافیت</a>
</li>
</nuxt-link>
<!-- ***************** dynamic routes ***************** --> <!-- ***************** dynamic routes ***************** -->
<nuxt-link <nuxt-link
v-for="item in header.categories" v-for="item in header.categories"
:key="item._id" :key="item._id"
:to="{name: 'portal-category-details',params: {portal: currentPortal,details: item.title},query: categoryURLQuery(item)}" :to="{
v-slot="{navigate,href,isActive}" name: 'portal-category-details',
custom params: { portal: currentPortal, details: item.title },
query: categoryURLQuery(item),
}"
v-slot="{ navigate, href, isActive }"
custom
> >
<li :class="isActive ? 'active' : null"> <li :class="isActive ? 'active' : null">
<a class="pointer">{{ item.title }}</a> <a class="pointer">{{ item.title }}</a>
@@ -73,12 +116,20 @@
<!-- </li>--> <!-- </li>-->
<!-- </ul>--> <!-- </ul>-->
<!-- recursive tree --> <!-- recursive tree -->
<TreeItem :array="item.childs"/> <TreeItem :array="item.childs" />
</div> </div>
</li> </li>
</nuxt-link> </nuxt-link>
<!-- ***************** dynamic routes ***************** --> <!-- ***************** dynamic routes ***************** -->
<nuxt-link :to="{name: 'portal-services' ,params: {portal: currentPortal}}" v-slot="{navigate,href,isActive}" custom> <nuxt-link
:to="{
name: 'portal-services',
params: { portal: currentPortal },
}"
v-slot="{ navigate, href, isActive }"
custom
>
<li @click="navigate" :class="isActive ? 'active' : null"> <li @click="navigate" :class="isActive ? 'active' : null">
<a :href="href">میز خدمت</a> <a :href="href">میز خدمت</a>
</li> </li>
@@ -89,21 +140,23 @@
<ul class="tree"> <ul class="tree">
<li class="treeItem"> <li class="treeItem">
<nuxt-link <nuxt-link
:to="{ :to="{
name: 'portal-gallery', name: 'portal-gallery',
params: {portal: currentPortal}, params: { portal: currentPortal },
query: {type:'image', page: 1} query: { type: 'image', page: 1 },
}"> }"
>
عکس عکس
</nuxt-link> </nuxt-link>
</li> </li>
<li class="treeItem"> <li class="treeItem">
<nuxt-link <nuxt-link
:to="{ :to="{
name: 'portal-videos', name: 'portal-videos',
params: {portal: currentPortal}, params: { portal: currentPortal },
query: {type:'video', page: 1} query: { type: 'video', page: 1 },
}"> }"
>
فیلم فیلم
</nuxt-link> </nuxt-link>
<!-- <nuxt-link--> <!-- <nuxt-link-->
@@ -117,18 +170,17 @@
</li> </li>
<li class="treeItem"> <li class="treeItem">
<nuxt-link <nuxt-link
:to="{ :to="{
name: 'portal-graphics', name: 'portal-graphics',
params: {portal: currentPortal}, params: { portal: currentPortal },
query: {type:'graphic', page: 1} query: { type: 'graphic', page: 1 },
}"> }"
>
گرافیک گرافیک
</nuxt-link> </nuxt-link>
</li> </li>
<li class="treeItem"> <li class="treeItem">
<nuxt-link <nuxt-link to="/ostandari/digital-books">
to="/ostandari/digital-books"
>
کتابخانه دیجیتال کتابخانه دیجیتال
</nuxt-link> </nuxt-link>
</li> </li>
@@ -136,35 +188,70 @@
</div> </div>
</li> </li>
<nuxt-link <nuxt-link
v-if="yearBanner.electionBtn" v-if="yearBanner.electionBtn"
:to="{name: 'portal',params: {portal: currentPortal === 'ostandari' ? 'election' : 'ostandari'}}" :to="{
v-slot="{navigate,href}" name: 'portal',
custom params: {
portal:
currentPortal === 'ostandari'
? 'election'
: 'ostandari',
},
}"
v-slot="{ navigate, href }"
custom
> >
<li @click="navigate"> <li @click="navigate">
<a :href="href">{{ currentPortal === 'ostandari' ? 'ستاد انتخابات' : 'استانداری' }}</a> <a :href="href">{{
currentPortal === "ostandari"
? "ستاد انتخابات"
: "استانداری"
}}</a>
</li> </li>
</nuxt-link> </nuxt-link>
<nuxt-link :to="{name: 'portal-info-page', params:{portal: currentPortal,page: 'aboutState'}}" v-slot="{navigate,href,isActive}" custom <nuxt-link
v-if="header.staticContents"> :to="{
name: 'portal-info-page',
params: { portal: currentPortal, page: 'aboutState' },
}"
v-slot="{ navigate, href, isActive }"
custom
v-if="header.staticContents"
>
<li :class="isActive ? 'active' : null"> <li :class="isActive ? 'active' : null">
<a class="pointer">درباره استان</a> <a class="pointer">درباره استان</a>
<div class="mega-menu"> <div class="mega-menu">
<!-- item route --> <!-- item route -->
<ul class="tree"> <ul class="tree">
<nuxt-link :to="{name: 'portal-info-page', params:{portal: currentPortal,page: 'sima'}}" v-slot="{navigate,href,isActive}" custom> <nuxt-link
<li @click="navigate" :class="isActive ? 'active' : null" class="treeItem"> :to="{
<a :href="href"> name: 'portal-info-page',
سیمای استان params: { portal: currentPortal, page: 'sima' },
</a> }"
v-slot="{ navigate, href, isActive }"
custom
>
<li
@click="navigate"
:class="isActive ? 'active' : null"
class="treeItem"
>
<a :href="href"> سیمای استان </a>
</li> </li>
</nuxt-link> </nuxt-link>
</ul> </ul>
</div> </div>
</li> </li>
</nuxt-link> </nuxt-link>
<nuxt-link :to="{name: 'portal-contact' ,params: {portal: currentPortal}}" v-slot="{navigate,href,isActive}" custom> <nuxt-link
:to="{
name: 'portal-contact',
params: { portal: currentPortal },
}"
v-slot="{ navigate, href, isActive }"
custom
>
<li @click="navigate" :class="isActive ? 'active' : null"> <li @click="navigate" :class="isActive ? 'active' : null">
<a :href="href">تماس با ما</a> <a :href="href">تماس با ما</a>
</li> </li>
@@ -175,7 +262,11 @@
<div class="col-12 col-lg-2 left"> <div class="col-12 col-lg-2 left">
<ul> <ul>
<li class="searchBtns"> <li class="searchBtns">
<i class="fal fa-search" v-if="!searching" @click="search(true)"></i> <i
class="fal fa-search"
v-if="!searching"
@click="search(true)"
></i>
<i class="fal fa-times" v-else @click="search(false)"></i> <i class="fal fa-times" v-else @click="search(false)"></i>
</li> </li>
<li class="menu" @click="showOffCanvas"> <li class="menu" @click="showOffCanvas">
@@ -185,12 +276,18 @@
</div> </div>
</div> </div>
</div> </div>
<div class="searchBox" :class="searching? 'active-search' : null"> <div class="searchBox" :class="searching ? 'active-search' : null">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<form @submit.prevent="doSearch" class="searchInput"> <form @submit.prevent="doSearch" class="searchInput">
<input type="text" name="search" id="searchInput" placeholder="عبارت مدنظر خود را جستجو کنید" v-model="searchableText"> <input
type="text"
name="search"
id="searchInput"
placeholder="عبارت مدنظر خود را جستجو کنید"
v-model="searchableText"
/>
<button type="submit"> <button type="submit">
<i class="fas fa-arrow-circle-left"></i> <i class="fas fa-arrow-circle-left"></i>
</button> </button>
@@ -205,93 +302,110 @@
</template> </template>
<script> <script>
import moment from 'moment-jalaali' import moment from "moment-jalaali";
import FlipCountdown from '~/components/vue2-flip-countdown.js' import FlipCountdown from "~/components/vue2-flip-countdown.js";
export default { export default {
name: "SiteHeader", name: "SiteHeader",
data() { data() {
return { return {
searching: false, searching: false,
searchableText: '', searchableText: "",
date: Date.now(), date: Date.now(),
dialogTimeVisible: false, dialogTimeVisible: false,
showAlert: false showAlert: false,
} };
}, },
mounted() { mounted() {
setInterval(() => this.date = Date.now(), 1000) setInterval(() => (this.date = Date.now()), 1000);
$(window).scroll(() => { $(window).scroll(() => {
if ($(window).scrollTop() > 300) $('.app-front').addClass('miniHeader') if ($(window).scrollTop() > 300) $(".app-front").addClass("miniHeader");
if ($(window).scrollTop() < 290) $('.app-front').removeClass('miniHeader') if ($(window).scrollTop() < 290)
}) $(".app-front").removeClass("miniHeader");
});
if (this.$route.name !== 'portal') { if (this.$route.name !== "portal") {
(async () => { (async () => {
try { try {
const homeData = await this.$axios.get(`/api/public/home?portal=${this.$route.params.portal}`, {progress: false}) const homeData = await this.$axios.get(
this.$store.commit('front/setHomePageData', homeData.data) `/api/public/home?portal=${this.$route.params.portal}`,
{ progress: false }
);
this.$store.commit("front/setHomePageData", homeData.data);
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
})() })();
} }
}, },
components: {FlipCountdown}, components: { FlipCountdown },
computed: { computed: {
yearBanner() { yearBanner() {
return this.$store.state.front.yearBanner return this.$store.state.front.yearBanner;
}, },
currentPortal() { currentPortal() {
return this.$route.params.portal return this.$route.params.portal;
}, },
header() { header() {
return this.$store.state.front.headerData return this.$store.state.front.headerData;
}, },
jDate() { jDate() {
return moment(this.date).locale('fa').format('dddd - LL - h:mm:ss ') return moment(this.date).locale("fa").format("dddd - LL - h:mm:ss ");
}, },
counterDown() { counterDown() {
return this.$store.state.front.counterDown return this.$store.state.front.counterDown;
}, },
counterDown1() { counterDown1() {
return this.$store.state.front.counterDown.expireDate.split('T') return this.$store.state.front.counterDown.expireDate.split("T");
}, },
homePageData() { homePageData() {
return this.$store.state.front.homePageData return this.$store.state.front.homePageData;
}, },
}, },
methods: { methods: {
categoryURLQuery(item) { categoryURLQuery(item) {
const query = {type: item.defaultPageType, id: item._id} const query = { type: item.defaultPageType, id: item._id };
if (item.defaultPageType === 'news') return {...query, page: 1} if (item.defaultPageType === "news") return { ...query, page: 1 };
if (item.defaultPageType === 'gallery-image') return {...query, page: 1, type: 'gallery', galleryType: 'image'} if (item.defaultPageType === "gallery-image")
if (item.defaultPageType === 'gallery-video') return {...query, page: 1, type: 'gallery', galleryType: 'video'} return { ...query, page: 1, type: "gallery", galleryType: "image" };
if (item.defaultPageType === 'gallery-graphic') return {...query, page: 1, type: 'gallery', galleryType: 'graphic'} if (item.defaultPageType === "gallery-video")
else return query return { ...query, page: 1, type: "gallery", galleryType: "video" };
if (item.defaultPageType === "gallery-graphic")
return { ...query, page: 1, type: "gallery", galleryType: "graphic" };
else return query;
}, },
showOffCanvas() { showOffCanvas() {
this.$store.commit('front/setOffCanvas', true) this.$store.commit("front/setOffCanvas", true);
}, },
search(status) { search(status) {
this.searching = status this.searching = status;
if (status) setTimeout(() => $('#searchInput').focus(), 100) if (status) setTimeout(() => $("#searchInput").focus(), 100);
else this.searchableText = '' else this.searchableText = "";
}, },
doSearch() { doSearch() {
if (this.searchableText.length) { if (this.searchableText.length) {
this.$router.push({name: 'portal-search', params: {portal: this.currentPortal}, query: {sq: this.searchableText}}) this.$router.push({
setTimeout(() => this.search(false), 100) name: "portal-search",
params: { portal: this.currentPortal },
query: { sq: this.searchableText },
});
setTimeout(() => this.search(false), 100);
} else { } else {
this.$message({ this.$message({
type: 'warning', type: "warning",
message: 'ابتدا عبارت مورد نظر را بنویسید' message: "ابتدا عبارت مورد نظر را بنویسید",
}) });
} }
}, },
jDate2(e) { jDate2(e) {
return moment(e).locale('fa').fromNow(true) return moment(e).locale("fa").fromNow(true);
} },
} },
} };
</script> </script>
<style scoped>
li:nth-child(6) {
display: none !important;
}
</style>
+120
View File
@@ -0,0 +1,120 @@
<template>
<div class="services-page">
<div class="container">
<div class="row">
<div class="col-12">
<LineTxt label="شفافیت" />
</div>
<div class="body">
<div class="main">
<div>
<img
class="tasvir"
src="../../../static/images/shafaf.jpg"
alt="logo"
/>
</div>
<div>
شفافیت سریع ترین، کم هزینه ترین، ساده ترین، مبنایی ترین و قابل
اعتمادترین سازوکار برای مبارزه با فساد)هم در پیشگیری و هم کشف
جرم(، افزایش مسئولیت پذیری و پاسخگویی، ارتقاء شایسته ساالری،
مشارکت فعال و مؤثر مردمی، کاهش هزینه و زمان در پیشگیری و مبارزه با
فساد، و در نتیجه افزایش کارآمدی و سرمایه اجتماعی است؛ با ایجاد
شفافیت می توان عدالت را مستقر کرد و از ایجاد تبعیض های ناروا در
نظام جلوگیری کرد.به همین جهت، سازمان فناوری اطالعات با همکاری
سازمان غیردولتی شفافیت برای ایران اقدام به تاسیس کمیته شفافیت
نموده است .پورتال شفافیت، اولین اقدام این استانداری در راستای
توسعه شفافیت است. این پورتال به صورت مستمر از نظر محتوا و بستر به
روز خواهد شد .
</div>
</div>
</div>
<div class="cards">
<div class="item">1</div>
<div class="item">1</div>
<div class="item">1</div>
<div class="item">1</div>
<div class="item">1</div>
<div class="item">1</div>
</div>
<div class="space"></div>
<!-- <div class="col-12 col-md-6 services-view">
<nuxt-link
:to="{
name: 'portal-services-election',
params: { portal: currentPortal },
}"
class="services-item"
>
<i class="far fa-check-square"></i>
<span>شرکت در انتخابات استانداری مرکزی</span>
</nuxt-link>
</div>
<div class="col-12 col-md-6 services-view">
<nuxt-link
:to="{
name: 'portal-services-meeting',
params: { portal: currentPortal },
}"
class="services-item"
>
<i class="far fa-check-square"></i>
<span>ارتباط با استاندار</span>
</nuxt-link>
</div> -->
</div>
</div>
</div>
</template>
<script>
export default {
computed: {
currentPortal() {
return this.$route.params.portal;
},
},
};
</script>
<style scoped>
.body {
display: flex;
justify-content: center;
}
.main {
width: 60%;
border: 1px solid rgb(224, 222, 222);
height: 280px;
color: rgb(94, 94, 94);
display: flex;
justify-content: space-between;
border-radius: 10px;
line-height: 25px;
padding: 10px;
align-items: center;
gap: 10px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
.tasvir {
width: 230px;
height: 120px;
border-radius: 10px;
}
.cards {
margin: 50px 0px;
display: grid;
grid-template: 130px / auto auto auto auto auto auto;
gap: 10px;
}
.item {
background-color: aquamarine;
height: 200px;
border-radius: 10px;
}
.space {
height: 50px;
}
</style>
+1
View File
@@ -28,6 +28,7 @@ module.exports.sms = async (phoneNumber, message) => {
SendDateTime: "", SendDateTime: "",
CanContinueInCaseOfError: "false", CanContinueInCaseOfError: "false",
}; };
const response = await axios.post( const response = await axios.post(
`http://RestfulSms.com/api/MessageSend`, `http://RestfulSms.com/api/MessageSend`,
data, data,
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB