2024-06-07 11:58:27 +07:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { ref } from 'vue';
|
|
|
|
|
import AppBox from 'components/app/AppBox.vue';
|
|
|
|
|
import BranchCardCustomer from 'components/03_customer-management/BranchCardCustomer.vue';
|
2024-06-07 14:16:38 +07:00
|
|
|
import { onMounted } from 'vue';
|
|
|
|
|
import useCustomerStore from 'src/stores/customer';
|
2024-06-10 15:57:12 +07:00
|
|
|
import { CustomerBranch, Customer } from 'src/stores/customer/types';
|
2024-06-07 14:16:38 +07:00
|
|
|
|
|
|
|
|
const userCustomer = useCustomerStore();
|
|
|
|
|
const { fetchListById } = userCustomer;
|
2024-06-07 11:58:27 +07:00
|
|
|
|
|
|
|
|
const inputSearch = ref<string>('');
|
|
|
|
|
|
2024-06-10 12:00:16 +07:00
|
|
|
const branch = defineModel<CustomerBranch[]>('branch');
|
|
|
|
|
const currentCustomerName = defineModel<string>('currentCustomerName');
|
2024-06-10 15:57:12 +07:00
|
|
|
const currentCustomerUrlImage = ref<string | null>();
|
2024-06-07 15:05:22 +07:00
|
|
|
|
2024-06-10 15:57:12 +07:00
|
|
|
const returnCustomer = ref<Customer & { branch: CustomerBranch[] }>();
|
2024-06-07 14:16:38 +07:00
|
|
|
const prop = withDefaults(
|
2024-06-07 11:58:27 +07:00
|
|
|
defineProps<{
|
2024-06-07 14:19:35 +07:00
|
|
|
color?: 'purple' | 'green';
|
2024-06-07 14:40:18 +07:00
|
|
|
customerId: string;
|
2024-06-07 11:58:27 +07:00
|
|
|
}>(),
|
|
|
|
|
{
|
|
|
|
|
color: 'green',
|
|
|
|
|
},
|
|
|
|
|
);
|
2024-06-07 14:16:38 +07:00
|
|
|
|
2024-06-10 15:57:12 +07:00
|
|
|
const emit = defineEmits<{
|
2024-06-10 12:00:16 +07:00
|
|
|
(e: 'back'): void;
|
2024-06-10 15:57:12 +07:00
|
|
|
(
|
|
|
|
|
e: 'viewDetail',
|
|
|
|
|
returnCustomer: Customer & { branch: CustomerBranch[] },
|
|
|
|
|
): void;
|
|
|
|
|
|
2024-06-10 12:00:16 +07:00
|
|
|
(e: 'dialog'): void;
|
|
|
|
|
}>();
|
|
|
|
|
|
2024-06-07 14:16:38 +07:00
|
|
|
onMounted(async () => {
|
|
|
|
|
const result = await fetchListById(prop.customerId);
|
2024-06-07 15:05:22 +07:00
|
|
|
if (result) {
|
2024-06-10 15:57:12 +07:00
|
|
|
returnCustomer.value = result;
|
2024-06-07 15:05:22 +07:00
|
|
|
currentCustomerName.value = result.customerName;
|
|
|
|
|
currentCustomerUrlImage.value = result.imageUrl;
|
|
|
|
|
branch.value = result.branch;
|
|
|
|
|
}
|
2024-06-07 14:16:38 +07:00
|
|
|
});
|
2024-06-07 11:58:27 +07:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<AppBox no-padding bordered>
|
2024-06-07 13:59:36 +07:00
|
|
|
<div class="row no-wrap justify-between bordered-b surface-2">
|
2024-06-07 11:58:27 +07:00
|
|
|
<div class="row items-center">
|
|
|
|
|
<q-btn
|
|
|
|
|
round
|
|
|
|
|
icon="mdi-arrow-left"
|
|
|
|
|
flat
|
|
|
|
|
dense
|
|
|
|
|
@click="$emit('back')"
|
|
|
|
|
class="q-mr-md"
|
|
|
|
|
/>
|
|
|
|
|
<q-card-section
|
2024-06-11 11:23:23 +07:00
|
|
|
class="q-pa-sm q-pt-md q-mr-md q-mb-sm"
|
|
|
|
|
:class="{
|
|
|
|
|
color__purple: customerType === 'CORP',
|
|
|
|
|
color__green: customerType === 'PERS',
|
|
|
|
|
}"
|
2024-06-07 13:59:36 +07:00
|
|
|
style="border-radius: 0 0 40px 40px; position: relative"
|
2024-06-07 11:58:27 +07:00
|
|
|
>
|
|
|
|
|
<q-avatar no-padding size="50px">
|
2024-06-07 15:05:22 +07:00
|
|
|
<img
|
|
|
|
|
:src="
|
|
|
|
|
currentCustomerUrlImage ??
|
|
|
|
|
'https://cdn.quasar.dev/img/avatar1.jpg'
|
|
|
|
|
"
|
|
|
|
|
/>
|
2024-06-07 11:58:27 +07:00
|
|
|
</q-avatar>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
<div>
|
2024-06-07 15:05:22 +07:00
|
|
|
<div>{{ currentCustomerName }}</div>
|
2024-06-07 13:59:36 +07:00
|
|
|
<div class="row items-center">
|
2024-06-07 11:58:27 +07:00
|
|
|
<i
|
|
|
|
|
class="isax isax-frame5"
|
|
|
|
|
style="font-size: 1rem; color: var(--stone-6)"
|
|
|
|
|
/>
|
2024-06-07 13:59:36 +07:00
|
|
|
<div class="q-px-sm">
|
|
|
|
|
{{ '10' }}
|
|
|
|
|
</div>
|
2024-06-07 11:58:27 +07:00
|
|
|
<q-icon name="mdi-home" size="16px" style="color: var(--stone-6)" />
|
2024-06-07 13:59:36 +07:00
|
|
|
<div class="q-px-sm">
|
|
|
|
|
{{ '2' }}
|
|
|
|
|
</div>
|
2024-06-07 11:58:27 +07:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-06-07 13:59:36 +07:00
|
|
|
<div class="row items-center q-pa-md">
|
2024-06-07 11:58:27 +07:00
|
|
|
<q-btn
|
|
|
|
|
id="btn-add-customer"
|
|
|
|
|
dense
|
|
|
|
|
unelevated
|
2024-06-07 13:59:36 +07:00
|
|
|
:label="'+ ' + $t('formDialogTitleCreateSubBranch')"
|
2024-06-07 11:58:27 +07:00
|
|
|
padding="4px 16px"
|
2024-06-10 12:00:16 +07:00
|
|
|
@click="$emit('dialog')"
|
2024-06-07 11:58:27 +07:00
|
|
|
style="background-color: var(--cyan-6); color: white"
|
|
|
|
|
/>
|
|
|
|
|
<q-separator vertical inset class="q-mx-lg" />
|
|
|
|
|
<q-input
|
|
|
|
|
style="width: 250px"
|
|
|
|
|
outlined
|
|
|
|
|
dense
|
2024-06-07 13:59:36 +07:00
|
|
|
:label="$t('search')"
|
2024-06-07 11:58:27 +07:00
|
|
|
class="q-mr-lg"
|
|
|
|
|
:bg-color="$q.dark.isActive ? 'dark' : 'white'"
|
|
|
|
|
v-model="inputSearch"
|
|
|
|
|
debounce="500"
|
|
|
|
|
></q-input>
|
|
|
|
|
<q-btn
|
|
|
|
|
icon="mdi-tune-vertical-variant"
|
|
|
|
|
size="sm"
|
2024-06-07 13:59:36 +07:00
|
|
|
:color="$q.dark.isActive ? 'dark' : 'white'"
|
|
|
|
|
:text-color="$q.dark.isActive ? 'white' : 'dark'"
|
2024-06-07 11:58:27 +07:00
|
|
|
class="bordered rounded"
|
|
|
|
|
unelevated
|
|
|
|
|
>
|
|
|
|
|
<q-menu class="bordered">
|
|
|
|
|
<q-list v-close-popup dense>
|
|
|
|
|
<q-item
|
|
|
|
|
clickable
|
|
|
|
|
class="flex items-center"
|
|
|
|
|
@click="console.log('test')"
|
|
|
|
|
>
|
|
|
|
|
{{ $t('all') }}
|
|
|
|
|
</q-item>
|
|
|
|
|
<q-item
|
|
|
|
|
clickable
|
|
|
|
|
class="flex items-center"
|
|
|
|
|
@click="console.log('test')"
|
|
|
|
|
>
|
|
|
|
|
{{ $t('statusACTIVE') }}
|
|
|
|
|
</q-item>
|
|
|
|
|
<q-item
|
|
|
|
|
clickable
|
|
|
|
|
class="flex items-center"
|
|
|
|
|
@click="console.log('test')"
|
|
|
|
|
>
|
|
|
|
|
{{ $t('statusINACTIVE') }}
|
|
|
|
|
</q-item>
|
|
|
|
|
</q-list>
|
|
|
|
|
</q-menu>
|
|
|
|
|
</q-btn>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-06-10 15:57:12 +07:00
|
|
|
<div class="row q-pa-lg q-col-gutter-xl" v-if="!!returnCustomer">
|
2024-06-07 14:19:35 +07:00
|
|
|
<div v-for="(br, i) in branch" :key="i" class="col-4">
|
2024-06-10 15:57:12 +07:00
|
|
|
<BranchCardCustomer
|
|
|
|
|
:data="br"
|
|
|
|
|
@view-detail="emit('viewDetail', { ...returnCustomer, branch: [br] })"
|
|
|
|
|
/>
|
2024-06-07 11:58:27 +07:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</AppBox>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped></style>
|