From b043ce6c17f65296677c87bcdc1c7315dfe4c84d Mon Sep 17 00:00:00 2001
From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com>
Date: Tue, 23 Apr 2024 14:19:51 +0700
Subject: [PATCH] refactor: branch card (customize with props instead)
---
.../01_branch-management/BranchCard.vue | 103 ++++++++++--------
src/pages/01_branch-management/MainPage.vue | 73 ++++++-------
2 files changed, 94 insertions(+), 82 deletions(-)
diff --git a/src/components/01_branch-management/BranchCard.vue b/src/components/01_branch-management/BranchCard.vue
index 74c85133..77518037 100644
--- a/src/components/01_branch-management/BranchCard.vue
+++ b/src/components/01_branch-management/BranchCard.vue
@@ -1,18 +1,12 @@
@@ -20,20 +14,24 @@ defineProps<{
@@ -41,18 +39,18 @@ defineProps<{
{{ v }}
@@ -66,22 +64,6 @@ defineProps<{
--_branch-card-row-bg: var(--blue-5-hsl);
--_branch-badge-fg: var(--green-8-hsl);
--_branch-badge-bg: var(--green-6-hsl);
-
- &.branch-card__hq {
- --_branch-card-row-bg: var(--pink-6-hsl);
- }
-
- &.branch-card__br {
- --_branch-card-row-bg: var(--violet-11-hsl);
- }
-
- &.branch-card__inactive {
- --_branch-badge-fg: var(--red-4-hsl);
- --_branch-badge-bg: var(--red-4-hsl);
- filter: grayscale(40%);
- opacity: 0.5;
- }
-
display: flex;
flex-direction: column;
overflow: hidden;
@@ -97,14 +79,18 @@ defineProps<{
flex-grow: 1;
}
- &:not(:first-child):nth-child(2n + 1) {
+ &:nth-child(2n + 1) {
background-color: hsla(var(--_branch-card-row-bg) / 0.1);
}
- &.branch-card__header {
+ &.branch-card__header,
+ &.branch-card__footer {
color: hsl(var(--_branch-card-row-fg));
background-color: hsl(var(--_branch-card-row-bg));
- font-weight: 600;
+
+ &:deep(*) {
+ font-weight: 600;
+ }
}
&.branch-card__header > * {
@@ -133,5 +119,36 @@ defineProps<{
}
}
}
+
+ &.branch-card__none {
+ --_branch-card-row-bg: var(--gray-3-hsl);
+
+ &.branch-card__dark {
+ --_branch-card-row-bg: var(--gray-9-hsl);
+ }
+
+ &:not(.branch-card__dark) .branch-card__header {
+ color: currentColor;
+
+ & .branch-card__view-detail {
+ color: hsla(var(--gray-10-hsl) / 0.3);
+ }
+ }
+ }
+
+ &.branch-card__hq {
+ --_branch-card-row-bg: var(--pink-6-hsl);
+ }
+
+ &.branch-card__br {
+ --_branch-card-row-bg: var(--violet-11-hsl);
+ }
+
+ &.branch-card__inactive {
+ --_branch-badge-fg: var(--red-4-hsl);
+ --_branch-badge-bg: var(--red-4-hsl);
+ filter: grayscale(40%);
+ opacity: 0.5;
+ }
}
diff --git a/src/pages/01_branch-management/MainPage.vue b/src/pages/01_branch-management/MainPage.vue
index 7701513f..d34cf805 100644
--- a/src/pages/01_branch-management/MainPage.vue
+++ b/src/pages/01_branch-management/MainPage.vue
@@ -127,7 +127,9 @@ const fieldSelectedBranch = ref<{
value: 'branchHQLabel',
});
-const stats = ref<{ count: number; label: string }[]>([]);
+const stats = ref<
+ { count: number; label: string; color?: 'pink' | 'purple' }[]
+>([]);
const defaultFormData = {
headOfficeId: null,
@@ -337,11 +339,13 @@ async function onSubmit() {
stats.value[0] = {
count: _stats.hq,
label: 'branchHQLabel',
+ color: 'pink',
};
stats.value[1] = {
count: _stats.br,
label: 'branchLabel',
+ color: 'purple',
};
}
}
@@ -726,7 +730,8 @@ watch(locale, () => {
[v, ...v.branch])
.filter((v) => {
if (
statusFilter === 'statusACTIVE' &&
@@ -755,40 +760,13 @@ watch(locale, () => {
return !v.isHeadOffice;
return false;
- })
- .map((v) => ({
- id: v.id,
- hq: v.isHeadOffice,
- status: v.status,
- branchLabelCode: v.code,
- branchLabelName:
- $i18n.locale === 'en-US' ? v.nameEN : v.name,
- branchLabelTel: v.contact
- .map((c) => c.telephoneNo)
- .join(','),
- branchLabelAddress:
- $i18n.locale === 'en-US'
- ? `${v.addressEN || ''} ${v.subDistrict?.nameEN || ''} ${v.district?.nameEN || ''} ${v.province?.nameEN || ''}`
- : `${v.address || ''} ${v.subDistrict?.name || ''} ${v.district?.name || ''} ${v.province?.name || ''}`,
- branchLabelType: $t(
- v.isHeadOffice ? 'branchHQLabel' : 'branchLabel',
- ),
- branchLabelStatus: $t(`status${v.status}`),
- }))
- .sort((a, b) => {
- console.log(a);
-
- if (a.hq) return 1;
- // if (!a.hq) return -1;
-
- return 0;
})"
@click="
() => {
- if (item.hq) {
+ if (item.isHeadOffice) {
fieldSelectedBranch.value = '';
inputSearch = '';
- currentHq = { id: item.id, code: item.branchLabelCode };
+ currentHq = { id: item.id, code: item.code };
beforeBranch = {
id: '',
code: '',
@@ -796,18 +774,35 @@ watch(locale, () => {
}
}
"
+ :metadata="item"
+ :color="item.isHeadOffice ? 'hq' : 'br'"
:key="item.id"
- :data="item"
+ :data="{
+ branchLabelCode: item.code,
+ branchLabelName:
+ $i18n.locale === 'en-US' ? item.nameEN : item.name,
+ branchLabelTel: item.contact
+ .map((c) => c.telephoneNo)
+ .join(','),
+ branchLabelAddress:
+ $i18n.locale === 'en-US'
+ ? `${item.addressEN || ''} ${item.subDistrict?.nameEN || ''} ${item.district?.nameEN || ''} ${item.province?.nameEN || ''}`
+ : `${item.address || ''} ${item.subDistrict?.name || ''} ${item.district?.name || ''} ${item.province?.name || ''}`,
+ branchLabelType: $t(
+ item.isHeadOffice ? 'branchHQLabel' : 'branchLabel',
+ ),
+ branchLabelStatus: $t(`status${item.status}`),
+ }"
:field-selected="fieldSelected"
+ :badge-field="['branchLabelStatus']"
:inactive="item.status === 'INACTIVE'"
@view-detail="
- (b) => {
- if (b.hq) {
- triggerEdit('drawer', b.id, 'headOffice');
- } else {
- triggerEdit('drawer', b.id, 'subBranch');
- }
- }
+ (v) =>
+ triggerEdit(
+ 'drawer',
+ v.id,
+ v.hq ? 'headOffice' : 'subBranch',
+ )
"
/>