feat: add branch card component
This commit is contained in:
parent
05d13e5620
commit
20f2f18eb9
1 changed files with 120 additions and 0 deletions
120
src/components/01_branch-management/BranchCard.vue
Normal file
120
src/components/01_branch-management/BranchCard.vue
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
defineProps<{
|
||||||
|
data: {
|
||||||
|
id: string;
|
||||||
|
hq: boolean;
|
||||||
|
branchLabelCode: string;
|
||||||
|
branchLabelName: string;
|
||||||
|
branchLabelTel: string;
|
||||||
|
branchLabelAddress: string;
|
||||||
|
branchLabelType: string;
|
||||||
|
branchLabelStatus: string;
|
||||||
|
};
|
||||||
|
fieldSelected?: string[];
|
||||||
|
}>();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="branch-card rounded bordered"
|
||||||
|
:class="{
|
||||||
|
'branch-card__hq': data.hq,
|
||||||
|
'branch-card__br': !data.hq,
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="branch-card__row"
|
||||||
|
:class="{ 'branch-card__header': i === 0 }"
|
||||||
|
v-for="([k, v], i) in Object.entries(data)
|
||||||
|
.slice(2)
|
||||||
|
.filter(
|
||||||
|
([key], idx) =>
|
||||||
|
idx === 0 || (fieldSelected ? fieldSelected.includes(key) : true),
|
||||||
|
)"
|
||||||
|
:key="k"
|
||||||
|
>
|
||||||
|
<div class="branch-card__label">
|
||||||
|
<span>{{ $t(k) }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="branch-card__value"
|
||||||
|
:class="{ 'branch-card__badge': k === 'branchLabelStatus' }"
|
||||||
|
style="justify-content: space-between"
|
||||||
|
>
|
||||||
|
<span>{{ v }}</span>
|
||||||
|
<q-btn
|
||||||
|
@click="$emit('view-detail', data)"
|
||||||
|
:label="$t('viewDetail')"
|
||||||
|
outline
|
||||||
|
v-if="i === 0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.branch-card {
|
||||||
|
--_branch-card-row-fg: 0 0% 100%;
|
||||||
|
--_branch-card-row-bg: var(--blue-5-hsl);
|
||||||
|
|
||||||
|
&.branch-card__hq {
|
||||||
|
--_branch-card-row-bg: var(--pink-6-hsl);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.branch-card__br {
|
||||||
|
--_branch-card-row-bg: var(--violet-11-hsl);
|
||||||
|
}
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: var(--shadow-2);
|
||||||
|
|
||||||
|
& > .branch-card__row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
padding-inline: var(--size-4);
|
||||||
|
padding-block: var(--size-2);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:first-child):nth-child(2n + 1) {
|
||||||
|
background-color: hsla(var(--_branch-card-row-bg) / 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.branch-card__header {
|
||||||
|
color: hsl(var(--_branch-card-row-fg));
|
||||||
|
background-color: hsl(var(--_branch-card-row-bg));
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .branch-card__label {
|
||||||
|
min-width: 120px;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.branch-card__header) .branch-card__label {
|
||||||
|
color: hsl(var(--stone-7-hsl));
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .branch-card__value {
|
||||||
|
width: 70%;
|
||||||
|
|
||||||
|
&.branch-card__badge > span {
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 999rem;
|
||||||
|
padding-inline: var(--size-2);
|
||||||
|
background-color: hsla(var(--_branch-card-row-bg) / 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue