dev #90

Merged
ksenia_mikhailova merged 20 commits from dev into main 2025-03-20 14:15:19 +03:00
5 changed files with 35 additions and 12 deletions
Showing only changes of commit 799eab7dee - Show all commits

View File

@ -6,6 +6,5 @@ import '@/assets/main.scss'
<Header /> <Header />
<NuxtPage /> <NuxtPage />
<Footer /> <Footer />
<Modal />
</div> </div>
</template> </template>

View File

@ -7,7 +7,7 @@ import { getName as getTopperName } from './topper';
const config = useRuntimeConfig() const config = useRuntimeConfig()
const apiBase = config.public.apiBase const apiBase = config.public.apiBase
const { data: calculatorData } = await apiFetch<ApiCalcType>(`calculator/5/`) const props = defineProps(['calcData'])
const isModalOpen = useState('modal_open', () => false) const isModalOpen = useState('modal_open', () => false)
const lamelle_height = useState<number>('lamelle_height') const lamelle_height = useState<number>('lamelle_height')
@ -122,12 +122,14 @@ const total_colors = computed(() => {
`Столбы ${pillar_color.value} ${getColorNameFromRal(pillar_color.value)}`, `Столбы ${pillar_color.value} ${getColorNameFromRal(pillar_color.value)}`,
] ]
}) })
const total_txt = computed(() => { const total_txt = computed(() => {
if (!calculatorData.value) return const calculatorData = props.calcData as ApiCalcType
const pillar = parseFloat(calculatorData.value.pillar) if (!calculatorData) return
const pillar_base = parseFloat(calculatorData.value.pillar_base) const pillar = parseFloat(calculatorData.pillar)
const lamelles_block = parseFloat(calculatorData.value.lamelles_block) const pillar_base = parseFloat(calculatorData.pillar_base)
const { discount } = calculatorData.value const lamelles_block = parseFloat(calculatorData.lamelles_block)
const { discount } = calculatorData
const sections = section_count.value as number const sections = section_count.value as number
const extra_m = extra_section.value as number * 0.001 const extra_m = extra_section.value as number * 0.001

View File

@ -32,7 +32,7 @@ onMounted(async () => {
const newEnvMap = exrCubeRenderTarget ? exrCubeRenderTarget.texture : null; const newEnvMap = exrCubeRenderTarget ? exrCubeRenderTarget.texture : null;
scene.value.environment = newEnvMap scene.value.environment = newEnvMap
scene.value.environmentIntensity = 1 scene.value.environmentIntensity = 0.7
scene.value.environmentRotation.z = 0.25 scene.value.environmentRotation.z = 0.25
result.renderTarget.texture.dispose(); result.renderTarget.texture.dispose();
}) })

View File

@ -25,7 +25,7 @@ export default defineNuxtConfig({
], ],
runtimeConfig: { runtimeConfig: {
public: { public: {
apiBase: 'https://mns.kustarshina.ru/kp', apiBase: process.env.mode == 'DEVELOPMENT' ? "http://localhost:8000" : "https://mns.kustarshina.ru/kp",
imgBase: 'https://mns.kustarshina.ru', imgBase: 'https://mns.kustarshina.ru',
baseUrl: '', baseUrl: '',
yandexMetrika: { yandexMetrika: {

View File

@ -21,7 +21,10 @@ const { data: menuData } = await apiFetch<ApiMenuType>(`menu/1/?ordering=order`)
const pagesData = menuData.value ? menuData.value.pages : [] const pagesData = menuData.value ? menuData.value.pages : []
const { data: reviewsData } = await apiFetch<ApiReviewsType[]>(`review/`) const { data: reviewsData } = await apiFetch<ApiReviewsType[]>(`review/`)
const { data: calculatorData } = await apiFetch(`calculator/5/`)
const { data: calculators } = await apiFetch<ApiCalcType[]>('calculator')
const openTab = ref<number>()
if (calculators.value?.length) openTab.value = calculators.value[0].id
const about = pagesData.find(el => el.slug == 'about') const about = pagesData.find(el => el.slug == 'about')
const reviews = pagesData.find(el => el.slug == 'clients') const reviews = pagesData.find(el => el.slug == 'clients')
@ -37,13 +40,17 @@ const aboutText = computed(() => marked.parse(about?.content || ''))
const deliveryText = computed(() => delivery?.content.split('[col]').map(el => marked.parse(el || ''))) const deliveryText = computed(() => delivery?.content.split('[col]').map(el => marked.parse(el || '')))
const advantagesText = computed(() => { const advantagesText = computed(() => {
let c = advantages?.content || '' let c = advantages?.content || ''
Object.entries(calculatorData.value || {}).map(item => { Object.entries(calculators.value?.find(el => el.id == openTab.value) || {}).map(item => {
c = c.replaceAll(`[${item[0]}]`, roubleSign.format(item[1])) c = c.replaceAll(`[${item[0]}]`, roubleSign.format(item[1] as number))
}) })
return marked.parse(c) return marked.parse(c)
}) })
const { data: advData } = await apiFetch<ApiAdvantageType[]>(`advantage/`) const { data: advData } = await apiFetch<ApiAdvantageType[]>(`advantage/`)
const setCalcData = (id: number) => {
openTab.value = id
}
</script> </script>
<template> <template>
<div> <div>
@ -91,6 +98,21 @@ const { data: advData } = await apiFetch<ApiAdvantageType[]>(`advantage/`)
</template> </template>
</div> </div>
</div> </div>
<div class="siteblock bg-white" id="calculator" v-if="calculators">
<div class="container">
<div class="flex col-span-full gap-2 justify-center">
<template v-for="item in calculators">
<div class="rounded p-2 cursor-pointer hover:bg-ioprim-300 border border-ioprim-300" :class="[{
'bg-ioprim-200': openTab !== item.id,
'bg-ioprim-400': openTab == item.id,
}]" @click="setCalcData(item.id)">
{{ item.title }}
</div>
</template>
</div>
</div>
</div>
<Modal :calcData="calculators.find(el => el.id == openTab)" />
<div class="siteblock bg-white" :id="advantages?.slug"> <div class="siteblock bg-white" :id="advantages?.slug">
<div class="container gap-4"> <div class="container gap-4">
<div class="col-span-full xl:col-span-8"> <div class="col-span-full xl:col-span-8">