Files
2024-10-02 18:51:15 +03:30

109 lines
2.7 KiB
Vue

<template>
<client-only>
<div class="c-app">
<TheSidebar />
<CWrapper>
<TheHeader />
<div class="c-body">
<main class="c-main">
<CContainer fluid class="pt-5">
<transition name="fade" mode="out-in">
<nuxt :key="$route.path" />
</transition>
</CContainer>
</main>
</div>
<TheFooter />
</CWrapper>
</div>
</client-only>
</template>
<script>
import WS_Admin from '@/mixins/WS_Admin'
export default {
name: 'AdminLayout',
mixins: [WS_Admin],
middleware: ['auth-admin', 'permissions'],
data() {
return {
subHeaderContent: null
}
},
head() {
return {
htmlAttrs: {
lang: 'fa',
dir: 'rtl'
},
title: 'آسان سرویس | مدیریت سایت'
}
},
async mounted() {
try {
await this.$axios.get('/api/admin/permissions')
} catch (error) {
this.$router.push('/auth/login-register')
}
/// /////////////////////////////////////////////////// get products list | provinces | cities
try {
// verity request info
const verityData = {
url: `/api/GetItem?UserGroupID=${this.$config.VerityUserGroupId}`,
db: 'verity'
}
// panatech request info
const panatechData = {
url: `/api/GetItem?UserGroupID=${this.$config.PanatechUserGroupId}`,
db: 'panatech'
}
const allData = await Promise.all([
// fetch verity products
this.$axios.post('/api/cross/getRouteManager', verityData),
// fetch panatech products
this.$axios.post('/api/cross/getRouteManager', panatechData),
// fetch iranProvinces
this.$axios.post('/api/cross/getRouteManager', { url: '/api/GetProvince', db: 'verity' }),
// fetch iranCities
this.$axios.post('/api/cross/getRouteManager', { url: '/api/GetCity', db: 'verity' })
])
const verityProducts = allData[0]
const panatechProducts = allData[1]
const iranProvinces = allData[2]
const iranCities = allData[3]
this.$store.commit('admin/set', ['verityProducts', verityProducts.data.data])
this.$store.commit('admin/set', ['panatechProducts', panatechProducts.data.data])
this.$store.commit('admin/set', ['iranProvinces', iranProvinces.data.data])
this.$store.commit('admin/set', ['iranCities', iranCities.data.data])
} catch (e) {
this.$arpaError()
}
}
}
</script>
<style lang="scss">
@import '~/sass/admin/style.scss';
</style>
<style scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.3s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
</style>