refactor: add prefixId

This commit is contained in:
Net 2024-07-25 14:44:32 +07:00
parent 1e4e2c2927
commit 1bbb5007d3
17 changed files with 241 additions and 175 deletions

View file

@ -17,6 +17,7 @@ defineProps<{
employee?: boolean; employee?: boolean;
disabledRule?: boolean; disabledRule?: boolean;
id?: number; id?: number;
prefixId: string;
}>(); }>();
const adrressStore = useAddressStore(); const adrressStore = useAddressStore();
@ -88,7 +89,7 @@ watch(districtId, fetchSubDistrict);
style="border-radius: var(--radius-3)" style="border-radius: var(--radius-3)"
> >
<span <span
id="same" :id="`${prefixId}-same`"
class="q-px-sm q-mr-lg rounded cursor-pointer" class="q-px-sm q-mr-lg rounded cursor-pointer"
:class="{ :class="{
dark: $q.dark.isActive, dark: $q.dark.isActive,
@ -100,7 +101,7 @@ watch(districtId, fetchSubDistrict);
{{ $t('formDialogToggleSameAddress') }} {{ $t('formDialogToggleSameAddress') }}
</span> </span>
<span <span
id="custom" :id="`${prefixId}-custom`"
class="q-px-sm rounded cursor-pointer" class="q-px-sm rounded cursor-pointer"
:class="{ :class="{
dark: $q.dark.isActive, dark: $q.dark.isActive,
@ -123,7 +124,7 @@ watch(districtId, fetchSubDistrict);
</div> </div>
<div class="col-md-9 col-12 row q-col-gutter-md"> <div class="col-md-9 col-12 row q-col-gutter-md">
<q-input <q-input
:for="`${id !== undefined ? `input-address-${id}` : 'input-address'}`" :for="`${prefixId}-${id !== undefined ? `input-address-${id}` : 'input-address'}`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
@ -142,7 +143,7 @@ watch(districtId, fetchSubDistrict);
" "
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-province-${id}` : 'select-province'}`" :id="`${prefixId}-${id !== undefined ? `select-province-${id}` : 'select-province'}`"
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
outlined outlined
@ -169,7 +170,7 @@ watch(districtId, fetchSubDistrict);
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-district-${id}` : 'select-district'}`" :id="`${prefixId}-${id !== undefined ? `select-district-${id}` : 'select-district'}`"
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
outlined outlined
@ -195,7 +196,7 @@ watch(districtId, fetchSubDistrict);
@update:model-value="subDistrictId = zipCode = null" @update:model-value="subDistrictId = zipCode = null"
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-sub-district-${id}` : 'select-sub-district'}`" :id="`${prefixId}-${id !== undefined ? `select-sub-district-${id}` : 'select-sub-district'}`"
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
outlined outlined
@ -221,7 +222,7 @@ watch(districtId, fetchSubDistrict);
@update:model-value="(v: string) => selectSubDistrict(v)" @update:model-value="(v: string) => selectSubDistrict(v)"
/> />
<q-input <q-input
:for="`${id !== undefined ? `input-zip-code-${id}` : 'input-zip-code'}`" :for="`${prefixId}-${id !== undefined ? `input-zip-code-${id}` : 'input-zip-code'}`"
:dense="dense" :dense="dense"
outlined outlined
readonly readonly
@ -238,7 +239,7 @@ watch(districtId, fetchSubDistrict);
</div> </div>
<div class="col-md-9 col-12 row q-col-gutter-md"> <div class="col-md-9 col-12 row q-col-gutter-md">
<q-input <q-input
:for="`${id !== undefined ? `input-address-en-${id}` : 'input-address-en'}`" :for="`${prefixId}-${id !== undefined ? `input-address-en-${id}` : 'input-address-en'}`"
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
outlined outlined
@ -257,7 +258,7 @@ watch(districtId, fetchSubDistrict);
" "
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-province-en-${id}` : 'select-province-en'}`" :id="`${prefixId}-${id !== undefined ? `select-province-en-${id}` : 'select-province-en'}`"
hide-bottom-space hide-bottom-space
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
@ -283,7 +284,7 @@ watch(districtId, fetchSubDistrict);
@update:model-value="districtId = subDistrictId = zipCode = null" @update:model-value="districtId = subDistrictId = zipCode = null"
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-district-en-${id}` : 'select-district-en'}`" :id="`${prefixId}-${id !== undefined ? `select-district-en-${id}` : 'select-district-en'}`"
hide-bottom-space hide-bottom-space
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
@ -309,7 +310,7 @@ watch(districtId, fetchSubDistrict);
@update:model-value="subDistrictId = zipCode = null" @update:model-value="subDistrictId = zipCode = null"
/> />
<q-select <q-select
:id="`${id !== undefined ? `select-sub-district-en-${id}` : 'select-sub-district-en'}`" :id="`${prefixId}-${id !== undefined ? `select-sub-district-en-${id}` : 'select-sub-district-en'}`"
hide-bottom-space hide-bottom-space
:dense="dense" :dense="dense"
:readonly="readonly || sameWithEmployer" :readonly="readonly || sameWithEmployer"
@ -336,7 +337,7 @@ watch(districtId, fetchSubDistrict);
/> />
<q-input <q-input
hide-bottom-space hide-bottom-space
:for="`${id !== undefined ? `input-zip-code-${id}` : 'input-zip-code'}`" :for="`${prefixId}-${id !== undefined ? `input-zip-code-${id}` : 'input-zip-code'}`"
:dense="dense" :dense="dense"
outlined outlined
readonly readonly

View file

@ -28,6 +28,7 @@ defineProps<{
separator?: boolean; separator?: boolean;
employee?: boolean; employee?: boolean;
title?: string; title?: string;
prefixId: string;
}>(); }>();
</script> </script>
<template> <template>
@ -36,7 +37,7 @@ defineProps<{
</div> </div>
<div class="col-md-9 col-12 row q-col-gutter-md"> <div class="col-md-9 col-12 row q-col-gutter-md">
<q-input <q-input
for="input-first-name" :for="`${prefixId}-input-first-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -49,7 +50,7 @@ defineProps<{
]" ]"
/> />
<q-input <q-input
for="input-last-name" :for="`${prefixId}-input-last-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -60,7 +61,7 @@ defineProps<{
:rules="[(val: string) => !!val || $t('formDialogInputLastNameValidate')]" :rules="[(val: string) => !!val || $t('formDialogInputLastNameValidate')]"
/> />
<q-input <q-input
for="input-first-name-en" :for="`${prefixId}-input-first-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -73,7 +74,7 @@ defineProps<{
]" ]"
/> />
<q-input <q-input
for="input-last-name-en" :for="`${prefixId}-input-last-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -87,7 +88,7 @@ defineProps<{
/> />
<q-input <q-input
v-if="!employee" v-if="!employee"
for="input-telephone" :for="`${prefixId}-input-telephone`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -98,7 +99,7 @@ defineProps<{
/> />
<q-input <q-input
v-if="!employee" v-if="!employee"
for="input-email" :for="`${prefixId}-input-email`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -108,7 +109,7 @@ defineProps<{
/> />
<q-select <q-select
v-if="!employee" v-if="!employee"
id="select-gender" :id="`${prefixId}-select-gender`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -124,8 +125,8 @@ defineProps<{
/> />
<VueDatePicker <VueDatePicker
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
for="input-birth-date" :for="`${prefixId}-input-birth-date`"
utc utc
autoApply autoApply
v-model="birthDate" v-model="birthDate"
@ -145,7 +146,7 @@ defineProps<{
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
for="input-birth-date" :for="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
placeholder="DD/MM/YYYY" placeholder="DD/MM/YYYY"
:label="$t('formDialogInputBirthDate')" :label="$t('formDialogInputBirthDate')"
@ -185,7 +186,7 @@ defineProps<{
</template> </template>
</VueDatePicker> </VueDatePicker>
<q-input <q-input
for="input-age" :for="`${prefixId}-input-age`"
:dense="dense" :dense="dense"
outlined outlined
readonly readonly
@ -200,7 +201,7 @@ defineProps<{
/> />
<q-select <q-select
v-if="employee" v-if="employee"
id="select-gender" :id="`${prefixId}-select-gender`"
hide-bottom-space hide-bottom-space
:dense="dense" :dense="dense"
outlined outlined
@ -221,7 +222,7 @@ defineProps<{
/> />
<q-select <q-select
v-if="employee" v-if="employee"
id="select-nationality" :id="`${prefixId}-select-nationality`"
hide-bottom-space hide-bottom-space
:dense="dense" :dense="dense"
outlined outlined

View file

@ -9,6 +9,7 @@ defineProps<{
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
typeCustomer?: string; typeCustomer?: string;
prefixId: string;
}>(); }>();
const { locale } = useI18n(); const { locale } = useI18n();
const branchCode = defineModel<string>('branchCode'); const branchCode = defineModel<string>('branchCode');
@ -27,8 +28,8 @@ const branchNo = defineModel<number>('branchNo');
<div class="col-3 app-text-muted"> {{ $t(`about`) }}</div> <div class="col-3 app-text-muted"> {{ $t(`about`) }}</div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-branchCode" :for="`${prefixId}-input-branch-code`"
id="input-branchCode" :id="`${prefixId}-input-branch-code`"
v-if="typeCustomer === 'PERS'" v-if="typeCustomer === 'PERS'"
:dense="dense" :dense="dense"
outlined outlined
@ -40,8 +41,8 @@ const branchNo = defineModel<number>('branchNo');
/> />
<q-input <q-input
for="input-branchCode" :for="`${prefixId}-input-branch-code`"
id="input-branchCode" :id="`${prefixId}-input-branch-code`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="!!branchCode" :readonly="!!branchCode"
@ -52,8 +53,8 @@ const branchNo = defineModel<number>('branchNo');
/> />
<q-input <q-input
for="input-customerName" :for="`${prefixId}-input-customer-name`"
id="input-customerName" :id="`${prefixId}-input-customer-name`"
v-if="typeCustomer === 'PERS'" v-if="typeCustomer === 'PERS'"
:dense="dense" :dense="dense"
outlined outlined
@ -65,8 +66,8 @@ const branchNo = defineModel<number>('branchNo');
/> />
<q-input <q-input
for="input-customerEnglishName" :for="`${prefixId}-input-customer-english-name`"
id="input-customerEnglishName" :id="`${prefixId}-input-customer-english-name`"
v-if="typeCustomer === 'PERS'" v-if="typeCustomer === 'PERS'"
:dense="dense" :dense="dense"
outlined outlined
@ -79,8 +80,8 @@ const branchNo = defineModel<number>('branchNo');
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<q-input <q-input
for="input-branchCode" :for="`${prefixId}-input-branch-code`"
id="input-branchCode" :id="`${prefixId}-input-branch-code`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -91,8 +92,8 @@ const branchNo = defineModel<number>('branchNo');
v-model="branchCode" v-model="branchCode"
/> />
<q-input <q-input
for="input-legalEntityCode" :for="`${prefixId}-input-legal-entity-code`"
id="input-legalEntityCode" :id="`${prefixId}-input-legal-entity-code`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -104,8 +105,8 @@ const branchNo = defineModel<number>('branchNo');
/> />
<q-input <q-input
for="input-customerEnglishName" :for="`${prefixId}-input-customer-english-name`"
id="input-customerEnglishName" :id="`${prefixId}-input-customer-english-name`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -117,8 +118,8 @@ const branchNo = defineModel<number>('branchNo');
/> />
<q-input <q-input
for="input-customerName" :for="`${prefixId}-input-customer-name`"
id="input-customerName" :id="`${prefixId}-input-customer-name`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -131,8 +132,8 @@ const branchNo = defineModel<number>('branchNo');
</div> </div>
<q-input <q-input
for="input-taxNo" :for="`${prefixId}-input-tax-no`"
id="input-taxNo" :id="`${prefixId}-input-tax-no`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -148,8 +149,8 @@ const branchNo = defineModel<number>('branchNo');
]" ]"
/> />
<q-input <q-input
for="input-registerName" :for="`${prefixId}-input-register-name`"
id="input-registerName" :id="`${prefixId}-input-register-name`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -160,8 +161,8 @@ const branchNo = defineModel<number>('branchNo');
v-model="registerName" v-model="registerName"
/> />
<q-input <q-input
for="input-authorizedCapital" :for="`${prefixId}-input-authorized-capital`"
id="input-authorizedCapital" :id="`${prefixId}-input-authorized-capital`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:dense="dense" :dense="dense"
outlined outlined
@ -172,7 +173,7 @@ const branchNo = defineModel<number>('branchNo');
v-model="authorizedCapital" v-model="authorizedCapital"
/> />
<VueDatePicker <VueDatePicker
id="date-picker-date" :id="`${prefixId}-date-picker-date`"
v-if="typeCustomer === 'CORP'" v-if="typeCustomer === 'CORP'"
:teleport="true" :teleport="true"
utc utc
@ -192,8 +193,8 @@ const branchNo = defineModel<number>('branchNo');
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
for="input-start-date" :for="`${prefixId}-input-start-date`"
id="input-start-date" :id="`${prefixId}-input-start-date`"
:label="$t('registerDate')" :label="$t('registerDate')"
:dense="dense" :dense="dense"
outlined outlined

View file

@ -32,8 +32,8 @@ const props = defineProps<{
typeCustomer?: string; typeCustomer?: string;
employee?: boolean; employee?: boolean;
optionsBranch?: { id: string; name: string }[]; optionsBranch?: { id: string; name: string }[];
employeeOwnerOption?: CustomerBranch[]; employeeOwnerOption?: CustomerBranch[];
prefixId: string;
}>(); }>();
defineEmits<{ defineEmits<{
@ -47,7 +47,7 @@ defineEmits<{
</div> </div>
<div v-if="!employee" class="col-md-9 col-12 row q-col-gutter-md"> <div v-if="!employee" class="col-md-9 col-12 row q-col-gutter-md">
<q-select <q-select
id="input-source-nationality" :id="`${prefixId}-input-source-nationality`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -75,8 +75,8 @@ defineEmits<{
/> />
<q-input <q-input
for="input-employer-id" :for="`${prefixId}-input-employer-id`"
id="input-employer-id" :id="`${prefixId}-input-employer-id`"
v-if="typeCustomer === 'PERS'" v-if="typeCustomer === 'PERS'"
:dense="dense" :dense="dense"
outlined outlined
@ -87,8 +87,8 @@ defineEmits<{
v-model="personName" v-model="personName"
/> />
<q-input <q-input
for="input-tax-no" :for="`${prefixId}-input-tax-no`"
id="input-tax-no" :id="`${prefixId}-input-tax-no`"
v-if="typeCustomer === 'PERS'" v-if="typeCustomer === 'PERS'"
:dense="dense" :dense="dense"
outlined outlined
@ -105,8 +105,8 @@ defineEmits<{
/> />
<q-input <q-input
for="input-customer-name" :for="`${prefixId}-input-customer-name`"
id="input-customer-name" :id="`${prefixId}-input-customer-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -118,8 +118,8 @@ defineEmits<{
v-model="customerName" v-model="customerName"
/> />
<q-input <q-input
for="input-customer-name-en" :for="`${prefixId}-input-customer-name-en`"
id="input-customer-name-en" :id="`${prefixId}-input-customer-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -137,7 +137,7 @@ defineEmits<{
<q-input <q-input
v-if="typeCustomer !== 'PERS'" v-if="typeCustomer !== 'PERS'"
for="input-owner-name" :for="`${prefixId}-input-owner-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -150,7 +150,7 @@ defineEmits<{
<div v-if="employee" class="col-md-9 col-12 row q-col-gutter-md"> <div v-if="employee" class="col-md-9 col-12 row q-col-gutter-md">
<q-select <q-select
for="select-employer-branch" :for="`${prefixId}-select-employer-branch`"
:use-input="!customerBranch" :use-input="!customerBranch"
input-debounce="0" input-debounce="0"
:hide-dropdown-icon="readonly" :hide-dropdown-icon="readonly"
@ -354,7 +354,7 @@ defineEmits<{
</template> </template>
</q-select> </q-select>
<q-input <q-input
for="input-employeeID" :for="`${prefixId}-input-employee-id`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="true" :readonly="true"
@ -366,7 +366,7 @@ defineEmits<{
<q-input <q-input
v-if="readonly && !nrcNo" v-if="readonly && !nrcNo"
for="input-nrcNo" :for="`${prefixId}-input-nrc-no`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -378,7 +378,7 @@ defineEmits<{
<q-input <q-input
v-else v-else
mask="## #### ###### #" mask="## #### ###### #"
for="input-nrcNo" :for="`${prefixId}-input-nrc-no`"
:dense="dense" :dense="dense"
outlined outlined
hide-bottom-space hide-bottom-space

View file

@ -5,6 +5,7 @@ defineProps<{
outlined?: boolean; outlined?: boolean;
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
prefixId: string;
}>(); }>();
const mail = defineModel<string>('mail'); const mail = defineModel<string>('mail');
@ -16,8 +17,8 @@ const telephone = defineModel<string>('telephone');
<div class="col-3 app-text-muted"> {{ $t(`formDialogTitleContact`) }}</div> <div class="col-3 app-text-muted"> {{ $t(`formDialogTitleContact`) }}</div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-mail" :for="`${prefixId}-input-mail`"
id="input-mail" :id="`${prefixId}-input-mail`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -27,8 +28,8 @@ const telephone = defineModel<string>('telephone');
v-model="mail" v-model="mail"
/> />
<q-input <q-input
for="input-telephone" :for="`${prefixId}-input-telephone`"
id="input-telephone" :id="`${prefixId}-input-telephone`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"

View file

@ -30,6 +30,7 @@ defineProps<{
outlined?: boolean; outlined?: boolean;
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
prefixId: string;
}>(); }>();
onMounted(async () => { onMounted(async () => {
@ -51,8 +52,8 @@ onMounted(async () => {
<div class="col-3 app-text-muted"> {{ $t('businessInformation') }}</div> <div class="col-3 app-text-muted"> {{ $t('businessInformation') }}</div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-employment-office" :for="`${prefixId}-input-employment-office`"
id="input-employment-office" :id="`${prefixId}-input-employment-office`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -63,7 +64,7 @@ onMounted(async () => {
/> />
<q-select <q-select
id="select-business-type" :id="`${prefixId}-select-business-type`"
emit-value emit-value
option-value="value" option-value="value"
option-label="label" option-label="label"
@ -78,8 +79,8 @@ onMounted(async () => {
/> />
<q-input <q-input
for="input-bussiness-type-en" :for="`${prefixId}-input-bussiness-type-en`"
id="input-bussiness-type-en" :id="`${prefixId}-input-bussiness-type-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -90,7 +91,8 @@ onMounted(async () => {
/> />
<q-select <q-select
id="select-job-position" :for="`${prefixId}-select-job-position`"
:id="`${prefixId}-select-job-position`"
emit-value emit-value
option-value="value" option-value="value"
option-label="label" option-label="label"
@ -105,8 +107,8 @@ onMounted(async () => {
/> />
<q-input <q-input
for="input-job-position-en" :for="`${prefixId}-input-job-position-en`"
id="input-job-position-en" :id="`${prefixId}-input-job-position-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -117,8 +119,8 @@ onMounted(async () => {
/> />
<q-input <q-input
for="input-job-description" :for="`${prefixId}-input-job-description`"
id="input-job-description" :id="`${prefixId}-input-job-description`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -129,7 +131,7 @@ onMounted(async () => {
/> />
<VueDatePicker <VueDatePicker
id="date-picker-start-date" :id="`${prefixId}-date-picker-start-date`"
:teleport="true" :teleport="true"
utc utc
autoApply autoApply
@ -148,8 +150,8 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
for="input-start-date" :for="`${prefixId}-input-start-date`"
id="input-start-date" :id="`${prefixId}-input-start-date`"
:label="$t('payDay')" :label="$t('payDay')"
:dense="dense" :dense="dense"
outlined outlined
@ -191,8 +193,8 @@ onMounted(async () => {
</VueDatePicker> </VueDatePicker>
<q-input <q-input
for="input-pay-rate" :for="`${prefixId}-input-pay-rate`"
id="input-pay-rate" :id="`${prefixId}-input-pay-rate`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -203,8 +205,8 @@ onMounted(async () => {
/> />
<q-input <q-input
for="input-sales-person" :for="`${prefixId}-input-sales-person`"
id="input-sales-person" :id="`${prefixId}-input-sales-person`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"

View file

@ -41,6 +41,7 @@ defineProps<{
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
typeCustomer?: string; typeCustomer?: string;
prefixId: string;
}>(); }>();
async function fetchProvince() { async function fetchProvince() {
@ -120,7 +121,7 @@ onMounted(async () => {
v-if="!readonly && employeeCheckup?.length !== 1" v-if="!readonly && employeeCheckup?.length !== 1"
round round
flat flat
id="closeDialog" :id="`${prefixId}-closeDialog`"
size="sm" size="sm"
icon="mdi-close" icon="mdi-close"
padding="xs" padding="xs"
@ -155,7 +156,7 @@ onMounted(async () => {
v-model="checkup.checkupResult" v-model="checkup.checkupResult"
/> />
<q-select <q-select
id="select-province" :id="`${prefixId}-select-province`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -172,7 +173,7 @@ onMounted(async () => {
lazy-rules lazy-rules
/> />
<q-select <q-select
id="select-province" :id="`${prefixId}-select-province`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -208,7 +209,7 @@ onMounted(async () => {
type="textarea" type="textarea"
/> />
<q-select <q-select
id="select-province" :id="`${prefixId}-select-province`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -225,7 +226,7 @@ onMounted(async () => {
lazy-rules lazy-rules
/> />
<q-select <q-select
id="select-province" :id="`${prefixId}-select-province`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -260,7 +261,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
:label="$t('formDialogInputCoverageStartDate')" :label="$t('formDialogInputCoverageStartDate')"
:dense="dense" :dense="dense"
outlined outlined

View file

@ -7,6 +7,7 @@ defineProps<{
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
employee?: boolean; employee?: boolean;
prefixId: string;
}>(); }>();
const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther'); const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
</script> </script>
@ -20,7 +21,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
<div class="col-3 q-pl-xl"></div> <div class="col-3 q-pl-xl"></div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-citizenId" :for="`${prefixId}-input-citizen-id`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -36,7 +37,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
</div> </div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-father-first-name" :for="`${prefixId}-input-father-first-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -46,7 +47,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.fatherFirstName" v-model="employeeOther.fatherFirstName"
/> />
<q-input <q-input
for="input-father-last-name" :for="`${prefixId}-input-father-last-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -56,7 +57,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.fatherLastName" v-model="employeeOther.fatherLastName"
/> />
<q-input <q-input
for="input-father-first-name-en" :for="`${prefixId}-input-father-first-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -66,7 +67,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.fatherFirstNameEN" v-model="employeeOther.fatherFirstNameEN"
/> />
<q-input <q-input
for="input-father-last-name-en" :for="`${prefixId}-input-father-last-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -76,7 +77,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.fatherLastNameEN" v-model="employeeOther.fatherLastNameEN"
/> />
<q-input <q-input
for="input-father-birthplace" :for="`${prefixId}-input-father-birthplace`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -92,7 +93,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
</div> </div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-mother-first-name" :for="`${prefixId}-input-mother-first-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -102,7 +103,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.motherFirstName" v-model="employeeOther.motherFirstName"
/> />
<q-input <q-input
for="input-mother-last-name" :for="`${prefixId}-input-mother-last-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -112,7 +113,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.motherLastName" v-model="employeeOther.motherLastName"
/> />
<q-input <q-input
for="input-mother-first-name-en" :for="`${prefixId}-input-mother-first-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -122,7 +123,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.motherFirstNameEN" v-model="employeeOther.motherFirstNameEN"
/> />
<q-input <q-input
for="input-mother-last-name-en" :for="`${prefixId}-input-mother-last-name-en`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -132,7 +133,7 @@ const employeeOther = defineModel<EmployeeOtherCreate>('employeeOther');
v-model="employeeOther.motherLastNameEN" v-model="employeeOther.motherLastNameEN"
/> />
<q-input <q-input
for="input-mother-birthplace" :for="`${prefixId}-input-mother-birthplace`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"

View file

@ -25,6 +25,7 @@ defineProps<{
outlined?: boolean; outlined?: boolean;
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
prefixId: string;
}>(); }>();
</script> </script>
@ -34,7 +35,7 @@ defineProps<{
</div> </div>
<div class="col-md-9 col-12 row q-col-gutter-md"> <div class="col-md-9 col-12 row q-col-gutter-md">
<q-select <q-select
id="select-passport-type" :id="`${prefixId}-select-passport-type`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -55,7 +56,7 @@ defineProps<{
]" ]"
/> />
<q-input <q-input
for="input-passport-no" :for="`${prefixId}-input-passport-no`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -69,7 +70,7 @@ defineProps<{
]" ]"
/> />
<q-input <q-input
for="input-passport-ref" :for="`${prefixId}-input-passport-ref`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -79,7 +80,7 @@ defineProps<{
v-model="previousPassportReference" v-model="previousPassportReference"
/> />
<q-input <q-input
for="input-passport-place" :for="`${prefixId}-input-passport-place`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -93,7 +94,7 @@ defineProps<{
]" ]"
/> />
<q-select <q-select
id="select-passport-country" :id="`${prefixId}-select-passport-country`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -114,7 +115,7 @@ defineProps<{
]" ]"
/> />
<VueDatePicker <VueDatePicker
id="date-picker-passport-issueance" :id="`${prefixId}-date-picker-passport-issueance`"
utc utc
autoApply autoApply
v-model="passportIssueDate" v-model="passportIssueDate"
@ -133,7 +134,7 @@ defineProps<{
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
:label="$t('formDialogInputPassportIssuance')" :label="$t('formDialogInputPassportIssuance')"
:dense="dense" :dense="dense"
@ -171,7 +172,7 @@ defineProps<{
</template> </template>
</VueDatePicker> </VueDatePicker>
<VueDatePicker <VueDatePicker
id="date-picker-passport-expire" :id="`${prefixId}-date-picker-passport-expire`"
utc utc
autoApply autoApply
v-model="passportExpiryDate" v-model="passportExpiryDate"
@ -190,7 +191,7 @@ defineProps<{
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
:label="$t('formDialogInputPassportExpire')" :label="$t('formDialogInputPassportExpire')"
:dense="dense" :dense="dense"

View file

@ -40,6 +40,7 @@ defineProps<{
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
typeCustomer?: string; typeCustomer?: string;
prefixId: string;
}>(); }>();
async function fetchProvince() { async function fetchProvince() {
@ -59,7 +60,7 @@ onMounted(async () => {
</div> </div>
<div class="col-md-9 col-12 row q-col-gutter-md"> <div class="col-md-9 col-12 row q-col-gutter-md">
<q-select <q-select
id="select-visa-type" :id="`${prefixId}-select-visa-type`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -80,7 +81,7 @@ onMounted(async () => {
!!val || $t('selectValidate') + $t('formDialogInputVisaType'), !!val || $t('selectValidate') + $t('formDialogInputVisaType'),
]" --> ]" -->
<q-input <q-input
for="input-visa-no" :for="`${prefixId}-input-visa-no`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -94,7 +95,7 @@ onMounted(async () => {
!!val || $t('inputValidate') + $t('formDialogInputVisaNo'), !!val || $t('inputValidate') + $t('formDialogInputVisaNo'),
]" --> ]" -->
<VueDatePicker <VueDatePicker
id="date-picker-visa-issuance" :id="`${prefixId}-date-picker-visa-issuance`"
utc utc
autoApply autoApply
v-model="visaIssueDate" v-model="visaIssueDate"
@ -113,7 +114,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
:label="$t('formDialogInputVisaIssuance')" :label="$t('formDialogInputVisaIssuance')"
:dense="dense" :dense="dense"
@ -159,7 +160,7 @@ onMounted(async () => {
</template> </template>
</VueDatePicker> </VueDatePicker>
<VueDatePicker <VueDatePicker
id="date-picker-visa-expire" :id="`${prefixId}-date-picker-visa-expire`"
utc utc
autoApply autoApply
v-model="visaExpiryDate" v-model="visaExpiryDate"
@ -178,7 +179,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
:label="$t('formDialogInputVisaExpire')" :label="$t('formDialogInputVisaExpire')"
:dense="dense" :dense="dense"
@ -224,7 +225,7 @@ onMounted(async () => {
</template> </template>
</VueDatePicker> </VueDatePicker>
<q-input <q-input
for="input-visa-place" :for="`${prefixId}-input-visa-place`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -238,7 +239,7 @@ onMounted(async () => {
!!val || $t('selectValidate') + $t('formDialogInputVisaPlace'), !!val || $t('selectValidate') + $t('formDialogInputVisaPlace'),
]" --> ]" -->
<VueDatePicker <VueDatePicker
id="date-picker-visa-until" :id="`${prefixId}-date-picker-visa-until`"
utc utc
autoApply autoApply
v-model="visaStayUntilDate" v-model="visaStayUntilDate"
@ -257,7 +258,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
hide-bottom-space hide-bottom-space
:label="$t('formDialogInputVisaStayUntil')" :label="$t('formDialogInputVisaStayUntil')"
:dense="dense" :dense="dense"
@ -304,7 +305,7 @@ onMounted(async () => {
</template> </template>
</VueDatePicker> </VueDatePicker>
<q-input <q-input
for="input-tm6" :for="`${prefixId}-input-tm6`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -318,7 +319,7 @@ onMounted(async () => {
!!val || $t('inputValidate') + $t('formDialogInputVisaTM6'), !!val || $t('inputValidate') + $t('formDialogInputVisaTM6'),
]" --> ]" -->
<VueDatePicker <VueDatePicker
id="date-picker-visa-enter" :id="`${prefixId}-date-picker-visa-enter`"
utc utc
autoApply autoApply
v-model="entryDate" v-model="entryDate"
@ -337,7 +338,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
:label="$t('formDialogInputVisaEnter')" :label="$t('formDialogInputVisaEnter')"
:dense="dense" :dense="dense"
outlined outlined

View file

@ -22,6 +22,7 @@ defineProps<{
outlined?: boolean; outlined?: boolean;
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
prefixId: string;
}>(); }>();
function addData() { function addData() {
@ -91,7 +92,7 @@ onMounted(async () => {
v-if="!readonly && employeeWork?.length !== 1" v-if="!readonly && employeeWork?.length !== 1"
round round
flat flat
id="closeDialog" :id="`${prefixId}-close-dialog`"
size="sm" size="sm"
icon="mdi-close" icon="mdi-close"
padding="xs" padding="xs"
@ -115,7 +116,7 @@ onMounted(async () => {
<div class="col-3 app-text-muted"> {{ $t(`workHistory`) }}</div> <div class="col-3 app-text-muted"> {{ $t(`workHistory`) }}</div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-input <q-input
for="input-ownerName" :for="`${prefixId}-input-owner-name`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -125,7 +126,7 @@ onMounted(async () => {
v-model="work.ownerName" v-model="work.ownerName"
/> />
<q-select <q-select
id="select-positionName" :id="`${prefixId}-select-position-name`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -142,7 +143,7 @@ onMounted(async () => {
lazy-rules lazy-rules
/> />
<q-select <q-select
id="select-jobType" :id="`${prefixId}-select-job-type`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -159,7 +160,7 @@ onMounted(async () => {
lazy-rules lazy-rules
/> />
<q-select <q-select
id="select-province" :id="`${prefixId}-select-province`"
:dense="dense" :dense="dense"
:readonly="readonly" :readonly="readonly"
outlined outlined
@ -176,7 +177,7 @@ onMounted(async () => {
lazy-rules lazy-rules
/> />
<q-input <q-input
for="input-workEndDate" :for="`${prefixId}-input-work-end-date`"
:label="$t('formDialogInputRemark')" :label="$t('formDialogInputRemark')"
:dense="dense" :dense="dense"
outlined outlined
@ -187,7 +188,7 @@ onMounted(async () => {
type="textarea" type="textarea"
/> />
<VueDatePicker <VueDatePicker
id="date-picker-workEndDate" :id="`${prefixId}-date-picker-work-end-date`"
utc utc
autoApply autoApply
v-model="work.workEndDate" v-model="work.workEndDate"
@ -206,7 +207,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
:label="$t('formDialogInputWorkUntil')" :label="$t('formDialogInputWorkUntil')"
:dense="dense" :dense="dense"
outlined outlined
@ -247,7 +248,7 @@ onMounted(async () => {
</template> </template>
</VueDatePicker> </VueDatePicker>
<q-input <q-input
for="input-workPermitNo" :for="`${prefixId}-input-work-permit-no`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"
@ -257,7 +258,7 @@ onMounted(async () => {
v-model="work.workPermitNo" v-model="work.workPermitNo"
/> />
<VueDatePicker <VueDatePicker
id="date-picker-workPermitIssuDate" :id="`${prefixId}-date-picker-work-permit-issu-date`"
utc utc
autoApply autoApply
v-model="work.workPermitIssuDate" v-model="work.workPermitIssuDate"
@ -276,7 +277,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
:label="$t('formDialogInputWorkPermitIssueDate')" :label="$t('formDialogInputWorkPermitIssueDate')"
:dense="dense" :dense="dense"
outlined outlined
@ -317,7 +318,7 @@ onMounted(async () => {
</template> </template>
</VueDatePicker> </VueDatePicker>
<VueDatePicker <VueDatePicker
id="date-picker-workPermitExpireDate" :id="`${prefixId}-date-picker-work-permit-expire-date`"
utc utc
autoApply autoApply
v-model="work.workPermitExpireDate" v-model="work.workPermitExpireDate"
@ -336,7 +337,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
id="input-birth-date" :id="`${prefixId}-input-birth-date`"
:label="$t('formDialogInputWorkPermitExpireDate')" :label="$t('formDialogInputWorkPermitExpireDate')"
:dense="dense" :dense="dense"
outlined outlined

View file

@ -6,6 +6,7 @@ defineProps<{
outlined?: boolean; outlined?: boolean;
readonly?: boolean; readonly?: boolean;
separator?: boolean; separator?: boolean;
prefixId: string;
}>(); }>();
const fileEmployerDocument = defineModel<File | null>('fileEmployerDocument'); const fileEmployerDocument = defineModel<File | null>('fileEmployerDocument');
@ -16,7 +17,7 @@ const fileEmployerDocument = defineModel<File | null>('fileEmployerDocument');
<div class="col-3 app-text-muted"> {{ $t(`otherDocument`) }}</div> <div class="col-3 app-text-muted"> {{ $t(`otherDocument`) }}</div>
<div class="col-9 row q-col-gutter-md"> <div class="col-9 row q-col-gutter-md">
<q-file <q-file
id="input-attchment" :id="`${prefixId}-input-attchment`"
:dense="dense" :dense="dense"
outlined outlined
:readonly="readonly" :readonly="readonly"

View file

@ -16,6 +16,22 @@ const { t } = useI18n();
const propertiesOption = defineModel<Option[]>('propertiesOption'); const propertiesOption = defineModel<Option[]>('propertiesOption');
const formServiceProperties = defineModel<Attributes>('formServiceProperties'); const formServiceProperties = defineModel<Attributes>('formServiceProperties');
// const abilitys = ref<Record<AdditionalType, Ability[AdditionalType]>>({
// string: { phoneNumber: { length: 10 } },
// number: { comma: true, decimal: { point: 2 } },
// date: '2024-07-25',
// array: ['item1', 'item2'],
// });
const abilitys = ref<Ability[]>([
{
string: { phoneNumber: { length: 10 } },
number: { comma: true, decimal: { point: 2 } },
date: '2024-07-25',
array: ['item1', 'item2'],
},
]);
const telMax = ref(); const telMax = ref();
const pointNum = ref(); const pointNum = ref();
@ -51,13 +67,6 @@ const typeOption = ref([
}, },
]); ]);
const abilitys = ref<Record<AdditionalType, Ability[AdditionalType]>>({
string: { phoneNumber: { length: 10 } },
number: { comma: true, decimal: { point: 2 } },
date: '2024-07-25',
array: ['item1', 'item2'],
});
function manageProperties(properties?: string, type?: string | AdditionalType) { function manageProperties(properties?: string, type?: string | AdditionalType) {
if (properties === 'all' && propertiesOption.value) { if (properties === 'all' && propertiesOption.value) {
if ( if (
@ -75,17 +84,7 @@ function manageProperties(properties?: string, type?: string | AdditionalType) {
formServiceProperties.value?.additional.push({ formServiceProperties.value?.additional.push({
fieldName: ops.value, fieldName: ops.value,
type: ops.type as AdditionalType, type: ops.type as AdditionalType,
ability: {
string:
ops.type === 'string' ? abilitys.value['string'] : undefined,
number:
ops.type === 'number' ? abilitys.value['number'] : undefined,
date: ops.type === 'date' ? abilitys.value['date'] : undefined,
array: ops.type === 'array' ? abilitys.value['array'] : undefined,
},
}); });
console.log(abilitys.value['number']);
} }
}); });
return; return;
@ -102,12 +101,6 @@ function manageProperties(properties?: string, type?: string | AdditionalType) {
formServiceProperties.value.additional.push({ formServiceProperties.value.additional.push({
fieldName: properties ?? null, fieldName: properties ?? null,
type: type as AdditionalType, type: type as AdditionalType,
ability: {
string: type === 'string' ? abilitys.value['string'] : undefined,
number: type === 'number' ? abilitys.value['number'] : undefined,
date: type === 'date' ? abilitys.value['date'] : undefined,
array: type === 'array' ? abilitys.value['array'] : undefined,
},
}); });
} }
} }
@ -149,6 +142,17 @@ function confirmDelete(items: unknown[], index: number) {
cancel: () => {}, cancel: () => {},
}); });
} }
// function addProperties() {
// formServiceProperties.value?.additional.forEach((item, i) => {
// if (!!formServiceProperties.value?.additional) {
// formServiceProperties.value.additional[i] = {
// ...item,
// ability: abilitys.value[i],
// };
// }
// });
// }
</script> </script>
<template> <template>
<div class="full-width column no-wrap"> <div class="full-width column no-wrap">

View file

@ -12,6 +12,7 @@ withDefaults(
labelStatusToggle?: string; labelStatusToggle?: string;
hideToggle?: boolean; hideToggle?: boolean;
readonly?: boolean; readonly?: boolean;
prefixId: string;
}>(), }>(),
{ {
hideToggle: true, hideToggle: true,
@ -26,10 +27,7 @@ defineEmits<{
<template> <template>
<div class="text-center"> <div class="text-center">
<div <div :style="$q.screen.lt.md ? 'height: 200px' : 'height: 12vw'">
class="upload-img-preview"
:style="$q.screen.lt.md ? 'height: 200px' : 'height: 12vw'"
>
<q-img <q-img
v-if="urlProfile" v-if="urlProfile"
:src="urlProfile" :src="urlProfile"
@ -70,7 +68,7 @@ defineEmits<{
</div> </div>
<div class="col-6"> <div class="col-6">
<q-btn <q-btn
id="btn-profile-save" :id="`${prefixId}-btn-profile-save`"
dense dense
unelevated unelevated
outlined outlined
@ -82,7 +80,7 @@ defineEmits<{
</div> </div>
</div> </div>
<q-btn <q-btn
id="btn-profile-edit" :id="`${prefixId}-btn-profile-edit`"
v-else-if="urlProfile && profileSubmit && !readonly" v-else-if="urlProfile && profileSubmit && !readonly"
dense dense
unelevated unelevated
@ -95,7 +93,7 @@ defineEmits<{
/> />
<q-btn <q-btn
id="btn-profile-upload" :id="`${prefixId}-btn-profile-upload`"
v-if="!urlProfile && !readonly" v-if="!urlProfile && !readonly"
dense dense
unelevated unelevated
@ -109,7 +107,7 @@ defineEmits<{
<q-separator class="col-12 q-my-lg" /> <q-separator class="col-12 q-my-lg" />
<div class="text-left q-pb-md" v-if="hideToggle"> <div class="text-left q-pb-md" v-if="hideToggle">
<q-toggle <q-toggle
id="toggle-status" :id="`${prefixId}-toggle-status`"
dense dense
size="md" size="md"
v-model="statusToggle" v-model="statusToggle"

View file

@ -5,6 +5,7 @@ import { CustomerBranchCreate } from 'stores/customer/types';
defineProps<{ defineProps<{
readonly?: boolean; readonly?: boolean;
edit?: boolean; edit?: boolean;
prefixId: string;
}>(); }>();
const customerBranch = defineModel<CustomerBranchCreate[]>('customerBranch', { const customerBranch = defineModel<CustomerBranchCreate[]>('customerBranch', {
@ -69,7 +70,7 @@ function close(index: number) {
<template> <template>
<div class="row no-wrap"> <div class="row no-wrap">
<q-btn <q-btn
id="btn-add" :id="`${prefixId}-btn-add`"
class="q-px-lg bordered-b bordered-r app-text-muted" class="q-px-lg bordered-b bordered-r app-text-muted"
flat flat
:color="$q.dark.isActive ? 'primary' : ''" :color="$q.dark.isActive ? 'primary' : ''"
@ -90,7 +91,7 @@ function close(index: number) {
style="background-color: var(--_body-bg); max-width: 55vw" style="background-color: var(--_body-bg); max-width: 55vw"
> >
<q-tab <q-tab
:id="`tab-branch-${index}`" :id="`${prefixId}-tab-branch-${index}`"
v-for="(v, index) in customerBranch" v-for="(v, index) in customerBranch"
:key="index" :key="index"
:name="index" :name="index"
@ -103,7 +104,7 @@ function close(index: number) {
<q-btn <q-btn
round round
flat flat
:id="`close-tab-${index}`" :id="`${prefixId}-close-tab-${index}`"
icon="mdi-close" icon="mdi-close"
padding="xs" padding="xs"
color="red" color="red"
@ -117,7 +118,7 @@ function close(index: number) {
<div class="column seprarator-fix"> <div class="column seprarator-fix">
<q-tab-panels v-model="tab" class="rounded-borders"> <q-tab-panels v-model="tab" class="rounded-borders">
<q-tab-panel <q-tab-panel
:id="`tab-branch-${index}`" :id="`${prefixId}-tab-branch-${index}`"
v-for="(v, index) in customerBranch.sort( v-for="(v, index) in customerBranch.sort(
(a, b) => (a.branchNo ?? 0) - (b.branchNo ?? 0), (a, b) => (a.branchNo ?? 0) - (b.branchNo ?? 0),
)" )"

View file

@ -2952,6 +2952,7 @@ watch(isMainPage, () => {
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog"
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"
v-model:status-toggle="statusToggle" v-model:status-toggle="statusToggle"
v-model:profile-submit="profileSubmit" v-model:profile-submit="profileSubmit"
@ -2965,6 +2966,7 @@ watch(isMainPage, () => {
dense dense
outlined outlined
separator separator
prefix-id="form-dialog"
:type-customer="customerType" :type-customer="customerType"
:options-branch="branchOption" :options-branch="branchOption"
v-model:registered-branch-id="formData.registeredBranchId" v-model:registered-branch-id="formData.registeredBranchId"
@ -2984,11 +2986,13 @@ watch(isMainPage, () => {
<div class="col-12 row bordered q-pt-none rounded"> <div class="col-12 row bordered q-pt-none rounded">
<TabComponent <TabComponent
prefix-id="form-dialog"
v-model:customer-branch="formData.customerBranch" v-model:customer-branch="formData.customerBranch"
v-model:tab-index="indexTab" v-model:tab-index="indexTab"
> >
<template #address> <template #address>
<FormAddress <FormAddress
prefix-id="form-dialog"
:id="indexTab" :id="indexTab"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
@ -3010,6 +3014,7 @@ watch(isMainPage, () => {
<template #businessInformation> <template #businessInformation>
<FormBusiness <FormBusiness
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3046,6 +3051,7 @@ watch(isMainPage, () => {
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
prefix-id="form-dialog"
:type-customer="customerType" :type-customer="customerType"
v-model:branch-no="formData.customerBranch[indexTab].branchNo" v-model:branch-no="formData.customerBranch[indexTab].branchNo"
v-model:tax-no="formData.customerBranch[indexTab].taxNo" v-model:tax-no="formData.customerBranch[indexTab].taxNo"
@ -3069,6 +3075,7 @@ watch(isMainPage, () => {
</template> </template>
<template #contactInformation> <template #contactInformation>
<ContactComponent <ContactComponent
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3081,6 +3088,7 @@ watch(isMainPage, () => {
</template> </template>
<template #otherDocuments> <template #otherDocuments>
<OtherInformation <OtherInformation
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3129,6 +3137,7 @@ watch(isMainPage, () => {
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog"
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"
v-model:status-toggle="statusToggle" v-model:status-toggle="statusToggle"
v-model:profile-submit="profileSubmit" v-model:profile-submit="profileSubmit"
@ -3139,6 +3148,7 @@ watch(isMainPage, () => {
<template #information> <template #information>
<BasicInformation <BasicInformation
prefix-id="form-dialog"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
employee employee
dense dense
@ -3155,6 +3165,7 @@ watch(isMainPage, () => {
<template #person> <template #person>
<FormPerson <FormPerson
prefix-id="form-dialog"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined
@ -3171,6 +3182,7 @@ watch(isMainPage, () => {
/> />
<FormEmployeeHealthCheck <FormEmployeeHealthCheck
prefix-id="form-dialog"
v-if=" v-if="
formDataEmployeeTab === 'healthCheck' && formDataEmployeeTab === 'healthCheck' &&
formDataEmployee.employeeCheckup formDataEmployee.employeeCheckup
@ -3185,6 +3197,7 @@ watch(isMainPage, () => {
" "
/> />
<FormEmployeeWorkHistory <FormEmployeeWorkHistory
prefix-id="form-dialog"
v-if="formDataEmployeeTab === 'workHistory'" v-if="formDataEmployeeTab === 'workHistory'"
dense dense
outlined outlined
@ -3194,6 +3207,7 @@ watch(isMainPage, () => {
v-model:workplace-option="optionStore.globalOption.area" v-model:workplace-option="optionStore.globalOption.area"
/> />
<FormEmployeeOther <FormEmployeeOther
prefix-id="form-dialog"
v-if=" v-if="
formDataEmployeeTab === 'other' && formDataEmployee.employeeOtherInfo formDataEmployeeTab === 'other' && formDataEmployee.employeeOtherInfo
" "
@ -3204,6 +3218,7 @@ watch(isMainPage, () => {
</template> </template>
<template #by-type> <template #by-type>
<FormEmployeePassport <FormEmployeePassport
prefix-id="form-dialog"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined
@ -3225,6 +3240,7 @@ watch(isMainPage, () => {
" "
/> />
<FormEmployeeVisa <FormEmployeeVisa
prefix-id="form-dialog"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined
@ -3260,11 +3276,13 @@ watch(isMainPage, () => {
<div class="col-12 row bordered q-pt-none rounded"> <div class="col-12 row bordered q-pt-none rounded">
<TabComponent <TabComponent
prefix-id="form-dialog-branch"
v-model:customer-branch="formData.customerBranch" v-model:customer-branch="formData.customerBranch"
v-model:tab-index="indexTab" v-model:tab-index="indexTab"
> >
<template #address> <template #address>
<FormAddress <FormAddress
prefix-id="form-dialog-branch"
:id="indexTab" :id="indexTab"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
@ -3285,6 +3303,7 @@ watch(isMainPage, () => {
<template #businessInformation> <template #businessInformation>
<FormBusiness <FormBusiness
prefix-id="form-dialog-branch"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3318,6 +3337,7 @@ watch(isMainPage, () => {
</template> </template>
<template #about> <template #about>
<AboutComponent <AboutComponent
prefix-id="form-dialog-branch"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3343,6 +3363,7 @@ watch(isMainPage, () => {
</template> </template>
<template #contactInformation> <template #contactInformation>
<ContactComponent <ContactComponent
prefix-id="form-dialog-branch"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3355,6 +3376,7 @@ watch(isMainPage, () => {
</template> </template>
<template #otherDocuments> <template #otherDocuments>
<OtherInformation <OtherInformation
prefix-id="form-dialog-branch"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3391,11 +3413,13 @@ watch(isMainPage, () => {
<div class="col-12 row bordered q-pt-none rounded"> <div class="col-12 row bordered q-pt-none rounded">
<TabComponent <TabComponent
prefix-id="form-dialog"
v-model:customer-branch="formData.customerBranch" v-model:customer-branch="formData.customerBranch"
v-model:tab-index="indexTab" v-model:tab-index="indexTab"
> >
<template #address> <template #address>
<FormAddress <FormAddress
prefix-id="form-dialog"
:id="indexTab" :id="indexTab"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
@ -3416,6 +3440,7 @@ watch(isMainPage, () => {
<template #businessInformation> <template #businessInformation>
<FormBusiness <FormBusiness
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3449,6 +3474,7 @@ watch(isMainPage, () => {
</template> </template>
<template #about> <template #about>
<AboutComponent <AboutComponent
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3478,6 +3504,7 @@ watch(isMainPage, () => {
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
prefix-id="form-dialog"
v-model:mail="formData.customerBranch[indexTab].email" v-model:mail="formData.customerBranch[indexTab].email"
v-model:telephone="formData.customerBranch[indexTab].telephoneNo" v-model:telephone="formData.customerBranch[indexTab].telephoneNo"
dense dense
@ -3487,6 +3514,7 @@ watch(isMainPage, () => {
</template> </template>
<template #otherDocuments> <template #otherDocuments>
<OtherInformation <OtherInformation
prefix-id="form-dialog"
v-if=" v-if="
indexTab !== undefined && formData.customerBranch?.[indexTab] indexTab !== undefined && formData.customerBranch?.[indexTab]
" "
@ -3559,6 +3587,7 @@ watch(isMainPage, () => {
</template> </template>
<template #information> <template #information>
<BasicInformation <BasicInformation
prefix-id="drawer-info-customer"
dense dense
outlined outlined
separator separator
@ -3580,12 +3609,14 @@ watch(isMainPage, () => {
<div class="col-12 row bordered q-pt-none rounded"> <div class="col-12 row bordered q-pt-none rounded">
<TabComponent <TabComponent
prefix-id="drawer-info-customer"
:readonly="!infoDrawerEdit" :readonly="!infoDrawerEdit"
v-model:customer-branch="formData.customerBranch" v-model:customer-branch="formData.customerBranch"
v-model:tab-index="indexTab" v-model:tab-index="indexTab"
> >
<template #address> <template #address>
<FormAddress <FormAddress
prefix-id="drawer-info-customer"
:id="indexTab" :id="indexTab"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
@ -3614,6 +3645,7 @@ watch(isMainPage, () => {
<template #businessInformation> <template #businessInformation>
<FormBusiness <FormBusiness
prefix-id="drawer-info-customer"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3649,6 +3681,7 @@ watch(isMainPage, () => {
</template> </template>
<template #about> <template #about>
<AboutComponent <AboutComponent
prefix-id="drawer-info-customer"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3681,6 +3714,7 @@ watch(isMainPage, () => {
</template> </template>
<template #contactInformation> <template #contactInformation>
<ContactComponent <ContactComponent
prefix-id="drawer-info-customer"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3697,6 +3731,7 @@ watch(isMainPage, () => {
</template> </template>
<template #otherDocuments> <template #otherDocuments>
<OtherInformation <OtherInformation
prefix-id="drawer-info-customer"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3782,6 +3817,7 @@ watch(isMainPage, () => {
</template> </template>
<template #information> <template #information>
<BasicInformation <BasicInformation
prefix-id="drawer-info-customer-branch"
dense dense
outlined outlined
separator separator
@ -3803,6 +3839,7 @@ watch(isMainPage, () => {
<div class="col-12 row bordered q-pt-none rounded"> <div class="col-12 row bordered q-pt-none rounded">
<TabComponent <TabComponent
prefix-id="drawer-info-customer-branch"
:edit="true" :edit="true"
:readonly="true" :readonly="true"
v-model:customer-branch="formData.customerBranch" v-model:customer-branch="formData.customerBranch"
@ -3810,6 +3847,7 @@ watch(isMainPage, () => {
> >
<template #address> <template #address>
<FormAddress <FormAddress
prefix-id="drawer-info-customer-branch"
:id="indexTab" :id="indexTab"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
@ -3838,6 +3876,7 @@ watch(isMainPage, () => {
<template #businessInformation> <template #businessInformation>
<FormBusiness <FormBusiness
prefix-id="drawer-info-customer-branch"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3873,6 +3912,7 @@ watch(isMainPage, () => {
</template> </template>
<template #about> <template #about>
<AboutComponent <AboutComponent
prefix-id="drawer-info-customer-branch"
v-if="formData.customerBranch?.[0]" v-if="formData.customerBranch?.[0]"
:type-customer="customerType" :type-customer="customerType"
v-model:branch-code="formData.customerBranch[indexTab].code" v-model:branch-code="formData.customerBranch[indexTab].code"
@ -3898,6 +3938,7 @@ watch(isMainPage, () => {
</template> </template>
<template #contactInformation> <template #contactInformation>
<ContactComponent <ContactComponent
prefix-id="drawer-info-customer-branch"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -3914,6 +3955,7 @@ watch(isMainPage, () => {
</template> </template>
<template #otherDocuments> <template #otherDocuments>
<OtherInformation <OtherInformation
prefix-id="drawer-info-customer-branch"
v-if=" v-if="
indexTab !== undefined && indexTab !== undefined &&
formData.customerBranch?.[indexTab] formData.customerBranch?.[indexTab]
@ -4005,6 +4047,7 @@ watch(isMainPage, () => {
</template> </template>
<template #information> <template #information>
<BasicInformation <BasicInformation
prefix-id="drawer-info-employee"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
employee employee
dense dense
@ -4022,6 +4065,7 @@ watch(isMainPage, () => {
<template #person> <template #person>
<FormPerson <FormPerson
prefix-id="drawer-info-employee"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined
@ -4039,6 +4083,7 @@ watch(isMainPage, () => {
/> />
<FormEmployeeHealthCheck <FormEmployeeHealthCheck
prefix-id="drawer-info-employee"
v-if=" v-if="
formDataEmployeeTab === 'healthCheck' && formDataEmployeeTab === 'healthCheck' &&
formDataEmployee.employeeCheckup formDataEmployee.employeeCheckup
@ -4056,6 +4101,7 @@ watch(isMainPage, () => {
" "
/> />
<FormEmployeeWorkHistory <FormEmployeeWorkHistory
prefix-id="drawer-info-employee"
v-if="formDataEmployeeTab === 'workHistory'" v-if="formDataEmployeeTab === 'workHistory'"
dense dense
outlined outlined
@ -4066,6 +4112,7 @@ watch(isMainPage, () => {
v-model:workplace-option="optionStore.globalOption.area" v-model:workplace-option="optionStore.globalOption.area"
/> />
<FormEmployeeOther <FormEmployeeOther
prefix-id="drawer-info-employee"
v-if=" v-if="
formDataEmployeeTab === 'other' && formDataEmployeeTab === 'other' &&
formDataEmployee.employeeOtherInfo formDataEmployee.employeeOtherInfo
@ -4078,6 +4125,7 @@ watch(isMainPage, () => {
</template> </template>
<template #by-type> <template #by-type>
<FormEmployeePassport <FormEmployeePassport
prefix-id="drawer-info-employee"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined
@ -4100,6 +4148,7 @@ watch(isMainPage, () => {
" "
/> />
<FormEmployeeVisa <FormEmployeeVisa
prefix-id="drawer-info-employee"
v-if="formDataEmployeeTab === 'personalInfo'" v-if="formDataEmployeeTab === 'personalInfo'"
dense dense
outlined outlined

View file

@ -3412,6 +3412,7 @@ watch(
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog-product"
isProduct isProduct
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"
v-model:status-toggle="statusToggle" v-model:status-toggle="statusToggle"
@ -3478,6 +3479,7 @@ watch(
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog-product"
isProduct isProduct
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"
v-model:status-toggle="statusToggle" v-model:status-toggle="statusToggle"
@ -3537,6 +3539,7 @@ watch(
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog-service"
isService isService
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"
v-model:status-toggle="statusToggle" v-model:status-toggle="statusToggle"
@ -3623,8 +3626,6 @@ watch(
workItems[currentWorkIndex].attributes = tempValueProperties; workItems[currentWorkIndex].attributes = tempValueProperties;
} }
console.log('dasdasd');
propertiesDialog = false; propertiesDialog = false;
} }
" "
@ -3700,6 +3701,7 @@ watch(
> >
<template #prepend> <template #prepend>
<ProfileUpload <ProfileUpload
prefix-id="form-dialog-service"
isService isService
:readonly="!infoServiceEdit" :readonly="!infoServiceEdit"
v-model:url-profile="profileUrl" v-model:url-profile="profileUrl"