feat: UI Customer Detail 2 (more detail + i18n)
This commit is contained in:
parent
f3a146e345
commit
ccd7364b8a
5 changed files with 177 additions and 135 deletions
|
|
@ -24,37 +24,57 @@ withDefaults(
|
||||||
<template>
|
<template>
|
||||||
<AppBox class="row" no-padding bordered>
|
<AppBox class="row" no-padding bordered>
|
||||||
<div
|
<div
|
||||||
class="row col-12 q-px-md q-py-md justify-between bordered-b surface-3"
|
class="row col-12 q-px-md q-py-md justify-between bordered-b surface-3 items-center"
|
||||||
>
|
>
|
||||||
<div>รหัสสาขา {{ data.branchCode }}</div>
|
<div>{{ $t('customerBranchFormTab') }} {{ data.branchCode }}</div>
|
||||||
<div>รายละเอียด</div>
|
<q-btn
|
||||||
|
@click.stop="$emit('view-detail')"
|
||||||
|
:label="$t('viewDetail')"
|
||||||
|
rounded
|
||||||
|
outline
|
||||||
|
dense
|
||||||
|
class="q-px-md"
|
||||||
|
style="color: var(--stone-6)"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
||||||
<div class="col-5">ชื่อสาขา</div>
|
<div class="col-5">{{ $t('branchName') }}</div>
|
||||||
<div class="col-7">{{ data.branchName }}</div>
|
<div class="col-7">{{ data.branchName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b surface-2">
|
<div class="row col-12 q-px-md q-py-sm bordered-b surface-2">
|
||||||
<div class="col-5">ที่อยู่</div>
|
<div class="col-5">{{ $t('address') }}</div>
|
||||||
<div class="col-7">{{ data.address }}</div>
|
<div class="col-7">{{ data.address }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
||||||
<div class="col-5">เบอร์โทร</div>
|
<div class="col-5">{{ $t('telephone') }}</div>
|
||||||
<div class="col-7">{{ data.tel }}</div>
|
<div class="col-7">{{ data.tel }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b surface-2">
|
<div class="row col-12 q-px-md q-py-sm bordered-b surface-2">
|
||||||
<div class="col-5">ประเภทสำนักงาน</div>
|
<div class="col-5">{{ $t('businessTypePure') }}</div>
|
||||||
<div class="col-7">{{ data.type }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
|
||||||
<div class="col-5">ประเภทกิจการ</div>
|
|
||||||
<div class="col-7">{{ data.typeCop }}</div>
|
<div class="col-7">{{ data.typeCop }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm bordered-b surface-2">
|
<div class="row col-12 q-px-md q-py-sm bordered-b">
|
||||||
<div class="col-5">สถานะ</div>
|
<div class="col-5">{{ $t('status') }}</div>
|
||||||
<div class="col-7">{{ data.branchName }}</div>
|
<div class="col-7">
|
||||||
|
<q-badge
|
||||||
|
v-if="data.boolean"
|
||||||
|
class="q-px-md q-py-xs rounded"
|
||||||
|
style="background-color: var(--teal-1); color: var(--teal-4)"
|
||||||
|
>
|
||||||
|
{{ $t('statusACTIVE') }}
|
||||||
|
</q-badge>
|
||||||
|
<q-badge
|
||||||
|
v-else
|
||||||
|
text-color="orange"
|
||||||
|
class="q-px-md q-py-xs rounded"
|
||||||
|
style="background-color: var(--red-1); color: var(--orange-4)"
|
||||||
|
>
|
||||||
|
{{ $t('statusINACTIVE') }}
|
||||||
|
</q-badge>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-12 q-px-md q-py-sm surface-3">
|
<div class="row col-12 q-px-md q-py-sm surface-3">
|
||||||
<div class="col-5">ลูกจ้างทั้งหมด</div>
|
<div class="col-5">{{ $t('allEmployee') }}</div>
|
||||||
<div class="col-7">{{ data.number }}</div>
|
<div class="col-7">{{ data.number }}</div>
|
||||||
</div>
|
</div>
|
||||||
</AppBox>
|
</AppBox>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ withDefaults(
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<AppBox no-padding bordered>
|
<AppBox no-padding bordered>
|
||||||
<div class="row no-wrap justify-between q-pa-md bordered-b surface-2">
|
<div class="row no-wrap justify-between bordered-b surface-2">
|
||||||
<div class="row items-center">
|
<div class="row items-center">
|
||||||
<q-btn
|
<q-btn
|
||||||
round
|
round
|
||||||
|
|
@ -28,8 +28,8 @@ withDefaults(
|
||||||
class="q-mr-md"
|
class="q-mr-md"
|
||||||
/>
|
/>
|
||||||
<q-card-section
|
<q-card-section
|
||||||
class="q-pa-sm q-pt-md bg-green q-mr-md"
|
class="q-pa-sm q-pt-md bg-green q-mr-md q-mb-sm"
|
||||||
style="border-radius: 0 0 40px 40px; position: relative; bottom: 20px"
|
style="border-radius: 0 0 40px 40px; position: relative"
|
||||||
>
|
>
|
||||||
<q-avatar no-padding size="50px">
|
<q-avatar no-padding size="50px">
|
||||||
<img src="https://cdn.quasar.dev/img/avatar1.jpg" />
|
<img src="https://cdn.quasar.dev/img/avatar1.jpg" />
|
||||||
|
|
@ -37,23 +37,27 @@ withDefaults(
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<div>
|
<div>
|
||||||
<div>นายสุขใจ แสนดี</div>
|
<div>นายสุขใจ แสนดี</div>
|
||||||
<div class="flex items-center">
|
<div class="row items-center">
|
||||||
<i
|
<i
|
||||||
class="isax isax-frame5"
|
class="isax isax-frame5"
|
||||||
style="font-size: 1rem; color: var(--stone-6)"
|
style="font-size: 1rem; color: var(--stone-6)"
|
||||||
/>
|
/>
|
||||||
{{ '10' }}
|
<div class="q-px-sm">
|
||||||
|
{{ '10' }}
|
||||||
|
</div>
|
||||||
<q-icon name="mdi-home" size="16px" style="color: var(--stone-6)" />
|
<q-icon name="mdi-home" size="16px" style="color: var(--stone-6)" />
|
||||||
{{ '2' }}
|
<div class="q-px-sm">
|
||||||
|
{{ '2' }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row items-center">
|
<div class="row items-center q-pa-md">
|
||||||
<q-btn
|
<q-btn
|
||||||
id="btn-add-customer"
|
id="btn-add-customer"
|
||||||
dense
|
dense
|
||||||
unelevated
|
unelevated
|
||||||
:label="'+ ' + $t('customerAdd')"
|
:label="'+ ' + $t('formDialogTitleCreateSubBranch')"
|
||||||
padding="4px 16px"
|
padding="4px 16px"
|
||||||
@click="console.log('add')"
|
@click="console.log('add')"
|
||||||
style="background-color: var(--cyan-6); color: white"
|
style="background-color: var(--cyan-6); color: white"
|
||||||
|
|
@ -63,7 +67,7 @@ withDefaults(
|
||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
outlined
|
outlined
|
||||||
dense
|
dense
|
||||||
label="ค้นหา"
|
:label="$t('search')"
|
||||||
class="q-mr-lg"
|
class="q-mr-lg"
|
||||||
:bg-color="$q.dark.isActive ? 'dark' : 'white'"
|
:bg-color="$q.dark.isActive ? 'dark' : 'white'"
|
||||||
v-model="inputSearch"
|
v-model="inputSearch"
|
||||||
|
|
@ -72,6 +76,8 @@ withDefaults(
|
||||||
<q-btn
|
<q-btn
|
||||||
icon="mdi-tune-vertical-variant"
|
icon="mdi-tune-vertical-variant"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
:color="$q.dark.isActive ? 'dark' : 'white'"
|
||||||
|
:text-color="$q.dark.isActive ? 'white' : 'dark'"
|
||||||
class="bordered rounded"
|
class="bordered rounded"
|
||||||
unelevated
|
unelevated
|
||||||
>
|
>
|
||||||
|
|
@ -105,7 +111,9 @@ withDefaults(
|
||||||
</div>
|
</div>
|
||||||
<div class="row q-pa-lg q-col-gutter-xl">
|
<div class="row q-pa-lg q-col-gutter-xl">
|
||||||
<div v-for="i in 2" class="col-4">
|
<div v-for="i in 2" class="col-4">
|
||||||
<BranchCardCustomer></BranchCardCustomer>
|
<BranchCardCustomer
|
||||||
|
@view-detail="$emit('viewDetail')"
|
||||||
|
></BranchCardCustomer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</AppBox>
|
</AppBox>
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ export default {
|
||||||
inputCustomerAddress: 'Employment office location (within the area)',
|
inputCustomerAddress: 'Employment office location (within the area)',
|
||||||
businessType: 'Business type in Thai',
|
businessType: 'Business type in Thai',
|
||||||
businessTypeEN: 'Business type in English',
|
businessTypeEN: 'Business type in English',
|
||||||
|
businessTypePure: 'Business Type',
|
||||||
|
|
||||||
jobPosition: 'Job position in Thai',
|
jobPosition: 'Job position in Thai',
|
||||||
jobPositionEN: 'Job position in English',
|
jobPositionEN: 'Job position in English',
|
||||||
jobDescription: 'Job description',
|
jobDescription: 'Job description',
|
||||||
|
|
@ -32,4 +34,6 @@ export default {
|
||||||
registerName: 'RegisterName',
|
registerName: 'RegisterName',
|
||||||
|
|
||||||
customerBranchFormTab: 'Branch ',
|
customerBranchFormTab: 'Branch ',
|
||||||
|
|
||||||
|
allEmployee: 'All Employee',
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ export default {
|
||||||
|
|
||||||
businessType: 'ประเภทกิจการ ภาษาไทย',
|
businessType: 'ประเภทกิจการ ภาษาไทย',
|
||||||
businessTypeEN: 'ประเภทกิจการ ภาษาอังกฤษ',
|
businessTypeEN: 'ประเภทกิจการ ภาษาอังกฤษ',
|
||||||
|
businessTypePure: 'ประเภทกิจการ',
|
||||||
|
|
||||||
jobPosition: 'ตําแหน่งงาน ภาษาไทย',
|
jobPosition: 'ตําแหน่งงาน ภาษาไทย',
|
||||||
jobPositionEN: 'ตําแหน่งงาน ภาษาอังกฤษ',
|
jobPositionEN: 'ตําแหน่งงาน ภาษาอังกฤษ',
|
||||||
|
|
@ -40,4 +41,8 @@ export default {
|
||||||
registerName: 'จดทะเบียนชื่อ',
|
registerName: 'จดทะเบียนชื่อ',
|
||||||
|
|
||||||
customerBranchFormTab: 'สาขาที่',
|
customerBranchFormTab: 'สาขาที่',
|
||||||
|
|
||||||
|
officeType: '',
|
||||||
|
|
||||||
|
allEmployee: 'ลูกจ้างทั้งหมด',
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -215,131 +215,136 @@ function undo() {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-if="isMainPage" class="column q-pb-lg">
|
<div class="column q-pb-lg">
|
||||||
<div class="text-h6 text-weight-bold q-mb-md">
|
<div class="text-h6 text-weight-bold q-mb-md">
|
||||||
{{ $t('customerManagement') }}
|
{{ $t('customerManagement') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row full-width q-mb-md no-wrap">
|
<div v-if="isMainPage">
|
||||||
<SelectorList
|
<div class="row full-width q-mb-md no-wrap">
|
||||||
:list="selectorList"
|
<SelectorList
|
||||||
v-model:selector="selectorLabel"
|
:list="selectorList"
|
||||||
class="q-mr-md col-4"
|
v-model:selector="selectorLabel"
|
||||||
/>
|
class="q-mr-md col-4"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- stat -->
|
<!-- stat -->
|
||||||
<AppBox bordered class="column full-width">
|
<AppBox bordered class="column full-width">
|
||||||
<div class="row q-pb-sm justify-between items-center">
|
<div class="row q-pb-sm justify-between items-center">
|
||||||
<div class="text-weight-bold text-subtitle1">
|
<div class="text-weight-bold text-subtitle1">
|
||||||
{{ $t('customerStatTitle') }}
|
{{ $t('customerStatTitle') }}
|
||||||
|
</div>
|
||||||
|
{{ selectorLabel }}
|
||||||
|
<q-btn
|
||||||
|
id="btn-add-customer"
|
||||||
|
dense
|
||||||
|
unelevated
|
||||||
|
:label="'+ ' + $t('customerAdd')"
|
||||||
|
padding="4px 16px"
|
||||||
|
@click="openDialogCustomerType()"
|
||||||
|
style="background-color: var(--cyan-6); color: white"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
{{ selectorLabel }}
|
<div class="row full-width q-py-md" style="overflow-x: auto">
|
||||||
<q-btn
|
<StatCardComponent
|
||||||
id="btn-add-customer"
|
v-if="customerStats"
|
||||||
dense
|
labelI18n
|
||||||
unelevated
|
:branch="
|
||||||
:label="'+ ' + $t('customerAdd')"
|
customerStats.map((v) => ({
|
||||||
padding="4px 16px"
|
count: v.count,
|
||||||
@click="openDialogCustomerType()"
|
label: v.name,
|
||||||
style="background-color: var(--cyan-6); color: white"
|
color: v.name === 'customerLegalEntity' ? 'purple' : 'green',
|
||||||
/>
|
}))
|
||||||
</div>
|
"
|
||||||
<div class="row full-width q-py-md" style="overflow-x: auto">
|
:dark="$q.dark.isActive"
|
||||||
<StatCardComponent
|
class="no-wrap"
|
||||||
v-if="customerStats"
|
/>
|
||||||
labelI18n
|
</div>
|
||||||
:branch="
|
</AppBox>
|
||||||
customerStats.map((v) => ({
|
</div>
|
||||||
count: v.count,
|
|
||||||
label: v.name,
|
|
||||||
color: v.name === 'customerLegalEntity' ? 'purple' : 'green',
|
|
||||||
}))
|
|
||||||
"
|
|
||||||
:dark="$q.dark.isActive"
|
|
||||||
class="no-wrap"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</AppBox>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- main -->
|
<!-- main -->
|
||||||
<AppBox bordered class="column" style="width: 100%; min-height: 70vh">
|
<AppBox bordered class="column" style="width: 100%; min-height: 70vh">
|
||||||
<div v-if="false" class="row q-mb-md justify-between">
|
<div v-if="false" class="row q-mb-md justify-between">
|
||||||
<div class="col-1 self-end">
|
<div class="col-1 self-end">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<TooltipComponent
|
<TooltipComponent
|
||||||
title="customerTooltipTitle"
|
title="customerTooltipTitle"
|
||||||
caption="customerTooltipCaption"
|
caption="customerTooltipCaption"
|
||||||
imgSrc="personnel-table-"
|
imgSrc="personnel-table-"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="col self-center"
|
||||||
|
style="display: flex; flex-grow: 1; align-items: center"
|
||||||
|
>
|
||||||
|
<AddButton
|
||||||
|
:label="'customerAdd'"
|
||||||
|
:cyanOn="true"
|
||||||
|
@trigger="openDialogCustomerType()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="col self-center"
|
class="row full-width customer-row"
|
||||||
style="display: flex; flex-grow: 1; align-items: center"
|
:style="`grid-template-columns: repeat(${$q.screen.lt.sm ? '1' : '4'}, 1fr)`"
|
||||||
>
|
>
|
||||||
<AddButton
|
<UsersDetailCardComponent
|
||||||
:label="'customerAdd'"
|
color="purple"
|
||||||
:cyanOn="true"
|
:metadata="{ id: '1', disabled: false }"
|
||||||
@trigger="openDialogCustomerType()"
|
:list="{
|
||||||
|
id: '1',
|
||||||
|
type: 'customerLegalEntity',
|
||||||
|
name: 'เจมส์ บอน',
|
||||||
|
code: 'HQ007',
|
||||||
|
detail: [
|
||||||
|
{
|
||||||
|
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
||||||
|
value: 'บริษัทลับ',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
||||||
|
value: 'บริษัทลับ',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}"
|
||||||
|
@enter-card="isMainPage = false"
|
||||||
|
@view-card="openDialogInputForm"
|
||||||
|
/>
|
||||||
|
<UsersDetailCardComponent
|
||||||
|
color="green"
|
||||||
|
:metadata="{ id: '1', disabled: false }"
|
||||||
|
:list="{
|
||||||
|
id: '2',
|
||||||
|
type: 'customerNaturalPerson',
|
||||||
|
name: 'ขอบใจ ขอบใจ',
|
||||||
|
code: 'HQ006',
|
||||||
|
detail: [
|
||||||
|
{
|
||||||
|
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
||||||
|
value: 'บริษัทเฟรบเป้',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
||||||
|
value: 'บริษัทเฟรบเป้',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}"
|
||||||
|
@enter-card="console.log('enter')"
|
||||||
|
@view-card="openDialogInputForm"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</AppBox>
|
||||||
|
</div>
|
||||||
<div
|
<div v-else>
|
||||||
class="row full-width customer-row"
|
<CustomerInfoComponent
|
||||||
:style="`grid-template-columns: repeat(${$q.screen.lt.sm ? '1' : '4'}, 1fr)`"
|
@back="isMainPage = true"
|
||||||
>
|
@viewDetail="console.log('view detail')"
|
||||||
<UsersDetailCardComponent
|
/>
|
||||||
color="purple"
|
</div>
|
||||||
:metadata="{ id: '1', disabled: false }"
|
|
||||||
:list="{
|
|
||||||
id: '1',
|
|
||||||
type: 'customerLegalEntity',
|
|
||||||
name: 'เจมส์ บอน',
|
|
||||||
code: 'HQ007',
|
|
||||||
detail: [
|
|
||||||
{
|
|
||||||
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
|
||||||
value: 'บริษัทลับ',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
|
||||||
value: 'บริษัทลับ',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}"
|
|
||||||
@enter-card="isMainPage = false"
|
|
||||||
@view-card="openDialogInputForm"
|
|
||||||
/>
|
|
||||||
<UsersDetailCardComponent
|
|
||||||
color="green"
|
|
||||||
:metadata="{ id: '1', disabled: false }"
|
|
||||||
:list="{
|
|
||||||
id: '2',
|
|
||||||
type: 'customerNaturalPerson',
|
|
||||||
name: 'ขอบใจ ขอบใจ',
|
|
||||||
code: 'HQ006',
|
|
||||||
detail: [
|
|
||||||
{
|
|
||||||
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
|
||||||
value: 'บริษัทเฟรบเป้',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'ชื่อบริษัท/นิติบุคคล ภาษาไทย',
|
|
||||||
value: 'บริษัทเฟรบเป้',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}"
|
|
||||||
@enter-card="console.log('enter')"
|
|
||||||
@view-card="openDialogInputForm"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</AppBox>
|
|
||||||
</div>
|
|
||||||
<div v-else>
|
|
||||||
<CustomerInfoComponent @back="isMainPage = true" />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FormDialog
|
<FormDialog
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue