2024-06-10 16:42:59 +07:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { dateFormat } from 'src/utils/datetime';
|
2024-06-11 15:05:16 +07:00
|
|
|
import { Status } from 'src/stores/types';
|
2024-06-10 16:42:59 +07:00
|
|
|
|
|
|
|
|
withDefaults(
|
|
|
|
|
defineProps<{
|
|
|
|
|
title?: string;
|
|
|
|
|
subtitle?: string;
|
|
|
|
|
color?: string;
|
2024-06-11 15:05:16 +07:00
|
|
|
status?: Status;
|
2024-06-10 16:42:59 +07:00
|
|
|
date?: Date;
|
2024-06-14 16:36:28 +07:00
|
|
|
isType?: boolean;
|
2024-06-10 16:42:59 +07:00
|
|
|
}>(),
|
|
|
|
|
{
|
2024-06-10 17:42:37 +07:00
|
|
|
color: 'var(--brand-1)',
|
2024-06-10 16:42:59 +07:00
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
2024-06-11 12:00:53 +07:00
|
|
|
<div
|
2024-06-14 16:36:28 +07:00
|
|
|
class="full-width rounded hover-card bordered q-pa-sm"
|
2024-06-11 12:00:53 +07:00
|
|
|
@click="$emit('onClick')"
|
|
|
|
|
>
|
2024-06-14 16:36:28 +07:00
|
|
|
<div
|
|
|
|
|
class="relative-position rounded q-pb-lg"
|
|
|
|
|
:style="`background-color:hsla(${color}/0.1)`"
|
|
|
|
|
>
|
|
|
|
|
<div class="row justify-between items-center">
|
2024-06-17 04:15:56 +00:00
|
|
|
<q-avatar
|
2024-06-14 16:36:28 +07:00
|
|
|
round
|
|
|
|
|
icon="mdi-folder"
|
2024-06-17 04:15:56 +00:00
|
|
|
size="48px"
|
2024-06-14 16:36:28 +07:00
|
|
|
class="q-my-md q-ml-md"
|
2024-06-17 04:15:56 +00:00
|
|
|
:style="`color:hsl(${color});background-color:var(--surface-1)`"
|
2024-06-14 16:36:28 +07:00
|
|
|
/>
|
2024-06-17 04:15:56 +00:00
|
|
|
|
2024-06-14 16:36:28 +07:00
|
|
|
<q-btn
|
|
|
|
|
flat
|
|
|
|
|
round
|
|
|
|
|
padding="sm"
|
|
|
|
|
class="absolute-top-right dots-btn"
|
|
|
|
|
icon="mdi-dots-vertical"
|
|
|
|
|
style="z-index: 99"
|
|
|
|
|
size="sm"
|
|
|
|
|
@click.stop=""
|
|
|
|
|
>
|
|
|
|
|
<q-menu class="bordered">
|
|
|
|
|
<q-list v-close-popup>
|
|
|
|
|
<q-item
|
|
|
|
|
clickable
|
|
|
|
|
dense
|
|
|
|
|
class="row q-py-sm"
|
|
|
|
|
style="white-space: nowrap"
|
|
|
|
|
@click="$emit('viewCard')"
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="mdi-eye-outline"
|
|
|
|
|
class="col-3"
|
|
|
|
|
size="xs"
|
|
|
|
|
style="color: hsl(var(--green-6-hsl))"
|
|
|
|
|
/>
|
|
|
|
|
<span class="col-9 q-px-md flex items-center">
|
|
|
|
|
{{ $t('viewDetail') }}
|
|
|
|
|
</span>
|
|
|
|
|
</q-item>
|
|
|
|
|
<q-item
|
|
|
|
|
dense
|
|
|
|
|
clickable
|
|
|
|
|
class="row q-py-sm"
|
|
|
|
|
style="white-space: nowrap"
|
|
|
|
|
@click="$emit('updateCard')"
|
|
|
|
|
v-close-popup
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="mdi-pencil-outline"
|
|
|
|
|
class="col-3"
|
|
|
|
|
size="xs"
|
|
|
|
|
style="color: hsl(var(--cyan-6-hsl))"
|
|
|
|
|
/>
|
|
|
|
|
<span class="col-9 q-px-md flex items-center">
|
|
|
|
|
{{ $t('edit') }}
|
|
|
|
|
</span>
|
|
|
|
|
</q-item>
|
|
|
|
|
<q-item
|
|
|
|
|
dense
|
|
|
|
|
clickable
|
|
|
|
|
@click="$emit('deleteCard')"
|
|
|
|
|
v-close-popup
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="mdi-trash-can-outline"
|
|
|
|
|
size="xs"
|
|
|
|
|
class="col-3 app-text-negative"
|
|
|
|
|
/>
|
|
|
|
|
<span class="col-9 q-px-md flex items-center">
|
|
|
|
|
{{ $t('delete') }}
|
|
|
|
|
</span>
|
|
|
|
|
</q-item>
|
|
|
|
|
</q-list>
|
|
|
|
|
</q-menu>
|
|
|
|
|
</q-btn>
|
|
|
|
|
</div>
|
2024-06-10 16:42:59 +07:00
|
|
|
|
2024-06-14 16:36:28 +07:00
|
|
|
<div class="q-px-md">
|
|
|
|
|
<div class="text-subtitle1 text-bold">{{ title }}</div>
|
|
|
|
|
<div class="text-subtitle3 app-text-muted">{{ subtitle }}</div>
|
|
|
|
|
<div class="row q-gutter-md q-mt-sm">
|
|
|
|
|
<div
|
|
|
|
|
v-if="!isType"
|
|
|
|
|
class="col-3 bordered row justify-between q-px-sm rounded no-wrap"
|
|
|
|
|
style="border-radius: 5px"
|
2024-06-10 16:42:59 +07:00
|
|
|
>
|
2024-06-14 16:36:28 +07:00
|
|
|
<div><q-icon name="mdi-folder-table" /></div>
|
|
|
|
|
<div>10</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="col-3 bordered row justify-between q-px-sm rounded no-wrap"
|
|
|
|
|
style="border-radius: 5px"
|
2024-06-10 16:42:59 +07:00
|
|
|
>
|
2024-06-14 16:36:28 +07:00
|
|
|
<div><q-icon name="mdi-server-network" /></div>
|
|
|
|
|
<div>10</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="col-3 bordered row justify-between q-px-sm rounded no-wrap"
|
|
|
|
|
style="border-radius: 5px"
|
|
|
|
|
>
|
|
|
|
|
<div><q-icon name="mdi-shopping" /></div>
|
|
|
|
|
<div>10</div>
|
|
|
|
|
</div>
|
2024-06-10 16:42:59 +07:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-06-14 16:36:28 +07:00
|
|
|
<div class="q-pt-lg q-pb-sm row justify-between">
|
|
|
|
|
<div class="flex items-center">
|
|
|
|
|
<q-icon
|
|
|
|
|
size="xs"
|
|
|
|
|
name="mdi-calendar-month"
|
|
|
|
|
class="q-mr-sm rounded q-pa-xs"
|
|
|
|
|
style="color: var(--stone-6); background-color: var(--surface-3)"
|
|
|
|
|
/>
|
|
|
|
|
{{ dateFormat(date) }}
|
|
|
|
|
</div>
|
|
|
|
|
<q-btn
|
|
|
|
|
@click.stop="$emit('viewDetail')"
|
|
|
|
|
unelevated
|
|
|
|
|
class="q-px-sm"
|
|
|
|
|
:label="$t('detail')"
|
|
|
|
|
style="background-color: var(--indigo-0); color: var(--blue-5)"
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
size="xs"
|
|
|
|
|
name="mdi-chevron-right"
|
|
|
|
|
class="rounded"
|
|
|
|
|
style="color: var(--blue-5)"
|
|
|
|
|
/>
|
|
|
|
|
</q-btn>
|
|
|
|
|
</div>
|
2024-06-10 16:42:59 +07:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.sub-card {
|
|
|
|
|
background-color: var(--surface-0);
|
|
|
|
|
border-radius: 0 0 var(--radius-2) var(--radius-2);
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
}
|
2024-06-11 12:00:53 +07:00
|
|
|
|
|
|
|
|
.hover-card:hover {
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
opacity: 0.8;
|
|
|
|
|
box-shadow: var(--shadow-3);
|
|
|
|
|
}
|
2024-06-10 16:42:59 +07:00
|
|
|
</style>
|