feat: upload file employee
This commit is contained in:
parent
511ff04bda
commit
46afed06e8
1 changed files with 130 additions and 47 deletions
|
|
@ -2051,6 +2051,11 @@ const emptyCreateDialog = ref(false);
|
||||||
anchor: 'form-visa',
|
anchor: 'form-visa',
|
||||||
tab: 'personalInfo',
|
tab: 'personalInfo',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: $t('general.uploadFile'),
|
||||||
|
anchor: 'drawer-info-file-upload',
|
||||||
|
tab: 'personalInfo',
|
||||||
|
},
|
||||||
...(currentFromDataEmployee.employeeCheckup?.map((v, i) => ({
|
...(currentFromDataEmployee.employeeCheckup?.map((v, i) => ({
|
||||||
name: $t('general.times', { number: i + 1 }),
|
name: $t('general.times', { number: i + 1 }),
|
||||||
anchor: `form-employee-checkup-${i}`,
|
anchor: `form-employee-checkup-${i}`,
|
||||||
|
|
@ -2162,6 +2167,7 @@ const emptyCreateDialog = ref(false);
|
||||||
employee
|
employee
|
||||||
separator
|
separator
|
||||||
title="customerEmployee.form.group.personalInfo"
|
title="customerEmployee.form.group.personalInfo"
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
v-model:open="employeeFormState.dialogModal"
|
v-model:open="employeeFormState.dialogModal"
|
||||||
v-model:prefixName="currentFromDataEmployee.namePrefix"
|
v-model:prefixName="currentFromDataEmployee.namePrefix"
|
||||||
v-model:firstName="currentFromDataEmployee.firstName"
|
v-model:firstName="currentFromDataEmployee.firstName"
|
||||||
|
|
@ -2178,6 +2184,7 @@ const emptyCreateDialog = ref(false);
|
||||||
<AddressForm
|
<AddressForm
|
||||||
id="form-personal-address"
|
id="form-personal-address"
|
||||||
prefix-id="form-employee"
|
prefix-id="form-employee"
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
v-model:same-with-employer="
|
v-model:same-with-employer="
|
||||||
employeeFormState.formDataEmployeeSameAddr
|
employeeFormState.formDataEmployeeSameAddr
|
||||||
"
|
"
|
||||||
|
|
@ -2199,6 +2206,7 @@ const emptyCreateDialog = ref(false);
|
||||||
outlined
|
outlined
|
||||||
separator
|
separator
|
||||||
:title="$t('customerEmployee.form.group.passport')"
|
:title="$t('customerEmployee.form.group.passport')"
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
v-model:passport-type="currentFromDataEmployee.passportType"
|
v-model:passport-type="currentFromDataEmployee.passportType"
|
||||||
v-model:passport-number="currentFromDataEmployee.passportNumber"
|
v-model:passport-number="currentFromDataEmployee.passportNumber"
|
||||||
v-model:passport-issue-date="
|
v-model:passport-issue-date="
|
||||||
|
|
@ -2225,6 +2233,7 @@ const emptyCreateDialog = ref(false);
|
||||||
dense
|
dense
|
||||||
outlined
|
outlined
|
||||||
title="customerEmployee.form.group.visa"
|
title="customerEmployee.form.group.visa"
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
v-model:visa-type="currentFromDataEmployee.visaType"
|
v-model:visa-type="currentFromDataEmployee.visaType"
|
||||||
v-model:visa-number="currentFromDataEmployee.visaNumber"
|
v-model:visa-number="currentFromDataEmployee.visaNumber"
|
||||||
v-model:visa-issue-date="currentFromDataEmployee.visaIssueDate"
|
v-model:visa-issue-date="currentFromDataEmployee.visaIssueDate"
|
||||||
|
|
@ -2239,6 +2248,66 @@ const emptyCreateDialog = ref(false);
|
||||||
v-model:entry-date="currentFromDataEmployee.entryDate"
|
v-model:entry-date="currentFromDataEmployee.entryDate"
|
||||||
class="q-mb-xl"
|
class="q-mb-xl"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<div class="row" id="drawer-info-file-upload">
|
||||||
|
<div class="col-12 q-pb-sm text-weight-bold text-body1">
|
||||||
|
<q-icon
|
||||||
|
flat
|
||||||
|
size="xs"
|
||||||
|
class="q-pa-sm rounded q-mr-xs"
|
||||||
|
color="info"
|
||||||
|
name="mdi-upload"
|
||||||
|
style="background-color: var(--surface-3)"
|
||||||
|
/>
|
||||||
|
{{ $t(`general.uploadFile`) }}
|
||||||
|
</div>
|
||||||
|
<UploadFile
|
||||||
|
:tree-file="
|
||||||
|
Object.values(
|
||||||
|
currentFromDataEmployee.file?.reduce<
|
||||||
|
Record<
|
||||||
|
string,
|
||||||
|
{ label: string; file: { label: string }[] }
|
||||||
|
>
|
||||||
|
>((a, c) => {
|
||||||
|
const _group = c.group || 'other';
|
||||||
|
if (!a[_group]) {
|
||||||
|
a[_group] = {
|
||||||
|
label: $t(
|
||||||
|
uploadFileListEmployee.find(
|
||||||
|
(v) => v.value === _group,
|
||||||
|
)?.label || _group,
|
||||||
|
),
|
||||||
|
file: [
|
||||||
|
{
|
||||||
|
label:
|
||||||
|
c.name ||
|
||||||
|
`${c.group}-${c.file?.name || Date.now()}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
a[_group].file.push({
|
||||||
|
label:
|
||||||
|
c.name ||
|
||||||
|
`${c.group}-${c.file?.name || Date.now()}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}, {}) || {},
|
||||||
|
)
|
||||||
|
"
|
||||||
|
v-model:file="currentFromDataEmployee.file"
|
||||||
|
hide-action
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
|
:dropdown-list="uploadFileListEmployee"
|
||||||
|
@send-ocr="
|
||||||
|
async (_, file) => {
|
||||||
|
if (file) await ocrStore.sendOcr({ file });
|
||||||
|
}
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="employeeFormState.currentTab === 'healthCheck'">
|
<template v-if="employeeFormState.currentTab === 'healthCheck'">
|
||||||
|
|
@ -2340,6 +2409,7 @@ const emptyCreateDialog = ref(false);
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
|
a
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="employeeFormState.currentTab === 'other'">
|
<template v-if="employeeFormState.currentTab === 'other'">
|
||||||
|
|
@ -2915,7 +2985,7 @@ const emptyCreateDialog = ref(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: $t('อัปโหลดไฟล์'),
|
name: $t('general.uploadFile'),
|
||||||
anchor: 'drawer-upload-file',
|
anchor: 'drawer-upload-file',
|
||||||
tab: 'personalInfo',
|
tab: 'personalInfo',
|
||||||
},
|
},
|
||||||
|
|
@ -3108,52 +3178,65 @@ const emptyCreateDialog = ref(false);
|
||||||
class="q-mb-xl"
|
class="q-mb-xl"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<UploadFile
|
<div class="row" id="drawer-upload-file">
|
||||||
:tree-file="
|
<div class="col-12 q-pb-sm text-weight-bold text-body1">
|
||||||
Object.values(
|
<q-icon
|
||||||
currentFromDataEmployee.file?.reduce<
|
flat
|
||||||
Record<
|
size="xs"
|
||||||
string,
|
class="q-pa-sm rounded q-mr-xs"
|
||||||
{ label: string; file: { label: string }[] }
|
color="info"
|
||||||
>
|
name="mdi-upload"
|
||||||
>((a, c) => {
|
style="background-color: var(--surface-3)"
|
||||||
const _group = c.group || 'other';
|
/>
|
||||||
if (!a[_group]) {
|
{{ $t(`general.uploadFile`) }}
|
||||||
a[_group] = {
|
</div>
|
||||||
label: $t(
|
<UploadFile
|
||||||
uploadFileListEmployee.find(
|
:tree-file="
|
||||||
(v) => v.value === _group,
|
Object.values(
|
||||||
)?.label || _group,
|
currentFromDataEmployee.file?.reduce<
|
||||||
),
|
Record<
|
||||||
file: [
|
string,
|
||||||
{
|
{ label: string; file: { label: string }[] }
|
||||||
label:
|
>
|
||||||
c.name ||
|
>((a, c) => {
|
||||||
`${c.group}-${c.file?.name || Date.now()}`,
|
const _group = c.group || 'other';
|
||||||
},
|
if (!a[_group]) {
|
||||||
],
|
a[_group] = {
|
||||||
};
|
label: $t(
|
||||||
} else {
|
uploadFileListEmployee.find(
|
||||||
a[_group].file.push({
|
(v) => v.value === _group,
|
||||||
label:
|
)?.label || _group,
|
||||||
c.name ||
|
),
|
||||||
`${c.group}-${c.file?.name || Date.now()}`,
|
file: [
|
||||||
});
|
{
|
||||||
}
|
label:
|
||||||
return a;
|
c.name ||
|
||||||
}, {}) || {},
|
`${c.group}-${c.file?.name || Date.now()}`,
|
||||||
)
|
},
|
||||||
"
|
],
|
||||||
v-model:file="currentFromDataEmployee.file"
|
};
|
||||||
hide-action
|
} else {
|
||||||
:readonly="!employeeFormState.isEmployeeEdit"
|
a[_group].file.push({
|
||||||
:dropdown-list="uploadFileListEmployee"
|
label:
|
||||||
@send-ocr="
|
c.name ||
|
||||||
async (_, file) => {
|
`${c.group}-${c.file?.name || Date.now()}`,
|
||||||
if (file) await ocrStore.sendOcr({ file });
|
});
|
||||||
}
|
}
|
||||||
"
|
return a;
|
||||||
/>
|
}, {}) || {},
|
||||||
|
)
|
||||||
|
"
|
||||||
|
v-model:file="currentFromDataEmployee.file"
|
||||||
|
hide-action
|
||||||
|
:readonly="!employeeFormState.isEmployeeEdit"
|
||||||
|
:dropdown-list="uploadFileListEmployee"
|
||||||
|
@send-ocr="
|
||||||
|
async (_, file) => {
|
||||||
|
if (file) await ocrStore.sendOcr({ file });
|
||||||
|
}
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="employeeFormState.currentTab === 'healthCheck'">
|
<template v-if="employeeFormState.currentTab === 'healthCheck'">
|
||||||
<FormEmployeeHealthCheck
|
<FormEmployeeHealthCheck
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue