Skip to content

Commit 20409a3

Browse files
authored
chore: kitchens on agreement card (#68)
* chore: kitchens on agreement card * chore: update * chore: date on agreement
1 parent 54d0158 commit 20409a3

8 files changed

Lines changed: 65 additions & 36 deletions

File tree

apps/web-app/app/components/AgreementFilesBlock.vue

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@
2424

2525
<template #content>
2626
<div class="h-auto w-56 p-4 flex flex-col gap-2">
27-
<UIcon
28-
:name="getFileData(file).icon"
29-
class="size-10 text-muted/50"
30-
/>
27+
<UIcon :name="getFileData(file).icon" class="size-10" />
3128

3229
<div class="flex flex-col gap-2.5">
3330
<h4 class="text-base/5">

apps/web-app/app/components/PartnerAgreementCard.vue

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,28 @@
6363
{{ agreement.comment }}
6464
</p>
6565

66+
<div v-if="agreement.kitchens.length" class="grid grid-cols-1 md:grid-cols-2 gap-2.5">
67+
<NuxtLink
68+
v-for="kitchen in agreement.kitchens"
69+
:key="kitchen.id"
70+
:to="`/kitchen/${kitchen.id}`"
71+
>
72+
<ActiveCard class="min-h-auto !p-4 !ring-accented bg-transparent">
73+
<div class="shrink-0 w-full h-full flex flex-col gap-1.5 items-center justify-center text-center">
74+
<UIcon name="i-lucide-store" class="size-8 text-primary" />
75+
76+
<h3 class="text-base/4 font-semibold">
77+
{{ kitchen.address }}
78+
</h3>
79+
80+
<h3 class="text-sm/5">
81+
{{ kitchen.city }}
82+
</h3>
83+
</div>
84+
</ActiveCard>
85+
</NuxtLink>
86+
</div>
87+
6688
<div v-if="agreement.files.length" class="flex flex-col gap-1.5">
6789
<UButton
6890
v-for="file in agreement.files"
@@ -71,7 +93,7 @@
7193
external
7294
target="_blank"
7395
size="lg"
74-
variant="subtle"
96+
variant="outline"
7597
color="neutral"
7698
icon="i-lucide-file-symlink"
7799
:label="file.name"
@@ -82,12 +104,11 @@
82104
</template>
83105

84106
<script setup lang="ts">
85-
import type { PartnerAgreement, PartnerAgreementFile } from '@roll-stack/database'
86107
import { ModalUpdatePartnerAgreement } from '#components'
87108
import { format } from 'date-fns'
88109
import { ru } from 'date-fns/locale/ru'
89110
90-
const { agreement } = defineProps<{ agreement: PartnerAgreement & { files: PartnerAgreementFile[] } }>()
111+
const { agreement } = defineProps<{ agreement: PartnerAgreementWithAllData }>()
91112
92113
const overlay = useOverlay()
93114
const modalUpdatePartnerAgreement = overlay.create(ModalUpdatePartnerAgreement)

apps/web-app/app/pages/agreement/index.vue

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,21 @@
6666
{{ row.getValue('id') }}
6767
</template>
6868
<template #internalId-cell="{ row }">
69-
<div class="flex flex-row gap-2 items-center">
70-
<p class="text-base font-medium text-highlighted">
71-
{{ row.getValue('internalId') }}
69+
<div class="flex flex-col gap-0.5">
70+
<div class="flex flex-row gap-2 items-center">
71+
<p class="text-base font-medium text-highlighted">
72+
{{ row.getValue('internalId') }}
73+
</p>
74+
<UIcon
75+
v-if="row.getValue('isActive')"
76+
name="i-lucide-check"
77+
class="size-4 text-secondary"
78+
/>
79+
</div>
80+
81+
<p v-if="row.original.concludedAt" class="text-xs">
82+
от {{ format(new Date(row.original.concludedAt), 'd MMMM yyyy', { locale: ru }) }}
7283
</p>
73-
<UIcon
74-
v-if="row.getValue('isActive')"
75-
name="i-lucide-check"
76-
class="size-4 text-secondary"
77-
/>
7884
</div>
7985
</template>
8086
<template #kitchens-cell="{ row }">
@@ -98,10 +104,19 @@
98104
<AgreementFilesBlock :files="row.original.files" />
99105
</template>
100106
<template #royalty-cell="{ row }">
101-
{{ row.getValue('royalty') }}% / от {{ formatNumber(row.getValue('minRoyaltyPerMonth')) }}
107+
<div class="text-center">
108+
<div>{{ row.getValue('royalty') }}%</div>
109+
от {{ formatNumber(row.getValue('minRoyaltyPerMonth')) }}
110+
</div>
102111
</template>
103112
<template #marketingFee-cell="{ row }">
104-
{{ row.getValue('marketingFee') }}% / от {{ formatNumber(row.getValue('minMarketingFeePerMonth')) }}
113+
<div v-if="row.getValue('marketingFee')" class="text-center">
114+
<div>{{ row.getValue('marketingFee') }}%</div>
115+
от {{ formatNumber(row.getValue('minMarketingFeePerMonth')) }}
116+
</div>
117+
<div v-else class="text-center">
118+
-
119+
</div>
105120
</template>
106121
<template #comment-cell="{ row }">
107122
<div class="text-sm/4 whitespace-pre-wrap max-w-56">
@@ -151,6 +166,8 @@ import type { DropdownMenuItem, TableColumn } from '@nuxt/ui'
151166
import type { PartnerAgreement } from '@roll-stack/database'
152167
import type { PartnerAgreementWithAllData } from '~/stores/partner'
153168
import { getPaginationRowModel } from '@tanstack/table-core'
169+
import { format } from 'date-fns'
170+
import { ru } from 'date-fns/locale/ru'
154171
import { upperFirst } from 'scule'
155172
156173
const UButton = resolveComponent('UButton')
@@ -207,7 +224,7 @@ const columns: Ref<TableColumn<PartnerAgreementWithAllData>[]> = ref([{
207224
header: 'Кухни',
208225
}, {
209226
accessorKey: 'files',
210-
header: 'Файлы / сканы',
227+
header: 'Файлы',
211228
}, {
212229
accessorKey: 'legalEntity',
213230
header: 'Юр. лицо',

apps/web-app/app/pages/kitchen/[id].vue

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,6 @@
66
highlight
77
class="flex-1 -ml-2.5"
88
/>
9-
10-
<UButton
11-
size="lg"
12-
variant="solid"
13-
color="secondary"
14-
class="w-full md:w-fit"
15-
icon="i-lucide-square-pen"
16-
:label="t('common.edit')"
17-
@click="() => {}"
18-
/>
199
</template>
2010
</Header>
2111

apps/web-app/app/pages/kitchen/[id]/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<Content>
3-
<div class="grid grid-cols-1 gap-4 md:gap-6 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5">
4-
<UCard class="col-span-2">
3+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 2xl:grid-cols-6 gap-4 md:gap-6">
4+
<UCard>
55
<div class="shrink-0 w-full flex flex-col gap-2">
66
<UIcon name="i-lucide-store" class="size-14 text-primary" />
77

apps/web-app/app/pages/partner/[id]/agreement.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Content>
33
<div class="grid grid-cols-1 gap-4 md:gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
44
<div
5-
v-for="agreement in partner?.legalEntity?.agreements"
5+
v-for="agreement in agreements"
66
:key="agreement.id"
77
class="lg:col-span-2"
88
>
@@ -29,6 +29,8 @@ const { params } = useRoute('partner-id')
2929
const partnerStore = usePartnerStore()
3030
const partner = computed(() => partnerStore.partners.find((partner) => partner.id === params.id))
3131
32+
const agreements = computed(() => partnerStore.agreements.filter((agreement) => agreement.legalEntityId === partner.value?.legalEntityId))
33+
3234
const overlay = useOverlay()
3335
const modalCreatePartnerAgreement = overlay.create(ModalCreatePartnerAgreement)
3436

apps/web-app/app/pages/partner/[id]/index.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<Content>
3-
<div class="grid grid-cols-1 gap-4 md:gap-6 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-5 2xl:grid-cols-6">
3+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 2xl:grid-cols-6 gap-4 md:gap-6">
44
<UCard>
55
<div class="shrink-0 w-full flex flex-col gap-2">
66
<UIcon name="i-lucide-handshake" class="size-14 text-primary" />
@@ -67,7 +67,11 @@ const partner = computed(() => partnerStore.partners.find((partner) => partner.i
6767
6868
const partnerUser = computed(() => partner.value?.users.find((user) => user.type === 'partner'))
6969
70-
const activeAgreements = computed(() => partner.value?.legalEntity?.agreements.filter((agreement) => agreement.isActive))
70+
const activeAgreements = computed(() =>
71+
partnerStore.agreements
72+
.filter((agreement) => agreement.isActive === true)
73+
.filter((agreement) => agreement.legalEntityId === partner.value?.legalEntityId),
74+
)
7175
7276
const overlay = useOverlay()
7377
const modalUpdateUser = overlay.create(ModalUpdateUser)

apps/web-app/app/pages/partner/[id]/kitchens.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
:key="kitchen.id"
77
:to="`/kitchen/${kitchen.id}`"
88
>
9-
<KitchenCard :kitchen="kitchen">
10-
{{ kitchen }}
11-
</KitchenCard>
9+
<KitchenCard :kitchen="kitchen" />
1210
</NuxtLink>
1311
</div>
1412
</Content>

0 commit comments

Comments
 (0)